آدم - آخرین روند در بهینه سازی یادگیری عمیق.

ساخت وبلاگ

آدام [1] یک الگوریتم بهینه سازی نرخ یادگیری تطبیقی است که به طور خاص برای آموزش شبکه های عصبی عمیق طراحی شده است. اولین بار در سال 2014 منتشر شد ، آدم در یک کنفرانس بسیار معتبر برای پزشکان یادگیری عمیق - ICLR 2015 ارائه شد. این مقاله شامل برخی از نمودارهای بسیار امیدوار کننده بود که از نظر سرعت آموزش سود عملکرد بزرگی را نشان می داد. با این حال ، پس از مدتی مردم متوجه شدند که در بعضی موارد آدم در واقع راه حل بدتری را نسبت به نزول شیب تصادفی پیدا می کند. تحقیقات زیادی برای رفع مشکلات آدم انجام شده است.

این الگوریتم از قدرت روشهای نرخ یادگیری تطبیقی برای یافتن نرخ یادگیری فردی برای هر پارامتر استفاده می کند. همچنین دارای مزایای Adagrad [10] است ، که در تنظیمات با شیب های پراکنده بسیار خوب کار می کند ، اما در بهینه سازی غیر متناوب شبکه های عصبی و RMSProp [11] مبارزه می کند ، که برای حل برخی از مشکلات Adagrad و واقعاً کار می کند. خوب در تنظیمات آنلاین. آدم با توجه به مقاله "نگاهی به روند یادگیری ماشینی" از آندره کرپتی ، محبوبیت را به صورت تصاعدی مطرح کرده است.

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

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

آدم یک روش نرخ یادگیری سازگار است ، به این معنی که نرخ یادگیری فردی را برای پارامترهای مختلف محاسبه می کند. نام آن از برآورد لحظه سازگار گرفته شده است ، و دلیل نامگذاری آن به این دلیل است که آدم از تخمین لحظات اول و دوم شیب برای تطبیق نرخ یادگیری برای هر وزن شبکه عصبی استفاده می کند. حالا ، لحظه چیست؟N-Th Moment از یک متغیر تصادفی به عنوان مقدار مورد انتظار آن متغیر به قدرت n تعریف می شود. به طور رسمی تر:

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

در جایی که M و V به طور متوسط در حال حرکت هستند ، G در Mini Batch فعلی شیب دارد و Betas-Hyper-Parameters New Algorithm. آنها به ترتیب مقادیر پیش فرض خوبی از 0. 9 و 0. 999 دارند. تقریباً هیچ کس هرگز این مقادیر را تغییر نمی دهد. بردارهای میانگین در حال حرکت با ZERO در اولین تکرار آغاز می شوند.

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

مقادیر مورد انتظار برآوردگرها باید با پارامتری که می خواهیم تخمین بزنیم برابر باشد ، همانطور که اتفاق می افتد ، پارامتر در مورد ما نیز مقدار مورد انتظار است. اگر این خصوصیات صحیح باشد ، این بدان معنی است که ما برآوردگرهای بی طرفانه داریم.(برای کسب اطلاعات بیشتر در مورد خصوصیات آماری برآوردگرهای مختلف ، به کتاب یادگیری عمیق یان گودفلور ، فصل 5 در مورد اصول یادگیری ماشین مراجعه کنید). اکنون خواهیم دید که اینها برای میانگین های متحرک ما صادق نیستند. از آنجا که ما به طور متوسط با صفر شروع می کنیم ، برآوردگرها نسبت به صفر مغرضانه هستند. بیایید ثابت کنیم که برای M (اثبات V می تواند مشابه باشد). برای اثبات اینکه ما باید برای M تا اولین شیب فرمول را فرمول کنیم. بیایید سعی کنیم مقادیر زوجی M را از بین ببریم تا او الگویی را که می خواهیم از آن استفاده کنیم ، ببینیم:

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

حال ، بیایید نگاهی به مقدار مورد انتظار M بیندازیم ، تا ببینیم که چگونه با لحظه اول واقعی ارتباط دارد ، بنابراین می توانیم اختلاف این دو را اصلاح کنیم:

در ردیف اول ، ما از فرمول جدید خود برای حرکت متوسط برای گسترش m استفاده می کنیم. بعد ، ما G [i] را با G [t] تقریب می دهیم. اکنون می توانیم آن را از جمع خارج کنیم ، زیرا اکنون به من بستگی ندارد. از آنجا که تقریب در حال انجام است ، خطای C در فرمول ظهور می کند. در خط آخر ما فقط از فرمول برای جمع یک سری هندسی محدود استفاده می کنیم. دو مورد وجود دارد که باید از آن معادله یاد کنیم.

  1. ما برآوردگر مغرضانه داریم. این فقط برای آدم فقط صادق نیست ، با استفاده از میانگین های متحرک (SGD با حرکت ، RMSProp و غیره) ، الگوریتم ها نیز همین امر را در اختیار دارد.
  2. این اثر زیادی نخواهد داشت مگر اینکه این التماس آموزش باشد ، زیرا ارزش بتا به قدرت T به سرعت به سمت صفر می رود.

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

