AdaDelta

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

Un optimizador AdaDelta.

Implementa el algoritmo de optimización AdaDelta. AdaDelta es un método de descenso de gradiente estocástico basado en la información de primer orden. Adapta las tasas de aprendizaje en función de una ventana móvil de actualizaciones de gradientes, en lugar de acumular todos los gradientes anteriores. Por lo tanto, AdaDelta continúa aprendiendo incluso cuando se han realizado muchas actualizaciones. Se adapta más rápidamente a la dinámica cambiante del espacio de problemas de optimización.

Referencia: “ADADELTA: Un método de aprendizaje adaptativo Rate” (Zeiler, 2012)

  • Declaración

    public typealias Model = Model
  • La tasa de aprendizaje.

    Declaración

    public var learningRate: Float
  • rho

    El factor de desintegración, correspondiente a la fracción de gradiente que se debe mantener en cada paso de tiempo.

    Declaración

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

    Declaración

    public var epsilon: Float
  • La tasa de aprendizaje decae.

    Declaración

    public var decay: Float
  • El paso actual.

    Declaración

    public var step: Int
  • El promedio acumulado de gradientes cuadrados que decae exponencialmente.

    Declaración

    public var averageSquared: Model.TangentVector
  • El parámetro acumulado se actualiza.

    Declaración

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

    Declaración

    public init(
      for model: __shared Model,
      learningRate: Float = 1,
      rho: Float = 0.95,
      epsilon: Float = 1e-6,
      decay: Float = 0
    )

    Parámetros

    learningRate

    La tasa de aprendizaje. El valor predeterminado es 1 .

    rho

    El factor de descomposición. El valor por defecto es 0.95 .

    epsilon

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

    decay

    La tasa de aprendizaje decae. El valor defalut es 0 .

  • Declaración

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

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