AdaGrad

public class AdaGrad<Model: Differentiable>: Optimizer
where
  Model.TangentVector: VectorProtocol & PointwiseMultiplicative
    & ElementaryFunctions & KeyPathIterable,
  Model.TangentVector.VectorSpaceScalar == Float

Un optimizador AdaGrad.

Implementa el algoritmo de optimización AdaGrad (gradiente adaptativo). AdaGrad tiene tasas de aprendizaje específicas de parámetros, que se adaptan en relación con la frecuencia con la que se actualizan los parámetros durante el entrenamiento. Los parámetros que reciben más actualizaciones tienen menores tasas de aprendizaje.

AdaGrad adapta individualmente las tasas de aprendizaje de todos los parámetros del modelo al escalarlos de manera inversamente proporcional a la raíz cuadrada de la suma de los cuadrados de las normas de gradiente.

Referencia: “Adaptive Métodos subgradiente para el aprendizaje en línea y la optimización estocástica” (Duchi et al, 2011)

  • Declaración

    public typealias Model = Model
  • La tasa de aprendizaje.

    Declaración

    public var learningRate: Float
  • Un pequeño escalar agregado al denominador para mejorar la estabilidad numérica.

    Declaración

    public var epsilon: Float
  • La suma acumulada de cuadrados de las normas de gradiente.

    Declaración

    public var accumulator: Model.TangentVector
  • Crea una instancia de model .

    Declaración

    public init(
      for model: __shared Model,
      learningRate: Float = 1e-3,
      initialAccumulatorValue: Float = 0.1,
      epsilon: Float = 1e-8
    )

    Parámetros

    learningRate

    La tasa de aprendizaje. El valor predeterminado es 1e-3 .

    initialAccumulatorValue

    El valor inicial de la suma acumulada de cuadrados de las normas de gradiente. El valor predeterminado es 0.1 .

    epsilon

    Un pequeño escalar agregado al denominador para mejorar la estabilidad numérica. El valor por defecto es 1e-8 .

  • Declaración

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Declaración

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