AdaGrad

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 func update(_ model: inout Model, along direction: Model.TangentVector)
  • Déclaration

    public required init(copying other: AdaGrad, to device: Device)