АдаГрад

public class AdaGrad<Model: Differentiable>: Optimizer
where
  Model.TangentVector: VectorProtocol & PointwiseMultiplicative
    & ElementaryFunctions & KeyPathIterable,
  Model.TangentVector.VectorSpaceScalar == Float

Оптимизатор AdaGrad.

Реализует алгоритм оптимизации AdaGrad (адаптивный градиент). AdaGrad имеет скорость обучения для конкретных параметров, которая адаптируется в зависимости от того, как часто параметры обновляются во время обучения. Параметры, которые получают больше обновлений, имеют меньшую скорость обучения.

AdaGrad индивидуально адаптирует скорость обучения всех параметров модели, масштабируя их обратно пропорционально квадратному корню из текущей суммы квадратов норм градиента.

Ссылка: «Адаптивные субградиентные методы для онлайн-обучения и стохастической оптимизации» (Дучи и др., 2011).

  • Декларация

    public typealias Model = Model
  • Скорость обучения.

    Декларация

    public var learningRate: Float
  • К знаменателю добавлен небольшой скаляр для улучшения численной стабильности.

    Декларация

    public var epsilon: Float
  • Текущая сумма квадратов норм градиента.

    Декларация

    public var accumulator: Model.TangentVector
  • Создает экземпляр для model .

    Декларация

    public init(
      for model: __shared Model,
      learningRate: Float = 1e-3,
      initialAccumulatorValue: Float = 0.1,
      epsilon: Float = 1e-8
    )

    Параметры

    learningRate

    Скорость обучения. Значение по умолчанию — 1e-3 .

    initialAccumulatorValue

    Начальное значение текущей суммы квадратов норм градиента. Значение по умолчанию — 0.1 .

    epsilon

    К знаменателю добавлен небольшой скаляр для улучшения численной стабильности. Значение по умолчанию — 1e-8 .

  • Декларация

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Декларация

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