public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
確率的勾配降下法 (SGD) オプティマイザー。
運動量、学習率の減衰、ネステロフ運動量をサポートする確率的勾配降下法アルゴリズムを実装します。運動量とネステロフ運動量 (別名ネステロフ加速勾配法) は、勾配降下法のトレーニング速度と収束率を向上させることができる一次最適化法です。
参考文献:
- 「確率的近似法」 (Robbins と Monro、1951 年)
- 「ロビンスとモンローの確率的近似法について」 (ウォルフォウィッツ、1952 年)
- 「回帰関数の最大値の確率的推定」 (Kiefer and Wolfowitz、1952)
- 「反復法の収束を高速化するいくつかの方法」 (Polyak、1964)
- 「収束率を伴う制約のない凸最小化問題の手法」 (Nesterov、1983)
宣言
public typealias Model = Model
学習率。
宣言
public var learningRate: Float
勢いの要素。関連する方向への確率的勾配降下を加速し、振動を減衰させます。
宣言
public var momentum: Float
学習率が低下します。
宣言
public var decay: Float
true の場合、ネステロフの勢いを使用します。
宣言
public var nesterov: Bool
モデルの速度状態。
宣言
public var velocity: Model.TangentVector
実行された一連のステップ。
宣言
public var step: Int
model
のインスタンスを作成します。宣言
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
パラメータ
learningRate
学習率。デフォルト値は
0.01
です。momentum
関連する方向への確率的勾配降下を加速し、振動を減衰させる運動量係数。デフォルト値は
0
です。decay
学習率が低下します。デフォルト値は
0
です。nesterov
true
の場合はネステロフの勢いを使用します。デフォルト値はtrue
です。宣言
public required init(copying other: SGD, to device: Device)