شبکه عصبی LSTM – Long Short Term Memory


شبکه عصبی LSTM – Long Short Term Memory

مقدمه ای بر شبکه عصبی LSTM یا حافظه طولانی کوتاه مدت یا شبکه بازگشتی :

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

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

شبکه عصبی LSTM

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

شبکه های بازگشتی

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

شبکه عصبی LSTM

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

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

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

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

مثال شبکه عصبی LSTM

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

شبکه عصبی LSTM

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

شبکه عصبی LSTM

شبکه عصبی LSTM  (Long Short Term Memory)

LSTM نوع خاصی از RNN ها است که قادر به یادگیری وابستگی های طولانی مدت است. آنها توسط Hochreiter & Schmidhuber (1997)  معرفی شدند، و توسط بسیاری از افراد در مطالعات بعدی اصلاح شدند. LSTM ها به طور کلی برای جلوگیری از مشکل وابستگی طولانی مدت طراحی شده اند. شبکه LSTM یک شبکه تقریباً قدیمی است. اما در تعداد زیادی از مسائل استفاده می‌شود و هنوز در بین محققین محبوبیت بالایی دارد. با توجه به نمودار زیر؛ می‌بینید که با گذشت زمان، میزان استفاده از LSTM به ‌شدت رشد داشته است.

شبکه عصبی LSTM

به خاطر سپردن اطلاعات برای مدت زمان طولانی عملاً رفتار پیش فرض آن ها است، نه چیزی که آن ها برای یادگیری آن تلاش می کنند! همه شبکه های عصبی مکرر به شکل زنجیره ای از ماژول های تکراری شبکه عصبی هستند. در RNN های استاندارد، این ماژول تکراری دارای ساختار بسیار ساده ای است، مانند یک لایه تنها است.

شبکه عصبی LSTM

ماژول تکراری در RNN استاندارد حاوی یک لایه واحد است.

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

شبکه عصبی LSTM

شبکه عصبی LSTM

مقایسه LSTM  و RNN در یک نگاه

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

شبکه عصبی LSTM

در ادامه شبکه عصبی LSTM را به طور کامل توضیح خواهیم داد.

شبکه عصبی LSTM

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

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

در بین ورودی و خروجی‌ها فقط یکی از این ورودی‌ها به طور مستقیم به خروجی شبکه متصل شده است. به شکل زیر نگاه کنید؛ ورودی مستقیما به خروجی  متصل شده است.  مخفف Cell State هست و یک مولفه کلیدی در LSTM است.  Cell State به حافظه بلندمدت یا Long Term Memory هم معروف است.

شبکه عصبی LSTM

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

خواص حافظه بلندمدت

حافظه بلند مدت داری خواص زیر است که آن را شبیه به حافظه انسان می کند:

1-پاک کردن اطلاعات در آن

2- حفظ کردن اطلاعات در حافظه

علامت  و ×که روی خط می بیند وظیفه حذف کردن و به خاطر سپردن اطلاعات را دارند.

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

شبکه عصبی LSTM

اولین قدم در LSTM ما این است که تصمیم بگیریم چه اطلاعاتی را از حالت سلولی خارج کنیم. این تصمیم توسط یک لایه سیگموئید به نام ” forget gate layer” گرفته می شود.

در  و  به تابع سیگموئدی می رود و برای هر عدد در حالت سلولی  عددی بین 0 تا 1 خروجی می دهد. 1 نشان دهنده “این را حفظ کنید” در حالی که 0 نشان دهنده “این را حذف کنید”.

شبکه عصبی LSTM

قدم بعدی این است که تصمیم بگیریم چه اطلاعات جدیدی را در حالت سلول ذخیره کنیم. این دو قسمت دارد. ابتدا، یک لایه سیگموئید به نام “لایه دروازه ورودی” تصمیم می گیرد که کدام مقادیر را به روز کنیم. بعد، یک لایه tanh یک بردار از مقادیر انتخابی جدید، C ~ t ایجاد می کند که می تواند به حالت اضافه شود. در مرحله بعد، این دو را با هم ترکیب می شوند تا یک بروزرسانی برای وضعیت ایجاد شود.

شبکه عصبی LSTM

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

شبکه عصبی LSTM

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

شبکه عصبی LSTM

انواع شبکه عصبی حافظه طولانی کوتاه مدت

آنچه تا کنون توصیف کردم یک LSTM معمولی است. اما همه LSTM ها مانند موارد بالا نیستند. در واقع، به نظر می رسد تقریباً هر مقاله ای که شامل LSTM است از نسخه اصلی کمی متفاوت استفاده می کند. تفاوت ها جزئی هستند، اما به برخی از آن ها اشاره می شود. یکی از انواع محبوب LSTM ، که توسط Gers & Schmidhuber (2000)  معرفی شد، افزودن ” peephole connections” است. این بدان معنی است که ما اجازه می دهیم لایه های دروازه به وضعیت سلول نگاه کنند.

شبکه عصبی LSTM

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

شبکه عصبی LSTM

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

شبکه عصبی LSTM

کاربردهای شبکه عصبی LSTM

کاربردهای LSTM عبارتند از:

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

جمع بندی شبکه عصبی LSTM

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

نویسنده: تیم پژوهش راهبرد

منابع

colah.github.io

مقاله خوبی بود؟

2 نظرات