public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
Stokastik bir gradyan iniş (SGD) iyileştiricisi.
Momentum, öğrenme hızı azalması ve Nesterov momentumu desteğiyle stokastik gradyan iniş algoritmasını uygular. Momentum ve Nesterov momentumu (diğer adıyla Nesterov hızlandırılmış gradyan yöntemi), gradyan inişinin eğitim hızını ve yakınsama oranını artırabilen birinci dereceden optimizasyon yöntemleridir.
Referanslar:
- “Stokastik Bir Yaklaşım Yöntemi” (Robbins ve Monro, 1951)
- “Robbins ve Monro'nun Stokastik Yaklaşım Yöntemi Üzerine” (Wolfowitz, 1952)
- “Bir Regresyon Fonksiyonunun Maksimumunun Stokastik Tahmini” (Kiefer ve Wolfowitz, 1952)
- “İterasyon yönteminde yakınsamayı hızlandırmanın bazı yöntemleri” (Polyak, 1964)
- “Yakınsama oranıyla sınırlandırılmamış dışbükey minimizasyon problemi için bir yöntem” (Nesterov, 1983)
beyan
public typealias Model = Model
Öğrenme oranı.
beyan
public var learningRate: Float
Momentum faktörü. İlgili yönde stokastik gradyan inişini hızlandırır ve salınımları azaltır.
beyan
public var momentum: Float
Öğrenme hızının azalması.
beyan
public var decay: Float
Doğruysa Nesterov momentumunu kullanın.
beyan
public var nesterov: Bool
Modelin hız durumu.
beyan
public var velocity: Model.TangentVector
Atılan adımlar dizisi.
beyan
public var step: Int
model
için bir örnek oluşturur.beyan
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
Parametreler
learningRate
Öğrenme oranı. Varsayılan değer
0.01
.momentum
İlgili yönde stokastik gradyan inişini hızlandıran ve salınımları sönümleyen momentum faktörü. Varsayılan değer
0
.decay
Öğrenme hızının azalması. Varsayılan değer
0
.nesterov
true
Nesterov momentumunu kullanın. Varsayılan değertrue
.beyan
public required init(copying other: SGD, to device: Device)