Datawhale X 李宏毅苹果书 AI 夏令营 —— Part 04 @深度学习 @AI

自适应学习率

用一般的梯度下降训练,所有的参数都是设同样的学习率,往往会在梯度还很大的时候,即使不是卡在局部最小值和鞍点,损失就已经降了下去。

对此,我们引入自适应学习率(adaptive learning rate)的方法,给每一个参数不同的学习率。如图所示,如果在某一个方向上,梯度的值很小,非常平坦,我们会希望学习率调大一点;如果在某一个方向上非常陡峭,坡度很大,我们会希望学习率可以设得小一点。
在这里插入图片描述
通过引入自适应学习率以及 Part 02 描述的动量,我们将最原始的梯度下降,进化到这一个版本
θ t + 1 i ← θ t i − η t σ t i m t i (1) \theta^{i}_{t+1} ← \theta^{i}_{t} - \frac{\eta_t}{\sigma^{i}_{t}} m^{i}_{t}\tag{1} θt+1iθtiσtiηtmti(1)其中 m 是动量。均方根 σ 计算公式如下
σ t i = 1 t + 1 ∑ i = 0 t ( g t i ) 2 (2) \sigma^{i}_{t} = \sqrt{\frac{1}{t+1}\sum^{t}_{i=0}{(g^{i}_t)}^2}\tag{2} σti=t+11i=0t(gti)2 (2)其中 g 是梯度

Q:动量 m 考虑了过去所有的梯度,均方根 σ 考虑了过去所有的梯度,一个放在分子,一个放在分母,并且它们都考虑过去所有的梯度,不就是正好抵消了吗?
A:m 和 σ 在使用过去所有梯度的方式是不一样的,动量是直接把所有的梯度都加起来,所以动量有考虑方向,它有考虑梯度的正负。但是均方根不考虑梯度的方向,只考虑梯度的大小,计算 σ 的时候,都要把梯度取一个平方项,把平方的结果加起来,所以只考虑梯度的大小,不考虑它的方向,所以动量跟 σ 计算出来的结果并不会互相抵消。

Adam

最常用的优化的策略或者优化器(optimizer)是Adam(Adaptive moment estimation),它能使用动量作为参数更新方向,并且能够自适应调整学习率。PyTorch 里面已经写好了 Adam 优化器,这个优化器里面有一些超参数需要人为决定,但是往往用 PyTorch 预设的参数就足够好了。如下代码使用了 PyTorch 的 Adam 优化器以及预设的参数,具体文档参考:https://pytorch.org/docs/stable/generated/torch.optim.Adam.html#torch.optim.Adam

torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, 
weight_decay=0, amsgrad=False, *, foreach=None, 
maximize=False, capturable=False, differentiable=False, fused=None)

分类

对于分类任务,我们可以把它视为回归,即把类变为数字。如图所示,输入 x 后,输出预测类别,同样的,模型预测输出跟正确答案的那个类越接近越好。
在这里插入图片描述
但有时需要假设多个类本身没有特定的关系,类 1 是 1,类 2 是 2,类 3 是 3。这种情况,需要引入独热向量来表示类,即任何情况下,向量内只有一个元素是 1。实际上,在做分类的问题的时候,比较常见的做法也是用独热向量表示类。

带有 softmax 的分类

如图所示,参考 Part03,我们可以构建更深层的模型来处理分类问题。实际做分类的时候,往往会把预测的 y 通过 softmax 函数得到 y′,才去计算 y′ 跟标签 y 之间的距离。这是因为 y 是独热向量,所以其里面的值只有 0 跟 1,但是预测的 y 里有任何值,可以先把它归一化到 0 到 1 之间,这样才能跟标签的计算相似度
在这里插入图片描述
softmax 的计算公式如下
y i ′ = e x p ( y i ) ∑ j e x p ( y i ) (3) y_i' = \frac{exp(y_i)}{\sum_j {exp(y_i)}}\tag{3} yi=jexp(yi)exp(yi)(3)
即先把所有的 y 取一个指数(负数取指数后也会变成正的),再对其做归一化(除掉所有 y 的指数值的和)得到 y′

分类损失

一般来,如公式 4,我们使用交叉熵来计算分类任务中的预测 yˆ 与标签 y 的距离。当 yˆ 跟 y′ 相同时,可以最小化交叉熵的值,此时均方误差也是最小的。
e = − ∑ i y i l n y i ′ (4) e = - \sum_i y_ilny_i'\tag{4} e=iyilnyi(4)

参考资料:
[1] 李宏毅《深度学习详解》电子版:https://github.com/datawhalechina/leedl-tutorial
[2] 视频讲解:https://www.bilibili.com/video/BV1JA411c7VT?p=7&vd_source=3efd40f637f094c1da27b1a24b410e12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值