هوش مصنوعی-شبکه‌های عصبی-شبکه عصبی بازگشتی -ابراهیم خلیلی

هوش مصنوعی-شبکه‌های عصبی-شبکه عصبی بازگشتی -ابراهیم خلیلی هوش مصنوعی-شبکه‌های عصبی-شبکه عصبی بازگشتی -ابراهیم خلیلی

هوش مصنوعی-شبکه‌های عصبی-شبکه عصبی بازگشتی -ابراهیم خلیلی

هوش مصنوعی-شبکه‌های عصبی-شبکه عصبی بازگشتی -ابراهیم خلیلی


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

شبکه عصبی بازگشتی (RNN) گونه‌ای از شبکه عصبی مصنوعیه که از داده ترکیبی (Sequential) یا داده سری زمانی (Time series) استفاده می‌کنه. این الگریتم‌های یادگیریِ عمیق رو عموماً برای حل مسائل محدود و وصفی مانند ترجمه زبان، پردازش زبان طبیعی (NLP)، تشخیص صحبت (Speech recognition) و شرح‌نویسی عکس استفاده می‌کنن. نمونه این الگریتم رو میتونید تو جستجو با ویس و گوگل ترنسلیت ببینید. شبکه عصبی بازگشتی، مانند شبکه‌های عصبی حلقه‌‌ای (Convolutional) و پیش‌خور (Feedforward)، از داده‌های آموزشی برای یادگیری استفاده میکنه. مهمترین فرق این شبکه عصبی در حافظه‌ش است. یعنی اطلاعات ورودی‌های قبلی رو حفظ میکنه تا با اونا ورودی و خروجی‌های بعدی رو تحت تاثیر قرار بده. به عبارت دیگه در شبکه‌های عصبی قدیمی ورودی و خروجی مستقل از هم فرض میشدن، درحالی که در این شبکه خروجی وابسته و متاثر از عناصری است که از قبل در شبکه حضور دارن. در تصویر زیر تفاوت شبکه عصبی پیش‌خور (سمت راست) و بازگشتی (سمت چپ) رو مشاهده  میکنید.

خب اجازه بدید با یه مثال مطلب رو پیش ببریم. انگلیسی‌ها عبارتِ feeling under the weather رو برای اشاره به آدمی به کار میبرند که سرما خورده. با استفاده از این عبارت میخواییم RNN رو بیشتر توضیح بدیم. برای اینکه این عبارت معنی‌دار باشه باید با ترتیب معینش بیان بشه. از این رو شبکه بازگشتی باید توضیحی درباره جایگاه هر واژه در این عبارت بده و با استفاده از این اطلاعات واژه بعدی رو که قرار در زنجیره این عبارت بیاد پیشبینی کنه. 

در تصویر زیر شکلِ حلقه‌ای RNN نشان‌دهنده کل شبکه عصبی یا کل عبارت پیش‌بینی شده است. در حالی که شکل غیر حلقه‌ای (unrolled) تک تک لایه‌ها یا مراحل زمانیِ شبکه رو نشون میده. هر لایه به یه واژه در عبارتمون دلالت داره مانند Weather. ورودی‌های قبلی مانند feeling و under به عنوان مرحله پنهان در مراحل سوم استفاده میشن تا شبکه عصبی بتونه the رو پیش‌بینی کنه. 

تفاوت دیگه شبکه عصبی بازگشتی با شبکه‌های دیگر در اینه که یه سری پارامترهای مشترک رو در هر لایه به کار می‌برن. در حالی که شبکه‌های پیش‌خور سنجه‌های متفاوتی در هر گره (Node) به کار میبره، شبکه‌های بازگشتی فقط یک پارامتر رو تو هر لایه استفاده میکنن. این سنجه‌های از طریق انتشار عقب‌گرد (backpropagation) و شیب (gradient) در هر لایه سازگار میشن تا توان یادگیری ماشین رو بالا ببرند. 

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

در طولِ این فرایند خطایابی و جمع‌بندی اونها RNNها به دو مشکل برمیخورند. به این دو مشکل شیب کاهشی (Vanishing gradient) و شیب بالارونده (Exploding gradient) میگن. این مشکلات با درجه و اندازه شیب در محور مشخص میشن. در اولی شیب خیلی کم میشه تا برسه به نقطه‌ای مثل صفر. وقتی این اتفاق میفته الگریتم هیچ چیز یاد نمیگیره. برعکس، در شیب‌های بالا رونده شیب تا حدی بالا میره که یه مدل ناپایدار به وجود میاره. یک راه‌حل برای این مشکلات این میتون باشه که تعداد لایه‌های پنهان در شبکه عصبی رو کاهش بدیم تا بعضی از پیچیدگی‌های موجود در مدل RNN از بین بره. 

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

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

در این نوع یک ورودی برای یک خروجی در نظر گرفته میشه.

One-to-many

تو این مورد به ازای یک ورودی چندین خروجی داریم.

Many-to-one

چندین ورودی در مقابل یک خروجی.

Many-to-many

در نهایت در این نوع چندین ورودی برای چندین خروجی وجود داره.

 

واژگان اختصاصی

منابع

What are Recurrent Neural Networks? | IBM

 

  مقاله هجدهم هوش مصنوعی  

دوستان عزیزم؛ برای ارتباط با برترها و رزرو پشتیبان ویژه پیج کانون برترها را  دنبال کنید.

همچنین میتوانید با شماره 0218451 داخلی 3123 تماس بگیرید.

 

Menu