سلام.
من سوال رو کاملا برعکس متوجه شدم. فکر کردم شما دنبال راهکارهایی هستید که دقت ترین رو بهتر و تست رو بدتر کنه(احساس کردم شاید برای ارائه ای چیزی نیاز به این دارید!!!) از قرار معلوم برعکسه و شما این مشکل رو دارید و میخوایید برطرفش کنید. (لطفا وقت خیلی بیشتری برای انتخاب عنوان سوال صرف کنید تا عنوان مشخص باشه!)
از دلایل رخ دادن این اتفاق میشه موارد زیر باشه :
1. بشدت اورفیت کنید (مدل خیلی بزرگتر از نیاز بدون استفاده از رگیولایریزشن وتکنیک های مشابه)
2.توزیع داده تست شما با داده ترینینگ شما کاملا متفاوت باشه
هر دو این سناریوها باعث میشه دقت ترینینگ شما بالا و دقت تست شما خیلی کم باشه.
برای اینکه بتونید این مساله رو کاهش بدید از دراپ اوت استفاده کنید و از weight decay
دارپ اوت رو روی همه لایه ها لحاظ کنید با نرخ ناچیز مثل 0.1 یا 0.2 و بعد بر اساس تعداد پارامترتون و طی چند گام مقادیر رو تنظیم کنید معمولا 0.2 مقدار مناسبیه . (البته نسبیه با توجه به حجم و اندازه مدل شما) . دراپ اوت زیادی باعث اندرفیت شبکه میشه. ترجیح اینه بتونید با دراپ اوت رگیولارایز کنید تا weight decay که پایین میگم ولی در عمل بالانس بین این دو بهترین جواب رو میده.
مقدار weight decay
رو کم کم افزایش بدید (مثلا در قدم های 10 برابری مثلا اگر اول 0.00005
هست در گام بعدی 0.0005
در گام بعدی 0.005
و بعد 0.05
. مثلا در قدم اخر دیید نتیجه بد شد تو همین رنج مقدارش رو کم میکنید مثلا میکنید 0.03
اگر بهبود داشت کمی بیشتر پیش میرید و ببینید ایا نسبت به گام از مرحله قبلی بهتر شده یا بدتر نهایتا میرسید به 0.01
اگر اینم بدتر بود برمیگردید به مرحله قبل و حالا تو اون رنج کم و زیاد میکنید مثلا 0.003
و بعد 0.006
واینطور سعی میکنید به یک نرخ مناسب برسید . (اگر کمتر کردید بهتر شد برید سراغ کاهش تدریجی اگر بدتر شدبرید سراغ افزایش تدریجی)
اگه اختلاف بخاطر تفاوت توزیع باشه باید ترینینگ ست خودتون رو تصحیح کنید علاوه بر اون باید چک کنید همه مراحلی که در ترینینگ انجام میدید در تست هم انجام میدید یا نه ؟
مثلا کسر میانگین در هر دو باید انجام بشه یا اگر نرمالسازی خاصی انجام دادید اینجا هم باید لحاظ بشه . اگر در ترینینگ کراپ میکنید در تست هم باید چندکراپ بگیرید و استفاده کنید. و مسائلی از این دست.
اگر اورفیت کرده باشید با دیتااگمنتیشن و تکنیک هایی که عرض کردم باید بتونید دقت مناسب تری بگیرید . از بچ نرمالیزیشن هم استفاده کنید اگر نمیکنید تا تعمیم بهتری بتونید داشته باشید. اینها مواردی هست که در حال حاضر به ذهنم میرسه.
یک نکته دیگه هم عدم تناسب تست با ترینینگ باشه یعنی نمونه های شما در تست به اندازه کافی در ترینینگ وجود ندارن و شبکه برای تشخیص اونها دچار مشکل میشه. برای رفع این مساله هم باید ترینینگ ست رو تصحیح کنید یا اگه داده ها تعدادشون برابر نیست این مساله رو در لاس باید لحاظ کنید (یا کلاسها رو متوازن کنید یا وزن های متناسب رو به لاس دخالت بدید تا کلاس کمتر و بیشتر از این جهت متناسب بشن)