深度学习算法优化背景知识---指数加权平均

背景:在深度学习优化算法,如:Momentum、RMSprop、Adam中都涉及到指数加权平均这个概念。为了系统的理解上面提到的三种深度学习优化算法,先着重理解一下指数加权平均(exponentially weighted averages)

定义

指数移动平均(EMA)也称为指数加权移动平均(EWMA),是一种求平均数的方法,应用指数级降低的加权因子。 每个较旧数据的权重都呈指数下降,从未达到零。

m个数据的数据集\({[\theta_1,\theta_2,...,\theta_m]}\) ;

  • 平均数的一般求解方法:\(v_{aver} = \frac{\theta1+\theta2+...+\theta_m}{m}\) ;
  • 指数加权平均的求解方法:
  • 参数 \(\beta\), \(v_0 = 0\);
  • \(v_t = \beta v_{t-1} + (1-\beta)\theta_t\) :前t个样本的平均数由前(t-1)个样本的平均数和第t个样本决定

符号

含义

\(\beta\)

参数

\(v_0\)

初始平均值

\(v_t\)

前t条记录的平均值

\(\theta_t\)

第t条记录值

举例

有100天伦敦温度记录\({[\theta_1,\theta_2,...,\theta_{100}]}\),计算伦敦100天温度平均值。如果\(\beta =0.9\);

计算公式:

展开公式:

即:\(v_{100} = 0.1\theta_{100} + 0.1*0.9 \theta_{99} + 0.1*(0.9)^2 \theta_{98} + ... + 0.1*0.9^{99}\theta_1\)

可以看出:各个记录前的权重系数是以指数级下降的,但不为0。所以这种平均值的求解方法称为指数加权平均

温度平均值变化图:

应用

主要用在深度学习优化算法中,用来修改梯度下降算法中参数的更新方法

在优化算法中,\(\frac{1}{1-\beta}\) 可以粗略表示指数加权平均考虑的样本数[由于随着样本容量t的逐渐增多,其系数指数下降,对平均值的贡献程度逐渐降低;影响平均值计算的几个关键样本就是最近几天的样本值,而这个样本量可以通过\(\frac{1}{1-\beta}\) 来进行大致估算]。

Momentum

初始化:\(v_{dW} = np.zeros(dW.shape)\) ; \(v_{db} = np.zeros(db.shape)\) ----初始为0;分别与dW、db shape相同;

  • \(v_{dW}\)、 \(v_{db}\) 用来计算关于\(W\)、\(b\) 梯度的平均值;

在第t次迭代中On iteration \(t\):

  • Compute \(dW\), \(db\) on the current mini-batch; 现在当前batch中计算\(dW\)、\(db\) ;
  • \(v_{dW} = \beta v_{dW} + (1-\beta)dW\) 【计算关于\(dW\)的平均。解释:dW看做是加速度,\(v_{dW}\) 下山速度, \(\beta\) 摩擦系数; momentum动量】
  • \(v_{db} = \beta v_{db} + (1-\beta)db\) 【计算关于\(db\)的平均】
  • **$W = W - \alpha v_{dW}, b=b-\alpha v_{db} \(** 【参数更新:用关于\)W\(、\)b$ 梯度的平均值来替换原来的\(dW\)、\(db\)】

超参数: \(\alpha, \beta\), ---\(\beta\) usually be 0.9. (a very robust number)

RMSprop

初始化:\(S_{dW} = np.zeros(dW.shape)\) ; \(S_{db} = np.zeros(db.shape)\) ----初始为0;分别与dW、db shape相同;

在t次迭代中On iteration \(t\):

  • Compute \(dW\),\(db\) on current mini-batch
  • \(v_{dW} = \beta v_{dW} + (1-\beta)(dW)^2\) ; \(v_{db} = \beta v_{db} + (1-\beta) (db)^2\) 【计算梯度平方的平均值】
  • \(W = W - \alpha \frac{dW} {\sqrt{v_{dW} + \epsilon}}\) ; \(b = b - \alpha \frac{db}{\sqrt{v_{db}+\epsilon}}\) 【参数更新:除以平方根;加上\(\epsilon\)防止开平方根过小】

Adam = Momentum + RMSprop

初始化:\(v_{dW} = np.zeros(dW.shape)\) ; \(S_{dW} = np.zeros(dW.shape)\) ; \(v_{db} = np.zeros(db.shape)\) \(S_{db} = np.zeros(db.shape)\) ; ----初始为0;分别与dW、db shape相同;【\(v_{dW}\)、\(v_{db}\) 是Momentum算法;\(S_{dW}\)、\(S_{db}\) 是RMSprop优化算法】

