public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
אופטימיזציית AdaGrad.
מיישמת את אלגוריתם האופטימיזציה של AdaGrad (הדרגתי אדפטיבית). ל-AdaGrad יש שיעורי למידה ספציפיים לפרמטרים, המותאמים ביחס לתדירות עדכון הפרמטרים במהלך האימון. לפרמטרים שמקבלים יותר עדכונים יש שיעורי למידה קטנים יותר.
AdaGrad מתאימה באופן אינדיבידואלי את קצבי הלמידה של כל פרמטרי המודל על ידי שינוי קנה מידה הפוך לשורש הריבועי של הסכום השוטף של ריבועים של נורמות שיפוע.
התייחסות: "שיטות משנה אדפטיביות ללמידה מקוונת ואופטימיזציה סטוכסטית" (Duchi et al, 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)