public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Un ottimizzatore AdaGrad.
Implementa l'algoritmo di ottimizzazione AdaGrad (gradiente adattivo). AdaGrad ha tassi di apprendimento specifici per i parametri, che sono adattati in base alla frequenza con cui i parametri vengono aggiornati durante la formazione. I parametri che ricevono più aggiornamenti hanno tassi di apprendimento inferiori.
AdaGrad adatta individualmente i tassi di apprendimento di tutti i parametri del modello ridimensionandoli in modo inversamente proporzionale alla radice quadrata della somma parziale dei quadrati delle norme del gradiente.
Riferimento: "Metodi dei sottogradienti adattivi per l'apprendimento online e l'ottimizzazione stocastica" (Duchi et al, 2011)
Dichiarazione
public typealias Model = Model
Il tasso di apprendimento.
Dichiarazione
public var learningRate: Float
Un piccolo scalare aggiunto al denominatore per migliorare la stabilità numerica.
Dichiarazione
public var epsilon: Float
La somma parziale dei quadrati delle norme del gradiente.
Dichiarazione
public var accumulator: Model.TangentVector
Crea un'istanza per
model
.Dichiarazione
public init( for model: __shared Model, learningRate: Float = 1e-3, initialAccumulatorValue: Float = 0.1, epsilon: Float = 1e-8 )
Parametri
learningRate
Il tasso di apprendimento. Il valore predefinito è
1e-3
.initialAccumulatorValue
Il valore iniziale per la somma parziale dei quadrati delle norme del gradiente. Il valore predefinito è
0.1
.epsilon
Un piccolo scalare aggiunto al denominatore per migliorare la stabilità numerica. Il valore predefinito è
1e-8
.Dichiarazione
public required init(copying other: AdaGrad, to device: Device)