مقدمه ای بر بهینه سازی در یادگیری عمیق: Momentum، RMSProp و Adam

  • 2021-10-7

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

5 سال پیش • 10 دقیقه مطالعه کنید

در پستی دیگر، پیچ‌ها و مهره‌های Stochastic Gradient Descent و نحوه رسیدگی به مشکلاتی مانند گیر کردن در یک مینیمم محلی یا یک نقطه زین را پوشش دادیم. در این پست نگاهی می اندازیم به مشکل دیگری که گریبانگیر آموزش شبکه های عصبی است، انحنای پاتولوژیک.

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

انحنای پاتولوژیک

خط تلفات زیر را در نظر بگیرید.

Pathological Curvature

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

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

patho2-1

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

نقطه A را روی سطح پشته در نظر بگیرید. می بینیم که گرادیان در نقطه می تواند به دو جزء تجزیه شود، یکی در امتداد جهت w1 و دیگری در امتداد w2. مولفه گرادیان در جهت w1 به دلیل انحنای تابع تلفات بسیار بزرگتر است و از این رو جهت گرادیان بسیار بیشتر به سمت w1 است و نه به سمت w2 (که حداقل در امتداد آن قرار دارد).

patho3

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

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

و اگر تنها جهت کاهش قابل توجه در F مواردی از انحنای کم باشد ، بهینه سازی ممکن است خیلی کند شود تا عملی باشد و حتی به نظر می رسد که به طور کلی متوقف می شود و باعث ایجاد تصور نادرست حداقل محلی می شود

احتمالاً ما چیزی را می خواهیم که ابتدا می تواند ما را به آرامی در قسمت مسطح در پایین انحنای پاتولوژیک قرار دهد و سپس در جهت مینیما تسریع کنیم. مشتقات دوم می توانند به ما در انجام این کار کمک کنند.

روش نیوتن

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

firstorder

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

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

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

روش نیوتن این کار را با محاسبه ماتریس Hessian انجام می دهد ، که ماتریس مشتقات مضاعف عملکرد از دست دادن با توجه به تمام ترکیبات وزنه ها است. منظور من از گفتن ترکیبی از وزنه ها ، چیزی شبیه به این است.

Screen-Shot-2018-06-01-at-8.57.31-PM

hessian

سپس یک ماتریس هسی تمام این شیب ها را در یک ماتریس بزرگ جمع می کند.

هسیان تخمین از انحنای سطح از دست دادن در یک نقطه را به ما می دهد. یک سطح از دست دادن می تواند یک انحنای مثبت داشته باشد که به معنای سطح است ، به این معنی که یک سطح به سرعت در حال حرکت ما به سرعت کمتر می شود. اگر انحنای منفی داشته باشیم ، به این معنی است که با حرکت ، سطح شیب تر می شود.

Screen-Shot-2018-06-01-at-9.27.25-PM

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

steeper

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

اگر سطح کمرنگ تر شود ، مرحله یادگیری کاهش می یابد.

پس چرا ما بیشتر از الگوریتم نیوتن استفاده نمی کنیم؟

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

برای معماری های مدرن ، تعداد پارامترها ممکن است در میلیارد ها دلار باشد ، و محاسبه یک میلیارد شیب مربع باعث می شود که از استفاده از روشهای بهینه سازی مرتبه بالاتر ، از نظر محاسباتی غیرقابل تحمل باشد.

با این حال ، در اینجا یک ایده است. بهینه سازی مرتبه دوم در مورد ترکیب اطلاعات در مورد چگونگی تغییر شیب خود است. اگرچه ما نمی توانیم دقیقاً این اطلاعات را محاسبه کنیم ، اما می توانیم از اکتشافی پیروی کنیم که جستجوی ما برای Optima را بر اساس رفتار گذشته شیب راهنمایی می کند.

تکانه

یک تکنیک بسیار محبوب که به همراه SGD استفاده می شود ، Momentum نامیده می شود. به جای استفاده از تنها شیب مرحله فعلی برای هدایت جستجو ، حرکت نیز شیب مراحل گذشته را برای تعیین جهت حرکت جمع می کند. معادلات نزول شیب به شرح زیر اصلاح می شود.

momentum

معادلات اول دارای دو بخش است. دوره اول شیب است که از تکرارهای قبلی حفظ می شود. این شیب حفظ شده با مقداری به نام "ضریب حرکت" ضرب می شود که درصد شیب حفظ هر تکرار است.

momentum2-1

اگر مقدار اولیه v را 0 قرار دهیم و ضریب خود را 0. 9 انتخاب کنیم، معادلات به روز رسانی بعدی به نظر می رسد.

update_eq-1

می‌بینیم که گرادیان‌های قبلی نیز در به‌روزرسانی‌های بعدی گنجانده شده‌اند، اما وزن جدیدترین گرادیان‌های قبلی بیشتر از موارد کمتر اخیر است.(برای افرادی که از نظر ریاضی تمایل دارند، میانگین نمایی از گام های گرادیان را در نظر می گیریم)

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

moment_compo

برای به‌روزرسانی، این به مؤلفه در امتداد w2 اضافه می‌شود، در حالی که مؤلفه را در جهت w1 صفر می‌کند. این به ما کمک می کند سریعتر به سمت حداقل حرکت کنیم. به همین دلیل، تکانه به عنوان تکنیکی نیز شناخته می شود که نوسانات را در جستجوی ما کاهش می دهد.

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

در عمل، ضریب تکانه در 0. 5 مقداردهی اولیه می شود و به تدریج در چندین دوره به 0. 9 بازپخت می شود.

RMSProp

RMSprop یا Root Mean Square Propogation تاریخچه جالبی دارد. این توسط جفری هینتون افسانه ای ابداع شد، در حالی که یک ایده تصادفی را در طول کلاس Coursera پیشنهاد کرد.

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

در RMS prop، هر به روز رسانی طبق معادلاتی که در زیر توضیح داده شده است انجام می شود. این به روز رسانی برای هر پارامتر به طور جداگانه انجام می شود.

momprop2-2

بنابراین، بیایید آنچه را که در اینجا اتفاق می افتد تجزیه کنیم.

در معادله اول، میانگین نمایی مجذور گرادیان را محاسبه می کنیم. از آنجایی که ما این کار را به طور جداگانه برای هر پارامتر انجام می دهیم، گرادیان Gt در اینجا مربوط به طرح ریزی، یا جزء گرادیان در جهتی است که توسط پارامتری که به روز می کنیم نشان داده شده است.

برای انجام این کار، میانگین نمایی محاسبه شده را تا آخرین به روز رسانی با یک ابرپارامتر، که با نماد یونانی nu نمایش داده می شود، ضرب می کنیم. سپس مربع گرادیان فعلی را در (1 - nu) ضرب می کنیم. سپس آنها را با هم جمع می کنیم تا میانگین نمایی را تا مرحله زمانی فعلی بدست آوریم.

دلیل استفاده از میانگین نمایی این است که همانطور که دیدیم، در مثال مومنتوم، به ما کمک می‌کند به‌روزرسانی‌های گرادیان اخیر را بیشتر از موارد کمتر اخیر وزن کنیم. در واقع، نام "نمایی" از این واقعیت ناشی می شود که وزن عبارت های قبلی به صورت تصاعدی کاهش می یابد (جمله اخیر به صورت p وزن می شود، عبارت بعدی به عنوان مجذور p و سپس مکعب p و غیره وزن می شود.)

به نمودار ما که نشان دهنده انحنای پاتولوژیک است توجه کنید، اجزای گرادیان در امتداد w1 بسیار بزرگتر از آنهایی هستند که در امتداد w2 هستند. از آنجایی که ما آنها را مربع می کنیم و اضافه می کنیم، آنها لغو نمی شوند و میانگین نمایی برای به روز رسانی های w2 بزرگ است.

