シンガポールドル

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

確率的勾配降下法 (SGD) オプティマイザー。

運動量、学習率の減衰、ネステロフ運動量をサポートする確率的勾配降下法アルゴリズムを実装します。運動量とネステロフ運動量 (別名ネステロフ加速勾配法) は、勾配降下法のトレーニング速度と収束率を向上させることができる一次最適化法です。

参考文献:

  • 宣言

    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 func update(_ model: inout Model, along direction: Model.TangentVector)
  • 宣言

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