گرادیان کاهشی Gradient Descent

سوالات و پاسخ تشریحی MSRT
آوریل 8, 2025
سوالات گرامر MSRT
آوریل 30, 2025

گرادیان کاهشی Gradient Descent

نزول گرادیانی در یادگیری ماشین

نزول گرادیانی به عنوان یکی از پرکاربردترین الگوریتم‌های بهینه‌سازی شناخته می‌شود که برای آموزش مدل‌های یادگیری ماشین با هدف کمینه کردن خطاها بین نتایج واقعی و مورد انتظار استفاده می‌شود. علاوه بر این، نزول گرادیانی برای آموزش شبکه‌های عصبی نیز به کار می‌رود.

در اصطلاح ریاضی، الگوریتم بهینه‌سازی به وظیفه کمینه‌سازی یا بیشینه‌سازی یک تابع هدف f(x) که توسط x پارامتری شده است، اشاره دارد. به طور مشابه، در یادگیری ماشین، بهینه‌سازی وظیفه کمینه‌سازی تابع هزینه‌ای است که توسط پارامترهای مدل پارامتری شده است. هدف اصلی نزول گرادیانی کمینه کردن تابع محدب با استفاده از تکرار به‌روزرسانی‌های پارامتر است. هنگامی که این مدل‌های یادگیری ماشین بهینه شوند، می‌توانند به عنوان ابزارهای قدرتمندی برای هوش مصنوعی و کاربردهای مختلف علوم کامپیوتر استفاده شوند.

در این آموزش درباره نزول گرادیانی در یادگیری ماشین، ما به طور مفصل درباره نزول گرادیانی، نقش توابع هزینه به‌ویژه به عنوان معیاری در یادگیری ماشین، انواع نزول گرادیانی، نرخ‌های یادگیری و غیره یاد خواهیم گرفت.

نزول گرادیانی یا نزول تند چیست؟

نزول گرادیانی ابتدا توسط “آگوستین-لویی کوشی” در اواسط قرن هجدهم کشف شد. نزول گرادیانی به عنوان یکی از پرکاربردترین الگوریتم‌های بهینه‌سازی تکراری در یادگیری ماشین تعریف می‌شود که برای آموزش مدل‌های یادگیری ماشین و یادگیری عمیق به کار می‌رود. این الگوریتم به یافتن کمینه محلی یک تابع کمک می‌کند.

بهترین راه برای تعریف کمینه محلی یا بیشینه محلی یک تابع با استفاده از نزول گرادیانی به شرح زیر است:

  • اگر به سمت گرادیان منفی یا دور از گرادیان تابع در نقطه فعلی حرکت کنیم، کمینه محلی آن تابع را به دست می‌آوریم.
  • هرگاه به سمت گرادیان مثبت یا به سمت گرادیان تابع در نقطه فعلی حرکت کنیم، بیشینه محلی آن تابع را به دست خواهیم آورد.

این فرآیند به طور کلی به نام صعود گرادیانی شناخته می‌شود که به نزول تند نیز معروف است. هدف اصلی استفاده از الگوریتم نزول گرادیانی کمینه کردن تابع هزینه با استفاده از تکرار است. برای دستیابی به این هدف، این الگوریتم به طور تکراری دو گام را انجام می‌دهد:

  1. مشتق مرتبه اول تابع را محاسبه می‌کند تا گرادیان یا شیب آن تابع را به دست آورد.
  2. از جهت گرادیان دور می‌شود، به این معنا که شیب از نقطه فعلی به اندازه آلفا برابر افزایش می‌یابد، جایی که آلفا به عنوان نرخ یادگیری تعریف می‌شود. این یک پارامتر تنظیم در فرآیند بهینه‌سازی است که به تعیین طول گام‌ها کمک می‌کند.

تابع هزینه چیست؟

تابع هزینه به عنوان معیاری برای اندازه‌گیری تفاوت یا خطا بین مقادیر واقعی و مقادیر مورد انتظار در موقعیت فعلی تعریف می‌شود و به صورت یک عدد حقیقی واحد ارائه می‌شود. این تابع به افزایش و بهبود کارایی یادگیری ماشین کمک می‌کند، زیرا بازخوردی به مدل ارائه می‌دهد تا بتواند خطا را کمینه کند و کمینه محلی یا سراسری را پیدا کند. علاوه بر این، این تابع به طور مداوم در جهت گرادیان منفی تکرار می‌شود تا زمانی که تابع هزینه به صفر نزدیک شود. در این نقطه نزول تند، مدل دیگر یادگیری را ادامه نمی‌دهد. اگرچه تابع هزینه و تابع زیان مترادف در نظر گرفته می‌شوند، اما تفاوت جزئی بین آن‌ها وجود دارد. تفاوت اندک بین تابع زیان و تابع هزینه مربوط به خطا در آموزش مدل‌های یادگیری ماشین است، زیرا تابع زیان به خطای یک نمونه آموزشی اشاره دارد، در حالی که تابع هزینه میانگین خطا را در کل مجموعه آموزشی محاسبه می‌کند.

