آشنایی با شبکه های عصبی بازگشتی (RNNs)

این مقاله به طور کامل شبکه های بازگشتی ، نحوه عملکرد حافظه آن ها و نحوه استفاده از آن ها برای مدیریت داده های دنباله ای مانند متن و سری های زمانی را توضیح می دهد.

آیا تا به حال به شبکه عصبی بازگشتی به دید یک ماشین زمان نگاه کرده اید؟

چرا داده های دنباله ای اهمیت زیادی دارند؟

ما در بسیاری از موارد، یک مدل یادگیری ماشین می خواهیم که قادر به درک توالی ها باشد نه اینکه صرفا قادر به درک نمونه های ایزوله و تکی باشد. این امر به ویژه برای داده های سری زمانی اهمیت دارد، جایی که داده ها بطور ذاتی با مفهوم زمان مرتبط هستند.

نمونه ی داده های سری زمانی
نمونه ی داده های سری زمانی

دنباله ها همچنین در پردازش زبان طبیعی نیز اهمیت زیادی دارند زیرا جملات، دنباله ای از کلمات هستند. یک مدل پردازش زبان طبیعی برای درک فاعل ( او ) و مفعول ( آن ) در جمله زیر به اطلاعات پیش زمینه ای نیاز دارد. پس از ارائه اطلاعات متوالی ، فاعل ( برادر جو ) و مفعول ( ژاکت ) را در جمله می تواند درک کند.

درک جملات با شبکه عصبی بازگشتی
درک جملات با شبکه عصبی بازگشتی

چرا شبکه های عصبی در ارتباط با داده های متوالی عملکرد درستی ندارند؟

بیایید پاسخ این سوال را با یک مثال بررسی کنیم. در یک پروژه ما چند شبکه عصبی مصنوعی را برای پیش بینی میزان برداشت محصولاتی که احتمالاً کشاورز در یک سال معین تولید می کند را بررسی کردیم. مدل ها با بررسی نه تنها یک سال (به عنوان مثال ۲۰۱۹) ، بلکه دنباله ای از سال ها (به عنوان مثال ۲۰۱۷ ، ۲۰۱۸ ، ۲۰۱۹) قدرت پیش بینی را افزایش می دهند.

همانطور که در زیر نشان داده شده است، مدل ها مقدار چهارم را با توجه به سه مقدار متوالی پیش بینی می کنند. اولین ستون عمودی دنباله کامل مقادیر را نشان می دهد. ستون های بعدی نمونه هایی از پیش بینی (رنگ آبی) را نشان می دهد.

نمونه ها و ویژگی ها در شبکه های بازگشتی
نمونه ها و ویژگی ها در شبکه های بازگشتی

مجموعه داده های پنجره ای همپوشانی شده نامی است که به آن ها می شود، زیرا ما مشاهدات را برای ایجاد داده های جدید ، پنجره بندی می کنیم. ما می توانیم یک شبکه عصبی کاملاً متصل با سه لایه و تابع فعال سازی ReLU را برای پیش بینی عدد بعدی در هنگام دادن سه عدد متوالی استفاده کنیم.

RNN4

این رویکرد ها مشکلات متعددی دارند. اگر ترتیب ورودی را تغییر دهیم ، شبکه همان نتیجه را پیش بینی می کند. یک شبکه کاملاً متصل ترتیب را تشخیص نمی دهد و بنابراین برخی اطلاعات را از دست می دهد.

RNN5

علاوه بر این، یک شبکه کاملاً متصل نیاز به تعداد مشخصی ورودی و خروجی دارد. اگر تصمیم بگیریم برای پیش بینی خود به ۵ عدد متوالی نگاه کنیم، باید مدل دیگری بسازیم.

یکی دیگر از اشکالات شبکه های کاملاً متصل این است که نمی تواند ورودی ها را در چندین دسته کلاسه بندی کند. به عنوان مثال، زمانی که شبکه برای پیش بینی ۳ مقدار طراحی شده باشد، ما نمی توانیم ۴ مقدار بعدی را به طور همزمان پیش بینی کنیم.

پس دقت کنید که ترتیب ورودی ها مهم است. این امر در مورد اکثر داده های متوالی صادق است.

