李宏毅老师covid答案完整解读(李宏毅深度学习笔记——呕心整理版)
李宏毅深度学习笔记——呕心整理版
闲谈叨叨叨:
之前看过吴恩达的一部分课程 ,所以有一定理论基础 ,再看李宏毅的课程会有新的理解 。我先以有基础的情况写完学习过程 ,后续再以零基础的角度补充细节概念(估计不会啦 ,因为懒~) 。长篇预警!可以慢慢看。多数只是自己的笔记 ,不会太有语言的概念解释 ,建议自己看一遍视频(往后字可能会越来越多 ,听我慢慢叨咕吧) 。笔记只是提供回忆 、巩固理解的工具 。若有问题 ,欢迎评论讨论 ,有时间我会改正哒!
经过我多年学习经验(没有啦~),预习真的很重要 ,其实更多是重复记忆 ,加深理解 。我的建议是先看吴恩达的课程了解机器学习和深度学习的基本知识框架和概念,还有理论推导 ,理解就可以 ,这就相当于预习;然后看李宏毅的课程,换个思路 ,以实际应用加深理解 ,就会感觉吴恩达的课程缘由不太清楚的自然而然就通了;看李宏毅的课程同时 ,看刘二大人的pytorch课程 ,动手操作 ,学会后完成李宏毅的作业;pytorch需要线性代数和概率论(这些课上要好好学 ,忘了的可以速学一下考研课程)以及python基础 ,我会整理一些推荐课程和学习路线 。
关于李宏毅课程的视频顺序 ,我大多是先看2021年 ,用2022年视频作为补充,快速过一遍 ,选修部分也看 。视频链接还有一位大佬整理的资源我会附在正文的引入部分 。
目录附上:
正片开始:
1 引入
视频资料整理:李宏毅2021&2022机器学习 视频:2022-机器学习相关规定1.1 机器学习&深度学习
机器学习就是寻找一个复杂函数 。
深度学习的函数就是类神经网络 。
函数的输入可以是向量 、矩阵 、序列等等; 函数的输出可以是数值(称为regression 回归) 、类别(classification 分类) 、文本 、图片等等回归 regression:
分类 classification:
structured learning:
1.2 课程规划
——————————先更新到前5章——————————
Lecture1-5: Supervised Learning 监督学习
训练数据要有标注 ,数据集要知道输出值
缺点:耗费人工
Lecture 7: Self-supervised Learning
无标注资料——Pre-train
Lecture 6: Generative Adversarial Network(GAN)
Lecture 12: Reinforcement Learning(RL)强化学习
不知道怎么标注
Lecture 8: Anomaly detection 异常检测
Lecture 9: Explainable AI 可解释性AI
Lecture 10: Model attack 模型攻击
Lecture 11: Domain adaptation 域适应
Lecture 13: Network Compression
Lecture 14: life-long learning
Lecture 15: Meta learning
1.3 机器学习例子
传送门: (上)机器学习基本概念简介 (下)机器学习基本概念简介根据过往观看次数预测明天的观看次数
1.3.1 训练过程(training)含有未知参数的函数
定义损失函数
标签 label:已知的对应结果
求出
e
1
e_1
e1到e
N
e_N
eNL
o
s
s
:
L
=
1
N
∑
n
e
n
Loss: L=\frac{1}{N}\sum _ne_n
Loss:L=N1n∑en补充:
loss函数可自己定义,以下常见三类:MAE 、MSE 、交叉熵
误差曲面(error surface):
优化
w
∗
,
b
∗
=
a
r
g
min
w
,
b
L
w^*, b^* = arg \min_{w,b}L
w∗,b∗=argw,bminLa
r
g
m
i
n
argmin
argmin:使后面的公式最小的参数梯度下降 gradient descent
假设只有
w
w
w一个参数带上
b
b
b嘞超参数(hyper parameter):机器学习中 ,需要自己设定的参数
学习率
全局最小值与局部最小值的问题 。后续补充 ,在2.1部分(手动跳转吧~ 无法页面内部跳转,气死我啦ヽ(*。>Д<)o゜)
这个问题并不是最主要的 ,最常见的 。其实是学习率!
找到使loss最小的
w
,
b
w,b
w,b的值 1.3.2 改进(很牛逼 ,建议有基础后回看)线性模型太过简单 。
model bias:线性模型具有很大的限制
怎么避免model bias?需要更复杂的含有未知参数的函数。
线性函数都可以用一段一段的函数组成 ,即可用常数+若干个蓝色函数表示 。
那怎么表示蓝色函数呢?
sigmoid function(S函数): KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ y &= c\frac{1}…
调整sigmoid函数的
c
,
b
,
w
c, b, w
c,b,w制作各式各样的蓝色函数所以…
y
=
b
+
∑
i
c
i
s
i
g
m
o
i
d
(
b
i
+
w
i
x
1
)
y=b+\sum_i{c_i\ sigmoid(b_i+w_ix_1)}
y=b+i∑cisigmoid(bi+wix1)延伸一下(前方高能!!!):
若
y
=
b
+
∑
j
w
j
x
j
y=b+\sum_j{w_jx_j}
y=b+∑jwjxj ,则y
=
b
+
∑
i
c
i
s
i
g
m
o
i
d
(
b
i
+
∑
j
w
i
j
x
j
)
y=b+\sum_i{c_i\ sigmoid(b_i+\sum_j{w_{ij}x_j})}
y=b+∑icisigmoid(bi+∑jwijxj)绝了哇!!!这不就是神经网络的隐藏层计算嘛!!!
用矩阵表示一下
然后对每个
r
r
r计算sigmoid
α
=
σ
(
r
)
\alpha=\sigma(r)
α=σ(r)最后求y
y
=
b
+
c
T
α
y=b+c^T\alpha
y=b+cTα整理一下
y
=
b
+
c
T
σ
(
b
+
W
x
)
y = b+c^T\sigma(b+Wx)
y=b+cTσ(b+Wx)其中
x
x
x是特征向量(feature) ,W
,
b
,
c
T
,
b
W,b,c^T,b
W,b,cT,b(注意两个b不是一个意思哦~)是未知参数 ,将未知参数列成一列 ,统称为θ
\theta
θ.完美 ,更新了训练过程的第一步!!!
接下来 ,就是计算loss咯,没有什么变化 ,只是参数用
θ
\theta
θ表示 ,因为参数太多啦 。所以loss函数为L
(
θ
)
L(\theta)
L(θ).最后是优化,
梯度 gradient。一般不会有梯度为零的情况 。
可能数据很多 ,不方便训练 ,可以将数据分为几个batch(后续补充,为什么这样做 ,在2.2部分) ,用一个batch计算损失值 ,然后**更新(update)**参数 ,再选下一个batch ,继续更新 ,直到最后一个batch 。
把所有的batch看过一遍 ,称为一个epoch 。
1.3.3 激活函数ReLU (Rectified Linear Unit)
y
=
c
m
a
x
(
,
b
+
w
x
1
)
y=c\ max(0,b+wx_1)
y=cmax(0,b+wx1)Hard Sigmoid就可以用ReLU组合表示
y
=
b
+
∑
2
i
c
i
m
a
x
(
,
b
i
+
∑
j
w
i
j
x
j
)
y=b+\sum_{2i}{c_i\ max(0,b_i+\sum_j{w_{ij}x_j)}}
y=b+2i∑cimax(0,bi+j∑wijxj) ReLU 、Sigmoid就称为激活函数(activation function)还有很多激活函数 ,后续补充…
对于激活函数还有一种解释:
如果都是线性关系 ,无论有多少层,最后都会化简成一个线性关系式 ,那前面的那么多层有什么用嘞 ,所以用激活函数将线性关系转化为非线性关系,让每一层都可以起到提取特征的作用
其实本质上都是让函数更加复杂 。
1.3.4 神经网络Neural Network可以再经历一**层(layer)**计算 ,层数自己设定 ,为超参数 。
Neuron 神经元
Neural network 神经网络
换个高大上的名字
hidden layer 隐藏层
deep learning 深度学习
之后网络越来越深,贼多层 。
但是为什么要更深 ,而不是更宽呢 ,后续补充 。
越深就越好吗?不是 ,会出现过拟合(Overfitting) ,简单来说就是 ,练习题都会做 ,全对 ,一到考试就不会 ,错的离谱 。
1.4 深度学习简介
传送门:深度学习简介全连接前向传播神经网络 Fully connect feedforward network
层数和神经元数的确定 ,嗯~,靠直觉(经验啦) 。当然这个结构也是可以靠自动学习出来的(e.g. evolutionary artificial neural network)
1.4.1 反向传播(back propagation) 传送门:反向传播快速计算梯度的方法而已
链式法则会吧?不会百度一下喽。
接下来是反向传播求loss值对每个参数的偏导的过程:
局部放大
想求C对w的偏导 ,是不是可以用链式法则展开一下
∂
C
∂
w
=
∂
z
∂
w
∂
C
∂
z
\frac{\partial C}{\partial w}=\frac{\partial z}{\partial w}\frac{\partial C}{\partial z}
∂w∂C=∂w∂z∂z∂C 那就分步求呗 ,先求前面的∂
z
∂
w
\frac{\partial z}{\partial w}
∂w∂z,用forward pass;再求后面的∂
C
∂
z
\frac{\partial C}{\partial z}
∂z∂C ,用backward pass 。Forward pass过程
Backward pass过程
不要忘记中间z到a经历了sigmoid激励函数哦~
∂
a
∂
z
=
σ
′
(
z
)
\frac{\partial a}{\partial z}=\sigma(z)
∂z∂a=σ′(z) 函数图像是这个样子:好 ,回到求偏导 。那
∂
C
∂
z
′
\frac{\partial C}{\partial z}
∂z′∂C和∂
C
∂
z
′
′
\frac{\partial C}{\partial z}
∂z′′∂C怎么求呢?我们假设已经通过某种方法求出来了那
∂
C
∂
z
′
\frac{\partial C}{\partial z}
∂z′∂C和∂
C
∂
z
′
′
\frac{\partial C}{\partial z}
∂z′′∂C可以怎么求呢,主要分两种这两个之后就是输出结果 ,整个网络就结束了。那就很简单了
这两个之后不是整个网络的输出 。
总结一下反向传播的两个计算过程:
用forward pass计算∂
z
∂
w
=
α
\frac{\partial z}{\partial w}=\alpha
∂w∂z=α; 用backward pass计算∂
C
∂
z
\frac{\partial C}{\partial z}
∂z∂C 两者相乘 ,即∂
C
∂
w
=
∂
z
∂
w
∂
C
∂
z
\frac{\partial C}{\partial w}=\frac{\partial z}{\partial w}\frac{\partial C}{\partial z}
∂w∂C=∂w∂z∂z∂C 1.4.2 回归 Regression 传送门:预测神奇宝贝著名的宝可梦例子(虽然我不知道宝可梦到底是森么 ,但是老师举的这种可爱的例子真的很容易理解欸)
基本内容与播放量的例子差不多 ,有几个补充的点 。
函数可以是多次式
但是注意【过拟合】的问题。
函数不是越复杂越好 ,要适合恰当的函数
宝可梦的数据与它的种类有关系 ,意外发现!!! ,加上
也有可能存在其他因素对分数有影响 ,加上
不断的修改函数…
但是其他因素加上后发现 ,还是存在过拟合的情况,解决办法就是正则化…
正则化(regularization)
这其实可以让函数变得平滑 ,因为w越小 ,输入的变化对函数的影像就越小,换句话说就是函数不会被输入值所含不确定的因素影响 。我们希望得到一个平滑的函数 ,但是太平滑也不好 ,loss也会增加 。
1.4.3 分类(classification) 传送门:分类神奇宝贝又是宝可梦的例子啦~
其实分类可以理解为回归,比如有两个类别:-1和1 ,更接近回归结果更接近-1为一类 ,更接近1为另一类 。但不建议实际应用哈 。(因为假如是1 ,2 ,3类别 ,1和2是比较像的 ,到底属于哪个类别并不是很好判断 ,1和3又不像 ,所以有时候行 ,有时候不行,就说明这种方法不建议使用啦 。后面会提到如何避免这种情况 ,在1.4.4的多元分类会提到one-hot vector的方法)
比较好的方法: perceptron;SVM;…(后续再说)
那先用概率的方法研究一下这个问题:
二元分类:两种类别的情况(后续会有多类别分类的例子 ,在会补充到,不要着急 ,先把二分类了解个大概)
输入属于某一类别的概率:贝叶斯概率公式 生成模型 Generative Model:全概率公式所以要想算这两个值 ,就得知道四个红框里面
P
(
C
1
)
,
P
(
C
2
)
,
P
(
x
∣
C
1
)
,
P
(
x
∣
C
2
)
P(C_1),P(C_2), P(x|C_1),P(x|C_2)
P(C1),P(C2),P(x∣C1),P(x∣C2)的数值 。首先是
P
(
C
1
)
,
P
(
C
2
)
P(C_1),P(C_2)
P(C1),P(C2),这个机率叫做先验 Prior特征值 feature
然后是
P
(
x
∣
C
1
)
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!