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)