گرادیان کاهشی (Gradient Descent):
گرادیان کاهشی (Gradient Descent):
گرادیان کاهشی (Gradient Descent): یکی از مهمترین الگوریتمهای بهینهسازی در یادگیری ماشین است. این الگوریتم مانند یک کوهنورد عمل میکند که به دنبال پایینترین نقطه در یک دره (حداقل تابع هزینه) است. در این مقاله آموزشی، به طور کامل به بررسی گرادیان کاهشی میپردازیم: از مفهوم پایه تا انواع آن، تاثیر عوامل مختلف مانند نرخ یادگیری و مقیاسبندی ویژگیها، و نکات عملی برای استفاده بهتر.
این مقاله برای مبتدیان و کسانی که میخواهند درک عمیقتری داشته باشند، طراحی شده است. همراه با مثالهای تصویری پیش میرویم تا مفاهیم بهتر جا بیفتند.
گرادیان کاهشی چیست؟
گرادیان کاهشی الگوریتمی تکراری است که برای حداقل کردن تابع هزینه (Cost Function یا Loss Function) استفاده میشود. تابع هزینه نشاندهنده خطای مدل است و هدف ما پیدا کردن پارامترهای مدل (مانند وزنها θ) است که این خطا را به حداقل برساند.

- Global Minimum: پایینترین نقطه مطلق در کل فضای تابع هزینه (بهترین جواب ممکن).
- Local Minimum: حداقل محلی که ممکن است بهترین نباشد (مدل در آن گیر کند).
- Saddle Point: نقطهای که در برخی جهتها حداقل و در برخی حداکثر است.
الگوریتم از یک نقطه اولیه تصادفی شروع میکند و گامبهگام در جهت منفی گرادیان (شیب تند) حرکت میکند تا به حداقل برسد.فرمول پایه آپدیت پارامترها:
که در آن:
- نرخ یادگیری (Learning Rate)
- تابع خطا
- w : پارامترهای مدل با همان وزن ها
- : گرادیان تابع هزینه
تاثیر مقیاسبندی ویژگیها (Feature Scaling)
یکی از نکات کلیدی برای عملکرد خوب گرادیان کاهشی، مقیاسبندی ویژگیها است. اگر ویژگیها در بازههای متفاوتی باشند (مثلاً یکی از ۱ تا ۱۰۰ و دیگری از ۰ تا ۱)، contour plot (خطوط همسطح تابع هزینه) بیضوی و کشیده میشود. این باعث میشود مسیر گرادیان کاهشی نوسانی و طولانی شود.

با استفاده از روشهایی مانند StandardScaler یا MinMaxScaler در scikit-learn، ویژگیها را به بازه مشابهی میبریم. نتیجه؟ contour plot دایرهایتر میشود و همگرایی سریعتر و مستقیمتر.
توصیه عملی: همیشه قبل از اعمال گرادیان کاهشی، ویژگیها را مقیاسبندی کنید!
انواع گرادیان کاهشی
سه نوع اصلی وجود دارد که هر کدام مزایا و معایب خود را دارند:

- Batch Gradient Descent:
- از تمام دادههای آموزشی در هر گام استفاده میکند.
- مزایا: دقیق، احتمال رسیدن به global minimum بالا (در توابع convex).
- معایب: کند و حافظهبر (برای دیتاستهای بزرگ مناسب نیست)، احتمال گیر در local minimum.
- Stochastic Gradient Descent (SGD):
- گرادیان کاهشی تصافی در هر گام فقط یک نمونه تصادفی استفاده میکند.
- مزایا: سریع، نویز کمک میکند از local minimum فرار کند، مناسب دیتاستهای بزرگ.
- معایب: مسیر نوسانی، ممکن است دقیق به minimum نرسد، برخی دادهها کمتر دیده شوند.
- Mini-Batch Gradient Descent:
- ترکیبی: در هر گام یک دسته کوچک (batch) تصادفی استفاده میکند (معمولاً ۳۲ تا ۲۵۶ نمونه).
- مزایا: تعادل عالی بین سرعت و دقت، استاندارد در یادگیری عمیق.
در عمل، Mini-Batch بیشترین استفاده را دارد. توضیحات بیشتر
نرخ یادگیری (Learning Rate) و تاثیر آن
نرخ یادگیری ( ) اندازه گامها را تعیین میکند:
- کوچک: گامهای کوچک : همگرایی آهسته اما مطمئن، احتمال گیر در local minimum کمتر (اما زمان زیاد).
- بزرگ: گامهای بزرگ : سریعتر، اما ممکن است از minimum پرش کند و diverge شود.
- بهینه: تعادل ایدهآل.


چگونه بهترین () را پیدا کنیم؟
- از ابزارهایی مانند GridSearchCV یا RandomizedSearchCV در scikit-learn استفاده کنید.
- پارامترهای مرتبط:
eta0(نرخ اولیه) وtol(tolerance برای early stopping: اگر تغییرات هزینه کمتر از tol شد، متوقف شود).
تعداد تکرارها (Iterations) و نکات پیشرفته
- تعداد کم: ممکن است به minimum نرسد.
- تعداد زیاد: زمان هدر میرود (درجا زدن پس از همگرایی).
- راهکار: از GridSearch برای
max_iterیاn_iterاستفاده کنید، یا early stopping.
برای SGD، مشکل بهینه نبودن و انتخاب نابرابر دادهها وجود دارد:
- راهحل بهینهسازی: استفاده از Learning Rate Scheduling (مانند Simulated Annealing): نرخ یادگیری را ابتدا بزرگ نگه دارید (کاوش سریع) و به تدریج کاهش دهید (همگرایی دقیق).
- راهحل انتخاب دادهها: در هر epoch، دادهها را shuffle کنید تا همه شانس برابر داشته باشند.
نتیجهگیری
گرادیان کاهشی پایه بسیاری از الگوریتمهای پیشرفته مانند Adam، RMSprop و Momentum است. با درک درست از مقیاسبندی، نرخ یادگیری، نوع GD و scheduling، میتوانید مدلهای خود را سریعتر و دقیقتر آموزش دهید.
