شبکههای عصبی کانولوشنی (CNN)
دسته : هوش مصنوعی
نویسنده : فاطمه تابع
تاریخ : 1402/10/2
سطح : پیشرفته
پست های مرتبط
شبکههای عصبی کانولوشنی (CNN)
شبکه عصبی کانولوشن (Convolutional Neural Network) یک نوع از شبکه عصبی پیشرونده (FFNN) است که ویژگیها را به تنهایی از طریق بهینهسازی فیلترها استخراج میکند.
شبکههای عصبی کانولوشنی (Convolutional Neural Networks یا CNN) یکی از اصطلاحات پرکاربرد در حوزه یادگیری عمیق و پردازش تصویر میباشد. این شبکهها به دلیل قابلیتهای خاص خود، در حوزه تشخیص الگو، تصویربرداری، تشخیص ویدئو، ترجمه ماشینی و بسیاری از حوزه های دیگر هوش مصنوعی کاربرد دارند. در این پست، به بررسی مفهوم CNN، کاربردها و تاریخچه آن خواهیم پرداخت.
مفهوم شبکههای عصبی کانولوشنی (CNN):
شبکههای عصبی کانولوشنی مدلهایی هستند که بر مبنای ساختار نورونی مغز انسان طراحی شدهاند. این شبکهها برای پردازش تصاویر و تشخیص الگوها کاربرد فراوانی دارند. ساختار اصلی یک CNN شامل لایههای کانولوشن، لایههای پولینگ و لایههای کاملاً متصل است. لایه کانولوشن با استفاده از فیلترهای کانولوشن، ویژگیهای مختلف تصویر را استخراج و به لایه بعدی منتقل میکند. لایه پولینگ با کاهش ابعاد تصویر و حفظ ویژگیهای مهم، حجم محاسبات را کاهش میدهد. در نهایت، لایه کاملاً متصل برای تصمیمگیری و برچسبگذاری نهایی استفاده میشود.
تاریخچه شبکههای عصبی کانولوشنی:
شبکههای عصبی کانولوشنی در دهه 1980 میلادی توسط یان لوکون (Yann LeCun) و همکارانش در بلژیک ابداع شدند. ابتدا این شبکهها برای تشخیص رخدادهای موجود در تصاویر مورد استفاده قرار گرفتند. در آن زمان، استفاده از شبکههای عصبی کانولوشنی برای پردازش تصویر بسیار نوآورانه بود.
در سال 1998، یکی از نسخههای اولیه شبکههای عصبی کانولوشنی توسط یان لوکون و همکارانش برای تشخیص ارقام دستنویس در اسناد پستی استفاده شد. این مدل، نتایج بسیار خوبی در تشخیص ارقام به دست آورد و نشان داد که شبکههای عصبی کانولوشنی قابلیتهای بسیار قوی در تشخیص الگوها و تصاویر را دارا هستند.
در سالهای بعد، با پیشرفت تکنولوژی و افزایش قدرت محاسباتی، شبکههای عصبی کانولوشنی از طریق استفاده از دادههای بزرگ و الگوریتمهای بهبود یافته، به صورت گستردهتری مورد استفاده قرار گرفتند. در سال 2012، در مسابقه تشخیص تصاویر ImageNet، استفاده از شبکههای عصبی کانولوشنی با نام AlexNet به نتایج بسیار بهتری نسبت به روشهای قبلی منجر شد و این روش به عنوان یک انقلاب در حوزه تشخیص تصاویر شناخته شد.
از آن زمان به بعد، با پیشرفت تکنولوژی و افزایش استفاده از شبکههای عصبی کانولوشنی، مدلهایی مانند VGGNet، GoogLeNet و ResNet توسعه داده شدند که در بخشهای مختلفی از شبکههای عصبی کانولوشنی، بهبودهای قابل توجهی را ارائه دادند.
همانطور که گفته شد، معماری شبکههای عصبی کانولوشنی (CNN) شامل لایههای مختلفی است که به صورت سلسله مراتبی در یک شبکه قرار میگیرند. این لایهها شامل لایه کانولوشن (Convolution Layer)، لایه پولینگ (Pooling) و لایه کاملاً متصل (Fully Connected) میباشند. در ادامه، به توضیح هر یک از این لایهها میپردازیم:
1. لایه کانولوشن:
این لایه، لایه اصلی و کلیدی در CNN است. در این لایه، از فیلترهای کانولوشن استفاده میشود که به صورت ماتریسهای کوچکی از اعداد وزندار تعریف میشوند. این فیلترها به طور مکرر روی تصویر ورودی عبور میکنند و با عمل کانولوشن، ویژگیهای مختلف تصویر را استخراج میکنند. به عنوان مثال، فیلترها میتوانند ویژگیهای همچون لبهها، خطوط و الگوهای ساده را استخراج کنند. هر فیلتر یک نقشه ویژگی (feature map) را تولید میکند که نشان میدهد که ویژگیهای مرتبط با یک الگو چه جایگاهی در تصویر دارند. عمق فیلترها در لایه کانولوشن متناسب با تعداد نقشههای ویژگی مورد استفاده قرار میگیرد.
2. لایه پولینگ:
لایه پولینگ برای کاهش ابعاد تصویر و حفظ ویژگیهای مهم استفاده میشود. این لایه با کاهش ابعاد تصویر و کاهش تعداد پارامترها، حجم محاسبات را کاهش میدهد. روشهای معمول پولینگ شامل انتخاب حداکثر (Max Pooling) و میانگینگیری (Average Pooling) است. به طور معمول، لایه پولینگ پس از لایه کانولوشن قرار میگیرد و تعداد نقشههای ویژگی را کاهش میدهد.
3. لایه کاملاً متصل:
در پایان شبکه، لایه کاملاً متصل برای تصمیمگیری و برچسبگذاری نهایی استفاده میشود. در این لایه، تمام نقاط ویژگیها با یکدیگر ارتباط برقرار میکنند و خروجی نهایی شبکه تولید میشود. این لایه معمولاً به عنوان یک شبکه عصبی چند لایه (Multi-Layer Perceptron) عمل میکند و وزنها و فعالسازیهای خروجی را در نظر میگیرد.
علاوه بر اینها، معماری CNN میتواند شامل لایههای دیگری نیز باشد، از جمله لایههای نرمالسازی (Normalization)، لایههای افزایش عمق (Depthwise Separable Convolution) و لایههای بازنمایی (Representation Learning). این لایهها به منظور بهبود عملکرد و دقت شبکههای عصبی کانولوشنی و استخراج ویژگیهای پیچیدهتر از تصاویر مورد استفاده قرار میگیرند.
کاربردهای شبکههای عصبی کانولوشنی:
شبکههای عصبی کانولوشنی در موارد گوناگونی از جمله تشخیص الگو، تصویربرداری پزشکی، تشخیص چهره، تشخیص ویدئو، ترجمه ماشینی، خودرانسازی خودروها، رباتیک و بسیاری از حوزه های هوش مصنوعی کاربرد دارند. به عنوان مثال، در تشخیص چهره، CNN قادر به تشخیص ویژگیهای چهرهها مانند چشمان، بینی و دهان است و میتواند افراد را تشخیص دهد. در تشخیص الگو، CNN قادر به انجام تشخیص اشیاء مختلف مانند خودروها، حیوانات و وسایل حمل و نقل است.
پست های مرتبط