تحلیل سه مدل شبکه عصبی در یادگیری عمیق: ANN، CNN و RNN


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

چرا یادگیری عمیق؟

جالب است بدانیم انواع مختلف شبکه‌های عصبی در یادگیری عمیق، مانند شبکه عصبی کانولوشنی (CNN)، شبکه عصبی بازگشتی (RNN) و شبکه عصبی مصنوعی (ANN) نحوه‌ی ارتباط ما با جهان را تغییر داده‌اند. این شبکه‌ها، هسته‌ی اصلی انقلاب یادگیری عمیق هستند و کاربردهایی چون وسایل نقلیه هوایی بدون سرنشین (UAV)، اتومبیل‌های خودران و تشخیص گفتار را ممکن کرده‌اند.

شاید این سوال به ذهنمان برسد: یادگیری ماشین نمی‌تواند همین کارها را انجام دهد؟

دو دلیل اصلی وجود دارد که بیشتر محققان و متخصصان برای حل چنین مسائلی، یادگیری عمیق را به یادگیری ماشین ترجیح می‌دهند:

  1. مرز تصمیم گیری
  2. مهندسی ویژگی

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

برای مثال، مرز تصمیم‌گیری مانند شکل زیر را یاد می‌گیرد

مرز تصمیم‌گیری

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

مرز تصمیم‌گیری

هر الگوریتم یادگیری ماشین نمی‌تواند تمامی توابع را یاد بگیرد. به این ترتیب، قابلیت این الگوریتم‌ها برای حل مسائلی که دارای روابط پیچیده هستند دشوار می‌شود.

دومین مسئله‌ای که در بالا بیان کردیم مهندسی ویژگی بود؛ مهندسی ویژگی فرآیندی دو مرحله‌ای است:

  1. استخراج ویژگی
  2.  انتخاب ویژگی

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

تفاوت یادگیری عمیق و یادگیری ماشین

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

انواع مختلف شبکه‌‍‌های عصبی در یادگیری عمیق

در این مقاله سه نوع مهم از شبکه‌های عصبی را مورد بررسی قرار می‌دهیم که پایه‌‌ی اصلی اکثر مدل‌های از پیش آموزش دیده در یادگیری عمیق هستند:

  • Artificial Neural Networks (ANN)
  • Convolution Neural Networks (CNN)
  • Recurrent Neural Networks (RNN)

بیایید هر کدام از این شبکه‌های عمیق را عمیق‌تر بررسی کنیم 😊

 

شبکه عصبی مصنوعی چیست و چرا از آن استفاده می‌کنیم؟

شبکه‌ عصبی مصنوعی یا ANN، گروهی از چندین پرسپترون/نورون در هر لایه است. شبکه‌های ANN به عنوان شبکه عصبی Feed-Forward نیز شناخته می‌شوند زیرا ورودی‌ها را تنها در جهت forward پردازش می‌کنند.

شبکه عصبی روبه جلو

همانطور که در تصویر فوق می‌بینید، ANNها از سه لایه تشکیل شده‌اند: لایه ورودی، لایه پنهان، لایه خروجی. لایه‌ی ورودی، ورودی شبکه را می‌گیرد، لایه‌ی پنهان، ورودی را پردازش می‌کند و لایه‌ی خروجی، نتیجه را تولید می‌کند. در اصل هر لایه سعی می‎کند، وزن‌های خاصی را یاد بگیرد.

شبکه‌های ANN را می‌توان برای حل مسائلی چون مسائل زیر استفاده کرد:

  • داده‌ی جدولی (Tabular data)
  • داده‌ی تصویر (Image data)
  • داده‌ی متنی (Text data)

مزایای شبکه ANN

شبکه عصبی مصنوعی می‌تواند هر نوع تابع غیرخطی را یاد بگیرد. ANNها این ظرفیت را دارند که وزن‌هایی را یاد بگیرند که هر ورودی را به خروجی نگاشت کنند. یکی از دلایل مفید بودن این شبکه‌ها، تابع فعالسازی است. توابع فعالسازی به شبکه، ویژگی‌های غیرخطی می‌دهند. این توابع به شبکه کمک می‌کنند تا هر رابطه‌ی پیچیده‌ای بین ورودی و خروجی را یاد بگیرند.

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

چالش‌های ANN

برای مثال زمانی که می‌خواهیم یک مسئله‌ی کلاسبندی تصویر را با استفاده از ANN حل کنیم، گام اول آن است که یک تصویر دو بعدی را به یک بردار یک بعدی تبدیل کنیم قبل از اینکه مدل را آموزش دهیم. این روند دو عیب دارد:

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

شبکه عصبی کانولوشنی

