public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
محسن النسب التدرج العشوائي (SGD).
يطبق خوارزمية النسب التدرج العشوائي مع دعم الزخم، وتناقص معدل التعلم، وزخم نيستيروف. يعد الزخم وزخم نيستيروف (المعروف أيضًا باسم طريقة التدرج المتسارع لنيستيروف) من أساليب التحسين من الدرجة الأولى التي يمكنها تحسين سرعة التدريب ومعدل التقارب في نزول التدرج.
مراجع:
- "طريقة التقريب العشوائي" (روبنز ومونرو، 1951)
- "حول طريقة التقريب العشوائي لروبنز ومونرو" (ولفويتز، 1952)
- "التقدير العشوائي للحد الأقصى لدالة الانحدار" (كيفر وولفويتز، 1952)
- "بعض طرق تسريع تقارب أسلوب التكرار" (بولياك، 1964)
- "طريقة لمشكلة التقليل المحدب غير المقيد مع معدل التقارب" (نيستيروف، 1983)
تصريح
public typealias Model = Model
معدل التعلم.
تصريح
public var learningRate: Float
عامل الزخم. فهو يعمل على تسريع نزول التدرج العشوائي في الاتجاه ذي الصلة ويخفف من التذبذبات.
تصريح
public var momentum: Float
انخفاض معدل التعلم.
تصريح
public var decay: Float
استخدم زخم نيستيروف إذا كان صحيحًا.
تصريح
public var nesterov: Bool
حالة سرعة النموذج
تصريح
public var velocity: Model.TangentVector
مجموعة الخطوات المتخذة.
تصريح
public var step: Int
يقوم بإنشاء مثيل
model
.تصريح
public init( for model: __shared Model, learningRate: Float = 0.01, momentum: Float = 0, decay: Float = 0, nesterov: Bool = false )
حدود
learningRate
معدل التعلم. القيمة الافتراضية هي
0.01
.momentum
عامل الزخم الذي يسرع نزول التدرج العشوائي في الاتجاه ذي الصلة ويخفف التذبذبات. القيمة الافتراضية هي
0
.decay
انخفاض معدل التعلم. القيمة الافتراضية هي
0
.nesterov
استخدم زخم نيستيروف إذا كان
true
. القيمة الافتراضيةtrue
.تصريح
public required init(copying other: SGD, to device: Device)