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 required init(copying other: AdaGrad, to device: Device)