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

本文详细介绍了深度学习中常用的优化算法,包括Momentum、RMSprop和Adam算法,并重点阐述了指数加权平均的概念及其在这些算法中的应用。通过实例说明了如何计算指数加权平均值,以及如何对其进行偏差修正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

定义

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

m个数据的数据集[θ1,θ2,...,θm][θ1,θ2,...,θm]

  • 平均数的一般求解方法:vaver=θ1+θ2+...+θmmvaver=θ1+θ2+...+θmm ;
  • 指数加权平均的求解方法:
    • 参数 ββ, v0=0v0=0;
    • vt=βvt1+(1β)θtvt=βvt−1+(1−β)θt :前t个样本的平均数由前(t-1)个样本的平均数和第t个样本决定
符号含义
ββ参数
v0v0初始平均值
vtvt前t条记录的平均值
θtθt第t条记录值

举例

有100天伦敦温度记录[θ1,θ2,...,θ100][θ1,θ2,...,θ100],计算伦敦100天温度平均值。如果β=0.9β=0.9

计算公式:

展开公式:

即:v100=0.1θ100+0.10.9θ99+0.1(0.9)2θ98+...+0.10.999θ1v100=0.1θ100+0.1∗0.9θ99+0.1∗(0.9)2θ98+...+0.1∗0.999θ1

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

温度平均值变化图:

平均值

应用

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

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

Momentum

初始化:vdW=np.zeros(dW.shape)vdW=np.zeros(dW.shape) ; vdb=np.zeros(db.shape)vdb=np.zeros(db.shape) —-初始为0;分别与dW、db shape相同;

  • vdWvdWvdbvdb 用来计算关于WWb 梯度的平均值;

在第t次迭代中On iteration tt:

  • Compute dW, dbdb on the current mini-batch; 现在当前batch中计算dWdWdbdb ;
    • vdW=βvdW+(1β)dWvdW=βvdW+(1−β)dW 【计算关于dWdW的平均。解释:dW看做是加速度,vdWvdW 下山速度, ββ 摩擦系数; momentum动量】
    • vdb=βvdb+(1β)dbvdb=βvdb+(1−β)db 【计算关于dbdb的平均】
    • W=WαvdW,b=bαvdbW=W−αvdW,b=b−αvdb 【参数更新:用关于WWb 梯度的平均值来替换原来的dWdWdbdb

    超参数: α,βα,β, —ββ usually be 0.9. (a very robust number)

    RMSprop

    初始化:SdW=np.zeros(dW.shape)SdW=np.zeros(dW.shape) ; Sdb=np.zeros(db.shape)Sdb=np.zeros(db.shape) —-初始为0;分别与dW、db shape相同;

    在t次迭代中On iteration tt:

    • Compute dW,dbdb on current mini-batch
      • vdW=βvdW+(1β)(dW)2vdW=βvdW+(1−β)(dW)2 ; vdb=βvdb+(1β)(db)2vdb=βvdb+(1−β)(db)2 【计算梯度平方的平均值】
      • W=WαdWvdW+ϵW=W−αdWvdW+ϵ ; b=bαdbvdb+ϵb=b−αdbvdb+ϵ 【参数更新:除以平方根;加上ϵϵ防止开平方根过小】

      Adam = Momentum + RMSprop

      初始化:vdW=np.zeros(dW.shape)vdW=np.zeros(dW.shape) ; SdW=np.zeros(dW.shape)SdW=np.zeros(dW.shape) ; vdb=np.zeros(db.shape)vdb=np.zeros(db.shape) Sdb=np.zeros(db.shape)Sdb=np.zeros(db.shape) ; —-初始为0;分别与dW、db shape相同;【vdWvdWvdbvdb 是Momentum算法;SdWSdWSdbSdb 是RMSprop优化算法】

      t次迭代过程On iteration tt:

      • Compute dW,db on current mini-batch;
        • vdW=β1vdW+(1β1)dWvdW=β1vdW+(1−β1)dW , vdb=β1vdb+(1β1)dbvdb=β1vdb+(1−β1)db ———–“Momentum” 超参数:β1β1
        • SdW=β2SdW+(1β2)(dW)2SdW=β2SdW+(1−β2)(dW)2, Sdb=β2Sdb+(1β2)(db)2Sdb=β2Sdb+(1−β2)(db)2 ————“RMSprop” 超参数:β2β2
        • biases correction 偏差修正:
          • vcorrectdW=vdW(1βt1)vdWcorrect=vdW(1−β1t) , vcorrectdb=vdb(1βt1)vdbcorrect=vdb(1−β1t) ;
          • ScorrectdW=SdW(1βt2)SdWcorrect=SdW(1−β2t) , Scorrectdb=Sdb(1βt2)Sdbcorrect=Sdb(1−β2t) ;
        • W=WαvcorrectdWScorrectdW+ϵW=W−αvdWcorrectSdWcorrect+ϵ , b=bαvcorrectdbScorrectdb+ϵb=b−αvdbcorrectSdbcorrect+ϵ 【更新方法:结合Momentum和RMSprop优化算法】

        问题及改正

        存在问题

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

        由于指数加权平均初始值v0=0v0=0β=0.9β=0.9则:

        • v1=0.9v0+0.1θ1=0.1θ1v1=0.9∗v0+0.1∗θ1=0.1θ1
        • v2=0.9v1+0.1θ2=0.09θ1+0.1θ2v2=0.9∗v1+0.1∗θ2=0.09θ1+0.1θ2

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

        改正方法

        进行偏差纠正。

        将计算的平均值结果除以1βt1−βt,即vt=vt1βt=βvt1+(1β)θt1βtvt=vt1−βt=βvt−1+(1−β)θt1−βt ;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值