机器学习(3)之优化器(梯度下降方法(Gradient Descent))用来调整学习率(learning rate)

1.调整学习率

如果每次调的太大,loss变化就很快:调的太小,loss变化的太慢,这样都找不到最小的loss。

在这里插入图片描述
那么,我们怎么调整学习率呢?很容易想到,一开始调的时候,设置的大一些,经过几次调整,快接近目标时,我们就把学习率调小一些。那么最好的情况应该是对于每一个不同的参数设置不同的学习率。于是就有了不同的梯度下降的方法。

2.Adgrad

采取这种方法调整参数的过程如下:第一个公式Vanilla Gradient descent
就是传统的梯度下降的方法,(请参考上一篇文章)第二种Adagrad就是在第一种的基础上加了一个σ,σ的计算过程如第二张图。
在这里插入图片描述
第二张图在这里:
在这里插入图片描述
约分简化如下:
在这里插入图片描述
那么问题来了,对于传统的梯度下降,梯度gradient越大,变化的越快,但是在Adagrad里g和分母正好变化相反,这里是什么原因呢,其实为了造成一种反差的效果。
其实,它加的分母是过去所有gradient的和,如果过去的gradient很大,说明比较陡,那么就用学习率除以大的数,让它下一次变化的小一点;如果过去的gradient比较小,那么就可以放心的走下去,让下次变化大一些。
在这里插入图片描述
在这里插入图片描述
RMSProp公式和Adagrad类似,只不过学习率除以的那个数不一样,Adagrad的那个分母是直接把所有过去的gradient加起来,但是RMSProp有点类似的借用SGDM的算法,确保学习率除以根号v不会永无止境的变大,在时间上和前面的梯度有联系,这样就不会出现Adgrad的问题(走没几步就因为前几步的梯度太大停下)。
在这里插入图片描述
但是这样还不能解决SGD存在的可能卡在gradient为0的位置,所以Adam算法就把SGDM和RMSProp结合起来。
在这里插入图片描述

3.随机梯度下降(stochastic gradient descent)

传统的需要看完所有的输入x才更新参数,(内层的求和符号表示是对i求和,也就是第某个输入x的所有特征,外层的求和是对n求,表示n个输入),但是SGD每看到一个输入x(外层没求和),就更新一次参数,所以更快。
在这里插入图片描述
在这里插入图片描述
还有一种SGDM(SGD with Monmentum),为Monmentum定义一个向量,移动的时候受之前时刻的gradient的影响,这么做的原因是可以避免SGD中出现局部梯度为零的情况。在这里插入图片描述
如下图,如果是SGD,到达第三个点的时候就不会动,如果到第四个点就会往回走,往左边移动,但是SGDM有过去时刻的梯度,就会往右边移动。
在这里插入图片描述

4.特征缩放(Feature Scaling)

通过求对数或者指数使数据分布范围近似。
在这里插入图片描述
常见的方法,其中m是平均值,σ是标准差,
在这里插入图片描述

5.梯度下降的原理(了解)

梯度下降的原理可以用泰勒级数来解释,把损失函数用泰勒级数展开如下,
在这里插入图片描述
然后在红圈里求最小的损失函数:
在这里插入图片描述
不难发现怎么让损失函数最小呢?就是让我, △θ最大,假设中心点向量为u,v,那么让△θ取和u,v相反的方向,且取到圈圈的边缘就可保证损失函数最小。所以△θ就是u,v乘以一个负数,保证反向。
在这里插入图片描述
代换一下如下图所示,就表示出了梯度下降。
在这里插入图片描述

6.梯度下降的局限性

在这里插入图片描述

7.常用的优化器(梯度下降方法)

在这里插入图片描述

8.训练模型的一些建议

通常在CV领域都用SGDM,在NLP大部分都会用Adam。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值