شبکه عصبی چیست ؟ شبکه عصبی کانولوشن چیست ؟ آیا از شبکه های عصبی کانولوشنی چیزی شنیده‌اید ؟ مزیت شبکه کانولوشنی چیست ؟ شاید در همین ابتدا برایتان سوال شده باشد که روش ELI5 چیست؟ در ادامه با ما همراه باشید.

اگر به طور کلی با شبکه‌های عصبی آشنا نیستید، اول مقاله زیر را بخوانید:

شبکه عصبی چیست ؟ 

فهرست مطالب

پیش از این در هم‌رویش فیلم شبکه عصبی کانولوشنی به زبان ساده منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:

 

 

برای دریافت بسته کامل این آموزش بر روی لینک زیر کلیک کنید:

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

 

ELI5 چیست ؟

ELI5 مخفف این عبارت است: Explain like I’m 5. یعنی طوری به من توضیح بده که انگار 5 ساله هستم!! پس با این مقاله از مجله هم رویش همراه باشید تا شبکه‌های عصبی کانولوشنی را به ساده‌ترین شکل ممکن برایتان توضیح دهیم!

 

مزیت-شبکه-کانولوشن-هم-رویش

 

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

 

 

 

هم رویش منتشر کرده است:

آموزش شبکه عصبی مصنوعی -- از صفر به زبان ساده

 

 

 

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

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

** اگر قصد دارید در قالب یک فیلم کوتاه با ساختار کلی شبکه عصبی کانولوشنی آشنا شوید بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:

 

 

مطالعه چکیده فیلم بالا (+)

 

معرفی

 

مزیت-شبکه-کانولوشن-مزیت-شبکه-کانولوشن-هم-رویش
ترتیب عملکرد یک شبکه کانولوشنی برای طبقه‌بندی ارقام دست نویس

 

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

 

 

 

هم رویش منتشر کرده است:

آموزش ساخت شبکه عصبی با پایتون (و دیگر زبان‌ها) از صفر

 

 

 

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

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

+ در ادامه ببیند مفهوم کانولوشن چیست؟

 

 

مطالعه چکیده فیلم بالا (+)

 

مزیت شبکه‌های کانولوشنی بر شبکه‌های عصبی پیشخور

یک تصویر، چیزی نیست جز یک ماتریس از مقادیر پیکسل‌ها، مگر نه؟! پس شاید فکر کنید کافیست یک تصویر را مسطح کنیم (مثلا یک ماتریس تصویر 3×3 را به یک بردار 9×1 تبدیل کنیم) و سپس آن را با هدف دسته‌بندی  به یک شبکه پرسپترون چندلایه تحویل دهیم. اما نه … به این سادگی‌ها هم نیست!!

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

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

 

تصویر ورودی

 

مزیت-شبکه-کانولوشن-هم-رویش

 

در این شکل، یک تصویر RGB داریم که به سه صفحه رنگی خود – یعنی قرمز، سبز و آبی – تجزیه شده است. شمار زیادی از این فضاهای رنگی برای نمایش تصاویر وجود دارد نظیر Grayscale, RGB, HSV, CMYK و … . می‌توانید تصور کنید که وقتی تصاویر به ابعاد بالایی نظیر 8k (7680×4320) می‌رسند، حجم محاسبات چقدر زیاد و پیچیده می‌شود. نقش شبکه کانولوشنی، این است که تصاویر را به شکلی کاهش دهد که پردازش آن‌ها ساده‌تر باشد؛ ان هم بدون از دست دادن ویژگی‌هایی که برای دستیابی به یک پیش‌بینی خوب، مهم و بحرانی هستند. این موضوع، زمانی اهمیت دارد که بخواهیم یک معماری طراحی کنیم که نه تنها در یادگیری ویژگی‌ها خوب باشد، بلکه در دیتاست‌های بزرگ و گسترده نیز مقیاس پذیر و قابل تعمیم باشد.

 

لایه کانولوشن – کرنل

 

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

 

پیچش (Convoluting) یک تصویر 5x5x1 با یک کرنل 3x3x1 برای دستیابی به یک ویژگی پیچش شده (convolved feature) با ابعاد 3x3x1

ابعاد تصویر = 5 (ارتفاع) x 5 (عرض) x 1 (تعداد کانال‌ها، مثلا برای RGB)

در شکل فوق، ‌بخش سبز رنگ، تصویر ورودی 5x5x1 ما را نشان می‌دهد. المانی که در انجام عملیات کانولوشن (پیچش) در قسمت اول از لایه کانولوشنی نقش ایفا می‌کند، کرنل (Kernel) یا فیلتر نام دارد که با رنگ زرد نشان داده شده است. در اینجا یک ماتریس 3x3x1 را به عنوان کرنل (K) در نظر گرفته‌ایم.

کرنل، 9 مرتبه جابجا می‌شود زیرا طول گام (Stride Length) برابر با 1 است. در هر مرتبه، یک عمل ضرب ماتریسی بین ماتریس کرنل (K) و بخشی از تصویر که توسط کرنل پوشانده می‌شود (P) صورت می‌گیرد.

 

شبکه-های-عصبی-کانولوشن-هم-رویش
حرکت کرنل

 

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

 

شبکه-عصبی-هم-رویش
عملیات کانولوشن بر روی یک ماتریس تصویر MxNx3 با یک کرنل 3x3x3

 

