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

با تشکر

دسته بندی ها

0 امتیاز

سلام و عرض ادب
من میخوام برای حل مشکل اورفیتینگ از فریز کردن لایه ها به جز2 لایه های اخر استفاده کنم
1- آیا میتونه در حل مشکل اورفیت موثر باشه
2 برای فریز کردن باید نرخ یادگیری کل رو صفر بذارم و فقط نسبت به وزن دهی تصادفی 2 لایه اخر اقدام کنم؟
3 به هنگام فریز کردن پارامتر weight decacy رو باید تغییر بدم ؟ اون رو هم صفر بذارم؟
ممنون

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

1 پاسخ

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

سلام
1 - اگه حجم داده های آموزشیتون خیلی کمه بله، می تونه خیلی تاثیر داشته باشه
اما برای اینکه مطمئن بشید، باید از روشهای دیگه هم استفاده کنید. مثلا اول شبکه رو به طور معمولی و با همون دو تا لایه آخر آموزش بدید و دقتش رو حساب کنید(بهتره چند بار این کارو انجام بدید که نتایج مطمئن تر باشه)
بعد از روشهای regularization استفاده کنید و بازم دقت رو اندازه بگیرید. اگه دقت به طور میانگین بالاتر رفته باشه میشه نتیجه گرفت که شبکه جوابی با generalization بهتر پیدا کرده و جواب قبلی overfit داشته (البته باید حواسمون باشه که بعضی وقتها ما روی خوده مجموعه تست overfit میشیم)
این پروسه زمان‌گیریه به طور ذاتی، اما یکی از مطمئن ترین راه‌ها برای اینه که بفهمید آیا شبکه overfit داره یا نه.

2 - نه نرخ یادگیری کل اگه صفر باشه هیچ کدوم از لایه ها چیزی یاد نمی گیرن. کاری که باید بکنید بسته به کتابخونه ای که استفاده می کنید داره اما مثلا توی تنسورفلو اون لایه هایی که نمی خواید تغییر کنن، هنگام تعریف پارامتر trainable شون رو false می کنید.
اگه 2 لایه آخر رو خودتون اضافه کردید باید به صورت رندوم مقدار دهی بشن اما اگه جزئی از خوده مدل اولیه بودن، بعضی وقتا می تونید همون وزن‌هاشون رو نگه دارید و از نرخ یادگیری پایین تری استفاده کنید و به نتیجه بهتری هم برسید
نرخ یادگیری مناسب هم با cross validation باید بدست بیاد. مثلا اول می ذارید 1e-2 ، بعد چندتا epoch شبکه رو آموزش میدید و افت خطا رو می بینید، اگه خوب بود با همین فرمون ادامه می دید اما اگه دیدید شبکه نوسان زیاد داره، نرخ یادگیری رو کم می کنید و ....
و در نهایت وقتی بازه نرخ های یادگیری مناسب رو پیدا کردید میذارید که شبکه برای یه مدت طولانی تر آموزش ببینه

3 - برای لایه هایی که فریز هستن و تغییر نمی کنن، weight decay تاثیری نداره، اما برای 2 لایه آخر که قرار تغییر بکنن، تاثیر داره. اینم که چه عددی مناسبه رو بازم باید با cross validation بدست بیارید. یعنی تست کنید ببینید چه عددی نتیجه بهتری بهتون میده. اما همینطوری برای شروع یه چیزی در حدود 1e-5 می تونه خوب باشه

توسط (1.6k امتیاز)
انتخاب شده توسط
ممنون از پاسخ عالی و از وقت و انرژی که میذارید
...