AdaGrad

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 apresentam 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 func update(_ model: inout Model, along direction: Model.TangentVector)
  • Declaração

    public required init(copying other: AdaGrad, to device: Device)