Skip to content

(学习率自适应的梯度下降算法)ADADELTA: AN ADAPTIVE LEARNING RATE METHOD(2012) #68

@matafela

Description

@matafela

文末给出算法的具体实现,心急的话可以直接跳到最后看
写完了才发现有大神写过了,理论也更完备一些
###优势

  • 该方法不需要手动调整学习速率
  • 对超参数不敏感
  • 将对每个维度的学习率单独分离出来
  • 最小化梯度下降时的计算量
  • 对大梯度,噪声,不同架构具有很好的健壮性
  • 对本地或分布式环境都可很好的应用

###以下介绍一下该算法的一些背景知识
###学习率退火

  • 在验证准确率趋于平稳的时候降低学习率
  • 或者依据迭代了多少周期来控制学习率
  • 然而依然需要添加额外的参数控制学习率衰减的速度

###Per-Dimension First Order Methods(将对每个维度的学习率单独分离出来?)
由于参数矢量的每个维度都可以以完全不同的方式与全局cost相关,所以可以补偿这些差异的每维度学习速率通常是很有用的。

###动量法

  • 当梯度指向同一个方向时,加速
  • 当梯度的符号一直在改变时(震荡),减速
    迭代公式
  • ρ用于减速之前的学习率
  • 对于长峡谷状的cost表面而言有了不错的改进(相对于SGD)
  • 动量法可以将全局学习率依据维度区分出来

###ADAGRAD

  • 2012年之前的一个新的方法

  • 仅仅使用一阶信息但是有一些二阶的性质和思路在里面(??)
    ADAGRAD

  • η:所有维度共享的学习率
    分母是对之前学习率在每个维度的平方的累和(每个维度的梯度是最前所有的梯度在这个维度上的累和,所以是一直增加的)

  • 由于这种动态速率随着梯度幅度的倒数而增长,所以较大的梯度具有较小的学习率,而小梯度具有较大的学习率。

  • 因为神经网络中不同层之间的梯度的差距通常达到几个数量级,所以这种方法可以被考虑在内

  • 分母中梯度的积累与退火有这类似的效果,降低了学习的速率。由于梯度在分母中的积累,学习率将逐渐下降最终至0(这个不好)

  • 因为无视了梯度的大小,这种方法对于参数的初始条件和对应的梯度大小可能是敏感的,初始梯度大的话,之后的学习速率会下降。但是可以通过增加全局学习率来缓解这种情况。

###使用Second Order Information

  • 上述方法仅利用梯度和函数评估来优化目标,二阶方法(如牛顿法或准牛顿法)可以使用黑塞矩阵或近似值。当然计算可能会因此变得更加昂贵。
  • 计算黑塞矩阵(多元函数二阶导数打那个矩阵)的逆矩阵开销太大,可以通过对它做对角矩阵的倒数近似(?diagonal approximation)黑塞矩阵的逆矩阵来减少计算量(仅需再多一次额外的forward and back-propagation)
    update
  • μ是改善小曲率区域的黑塞矩阵调节的小常数。
  • 引入黑塞矩阵和类ADAGRAD项可以减轻对指定学习率的需要( Schaul发现)

###ADADELTA METHOD
对ADAGRAD以下缺点的改进:

  • 学习率的持续退火(或shrink)
  • 需要人工选择学习率

###改进方法1:Accumulate Over Window

  • 在一个window w 内对梯度累和,而不是所有的梯度。
  • 因为存放 w 之前的梯度是低效的,所以可以用对先前所有梯度均值(使用RMS即均方根值实现)的一个指数衰减作为代替的实现方法。

###改进方法2:Correct Units with Hessian Approximation

  • 改进希望∆xx之间的units一致(?量纲一致,不是很清楚),而SGD,Momentum,ADAGRAD中的units并不一致,所以他们的参数更新都是unitsless的
    SGD/Momentum/ADAGRAD:unitsless
  • 但是使用黑塞矩阵的话可以保证units一致(因为二阶)
    Hessian Approximation: correct units
  • 基于[Becker&LeCun 1988]的近似方法
  • 进而
  • 最后得出近似黑塞矩阵的逆矩阵的表达式
  • 其中假设x附近的曲率是平滑的,而Xt-1可以近似xt
  • 最后的x更新表达式
  • 由于RMS始终大于0,确保了X更新的方向始终与负梯度同向。
  • 分子作为一个加速项,作为动量在时间窗口w上积累先前的梯度。
  • 分母与ADAGRAD相关,因为每维度的平方梯度信息有助于平衡每个维度的进度,而是在一个窗口w上计算,以确保后期的训练。

###最终算法的具体实现
具体实现

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions