الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

الگوریتم گرادیان کاهشی تصادفی (SGD)

گرادیان کاهشی تصادفی (Stochastic Gradient Descent – SGD) یکی از روش های یادگیری ماشین (Machine Learning) و مبتنی بر تکرار برای بهینه سازی یک تابع مشتق پذیر به نام تابع هدف (تابع هزینه) می باشد که یک تقریب تصادفی از روش گرادیان کاهشی است. در حقیقت گرادیان کاهشی تصادفی الگوریتمی در اختیار ما قرار می دهد که طی چند حلقه تکرار مقدار کمینه یک تابع و مقادیری را که به ازای آنها تابع کمینه مقدار خود را می گیرد، بدست بیاوریم. روش کاهش شیب تصادفی (SGD) ، خطای داده های آموزشی را محاسبه می کند و بلافاصله وزن ها را تنظیم می کند. اگر نقطه از داده های آموزشی داشته باشیم کاهش شیب تصادفی ۱۰۰ بار وزن ها را تنظیم می کند. شکل زیر چگونگی به روز رسانی وزن ها را توسط الگوریتم SGD را نشان می دهد که وابسته به تمام داده های آموزشی است.

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

شکل نحوه به روزرسانی وزن ها توسط روش SGD را نشان می دهد که وابسته به تمام داده های آموزشی است.

با توجه به اینکه الگوریتم کاهش شیب تصادفی (SGD) وزن را برای هر داده آموزشی تنظیم می کند عملکرد شبکه عصبی در حین فرآیند آموزش کج است (به صورت منحنی است). نام تصادفی به رفتار تصادفی فرآیند آموزش اشاره می کند. الگوریتم گرادیان نزولی تصادفی به روز رسانی وزن ها را به صورت زیر محاسبه می کند.

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

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

دسته

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

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

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

روش دسته ای، وزن های به روز شده را به صورت زیر محاسبه می کند:

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

به طوری که الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشینوزن به روز شده برای k داده و N مجموع کل داده های آموزشی است. به دلیل آنکه میانگین محاسبه بر روی وزن های به روز شده (بالا است) شیوه دسته ای زمان قابل توجهی را برای آموزش مصرف می کند.

دسته کوچک

روش دسته ای کوچک ترکیبی از روش های دسته ای و SGD است. این روش بخشی از مجموعه داده های آموزشی را انتخاب کرده، و از آنها برای آموزش به شیوه دسته ای استفاده می کند. بنابراین وزن داده های انتخاب شده را به روز رسانی می کند و شبکه عصبی را با میانگین وزن های به روز شده آموزش می دهد. برای مثال به طور دلخواه ۲۰ داده آموزشی از بین ۱۰۰ داده انتخاب شده و به شیوه دسته ای بر روی ۲۰ داده اعمال می شود. در این مورد، در مجموع ۵ بار اصلاح وزن ها انجام می شود تا فرآیند آموزش برای همه داده ها تکمیل گردد (۵=۱۰۰/۲۰).

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

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

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

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

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

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

مثال: قانون دلتا

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

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

شکل شبکه عصبی که حاوی سه گره ی ورودی و یک گره خروجی است.

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

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

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

الگوریتم گرادیان کاهشی تصادفی (SGD) در یادگیری ماشین

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

منبع: فصل دوم کتاب یادگیری ماشین با MATLAB نوشته فیل کیم

 

مطالب مرتبط
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است