گرادیان محوشونده

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

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

مشکل مشابه محوشدن گرادیان هنگامی که از توابع فعال‌سازی استفاده می‌شود که مشتق آن‌ها مقادیر بزرگی می‌گیرند، ممکن است رخ بدهد. در گرادیان انفجاری، با محاسبه مشتق‌های جزئی، مقادیر گرادیان نسبت به وزن‌های اصلی خیلی بزرگ‌تر می‌شوند و روند آموزش مدل با مشکل مواجه می‌شود.

## مدل ریاضی
### مدل شبکه بازگشتی
شبکه عصبی بازگشتی که به‌طور گسترده در پردازش زبان‌های طبیعی به کار می‌روند، با چنین مشکلی روبه رو می‌شوند. اگر یک شبکه عصبی بازگشتی را به صورت زیر فرمول‌بندی کنیم:

(h_t, x_t) = F(h_{t-1}, u_t, \theta)از آنجایی که x_t تابعی از h_t است:x_t = F(x_{t-1}, u_t, \theta)معادله زیر را در نظر بگیرید:\begin{align}
 dx_t &= \nabla_\theta F(x_{t-1}, u_t, \theta) d\theta + \nabla_x F(x_{t-1}, u_t, \theta) dx_{t-1} \\
 &= \nabla_\theta F(x_{t-1}, u_t, \theta) d\theta + \nabla_x F(x_{t-1}, u_t, \theta)(\nabla_\theta F(x_{t-2}, u_{t-1}, \theta) d\theta + \nabla_x F(x_{t-2}, u_{t-1}, \theta) dx_{t-2}) \\
 &= \cdots \\
 &= \left(\nabla_\theta F(x_{t-1}, u_t, \theta) + \nabla_x F(x_{t-1}, u_t, \theta) \nabla_\theta F(x_{t-2}, u_{t-1}, \theta) + \cdots \right) d\theta
\end{align}مشتق جزئی را برای لایه‌های شبکه محاسبه می‌کنیم (\eta  نرخ یادگیری است).\Delta \theta = -\eta \cdot\left[
\nabla_x L(x_T)\left(\nabla_\theta F(x_{t-1}, u_t, \theta) + \nabla_x F(x_{t-1}, u_t, \theta) \nabla_\theta F(x_{t-2}, u_{t-1}, \theta) + \cdots \right)
\right]^T همان‌طور که می‌بینیم مشتق در هر لایه حاصل از تعدادی ضرب است. در در صورتی که عامل‌های حاصل ضرب کوچک‌تر از ۱ (به‌طور کلی‌تر با قدر مطلق کوچک‌تر از ۱) باشند. حاصل نهایی به شکل نامطلوبی کوچک می‌شود.\nabla_x F(x_{t-1}, u_t, \theta) \nabla_x F(x_{t-2}, u_{t-1}, \theta)\nabla_x F(x_{t-3}, u_{t-2}, \theta) \cdots 

## راه‌حل‌ها
برای حل مشکل گرادیان محوشونده، راه‌حل‌های زیر وجود دارند.

### نرمال سازی دسته‌ای
روشی استاندارد برای حل مشکل گرادیان محوشونده و گرادیان انفجاری انجام نرمال‌سازی دسته‌ای است. در این روش بین هر دو لایه در شبکه عصبی یک لایه میانی قرار می‌گیرد و مقادیر عددی که از یک لایه به لایه بعد می‌روند را نرمال می‌کند. به این معنی که میانگین آن‌ها را برابر ۰ و واریانس آن‌ها را برابر ۱ می‌کند. در نهایت یک ترکیب خطی روی آن‌ها اعمال می‌کند تا در بازه مشخصی از اعداد قرار بگیرند. انجام این کار باعث می‌شود مقدار عددی گرادیان کنترل بشود و مشکل گرادیان محو شونده تا حد خوبی رفع بشود.

### برش گرادیان
یک روش مؤثر دیگر برش گرادیان است. در این روش یک مقدار بیشینه و یک مقدار کمینه به‌ترتیب برای حل مشکل گرادیان انفجاری و گرادیان محو شونده مشخص می‌شود. سپس مقادیر گرادیانی که در خارج از این بازه باشند، به صورت مصنوعی به مقدار کمینه یا بیشینه تغییر داده می‌شوند. همچنین می‌توان نرم بردار گرادیان را در چنین بازه‌ای قرار داد. چرا که با کنترل نرم اندازه نسبی گرادیان‌ها در مقادیر جدید حفظ می‌شود.

### شبکه‌های باقی مانده
استفاده از شبکه‌های عصبی باقی‌مانده (ResNet) نیز می‌تواند برای حل مشکل گرادیان محو شونده به کار برود. در این شبکه‌ها مسیرهایی وجود دارد که از یک لایه به لایه غیر مجاور آن می‌رود. این ویژگی باعث می‌شود مسیرهایی با طول کمتر وجود داشته باشد که احتمال رخ دادن گرادیان محو شونده را کم می‌کند.

### مقدار اولیه وزن
انجام درست مقداردهی اولیه وزن‌ها می‌تواند برای کاهش مشکل گرادیان محو شونده در شبکه‌های عمیق به‌کار برود. برای مثال در یک مطالعه استفاده از توزیع‌های متفاوت، با توجه به توابع فعال‌سازی که در شبکه به‌کار رفته‌اند توصیه شده‌است. برای مثال برای تابع فعال‌سازی لجستیک استفاده از توزیع گوسی با میانگین و انحراف معیاری مشخص به نتایج بهتری منجر می‌شود.

### روش‌های دیگر
استفاده از روش‌های دیگر آموزش مدل‌های شبکه‌های عصبی به طوری که مبتنی بر پس انتشار و کاهش گرادیان نباشند، باعث می‌شود اصلاً نیازی به حل مسئله نباشد، چرا که مشکل گرادیان محو شونده در این شرایط به وجود می‌آید.

## منابع

رده:شبکه‌های عصبی مصنوعی
رده:یادگیری ماشین