الگوریتم های مختلف بهینه سازی برای آموزش شبکه عصبی

ساخت وبلاگ

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

منتشر شده در

به سوی علم داده

7 دقیقه مطالعه 13 ژانویه 2019

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

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

ما با انواع مختلف بهینه سازها و مزایای آنها آشنا خواهیم شد:

گرادیان نزول

Gradient Descent ابتدایی ترین اما پرکاربردترین الگوریتم بهینه سازی است. این به شدت در الگوریتم های رگرسیون خطی و طبقه بندی استفاده می شود. انتشار معکوس در شبکه های عصبی نیز از یک الگوریتم گرادیان نزول استفاده می کند.

گرادیان نزول یک الگوریتم بهینه سازی مرتبه اول است که به مشتق مرتبه اول یک تابع ضرر وابسته است. محاسبه می کند که وزن ها از چه طریقی باید تغییر داده شوند تا تابع بتواند به حداقل برسد. از طریق پس انتشار، تلفات از یک لایه به لایه دیگر منتقل می شود و پارامترهای مدل که به وزن نیز معروف هستند، بسته به تلفات اصلاح می شوند تا تلفات به حداقل برسد.

الگوریتم: θ=θ−α⋅∇J(θ)

مزایای :

  1. محاسبه آسان
  2. آسان برای پیاده سازی.
  3. آسان برای درک.

معایب:

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

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

این یک گونه از Gradient Descent است. سعی می کند بیشتر پارامترهای مدل را به روز کند. در این، پارامترهای مدل پس از محاسبه ضرر در هر مثال آموزشی تغییر می کنند. بنابراین، اگر مجموعه داده شامل 1000 ردیف باشد، SGD پارامترهای مدل را 1000 بار در یک چرخه مجموعه داده به جای یک بار در Gradient Descent به روزرسانی می کند.

θ=θ−α⋅∇J(θ; x(i); y(i))، نمونه های آموزشی کجا هستند.

از آنجایی که پارامترهای مدل اغلب به روز می شوند، پارامترها دارای واریانس و نوسانات بالایی در توابع تلفات در شدت های مختلف هستند.

مزایای :

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

معایب:

  1. واریانس بالا در پارامترهای مدل.
  2. ممکن است حتی پس از دستیابی به مینیما جهانی شلیک کند.
  3. برای به دست آوردن همان همگرایی که نزول شیب لازم است به آرامی ارزش نرخ یادگیری را کاهش دهد.

نزول شیب مینی دسته

این در بین همه تغییرات الگوریتم های نزول شیب بهترین است. این یک بهبود در هر دو SGD و Nexcent Gradient Standard است. این پارامترهای مدل را بعد از هر دسته به روز می کند. بنابراین ، مجموعه داده به دسته های مختلف تقسیم می شود و بعد از هر دسته ، پارامترها به روز می شوند.

θ = θ - αα∇J (θ ؛ b (i)) ، دسته های نمونه های آموزش کجا هستند.

مزایای :

  1. غالباً پارامترهای مدل را به روز می کند و همچنین واریانس کمتری دارد.
  2. به حافظه متوسط نیاز دارد.

انواع تبار شیب برخی از چالش ها را دارند:

  1. انتخاب ارزش بهینه از نرخ یادگیری. اگر نرخ یادگیری خیلی کوچک از نزول شیب باشد ممکن است سنین را همگرایی کند.
  2. برای همه پارامترها نرخ یادگیری مداوم داشته باشید. ممکن است پارامترهایی وجود داشته باشد که ممکن است بخواهیم با همان نرخ تغییر کنیم.
  3. ممکن است در حداقل محلی به دام بیفتد.

تکانه

حرکت برای کاهش واریانس بالا در SGD اختراع شد و همگرایی را نرم می کند. این همگرایی را به سمت جهت مربوطه تسریع می کند و نوسان را به جهت بی ربط کاهش می دهد. در این روش که به عنوان حرکت "γ" شناخته می شود ، از یکپرپارامتر دیگر استفاده می شود.

V (t) = γV ( T-1)+α.∇J (θ)

اکنون ، وزن ها توسط θ = θ - v (t) به روز می شوند.

اصطلاح حرکت γ معمولاً روی 0. 9 یا یک مقدار مشابه تنظیم می شود.

مزایای :

  1. نوسانات و واریانس بالای پارامترها را کاهش می دهد.
  2. همگرا سریعتر از نزول شیب.

معایب:

  1. یک پارامتر بیش از حد اضافه شده است که باید به صورت دستی و دقیق انتخاب شود.

Nesterov شیب شتاب

حرکت ممکن است یک روش خوب باشد اما اگر حرکت بیش از حد زیاد باشد ، الگوریتم ممکن است حداقل محلی را از دست بدهد و ممکن است به افزایش خود ادامه دهد. بنابراین ، برای حل این مسئله ، الگوریتم NAG توسعه یافت. این یک روش نگاهی به جلو است. ما می دانیم که برای اصلاح وزن از γv ( T-1) استفاده خواهیم کرد ، بنابراین ، θ - γV (T - 1) تقریباً مکان آینده را به ما می گوید. اکنون ، ما هزینه را بر اساس این پارامتر آینده محاسبه خواهیم کرد تا اینکه فعلی.