تابع هزینه پس از ایجاد یک فرضیه با پارامترهای اولیه محاسبه می‌شود و این پارامترها با استفاده از الگوریتم‌های نزول گرادیانی بر روی داده‌های شناخته‌شده اصلاح می‌شوند تا تابع هزینه کاهش یابد.

فرضیه:
پارامترها:
تابع هزینه:
هدف:

نزول گرادیانی چگونه کار می‌کند؟

پیش از شروع توضیح اصل کار نزول گرادیانی، باید برخی مفاهیم پایه را بدانیم تا شیب یک خط را از رگرسیون خطی پیدا کنیم. معادله رگرسیون خطی ساده به صورت زیر است:
Y = mX + c
که در آن “m” شیب خط و “c” نقطه تقاطع محور y را نشان می‌دهد.

نقطه شروع (که در شکل بالا نشان داده شده است) برای ارزیابی عملکرد استفاده می‌شود، زیرا صرفاً به عنوان یک نقطه دلخواه در نظر گرفته می‌شود. در این نقطه شروع، مشتق اول یا شیب را محاسبه می‌کنیم و سپس از یک خط مماس برای محاسبه تندی این شیب استفاده می‌کنیم. در ادامه، این شیب به‌روزرسانی پارامترها (وزن‌ها و بایاس) را اطلاع می‌دهد.

شیب در نقطه شروع یا نقطه دلخواه تندتر می‌شود، اما هرگاه پارامترهای جدیدی تولید شوند، تندی به تدریج کاهش می‌یابد و در پایین‌ترین نقطه، به نقطه همگرایی نزدیک می‌شود که به آن نقطه همگرایی می‌گویند.

هدف اصلی نزول گرادیانی کمینه کردن تابع هزینه یا خطا بین مقادیر مورد انتظار و واقعی است. برای کمینه کردن تابع هزینه، به دو نقطه داده نیاز است:

  • جهت و نرخ یادگیری
    این دو عامل برای تعیین محاسبه مشتق جزئی در تکرارهای آینده و هدایت آن به نقطه همگرایی یا کمینه محلی یا سراسری استفاده می‌شوند. بیایید عامل نرخ یادگیری را به طور خلاصه بررسی کنیم:

نرخ یادگیری:
نرخ یادگیری به عنوان اندازه گام‌هایی که برای رسیدن به کمینه یا پایین‌ترین نقطه برداشته می‌شود، تعریف می‌شود. این معمولاً یک مقدار کوچک است که بر اساس رفتار تابع هزینه ارزیابی و به‌روزرسانی می‌شود. اگر نرخ یادگیری بالا باشد، گام‌های بزرگ‌تری ایجاد می‌کند اما خطر عبور از کمینه را به همراه دارد. در عین حال، نرخ یادگیری پایین گام‌های کوچک‌تری را نشان می‌دهد که کارایی کلی را به خطر می‌اندازد اما دقت بیشتری ارائه می‌دهد.

انواع نزول گرادیانی

بر اساس خطا در مدل‌های آموزشی مختلف، الگوریتم یادگیری نزول گرادیانی به سه دسته تقسیم می‌شود: نزول گرادیانی دسته‌ای، نزول گرادیانی تصادفی و نزول گرادیانی مینی‌بچ. بیایید این انواع مختلف نزول گرادیانی را درک کنیم:

