شبکه عصبی بازگشتی و مروری بر مفهوم حافظه کوتاهمدت بلند
قبل از آشنا شدن با شبکه عصبی بازگشتی بهتر است مروری بر مفهوم شبکه عصبی داشته باشیم. شبکههای عصبی مجموعهای از الگوریتمها هستند که شباهت نزدیکی به مغز انسان داشته و به منظور تشخیص الگوها طراحی شدهاند. شبکهی عصبی دادههای حسی را از طریق ادراک ماشینی ، برچسب زدن یا خوشه بندی ورودیهای خام تفسیر میکند. شبکه میتواند الگوهای عددی را شناسایی کند؛ این الگوها بردارهایی هستند که همهی دادههای دنیای واقعی (تصویر، صدا، متن یا سریهای زمانی) برای تفسیر باید به شکل آنها درآیند. شبکههای عصبی مصنوعی از تعداد زیادی مؤلفهی پردازشی (نورون) تشکیل شدهاند که اتصالات زیادی بینشان وجود دارد و برای حل یک مسئله با یکدیگر همکاری دارند.
شبکهی عصبی مصنوعی معمولاً تعداد زیادی پردازشگر دارد که به صورت موازی کار میکنند و در ردیفهایی کنار هم قرار میگیرند. ردیف اول، همچون عصبهای بینایی انسان در پردازش بصری، اطلاعات ورودیهای خام را دریافت میکند. سپس هر کدام از ردیفهای بعدی، به جای ورودی خام، خروجی ردیف قبلی را دریافت میکنند؛ در پردازش بصری نیز نورونهایی که از عصب بینایی فاصله دارند، سیگنال را از نورونهای نزدیکتر میگیرند. ردیف آخر خروجی کل سیستم را تولید میکند.
شبکه عصبی بازگشتی چیست؟
شبکهی عصبی بازگشتی شکلی از شبکهی عصبی پیشخور است که یک حافظهی داخلی دارد. شبکه عصبی بازگشتی ذاتاً بازگشتی است، زیرا یک تابع یکسان را برای همهی دادههای ورودی اجرا میکند، اما خروجی دادهی (ورودی) فعلی به محاسبات ورودی قبلی بستگی دارد. خروجی بعد از تولید، کپی شده و مجدداً به شبکهی بازگشتی فرستاده میشود. این شبکه برای تصمیمگیری، هم ورودی فعلی و هم خروجی که از ورودی قبلی آموخته شده را در نظر میگیرد.
شبکه عصبی بازگشتی برخلاف شبکههای عصبی پیشخور میتوانند از حالت (حافظهی) درونی خود برای پردازش دنبالههایی از ورودیها استفاده کنند. این خاصیت باعث میشود در مسائلی همچون تشخیص دستخط زنجیرهای یا تشخیص گفتار کاربرد داشته باشند. در سایر شبکههای عصبی، ورودیها از یکدیگر مستقل هستند، اما در شبکه عصبی بازگشتی ورودیها به هم مرتبط میباشند.
این شبکه ابتدا x_0 را از دنبالهی ورودیها گرفته و خروجی h_0 را تولید میکند که همراه با x_1 ورودی گام بعدی محسوب خواهند شد. یعنی h_0و x_1 ورودی گام بعدی هستند. به همین صورت h_1بعدی همراه با X_1 ورودی گام بعدی خواهند بود. شبکه عصبی بازگشتی بدین طریق میتواند هنگام آموزش زمینه را به خاطر داشته باشد.
[irp posts=”23395″]فرمول حالت کنونی:
اجرای تابع فعالسازی:
در این فرمول w وزن، h تکبردار نهان ، W_hh وزن حالت نهان قبلی، W_hx وزن حالت ورودی کنونی، tanh تابع فعالسازی است که با استفاده از خروجی غیرخطی، توابع فعالسازی را فشرده میکند تا در بازهی [-1.1] جای گیرند.
خروجی:
در این فرمول، Y_t حالت خروجی است و W_hy وزن در حالت تولید شده را نشان میدهد.
مزایای شبکهی عصبی بازگشتی
شبکه عصبی بازگشتی میتواند دنبالهای از دادهها را به شکلی مدلسازی کند که هر نمونه وابسته به نمونههای قبلی به نظر برسد.
شبکه عصبی بازگشتی را میتوان با لایههای پیچشی نیز به کار برد تا گسترهی همسایگی پیکسلی را افزایش داد.
معایب شبکهی عصبی بازگشتی
گرادیان کاهشی و مشکلات ناشی از آن؛
آموزش بسیار دشوار؛
ناتوانی در پردازش دنبالههای طولانی از ورودی در صورت استفاده از توابع فعالسازی tanh یا relu.
حافظهی کوتاهمدت بلند (LSTM) چیست؟
شبکههای حافظهی کوتاهمدت بلند یا LSTM نسخهی تغییریافتهای از شبکههای عصبی بازگشتی هستند که یادآوری دادههای گذشته در آنها تسهیل شده است. مشکل گرادیان کاهشی که در شبکه عصبی بازگشتی وجود داشت نیز در این شبکهها حل شده است. شبکههای LSTM برای مسائل ردهبندی، پردازش و پیشبینی سریهای زمانی با استفاده از برچسبهای زمانی مدتهای نامعلوم مناسب هستند. این شبکهها مدل را با استفاده از انتشار رو به عقب آموزش میدهند. در یک شبکهی LSTM سه دریچه وجود دارد:
دریچههای LSTM
1- دریچهی ورودی: با استفاده از این دریچه میتوان دریافت کدام مقدار از ورودی را باید برای تغییر حافظه به کار برد. تابع سیگموئید تصمیم میگیرد مقادیر بین 0 و 1 اجازهی ورود دارند و تابع tanh با ضریبدهی (بین -1 تا +1) به مقادیر، در مورد اهمیت آنها تصمیم میگیرد.
2- دریچهی فراموشی: از طریق این دریچه میتوان جزئیاتی را که باید از بلوک حذف شوند، تشخیص داد. تصمیمگیری در این مورد برعهدهی تابع سیگموئید است. این تابع با توجه به حالت قبلی (h_(t-1)) و ورودی محتوا (X_t)، عددی بین 0 تا 1 به هرکدام از اعداد موجود در حالت سلولی C_(t-1) اختصاص میدهد؛ 0 نشاندهندهی حذف آن عدد و 1 به معنی نگه داشتن آن است.
[irp posts=”9735″]3- دریچهی خروجی: ورودی و حافظهی بلوک برای تصمیمگیری در مورد خروجی مورد استفاده قرار میگیرند. تابع سیگموئید تصمیم میگیرد مقادیر بین 0 و 1 اجازهی ورود دارند و تابع tanh با ضریبدهی (بین -1 تا +1) به مقادیر و ضرب آنها در خروجی تابع سیگموئید در مورد اهمیت آنها تصمیمگیری میکند.