آداگراد

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

یک بهینه ساز AdaGrad.

الگوریتم بهینه سازی AdaGrad ( گرادیان تطبیقی) را پیاده سازی می کند. AdaGrad دارای نرخ یادگیری پارامترهای خاص است که نسبت به دفعات به روز رسانی پارامترها در طول آموزش تطبیق داده می شود. پارامترهایی که به روز رسانی بیشتری دریافت می کنند، نرخ یادگیری کمتری دارند.

AdaGrad به صورت جداگانه نرخ یادگیری همه پارامترهای مدل را با مقیاس معکوس نسبت معکوس با جذر مجموع مجذورهای هنجارهای گرادیان تطبیق می دهد.

مرجع: «روش‌های زیرگروهی تطبیقی ​​برای یادگیری آنلاین و بهینه‌سازی تصادفی» (دوچی و همکاران، 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)