آیا اضافه کردن نویز تصادفی به لایه های پنهان یک امر عادی محسوب می شود؟ تفاوت بین اضافه کردن و اضافه کردن dropout و عادی سازی دسته ای چیست؟


پاسخ 1:

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

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

اضافه کردن نویز تصادفی به لایه پنهان به همین روش کار می کند ، اما با توزیع احتمال متفاوت. به جای داشتن وزنهای ثابت ، شما یک توپولوژی ثابت دارید و توزیع احتمالاً به طور تصادفی وزنها را طبق یک توزیع گاوسی انتخاب می کند که متمرکز بر وزنهای "واقعی" است ، یعنی وزنهایی که در هارد دیسک خود ذخیره می کنید. این همچنین یک مدل متوسط ​​است و باید دارای یک تنظیم تنظیم کننده باشد ، با این محدودیت که سر و صدا (واریانس) نباید سیگنال را تحت الشعاع خود قرار دهد. به عنوان مثال ، اگر برای اولین بار از BatchNorm استفاده می کنید ، یک پروفایل خروجی استاندارد تقریباً عادی دارید (واحدهای محور در صفر با یک واریانس) و بعد می توانید مثلاً سر و صدای خود را با واریانس ۰.۱ اعمال کنید. می توانید با استفاده از واریانس بازی کنید تا ببینید چه چیزی مؤثر است.

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


پاسخ 2:

من آن را یک ترفند بهینه سازی و نه یک امر عادی تلقی می کردم.

اثر باید با تأثیر تصادفی بودن در SGD مطابقت داشته باشد.

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

اضافه کردن نویز تصادفی ضعیف به وزن دقیقاً همین کار را می کند. [توجه: نزول شیب چیزی در هر تکرار به وزن اضافه می کند!]


پاسخ 3:

ویرایش:

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

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

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