“Datawhale X 李宏毅苹果书 AI夏令营”深度学习-第三章 深度学习基础3.1

目录

第一部分   

1.引言

2.临界点及其种类

3. 判断临界值种类的方法

4. 逃离鞍点的方法

第二部分

A. 批量

1.定义与过程:

2.批量大小对梯度下降法的影响:

极端情况

· 批量梯度下降法(BGD)

· 随机梯度下降法(SGD)

并行运算

计算时间

回合时间

训练效果

-图像识别

-可能解释

-测试帮助

-对比总结

B. 动量法

- 原理

- 具体过程

- 好处示例



第一部分   

1.引言

优化神经网络时可能遇到损失不再下降的情况,深层网络有时未能发挥完整力量,模型可能一开始就训练不起来,需探讨原因。

2.临界点及其种类

- 当参数对损失微分为零时,梯度下降停止,训练损失不再下降。

 - 局部极小值是梯度为零的点,鞍点也是梯度为零且区别于局部极小值和局部极大值的点,形状像马鞍。

- 损失无法下降可能是收敛在临界点,但不一定是局部极小值,因为鞍点也是梯度为零的点。若在局部极小值,四周损失都较高;而鞍点旁边有路可让损失更低

3. 判断临界值种类的方法

- 损失函数L(θ)在θ′附近可近似为L(θ) ≈ L(θ′) + (θ - θ′)ᵀg + 1/2(θ - θ′)ᵀH(θ - θ′)(泰勒级数近似),与梯度和海森矩阵有关。

- 在临界点,梯度g为零,可根据1/2(θ - θ′)ᵀH(θ - θ′)判断误差表面样子,从而判断L(θ′)是局部极小值、局部极大值还是鞍点。

- 更简便的判断方法是看海森矩阵H的特征值:若所有特征值为正,H为正定矩阵,临界点是局部极小值;若所有特征值为负,H为负定矩阵,临界点是局部极大值;若特征值有正有负,临界点是鞍点。

- 例如,对于一个简单神经网络,通过计算其损失函数的梯度和海森矩阵,可判断原点是鞍点,且海森矩阵的特征向量可指示在鞍点处更新参数的方向以逃离鞍点,但实际中很少使用该方法,因为计算海森矩阵运算量非常大。

4. 逃离鞍点的方法

- 鞍点与局部极小值谁更常见是个问题。低维度空间中的局部极小值点,在更高维空间中可能是鞍点,训练网络时参数数量多,误差表面维度高,可能有更多路可走,局部极小值可能较少。

- 经验表明,实际训练中遇到的多数梯度很小、参数不再更新的情况往往是遇到了鞍点。例如,训练不同神经网络的结果显示,几乎找不到所有特征值都为正的临界点,多数点都不是真正的局部极小值。

第二部分

A. 批量

1.定义与过程:

在计算梯度时,将所有数据分成批量(batch),每个批量大小为B,每次用B笔数据计算损失和梯度更新参数,遍历所有批量的过程称为一个回合(epoch),且通常会在每回合开始前随机打乱数据重新划分批量。

2.批量大小对梯度下降法的影响:

极端情况
· 批量梯度下降法(BGD)

批量大小为训练数据大小,需看完所有数据才更新一次参数,每次迭代计算量大,但更新更稳定、准确

· 随机梯度下降法(SGD)

批量大小等于1,取出一笔数据即可计算损失并更新一次参数,梯度有噪声,更新方向曲折,但在非凸优化问题中更容易逃离局部最小值。

并行运算
计算时间

使用Tesla V100 GPU在MNIST数据集的实验表明,批量大小从1到1000,计算梯度并更新参数所耗费的时间几乎一样,因为GPU可并行运算;当批量大小很大时,时间会增加。

回合时间

小批量“跑”完一个回合花费的时间比大批量长,因为小批量更新次数多。但实际上,大的批量大小在有并行计算时更有效率,一个回合花费的时间反而较少。

训练效果
-图像识别

用不同批量训练模型做图像识别,批量大小越大,验证集准确率越差,训练准确率也越低,这是优化问题,小批量优化结果更好。

-可能解释

批量梯度下降沿一个损失函数更新参数,到局部最小值或鞍点会停下来;小批量梯度下降每次用不同批量计算损失,若在一个批量中梯度为零卡住,换个批量可能继续训练使损失变小,所以有噪声的更新方式对训练有帮助。

-测试帮助

即使通过一些方法使大、小批量训练效果一样好,小批量在测试时也会更好,大的批量容易走到“峡谷”(坏的最小值),小的批量倾向于走到“盆地”(好的最小值),小批量更新方向随机,能跳出局部最小值。

-对比总结

小批量跟大批量运算时间在有并行计算时差距不大,除批量非常大外;一个回合时间小批量更慢,大批量更快;小批量梯度有噪声,大批量稳定;小批量优化和泛化更好,大批量更差。但可通过一些特别方法用大批量训练且效果好,如某些论文批量大小很大但能很快训练出好结果。

B. 动量法

- 原理

假设误差表面是斜坡,参数是球,一般梯度下降时球到局部最小值或鞍点会停住,但物理世界中球因惯性会继续走,应用到梯度下降中即动量法,根据梯度反方向加上前一步移动方向决定移动方向。

- 具体过程

初始参数为θ0 = 0,前一步参数更新量m0 = 0,在θ0处计算梯度方向g0,下一步方向是梯度方向加上前一步方向(因前一步为0,更新方向与梯度下降相同);从第二步开始,计算g1,更新方向为m2 = λm1 − ηg1,参数更新为θ2,反复此过程。m可写成之前所有计算梯度的加权和,引入动量后,可从梯度负反方向加上前一次移动方向或考虑过去所有梯度总和的角度理解动量法。

- 好处示例

一般梯度下降走到局部最小值或鞍点会被困住,但动量法因不只看梯度还看前一步方向,有可能继续走下去,甚至走到更好的局部最小值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值