Datawhale X 李宏毅苹果书AI夏令营-进阶版 Task 1

第3章 深度学习基础

3.1 局部极小值与鞍点

1. 梯度下降至0时,模型不再训练,如下图3.1:

2. 大概念都是临界点,就是梯度为零的点。

3. 鞍点:梯度是零且区别于局部极小值和局部极大值的点。形状像马鞍。举例:【单一方向为低,不都低】图3.2(b)红色的点在 y 轴方向是比较高的,在 x 轴方向是比较低的,这就是一个鞍点。

4. 局部极小值:各个方向都低(图3.2)。

5. 判断临界值种类的方法:海森矩阵(Hessian matrix)H。简化版只看特征值就好:(1)若 H 的所有特征值都是正的,H 为正定矩阵,则 vTHv > 0,临界点是局部极小值。(2)若 H 的所有特征值都是负的,H 为负定矩阵,则 vTHv < 0,临界点是局部极大值。(3)若 H 的特征值有正有负,临界点是鞍点

6. 实际上,我们几乎不会真的把海森矩阵算出来,因为海森矩阵需要算二次微分,计算这个矩阵的运算量非常大,还要把它的特征值跟特征向量找出来,所以几乎没有人用这个方法来逃离鞍点

7. 低维度空间中的局部极小值点,在更高维的空间中,实际是鞍点。多数的时候,我们训练到一个梯度很小的地方,参数不再更新,往往只是遇到了鞍点。

3.2 批量(batch)和动量

1. 实际上在计算梯度的时候,并不是对所有数据的损失 L 计算梯度,而是把所有的数据分成一个一个的批量(batch)。遍历所有批量的过程称为一个回合(epoch)。

2. 使用全批量(full batch)的数据来更新参数的方法即批量梯度下降法(Batch Gradient Descent,BGD)

3. 批量大小等于 1时使用的方法即随机梯度下降法(Stochastic Gradient Descent,SGD),也称为增量梯度下降法批量大小等于 1 意味着只要取出一笔数据即可计算损失、更新一次参数。

4. 各有利弊:(1)批量梯度下降并没有“划分批量”:要把所有的数据都看过一遍,才能够更新一次参数,因此其每次迭代的计算量大。相比随机梯度下降,批量梯度下降每次更新更稳定、更准确。(2)随机梯度下降的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下降更容易逃离局部最小值

5. 考虑并行运算批量梯度下降花费的时间不一定更长;对于比较大的批量,计算损失和梯度花费的时间不一定比使用小批量的计算时间长 。实际上,在有考虑并行计算的时候,大的批量大小反而是较有效率的,一个回合大的批量花的时间反而是比较少的。

6. 大的批量更新比较稳定,小的批量的梯度的方向是比较有噪声的(noisy)。但实际上有噪声的的梯度反而可以帮助训练批量大小越大,验证集准确率越差。但这不是过拟合,因为批量大小越大,训练准确率也是越低。因为用的是同一个模型,所以这不是模型偏见的问题。 但大的批量大小往往在训练的时候,结果比较差。这个是优化的问题,大的批量大小优化可能会有问题,小的批量优化的结果反而是比较好的。

7. 可能的解释(图 3.12 ):批量梯度下降在更新参数的时候,沿着一个损失函数来更新参数,走到一个局部最小值或鞍点显然就停下来了。梯度是零,如果不看海森矩阵,梯度下降就无法再更新参数了 。但小批量梯度下降法每次是挑一个批量计算损失,所以每一次更新参数的时候所使用的损失函数是有差异的。选到第一个批量的时候,用 L1 计算梯度;选到第二个批量的时候,用 L2 计算梯度。假设用 L1 算梯度的时候,梯度是零,就会卡住。但 L2 的函数跟 L1 又不一样,L2 不一定会卡住,可以换下个批量的损失 L2 计算梯度,模型还是可以训练,还是有办法让损失变小,所以这种有噪声的更新方式反而对训练其实是有帮助的

8. 小的批量也对测试有帮助。假设有一些方法(比如调大的批量的学习率)可以把大的批量跟小的批量训练得一样好。实验结果发现小的批量在测试的时候会是比较好的。训练损失上面有多个局部最小值,这些局部最小值的损失都很低,其损失可能都趋近于 0。但是局部最小值有好最小值跟坏最小值之分,如果局部最小值在一个“峡谷”里面,它是坏的最小值;如果局部最小值在一个平原上,它是好的最小值。大的批量会让我们倾向于走到“峡谷”里面,而小的批量倾向于让我们走到“盆地”里面。小的批量有很多的损失,其更新方向比较随机,其每次更新的方向都不太一样。即使“峡谷”非常窄,它也可以跳出去,之后如果有一个非常宽的“盆地”,它才会停下来

9. 动量【高中物理选修3-5】法(momentum method)是另外一个可以对抗鞍点或局部最小值的方法。在物理的世界里面,一个球从高处滚下来的时候,它并不一定会被鞍点或局部最小值卡住,如果将其应用到梯度下降中,这就是动量。

10. 引入动量后,每次在移动参数的时候,不是只往梯度的反方向来移动参数,而是根据梯度的反方向加上前一步移动的方向决定移动方向。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值