برای مثال اگر سایز تصویر 224*224 باشد، آنگاه تعداد پارامترهای قابل آموزش در لایه‌ی پنهان اول تنها با 4 نورون، 602112 است!

  • شبکه ANN، ویژگی‌های مکانی تصویر را نادیده می‌گیرد. ویژگی‌های مکانی به ترتیب پیکسل‌ها در تصویر اشاره دارند.
  • یکی از مشکلات رایج در این شبکه‌های عصبی، Vanishing Gradient و Exploding Gradient است. این مشکل مربوط به الگوریتم Backpropagation است. وزن‌های شبکه عصبی با این الگوریتم Backpropagation به روز رسانی می‌شوند.

بنابراین، در مورد شبکه‌های عصبی عمیق (شبکه‌هایی با تعداد زیادی لایه پنهان)، با پس انتشار خطا در شبکه، مشکل Gradient Vanishing یا Gradient Exploding بوجود خواهد آمد.

  • همچنین ANN نمی‌تواند برای اطلاعات ترتیبی در داده‌ی ورودی مورد استفاده قرار بگیرد.

حال بیایید بررسی کنیم که چطور می‌توان بر محدودیت‌های ANN با دو معماری مختلف غلبه کرد: RNN و CNN

 

شبکه عصبی بازگشتی چیست و چرا از آن استفاده می‌کنیم؟

ابتدا بهتر است تفاوت بین RNN و ANN را از چشم انداز معماری درک کنیم.

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

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

از شبکه‌های عصبی بازگشتی می‌توان برای حل مسائل زیر استفاده کرد:

  • داده‌ی سری زمانی
  • داده‌ی متنی
  • داده‌ی صوتی

 

مزایای شبکه عصبی بازگشتی (RNN)

شبکه RNN، اطلاعات توالی در داده‌ی ورودی را می‌گیرد و بر اساس آنها تسک مورد نظر را انجام می‌دهد، برای مثال پیش بینی کلمه‌ی بعدی

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

همانطور که در تصویر فوق می‌بینید، خروجی (o1,o2,o3,o4) در هر گام زمانی نه تنها به ورودی فعلی بستگی دارد بلکه وابسته به ورودی‌های قبلی نیز هست.

-RNNها در گام‌های زمانی مختلف، پارامترها را به اشتراک می‌گذارند. این روند Parameter Sharing نامیده می‌شود. در نتیجه، پارامترهای کمتری برای آموزش خواهیم داشت و هزینه‌ی محاسبات کاهش می‌یابد.

 

چالش‌های RNN

شبکه‌های RNN عمیق (RNNهایی با تعداد زیادی گام زمانی) نیز مشکل Exploding Gradient و Vanishing Gradient دارند که مشکلی رایج در انواع مختلف شبکه‌های عصبی هستند.

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

گرادیانی که در گام زمانی آخر محاسبه شده است تا به گام زمانی اول برسد، ناپدید می‌شود!

 

شبکه عصبی کانولوشنی چیست و چرا از آن استفاده می‌کنیم؟

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

شبکه عصبی کانولوشنی

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

مزایای شبکه‌ی عصبی کانولوشنی (CNN)

  • یکی از مزایای مهم شبکه CNN آن است که فیلترها را به طور خودکار یاد می‌گیرد بدون اینکه به طور صریح آنها را مشخص کند. این فیلترها به استخراج ویژگی‌های درست و مرتبط از داده‌ی ورودی کمک می‌کنند

شبکه عصبی کانولوشنی

  • CNN ویژگی‌های مکانی را از تصویر می‌گیرد. ویژگی‌های مکانی به ترتیب پیکسل‌ها و روابط آنها در تصویر اشاره دارند. این به ما کمک می‌کند تا شی را به طور دقیقی شناسایی کنیم و همچنین موقعیت شی و رابطه‌ی آن با اشیا دیگر در تصویر را مشخص کنیم.

شبکه عصبی کانولوشنی

در تصویر فوق، ما می‌توانیم به راحتی تصویر یک فرد را شناسایی کنیم و تنها کافی است به ویژگی‌های خاص آن چون چشمان، بینی، دهان و غیره توجه کنیم. ما همچنین می‎‌توانیم مشخص کنیم که ترتیب این ویژگی‌ها در تصویر چگونه است. این دقیقاً همان کاری است که CNNها انجام می‌دهند.

همچنین شبکه‌های CNN از مفهوم parameter sharing استفاده می‌کنند.

نتیجه گیری

خلاصه‌ی مفاهیمی که در این پست بیان کردیم به صورت جدول در ادامه آمده است:

تحلیل سه مدل شبکه عصبی در یادگیری عمیق: ANN، CNN و RNN

منبع


دیدگاه ها

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

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

code