نزول گرادیانی دسته‌ای (Batch Gradient Descent):
نزول گرادیانی دسته‌ای (BGD) برای یافتن خطا برای هر نقطه در مجموعه آموزشی استفاده می‌شود و مدل پس از ارزیابی تمام نمونه‌های آموزشی به‌روزرسانی می‌شود. این فرآیند به عنوان دوره آموزشی (training epoch) شناخته می‌شود. به زبان ساده، این یک رویکرد حریصانه است که در آن باید برای هر به‌روزرسانی روی همه نمونه‌ها جمع‌بندی کنیم.

    مزایای نزول گرادیانی دسته‌ای:

    • نسبت به سایر نزول‌های گرادیانی نویز کمتری تولید می‌کند.
    • همگرایی پایدار نزول گرادیانی را فراهم می‌کند.
    • از نظر محاسباتی کارآمد است زیرا همه منابع برای تمام نمونه‌های آموزشی استفاده می‌شوند.

    نزول گرادیانی تصادفی (Stochastic Gradient Descent):
    نزول گرادیانی تصادفی (SGD) نوعی از نزول گرادیانی است که در هر تکرار یک نمونه آموزشی را اجرا می‌کند. به عبارت دیگر، برای هر نمونه در یک مجموعه داده، یک دوره آموزشی را پردازش می‌کند و پارامترهای هر نمونه آموزشی را یک به یک به‌روزرسانی می‌کند. از آنجا که فقط یک نمونه آموزشی در هر زمان نیاز دارد، ذخیره‌سازی آن در حافظه تخصیص‌یافته آسان‌تر است. با این حال، در مقایسه با سیستم‌های دسته‌ای، برخی از کارایی محاسباتی را از دست می‌دهد زیرا به‌روزرسانی‌های مکرر نیاز به جزئیات و سرعت بیشتری دارند. علاوه بر این، به دلیل به‌روزرسانی‌های مکرر، به عنوان یک گرادیان پر سر و صدا نیز شناخته می‌شود. با این حال، گاهی اوقات این می‌تواند در یافتن کمینه سراسری و فرار از کمینه محلی مفید باشد.

      مزایای نزول گرادیانی تصادفی:

      • یادگیری در هر نمونه اتفاق می‌افتد و شامل چند مزیت نسبت به سایر نزول‌های گرادیانی است.
      • تخصیص آن در حافظه مورد نظر آسان‌تر است.
      • نسبت به نزول گرادیانی دسته‌ای محاسبه سریع‌تری دارد.
      • برای مجموعه داده‌های بزرگ کارآمدتر است.

      نزول گرادیانی مینی‌بچ (Mini-Batch Gradient Descent):
      نزول گرادیانی مینی‌بچ ترکیبی از نزول گرادیانی دسته‌ای و تصادفی است. این روش مجموعه داده‌های آموزشی را به دسته‌های کوچک تقسیم می‌کند و سپس به‌روزرسانی‌ها را روی این دسته‌ها به طور جداگانه انجام می‌دهد. تقسیم مجموعه داده‌های آموزشی به دسته‌های کوچک‌تر تعادلی را برای حفظ کارایی محاسباتی نزول گرادیانی دسته‌ای و سرعت نزول گرادیانی تصادفی ایجاد می‌کند. بنابراین، می‌توانیم نوع خاصی از نزول گرادیانی را با کارایی محاسباتی بالاتر و نزول گرادیانی کمتر پر سر و صدا به دست آوریم.

        مزایای نزول گرادیانی مینی‌بچ:

        • تخصیص آن در حافظه آسان‌تر است.
        • از نظر محاسباتی کارآمد است.
        • همگرایی پایدار نزول گرادیانی را فراهم می‌کند.

        چالش‌ها با نزول گرادیانی

        اگرچه می‌دانیم نزول گرادیانی یکی از محبوب‌ترین روش‌ها برای مسائل بهینه‌سازی است، اما همچنان برخی چالش‌ها دارد. چند چالش به شرح زیر است:

        کمینه‌های محلی و نقاط زینی:
        برای مسائل محدب، نزول گرادیانی می‌تواند کمینه سراسری را به راحتی پیدا کند، در حالی که برای مسائل غیرمحدب، گاهی اوقات یافتن کمینه سراسری دشوار است، جایی که مدل‌های یادگیری ماشین بهترین نتایج را به دست می‌آورند.

          هرگاه شیب تابع هزینه صفر یا نزدیک به صفر باشد، این مدل یادگیری را متوقف می‌کند. علاوه بر کمینه سراسری، برخی سناریوها وجود دارند که می‌توانند این شیب را نشان دهند، یعنی نقاط زینی و کمینه‌های محلی. کمینه‌های محلی شکلی مشابه کمینه سراسری ایجاد می‌کنند، جایی که شیب تابع هزینه در هر دو طرف نقطه فعلی افزایش می‌یابد.

          در مقابل، با نقاط زینی، گرادیان منفی فقط در یک طرف نقطه رخ می‌دهد، که در یک طرف به بیشینه محلی و در طرف دیگر به کمینه محلی می‌رسد. نام نقطه زینی از زین اسب گرفته شده است.

          نام کمینه‌های محلی به این دلیل است که مقدار تابع زیان در آن نقطه در یک منطقه محلی کمینه است. در مقابل، نام کمینه سراسری به این دلیل داده شده است که مقدار تابع زیان در آنجا، در کل دامنه تابع زیان، کمینه است.

          گرادیان محو شونده و گرادیان انفجاری:
          در یک شبکه عصبی عمیق، اگر مدل با نزول گرادیانی و پس‌انتشار آموزش داده شود، ممکن است دو مشکل دیگر علاوه بر کمینه‌های محلی و نقاط زینی رخ دهد.

            گرادیان محو شونده:
            گرادیان محو شونده زمانی رخ می‌دهد که گرادیان کوچک‌تر از حد انتظار باشد. در طول پس‌انتشار، این گرادیان کوچک‌تر می‌شود و باعث کاهش نرخ یادگیری لایه‌های ابتدایی نسبت به لایه‌های بعدی شبکه می‌شود. هنگامی که این اتفاق می‌افتد، به‌روزرسانی پارامترهای وزن تا زمانی که بی‌اهمیت شوند ادامه می‌یابد.

            گرادیان انفجاری:
            گرادیان انفجاری دقیقاً برعکس گرادیان محو شونده است، زیرا زمانی رخ می‌دهد که گرادیان بیش از حد بزرگ باشد و مدل پایداری ایجاد نکند. علاوه بر این، در این سناریو، وزن‌های مدل افزایش می‌یابد و به صورت NaN نشان داده می‌شوند. این مشکل می‌تواند با استفاده از تکنیک کاهش ابعاد حل شود که به کمینه کردن پیچیدگی درون مدل کمک می‌کند.

            دیدگاهتان را بنویسید

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *