アダグラード

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

AdaGrad オプティマイザー。

AdaGrad (適応勾配) 最適化アルゴリズムを実装します。 AdaGrad にはパラメータ固有の学習率があり、トレーニング中にパラメータが更新される頻度に応じて調整されます。より多くの更新を受け取るパラメータの学習率は低くなります。

AdaGrad は、勾配ノルムの累乗二乗和の平方根に反比例してスケーリングすることにより、すべてのモデル パラメーターの学習率を個別に適応させます。

参考文献: 「オンライン学習と確率的最適化のための適応的劣勾配法」 (Duchi et al、2011)

  • 宣言

    public typealias Model = Model
  • 学習率。

    宣言

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

    宣言

    public var epsilon: Float
  • 勾配ノルムの平方和の累計。

    宣言

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

    宣言

    public init(
      for model: __shared Model,
      learningRate: Float = 1e-3,
      initialAccumulatorValue: Float = 0.1,
      epsilon: Float = 1e-8
    )

    パラメーター

    learningRate

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

    initialAccumulatorValue

    勾配ノルムの実行中の二乗和の開始値。デフォルト値は0.1です。

    epsilon

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

  • 宣言

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

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