public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Um otimizador AdaGrad.
Implementa o algoritmo de otimização AdaGrad (gradiente adaptativo). O AdaGrad tem taxas de aprendizagem específicas de parâmetros, que são adaptadas em relação à frequência com que os parâmetros são atualizados durante o treinamento. Os parâmetros que recebem mais atualizações têm taxas de aprendizado menores.
O AdaGrad adapta individualmente as taxas de aprendizado de todos os parâmetros do modelo, escalando-os inversamente proporcionais à raiz quadrada da soma contínua dos quadrados das normas de gradiente.
Referência: “Adaptive Métodos subgradiente para a aprendizagem online e estocásticos de otimização” (Duchi et al, 2011)
Declaração
public typealias Model = Model
A taxa de aprendizagem.
Declaração
public var learningRate: Float
Um pequeno escalar adicionado ao denominador para melhorar a estabilidade numérica.
Declaração
public var epsilon: Float
A soma contínua dos quadrados das normas de gradiente.
Declaração
public var accumulator: Model.TangentVector
Cria uma instância de
model
.Declaração
public init( for model: __shared Model, learningRate: Float = 1e-3, initialAccumulatorValue: Float = 0.1, epsilon: Float = 1e-8 )
Parâmetros
learningRate
A taxa de aprendizagem. O valor padrão é
1e-3
.initialAccumulatorValue
O valor inicial para a soma contínua dos quadrados das normas de gradiente. O valor padrão é
0.1
.epsilon
Um pequeno escalar adicionado ao denominador para melhorar a estabilidade numérica. O valor padrão é
1e-8
.Declaração
public required init(copying other: AdaGrad, to device: Device)