public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Un optimiseur AdaGrad.
Implémente l'algorithme d'optimisation AdaGrad (gradient adaptatif). AdaGrad propose des taux d'apprentissage spécifiques aux paramètres, qui sont adaptés en fonction de la fréquence à laquelle les paramètres sont mis à jour pendant la formation. Les paramètres qui reçoivent davantage de mises à jour ont des taux d'apprentissage plus faibles.
AdaGrad adapte individuellement les taux d'apprentissage de tous les paramètres du modèle en les mettant à l'échelle inversement proportionnelle à la racine carrée de la somme courante des carrés des normes de gradient.
Référence : « Méthodes adaptatives de sous-gradient pour l'apprentissage en ligne et l'optimisation stochastique » (Duchi et al, 2011)
Déclaration
public typealias Model = Model
Le taux d'apprentissage.
Déclaration
public var learningRate: Float
Un petit scalaire ajouté au dénominateur pour améliorer la stabilité numérique.
Déclaration
public var epsilon: Float
La somme cumulée des carrés des normes de gradient.
Déclaration
public var accumulator: Model.TangentVector
Crée une instance pour
model
.Déclaration
public init( for model: __shared Model, learningRate: Float = 1e-3, initialAccumulatorValue: Float = 0.1, epsilon: Float = 1e-8 )
Paramètres
learningRate
Le taux d'apprentissage. La valeur par défaut est
1e-3
.initialAccumulatorValue
La valeur de départ de la somme cumulée des carrés des normes de gradient. La valeur par défaut est
0.1
.epsilon
Un petit scalaire ajouté au dénominateur pour améliorer la stabilité numérique. La valeur par défaut est
1e-8
.Déclaration
public required init(copying other: AdaGrad, to device: Device)