Filter by دسته‌ها
chatGTP
ابزارهای هوش مصنوعی
اخبار
گزارش
تیتر یک
چندرسانه ای
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
دانش روز
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
رویدادها
جیتکس
کاربردهای هوش مصنوعی
کتابخانه
اشخاص
شرکت‌های هوش مصنوعی
محصولات و مدل‌های هوش مصنوعی
مفاهیم
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
مقاله
 مقدمه‌ای بر معماری CNNها و متداول‌ترین لایه‌های آن

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

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

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

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

معماری CNN

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

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

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

لایه‌های CNN

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

لایه‌ پیچشی

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

یکی از مزایای استفاده از کانولوشن این است که پیچیدگی محاسباتی کاهش می‌یابد. از آنجایی که هر پیکسل اغلب با پیکسل‌های مجاورش ارتباط دارد، روابط بین بخش‌های مختلف تصاویر بعد از کانولوشن همچنان حفظ می‌شوند. وقتی کانولوشن را با استفاده از یک فیلتر 3×3 روی یک تصویر 5×5 اجرا کنیم (در هر گام یک جابه‌جایی 1 پیکسلی اتفاق می‌افتد)، خروجی نیز 3×3 خواهد بود. این فرایند منجر به کاهش 64 درصدی پیچیدگی محاسبات می‌شود.

شبکه عصبی
کانولوشن تصویر 5×5 پیکسلی با یک فیلتر 3×3 گام = 1×1 پیکسلی

لایه‌ ادغام

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

معماری شبکه های عصبی پیچشی
ادغام بیشینه 2×2

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

لایه‌ Dropout

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

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

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

لایه‌ Flatten

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

معماری CNN
لایه‌ مسطح

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

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

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

سخن نهایی

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

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

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]