تنها کاری که باید انجام شود استفاده از آن دسته از میانگین های متحرک برای مقیاس یادگیری به صورت جداگانه برای هر پارامتر است. روشی که در آدم انجام می شود بسیار ساده است ، برای انجام بروزرسانی وزن ما موارد زیر را انجام می دهیم:

در جایی که W وزن مدل است ، ETA (به نظر می رسد مانند حرف n) اندازه مرحله است (می تواند به تکرار بستگی داشته باشد). و این همان است ، این قانون به روزرسانی برای آدم است. برای برخی از افراد می توان درک چنین مفاهیمی را با کد ساده تر کرد ، بنابراین اجرای احتمالی آدم در پایتون است:

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

اولین مورد ، به نام Adamax توسط نویسندگان آدم در همان مقاله معرفی شد. ایده با Adamax این است که به مقدار V به عنوان هنجار L2 شیب های فعلی و گذشته نگاه کنیم. ما می توانیم آن را به قانون به روزرسانی LP تعمیم دهیم ، اما برای مقادیر بزرگ P بسیار ناپایدار می شود. اما اگر از مورد خاص هنجار L-infinity استفاده کنیم ، این امر منجر به یک الگوریتم شگفت آور پایدار و خوب عمل می شود. در اینجا نحوه اجرای Adamax با Python آورده شده است:

درک دوم کمی سخت تر است ، به نام نادام [6]. نادام توسط تیموتی دوزات در مقاله "شامل حرکت نستروف در آدم" منتشر شد. همانطور که از نام پیدا می کند ، ایده استفاده از اصطلاح Nesterov Momentum برای اولین میانگین های متحرک است. بیایید نگاهی به قانون به روزرسانی SGD با حرکت بیندازیم:

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

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

همین روش را می توان با تغییر اولین میانگین متحرک به یک حرکت شتاب Nesterov در آدم گنجانید. یک ترفند محاسبات را می توان در اینجا اعمال کرد: به جای به روزرسانی پارامترها برای ایجاد مرحله حرکت و تغییر دوباره ، می توانیم با استفاده از مرحله حرکت مرحله Time T + 1 فقط یک بار ، در حین بروزرسانی مرحله زمانی قبلی ، به همان تأثیر برسیم. t به جای T + 1. با استفاده از این ترفند ، اجرای نادام ممکن است به این شکل باشد:

خواص آدم

در اینجا برخی از خصوصیات آدم را ذکر می کنم ، تا اثبات این که این موارد صحیح است ، به مقاله اشاره دارد.

  1. اندازه مرحله واقعی که توسط آدم در هر تکرار گرفته شده تقریباً محدود به اندازه پله پارامتر است. این خاصیت درک بصری را به بیش از حد پارامتر نرخ یادگیری ناخواسته قبلی اضافه می کند.
  2. اندازه مرحله قانون به روزرسانی آدم به بزرگی شیب متغیر است ، که در هنگام عبور از مناطقی با شیب های کوچک (مانند نقاط زین یا دره) به مقدار زیادی کمک می کند. در این مناطق SGD تلاش می کند تا به سرعت از طریق آنها حرکت کند.
  3. آدم برای ترکیب مزایای Adagrad ، که به خوبی با شیب های پراکنده کار می کند ، و RMSProp ، که در تنظیمات آنلاین کار می کند ، طراحی شده است. داشتن هر دوی این موارد ما را قادر می سازد تا از ADAM برای طیف گسترده تری از کارها استفاده کنیم. همچنین آدم را می توان به عنوان ترکیبی از RMSProp و SGD با حرکت نگاه کرد.

مشکلات آدم

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

سپس ، مقاله نادام نمودارهایی را ارائه داد که نتایج حتی بهتری را نشان می داد:

با این حال ، پس از مدتی مردم متوجه شدند که با وجود زمان آموزش برتر ، آدم در برخی مناطق به یک راه حل بهینه همگرا نمی شود ، بنابراین برای برخی از کارها (مانند طبقه بندی تصویر در مجموعه داده های محبوب Cifar) نتایج پیشرفته هنوز هم هستندفقط با استفاده از SGD با حرکت حاصل می شود. بیش از آن ویلسون و هم. آل [9] در مقاله خود "ارزش حاشیه ای از روشهای شیب تطبیقی در یادگیری ماشین" نشان داد که روشهای تطبیقی (مانند آدم یا آدلتا) و همچنین SGD را با حرکت در هنگام آزمایش بر روی مجموعه متنوعی از کارهای عمیق یادگیری ، تعمیم نمی دهند. دلسرد کردن مردم برای استفاده از الگوریتم های بهینه سازی محبوب. تحقیقات زیادی از آن زمان برای تجزیه و تحلیل تعمیم ضعیف آدم انجام شده است که سعی در بستن این شکاف با SGD دارد.

