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