Gradient Descent
آموزش گرادیان کاهشی: بهینهسازی تابع خطا، نرخ یادگیری و انواع SGD و Mini-Batch
Gradient Descent چیست؟
موتور آموزش اکثر الگوریتمهای ML! روشی برای یافتن کمینه تابع خطا گامبهگام.
تشبیه کوهستان
در کوه، در مه شدید، پایینترین نقطه را میخواهی. چه میکنی؟ شیب زمین زیر پایت را حس میکنی و یک قدم در جهت پایینترین شیب برمیداری. این کار را تکرار میکنی تا به دره برسی!
فرمول
پارامتر_جدید = پارامتر - نرخ_یادگیری × گرادیان
θ = θ - α × ∇J(θ)
- گرادیان (∇J): جهت صعود خطا؛ ما خلافش میرویم
- نرخ یادگیری (α): اندازه قدم
نرخ یادگیری؛ مهمترین هایپرپارامتر
| نرخ | نتیجه |
|---|---|
| خیلی کوچک | آموزش کُند؛ شاید هرگز نرسد |
| مناسب ✅ | همگرایی سریع و پایدار |
| خیلی بزرگ | واگرایی! خطا به جای کم شدن، بیشتر میشود |
انواع Gradient Descent
- Batch GD: گرادیان روی کل داده — دقیق ولی کند
- Stochastic GD (SGD): گرادیان روی یک نمونه — سریع ولی پرنوسان
- Mini-Batch GD: روی دستههای ۳۲/۶۴/۱۲۸ نمونه — بهترین تعادل (استاندارد شبکه عصبی)
در scikit-learn
from sklearn.linear_model import SGDClassifier
model = SGDClassifier(learning_rate="optimal", max_iter=1000)
model.fit(X_train, y_train)
اگر خطا نوسان شدید دارد، نرخ یادگیری را کم کنید. اگر خیلی کند است، زیاد کنید. مقادیر رایج: ۰.۱، ۰.۰۱، ۰.۰۰۱
جمعبندی
- GD با گامهای کوچک خلاف گرادیان، کمینه خطا را مییابد
- نرخ یادگیری: نه خیلی بزرگ (واگرایی)، نه خیلی کوچک (کندی)
- Mini-Batch تعادل سرعت و پایداری است
این مبحث بخشی از دوره آموزش کامل ماشین لرنینگ است.