شبکه عصبی کانولوشنی (CNN) چیست


CNN که مخفف شبکه عصبی کانولوشنی (Convolutional Neural Network) است کلاس خاصی از شبکه‌های عصبی مصنوعی (Artificial Neural Network) در هوش مصنوعی است. این شبکه‌ها مشابه شبکه‌های عصبی سنتی دارای لایه‌ی ورودی، لایه‌ی پنهان و لایه‌ی خروجی هستند. تعداد لایه‌های این شبکه را می‌توان افزایش داد و بر چالش‌های ناشی از افزایش لایه‌ها غلبه کرد، از این رو در رده‌ی شبکه‌های عصبی  عمیق (Deep Neural Network) قرار می‌گیرند.

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

 

لایه‌های تشکیل دهنده شبکه CNN

لایه‌های اصلی تشکیل دهنده‎ی شبکه‌ی CNN عبارتند از: Convolutional layer, Pooling Layer, Fully Connected Layer. شبکه‌های CNN می‌توانند لایه‌های دیگری نیز داشته باشند مانند Batch Normalization و …

لایه‌ی کانولوشنی

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

لایه‌ی کانولوشنی CNN

 

لایه‌ی Pooling

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

لایه‌ی pooling در cnn

لایه‌ی Fully Connected

ماتریس‌های ویژگی استخراج شده در انتهای شبکه یا به اصطلاح Feature map ها  به صورت ستونی پشت سر هم چیده می‌شوند و به عنوان ورودی برداری به لایه‌ی Fully Connected داده می‌شوند. و تسک نهایی اجرا می‌شود.

لایه‌ی Fully Connected

کاربرد شبکه‌های CNN 

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

کاربرد شبکه‌های CNN در تسک‌های مختلفی چون کلاسبندی، خوشه‌بندی و رگرسیون


اگر علاقه مند به یادگیری تخصصی شبکه عصبی CNN هستید پیشنهاد میکنیم که دوره جامع و پروژه محور شبکه عصبی کانولوشنی را بگذارنید. در این دوره تئوری و ساختار این شبکه کامل توضیح داده شده و سپس به صورت پروژه محور پیاده سازی شده است.


دیدگاه ها

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

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

code