الگوریتم LookAhead: چند گام رو به جلو، یک گام به عقب!
چند تا از اعضای آزمایشگاه وکتور دانشگاه تورنتو در کنفرانس نیپس سال ۲۰۱۹، الگوریتم بهینهسازی جالبی به نام LookAhead (LA) برای آموزش شبکههای عمیق ارائه کردند.
مقاله مال دو سال پیشه، اما چون ما جدیدا خوندیمش، گفتیم با شما هم به اشتراک بگذاریم.
به صورت معمول الگوریتمهایی مثل SGD و اینا با نرخ یادگیری بالا، حول مینیمم اینور اونور میپرند. اگر نرخ رو هم پایین بذاریم، کلی طول میکشه تا یاد بگیرند یعنی خیلی به هایپرپارامترهایی مثل نرخ یادگیریشون وابسته هستند.
این الگوریتم LA این مشکل رو برطرف میکنه و نشون میده که به هایپر پارامترهاش وابسته نیست و بهتر از الگوریتمهای قبلی هم کار میکنه.
الگوریتم LookAhead از یه دونه الگوریتم بهینهسازی داخلی مثل آدام و SGD و … استفاده میکنه و دو جور وزن (متغیر) داره؛ وزنهای سریع (theta) و وزنهای کند (phi). وزنهای سریع رو الگوریتم داخلیه بهروز میکنه و وزنهای کند رو خود الگوریتم LookAhead.
همونطور که در شبهکد در تصویر ضمیمه شده قابل مشاهدهست، این الگوریتم اینجوری کاری میکنه که همون اول وزنهای کند رو میریزه توی وزنهای سریع بعد میگذاره که اون الگوریتم داخلی، k گام در حلقهی داخلی پیش بره و وزنهای سریع شبکه رو بهروز کنه و مثلا برسه به theta(t,k). بعد بین وزنهای کند دور قبلی الگوریتم (phi(t-1)) و این وزنهای سریع جدید (theta(t,k)) یه درونیابی ساده میکنه و یه نقطه اون وسط پیدا میکنه و phi(t) رو بدست میار و درست مثل دفعه قبل اینو اول حلقه بیرونی توی (theta(t+1,0) قراره بریزه تا دفعه بعدی، الگوریتم حلقه داخلی با مقادیر اولیه همین وزنهای کند کارشون رو شروع کنند. اینکه کجای خط باشه، با یه هایپر پارامتر به نام آلفا مشخص میشه.
پس این الگوریتم دو تا ابرپارامتر اضافی با نام k و آلفا داره.
شکل سمت چپ تصویر اول ضمیمه شده (همون نمودار سبزه) تفاوت مسیر حرکت یه الگوریتم مثل SGD و LookAhead رو معلوم میکنه. k گام الگوریتم داخلی میره، بعد یه درون یابی بین نقطه اولیه و آخری زده میشه و نقطه شروع جدید پیدا میشه و باز Kگام الگوریتم داخلی و …
اگر با این توضیحات ما گیج شدید، یه دور شبهکد رو بخونید و اون شکل بغلش رو خوب نگاه کنید و بعد دوباره بیاید سراغ توضیحات. اون ویدیوهایی که لینکشو دادیم هم میتونید ببینید که شیرفهم شید.
حالا قشنگی ماجرا کجاست؟ همونطور که گفتیم این الگوریتم مشکل وابستگی زیاد به هاپیرپارامترها رو حل میکنه و به الگوریتم داخلی میگه که تو وحشیانه پیش برو، من کنترلت میکنم. مثل اینکه یه عده از کوه دارند میان پایین، یک نفر بالا میایسته و به بقیه میگه این سر طناب دست من، شما سریع و خشن برید پایین، بعد یه جایی اون وسط مسطا که بهتره همو میبینیم. اون عکس دوم ضمیمه شده (ورق بزنید) هم نشون میده که الگوریتم داخلی (آدام و SGD و اینا) به تنهایی اگر اجرا میشدند هی میخواستند گند بزنند ولی الگوریتم LookAhead هی نمیگذاره دقت بیفته.
در مقاله میتونید نتایج آموزش مدلها با این الگوریتم رو، روی تسکهای مختلف (دستهبندی عکسها، مدل زبانی و ترجمه ماشینی) ببنید که همواره بهتر و با همگرایی سریعتر عمل کرده.
لینک مقاله:
https://arxiv.org/abs/1907.08610
لینک ویدیوی ارائه یکی از نویسندگان مقاله:
https://www.youtube.com/watch?v=TxGxiDK0Ccc
لینک ویدیوی توضیح ایده به صورت خلاصه و تصویری و زیبا:
https://www.youtube.com/watch?v=I5sLWKKcEyI
پ.ن. کانال رو بقیه معرفی کنید که دور هم صفا کنیم! :)
#read
#paper
@nlp_stuff
Post #208
2.32K