آموزش‌های پایه‌ای هوش مصنوعیآموزش‌های پیشرفته هوش مصنوعیبینایی ماشینیادگیری عمیق

مقدمه‌ای بر معماری CNNها و متداول‌ترین لایه‌های آن

2
زمان مطالعه: ۵ دقیقه

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

معماری

نمونه‌ای از یک CNN برای مسئله‌ رده‌بندی تصویر

معماری CNN

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

  • یک شبکه‌ پیچشی که از چندین لایه (کانولوشن، ادغام، dropout و…) تشکیل شده است و می‌تواند ویژگی‌های تصاویر را از هم جدا کند و تشخیص دهد.
معماری CNN

شبکه‌ پیچشی جزئی از شبکه‌ عصبی که عملیات‌های بینایی در آن اتفاق می‌افتد

  • یک لایه یا شبکه‌ کاملاً متصل که خروجی شبکه‌ پیچشی را دریافت و بهترین خروجی ممکن را برای تصویر ورودی پیش‌بینی می‌کند.
CNNها

لایه‌ کاملاً متصل جزئی از شبکه‌ عصبی که پیش‌بینی در آن اتفاق می‌افتد

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

لایه‌های CNN

انواع گوناگونی از لایه‌ها هستند که می‌توانند به CNNها اضافه شوند؛ برای مثال، یک CNN می‌تواند لایه‌های غیرمتداولی همچون upsampling یا لایه‌های پیچشی ترانهاده داشته باشد؛ اما در حالت عادی، یک CNN معمولی اغلب ۵ لایه دارد:

لایه‌ پیچشی

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

روش ساده ساخت سیستم توصیه گر

یکی از مزایای استفاده از کانولوشن این است که پیچیدگی محاسباتی کاهش می‌یابد. از آنجایی که هر پیکسل اغلب با پیکسل‌های مجاورش ارتباط دارد، روابط بین بخش‌های مختلف تصاویر بعد از کانولوشن همچنان حفظ می‌شوند. وقتی کانولوشن را با استفاده از یک فیلتر ۳×۳ روی یک تصویر ۵×۵ اجرا کنیم (در هر گام یک جابه‌جایی ۱ پیکسلی اتفاق می‌افتد)، خروجی نیز ۳×۳ خواهد بود. این فرایند منجر به کاهش ۶۴ درصدی پیچیدگی محاسبات می‌شود.

شبکه عصبی

کانولوشن تصویر ۵×۵ پیکسلی با یک فیلتر ۳×۳ گام = ۱×۱ پیکسلی

 

لایه‌ ادغام

یک لایه‌ رایج و اساسی دیگر که در CNNها دیده می‌شود، لایه‌ ادغام است. لایه‌ ادغام اغلب بعد از یک لایه‌ پیچشی قرار می‌گیرد. لایه‌های ادغام از طریق کاهش اندازه‌ فضایی بازنمایی، پارامترها را کاهش می‌دهند و بدین ترتیب به کاهش بیشتر پیچیدگی محاسباتی کمک می‌کنند. این لایه مقادیر پیکسلی را جمع می‌کند، تا پیچیدگی را کاهش دهد؛ این مسئله تأثیر منفی روی عملکرد مدل نخواهد داشت. این عملیات جمع و ادغام می‌تواند بر اساس انتخاب بیشینه، میانگین یا جمع کل مقادیر پیکسل‌ها باشد. رایج‌ترین روش ادغام MaxPooling یا ادغام بیشینه است؛ تصویر پایین طرز کار این روش را نشان می‌دهد:

معماری شبکه های عصبی پیچشی

ادغام بیشینه ۲×۲

 

همان‌طور که مشاهده می‌کنید، ابتدا پیکسل‌ها را به مربعات ۲×۲ تقسیم می‌کنیم و سپس مقدار بیشینه‌ پیکسلی را از داخل هر مربع انتخاب می‌کنیم. با استفاده از روش MaxPooling می‌توان یک پیکسل ۴×۴ را ابه ۲×۲ کاهش داد.

لایه‌ Dropout

