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