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