adagrad

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

Un optimizador de 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 tasas de aprendizaje más pequeñas.

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

Referencia: "Métodos adaptativos de 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 normas de gradiente.

    Declaración

    public var accumulator: Model.TangentVector
  • Crea una instancia para 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 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 predeterminado 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)