اداغراد

public class AdaGrad<Model: Differentiable>: Optimizer
where
  Model.TangentVector: VectorProtocol & PointwiseMultiplicative
    & ElementaryFunctions & KeyPathIterable,
  Model.TangentVector.VectorSpaceScalar == Float

محسن AdaGrad.

ينفذ خوارزمية تحسين AdaGrad (التدرج التكيفي). يتمتع AdaGrad بمعدلات تعلم خاصة بالمعلمات، والتي يتم تكييفها وفقًا لعدد مرات تحديث المعلمات أثناء التدريب. المعلمات التي تتلقى المزيد من التحديثات لها معدلات تعلم أقل.

يقوم AdaGrad بتكييف معدلات التعلم لجميع معلمات النموذج بشكل فردي عن طريق قياسها بما يتناسب عكسيًا مع الجذر التربيعي للمجموع الجاري لمربعات معايير التدرج.

المرجع: "أساليب التدرج التكيفي للتعلم عبر الإنترنت والتحسين العشوائي" (Duchi وآخرون، 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)