public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Um otimizador estocástico de descida gradiente (SGD).
Implementa o algoritmo estocástico de descida de gradiente com suporte para impulso, queda da taxa de aprendizagem e impulso de Nesterov. Momentum e Nesterov momentum (também conhecido como método de gradiente acelerado de Nesterov) são métodos de otimização de primeira ordem que podem melhorar a velocidade de treinamento e a taxa de convergência da descida do gradiente.
Referências:
- “Um Método de Aproximação Estocástica” (Robbins e Monro, 1951)
- “Sobre o Método de Aproximação Estocástica de Robbins e Monro” (Wolfowitz, 1952)
- “Estimativa estocástica do máximo de uma função de regressão” (Kiefer e Wolfowitz, 1952)
- “Alguns métodos para acelerar a convergência do método de iteração” (Polyak, 1964)
- “Um método para problema de minimização convexa irrestrita com taxa de convergência” (Nesterov, 1983)
Declaração
public typealias Model = Model
A taxa de aprendizagem.
Declaração
public var learningRate: Float
O fator impulso. Ele acelera a descida do gradiente estocástico na direção relevante e amortece as oscilações.
Declaração
public var momentum: Float
A queda da taxa de aprendizagem.
Declaração
public var decay: Float
Use o momento de Nesterov se for verdade.
Declaração
public var nesterov: Bool
O estado de velocidade do modelo.
Declaração
public var velocity: Model.TangentVector
O conjunto de passos dados.
Declaração
public var step: Int
Cria uma instância para
model
.Declaração
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
Parâmetros
learningRate
A taxa de aprendizagem. O valor padrão é
0.01
.momentum
O fator de momento que acelera a descida do gradiente estocástico na direção relevante e amortece as oscilações. O valor padrão é
0
.decay
A queda da taxa de aprendizagem. O valor padrão é
0
.nesterov
Use o momento de Nesterov se for
true
. O valor padrão étrue
.Declaração
public required init(copying other: SGD, to device: Device)