حامد جاویدپور
حامد جاویدپور
خواندن ۳ دقیقه·۳ سال پیش

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

اگر نمودار تابع loss فرضی در مقاله "تابع ضرر" را به یاد داشته باشید ( شکل زیر ) این تابع دارای نقطه یا نقاطی است که مقدار تابع در آن ها minimum کُلی ( Global ) یا minimum نسبی ( Local ) است.

در نمودار دو بعدی از این توابع، تابع دارای دو محور است که محور y مقدار تابع ضرر و مقدار x، متغیرهای تشکیل دهنده تابع هستند که همان 'پارامتر های شبکه عصبی' (wوb) می باشند. اگه با دقت بیشتری به نمودار توجه کنیم، در x های بیشتر از نقطه minimum، علامت شیب نمودار یا مشتق تابع مثبت است و در مقدار x های کمتر، این مقدار منفی می باشد. با در نظر داشتن همین نکته و این که ما با تغییر پارامتر های شبکه عصبی می توانیم به نقطه minimum در تابع ضرر دست پیدا کنیم، از روشی به اسم گرادیان کاهشی یا Gradient Descent استفاده می کنیم.

گرادیان کاهشی سعی می کند ما را از نقطه A به نقطه B برساند
گرادیان کاهشی سعی می کند ما را از نقطه A به نقطه B برساند



در شکل زیر نقطه ی سبز که حداقل مقدار تابع ضرر در آن وجود دارد، weight = 3 است؛ در نقطه قرمز که initial weight=5 است، مقدار تابع بزرگتر از نقطه حداقلیِ سبز است.( مقدار تابع ضرر یا به عبارتی تابع ضرر بیشتر است.) اگر مقدار مشتق تابع در initial weight ( به فرض 1) را از خود initial weight کم کنیم، حاصل {4 = 1 - 5} است. همان طور که میبینید، وزن جدید شبکه ما ( 4 ) به عدد 3 که در آن اپتیموم عملکرد شبکه عصبی است نزدیک شده است.

در مثال دیگری، نقطه آبی که initial weight در آن 1 است ولی شیب خط در این نقطه منفی است؛( با مقدار فرضی 1- ) اگر مقدار initial weight را از شیب خط کم کنیم حاصل :

new weight = initial weight - d loss/dw

new weight = 1 - (-1 ) = 2

همان طور که میبینید، مقدار loss در نقطه 2 از مقدار نقطه 1 کمتر شده است پس پارامتر های شبکه عصبی یک گام در جهت بهبود عملکرد شبکه عصبی پیش رفته اند.

سوالی که مطرح می شود این است که آیا برای انجام فرایند گرادیان کاهشی، تنها کاری که باید انجام دهیم این تفریق است؟ در واقع برای بهبود سرعت این فرایند بهتر است از ضریبی به اسم learning rate یا نرخ یادگیری استفاده کنیم.

همان طور که از نام این ضریب مشخص است، learning rate ضریبی برای کنترل سرعت یادگیری است؛ یعنی می توان با نسبت دادن مقادیر مختلف به آن، سرعت یادگیری شبکه عصبی را تغییر داد.

برای استفاده از این ضریب در فرایند Gradient Descent از فرمول زیر که فرمول اصلی گرادیان کاهشی است استفاده می کنیم:

w' = w - alpha * d loss/dw

alpha = learning rate

مقادیر متفاوتی به learning rate در شبکه های مختلف نسبت داده می شود و یکی از چالش های یادگیری عمیق، adjust مقدار نرخ یادگیری است.


به صورت خلاصه، فرایند گرادیان کاهشی یکی از روش های انجام مرحله back propagation در شبکه های عصبی است؛ در این روش، مشتق تابع ضرر از مقدار وزن شبکه کم می شود تا ایده آل ترین وزن های شبکه عصبی که در آن کمترین مقدار تابع ضرر را داریم، به دست بیاوریم.

هوش مصنوعییادگیری عمیقیادگیری ماشینgradient descentشبکه های عصبی
علاقه مند و برنامه نویس حوزه هوش مصنوعی در سلامت و علم داده - دانش جوی پزشکی
شاید از این پست‌ها خوشتان بیاید