Datawhale X 李宏毅苹果书AI夏令营 Task1学习笔记

是csdn上发布的第一篇博客

先叠个甲XD  本人是人工智能在读准大二学生,此前没有参与此类夏令营的经验,专业知识也较为浅薄,做的不好望海涵

局部极小值与鞍点

        参数对损失的微分(梯度)为0时,梯度下降就不能再更新参数了,此时训练就停下来了,因此需要针对这种情况做处理

        梯度为0时,有这几种情况:该点为局部极小值 / 局部最大值 / 鞍点

        梯度为零的点统称为临界点,此时损失无法继续下降,但不一定收敛在局部极小值。若是在鞍点则可以通过逃离鞍点来使损失更低

如何知道损失函数的形状?

        L(θ) 完整的样子写不出来。θ′ 附近的 L(θ) 可近似为

L(θ) ≈ L(θ′)+(θ − θ′)^Tg +1/2(θ − θ′)^T H(θ − θ′)

(泰勒级数近似)

        g代表梯度 有时写成∇L(θ′) 

         第三项跟海森矩阵H 有关,H 里面放的是 L 的二次微分

 Hij =(∂^2/∂θi∂θj)L(θ′)

        可以根据 1/2(θ − θ′)^T H(θ − θ′) 写作v^THv来判断在 θ′ 附近的误差表面

        若其>0,则为局部极小值,若其<0,为局部极大值,而若其时大时小,则为鞍点。

        若 H 的所有特征值都是正的,H 为正定矩阵,则 vTHv > 0,临界点是局部极小值。若 H 的所有特征值都是负的,H 为负定矩阵,则 vTHv < 0,临界点是局部极大值。若 H 的特征值有正有负,临界点是鞍点。

逃离鞍点的办法:批量和动量

        在计算梯度的时候,并不是对所有数据的损失 L 计算梯度,而是把所有的数据分成一个一个的批量

        大的批量更新比较稳定,小的批量的梯度的方向是比较有噪声的(noisy)。但实际上有噪声的的梯度反而可以帮助训练。大的批量大小优化可能会有问题,小的批量大小优化的结果反而是比较好的。

        可能的解释:批量梯度下降在更新参数的时候,沿着一个损失函数来更新参数,走到一个局部最小值或鞍点显然就停下来了。如果不看海森矩阵,梯度下降就无法再更新参数了 。

        大的批量大小会让我们倾向于走到“峡谷”里面,而小的批量大小倾向于让我们走到“盆地”里面。小的批量有很多的损失,其更新方向比较随机,其每次更新的方向都不太一样。

        所以大的批量跟小的批量各有优缺点,批量大小是需要去调整的超参数。

        动量法是另外一个可以对抗鞍点或局部最小值的方法。

        在物理的世界里面,一个球从高处滚下来的时候,它并不一定会被鞍点或局部最小值卡住,如果将其应用到梯度下降中,这就是动量。

        引入动量后,每次在移动参数的时候,不是只往梯度的反方向来移动参数,而是根据梯度的反方向加上前一步移动的方向决定移动方向。(通过模仿物理惯性解决“卡住”)        

        初始的参数值为 θ0 = 0,前一步的参数的更新量为 m0 = 0。接下来在 θ0 的地方,计算梯度的方向 g0。下一步的方向是梯度的方向加上前一步的方向,不过因为前一步正好是 0,所以更新的方向跟原来的梯度下降是相同的。但从第二步开始就不太一样了。从第二步开始,计算 g1,接下来更新的方向为m2 = λm1 − ηg1,参数更新为 θ2 ,接下来就反复进行同样的过程。

        但有动量还是有办法继续走下去,因为动量不是只看梯度,还看前一步的方向。即使梯度方向往左走,但如果前一步的影响力比梯度要大,球还是有可能继续往右走,甚至翻过一个小丘,也许可以走到更好的局部最小值,这就是动量有可能带来的好处 。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值