مفهوم الگوریتم گرادیان نزولی Descent Gradient Algorithm Intuition – قسمت نهم دوره یادگیری ماشین دانشگاه استنفورد

مفهوم الگوریتم گرادیان نزولی Descent Gradient Algorithm Intuition – قسمت نهم دوره یادگیری ماشین دانشگاه استنفورد

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

یادآوری آنچه در جلسه قبل از الگوریتم گرادیان نزولی گذشت

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

  \( \Large (For J= 0  ,  J =1) \)  \( \Large \theta_{j}:= \theta_{j}- \alpha \frac {\partial 1}{\partial \theta_{j}} J(\theta_{1},\theta_{0})  \)

همانطور که قبلا توضیح دادیم، این معادله دارای سه جزء اصلی زیر است:

  • علامت \( \Large :=   \)
  • آلفا ( نرخ یادگیری) : بزرگی قدم‌ها
  • بخش مشتق عبارت

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

\( \Large temp0:= \theta_{0}- \alpha \frac{\partial 1}{\partial \theta_{0}} J(\theta_{1},\theta_{0}) \)

\( \Large temp1:= \theta_{1}- \alpha \frac{\partial 1}{\partial \theta_{1}} J(\theta_{1},\theta_{0}) \)

\( \Large \theta_{0}:=temp0  \)

\( \Large \theta_{1}:=temp1  \)

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

مثالی برای بررسی مفهوم الگوریتم گرادیان نزولی

برای درک بهتر رابطه میان آلفا و مشتق عبارت، تابعی تعریف می‌کنیم. فرض کنید کنید تابع هزینه \( \Large  J \) با یک پارامتر داریم و مطابق فرآیند جلسه قبل قصد داریم آن را بهینه کنیم.

فرض مسئله:

\( \Large J ( \theta_{1}) \)

حکم مسئله:

\( \LARGE J ( \theta_{1}) \)  \( \Large \begin{align}
& minimize   \\
& \theta_{1}
\end{align} \)

در این مسئله الگوریتم گرادیان نزولی را برای تابعی با یک پارامتر به کار می‌بریم. \( \Large  \theta_{1} \) نیز متعلق به اعداد حقیقی است. برای نمایش راحت‌تر مطلب روی کاغذ از یک پارامتر استفاده می‌کنیم.

بررسی نموداری مفهوم الگوریتم گرادیان نزولی

نمودار زیر تابع \( \LARGE J ( \theta_{1}) \)  را نشان می‌دهد. همانطور که قبلا گفتیم، \( \Large  \theta_{1} \) یک اعداد حقیقی است و در شکل زیر نشان داده شده است.


شکل۱: نمودار تابع J

قبلا الگوریتم گرادیان نزولی را تعریف کردیم. مفهوم الگوریتم گرادیان نزولی به شکل زیر خواهد بود:

  \( \Large \theta_{1}:= \theta_{1}- \alpha \frac {d}{d \theta{1}} J(\theta_{1})  \)

شاید برای‌تان سوال پیش آمده باشد که چرا از \( \LARGE  {d} \)  استفاده کردیم؟ زمانی که بخواهیم مشتق جزئی به کار ببریم از  \( \Large \frac {\partial 1}{\partial \theta_{1}} \) استفاده می‌کنیم. در این جلسه هر دو این علامت‌ها معنای یکسانی دارند.

حتما بخوانید:  الگوریتم گرادیان نزولی Gradient Descent Algorithm - قسمت هشتم دوره یادگیری ماشین دانشگاه استنفورد

مفهوم مشتق در مفهوم الگوریتم گرادیان نزولی

همانگونه که دیدید در مفهوم الگوریتم گرادیان نزولی، از مشتق استفاده می‌کنیم. نمی‌دانم چقدر با حسابان آشنایی دارید، امّا زمانی که از مشتق یک نقطه در نمودار صحبت می‌کنیم منظورمان تانژانت آن نقطه است. شاید درک تانژانت سخت باشد. بهتر است بگوییم منظورمان همان خط مماس بر نقطه در نمودار تابع است. برای مثال شکل زیر مشتق را در نقطه\( \LARGE ( \theta_{1}) \)  نشان می‌دهد:

مفهوم مشتق در الگوریتم گرادیان نزولی با یک پارامتر
شکل۲: مفهوم خط مماس بر سهمی

خط مماس در تصویر بالا مشخص شده است. شیب این خط از اینجا   \( \Large \frac {d}{d \theta{1}} J(\theta_{1})  \) تعیین می‌شود. همانطور که می‌بینید، این خط صعودی است و شیب آن مثبت است. بنابراین مشتق آن نیز مثبت است. همچنین می‌دانیم مقدار آلفا نیز مثبت است، پس حاصل ضرب آلفا در مشتق عبارت نیز مثبت خواهد بود. باتوجه به مثبت بودن حاصل ضرب و مطابق فرمول مفهوم الگوریتم گرادیان نزولی، در نهایت \( \LARGE  ( \theta_{1}) \) کاهش می‌یابد. مقدار \( \LARGE  ( \theta_{1}) \) آپدیت می‌شود و به سمت چپ حرکت می‌کند. خب این درست است زیرا با این کار به سمت نقطه مینیمم تابع حرکت می‌کنیم.

مثال برای درک مفهوم مشتق در مفهوم الگوریتم گرادیان نزولی

در نمونه قبل نقطه \( \LARGE( \theta_{1}) \) را در سمت راست نقطه مینیمم انتخاب کردیم. این‌بار سمت چپ را در نظر می‌گیریم. مطابق شکل زیر:

مفهوم خط مماس در الگوریتم گرادیان نزولی با یک پارامترشکل۳: تصویر تابع \( \LARGE J\) با نقطه \( \LARGE  \theta_{1} \) در سمت چپ

خط مماس یا همان مشتق در این نقطه، به شکل زیر است:

مفهوم خط مماس در الگوریتم گرادیان نزولی با یک پارامترشکل۴: خط مماس در نقطه \( \LARGE  \theta_{1} \)

خط مماس نزولی است، بنابراین شیب منفی است. پس در سمت راست مفهوم الگوریتم گرادیان نزولی، \( \LARGE  ( \theta_{1}) \) منهای یک عدد منفی می‌شود. در نتیجه مقدار \( \LARGE  ( \theta_{1}) \) افزایش می‌یابد و سمت راست حرکت می‌کند.

مفهوم آلفا در مفهوم الگوریتم گرادیان نزولی

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

  \( \Large \theta_{1}:= \theta_{1}- \alpha \frac {d}{d \theta{1}} J(\theta_{1})  \)

بیایید ببینیم اگر آلفا، خیلی کوچک یا بزرگ باشد چه اتفاقی می‌افتد؟

مثال اول

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

حتما بخوانید:  ماتریس و بردار Matrices and Vectors– قسمت یازدهم دوره یادگیری ماشین دانشگاه استنفورد

مفهوم خط مماس در الگوریتم گرادیان نزولی با یک پارامترشکل۵: نمودار تابع \( \LARGE J\)

اگر مقدار آلفا کم باشد \( \LARGE  ( \theta_{1}) \) با مقادیر کم تغییر خواهد کرد. یعنی قدم‌های ما کوچک خواهد بود. مانند قدم‌های مشخص شده در نمودار زیر:

الگوریتم گرادیان نزولی با یک پارامتر و آلفا کوچکشکل۶: قدم‌های کوچک به طرف مینیمم تابع

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

مثال دوم

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

الگوریتم گرادیان نزولی با یک پارامتر و آلفا بزرگ
شکل۷: الگوریتم گرادیان نزولی با آلفا بزرگ

در تصویر بالا قدم بزرگی در جهت مینیمم برداشتیم، اما از مینیمم رد شد. اکنون وضعیت تابع هزینه بدتر شد. در این حالت مشتق به سمت چپ اشاره می‌کند. یعنی \( \LARGE  ( \theta_{1}) \) باید کم شود. اگر آلفا بزرگ باشد قدم‌های بعدی ما اینگونه خواهد شد:

واگرایی در گرادیان نزولی با یک پارامتر و آلفا بزرگشکل۸: واگرایی در گرادیان نزولی با یک پارامتر بدلیل آلفا بزرگ

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

سوالی برای درک محاسبه گرادیان نزولی با یک پارامتر در نقطه مینیمم

فرض کنید مطابق شکل نقطه \( \LARGE  ( \theta_{1}) \) در نقطه مینیمم موضعی تابع \( \LARGE J ( \theta_{1}) \) قرار داشته باشد. اگر مطابق مفهوم الگوریتم گرادیان نزولی \( \Large \theta_{1}:= \theta_{1}- \alpha \frac {d}{d \theta{1}} J(\theta_{1})  \) ، قدمی برداریم چه اتفاقی خواهد افتاد؟

رفتار الگوریتم گرادیان نزولی با یک پارامتر در نقطه مینیمم موضعیشکل۹: رفتارمفهوم الگوریتم گرادیان نزولی در نقطه مینیمم موضعی

