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 required init(copying other: AdaGrad, to device: Device)