V (t) = γV ( T-1)+α.∇J (θ - γV (T - 1)) و سپس پارامترها را با استفاده از θ = θ - V (t) به روز کنید.

مزایای :

  1. حداقل محلی را از دست نمی دهد.
  2. اگر مینیما در حال وقوع باشد کند می شود.

معایب:

  1. با این وجود ، Hyperparameter باید به صورت دستی انتخاب شود.

حرکات

یکی از مضرات همه بهینه سازهای توضیح داده شده این است که میزان یادگیری برای همه پارامترها و برای هر چرخه ثابت است. این بهینه ساز نرخ یادگیری را تغییر می دهد. این میزان یادگیری "η" را برای هر پارامتر و در هر مرحله "t" تغییر می دهد. این یک الگوریتم بهینه سازی مرتبه دوم نوع است. این کار بر روی مشتق یک عملکرد خطا کار می کند.

η یک نرخ یادگیری است که برای پارامتر داده شده θ (i) در یک زمان معین بر اساس شیب های قبلی که برای پارامتر داده شده θ (i) محاسبه شده است ، اصلاح شده است.

ما مجموع مربع های شیب W. R. T. را ذخیره می کنیم. θ (i) تا زمان T T ، در حالی که ϵ یک اصطلاح صاف کننده است که از تقسیم صفر جلوگیری می کند (معمولاً به ترتیب 1E - 8). جالب اینجاست که بدون عملکرد ریشه مربع ، الگوریتم بسیار بدتر عمل می کند.

این به روزرسانی های بزرگی را برای پارامترهای کمتر مکرر و یک مرحله کوچک برای پارامترهای مکرر ایجاد می کند.

مزایای :

  1. تغییرات نرخ یادگیری برای هر پارامتر آموزش.
  2. نیازی به تنظیم دستی نرخ یادگیری نیست.
  3. قادر به آموزش داده های پراکنده است.

معایب:

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

عرفان

این یک پسوند از Adagrad است که تمایل به رفع مشکل نرخ یادگیری پوسیدگی آن دارد. Adadelta به جای جمع کردن همه شیب های قبلی مربع ، پنجره شیب های گذشته انباشته را به اندازه ثابت W محدود می کند. در این میانگین در حال حرکت به طور نمایی به جای مجموع شیب ها استفاده می شود.

ما γ را به یک مقدار مشابه به عنوان اصطلاح حرکت ، در حدود 0. 9 تنظیم کردیم.

مزایای :

  1. اکنون میزان یادگیری پوسیده نمی شود و آموزش متوقف نمی شود.

معایب:

  1. از نظر محاسباتی گران است.

آدم

آدم (تخمین لحظه سازگار) با حرکت مرتبه اول و دوم کار می کند. شهود پشت آدم این است که ما نمی خواهیم خیلی سریع بچرخیم زیرا می توانیم از حد حداقل پرش کنیم ، می خواهیم سرعت را برای یک جستجوی دقیق کاهش دهیم. علاوه بر ذخیره میانگین پوسیدگی نمایی از شیب های مربع گذشته مانند Adadelta ، آدم همچنین میانگین پوسیدگی نمایی از شیب های گذشته M (T) را حفظ می کند.

m (t) و v (t) مقادیر لحظه اول هستند که میانگین و لحظه دوم است که به ترتیب واریانس غیرقانونی شیب ها است.

در اینجا ، ما میانگین m (t) و v (t) را در دست می گیریم تا e [m (t)] بتواند برابر با e [g (t)] باشد که در آن ، e [f (x)] یک مقدار مورد انتظار استF (x).

برای به روزرسانی پارامتر:

مقادیر β1 0. 9 ، 0. 999 برای β2 و (10 x exp (-8)) برای "ϵ" است.

مزایای :

  1. این روش خیلی سریع است و به سرعت همگرا می شود.
  2. میزان یادگیری ناپدید شده ، واریانس بالا را اصلاح می کند.

معایب:

مقایسه بین بهینه سازهای مختلف

نتیجه گیری

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

برای داده های پراکنده از بهینه سازها با نرخ یادگیری پویا استفاده کنید.

اگر می خواهید از الگوریتم نزول شیب استفاده کنید تا نزول شیب Min-Batch بهترین گزینه است.

امیدوارم که شما بچه ها مقاله را دوست داشته باشید و بتوانید شهود خوبی را نسبت به رفتارهای مختلف الگوریتم های بهینه سازی مختلف به شما ارائه دهید.< Span> روش خیلی سریع است و به سرعت همگرا می شود.

بازار رمزارزها...
ما را در سایت بازار رمزارزها دنبال می کنید

برچسب : نویسنده : محمود کیانوش بازدید : 31 تاريخ : پنجشنبه 9 شهريور 1402 ساعت: 18:59