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