در مواردی که تصاویر، از چند کانال تشکیل شده‌اند (نظیر RGB)، کرنل همان عمق تصویر ورودی را خواهد داشت. ضرب ماتریسی بین Kn و In ([K1, I1]; [K2, I2]; [K3, I3]) صورت می‌گیرد و تمام نتایج با بایاس جمع می‌شوند تا در نهایت، یک خروجی ویژگی پیچش شده (Convoluted) با کانالی به عمق 1 تحویل دهد.

 

شبکه-عصبی-هم-رویش
عملیات کانولوشن با طول گام برابر با 2

 

+ اگر شما مشتاق شده‌اید که خودتان یک شبکه کانولوشن بسازید. ما بسته آموزش کدنویسی کانولوشن (+) را به همین منظور تهیه کرده‌ایم.

 

هدف عملیات کانولوشن

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

 

این عملیات، دو نوع نتیجه در اختیار ما قرار می‌دهد:

در یک حالت، ابعاد ویژگی پیچش شده، در مقایسه با ورودی، کاهش یافته و در حالت دیگر، ابعاد خروجی افزایش یافته یا بدون تغییر باقی مانده است. این اتفاق در حالت اول، با استفاده از حاشیه­ گذاری معتبر (valid padding) و در حالت دوم، با استفاده از حاشیه­ گذاری همانی (same padding) رخ می‌دهد.

ELI5-چیست-هم-رویش

زمانی که یک تصویر 5x5x1 را به یک تصویر 6x6x1 افزایش می‌دهیم و سپس کرنل 3x3x1 را روی آن اعمال می‌کنیم، درمی‌­یابیم که ماتریس پیچش شده، ماتریسی با ابعاد 5x5x1 خواهد بود (یعنی همان ابعاد ماتریس تصویر اولیه!). در نتیجه به آن حاشیه‌­گذاری همانی گفته می‌شود.

از طرف دیگر، اگر همان عملیات را بدون حاشیه‌­گذاری انجام دهیم، به ماتریسی دست می‌یابیم که دارای ابعادی مشابه با ابعاد کرنل است (یعنی 3x3x1). از این رو، به آن حاشیه‌­گذاری معتبر گفته می‌شود.

مخزن زیر، حاوی گیف‌های بسیاری از قبیل موارد بالاست که به شما کمک می‌کند درک بهتری از نحوه‌ی کار حاشیه‌‌گذاری و طول گام و عملکرد آنها در کنار یکدیگر داشته باشید.

 

لایه پولینگ (Pooling)

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

 

ELI5-چیست-هم-رویش
پولینگ 3×3 بر روی ویژگی پیچش شده 5×5

دو نوع پولینگ وجود دارد:

پولینگ حداکثری (Max Pooling) و پولینگ میانگینی (Average Pooling).

 

پولینگ حداکثری:

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

پولینگ حداکثری، به عنوان یک نویزگیر نیز عمل می‌کند. این نوع از پولینگ، فعالیت‌های دارای نویز را به طور کلی حذف می‌کند و در کنار کاهش ابعاد، فرایند کاهش نویز را نیز انجام می‌دهد.

 

پولینگ میانگینی:

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

 

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

انواع پولینگ

لایه کانولوشنی و لایه پولینگ، با یکدیگر، لایه i اُم یک شبکه عصبی کانولوشنی را تشکیل می‌دهند. بسته به پیچیدگی‌های موجود در تصاویر، ممکن است تعداد این لایه‌ها به منظور ضبط جزئیات سطح پایین یا موارد دیگر، افزایش یابد. اما هزینه نیز با توجه به افزایش قدرت محاسباتی، بیشتر می‌شود.

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

 

دسته‌بندی __ لایه کاملا متصل

 

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

 

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

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

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

  1. LeNet
  2. AlexNet
  3. VGGNet
  4. GoogLeNet
  5. ResNet
  6. ZFNet

 

در راستای این مقاله، مطالعه مقاله های زیر پیشنهاد می‌شود:

شبکه عصبی چیست ؟ ___ آشنایی با شبکه های عصبی مصنوعی

شبکه عصبی بازگشتی چیست ؟ آشنایی با شبکه‌های عصبی بازگشتی (RNN) و (LSTM)

تاریخچه شبکه عصبی و یادگیری عمیق ___ (قسمت اول)

تاریخچه یادگیری عمیق و شبکه عصبی ___ (قسمت دوم)

شبکه های عصبی چیست __ تاریخچه شبکه عصبی و یادگیری ماشین (قسمت سوم)

 

کلیدواژگان

شبکه عصبی کانولوشنال – شبکه عصبی کانولوشن یا convolutional – ELI5 – شبکه عصبی کانولوشنال چیست – مخفف ELI5 – مخفف ELI5 چیست – شبکه عصبی – شبکه عصبی چیست – شبکه عصبی به زبان ساده – شبکه ی عصبی – شبکه عصبی cnn – شبکه های عصبی چیست – الگوریتم شبکه عصبی – الگوریتم شبکه های عصبی – شبکه های عصبی کانولوشن – شبکه های عصبی کانولوشنی – شبکه های عصبی کانولوشنی (cnn) – شبکه های عصبی کانولوشن (cnn) – شبکه عصبی کانولوشنی – مزیت شبکه کانولوشن – مزیت شبکه عصبی کانولوشنال – مزیت شبکه های کانولوشنی

 

منبع

a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way

هم رویش منتشر کرده است

نویسنده :

سئو و ویراستاری :

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

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

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

Search

مطالب مرتبط

دسته بندی مطالب