SGD、Momentum、AdaGrad、Adam

参数的更新的方法:

类型       定义    公司   图像    优点     缺点      代码结构

关系:为了改正SGD的缺点,下面我们将介绍Momentum、AdaGrad、Adam这3 种方法来取代SGD。

  1. SDG

定义:

使用参数的梯度,沿梯度方向更新参数,并重复这个步骤多次,从而逐渐靠 近最优参数,这个过程称为随机梯度下降法(stochastic gradient descent), 简称SGD。朝着当前所在位置的坡度最大的方向前进,就是SGD的策略。

公司:

这里把需要更新的权重参数记为W,把损失函数关于W的梯度记为 。 η表示学习率,实际上会取0.01或0.001这些事先决定好的值。式子中的← 参数的更新  表示用右边的值更新左边的值。

优点:不过比起胡乱地搜索参数空间,也算是“聪 明”的方法。

SGD的缺点:

虽然SGD简单,并且容易实现,但是在解决某些问题时可能没有效率。

梯度在很多地方并没有指向最低处。也就是说梯度变换小的地方,不好用。

SGD低效的根本原因是,梯度的方向并没有指向最小值的方向。

代码结构:

class SGD:

  def __init__(self, lr=0.01):

self.lr = lr

def update(self, params, grads):

 for key in params.keys():

params[key] -= self.lr * grads[key]

改进方法之一:

Momentum(动量):

公司//定义:多加了一个速度av.

和前面的SGD一样,W表示要更新的权重参数, 表示损失函数关 于W的梯度,η表示学习率。这里新出现了一个变量v,对应物理上的速度,也就是导数,权值。式(6.3)表示了物体在梯度方向上受力,在这个力的作用下,物体的速度增 加这一物理法则。式(6.3)中有αv这一项。在物体不受任何力时,该项承担使物体逐渐减 速的任务(α设定为0.9之类的值),对应物理上的地面摩擦或空气阻力。

图像:

代码:

class Momentum:

    """Momentum SGD"""

    def __init__(self, lr=0.01, momentum=0.9):
        self.lr = lr  # 学习率
        self.momentum = momentum #Momentum(动量),该项承担使物体逐渐减 速的任务(α设定为0.9之类的值),对应物理上的地面摩擦或空气阻力。
        self

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值