سپس در معادله دوم، اندازه گام خود را تعیین کردیم. ما در جهت گرادیان حرکت می کنیم، اما اندازه گام ما تحت تأثیر میانگین نمایی است. ما یک نرخ یادگیری اولیه eta را انتخاب کردیم و سپس آن را بر میانگین تقسیم کردیم. در مورد ما، از آنجایی که میانگین w1 بسیار بزرگتر از w2 است، مرحله یادگیری برای w1 بسیار کمتر از w2 است. از این رو، این به ما کمک می کند از پرش بین برجستگی ها جلوگیری کنیم و به سمت حداقل حرکت کنیم.

معادله سوم فقط مرحله به روز رسانی است. هایپرپارامتر p معمولاً 0. 9 انتخاب می شود، اما ممکن است مجبور شوید آن را تنظیم کنید. اپسیلون معادله 2 است، برای اطمینان از اینکه در نهایت تقسیم بر صفر نمی شود، و به طور کلی 1e-10 انتخاب می شود.

همچنین لازم به ذکر است که RMSProp به طور ضمنی بازپخت شبیه سازی شده را انجام می دهد. فرض کنید به سمت حداقل ها می رویم، و می خواهیم سرعت خود را کاهش دهیم تا از حداقل ها بیش از حد نگذریم. RMSProp به طور خودکار اندازه گام‌های گرادیان را در زمانی که گام‌ها خیلی بزرگ هستند کاهش می‌دهد (گام‌های بزرگ باعث می‌شود که ما مستعد بیش‌پریزی باشیم)

تا کنون، شاهد بوده ایم که RMSProp و Momentum رویکردهای متضادی را اتخاذ کرده اند. در حالی که تکانه جستجوی ما را در جهت حداقل سرعت می بخشد، RMSProp جستجوی ما را در جهت نوسانات مختل می کند.

الگوریتم های Adam یا Adaptive Moment Optimization اکتشافی Momentum و RMSProp را با هم ترکیب می کنند. در اینجا معادلات به روز رسانی است.

adam

در اینجا، میانگین نمایی گرادیان و همچنین مجذورات گرادیان را برای هر پارامتر محاسبه می کنیم (معادل 1 و معادله 2). برای تصمیم گیری در مورد گام یادگیری خود، نرخ یادگیری خود را در میانگین گرادیان ضرب می کنیم (همانطور که در مورد تکانه بود) و آن را بر ریشه میانگین مربع میانگین نمایی مربع گرادیان ها (همانطور که در مورد تکانه بود) در معادله تقسیم می کنیم. 3. سپس، ما به روز رسانی را اضافه می کنیم.

Hyperparameter Beta1 به طور کلی در حدود 0. 9 نگه داشته می شود در حالی که Beta_2 در 0. 99 نگه داشته می شود. اپسیلون به طور کلی 1E-10 انتخاب می شود.

نتیجه

در این پست ، ما 3 روش برای ایجاد نزول شیب برای مقابله با مشکل انحنای پاتولوژیک و سرعت بخشیدن به همزمان جستجو کرده ایم. این روشها اغلب "روشهای تطبیقی" نامیده می شوند زیرا مرحله یادگیری مطابق توپولوژی کانتور اقتباس شده است.

از سه مورد فوق ، با وجود اینکه آدم به دنبال امیدوار کننده ترین کاغذ است ، ممکن است شیوع شایع ترین باشد. نتایج تجربی نشان داده است که تمام این الگوریتم ها با توجه به ضرر یکسان می توانند به حداقل های محلی بهینه تبدیل شوند. با این حال ، به نظر می رسد SGD با حرکت مینیما مسطح تر از آدم می یابد ، در حالی که روشهای سازگار تمایل دارند به سرعت به سمت مینیما واضح تر همگرایی شوند. مینیما مسطح بهتر از موارد واضح تر است.

different

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

برچسب ها

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.