به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام...با تشکر از زحمات دوستانی که زحمت میکشن و پاسخ میدهند....میخواستم بدونم فرق مقدار دهی اولیه gaussian و xavier در چه چیز هست وکلا این دو چه چیزی هستند و در کدام لایه ها کاربرد دارند؟ و چه چیزی باعث میشه که xavier زودتر همگرا بشه؟
با تشکر...

توسط (215 امتیاز)

2 پاسخ

+4 امتیاز
 
بهترین پاسخ

مقدار دهی اولیه وزنها معمولا از توزیع گوسی ب میاگین صفر و انحراف معیار مشخص استفاده میشه. توی روش وزن دهی عادی گوسی مقدار انحراف معیار توزیع رو معمولا به صورت دستی (مثلا 0.01) در نظر میگیرن. ولی توی روش xavier انتخاب انحراف معیار توزیع گوسی با توجه به تعداد نورونهای لایه قبلی انتخاب میشه. اگه تعداد نورونهای لایه قبلی رو fan-in در نظر بگیرید انحراف معیار توطیع گوسی رو متناسب عکس fan-in در نظر میگیره. یعنی هر چه تعداد نورونهای لایه قبلی (fan-in) بیشتر باشه انحراف معیار توزیع گوسی کمتر و درنتیجه مقادیر وزنها کوچکتر خواهند بود.
دلیل این کار هم اینه که وقتی تعداد نورونهای لایه قبلی زیاد باشد در نتیجه تعداد وزنهای متصل به نورون لایه ی کنونی بیشتر میباشد و چون این وزن ها در خروجی نورونهای لایه قبل ضرب و نتایجشان با هم جمع میشود در نتیجه اگر وزنها خیلی بزرگ انتخاب شوند احتمال بالا بودن ورودی نورون لایه ی کنوی بیشتر شده و در نتیجه احتمال این که مثلا برای tanh activation function خروجی به ناحیه اشباع وارد شود بیشتر میشود (که این خود باعث کوچک بودن مشتق و نزدیک صفر بودن مشتق شده و در نتیجه وزنها نمیتوانند به خوبی آپدیت شوند) برای سایر توابع فعال مثل RELU نیز میتواند باعث سختر همگرا شدن شبکه یا حتی واگرایی شبکه شود. اگر مقدار وزنها هم خیلی کم باشن ورودی نورونها احتمال این که به صفر نزدیکتر باشد بیشتر میشود و این خود با توجه به روابط آپدیت وزنها باعث عدم آپدیت وزنها میشود.
البته روش xavier مربوط به سال 2010 هستش و اون زمان روش batch normalization اون زمان معرفی نشده بود. استفاده از batch normalization تا حد زیادی حساسیت به initialize کردن وزن ها رو کاهش داده. در عمل هم معمولا برای شبکه های بزرگ از یک شبکه که قبلا آموزش دیده برای شرایط اولیه استفاده میشه.

توسط (540 امتیاز)
انتخاب شده توسط
تو دقت هم تاثیر دارن معمولا. مخصوصا روش batch normalization به نظرم همیشه باید استفاده بشه. البته روش بچ نرمالایزشن روش initialize کردن نیست که بخواهیم با xavier یا گوسی عادی مقایسه کنیم. ولی معولا استفاده از این روش دقت رو هم میتونه بهبود بده.
اها...خیلی متشکرم...عالی...
آقای محبی ببخشید در مورد این جمله ای که فرمودید " اگه تعداد نورونهای لایه قبلی رو fan-in در نظر بگیرید انحراف معیار توزیع گوسی رو متناسب عکس fan-in در نظر میگیره "  نباید اینطور باشه " انحراف معیار توزیع گوسی را متناسب با عکس مجذور fan_in  در نظر میگیره" باشه؟
+3 امتیاز

در ادامه صحبتهای دوستمون، روش 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

توسط (1.6k امتیاز)
...