زمان تخمینی مطالعه: 8 دقیقه
مدلهای بینایی کامپیوتر از دادههای آموزشی برای یادگیری رابطه بین دادههای ورودی و خروجی استفاده میکنند. آموزش یک فرآیند بهینهسازی است. گرادیان نزولی(Gradient descent) یک روش بهینهسازی(Optimization) مبتنی بر تابع هزینه است. تفاوت بین ارزش پیشبینی شده و واقعی دادهها را مشخص میکند. مدلهای بینایی کامپیوتر(CV) سعی میکنند این تابع تلفات(Loss Function) را به حداقل برسانند یا شکاف بین دادههای پیشبینی شده و خروجی واقعی را کاهش دهند. برای آموزش یک مدل یادگیری عمیق ما تصاویر حاشیه نویسی شده را ارائه می دهیم. در هر تکرار گرادیان نزولی سعی میکند خطا را کاهش دهد و دقت مدل را بهبود بخشد. سپس برای رسیدن به هدف مورد نظر، فرآیند آزمایشی را طی میکند. شبکههای عصبی پویا از روشهای بهینهسازی برای رسیدن به هدف استفاده میکنند. آنها به روشی کارآمد برای دریافت بازخورد در مورد موفقیت نیاز دارند. الگوریتمهای بهینهسازی این حلقه بازخورد را ایجاد میکنند تا به مدل کمک کند تا به طور دقیق به هدف برسد.
به عنوان مثال، مدلهای طبقهبندی تصویر از مقادیر RGB تصویر برای تولید کلاسهایی با امتیاز اطمینان استفاده میکنند. آموزش آن شبکه در مورد به حداقل رساندن یک تابع ضرر است. مقدار تابع تلفات معیاری را ارائه میکند که نشان میدهد که یک شبکه با یک مجموعه داده مشخص چقدر از عملکرد هدف فاصله دارد. در این مقاله، قصد داریم یکی از محبوبترین روشهای بهینهسازی در بینایی ماشین یعنی Gradient Descent (GD) را توضیح خواهیم داد.
گرادیان نزولی چیست؟
شناخته شدهترین روش بهینهسازی برای کمینهسازی یک تابع، گرادیان نزولی است. مانند بسیاری از روشهای بهینهسازی، این الگوریتم از یک رویکرد تدریجی و تکراری برای حل مسئله استفاده میکند. گرادیان جهت سریعترین صعود را نشان میدهد. یک مقدار گرادیان منفی جهت سریعترین فرود را نشان میدهد.
- گرادیان نزولی از یک نقطه به طور تصادفی انتخاب شده شروع می شود. سپس یک سری مراحل در جهت گرادیان ادامه مییابد تا به راه حل نزدیک شود.
- محققان از شیب نزولی برای به روز رسانی پارامترهای بینایی کامپیوتر استفاده میکنند، به عنوان مثال. ضریب رگرسیون در رگرسیون خطی و وزن در NN.
- این روش مقادیر پارامتر اولیه را تعیین میکند. سپس متغیرها را به صورت مکرر در جهت تابع هدف به روز میکند. در نتیجه، هر به روز رسانی یا تکرار مدل را به حداقل رساندن تابع هزینه داده شده سوق میدهد.
- در نهایت – به تدریج به مقدار بهینه تابع داده شده همگرا میشود.
در این الگوریتم آموزش تدریجی با تقویتهای مثبت هنگام رسیدن به یک هدف خاص انجام میشود.
گرادیان نزولی چگونه کار می کند؟
همانطوری که در بالا ذکر شد می توانیم گرادیان را به عنوان شیب یک تابع در نظر بگیریم یا محاسبه کنیم. مجموعهای از مشتقات جزئی یک تابع مربوط به همه متغیرها است. این میزان زاویه یک شیب را نشان میدهد و در جهتی است که تابع سریعترین افزایش (کاهش) مییابد. ما میتوانیم شیب را با تجسم یک کوه با دو قله و یک دره نشان دهیم. یک مرد نابینا در یک قله وجود دارد که باید به سمت پایین حرکت کند. فرد نمیداند کدام جهت را انتخاب کند، اما در صورت مسیر صحیح، تشویق میشود. او به سمت پایین حرکت میکند و برای هر مرحله صحیح تشویق میشود، بنابراین تا زمانی که به پایین برسد به حرکت خود ادامه میدهد. نرخ یادگیری یک پارامتر مهم در بهینهسازی بینایی کامپیوتر است. نرخ یادگیری مدل تعیین میکند که آیا باید بخشهای خاصی از دادهها را رد کرد یا از تکرار قبلی تنظیم کرد. در مثال کوه، این به اندازه هر قدمی است که فرد از کوه پایین میرود. در آغاز او ممکن است گامهای بزرگی بر دارد و به سرعت فرود آمده و حتی ممکن است از هدف عبور کند و از آن طرف کوه مجددا بالا برود.
میزان یادگیری در گرادیان نزولی
گرادیان نزولی یک الگوریتم بهینهسازی تکراری است که حداقل محلی یک تابع را پیدا میکند. نرخ یادگیری کمتر برای برنامههای کاربردی دنیای واقعی بهتر است. اگر نرخ یادگیری با پایین رفتن هر مرحله کاهش یابد حالتی ایده آل خواهد بود. بنابراین، فرد میتواند بدون بازگشت به هدف به نتیجه برسد. به همین دلیل، نرخ یادگیری هرگز نباید خیلی زیاد یا خیلی پایین باشد. گرادیان نزولی موقعیت بعدی را با استفاده از گرادیان در موقعیت فعلی محاسبه میکند. ما گرادیان فعلی را با نرخ یادگیری افزایش میدهیم. مقدار به دست آمده را از موقعیت فعلی کم می کنیم (یک گام). میزان یادگیری تاثیر زیادی بر عملکرد دارد:
- نرخ یادگیری پایین به این معنی است که گرادیان نزولی قبل از رسیدن به نقطه بهینه، کندتر همگرا میشود یا ممکن است به تکرار نهایی برسد.
- نرخ یادگیری بالا به این معنی است که الگوریتم یادگیری ماشین ممکن است به نقطه بهینه همگرا نشود. حداقل محلی را پیدا میکند یا حتی کاملاً واگرا میشود.
مسائل مربوط به گرادیان نزولی
ساختارهای پیچیده مانند شبکههای عصبی شامل تبدیلهای غیر خطی در تابع فرض(hypothesis function) هستند. این امکان وجود دارد که تابع ضرر آنها مانند یک تابع محدب با حداقل یک به نظر نرسد. گرادیان میتواند در یک حداقل محلی صفر یا در یک حداقل سراسری در کل دامنه صفر باشد. اگر به حداقلهای محلی برسد، فرار از آن نقطه دشوار خواهد بود. نقاط زینی شکل نیز در تابع وجود دارد که تابع در یک جهت حداقل و در جهت دیگر ماکزیمم محلی است. این توهم همگرایی را به حداقل میرساند. غلبه بر این چالشهای گرادیان نزولی مفهومی مهم است:
- با ترسیم تابع هزینه در طول فرآیند بهینهسازی، اطمینان حاصل کنید که نزول گرادیان به درستی اجرا میشود. تعداد تکرارها روی محور x و مقدار تابع هزینه روی محور y است.
- با نشان دادن مقدار تابع هزینه پس از هر تکرار گرادیان نزولی، میتوانید میزان یادگیری خود را تخمین بزنید.
- اگر گرادیان نزولی به خوبی کار کند، حداقل کردن تابع هزینه باید پس از هر تکرار اتفاق بیفتد.
- هنگامی که گرادیان نزولی تابع هزینه را کاهش نمیدهد (تقریباً در همان سطح باقی میماند) – همگرا شده است.
- برای همگرایی، گرادیان نزولی ممکن است به 50یا 50000 یا حتی تا یک میلیون تکرار نیاز داشته باشد، بنابراین تخمین تعداد تکرارها برای همگرایی آسان نیست.
نظارت بر گرادیان نزولی در نمودارها به شما امکان میدهد تشخیص دهید که آیا به درستی کار میکند یا خیر. در بیشتر موارد، دلیل افزایش تابع هزینه هنگام استفاده از گرادیان نزولی، نرخ یادگیری زیاد است.
انواع گرادیان نزولی
بر اساس مقدار دادهای که الگوریتم استفاده میکند سه نوع گرادیان نزولی وجود دارد:
- گرادیان نزولی آماری: گرادیان نزولی آماری(SGD) پارامترهای هر نمونه آموزشی را متعاقباً به روز میکند. در برخی سناریوها SGD سریعتر از روشهای دیگر است. یک مزیت این روش به روزرسانیهای مکرر این است که نرخ بهبود نسبتاً دقیقی را ارائه میدهد. با این حال، SGD از نظر محاسباتی بسیار گران است. همچنین، فرکانس بهروزرسانیها باعث ایجاد گرادیانهای نویزدار میشود که باعث افزایش نرخ خطا میگردد.
- گرادیان نزولی دستهای: گرادیان نزولی دستهای(BGD) نوع از دورههای آموزشی مکرر برای محاسبه خطا برای هر مثال در مجموعه داده آموزشی استفاده میکند. این مدل از نظر محاسباتی کارآمد بوده و دارای یک گرادیان خطای پایدار و یک همگرایی پایدار است. یک اشکال این روش این است که گرادیان خطای پایدار میتواند در نقطهای همگرا شود که بهترین حالتی نیست که مدل میتواند به دست آورد. این نوع گرادیان نیاز به بارگذاری کل مجموعه آموزشی در حافظه دارد.
- گرادیان نزولی و Mini-Batch: این نوع ترکیبی از الگوریتمهای SGD و BGD است. مجموعه داده آموزشی را به دستههای کوچک تقسیم میکند و هر یک از این دستهها را به روز میکند. این روش ترکیبی از کارایی BGD و استحکام SGD است. اندازههای مینی بچ معمولی حدود 100 است، اما ممکن است برای کاربردهای مختلف متفاوت باشند. این الگوریتم ترجیحی برای آموزش شبکه عصبی و رایجترین نوع GD در یادگیری عمیق است.