エイダデルタ

public class AdaDelta<Model: Differentiable>: Optimizer
where
  Model.TangentVector: VectorProtocol & PointwiseMultiplicative
    & ElementaryFunctions & KeyPathIterable,
  Model.TangentVector.VectorSpaceScalar == Float

AdaDelta オプティマイザー。

AdaDelta 最適化アルゴリズムを実装します。 AdaDelta は、一次情報に基づく確率的勾配降下法です。過去のすべての勾配を蓄積するのではなく、勾配更新の移動ウィンドウに基づいて学習率を適応させます。したがって、AdaDelta は、多くの更新が行われた場合でも学習を続けます。最適化問題空間のダイナミクスの変化により速く適応します。

参考文献: 「ADADELTA: 適応学習率手法」 (Zeiler、2012)

  • 宣言

    public typealias Model = Model
  • 学習率。

    宣言

    public var learningRate: Float
  • 各タイム ステップで保持する勾配の割合に対応する減衰係数。

    宣言

    public var rho: Float
  • 数値の安定性を向上させるために、分母に小さなスカラーが追加されました。

    宣言

    public var epsilon: Float
  • 学習率が低下します。

    宣言

    public var decay: Float
  • 現在のステップ。

    宣言

    public var step: Int
  • 累積され、指数関数的に減衰する二乗勾配の平均。

    宣言

    public var averageSquared: Model.TangentVector
  • 蓄積されたパラメータが更新されます。

    宣言

    public var accumulatedDelta: Model.TangentVector
  • modelのインスタンスを作成します。

    宣言

    public init(
      for model: __shared Model,
      learningRate: Float = 1,
      rho: Float = 0.95,
      epsilon: Float = 1e-6,
      decay: Float = 0
    )

    パラメーター

    learningRate

    学習率。デフォルト値は1です。

    rho

    減衰係数。デフォルト値は0.95です。

    epsilon

    数値の安定性を向上させるために、分母に小さなスカラーが追加されました。デフォルト値は1e-6です。

    decay

    学習率が低下します。デフォルト値は0です。

  • 宣言

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • 宣言

    public required init(copying other: AdaDelta, to device: Device)