【Datawhale X 李宏毅苹果书 AI夏令营】Task2学习

3.3 自适应学习率

如果在某一个方向上,梯度的值很小,非常平坦,我们会希望学习率调大一点;如果在某一个方向上非常陡峭,坡度很大,我们会希望学习率可以设得小一点。

3.3.1 AdaGrad

AdaGrad(Adaptive Gradient)是典型的自适应学习率方法,其能够根据梯度大小自动调整学习率。AdaGrad可以做到梯度比较大的时候,学习率就减小,梯度比较小的时候,学习率就放大

 ​​

 

3.3.2 RMSProp

同一个参数的同个方向,学习率也是需要动态调整的,于是就有了一个新的方法———RMSprop(RootMeanSquaredpropagation)

 

3.3.3 Adam

Adam 可以看作 RMSprop 加上动量,其使用动量作为参数更新方向,并且能够自适应调整学习率。PyTorch 里面已经写好了 Adam 优化器,这个优化器里面有一些超参数需要人为决定。

3.4 学习率调度

学习率调度中最常见的策略是学习率衰减(learning rate decay),也称为学习率退火(learning rate annealing)。随着参数的不断更新,让 η 越来越小。

另外一个经典的学习率调度的方式———预热。预热的方法是让学习率先变大后变小,至于变到多大、变大的速度、变小的速度是超参数。

残差网络面是有预热的,在残差网络里面,学习率先设置成0.01,再设置成0.1,并且其论文还特别说明,一开始用0.1反而训练不好。除了残差网络,BERT和Transformer的训练也都使用了预热。

Q:为什么需要预热?

A:当我们使用Adam、RMSprop 或AdaGrad 时,需要计算σ。而σ 是一个统计的结果。从σ 可知某一个方向的陡峭程度。统计的结果需要足够多的数据才精准,一开始统计结果σ是不精准的。一开始学习率比较小是用来探索收集一些有关误差表面的情报,先收集有关σ的统计数据,等σ统计得比较精准以后,再让学习率慢慢爬升。

3.5 优化总结

3.6 分类

3.6.1 分类与回归的关系

在做分类的问题的时候,比较常见的做法也是用独热向量表示类。

 

3.6.2 带有 softmax 的分类

 

 

一般有两个类的时候,我们不套softmax,而是直接取 sigmoid。当只有两个类的时候,sigmoid 和 softmax 是 等价的。 

3.6.3 分类损失

图 3.36 中左上角损失大,右下角损失小,所以期待最后在训练的时候,参数可以“走” 到右下角的地方。假设参数优化开始的时候,对应的损失都是左上角。如果选择交叉熵,如图3.36(a) 所示,左上角圆圈所在的点有斜率的,所以可以通过梯度,一路往右下的地方“走”; 如果选均方误差,如图3.36(b)所示,左上角圆圈就卡住了,均方误差在这种损失很大的地方, 它是非常平坦的,其梯度是非常小趋近于0的。如果初始时在圆圈的位置,离目标非常远,其梯度又很小,无法用梯度下降顺利地“走”到右下角。 

改变损失函数可以改变优化的难度。 

3.7 批量归一化

Z值归一化(Z-scorenormalization)

我们就是把这边的某一个数值x,减掉这一个维度算出来的平均值,再除掉这个维度,算出来的标准差,得到新的数值˜ x。得到新的数值以后,再把新的数值把它塞回去。

做完归一化以后,这个维度上面的数值就会平均是0,其方差是1,所以这一排数值的分布就都会在0上下;对每一个维度都做一样的归一化,所有特征不同维度的数值都在0上下,可能就可以制造一个比较好的误差表面。可以让在做梯度下降的时候,损失收敛更快一点,训练更顺利一点。

3.7.1考虑深度学习 

 

3.7.2 测试时的批量归一化 

 3.7.3 内部协变量偏移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值