《机器学习》李宏毅(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 \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(\theta') L(θ)<L(θ),即local maxima
否则,为saddle point
又由 v T H v > 0 v^{T}Hv>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 \frac{1}{2}\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可能

小的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 ^ \hat{y} 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

在这里插入图片描述

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值