栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

优化器++++++

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

优化器++++++

文章目录
  • 一、梯度下降法(GD,Gradient Descent)
      • 原理
      • 缺点
      • 优化点
  • 二、缩小计算量
    • 1.随机梯度下降(SGD)
      • 原理
      • 证明:
    • 2.小批量梯度下降法(MBGD)
  • 三、优化梯度下降过程
    • 1.牛顿法
      • 理解
      • 缺点:
    • 2.动量法(也叫冲量法),参考了历史数据
      • 如何实现?
      • 名字的由来
    • 3.Nesterov法(又名牛顿冲量法,与牛顿无关,参考未来数据)
      • 如何实现?
    • 4. AdaGrad(针对学习率的修正)
      • 如何实现
      • 缺点:
    • 5.RMSprop(使用指数加权考虑历史信息的重要性以修正adagrad)
    • 6.Adam(RMS+动量法)

一、梯度下降法(GD,Gradient Descent) 原理

求整个数据集的loss,并由链式求导更新权重

缺点

理论可行,但训练计算量庞大,耗时严重,实际不可行。

优化点

1.缩小计算量
2.优化梯度下降过程

二、缩小计算量 1.随机梯度下降(SGD) 原理

均匀地、随机选取其中一个样本 ( X ( i ) , Y ( i ) ) (X^{(i)},Y^{(i)}) (X(i),Y(i)),用它代表整体样本,即把它的值乘以N,就相当于获得了梯度的无偏估计值。

证明:

在一顿猛如虎的计算下,随机梯度在凸问题下,结果如下:
f ( x ( k ) ) − f ∗ = O ( 1 k ) f(x^{(k)})-f^{*}=O(frac{1}{sqrt{k}}) f(x(k))−f∗=O(k ​1​),意思为在迭代k次后,最后随机梯度下降法所能达到的误差是 1 k frac{1}{sqrt{k}} k ​1​这个级别。
在强凸问题下,结果为 f ( x ( k ) ) − f ∗ = O ( 1 k ) f(x^{(k)})-f^{*}=O(frac{1}{k}) f(x(k))−f∗=O(k1​)。

结论:直接使用梯度下降法,收敛速度必然比随机梯度快,但是再快也不会超过1/k,所以在性价比中不如随机梯度下降法。

2.小批量梯度下降法(MBGD)

可以视为使用了一个mini-batch的随机梯度下降法

三、优化梯度下降过程 1.牛顿法


即使用一个二次函数拟合梯度下降方向,数学表达如下:

矩阵表达如下:

理解

由泰勒展开理解,最优路线就是贴着山走,将贴着山的曲线泰勒展开,牛顿法相当于两项来逼近曲线,梯度下降相当于一项,更高阶理论上更好,但是复杂度更大了。
可以认为牛顿法本质为对所有的下降路径放在一起,统一考虑,看是否可得更好路径。

缺点:

计算量太大,理论可行。

2.动量法(也叫冲量法),参考了历史数据

如何实现?

用历史数据修正分量

  1. GD的梯度更新: W t = W t − 1 − η ⋅ ∇ J W_{t}=W_{t-1}-etacdot{nabla{J}} Wt​=Wt−1​−η⋅∇J
  2. 若令 △ W ( t ) i = ∂ J ( W ( t − 1 ) i ) ∂ W i triangle{W_{(t)i}}=frac{partial{J}(W_{(t-1)i})}{partial{W_i}} △W(t)i​=∂Wi​∂J(W(t−1)i​)​
  3. 则 W t = W t − 1 − η ⋅ △ W ( t ) i W_{t}=W_{t-1}-etacdot{triangle{W_{(t)i}}} Wt​=Wt−1​−η⋅△W(t)i​
  4. 此时,加入历史梯度,则有 V ( t ) = V ( t − 1 ) + △ W ( t ) i V_{(t)}=V_{(t-1)}+triangle{W_{(t)i}} V(t)​=V(t−1)​+△W(t)i​,此时 W t = W t − 1 − η ⋅ V ( t ) W_{t}=W_{t-1}-etacdot{V_{(t)}} Wt​=Wt−1​−η⋅V(t)​
  5. 但是在经过足够多的迭代后,太过久远的梯度已无参考价值,此时直接使用不合理。因此引入加权求和以更新 V ( t ) V_{(t)} V(t)​。公式为$ V ( t ) = β ⋅ V ( t − 1 ) + ( 1 − β ) ⋅ △ W ( t ) i V_{(t)}=betacdot{V_{(t-1)}}+(1-beta)cdottriangle{W_{(t)i}} V(t)​=β⋅V(t−1)​+(1−β)⋅△W(t)i​
    为什么此处为 β 和 1 − β beta和1-beta β和1−β?
    利用指数加权移动平均法。例: β = 0.9 beta=0.9 β=0.9时

    故而越远的影响越忽略不计。
名字的由来

我们可以认为以前的改变具有惯性,我们需要将其抵消才能发生变化。故而在拥有这个历史动量后,出来的效果自然更稳定。

3.Nesterov法(又名牛顿冲量法,与牛顿无关,参考未来数据) 如何实现?

冲量法:
V ( t ) = β ⋅ V ( t − 1 ) + ( 1 − β ) ⋅ △ W ( t ) i V_{(t)}=betacdot{V_{(t-1)}}+(1-beta)cdottriangle{W_{(t)i}} V(t)​=β⋅V(t−1)​+(1−β)⋅△W(t)i​,其中, △ W ( t ) i = ∂ J ( W ( t − 1 ) i ) ∂ W i triangle{W_{(t)i}}=frac{partial{J}(W_{(t-1)i})}{partial{W_i}} △W(t)i​=∂Wi​∂J(W(t−1)i​)​,因此:
W t = W t − 1 − η ⋅ V ( t ) W_{t}=W_{t-1}-etacdot{V_{(t)}} Wt​=Wt−1​−η⋅V(t)​
改进: △ W ( t ) i = ∂ J ( W ( t − 1 ) i + γ V ( t − 1 ) ) ∂ W i triangle{W_{(t)i}}=frac{partial{J}(W_{(t-1)i}+gamma{V_{(t-1)}})}{partial{W_i}} △W(t)i​=∂Wi​∂J(W(t−1)i​+γV(t−1)​)​

4. AdaGrad(针对学习率的修正) 如何实现

ε varepsilon ε为极小量,避免分母为0。迭代次数越多,学习率越偏向于0.

缺点:

会陷于局部最优解

5.RMSprop(使用指数加权考虑历史信息的重要性以修正adagrad)

公式为:

6.Adam(RMS+动量法)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号