public class AdaDelta<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Bir AdaDelta optimize edici.
AdaDelta optimizasyon algoritmasını uygular. AdaDelta, birinci dereceden bilgiye dayanan stokastik bir gradyan iniş yöntemidir. Geçmiş tüm degradeleri biriktirmek yerine, öğrenme oranlarını hareketli bir degrade güncellemeleri penceresine göre uyarlar. Böylece AdaDelta birçok güncelleme yapılsa bile öğrenmeye devam ediyor. Optimizasyon problem alanının değişen dinamiklerine daha hızlı uyum sağlar.
Referans: “ADADELTA: Uyarlanabilir Bir Öğrenme Oranı Yöntemi” (Zeiler, 2012)
beyan
public typealias Model = Model
Öğrenme oranı.
beyan
public var learningRate: Float
Her zaman adımında tutulacak gradyan oranına karşılık gelen bozunma faktörü.
beyan
public var rho: Float
Sayısal kararlılığı artırmak için paydaya küçük bir skaler eklenir.
beyan
public var epsilon: Float
Öğrenme hızının azalması.
beyan
public var decay: Float
Geçerli adım.
beyan
public var step: Int
Karesel gradyanların birikmiş, üstel olarak azalan ortalaması.
beyan
public var averageSquared: Model.TangentVector
Birikmiş parametre güncellemeleri.
beyan
public var accumulatedDelta: Model.TangentVector
model
için bir örnek oluşturur.beyan
public init( for model: __shared Model, learningRate: Float = 1, rho: Float = 0.95, epsilon: Float = 1e-6, decay: Float = 0 )
Parametreler
learningRate
Öğrenme oranı. Varsayılan değer
1
.rho
Çürüme faktörü. Varsayılan değer
0.95
.epsilon
Sayısal kararlılığı artırmak için paydaya küçük bir skaler eklenir. Varsayılan değer
1e-6
.decay
Öğrenme hızının azalması. Varsayılan değer
0
.beyan
public required init(copying other: AdaDelta, to device: Device)