سلام
1 - اگه حجم داده های آموزشیتون خیلی کمه بله، می تونه خیلی تاثیر داشته باشه
اما برای اینکه مطمئن بشید، باید از روشهای دیگه هم استفاده کنید. مثلا اول شبکه رو به طور معمولی و با همون دو تا لایه آخر آموزش بدید و دقتش رو حساب کنید(بهتره چند بار این کارو انجام بدید که نتایج مطمئن تر باشه)
بعد از روشهای regularization استفاده کنید و بازم دقت رو اندازه بگیرید. اگه دقت به طور میانگین بالاتر رفته باشه میشه نتیجه گرفت که شبکه جوابی با generalization بهتر پیدا کرده و جواب قبلی overfit داشته (البته باید حواسمون باشه که بعضی وقتها ما روی خوده مجموعه تست overfit میشیم)
این پروسه زمانگیریه به طور ذاتی، اما یکی از مطمئن ترین راهها برای اینه که بفهمید آیا شبکه overfit داره یا نه.
2 - نه نرخ یادگیری کل اگه صفر باشه هیچ کدوم از لایه ها چیزی یاد نمی گیرن. کاری که باید بکنید بسته به کتابخونه ای که استفاده می کنید داره اما مثلا توی تنسورفلو اون لایه هایی که نمی خواید تغییر کنن، هنگام تعریف پارامتر trainable شون رو false می کنید.
اگه 2 لایه آخر رو خودتون اضافه کردید باید به صورت رندوم مقدار دهی بشن اما اگه جزئی از خوده مدل اولیه بودن، بعضی وقتا می تونید همون وزنهاشون رو نگه دارید و از نرخ یادگیری پایین تری استفاده کنید و به نتیجه بهتری هم برسید
نرخ یادگیری مناسب هم با cross validation باید بدست بیاد. مثلا اول می ذارید 1e-2 ، بعد چندتا epoch شبکه رو آموزش میدید و افت خطا رو می بینید، اگه خوب بود با همین فرمون ادامه می دید اما اگه دیدید شبکه نوسان زیاد داره، نرخ یادگیری رو کم می کنید و ....
و در نهایت وقتی بازه نرخ های یادگیری مناسب رو پیدا کردید میذارید که شبکه برای یه مدت طولانی تر آموزش ببینه
3 - برای لایه هایی که فریز هستن و تغییر نمی کنن، weight decay تاثیری نداره، اما برای 2 لایه آخر که قرار تغییر بکنن، تاثیر داره. اینم که چه عددی مناسبه رو بازم باید با cross validation بدست بیارید. یعنی تست کنید ببینید چه عددی نتیجه بهتری بهتون میده. اما همینطوری برای شروع یه چیزی در حدود 1e-5 می تونه خوب باشه