public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Оптимизатор стохастического градиентного спуска (SGD).
Реализует алгоритм стохастического градиентного спуска с поддержкой импульса, затухания скорости обучения и импульса Нестерова. Импульс и импульс Нестерова (также известный как метод ускоренного градиента Нестерова) — это методы оптимизации первого порядка, которые могут улучшить скорость обучения и скорость сходимости градиентного спуска.
Ссылки:
- «Метод стохастической аппроксимации» (Роббинс и Монро, 1951 г.)
- «О методе стохастической аппроксимации Роббинса и Монро» (Вольфовиц, 1952 г.)
- «Стохастическая оценка максимума функции регрессии» (Кифер и Вулфовиц, 1952 г.)
- «Некоторые способы ускорения сходимости итерационного метода» (Поляк, 1964)
- «Метод безусловной задачи выпуклой минимизации со скоростью сходимости» (Нестеров, 1983)
Декларация
public typealias Model = Model
Скорость обучения.
Декларация
public var learningRate: Float
Фактор импульса. Он ускоряет стохастический градиентный спуск в соответствующем направлении и гасит колебания.
Декларация
public var momentum: Float
Скорость обучения снижается.
Декларация
public var decay: Float
Используйте импульс Нестерова, если это правда.
Декларация
public var nesterov: Bool
Скоростное состояние модели.
Декларация
public var velocity: Model.TangentVector
Набор предпринятых шагов.
Декларация
public var step: Int
Создает экземпляр для
model
.Декларация
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
Параметры
learningRate
Скорость обучения. Значение по умолчанию —
0.01
.momentum
Фактор импульса, который ускоряет стохастический градиентный спуск в соответствующем направлении и гасит колебания. Значение по умолчанию —
0
.decay
Скорость обучения снижается. Значение по умолчанию —
0
.nesterov
Используйте импульс Нестерова, если это
true
. Значение по умолчанию —true
.Декларация
public required init(copying other: SGD, to device: Device)