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

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

  • 神经网络训练
    • 局部最小值
      • 如何判断critical point的具体类型
        • Example
      • saddle point处的处理
        • Example
      • saddle point和local minima谁更常见
    • batch与momentum
      • why batch?
      • momentum(动量)
    • Adaptive learning rate
      • find learning rate
        • root mean square(Adagrad算法)
        • RMSProp
      • learning rate scheduling
      • optimization总结
    • loss函数的影响
      • 以分类问题为例
        • 损失距离的度量
        • why cross-entropy
    • batch normalization
      • one of feature normalization
      • batch normalization —— testing
      • more normalization

神经网络训练

局部最小值

《机器学习》李宏毅(21P5-9)_第1张图片

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

如何判断critical point的具体类型

要知道loss function的形状

泰勒展开式
《机器学习》李宏毅(21P5-9)_第2张图片

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

《机器学习》李宏毅(21P5-9)_第3张图片

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

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

《机器学习》李宏毅(21P5-9)_第4张图片

Example

某个network:y=w1w2x
穷举w1,w2,并计算其所带来的loss,画图如下
《机器学习》李宏毅(21P5-9)_第5张图片计算H(Loss的二次微分矩阵)【原点(0,0)处】
《机器学习》李宏毅(21P5-9)_第6张图片

saddle point处的处理

saddle point处是可以找到继续梯度下降的方向的,通过Hessian矩阵
找到H的特征向量u及对应的特征值 λ \lambda λ
将3项改写为 1 2 λ ∣ ∣ u ∣ ∣ 2 \frac{1}{2}\lambda||u||^2 21λ∣∣u2
沿着u,即特征值的方向更新 θ \theta θ即可降低loss
《机器学习》李宏毅(21P5-9)_第7张图片

Example

《机器学习》李宏毅(21P5-9)_第8张图片

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

saddle point和local minima谁更常见

在不同维度空间中,会不会local minima变成saddle point?
即如果有更多参数,或许local minima就更少了?
《机器学习》李宏毅(21P5-9)_第9张图片在经验中也支持这个假说:
《机器学习》李宏毅(21P5-9)_第10张图片

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

《机器学习》李宏毅(21P5-9)_第11张图片

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的
《机器学习》李宏毅(21P5-9)_第12张图片

较大batch size的计算时间不一定比较小batch size多(有平行运算的能力)有实验证明
《机器学习》李宏毅(21P5-9)_第13张图片因此当batch size小的时候,一个epoch花费时间会更多,在考虑平行运算时,big batch size更有优势
《机器学习》李宏毅(21P5-9)_第14张图片

noisy gradient 可能会帮助训练准确度,大的batch size可能会带来不好的结果
《机器学习》李宏毅(21P5-9)_第15张图片《机器学习》李宏毅(21P5-9)_第16张图片

小的batch在testing时得到较好效果
在峡谷里的local minima是bad minima
大的batch size倾向于走到峡谷里
《机器学习》李宏毅(21P5-9)_第17张图片

总结
《机器学习》李宏毅(21P5-9)_第18张图片

batch size:炼丹超参

momentum(动量)

《机器学习》李宏毅(21P5-9)_第19张图片

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

(一般的)gradient过程
《机器学习》李宏毅(21P5-9)_第20张图片加上动量的gradient decent过程
会考虑前一步方向再decent
《机器学习》李宏毅(21P5-9)_第21张图片

一种改变梯度方向的策略,防止陷入local minima
《机器学习》李宏毅(21P5-9)_第22张图片考虑过去所有gradient总和
《机器学习》李宏毅(21P5-9)_第23张图片由于惯性可能会越过山坡找到更低处——momentum的好处

总结
《机器学习》李宏毅(21P5-9)_第24张图片

Adaptive learning rate

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

《机器学习》李宏毅(21P5-9)_第25张图片

find learning rate

《机器学习》李宏毅(21P5-9)_第26张图片

root mean square(Adagrad算法)

《机器学习》李宏毅(21P5-9)_第27张图片《机器学习》李宏毅(21P5-9)_第28张图片

RMSProp

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

《机器学习》李宏毅(21P5-9)_第29张图片《机器学习》李宏毅(21P5-9)_第30张图片目前最常用的optimization:Adam算法——RMSProp+Momentum
Adam original paper
《机器学习》李宏毅(21P5-9)_第31张图片

learning rate scheduling

learning rate decay : 接近终点时可以让learning rate减小,让更新慢下来
warm up: learning rate 先变大再变小
《机器学习》李宏毅(21P5-9)_第32张图片

bert 中需要warm up
transformer 中也有《机器学习》李宏毅(21P5-9)_第33张图片
详情可参考论文RAdam

optimization总结

《机器学习》李宏毅(21P5-9)_第34张图片

loss函数的影响

以分类问题为例

《机器学习》李宏毅(21P5-9)_第35张图片

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

将每个class用独热向量表示
(class两两之间距离相同)
《机器学习》李宏毅(21P5-9)_第36张图片《机器学习》李宏毅(21P5-9)_第37张图片

softmax
《机器学习》李宏毅(21P5-9)_第38张图片两个class用sigmoid函数

损失距离的度量

再去计算 y ^ \hat{y} y^ y y y之间距离,作为损失函数并使其最小
有多种方式计算距离
《机器学习》李宏毅(21P5-9)_第39张图片

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

why cross-entropy

《机器学习》李宏毅(21P5-9)_第40张图片

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

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

batch normalization

《机器学习》李宏毅(21P5-9)_第41张图片

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

one of feature normalization

《机器学习》李宏毅(21P5-9)_第42张图片可以使gradient decent loss收敛更快一点,训练更顺利一些

考虑到深度学习的多层网络训练
《机器学习》李宏毅(21P5-9)_第43张图片

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

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

若激活函数是sigmoid,建议在z处做feature normalization,因为sigmoid函数在0附近斜率较大,对z做feature normalization可以将所有的值移到0附近,会得到更大的gradient
《机器学习》李宏毅(21P5-9)_第44张图片
在这里,z1,z2,z3是相互影响的

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

平均不是0
新增学习参数,如果不希望normalization结果平均是0(可能会对结果产生影响),网络会自动学习与调整 β , γ \beta,\gamma β,γ
《机器学习》李宏毅(21P5-9)_第45张图片

batch normalization —— testing

若testing时没有batch
pytorch的处理: 在训练时计算moving average
《机器学习》李宏毅(21P5-9)_第46张图片
batch normalization original paper
How does batch normalization help optimization
《机器学习》李宏毅(21P5-9)_第47张图片

more normalization

《机器学习》李宏毅(21P5-9)_第48张图片

你可能感兴趣的:(机器学习—李宏毅,机器学习,人工智能,python)