وجود لایه‌ dropout در معماری یک شبکه‌ عصبی پیچشی الزامی نیست. بااین‌حال، به‌منظور جلوگیری از مشکل بیش‌برازش، اغلب یک یا چند لایه‌ dropout در CNNها مشاهده می‌شود. هر شبکه‌ای، به‌خصوص شبکه‌های عصبی بزرگی که روی دیتاست‌های نسبتاً کوچکی آموزش دیده‌اند، می‌توانند دچار بیش‌برازش شوند و در نتیجه عملکرد بدی روی داده‌های دنیای واقعی داشته باشند.

CNN

نمونه‌ای از لایه‌های dropout (تصویر مربوط به CNN نیست)

 

با اینکه چندین روش منظم‌سازی برای مقابله با مشکل بیش‌برازش وجود دارد، امکان‌پذیرترین روش برای CNNها استفاده از لایه‌ dropout است. پیاده‌سازی فرایند dropout آسان است: طی آموزش، خروجی چندلایه به‌صورت تصادفی نادیده گرفته شده یا دور انداخته می‌شود (drop out). این فرایند، فرایند آموزش را نویزدار می‌کند و باعث می‌شود آن دسته از گره‌های داخل یک لایه که حذف (dropout) نشده‌اند، مسئولیت بیشتری بر عهده گیرند و آن گره‌هایی که حذف شده‌اند، مسئولیت کمتری در برابر ورودی‌ها داشته باشند. به کمک لایه‌های dropout، یک شبکه‌ عصبی پیچشی می‌تواند انعطاف بیشتری در سازگاری با بهینه‌سازی وزن‌های مدل داشته باشد و بدین طریق از بیش‌برازش اجتناب کند.

روش ساده ساخت سیستم توصیه گر

لایه‌ Flatten

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

معماری CNN

لایه‌ مسطح

 

شبکه یا لایه‌ کاملاً متصل

لایه‌ کاملاً متصل بخشی از یک شبکه‌ عصبی پیچشی است که می‌تواند یک لایه‌ متراکم یا یک پرسپترون پیچیده‌ چندلایه‌ای باشد. ورودی‌های این لایه، خروجی لایه‌ flatten هستند؛ بنابراین، لایه‌ flatten را می‌توان لایه‌ ورودی این قسمت در نظر گرفت. وظیفه‌ لایه‌ کاملاً متصل، اجرای وزن‌ها روی ورودی‌های تولیدشده از طریق شبکه‌ پیچشی و تولید احتمالات نهایی برای پیش‌بینی است (تا در نهایت بتواند، برای مثال، کلاس شیء تصویر ورودی را تعیین کند).

شبکه عصبی پیچشی

لایه/شبکه‌ کاملاً متصل

 

سخن نهایی

با ترکیب این ۵ لایه‌ متداول و برخی لایه‌های دیگر که کمتر به کار می‌روند (و در این نوشتار مورد بررسی قرار نگرفتند)، می‌توانیم یک شبکه‌ عصبی بسیار پیچیده بسازیم؛ اما کارکرد کلی شبکه تغییری نمی‌کند: جزء اول (شبکه‌ پیچشی که لایه‌های مشخصی را در بردارد) ویژگی‌ها را تشخیص می‌دهند و آن‌ها را به‌عنوان اطلاعات حائز اهمیت به یک لایه‌/شبکه‌ کاملاً متصل انتقال می‌دهد؛ سپس این لایه‌ کاملاً متصل می‌آموزد بر اساس این ویژگی‌ها و با سازگار کردن وزن‌هایش، پیش‌بینی‌های نهایی را تولید کند.

جدیدترین اخبار هوش مصنوعی ایران و جهان را با هوشیو دنبال کنید

این مطلب چه میزان برای شما مفید بوده است؟
[کل: ۱ میانگین: ۱]

تراشه های هوش مصنوعی که در سال ۲۰۲۱ وارد بازار شدند

مقاله قبلی

وضعیت اشتغال و بازار کار در حوزه هوش مصنوعی در ایران و جهان

مقاله بعدی

شما همچنین ممکن است دوست داشته باشید

2 نظرات

  1. سلام دستم اشتباه خورد امتیاز یک دادم واقعا حیفم اومد کامنت نزارم مطلب به این مفیدی حقش ۵ بود.
    اگر مقدوره امتیاز رو برگردونین روی ۵

    1. سلام دوست عزیز ممنون از توجه شما، تغییر امتیاز توسط ما امکان پذیر نیست، خودتان دوباره امتیاز دهید تغییرات اعمال میشود.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.