public class AdaDelta<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Un ottimizzatore AdaDelta.
Implementa l'algoritmo di ottimizzazione AdaDelta. AdaDelta è un metodo di discesa del gradiente stocastico basato sulle informazioni del primo ordine. Adatta i tassi di apprendimento in base a una finestra mobile di aggiornamenti dei gradienti, invece di accumulare tutti i gradienti passati. Pertanto, AdaDelta continua ad apprendere anche dopo aver effettuato numerosi aggiornamenti. Si adatta più velocemente alle mutevoli dinamiche dello spazio problematico di ottimizzazione.
Riferimento: "ADADELTA: un metodo di tasso di apprendimento adattivo" (Zeiler, 2012)
Dichiarazione
public typealias Model = Model
Il tasso di apprendimento.
Dichiarazione
public var learningRate: Float
Il fattore di decadimento, corrispondente alla frazione di gradiente da mantenere in ogni passo temporale.
Dichiarazione
public var rho: Float
Un piccolo scalare aggiunto al denominatore per migliorare la stabilità numerica.
Dichiarazione
public var epsilon: Float
Il decadimento del tasso di apprendimento.
Dichiarazione
public var decay: Float
Il passo attuale.
Dichiarazione
public var step: Int
La media accumulata, in decadimento esponenziale, dei gradienti quadrati.
Dichiarazione
public var averageSquared: Model.TangentVector
I parametri accumulati vengono aggiornati.
Dichiarazione
public var accumulatedDelta: Model.TangentVector
Crea un'istanza per
model
.Dichiarazione
public init( for model: __shared Model, learningRate: Float = 1, rho: Float = 0.95, epsilon: Float = 1e-6, decay: Float = 0 )
Parametri
learningRate
Il tasso di apprendimento. Il valore predefinito è
1
.rho
Il fattore di decadimento. Il valore predefinito è
0.95
.epsilon
Un piccolo scalare aggiunto al denominatore per migliorare la stabilità numerica. Il valore predefinito è
1e-6
.decay
Il decadimento del tasso di apprendimento. Il valore predefinito è
0
.Dichiarazione
public required init(copying other: AdaDelta, to device: Device)