در ادامه صحبتهای دوستمون، روش Xavier مشکلش این بود که با تحلیل تابع سیگموید به قانونشون رسیده بودن و بعدا توی روش He ، با تحلیل روی تابع ReLu ، پارامترهای دیگه ای برای وزندهی معرفی شد
به طور خلاصه :
روش Gaussian : وزندهی بر اساس توزیع گوسی با میانگین صفر و انحراف از معیار کوچک(با تجربه و آزمون و خطا)
روش Xavier (یا Glorot) : وزندهی بر اساس توزیع نرمال با میانگین صفر با انحراف معیار مجذور (f-in + f-out)/2
یا بر اساس توزیع یکنواخت با دامنه مجذور (f-in + f-out)/6 حول صفر
http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
روش He: وزندهی بر اساس توزیع نرمال با میانگین صفر با انحراف معیار مجذور (f-in)/2
یا بر اساس توزیع یکنواخت با دامنه مجذور (f-in)/6 حول صفر
> http://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf
برای لایههایی که تابع activation شون از خانواده ReLu هست، بهتره از He استفاده کنید و لایههایی که تابع فعال سازیشون شبیه سیگموید هستن(برای مثال لایه fully connected آخر که وارد softmax میشه)، از روش Xavier
اینکه از توزیع نرمال استفاده کنید یا از یکنواخت، حداقل من هیچ اصول خاصی براش ندیدم
و نکته دیگه اینکه تمامی این روشها بر اساس نگرش بهینه سازی به قضیه نگاه کردن، نه اینکه عملکرد شبکه روی مساله ای که قراره حل بشه، بهتر بشه
یعنی با استفاده از این روشها ، عملیات یادگیری و بهینه سازی شبکه بهتر انجام میشه، اما لزوما به جواب بهتری دست پیدا نمی کنید. البته خوشبختانه با تحلیلهایی که توی 2 سال اخیر روی خاصیت شبکه های عمیق شده و حدس قوی اینه که شما با احتمال زیادی به نقاط بهینه محلی خوب همگرا میشید (به خصوص با SGD)، این نگرش بهینهسازی صرف، مشکلی ایجاد نکرده
برای دیدن خلاصه روشهای دیگه هم میتونید این صفحه از keras رو ببینید
https://keras.io/initializers