مشکل محوشدگی گرادیان (Gradient Vanishing) در شبکه‌های عصبی عمیق

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

در دوره‌ی آشنایی با شبکه‌های عصبی، فهمیدیم که یک شبکه‌ی عصبی چگونه یادگیری را انجام می‌دهد. این شبکه‌ها با استفاده از عملیات پیش‌خور (feed forward) و پس انتشار خطا (back propagation)، وزن‌ها را آپدیت کرده و یادگیری را انجام می‌دهند.

نحوه‌ی یادگیری در شبکه‌های عصبی در شکل زیر مشخص شده است:

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

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

در شکل بالا مشاهده می‌شود که الگوریتمِ شبکه‌ی عصبی عمیق می‌خواهد پس‌انتشار (back propagation) را از لایه‌ی آخر به اول اجرا کند ولی هر چه در لایه‌ها به سمت لایه‌ی اول پیش می‌رود قدرت آپدیت وزن کم و کم‌تر می‌شود و این همان محوشدگی گرادیان یا gradient vanishing است.

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

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

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

» وب‌سایت velog.io

» وب‌سایت gfycat

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

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

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