Datawhale X 李宏毅苹果书 AI夏令营 task1(局部最小值与鞍点,批量和动量)

1. 局部最小值与鞍点

在优化过程中,有时随着参数不断更新,训练的损失不会再下降,但是损失仍然很大,把深层网络

线性模型和浅层网络做对比,发现深层网络没有做得更好。思考这时发生了什么。

1.1临界点及其种类

在过去的优化中,当某个地方的参数对损失的微分为零,那么梯度向量为零向量,参数无法继续更新。相当于训练停止。

梯度为零,可能是局部极小值点(local minimum),也可能是鞍点(saddle point),鞍点就是梯度为零时区别局部极小值点和局部极大值点的定义,其在某些方向上为极小值,某些方向上为极大值。

如图(b),红点在y轴方向上为极大值,x轴方向上为极小值,其不能被称为局部极小值,因为在周围还有其他点明显比红点小。

我们称梯度为零的点为临界点,参数在此处不会再改变,损失也无法继续下降。损失没有办法下降,一般是因为收缩在临界点,但不一定是在局部极小值点,也有可能是在鞍点。

因此要考虑一个点梯度为零是到底是局部极小值点还是鞍点,若是局部极小值点,则无路可走,损失已经降到最低,若是鞍点,则只要逃离鞍点就有可能让损失更低。

1.2判断临界值种类的方法

由多元函数的泰勒公式,我们可以得到在θ′附近的损失函数L(θ)可近似为

其中,第一项 L(θ)′ 告诉我们, 当θ跟θ′ 很近的时候,L(θ)应该跟L(θ′)还蛮靠近的;第二项θ−θ′ Tg 中,g 代表梯度, 它是一个向量,可以弥补L(θ′)跟L(θ)之间的差距。有时候梯度g 会写成∇L(θ′)。gi 是向 量g的第i个元素,就是L关于θ的第i个元素的微分,即

光看g还是没有办法完整地描述L(θ),还要看式(3.1)的第三项 1 2 θ−θ′ THθ−θ′。 第三项跟海森矩阵(Hessian matrix)H 有关。H 里面放的是 L 的二次微分,它第 i 行, 第j 列的值Hij 就是把θ的第i个元素对L θ′作微分,再把θ的第j个元素对 ∂L(θ′) ∂θi 微分后的结果

所以损失函数L(θ)与周围值的大小比较可根据第二项和第三项的正负来判断,在临界点处,g为零,故第二项为零,所以只需判断第三项即可,若第三项总为正值,则其为局部极小值点,若第三项时正时负则为鞍点。

通过变换,可得若矩阵H特征值均是正,则H为正定矩阵,第三项总大于零,临界点为极小值点。若H特征值均是负数,则H为负定矩阵,第三项总小于零,临界点为局部极大值点。若H特征值有正有负,则第三项有正有负,临界点为鞍点。

如果H特征值均为零,则继续展开,看第四项。

1.3

在实际过程中,可能涉及到的参数数量过于庞大,一般来说,局部极小值点数量远远小于鞍点甚至没有,在训练过程中找到局部极小值点的 概率也是极低。

定义最小值比例为   最小值比例=正特征值数量/总特征值数量,时加上我我们几乎找不到特征值都为正的临界点,最小值比例最大也不过处于0.5~0.6的范围,大多数时候,,我们训练到一个梯度 很小的地方,参数不再更新,往往只是遇到了鞍点。

2.批量和动量

在计算梯度时,不是对所有数据的损失计算梯度,而是将其分成一个一个批量(batch)。每个批量的size为B,即为一个批量中含有B个数据,在更新参数时,会逐步取出每个批量来计算损失和梯度更新参数,遍历所有批量的过程称为一个回合(epoch)批量的划分是随机的,每个回合开始之前会随机重新划分。

2.1批量大小对梯度下降法的影响

现在先考虑两种极端情况(如上图所示):

(1) a图中的情况为不用批量,即批量的大小等于训练数据的大小,这种使用全批量的数据来更新参数的的方法叫批量梯度下降法,假如有二十组数据,此时模型必须把二十组数据全部计算完成才可以更新参数。

(2) b图中的情况为批量的大小为一,成为随机梯度下降法,也称为增量梯度下降法,每计算一个数据就更新一次参数,假如有二十组数据,则在一回合中会更新二十次参数,用一笔数据计算出来的损失相对带有更多噪声。

实际上,批量梯度下降并没有“划分批量”:要把所有的数据都看过一遍,才能够更新一次 参数,因此其每次迭代的计算量大。但相比随机梯度下降,批量梯度下降每次更新更稳定、更 准确。

随机梯度下降的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下 降更容易逃离局部最小值。

实际上,在考虑并行运算的情况下,批量梯度下降花费的时间不一定更长,对于比较大的批量,计算损失和梯度花费的时间也不一定比使用小批量的计算时间长,即一个计算一个大小不同的批量所用时间相差不大。

当批量的大小在一千以内,所用时间基本相同,而当批量大小非常大时,计算梯度所花费的时间还是会随着批量大小的增加而逐渐增长。

但因为并行计算的能力,当批量较小时,运行完成一个回合花费的时间比批量较大时更大。

大的批量更新比较稳定,小的批量的方向比较有噪声。

实际上有噪声的梯度反而更能帮助训练,在优化方面,往往小的批量优化的结果更好。

小的批量对测试也有帮助。如果某种方法使两种训练得一样好,则在测试过程中,可以发现小的批量在测试时更好。大的批量往往过拟合更严重。

在论文 “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima”中,作者在不同数据集上训练了六个网络(包括全连接网络、不同的卷积神经网络),在很多不同的 情况都观察到一样的结果。

这篇论文给出了一个解释,如图3.13所示,训练损失上面有多个局部最小值,这些局部 最小值的损失都很低,其损失可能都趋近于0。但是局部最小值有好最小值跟坏最小值之分, 如果局部最小值在一个“峡谷”里面,它是坏的最小值;如果局部最小值在一个平原上,它是好 的最小值。训练的损失跟测试的损失函数是不一样的,这有两种可能。一种可能是本来训练跟 测试的分布就不一样;另一种可能是因为训练跟测试都是从采样的数据算出来的,训练跟测 试采样到的数据可能不一样,所以它们计算出的损失是有一点差距。 对在一个“盆地”里面的 最小值,其在训练跟测试上面的结果不会差太多,只差了一点点。但对在右边在“峡谷”里面的 最小值,一差就可以天差地远 。虽然它在训练集上的损失很低,但训练跟测试之间的损失函 数不一样,因此测试时,损失函数一变,计算出的损失就变得很大。

两种方法各方面对比如下:

2.2动量法

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

如图3.14,假设误差表面为斜坡,参数为球,球从斜坡上滚落,若用梯度下降,就走到局部最小值或是鞍点处就会停止,但在现实世界中,在该点处由于惯性的存在,原有的速度使它继续向前,那么我们一样可以模拟一个惯性应用到梯度下降中,现在将其定义为动量。

一般梯度下降如图3.15,。初始参数为 θ0,计算一下梯 度,计算完梯度后,往梯度的反方向去更新参数θ1=θ0−ηg0。有了新的参数θ1 后,再计 算一次梯度,再往梯度的反方向,再更新一次参数,到了新的位置以后再计算一次梯度,再往 梯度的反方向去更新参数,即为按照梯度的方向更新参数。

引入动量后,在更新参数时,不是值向梯度的反方向来移动参数,而是梯度的反方向以及上一次移动的方向一起来决定移动方向。如图3.16。

因此动量法可以有效地避免鞍点,甚至越过某些局部最小值,到达更高的局部极小值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值