امیدوارم پاسخ صحیح را انتخاب کرده باشید. همانطور که می‌دانید، شیب خط مماس در این نقطه صفر است. پس مقدار مشتق ما نیز صفر خواهد بود. طبق الگوریتم گرادیان نزولی \( \LARGE  ( \theta_{1}) \) تغییر نخواهد کرد. بنابراین گرادیان نزولی در نقطه مینیمم هیچ کاری برای تغییر پارامتر انجام نمی‌دهد و شما را در نقطه مینیمم موضعی نگه می‌دارد.

چگونه مفهوم الگوریتم گرادیان نزولی و مقدار ثابت آلفا ما را به سمت نقطه مینیمم هدایت می‌کند؟

در ادامه می‌خواهیم بررسی کنیم چرا حتی زمانی که مقدار آلفا ثابت است؛ گرادیان نزولی به مینیمم موضعی ختم می‌شود. تابع \( \LARGE J ( \theta_{1}) \) و نقطه شروع مطابق شکل زیر را در نظر بگیرید:

حتما بخوانید:  یادگیری با نظارت (Supervised learning) یا یادگیری نظارت شده چیست - قسمت دوم دوره یادگیری ماشین دانشگاه استنفورد

تابع J
شکل۱۰: نمودار تابع \( \LARGE J ( \theta_{1}) \)

اگر قدم کوچکی برداریم، به نقطه مشخص شده در تصویر می‌رسیم:

رفتار الگوریتم گرادیان نزولی با یک پارامتر و آلفا ثابتشکل۱۱: رفتار مفهوم الگوریتم گرادیان نزولی و آلفا ثابت

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

کوتاه شدن قدم ها در الگوریتم گرادیان نزولی با یک پارامتر هنگام نزدیک شدن به مینیمم تابع

شکل۱۲: قدم کوچک دوم در جهت مینیمم تابع

با برداشتن قدم دوم به نقطه مینیمم نزدیک‌تر می‌شویم. یعنی مشتق در این نقطه از نقطه قبلی کمتر خواهد بود. در این قدم، مشتق کوچک‌تر است؛ بنابراین مقدار \( \LARGE  ( \theta_{1}) \) نیز کمتر تغییر خواهد کرد و قدم ما کوچکتر از قدم‌های قبلی است. همانطور که متوجه شدید با جلو رفتن گرادیان نزولی، قدم‌ها به صورت خودکار کوچک‌تر می‌شوند. این روند ادامه می‌یابد تا در نهایت به نقطه مینیمم برسیم.

کوتاه شدن قدم ها در الگوریتم گرادیان نزولی با یک پارامتر هنگام نزدیک شدن به مینیمم تابع

شکل۱۳: کوتاه شدن قدم ها در الگوریتم گرادیان نزولی با نزدیک شدن به مینیمم تابع

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

فیلم جلسه مفهوم الگوریتم گرادیان نزولی Descent Gradient Algorithm Intuition – قسمت نهم دوره یادگیری ماشین دانشگاه استنفورد

جمع‌بندی جلسه مفهوم مفهوم الگوریتم گرادیان نزولی و موضوع جلسه آینده

در این جلسه از یادگیری ماشین دانشگاه استنفورد با مفهوم مفهوم الگوریتم گرادیان نزولی آشنا شدیم. دو بخش مهم این معادل یعنی آلفا و مشتق عبارت را بررسی کردیم. همچنین یاد گرفتیم که برای رسیدن به نقطه مینیمم نیازی به تغییر آلفا نیست. در حقیقت کاهش مشتق ما با حرکت به سمت نقطه مینیمم، قدم‌های ما را کوچک می‌کند. از الگوریتم گرادیان نزولی برای بهینه کردن هر تابع هزینه \( \LARGE J ( \theta_{1}) \) می‌توان استفاده کرد و مخصوص تابع هزینه با رگرسیون خطی نیست.

در جلسه آینده می‌خواهیم از تابع هزینه \( \LARGE J ( \theta_{1}) \) استفاده کنیم و آن را به تابع هزینه رگرسیون خطی تغییر دهیم. همان تابع هزینهٔ مجذور که قبلا آن را به دست آوردیم. در نهایت الگوریتم گرادیان نزولی برای رگرسیون خطی را به کار می‌بریم و به نخستین الگوریتم یادگیری که همان الگوریتم رگرسیون خطی است، می‌رسیم.

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

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

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

-->