آداگراد

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)