Ada Grad

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

Bir AdaGrad iyileştirici.

AdaGrad (uyarlanabilir degrade) optimizasyon algoritmasını uygular. AdaGrad, eğitim sırasında parametrelerin ne sıklıkta güncellendiğine göre uyarlanan, parametreye özel öğrenme oranlarına sahiptir. Daha fazla güncelleme alan parametrelerin öğrenme oranları daha düşüktür.

AdaGrad, tüm model parametrelerinin öğrenme oranlarını, bunları gradyan normlarının karelerinin toplamının kareköküyle ters orantılı olarak ölçeklendirerek ayrı ayrı uyarlar.

Referans: “Çevrimiçi Öğrenme ve Stokastik Optimizasyon için Uyarlanabilir Alt Derecelendirme Yöntemleri” (Duchi ve diğerleri, 2011)

  • beyan

    public typealias Model = Model
  • Öğrenme oranı.

    beyan

    public var learningRate: Float
  • Sayısal kararlılığı artırmak için paydaya küçük bir skaler eklenir.

    beyan

    public var epsilon: Float
  • Gradyan normlarının karelerinin toplamı.

    beyan

    public var accumulator: Model.TangentVector
  • model için bir örnek oluşturur.

    beyan

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

    Parametreler

    learningRate

    Öğrenme oranı. Varsayılan değer 1e-3 .

    initialAccumulatorValue

    Gradyan normlarının karelerinin toplamının başlangıç ​​değeri. Varsayılan değer 0.1 .

    epsilon

    Sayısal kararlılığı artırmak için paydaya küçük bir skaler eklenir. Varsayılan değer 1e-8 .

  • beyan

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

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