public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Un optimizador de descenso de gradiente estocástico (SGD).
Implementa el algoritmo de descenso de gradiente estocástico con soporte para el impulso, el deterioro de la tasa de aprendizaje y el impulso de Nesterov. Momentum y Momentum Nesterov (también conocido como el método de gradiente acelerado de Nesterov) son métodos de optimización de primer orden que pueden mejorar la velocidad de entrenamiento y la tasa de convergencia del descenso de gradiente.
Referencias:
- “Un estocástico método de aproximación” (Robbins y Monro, 1951)
- “Relativa a la aproximación método estocástico de Robbins y Monro” (Wolfowitz, 1952)
- “Estocástico Estimación del máximo de una función de regresión” (Kiefer y Wolfowitz, 1952)
- “Algunos métodos de acelerar la convergencia del método de iteración” (Polyák, 1964)
- “Un método para el problema de la minimización convexa sin restricciones con la tasa de convergencia” (Nesterov, 1983)
Declaración
public typealias Model = Model
La tasa de aprendizaje.
Declaración
public var learningRate: Float
El factor de impulso. Acelera el descenso de gradiente estocástico en la dirección relevante y amortigua las oscilaciones.
Declaración
public var momentum: Float
La tasa de aprendizaje decae.
Declaración
public var decay: Float
Utilice el impulso de Nesterov si es cierto.
Declaración
public var nesterov: Bool
El estado de velocidad del modelo.
Declaración
public var velocity: Model.TangentVector
El conjunto de pasos dados.
Declaración
public var step: Int
Crea una instancia de
model
.Declaración
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
Parámetros
learningRate
La tasa de aprendizaje. El valor predeterminado es
0.01
.momentum
El factor de impulso que acelera el descenso del gradiente estocástico en la dirección relevante y amortigua las oscilaciones. El valor por defecto es
0
.decay
La tasa de aprendizaje decae. El valor por defecto es
0
.nesterov
Uso Nesterov impulso si y sólo si
true
. El valor por defecto estrue
.Declaración
public required init(copying other: SGD, to device: Device)