AdaGrad

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

Pengoptimal AdaGrad.

Mengimplementasikan algoritma optimasi AdaGrad (gradien adaptif). AdaGrad memiliki kecepatan pembelajaran khusus parameter, yang disesuaikan dengan seberapa sering parameter diperbarui selama pelatihan. Parameter yang menerima lebih banyak pembaruan memiliki kecepatan pembelajaran yang lebih kecil.

AdaGrad secara individual mengadaptasi kecepatan pembelajaran semua parameter model dengan menskalakannya berbanding terbalik dengan akar kuadrat dari jumlah kuadrat norma gradien.

Referensi: “Metode Subgradien Adaptif untuk Pembelajaran Online dan Optimasi Stokastik” (Duchi dkk, 2011)

  • Pernyataan

    public typealias Model = Model
  • Kecepatan pembelajaran.

    Pernyataan

    public var learningRate: Float
  • Skalar kecil ditambahkan ke penyebut untuk meningkatkan stabilitas numerik.

    Pernyataan

    public var epsilon: Float
  • aki

    Jumlah kuadrat norma gradien.

    Pernyataan

    public var accumulator: Model.TangentVector
  • Membuat sebuah instance untuk model .

    Pernyataan

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

    Parameter

    learningRate

    Kecepatan pembelajaran. Nilai defaultnya adalah 1e-3 .

    initialAccumulatorValue

    Nilai awal untuk jumlah kuadrat norma gradien yang berjalan. Nilai defaultnya adalah 0.1 .

    epsilon

    Skalar kecil ditambahkan ke penyebut untuk meningkatkan stabilitas numerik. Nilai defaultnya adalah 1e-8 .

  • Pernyataan

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

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