تنسورفلو ۱۲ : RNN

چرا به RNN نیاز داریم؟

ساختار شبکه عصبی معمولی نسبتا ساده هست و اصولا کاری که می کنه ضرب ماتریس هاست. ابتدا ورودی ها در یک سری وزن های رندم ضرب میشند و این فرآیند طی میشه تا وزن ها تصحیح بشن

معیار استفاده شده loss هست که هرچی بیشتر باشه مدل ضعیف تره یک سری فعالیت انجام میشه تا معیار بهبود پیدا کنه.

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

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

شبکه عصبی بازگشتی چیست؟

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

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

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


کاربرد های RNN

از کاربرد های RNN می توان به کاربرد هایی اشاره کرد که در رابطه با پیش بینی آینده هست. مثلا در صنعت اقتصاد با RNN می توان قیمت سهام و جهت گیری بازار بورس را پیش بینی کرد.

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

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

محدودیت های RNN

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

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

بهبود با LSTM

برای مقابله با مشکل ناپدید شدن گرادیان، ساختار RNN بهبود پیدا کرد و با اسم حافظه کوتاه مدت طولانی شناخته میشه :دی LSTM

به طور خلاصه lstm از معماری بهتری برای انتخاب و انتقال داده های قبلی استفاده میکنه.



سخن پایانی

خب ی سری نکات هست ک بهتون بگم

اولا سپاس :) که این سری آموزشی رو مطالعه کردید امیدوارم مفید بوده باشه سعی کردم ساده بگم یجوری که دید بده و بتونید شروع کنید ولی خب برای اینکه دستتون راه بیفته باید خودتون پروژه بزنید

دوما اینکه در زمان شروع این آموزش تنسورفلو نسخه ۲ هنوز رسمی منتشر نشده بود ولی الان شده و خب فکر کردم دیدم بهتره بخش کد زدن آموزش های بعد از انتشار رسمی نسخه ۲ با نسخه ۲ باشه که اولیش CNN بود و دومی که این باشه رو میخوام لینک بدم به گوگل کُلب که باهاش کار کنید و تجربه یادگیری از منبع رسمی تنسورفلو رو هم بدست بیارید که هیچ آموزشی به کاملی داکیومنت های رسمی احتمالا نیست

لینک آموزشی

در پناه حق باشید :)