深度学习常用知识梯度下降学习率和反向传播


1 梯度下降

梯度下降法主要用于单个参数的取值。假如损失函数是一座山,我们从山上一个任意点开始往山下走,山坡的坡度越大,我们的垂直高度下降的越快。当我们到达某一个点是,我们往任意方向前进多都会升高使,我们就到达了最低点。准确来说是局部最低点。但是如果损失函数是个凸函数,那么这个局部最优解就是整体最优解。

在这里插入图片描述

梯度下降

说到这我们就要提到微分方程了。对损失函数求导,导数就是我们所谓的梯度:

在这里插入图片描述
此处的是数据集的数目。符号代表对所有训练数据集中的特征和标签进行处理并求和,这是已经推导出来的求梯度的具体步骤。如果不熟悉导数(也就是对损失函数的微分)的演算也没有什么影响。因为梯度的计算过程都已经封装在各种机器学习框架中,并不用我们自己写代码实现。我们的目的是不断更新参数以使得损失函数最小化。

那这里的α是什么?α是我们给参数的变化加上一个权重,也即是学习率。我们以此来控制参数的变化速度。为什么我们要使用学习率呢?

2 学习率

从上面的公式我们不难发现,我们加入学习率就是希望在参数更新缓慢的时候加快它的更新,在参数跟新跨度太大使减弱它的更新。那么如何选择合适的学习率呢?

img

小学习率和大学习率的影响

在这里插入图片描述

如图左所示,如果学习率太小,那么我们每次训练之后得到的效果都太小,这无疑增大了我们的无谓的时间成本。如果如图右所示,学习率太大,那我们有可能直接跳过最优解,进入无限的训练中。所以解决的方法就是,学习率也需要随着训练的进行而变化。
Tensorflow提供了一种灵活的学习率设置—指数衰减法。先从一个较大的学习率开始快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率:

current_learning_rate = \
learning_rate * decay_rate ^ (global_step / decay_steps)

current_learning_rate: 当前使用的学习率
learning_rate: 初始学习率
decay_rate: 衰减系数
decay_steps: 衰减步幅
global_step: 训练总步数


3 反向传播

反向传播法是神经网络训练中非常重要的算法,可以帮助我们在所有参数上使用梯度下降法,通过反向传播更新参数,从而使损失函数更小。

img

前向传播与反向传播

x和y作为输入经过训练变成输出z传给下一层,我们计算得到误差函数L,并对x和y求导,得出x和y对于误差的影响,然后据此更新x和y。在实际应用中我们计算参数对于误差的影响,然后反向更新参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值