💡راهنمای کلی در مورد تنظیم و تعیین هاپیرپارامترهای شبکه های عصبی
✅ نرخ یادگیری: میزان یادگیری شبکه عصبی در هر epoch یا به عبارتی میزان تنظیمات وزنهای سیناپسی را کنترل میکند.
🔷 مقدار بیش از حد: باعث میشه مدل مینیمم اصلی رو رد کند و شبکه عصبی به سمت ناپایداری سوق پیدا کند.
🔷 مقدار بیش از حد کم: هم سرعت یادگیری بسیار پایین میاد و هم شبکه میتونه در مینیمم های محلی گیر کند!
💡 چه مقداری در نظر بگیریم بهتره؟ بستگی به هر مسئله و پروژه دارد. معمولا مقدار 0.001 پیشنهاد میشود، مخصوصا در روش بهینه سازی Adam. ولی بهتر است مقادیر دیگه هم بررسی بشه.
✅ تعداد لایه های پنهان: لایه های پنهان معمولا کار نقش انتقال وردی به فضای ویژگی را اجرا میکنند، به عبارتی یک مسئله پیچیده را به مسئله ساده تر تبدیل میکنند. تعداد این لایه ها عمق و میزان پیچیدگی شبکه عصبی را مشخص میکند.
🔷 تعداد لایه های بیشتر: قابلیت شناسایی الگو در داده های پیچیده. اما هرچقدر این تعداد بیشتر شود تعداد پارامترها (وزنها و بایاس ها) به صورت تصاعدی افزایش پیدا میکند و همین مسئله آموزش شبکه عصبی را بسیار سخت میکند، از طرفی هرچقدر لایه ها بیشتر شود احتمال overfitting شبکه عصبی هم افزایش پیدا میکند.
🔷 تعداد لایه های کمتر: آموزش راحت شبکه عصبی و احتمال overfitting پایین. اما ممکن است با تعداد لایه های کمتر شبکه عصبی نتواند مسائل پیچیده را حل کند یا به عبارتی underfit شود.
✅ تعداد نورونها در لایه ها: تعداد نورون های لایه ی خروجی براساس مسئله تعریف میشود، اما تعداد نورنهای لایه های پنهان توسط کاربر تعیین میشود.
🔷 تعداد نورونهای بیشتر در لایه های پنهان: توانایی حل مسائل پیچیده، اما باعث افزایش تعداد پارامترهای یادگیری و احتمال overfitting بالا.
🔷 تعداد نورونهای کمتر در لایه های پنهان: هزینه محاسباتی پایین، اما ممکن است شبکه نتواند مسائل پیچیده را حل کند.
💡چه تعداد در نظر بگیریم؟ بستگی به مسئله دارد، من معمولا تعداد نورونهای لایه های پنهان را برابر یا دو برابر تعداد ویژگی های ورودی در نظر میگیریم و بعدش اگه نیاز بود تعداد دیگری را بررسی میکنم.
✅ تکنیک Dropout: یک روش رگوله سازی هست که به صورت تصادفی یه سری نورونها را در طول آموزش غیرفعال میکند.
🔷 مقدار بیش از حد کم: تاثیر رگوله سازی کم، و شبکه مستعد overfitting هست.
🔷 مقدار بیش از حد زیاد: ممکنه باعث بشه شبکه عصبی نتونه الگوهای خوبی را یاد بگیرد.
💡مقدار پیش فرض: 0.2-0.5
✅ روش L2 Regularization: در طول یادگیری وزنها رو به صورت تدریجی کاهش میدهد تا از weight exploding جلوگیری کند و از اشباع شبکه جلوگیری میکند.
🔷 مقدار بیش از حد پایین: تاثیر کمتر، احتمال overfitting بالای شبکه عصبی
🔷 مقدار بیش از حد بالا: ممکن است باعث underfit شدن مدل شود و نگذارد شبکه عصبی به خوبی یاد بگیرد.
💡مقدار پیش فرض: .0.01-0.001
✅ تعداد تکه ها (batch size): مشخص میکند که چه تعداد نمونه در هر تکرار آموزش وارد شبکه عصبی شود.
بهتره تعداد بر مبنای 2 باشه تا متناسب با سایز بندی حافظه باشه. 1, 2, 4, 8,16, 32, 64, 128, 256, 512,…
🔷 تعداد پایین: میتواند باعث افزایش خاصیت عمومیت (generalization) شبکه عصبی شود، اما شبکه عصبی نیاز به تعداد epoch بیشتری جهت یادگیری پیدا میکند.
🔷 تعداد بالا (بیشتر از 256): باعث یادگیری سریع شبکه عصبی میشود اما ممکن است خاصیت عمومیت شبکه عصبی پایین بیاید.
💡مقدار پیش فرض: 32-256. من خودم معمولا 32 میگذارم، بعدش اگه نیازی بود تغییر میدهم.
🏢 آکادمی آنلاین مهندسی پزشکی و هوش مصنوعی
@Onlinebme
Post #4203
1.39K
Onlinebme ✅ تاثیر dropout و تعداد لایه های پنهان در عملکرد شبکه عصبی 🔷تعداد لایه پنهان بیشتر میتونه باعث overfitting شبکه عصبی شود. 💡از dropout میتوان برای کاهش overfitting شبکه عصبی استفاده کرد. @Onlinebme
- 👍 8