《机器学习》李宏毅(21P5-9)

Posted 静妮子i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《机器学习》李宏毅(21P5-9)相关的知识,希望对你有一定的参考价值。

《机器学习》李宏毅(21P5-9)

神经网络训练

局部最小值

local minima:局部最优
saddle point:鞍点
gradient=0(loss 不再更新):有多种情况——local minima/saddle point,统称为critical point
在local point处无法找到其他最小值点
在saddle point处有可能从某个方向找到escape方法

如何判断critical point的具体类型

要知道loss function的形状

泰勒展开式

θ \\theta θ近似于 θ ′ \\theta' θ时, L ( θ ) L(\\theta) L(θ)可近似为以上式子
g(Gradient)会弥补 θ ′ 与 θ \\theta'与\\theta θθ之间的差距
H(Hessian海森矩阵)继续补足 θ ′ 与 θ \\theta'与\\theta θθ之间的差距

当我们遇到critical point时,此时gradient=0,即上式2项=0
此时可以根据上式3项的Hession Matrix,判断 θ \\theta θ附近error surface大致样子,以判断该点属于何种类型

v = θ − θ ′ v=\\theta-\\theta' v=θθ,故3项为 1 2 v T H v \\frac12v^THv 21vTHv
不管 θ \\theta θ为何值,且 v T H v > 0 v^THv>0 vTHv>0,则在 θ \\theta θ附近都有 L ( θ ) > L ( θ ′ ) L(\\theta)>L(\\theta') L(θ)>L(θ),即local minima
同理,若 v T H v < 0 v^THv<0 vTHv<0,则在 θ \\theta θ附近都有 L ( θ ) < L ( θ ′ ) L(\\theta)<L(\\theta') L(θ)<L(θ),即local maxima
否则,为saddle point
又由 v T H v > 0 v^THv>0 vTHv>0可知,H是positive definite,即Hessian矩阵所有特征值都大于0,因此直接判断Hessian即可

Example

某个network:y=w1w2x
穷举w1,w2,并计算其所带来的loss,画图如下
计算H(Loss的二次微分矩阵)【原点(0,0)处】

saddle point处的处理

saddle point处是可以找到继续梯度下降的方向的,通过Hessian矩阵
找到H的特征向量u及对应的特征值 λ \\lambda λ
将3项改写为 1 2 λ ∣ ∣ u ∣ ∣ 2 \\frac12\\lambda||u||^2 21λ∣∣u2
沿着u,即特征值的方向更新 θ \\theta θ即可降低loss

Example

实际应用中一般不会计算Hessian矩阵,因为计算量较大,还要计算特征值和特征向量,还有其他escape saddle point的方法

saddle point和local minima谁更常见

在不同维度空间中,会不会local minima变成saddle point?
即如果有更多参数,或许local minima就更少了?
在经验中也支持这个假说:

实际上基本找不到所有特征值全正情况,由图可以看出在极端条件下也有一般是负特征值,也即实际上local minima的并不常见,总会找到可以使loss下降的方向

batch与momentum

每次计算loss时,是分别取batch进行计算L1,l2…ln
所有数据(n个batch)计算完成即为一个epoch
在每一个epoch开始之前会分一次batch,每一次的batch划分都不一样——shuffle

why batch?

观察两种极端情况:
batch size=N:要把所有数据处理一遍才能updata一次参数
batch size=1:每一次update是不稳定noisy的

较大batch size的计算时间不一定比较小batch size多(有平行运算的能力)有实验证明
因此当batch size小的时候,一个epoch花费时间会更多,在考虑平行运算时,big batch size更有优势

noisy gradient 可能会帮助训练准确度,大的batch size可能会带来不好的结果

小的batch在testing时得到较好效果
在峡谷里的local minima是bad minima
大的batch size倾向于走到峡谷里

总结

batch size:炼丹超参

momentum(动量)

物理引入,通过动量让gradient decent越过critical point

(一般的)gradient过程
加上动量的gradient decent过程
会考虑前一步方向再decent

一种改变梯度方向的策略,防止陷入local minima
考虑过去所有gradient总和
由于惯性可能会越过山坡找到更低处——momentum的好处

总结

Adaptive learning rate

当loss不再下降时,gradient不一定变得很小

find learning rate

root mean square(Adagrad算法)

RMSProp

自行调整当前gradient的权重(重要性)

目前最常用的optimization:Adam算法——RMSProp+Momentum
Adam original paper

learning rate scheduling

learning rate decay : 接近终点时可以让learning rate减小,让更新慢下来
warm up: learning rate 先变大再变小

bert 中需要warm up
transformer 中也有
详情可参考论文RAdam

optimization总结

loss函数的影响

以分类问题为例

使用回归方式求解分类问题:以模型输出数值贴近分类表示值来表示,属于某一类别;但是按照这样表示class1有更大可能相似于class2,而与class3有更大不同,但不是所有分类方式都是数值接近而相似的。

将每个class用独热向量表示
(class两两之间距离相同)

softmax
两个class用sigmoid函数

损失距离的度量

再去计算 y ^ \\haty y^ y y y之间距离,作为损失函数并使其最小
有多种方式计算距离

cross-entropy是最适合分类问题的
cross-entropy和softmax是一个set,总是绑在一起使用

why cross-entropy

固定y3=-1000,不考虑其影响,y1,y2在【-10,10】之间变化
对loss的影响
左上角处:MSE会卡住,cross entropy有斜率可以往右下角(优化方向步进)
因此使用MSE可能训练困难,即使使用较好的optimization(Adam)在开始处也可能loss下降较慢,相反使用cross entropy就没有这种担心

因此可以看出,loss函数的选择也会影响训练效率

batch normalization

由于不同的dimension有不同的范围其对loss的影响大小不同,导致error surface不同地方梯度不同,导致训练效率下降
如何使得不同dimension有相同range:feature normalization

one of feature normalization

可以使gradient decent loss收敛更快一点,训练更顺利一些

考虑到深度学习的多层网络训练

经过每层网络后的结果可能仍然是different dims
因此在下一层之前还要做feature normalization

实际应用中在激活函数之前还是之后使用feature normalization都是可以的,影响不大

若激活函数是sigmoid,建议在z处做feature normalization,因为sigmoid函数在0附近斜率较大,对z做feature normalization可以将所有的值移到0附近,会得到更大的gradient

在这里,z1,z2,z3是相互影响的

实践时,由于数据量巨大我们分batch训练,因此考虑到一个batch训练过程中的normalization,我们称之为batch normalization(batch size比较大)

平均不是0
新增学习参数,如果不希望normalization结果平均是0(可能会对结果产生影响),网络会自动学习与调整 β , γ \\beta,\\gamma β,γ

batch normalization —— testing

若testing时没有batch
pytorch的处理: 在训练时计算moving average

batch normalization original paper
How does batch normalization help optimization

more normalization

以上是关于《机器学习》李宏毅(21P5-9)的主要内容,如果未能解决你的问题,请参考以下文章

李宏毅《机器学习》丨5. Tips for neural network design(神经网络设计技巧)

知识索引李宏毅机器学习

李宏毅2021&2022机器学习

李宏毅机器学习12. 循环神经网络

李宏毅《机器学习》国语课程(2022)来了

李宏毅《机器学习》丨7. Conclusion(总结)