بازی حافظه

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

احتمالاً همه ما حداقل یک بار در بازی جورچین دوتایی ها که در مورد تمرکز و حافظه است را بازی کرده ایم.

در بازی دوتایی ها ، هدف این است که با حداقل حرکات ممکن، همه جفت کارت های یکسان را بیابیم. معمولا انسان ها و حتی کودکان نیز به راحتی می توانند این بازی را انجام دهند. پس چرا ما این قابلیت را به یک نورون در یک شبکه عصبی مصنوعی یاد ندهیم؟

RNN6

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

واحد شبکه عصبی بازگشتی
واحد شبکه عصبی بازگشتی

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

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

دیاگرام شبکه عصبی بازگشتی و حافظه آن
دیاگرام شبکه عصبی بازگشتی و حافظه آن

شبکه بازگشتی

در ریاضیات، نوع وابستگی مقدار فعلی ( رویداد یا کلمه) به رویداد های قبلی را بازگشت یا Recurrence می گویند و با استفاده از معادلات بازگشتی بیان می شود.

RNN9

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

دیاگرام حالت شبکه عصبی بازگشتی
دیاگرام حالت شبکه عصبی بازگشتی

هر واحد دارای سه مجموعه وزن است: یکی برای ورودی 𝒙(𝑡) ، دیگری برای خروجی های مرحله قبلی 𝒚(𝑡–۱) و دیگری برای خروجی گام زمانی فعلی 𝒚(𝑡) . این وزن ها درست مانند هر وزن دیگری اند که ما در شبکه های عصبی مصنوعی معمولی با آن ها سر و کار داشتیم و در نهایت با فرایند آموزش محاسبه و آپدیت می شوند.

شماتیک زیر داخل یک شبکه را نشان می دهد که ۳ مقدار ورودی را به ۴ مقدار خروجی تبدیل می کند. ورودی یک بردار ۳ عددی است. حالت یا حافظه مخفی یک بردار ۵ عددی است. این واحد از یک شبکه داخلی متشکل از ۵ نورون (A1 تا A5) برای تبدیل ورودی به یک بردار ۵ عددی ، ترکیب آن با وضعیت فعلی و ارسال نتیجه از طریق یک تابع فعال سازی استفاده خواهد کرد. بردار ۵ عددی حاصل از یک شبکه داخلی دیگر از ۵ نورون (B1 تا B5) عبور می کند تا حالت جدید را ایجاد کند. به طور همزمان از شبکه دیگری از ۴ نورون (C1 تا C4) عبور می کند تا بردار خروجی ۴ عددی تولید کند.

دیاگرام کلی شبکه عصبی بازگشتی
دیاگرام کلی شبکه عصبی بازگشتی

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

در بازی دوتایی ها، به جای به خاطر سپردن مختصات (x, y) کارت های روی میز، کودک به طور مبهم به خاطر می آورد که کدام کارت ها در کنار یکدیگر قرار دارند ، کدام کارت ها نزدیک مرکز هستند، کدام کارت ها بیشتر در سمت چپ قرار دارند. کدام کارت ها رنگ بیشتری دارند و غیره.

به طور مشابه ، یک شبکه بازگشتی فقط ۲ یا ۳ کلمه آخر یک جمله را به خاطر نمی آورد، بلکه برای دستیابی به بهترین پیش بینی ، تعداد کلمات، خود کلمه و به ویژه نشانه ای از کلمات را برای بدست آوردن بهترین نتیجه به خاطر می سپارد.

این یک شمای ساده و کلی است که نشان می دهد چگونه ما انسان ها نیز برخی موارد را به یاد می آوریم (به عنوان مثال روز تولد مادرمان) و برخی دیگر را فراموش می کنیم (مثلا تولد رئیسمان) .

پس انتشار در طول زمان

کل شبکه در مثال قبلی ما دارای ۵+۵+۴=۱۴ وزن و ۱۴ بایاس برای یادگیری در طول آموزش خواهد بود. چگونه این وزن ها را پیدا کنیم؟ آیا روش های گرادیان نزولی و پس انتشار نیز در اینجا کاربرد دارند؟