t次迭代过程On iteration \(t\):

  • Compute \(dW, db\) on current mini-batch;
  • \(v_{dW} = \beta_1v_{dW} + (1-\beta_1) dW\) , \(v_{db} = \beta_1 v_{db} + (1-\beta_1) db\) -----------"Momentum" 超参数:\(\beta_1\)
  • \(S_{dW} = \beta_2 S_{dW} + (1-\beta_2) (dW)^2\), \(S_{db} = \beta_2 S_{db} + (1-\beta_2) (db)^2\) ------------"RMSprop" 超参数:\(\beta_2\)
  • biases correction 偏差修正:
  • \(v_{dW}^{correct} = \frac {v_{dW}}{(1-\beta_1^t)}\) , \(v_{db}^{correct} = \frac {v_{db}}{(1-\beta_1^t)}\) ;
  • \(S_{dW}^{correct} = \frac {S_{dW}}{(1-\beta_2^t)}\) , \(S_{db}^{correct} = \frac {S_{db}}{(1-\beta_2^t)}\) ;
  • \(W = W - \alpha \frac{v_{dW}^{correct}}{\sqrt{S_{dW}^{correct}+ \epsilon} }\) , \(b = b - \alpha \frac{v_{db}^{correct}}{\sqrt{S_{db}^{correct} + \epsilon } }\) 【更新方法:结合Momentum和RMSprop优化算法】

问题及改正

存在问题

指数加权平均早期估算过程中存在:偏差

由于指数加权平均初始值\(v_0 = 0\),\(\beta = 0.9\)则:

  • \(v_1 = 0.9 * v_0 + 0.1*\theta_1 = 0.1\theta_1\)
  • \(v_2 = 0.9 * v_1 + 0.1 * \theta_2 = 0.09\theta_1 + 0.1\theta_2\)

就是说在平均值求解的刚开始几次计算过程中,计算的平均值过小,偏差过大。表现在下面的图里,绿线 是理想情况;紫线 是指数加权平均线。可以看出前几次平均值紫线比绿线要高一些! 紫线早期过下,偏差过大。

改正方法

进行偏差纠正。

将计算的平均值结果除以\(1-\beta^t\),即\(v_t = \frac{v_t}{1-\beta^t}=\frac{\beta v_{t-1} + (1-\beta)\theta_t}{1-\beta^t}\) ;

从计算公式可以看出\(v_t\) 随着计算样本t的增大,不断接近于没有进行偏差纠正的指数加权平均值。在图中表现就是随着样本的增大,紫线和绿线逐渐重合

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

sigmoid和tanh求导的最终结果,以及Sigmoid函数与损失函数求导

sigmoid Sigmoid函数,即f(x)=1/(1+e-x)。是神经元的非线性作用函数。 ? 2. 函数: ? ? 1.1 从指数函数到si...

7327
来自专栏MelonTeam专栏

深度学习基础概念笔记

导语 学习tensorflow,caffe等深度学习框架前,需要先了解一些基础概念。本文以笔记的形式记录了一个零基础的小白需要先了解的一些基础概念。 ...

1747
来自专栏TensorFlow从0到N

TensorFlow从0到1 - 10 - NN基本功:反向传播的推导

上一篇 9 “驱魔”之反向传播大法引出了反向传播算法——神经网络的引擎,并在最后窥探了它的全貌。本篇将详细的讨论反向传播各方面的细节。尽管它被TensorFl...

4006
来自专栏大数据挖掘DT机器学习

梯度下降法求解逻辑回归

梯度下降法(Gradient Descent)是优化问题中一种常用的手段,一般用于凸函数问题(或者可以转换为凸函数的问题)的求解,而逻辑回归问题就可以转换为一个...

3929
来自专栏张鹏宇的专栏

深度学习基础概念笔记

学习 tensorflow,caffe 等深度学习框架前,需要先了解一些基础概念。本文以笔记的形式记录了一个零基础的小白需要先了解的一些基础概念。

1.1K1
来自专栏重庆的技术分享区

4吴恩达Meachine-Learing之多变量线性回归(Linear-Regression-with-Multiple-Variables

1163
来自专栏SimpleAI

【DL笔记1】Logistic Regression:最基础的神经网络

从【DL笔记1】到【DL笔记N】,是我学习深度学习一路上的点点滴滴的记录,是从Coursera网课、各大博客、论文的学习以及自己的实践中总结而来。从基本的概念、...

742
来自专栏深度学习

神经网络性能调优方案

神经网络性能调优主要方法 (1)数据增广 (2)图像预处理 (3)网络初始化 (4)训练过程中的技巧 (5)激活函数的选择 (6)不同正则化方法 (...

3708
来自专栏小小挖掘机

查收一份附带答案的面经!

1.1.1 全量梯度下降(Batch gradient descent) 每次使用全量的训练集样本来更新模型参数,即θ=θ−η⋅∇θJ(θ)。 优点:每次更新都...

2133
来自专栏Gaussic

Machine Learning笔记(二) 单变量线性回归

对于给定的训练集(Training Set),我们希望利用学习算法(Learning Algorithm)找到一条直线,以最大地近似所有的数据,然后通过这条直线...

823

扫码关注云+社区