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 required init(copying other: AdaGrad, to device: Device)