مشکل انفجار گرادیان (Exploding Gradients) در شبکه‌های عصبی عمیق

مدرس: مسعود کاویانی

در درس قبلی از دوره‌ی جاری در مورد محوشدگی گرادیان (gradient vanishing) صحبت کردیم. نقطه‌ی مقابل محوشدگی گرادیان، مشکل انفجار گرادیان یا همان exploding gradients است که به جای اضمحلال و محوشدن گرادیان، ممکن است آن را بیش از اندازه بزرگ نماید و به خاطر همین الگوریتم نتواند به یک همگرایی (converge) در میان وزن‌ها دست پیدا کند.

در شبکه‌های عصبی عمیق با زیاد شدن تعداد لایه‌ها، بایستی هر کدام از وزن‌ها در لایه‌های مختلف با دقت بیشتری آپدیت شوند. اگر این گونه نشد، ممکن است وزن‌ها بیش از مقدار مورد انتظار، آپدیت شده و در اصطلاح الگوریتم به جای همگرایی به یک جواب بهینه (ترکیب وزن‌های مناسب)، واگرا (diverge) شده و نتواند به جواب‌های بهینه دست پیدا کند.

در دروس دروه‌ی آشنایی با شبکه‌های عصبی آموختیم که وزن‌ها در ترکیب با یکدیگر خطایی ایجاد می‌کنند و با بالا و پایین کردن این اوزان، می‌توان خطا را تغییر داد. فضای خطا (error space) در یک شبکه با دو وزن به صورت زیر است:

در شکل بالا، الگوریتم دو وزن را انتخاب کرده و با توجه به این اوزانِ انتخاب شده در نقطه‌ی A قرار گرفته است. حال الگوریتم در فرآیند یادگیری بایستی آرام آرام وزن‌ها را تغییر دهد تا بتواند به یک بهینه‌ی محلی که مقدار خطای کمتری نسبت به اطراف دارد برسد. ولی در برخی از مواقع به دلیل محاسبات ریاضی و به تبع آن انفجار گرادیان، این آپدیت بیش از حد انجام شده الگوریتم با تغییر وزن‌ها به مقدار زیاد به نقطه‌ی B (در شکل زیر) پرش می‌کند:

همان‌طور که در شکل بالا ملاحظه می‌شود، وزن‌ها به میزان نامعقولی در هنگام آپدیت، تغییر کرده‌اند و این تغییرِ نامناسب منجر به عدم همگرایی الگوریتم شده است. الگوریتم با این واگرایی‌ها نمی‌تواند در یک فضای پیچیده که تعداد اوزان خیلی بیشتر از ۲ عدد است، به یک نقطه‌ی بهینه (محلی یا سراسری) برسد و عملاً یادگیری انجام نمی‌شود.

تکنیک‌های مختلفی مانند برش گرادیان (gradient clipping) برای مقابله با انفجار گرادیان موجود است. در روشِ بُرش گرادیان، اگر مقدار گرادیان از یک حدی بالاتر یا پایین‌تر برود، می‌توان آن را به یک بازه‌ی مشخص (مثلاً بین ۰/۵- تا ۰/۵+) محدود کرد تا گرادیان تغییر غیر منطقی و زیادی نکند. همچنین روش نرمال‌سازی (normalization) برای مقادیر گرادیان نیز می‌تواند در این مورد استفاده قرار گیرد. در نرمال‌سازی گرادیان کاری همانند روش نرمال‌سازی که در پیش‌پردازش داده‌ها انجام می‌دهیم. یعنی بعد از هر بار آپدیت وزن‌ها می‌توانیم مقادیر گرادیان را به یک بازه‌ی کوچکتر نرمال یا در اصطلاح rescale کنیم.

منابع این بحث و اطلاعات بیشتر

» وب‌سایت paperspace

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *