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


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

مقدمه ای بر شبکه عصبی کانولوشن CNN یا Convolutional Neural Network :

شبکه عصبی کانولوشن CNN ، در چند دهه گذشته، شاهد رشد فراوان هوش مصنوعی به عنوان یک پل ارتباطی بین انسان و ماشین بوده ­ایم. محققان سعی می­کنند تا از این امکان در همه­ ی جنبه­ های زندگی انسان استفاده کنند. از دهه 1950، روزهای اولیه هوش مصنوعی، محققان در تلاش  بودند تا سیستمی بسازند که بتواند داده­ های بصری را درک کند.

در سال­ های بعد، این رشته با نام بینایی ماشین ( Computer Vision ) شناخته شد؛ دستور کار این زمینه این است که ماشین ها بتوانند جهان را مانند انسان­ها ببینند، آن را به روشی مشابه درک کنند و حتی از این دانش برای بسیاری از کارها مانند تشخیص تصویر و فیلم، تجزیه و تحلیل و طبقه بندی تصویر، سرگرمی ­های ​​رسانه­ ای، سیستم­ های توصیه­ گر، پردازش زبان طبیعی و غیره استفاده کنند.

یادگیری عمیق به دلیل توانایی مدیریت زیاد داده ­ها ثابت شده است که ابزاری بسیار قدرتمند است و یکی از محبوب ­ترین شبکه ­های عصبی عمیق ، شبکه­ های عصبی کانولوشن (CNN) است. شبکه­ های عصبی کانولوشن نوع خاصی از شبکه عصبی بود که تقریباً بینایی انسان را تقلید می­کردند. با گذشت سال­ها CNN به بخشی مهم در بسیاری از برنامه ­های بینای ماشین تبدیل شده است.

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

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

شبکه عصبی کانولوشن CNN برای اولین بار در حدود دهه 1980 ساخته و مورد استفاده قرار گرفت. بیشترین کاری که شبکه عصبی کانولوشن CNN در آن زمان می توانست انجام دهد شناسایی ارقام دست نویس بود. این مورد بیشتر در بخش ­های پستی برای خواندن کد پستی، پین کد و غیره مورد استفاده قرار می­گرفت.

نکته­ ی مهمی که در مورد هر مدل یادگیری عمیق وجود دارد این است که برای آموزش به مقدار زیادی داده نیاز دارد و همچنین به منابع محاسباتی زیادی نیز نیاز دارد. و تا مدت­ها فقط محدود به استفاده در بخش­های پستی بود ولی با ظهور سخت افزارهای قوی و بالارفتن قدرت محاسباتی ماشین­ ها در همه زمینه­ ها به خصوص بینایی ماشین بسیار مورد استقبال واقع شد. شکل زیر شبکه­ ی عصبی کانولوشن است که برای تشخیص اعداد دست نویس طراحی شده است.

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

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

شبکه عصبی (Convolutional / ConvNet / CNN)  یکی از مهم ­ترین شبکه­ های عصبی عمیق است که معماری آن از الگویی مشابه اتصال نرون­ های مغز به یکدیگر پیروی ­می­کند و از بخش Visual Cortex (بخش متعلق به بینایی مغز) الگو برداری شده است. دسته ­های کوچکی از نرون­ های بینایی در هر قسمت به تنهایی مشغول است و از ترکیب این نرون­ ها و ایجاد شبکه­ های به هم پیوسته باعث دیدن یک منطقه می­شود.

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

لایه های شبکه­ ی عصبی کانولوشن: معماری CNN یا شبکه­ ی عصبی کانولوشن از چندین نوع لایه تشکیل شده است:

  • لایه Convolutional
  • لایه pooling
  • لایه input fully connected
  • لایه fully connected
  • لایه output fully connected

لایه کانولوشن (Convolutional)

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

لایه pooling

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

لایه input fully connected

این لایه به عنوان مسطح کننده تصاویر نیز شناخته می­شود. خروجی ­های به دست آمده از آخرین لایه در یک بردار مسطح می­شوند تا بتوان از آن به عنوان داده ­های ورودی لایه آینده استفاده کرد.

لایه fully connected

بعد از آنکه تجزیه و تحلیل ویژگی انجام شد و زمان محاسبه فرا رسیده است، این لایه وزنی تصادفی به ورودی ­ها اختصاص می­دهد و برچسب مناسبی را پیش بینی می­کند.

لایه output fully connected

این آخرین لایه مدل CNN است که حاوی نتایج برچسب­ های تعیین شده برای طبقه ­بندی است و یک کلاس را به تصاویر اختصاص می­دهد.

 

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

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

در یادگیری عمیق، یک شبکه عصبی کانولوشن دسته ای از شبکه های عصبی عمیق است که معمولاً برای تجزیه و تحلیل تصاویر بصری استفاده می­شود. نکته اصلی این است که نقش کانولوشن کاهش تصاویر به شکلی است که پردازش آن آسان­تر است، بدون از دست دادن ویژگی ­هایی که برای بدست آوردن یک پیش­بینی بسیار مهم هستند.

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

مثال شبکه عصبی کانولوشن CNN

مثال شبکه عصبی کانولوشن CNN: در ابتدا برای بررسی شبکه­ ی عصبی کانولوشن به نحوه ی نمایش یک تصویر می­پردازیم. در شکل زیر یک تصویر خاکستری یا به عبارتی سیاه و سفید را مشاهده می­کنید. با توجه به میزان رنگ هر پیکسل، هر عنصر از ماتریس مقدار دهی (0 تا 255) می­­شود.

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

یک تصویر RGB چیزی نیست جز ماتریسی از مقادیر پیکسلی که دارای سه صفحه باشد. در حالی که یک تصویر در مقیاس خاکستری دارای یک صفحه است. برای درک بیشتر به این تصویر نگاهی بیندازید. تصاویر رنگی ساختار به شکل زیر دارند و تصویر رنگی از سه صفحه تشکیل شده است که این صفحات عبارتند از صفحه قرمز(R)، صفحه سبز (G) و صفحه آبی(B). مشخصات هر صفحه مشابه همان تصویر سطح خاکستری است و مقادیر اعداد بین 0 تا 255 است. از ترکیب سه عدد، یک رنگ نهایی حاصل می‌شود.

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

بنابراین هر تصویر رنگی معادل 3 ماتریس است که هر کدام برای یکی از رنگ­ها در نظر گرفته می­شود. تصویر زیر ماتریس­ های معادل یک تصویر رنگی است.

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

سازو کار هر شبکه­ ی عصبی به این صورت است که یک سری بردار ورودی دریافت می­کند و سپس اطلاعات از چندین لایه ­ی مخفی عبور داده می­شود. هر لایه مخفی شامل چندین نرون است و نرون­های هر لایه به صورت مستقل عملیات وزن دهی را انجام می­­دهند و به نرون­های لایه­ ی قبل از خود متصل هستند و در نهایت نتیجه در لایه خروجی که یک لایه ­ی کاملا متصل است مشاهده می­شود.

هر لایه در ساختار شبکه­ ی کانولوشن یک جز اساسی است و کاری مجزا از دیگر لایه­ ها را انجام می­دهد که این عملیات ترکیبی از عملیات خطی و غیر خطی می­باشد که این عملیات­ ها شامل کانولوشن و تابع فعالسازی است که منجر به استخراج ویژگی می­شود.

ایده­ ی اصلی شبکه عصبی کانولوشن عملیات کانولوشن یا پیچش است. انجام پروسه کانولوشن به طور کلی به این صورت است که در این شبکه یک عملگر کانولوشن و یک کرنل یا فیلتر کانولوشن وجود دارد. عملگر کانولوشن، فیلتر کانولوشن را برمی­دارد و بر روی تصویر حرکت می­دهد به نحوی که در ماتریس 6*6 ابتدا مشاهده می­کنید؛ فیلتر ابتدا هرسطر را ستون به ستون طی می‌کند و بعد یک سطر پایین می‌آید و دوباره ستون به ستون جلو می‌رود و این فرآیند تا آخر ادامه دارد و تصویر وردی اسکن می­شود، و توسط عملگر کانولوشن عملیات فیلترینگ انجام می­شود و نتیجه در ماتریس خروجی نشان داده می­شود.

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

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

برای درک بهتر  نحوه کار شبکه عصبی کانولوشن روال کار با تصاویر در مقیاس خاکستری را بررسی کنیم. تصویر زیر نشان می­دهد که شبکه عصبی کانولوشن CNN چیست؟ ما یک فیلتر / هسته (ماتریس 3 × 3)  در نظر می­گیریم و آن را روی تصویر ورودی اعمال می­کنیم تا ویژگی را بدست آوریم. این ماتریس ویژگی به لایه بعدی منتقل می­شود.

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

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

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

لایه اول معمولاً ویژگی­های اساسی مانند لبه­ های افقی یا مورب را استخراج می­کند. این خروجی به لایه بعدی منتقل می­شود که ویژگی­های پیچیده­ تری مانند گوشه ­ها یا لبه ­های ترکیبی را تشخیص می­دهد.

بر اساس نقشه فعال­سازی لایه کانولوشن نهایی، لایه طبقه بندی مجموعه ­ای از مقادیر (مقادیر بین 0 و 1) را تولید می­کند که مشخص می­کند احتمال تعلق تصویر به یک “کلاس” چیست. به عنوان مثال ، اگر یک کانولوشن دارید که گربه ­ها، سگ ­ها و اسب­ ها را تشخیص می­دهد، با دادن تصویر هریک از این حیوانات انتظار می­رود شبکه به درستی تشخیص دهد که تصویر متعلق به چه گروهی است.

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

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

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

لایه Pooling از لایه های شبکه عصبی کانولوشن: همانند لایه Convolutional، لایه Pooling وظیفه کاهش اندازه فضایی ویژگی Convolved را دارد. این کار برای کاهش توان محاسباتی مورد نیاز برای پردازش داده ­ها با کاهش ابعاد است. دو نوع  pooling متوسط ​​و حداکثر وجود دارد. بنابراین آنچه که در Pooling انجام می­شود این است که حداکثر مقدار پیکسل را از بخشی از تصویر که پوشانده شده توسط هسته پیدا می­کنیم. Pooling همچنین به عنوان یک تعدیل کننده نویز عمل می­کند و کاهش نویز را به همراه کاهش ابعاد انجام می­دهد. در انتهای هر مرحله­ ی بعد از استخراج ویژگی برای کاهش ابعاد pooling انجام می­شود.

هر لایه­ ی شبکه ­ی عصبی شامل یک لایه­ ی Convolutional است ویک لایه ­ Pooling است. با بالا رفت این لایه ­ها قادر به ثبت جزئیات بیشتری خواهیم بود ولی باید در نظر داشته باشیم که افزایش لایه ­­ها منجر به افزایش هزینه­ ی محاسبات خواهد شد.

تعادل بین عمق، دقت و سرعت شبکه بسیار ساده است. هر چه لایه‌های بیشتری استفاده شوند، دقت کلی بالاتر می‌رود؛ اما باعث می‌شود که شبکه کندتر اجرا شود، زیرا تعداد محاسبات افزایش می‌یابد. به طور کلی، می­توان عمق‌های مختلف را بررسی کرد و بهترین نقطه که بالاترین نتیجه را به دست می‌دهد را یافت. در برخی موارد باید آگاه بود که تعادل بین دقت و سرعت تحت قاعده «بازده نزولی» است یعنی هر چه لایه‌های بیشتری اضافه بکنیم، دقت کمتری در هر لایه منفرد اضافه می‌شود.

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

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

 

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

از مزایای شبکه عصبی کانولوشن می توان به موارد زیر اشاره کرد:

1- یادگیری الگوی دقیق و بینش عمیق  از داده های ارائه شده. (بستگی به ساختار مناسب، تمیز یا مهندسی داده ­ها دارد) برای دستیابی به نتایج بهتر و دقیق می­توان شبکه را تنظیم کرد. اگر بهتر تنظیم شود و مقدار کافی از داده ­ها را تغذیه کند، می­تواند نتایج بهتری نسبت به الگوریتم­ های یادگیری ماشین دیگر ارائه دهد.

2- اتصال محلی. هر نورون دیگر به همه سلول­های عصبی موجود در لایه قبلی متصل نیست، بلکه فقط به تعداد کمی نورون متصل است. این باعث کاهش بسیاری از پارامترها می­شود.

3- تقسیم وزن. مجموعه ­ای از اتصالات می­توانند وزن یکسانی داشته باشند، به جای داشتن وزن متفاوت برای هر اتصال، که باعث کاهش بسیاری از پارامترها می­شود.

4- نمونه­ گیری لایه Pooling. می­تواند با حفظ اطلاعات مفید، مقدار پردازش داده را کاهش دهد.

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

از معایب شبکه عصبی کانولوشن می توان به موارد زیر اشاره کرد:

1-نیاز به حافظه برای نگه­داری پارامتر

2-یادگیری غیر شفاف

3- الزامات تنظیم پارامتر

4-هزینه ­ی بالای محاسباتی

5- اموزش کند برای عملیات­ های پیچیده

جمع­ بندی شبکه عصبی کانولوشن CNN

در یادگیری عمیق یکی از بهترین تکنیک­ها، شبکه­ ی عصبی عمیق است که توانایی زیادی در یافتن الگوها و استخراج ویژگی دارد که با درصد صحت بالا توانایی تشخیص تصاویر را دارد و شناسایی تصاویر کاربردهای بسیار مفیدی در زندگی دیجیتال شده­ ی امروز دارد. علیرغم محدودیت­ها قدرت و پیچیدگی منابع CNN ، نتایج عمیقی ارائه می­دهند.

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

نویسنده: تیم پژوهش راهبرد

 

منابع

courses.analyticsvidhya.com

Kim P. (2017) Convolutional Neural Network. In: MATLAB Deep Learning. Apress, Berkeley, CA. https://doi.org/10.1007/978-1-4842-2845-6_6

مقاله خوبی بود؟

دیدگاه (4)

  • علی پاسخ

    با سلام
    برای شروع یادگیری CNN چه منابعی را پیشنهاد میکنید؟

    2 اسفند 1401 در 4:21 ب.ظ
  • صادق پاسخ

    سلام
    سطح مطلب شما ابتدایی هست همه چیز را گفتید ولی سطحی این نوع مطالب همه جا گیر میاد به نظر من بحث های جزیی تر و نکات فنی تر برای مخاطب جذاب تر هست ممنون

    2 مرداد 1402 در 2:30 ق.ظ
    • مدیر سایت پاسخ

      ممنون از اینکه نظرتون رو با ما در میون گذاشتید.

      4 شهریور 1402 در 8:57 ب.ظ

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

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