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 required init(copying other: AdaGrad, to device: Device)