بیایید چند مسئله ریاضی را بررسی کنیم. ابتدا وزن های وارد شده به ورودی V ، وزن های مربوط به حالت را U و وزن های خروجی را W می نامیم. بیایید حالت را h صدا کنیم. ما دو تابع فعال سازی داریم ، g_h که به عنوان فعال کننده حالت مخفی عمل می کند و 𝑔_y که فعال سازی خروجی است.

دیاگرام حالت در شبکه عصبی بازگشتی
دیاگرام حالت در شبکه عصبی بازگشتی

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

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

در زیر می توانید نحوه انجام این کار برای W یعنی وزن خروجی را مشاهده کنید. ضرر کل شبکه مجموع تلفات جداگانه در شبکه های بازگشتی است.

RNN14

به طور مشابه می توان مشتق تابع ضرر را با توجه به وزن حالت U به شرح زیر محاسبه کرد.

RNN15

کنون می دانیم که چگونه یک شبکه عصبی بازگشتی را آموزش دهیم. اما یک مشکل وجود دارد.

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

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

از نظر عملی ، به خاطر این مشکل RNN ها نمی توانند وابستگی های طولانی مدت را بیاموزند. برای آشنایی بیشتر با RNN ها پیشنهاد می کنیم این مقاله را نیز مطالعه کنید.

شبکه های عصبی بازگشتی چگونه داده های دنباله ای را پردازش می کنند؟

در حال حاضر، ما می دانیم که یک شبکه بازگشتی چگونه کار می کند. با وصل کردن زنجیر وار چندین شبکه یکی پس از دیگری، می توانیم دنباله ای از ورودی ها را پردازش کنیم.

در ادامه نشان می دهیم که چگونه یک شبکه عصبی بازگشتی دنباله ای از مشاهدات را بررسی کرده و پیش بینی می کند که باران می بارد یا نه.

در زمان t ، اطلاعات “صدای پارس سگ” به شبکه ارائه می شود و حافظه آن خالی است. بنابراین با احتمال ۰٫۳ بارش باران پیش بینی می شود. این شبکه نشانه ای از “پارس سگ” را در مرحله بعدی در حافظه خود ذخیره می کند.

در زمان t+1 ، یک اطلاعات جدید با نام “پیراهن سفید” دریافت می کند که احتمال بارندگی را به ۰٫۱ کاهش می دهد. در حال حاضر حافظه نمایشی از “پارس سگ” و “پیراهن سفید” موجود است.

بعد، در زمان t+2، شبکه ای با نام “پای سیب” را به عنوان اطلاعات دریافت می کند. این شبکه پیش بینی آن را تغییر نمی دهد، اما حافظه با بیرون راندن “پیراهن سفید” به روز می شود.

در زمان t+3، ورودی با نام “درد زانو” پیش بینی را به ۰٫۶ افزایش می دهد و “پای سیب” را در حافظه بازنویسی می کند. ورودی نهایی دنباله ای با نام “تاریک شدن” است که پیش بینی نهایی را به ۰٫۹ می رساند.

مثال شبکه عصبی بازگشتی
مثال شبکه عصبی بازگشتی

مثال بطور مستقیم نشان می دهد که چگونه شبکه هنگام یادگیری از دنباله ورودی ها اطلاعاتی را عمداً در حافظه خود ذخیره و فراموش می کند. این یک سناریوی معمولی چند به یک است.

شبکه های عصبی بازگشتی نیز در شکل های مختلفی وجود دارند که در زیر نمایش داده شده است. معماری چند به چند یا many-to-many معمولاً برای ترجمه یک متن از زبانی به زبان دیگر استفاده می شود.

انواع شبکه عصبی بازگشتی
انواع شبکه عصبی بازگشتی

نتیجه گیری

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

بیشتر بخوانید:

منبع Towards Data Science

درباره‌ی علی قلی زاده

همچنین ببینید

آیا می خواهید در زمینه یادگیری ماشین استخدام شوید؟

آیا می خواهید در زمینه یادگیری ماشین استخدام شوید؟

مسیر های شغلی زیادی در حوزه یادگیری ماشین وجود دارد، اما از کجا بفهمیم که …

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

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