public class SGD<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Float
یک بهینه ساز شیب نزولی تصادفی (SGD).
الگوریتم نزولی گرادیان تصادفی را با پشتیبانی از تکانه، کاهش نرخ یادگیری و تکانه نستروف پیادهسازی میکند. مومنتوم و تکانه نستروف (معروف به روش گرادیان شتابدار نستروف) روش های بهینه سازی مرتبه اول هستند که می توانند سرعت تمرین و نرخ همگرایی نزول گرادیان را بهبود بخشند.
مراجع:
- "روش تقریب تصادفی" (رابینز و مونرو، 1951)
- "در مورد روش تقریب تصادفی رابینز و مونرو" (Wolfowitz، 1952)
- "تخمین تصادفی حداکثر تابع رگرسیون" (کیفر و ولفوویتز، 1952)
- «برخی از روشهای افزایش سرعت همگرایی روش تکرار» (پلیاک، 1964)
- "روشی برای مشکل کمینه سازی محدب نامحدود با نرخ همگرایی" (نستروف، 1983)
اعلامیه
public typealias Model = Model
میزان یادگیری
اعلامیه
public var learningRate: Float
عامل حرکت. این نزول گرادیان تصادفی را در جهت مربوطه تسریع می کند و نوسانات را کاهش می دهد.
اعلامیه
public var momentum: Float
کاهش نرخ یادگیری
اعلامیه
public var decay: Float
اگر درست است از حرکت Nesterov استفاده کنید.
اعلامیه
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
باشد از حرکت Nesterov استفاده کنید. مقدار پیش فرضtrue
است.اعلامیه
public required init(copying other: SGD, to device: Device)