در دورهی آشنایی با شبکههای عصبی، فهمیدیم که یک شبکهی عصبی چگونه یادگیری را انجام میدهد. این شبکهها با استفاده از عملیات پیشخور (feed forward) و پس انتشار خطا (back propagation)، وزنها را آپدیت کرده و یادگیری را انجام میدهند.
نحوهی یادگیری در شبکههای عصبی در شکل زیر مشخص شده است:
در شکل بالا، دو تصویر (یکی عدد ۲ و یکی عدد ۹) به الگوریتم شبکهی عصبی داده میشود. این شبکه برای هر تصویر، ابتدا آن تصویر را دریافت کرده، با وزنهای موجود به یک نتیجه در لایهی آخر میرسد. سپس الگوریتم با استفاده از محاسباتی میزان خطا را محاسبه کرده و در فاز بعدی وزنها را از آخر به اول تغییر میدهد (آپدیت میکند). این تغییر وزنها به دلیل اینکه است که بتواند در فضا گرادیان یا همان مشتق را صفر کند. به بیان سادهتر گرادیان نوعی خطا است که میخواهیم به صفر نزدیک شود. طبیعتاً هر چقدر تعداد بیشتری تصویر به عنوان مجموعهی آموزشی به الگوریتم داده شود، این آپدیتها بیشتر انجام شده، خطا کمتر میشود و الگوریتم بهتر یاد میگیرد.
حال به سراغ مشکل محوشدگی گرادیان (gradient vanishing) برویم. هنگامی که تعداد لایهها در شبکههای عصبی زیاد شده و به اصطلاح شبکههای عصبی عمیق یا همان یادگیری عمیق تشکیل شود، پس انتشار خطا نمیتواند وزنهای لایههای اول را به خوبی اصطلاح کند. چون الگوریتمهای آپدیت وزنها در شبکههای عصبی در هنگام پسانتشار خطا، از لایهی آخر به اول وزنها را آپدیت میکنند و هر کدام از محاسبات، با یک ضریبی از وزن قبلی، وزن جدید را ساخته و به اصطلاح آپدیت میکند. پس هنگامی که پسانتشار خطا از آخر به اول اجرا میشود، لایههای اول نمیتوانند به مقدار مناسب آپدیت شوند. چیزی که در شکل زیر مشخص است:
در شکل بالا مشاهده میشود که الگوریتمِ شبکهی عصبی عمیق میخواهد پسانتشار (back propagation) را از لایهی آخر به اول اجرا کند ولی هر چه در لایهها به سمت لایهی اول پیش میرود قدرت آپدیت وزن کم و کمتر میشود و این همان محوشدگی گرادیان یا gradient vanishing است.
برای فهم بهتر فرض کنید شخصی در منتهی علیه سمت راست از شکل بالا (لایهی آخر) ایستاده است. این شخص با محاسبهی خطا، به تمامیِ وزنهای قبلی با فریاد خود، میزان آپدیت شدن را اعلام میکند. همانطور که مشخص است، صدای این شخص به لایههای اول (سمت چپ در شکل بالا) نمیرسد یا به اندازهی کافی نمیرسد. پس این لایهها نمیتوانند خود را به میزان مناسب آپدیت کنند.
محوشدگی گردایان باعث میشود که الگوریتمِ یادگیری عمیق در بسیاری از مواقع نتواند به وزنهای مناسب برسد و در اصطلاح همگرا (converge) نمیشود. البته الگوریتمها و روشهای مختلفی برای مقابله با این مشکل جدی در شبکههای عصبی عمیق به وجود آمدهاند که در مورد هر کدام از آنها در دروس آینده صحبت خواهیم کرد.
- ۱ » یادگیری عمیق (Deep Learning) چیست؟
- ۲ » تفاوت یادگیری عمیق (Deep Learning) با یادگیری ماشین کلاسیک
- ۳ » تفاوت شبکههای عصبی (Neural Networks) با یادگیری عمیق (Deep Learning) چیست؟
- ۴ » مشکل محوشدگی گرادیان (Gradient Vanishing) در شبکههای عصبی عمیق
- ۵ » مشکل انفجار گرادیان (Exploding Gradients) در شبکههای عصبی عمیق
- ۶ » توابع فعالسازی (Activation Functions) در شبکههای عصبی عمیق
- ۷ » شبکه عصبی پیچشی (Convolutional Neural Network) در یادگیری عمیق
- ۸ » شبکه عصبی بازگشتی (Recurrent Neural Network)
- ۹ » انواع شبکههای عصبی بازگشتی (RNN) و کاربرد آنها
- ۱۰ » شبکه عصبی بازگشتی با حافظهی طولانی کوتاه مدت (LSTM)
- ۱۱ » شبکه عصبی واحد بازگشتی دروازهدار (GRU)
- ۱۲ » شبکههای عصبی عمیق توالی به توالی (Seq2Seq)