public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
מייעל ירידה בשיפוע סטוכסטי (SGD).
מיישם את אלגוריתם הירידה הסטוכסטית עם תמיכה במומנטום, דעיכת קצב למידה ומומנטום Nesterov. מומנטום ומומנטום Nesterov (המכונה גם שיטת השיפוע המואץ של Nesterov) הן שיטות אופטימיזציה מסדר ראשון שיכולות לשפר את מהירות האימון וקצב ההתכנסות של ירידה בשיפוע.
הפניות:
- "שיטת קירוב סטוכסטית" (רובינס ומונרו, 1951)
- "על שיטת הקירוב הסטוכסטי של רובינס ומונרו" (וולפוביץ, 1952)
- "הערכה סטוכסטית של המקסימום של פונקציית רגרסיה" (קיפר ווולפוביץ, 1952)
- "כמה שיטות להאצת שיטת ההתכנסות של איטרציה" (Polyak, 1964)
- "שיטה לבעיית מזעור קמור ללא מגבלה עם קצב ההתכנסות" (Nesterov, 1983)
הַצהָרָה
public typealias Model = Model
קצב הלמידה.
הַצהָרָה
public var learningRate: Float
גורם המומנטום. הוא מאיץ את ירידת השיפוע הסטוכסטי בכיוון הרלוונטי ומשכך תנודות.
הַצהָרָה
public var momentum: Float
קצב הלמידה דעיכה.
הַצהָרָה
public var decay: Float
השתמש במומנטום Nesterov אם זה נכון.
הַצהָרָה
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
השתמש במומנטום Nesterov אם
true
. ערך ברירת המחדל הואtrue
.הַצהָרָה
public required init(copying other: SGD, to device: Device)