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). AdaGrad possui 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. Parâmetros que recebem mais atualizações possuem taxas de aprendizado menores.
AdaGrad adapta individualmente as taxas de aprendizagem de todos os parâmetros do modelo, dimensionando-os inversamente proporcionais à raiz quadrada da soma dos quadrados das normas de gradiente.
Referência: “Métodos Adaptativos de Subgradiente para Aprendizagem Online e Otimização Estocástica” (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 acumulada dos quadrados das normas de gradiente.
Declaração
public var accumulator: Model.TangentVector
Cria uma instância para
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 acumulada 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)