אדאגראד

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 func update(_ model: inout Model, along direction: Model.TangentVector)
  • הַצהָרָה

    public required init(copying other: AdaGrad, to device: Device)