深度学习里面的而优化函数 Adam,SGD,动量法,AdaGrad 等 | PyTorch 深度学习实战

前一篇文章,使用线性回归模型逼近目标模型 | PyTorch 深度学习实战

本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started

本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】

发展历史

机器学习,就是随机初始化参数,然后根据损失函数,不断的使用梯度更新参数。 因此,如何精确的调整参数,十分重要,这个参数更新的算法就是梯度下降,梯度下降算法出现后,不断的演进。

梯度下降变种算法提出时间轴:

  • 1847 年 梯度下降算法
  • 1957 年 随机梯度下降算法 SGD
  • 1993 年 动量法
  • 1994 年 小批量随机梯度动量法
  • 2011 年 AdaGrad 算法
  • 2011 年 AdaDelta 算法
  • 2012 年 RMSProp/AdaDelta 算法
  • 2014 年 Adam 算法

在这里插入图片描述

不同梯度下降算法的原理概述

在这里插入图片描述

不同算法的区别,主要体现在 2,3 步。对于1、4 步,是通用的。

核心差异

在这里插入图片描述

通过可视化比较,不同算法在梯度上,选择下降的方向是不同的,论文 《An empirical analysis of the optimization of deep network loss surfaces》

比如,RMSProp 和 AdaDelta 算法
在这里插入图片描述

最佳策略的讨论

不能一下子确定哪个最好,要根据数据、问题进行尝试,通常的经验如下:

  • 不想做精细的调优,那么就用 Adam;类似于开车上的自动挡
  • 更加自如地控制优化迭代的各类参数,那么 SGD,选择性的添加动量等,相当于开车上的手动挡
  • 先用 Adam 快速下降,再用 SGD 调优

在这里插入图片描述

  • 还是熟悉自己的数据,如果数据是稀疏的,那么就是选择学习率自适应的算法
  • 使用一个小规模的验证集,进行控制变量法的对比,看哪个算法能快速的收敛

在这里插入图片描述

Momentum 动量法

物理学中的动量

动量守恒定律:一个物质系统不受外力或所受外力之和为零,(即 F 合外力 = 0 F_{合外力}=0 F合外力=0 ),那么它的动量必定守恒 。这个定律用数学表达式记作:

在这里插入图片描述

因为动量是矢量,所以动量守恒定律的等式是一个矢量方程。若物体的运动是一维的,那么可以通过规定正方向将这个方程标量化,其中“+”表示物体运动方向与正方向相同,“-”表示物体运动方向与正方向相反。若物体的运动是二维甚至更高维度,则求和符合矢量相加减的原则。

动量守恒定律不仅适用于二体体系,也适用于多体体系:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值