نیتیش شریش Keskar و ریچارد سوچر در مقاله خود "بهبود عملکرد تعمیم با جابجایی از آدم به SGD" [5] همچنین نشان داد که با جابجایی به SGD در طول آموزش ، آنها قادر به دستیابی به قدرت تعمیم بهتری نسبت به هنگام استفاده از آدم هستند. آنها یک اصلاح ساده را پیشنهاد کردند که از یک ایده بسیار ساده استفاده می کند. آنها متوجه شده اند که در مراحل اولیه آموزش آدم هنوز از SGD بهتر است اما بعداً یادگیری اشباع شده است. آنها استراتژی ساده ای را پیشنهاد کردند که آنها را به آنها می گویند که در آن شروع به آموزش شبکه عصبی عمیق با آدم می کنند اما در صورت برخورد معیارهای خاص به SGD تغییر می کنند. آنها توانستند با حرکت به نتایج قابل مقایسه با SGD دست یابند.

در مورد همگرایی آدم

یک نکته مهم با فهمیدن اینکه چه مشکلی در آدم وجود دارد ، تجزیه و تحلیل همگرایی آن بود. نویسندگان ثابت کردند که آدم در مقاله اصلی خود به حداقل جهانی در تنظیمات محدب همگرا می شود ، با این حال ، چندین مقاله بعداً دریافتند که اثبات آنها حاوی چند اشتباه است. بلوک ET. آل [7] ادعا كرد كه آنها در تجزیه و تحلیل همگرایی اصلی خطاها را مشاهده كرده اند ، اما هنوز هم ثابت كردند كه الگوریتم همگرا می شود و در مقاله خود اثبات می كند. یکی دیگر از مقاله های اخیر کارمندان Google در ICLR 2018 ارائه شد و حتی برنده جایزه بهترین مقاله شد. برای عمیق تر کردن مقاله آنها ، ابتدا باید چارچوبی را که نویسندگان آدم برای اثبات این امر برای عملکردهای محدب همگرایی می کنند ، توصیف کنم.

در سال 2003 مارتین زینکویچ مشکل برنامه نویسی محدب آنلاین را معرفی کرد [8]. در تنظیمات ارائه شده ، ما دنباله ای از توابع محدب C1 ، C2 و غیره (عملکرد از دست دادن در مینی دسته در صورت بهینه سازی یادگیری عمیق) داریم. الگوریتم ، که مشکل (ADAM) را در هر Timestamp T حل می کند ، نقطه X [T] (پارامترهای مدل) را انتخاب می کند و سپس عملکرد ضرر C را برای زمان بندی فعلی دریافت می کند. این تنظیم به بسیاری از مشکلات دنیای واقعی ترجمه می شود ، برای مثال ، معرفی مقاله را بخوانید. برای درک چگونگی عملکرد الگوریتم ، ارزش پشیمانی از الگوریتم پس از T Rounds به شرح زیر تعریف شده است:

در جایی که R پشیمان است ، C تابع از دست دادن در TTH MINI BATCH است ، W بردار پارامترهای مدل (وزن) است و W Star مقدار بهینه بردار وزن است. هدف ما این است که ثابت کنیم پشیمانی از الگوریتم R (t) = o (t) یا کمتر است ، به این معنی که به طور متوسط مدل به یک راه حل بهینه تبدیل می شود. مارتین زینکویچ در مقاله خود ثابت کرد که نزول شیب با استفاده از خاصیت توابع محدب به راه حل های بهینه در این تنظیم همگرا می شود:

همین رویکرد و چارچوب از نویسندگان آدم استفاده کرد تا ثابت کند که الگوریتم آنها به یک راه حل بهینه همگرا می شود. Reddi و همکاران.[3] در اثبات خود چندین اشتباه را مشاهده کرد ، اصلی که در این ارزش قرار دارد ، که در هر دو آدم ظاهر می شود و اثبات آدم از اوراق بهادار همگرایی را بهبود می بخشد:

جایی که V به عنوان یک تابع انتزاعی تعریف می شود که میزان یادگیری را برای پارامترهایی که برای هر الگوریتم های جداگانه متفاوت است ، مقیاس می کند. برای آدم ، میانگین حرکت شیب های مربع گذشته است ، برای Adagrad این مجموع تمام شیب های گذشته و فعلی است ، برای SGD فقط 1 است. نویسندگان دریافتند که برای اثبات کار ، این مقدار باید مثبت باشد. به راحتی می توان دید که برای SGD و Adagrad همیشه مثبت است ، با این حال ، برای آدم (یا RMSProp) ، ارزش V می تواند به طور غیر منتظره عمل کند. آنها همچنین نمونه ای را ارائه دادند که در آن آدم نتوانسته است همگرایی کند:

