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

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