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