برای این دنباله ، به راحتی می توان فهمید که راه حل بهینه x = -1 است ، با این حال ، چگونه نویسندگان نشان می دهند ، آدم به مقدار بسیار زیر بهینه x = 1. همگرا می شود. الگوریتم شیب بزرگ C را یک بار در هر 3 مرحله بدست می آورد ، ودر حالی که 2 مرحله دیگر آن را شی ب-1 مشاهده می کند ، که الگوریتم را در جهت اشتباه حرکت می دهد. از آنجا که مقادیر اندازه مرحله اغلب با گذشت زمان کاهش می یابد ، آنها پیشنهاد می کنند حداکثر مقادیر V را حفظ کنند و از آن به جای میانگین متحرک برای به روزرسانی پارامترها استفاده کنند. الگوریتم حاصل AMSGRAD نام دارد. ما می توانیم آزمایش آنها را با این نوت بوک کوتاه که من ایجاد کردم تأیید کنیم ، که نشان می دهد الگوریتم های مختلف در دنباله عملکرد تعریف شده در بالا همگرا می شوند.

چقدر در عمل با داده های دنیای واقعی کمک می کند؟متأسفانه ، من یک مورد را ندیده ام که در دستیابی به نتایج بهتر از آدم کمک کند. Filip Korzeniowski در پست خود آزمایش های مربوط به Amsgrad را توصیف می کند ، که نتایج مشابهی با آدم نشان می دهد. سیلوین گوگر و جرمی هوارد در پست خود نشان می دهند که در آزمایشات خود Amsgrad در واقع از آدم بدتر عمل می کند. برخی از داوران مقاله همچنین خاطرنشان كردند كه این مسئله ممكن است نه در خود آدم باشد ، بلكه در چارچوب ، كه من در بالا توضیح دادم ، برای تجزیه و تحلیل همگرایی ، كه این امکان را برای تنظیم بیش از حد پارامتر فراهم نمی كند.

پوسیدگی وزن با آدم

یک مقاله که در واقع به آدم کمک می کند ، "رفع تنظیمات پوسیدگی وزن در آدم" [4] توسط ایلیا لوشچیلوف و فرانک هوتتر است. این مقاله شامل کمک ها و بینش های زیادی در مورد آدم و پوسیدگی وزن است. اول ، آنها نشان می دهند که با وجود اعتقاد مشترک ، تنظیم مجدد L2 برابر با پوسیدگی وزن نیست ، اگرچه برای نزول شیب تصادفی معادل آن است. روش پوسیدگی وزن در سال 1988: این است:

جایی که Lambda پارامتر Hyper Paramer Paramer برای تنظیم است. من کمی نماد را تغییر دادم تا با بقیه پست سازگار باشم. همانطور که در بالا تعریف شد ، پوسیدگی وزن در آخرین مرحله ، هنگام بروزرسانی وزن ، مجازات وزنهای بزرگ را اعمال می کند. روشی که به طور سنتی برای SGD اجرا شده است ، از طریق تنظیم L2 است که در آن ما عملکرد هزینه را تغییر می دهیم تا شامل هنجار L2 بردار وزن باشد:

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

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

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

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

در جایی که B اندازه دسته ای است ، B تعداد کل نقاط تمرینی در هر دوره است و T تعداد کل دوره ها است. این جایگزین Lambda Hyper-Parameter Lambda توسط New One Lambda نرمال شده است.

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

ND-ADAM

یک تلاش دیگر برای رفع آدم ، که من در عمل چیزهای زیادی ندیده ام توسط ژانگ و هم پیشنهاد شده است. AL در مقاله خود "جهت طبیعی نگهدارنده آدم" است [2]. این مقاله دو مشکل آدم را نشان می دهد که ممکن است باعث تعمیم بدتر شود:

  1. به روزرسانی های SGD در شیب های تاریخی نهفته است ، در حالی که برای آدم اینگونه نیست. این تفاوت همچنین در مقاله قبلاً ذکر شده مشاهده شده است [9].
  2. دوم ، در حالی که بزرگی به روزرسانی های پارامتر ADAM برای تبادل شیب متغیر است ، تأثیر به روزرسانی ها در همان عملکرد کلی شبکه هنوز با بزرگی پارامترها متفاوت است.

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

نتیجه

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

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

برچسب : نویسنده : منیژه سلیمی بازدید : <-PostHit-> تاريخ : جمعه 12 خرداد 1402 ساعت: 18:57