再议:梯度下降算法

说明:今天放学班里的大漂亮同学,过来聊了一会儿,在聊的过程中看得出来,他对前两天我们课堂上讲的梯度下降算法方面还是有一些疑问,在地铁上,简单写点吧,一会转给你。

梯度下降算法

梯度下降算法可以解决哪些问题?
  • 梯度下降法简单来说就是一种寻找使损失函数最小化的方法
  • 理论上,当然也可以从数学的角度来解读:从数学上的角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向(也可以理解为负梯度的方向)就是函数减少最快的方向
  • 来,看张图,以前买的资料里有张图:
    在这里插入图片描述
  • 在上图中我这边展示了一维和多维的损失函数,损失函数通常呈碗状。在训练过程中损失函数对权重求偏导数就是损失函数在该位置点的梯度。我们可以看到,从"碗口"沿着负梯度方向移动,就可以到达损失函数底部,从而使损失函数最小化。这种利用损失函数的梯度迭代地寻找局部最小值(最优解)的过程本质上就属于梯度下降的过程。(这块应该不难理解吧,孩子?)
常见的梯度下降算法有哪些呢?
  • BGD,中文批量梯度下降算法,此处的BGD大漂亮的意思是,可以把它理解为我们机器学习里讲的FG(全梯度下降算法),其实我认为可以这么理解,或者说这么理解是没有问题的。

但是要明白的一点就是我们这里的批量指的是什么?来,我截个图:
在这里插入图片描述
也就是说,这里的批量应该怎么理解呢,其实也就是当epochs=1时,我们在模型训练是传入的全部样本数据!

  • SGD(随机梯度下降算法),这个算法,每次迭代时只选取1个样本,其实从这点上看,他的准确率就不会高,而且很容易受到噪声点的影响,所以不推荐。
  • MiniBatch(小批量梯度下降),这个算法在每次迭代时,会随机选取一小部分训练样本来计算梯度,并更新参数,相对来讲准确率肯定是不如批量梯度下降算法,但是效率相对于批量梯度下降算法会有所提升,比较适合在线学习的深度学习场景。

实际上,梯度下降的几种方式的根本区别就在于 Batch Size不同;
在这里插入图片描述
说明:这个加1,针对可整除的情况可以不加!!!

坦率的讲,以上梯度下降算法都是有其固有局限性的,后期在我们深度学习模型中,使用场景非常受限,同时梯度下降算法在进行网络训练时,会遇到鞍点和局部极小值这些问题

来张图:

在这里插入图片描述
所以通常来讲,以上梯度下降算法我们都是不用的而是使用其他梯度下降优化算法。
例如:

  • 动量梯度下降算法

动量算法虽然不完美,但是解决了上图中的鞍点问题,下降趋势更平滑。
基本原理:动量梯度下降计算梯度的指数加权平均数(需要计算机开辟内存来保存历史数据),并利用该值来更新参数值。

基本使用上也是非常简单,在SGD(批量梯度下降算法)的基础上添加了,momentum参数,

# 代码参考
tf.keras.optimizers.SGD(learning_rate=0.1, momentum=0.9)
  • AdaGrad

AdaGrad算法会使用一个小批量随机梯度
AdaGrad算法在迭代后期由于学习率过小,能较难找到最优解(推荐使用)

  • RMSprop

不同于AdaGrad算法里状态变量st是截至时间步t所有小批量随机梯度gt按元素平方和,RMSProp(Root Mean Square Prop)算法将这些梯度按元素平方做指数加权移动平均
在这里插入图片描述
其中ϵ是一样为了维持数值稳定一个常数。最终自变量每个元素的学习率在迭代过程中就不再一直降低。RMSProp 有助于减少抵达最小值路径上的摆动,并允许使用一个更大的学习率 α,从而加快算法学习速度。

  • Adam 优化算法

首先说明:Adam 优化器是我比较钟情的optimizers,不要问我为什么?牛逼!!!

接下来说说,Adam 为什么牛逼:

  • Adam 优化算法(Adaptive Moment Estimation,自适应矩估计)将 Momentum 和 RMSProp 算法结合在一起。
  • Adam算法在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。
    推荐一组经验参数:
    β1:常用的缺省值为 0.9
    β2:建议为 0.999
tf.keras.optimizers.Adam(
    learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07
)

今天实在是太累了,不写了,就这样吧,后期有时间再补充!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值