شبکه عصبی کانولوشن CNN
مقدمه ای بر شبکه عصبی کانولوشن CNN یا Convolutional Neural Network :
شبکه عصبی کانولوشن CNN ، در چند دهه گذشته، شاهد رشد فراوان هوش مصنوعی به عنوان یک پل ارتباطی بین انسان و ماشین بوده ایم. محققان سعی میکنند تا از این امکان در همه ی جنبه های زندگی انسان استفاده کنند. از دهه 1950، روزهای اولیه هوش مصنوعی، محققان در تلاش بودند تا سیستمی بسازند که بتواند داده های بصری را درک کند.
در سال های بعد، این رشته با نام بینایی ماشین ( Computer Vision ) شناخته شد؛ دستور کار این زمینه این است که ماشین ها بتوانند جهان را مانند انسانها ببینند، آن را به روشی مشابه درک کنند و حتی از این دانش برای بسیاری از کارها مانند تشخیص تصویر و فیلم، تجزیه و تحلیل و طبقه بندی تصویر، سرگرمی های رسانه ای، سیستم های توصیه گر، پردازش زبان طبیعی و غیره استفاده کنند.
یادگیری عمیق به دلیل توانایی مدیریت زیاد داده ها ثابت شده است که ابزاری بسیار قدرتمند است و یکی از محبوب ترین شبکه های عصبی عمیق ، شبکه های عصبی کانولوشن (CNN) است. شبکه های عصبی کانولوشن نوع خاصی از شبکه عصبی بود که تقریباً بینایی انسان را تقلید میکردند. با گذشت سالها CNN به بخشی مهم در بسیاری از برنامه های بینای ماشین تبدیل شده است.
پیشینه شبکه عصبی کانولوشن CNN
شبکه عصبی کانولوشن CNN برای اولین بار در حدود دهه 1980 ساخته و مورد استفاده قرار گرفت. بیشترین کاری که شبکه عصبی کانولوشن 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: در ابتدا برای بررسی شبکه ی عصبی کانولوشن به نحوه ی نمایش یک تصویر میپردازیم. در شکل زیر یک تصویر خاکستری یا به عبارتی سیاه و سفید را مشاهده میکنید. با توجه به میزان رنگ هر پیکسل، هر عنصر از ماتریس مقدار دهی (0 تا 255) میشود.
یک تصویر RGB چیزی نیست جز ماتریسی از مقادیر پیکسلی که دارای سه صفحه باشد. در حالی که یک تصویر در مقیاس خاکستری دارای یک صفحه است. برای درک بیشتر به این تصویر نگاهی بیندازید. تصاویر رنگی ساختار به شکل زیر دارند و تصویر رنگی از سه صفحه تشکیل شده است که این صفحات عبارتند از صفحه قرمز(R)، صفحه سبز (G) و صفحه آبی(B). مشخصات هر صفحه مشابه همان تصویر سطح خاکستری است و مقادیر اعداد بین 0 تا 255 است. از ترکیب سه عدد، یک رنگ نهایی حاصل میشود.
بنابراین هر تصویر رنگی معادل 3 ماتریس است که هر کدام برای یکی از رنگها در نظر گرفته میشود. تصویر زیر ماتریس های معادل یک تصویر رنگی است.
سازو کار هر شبکه ی عصبی به این صورت است که یک سری بردار ورودی دریافت میکند و سپس اطلاعات از چندین لایه ی مخفی عبور داده میشود. هر لایه مخفی شامل چندین نرون است و نرونهای هر لایه به صورت مستقل عملیات وزن دهی را انجام میدهند و به نرونهای لایه ی قبل از خود متصل هستند و در نهایت نتیجه در لایه خروجی که یک لایه ی کاملا متصل است مشاهده میشود.
هر لایه در ساختار شبکه ی کانولوشن یک جز اساسی است و کاری مجزا از دیگر لایه ها را انجام میدهد که این عملیات ترکیبی از عملیات خطی و غیر خطی میباشد که این عملیات ها شامل کانولوشن و تابع فعالسازی است که منجر به استخراج ویژگی میشود.
ایده ی اصلی شبکه عصبی کانولوشن عملیات کانولوشن یا پیچش است. انجام پروسه کانولوشن به طور کلی به این صورت است که در این شبکه یک عملگر کانولوشن و یک کرنل یا فیلتر کانولوشن وجود دارد. عملگر کانولوشن، فیلتر کانولوشن را برمیدارد و بر روی تصویر حرکت میدهد به نحوی که در ماتریس 6*6 ابتدا مشاهده میکنید؛ فیلتر ابتدا هرسطر را ستون به ستون طی میکند و بعد یک سطر پایین میآید و دوباره ستون به ستون جلو میرود و این فرآیند تا آخر ادامه دارد و تصویر وردی اسکن میشود، و توسط عملگر کانولوشن عملیات فیلترینگ انجام میشود و نتیجه در ماتریس خروجی نشان داده میشود.
شبکه عصبی کانولوشن CNN چیست؟
برای درک بهتر نحوه کار شبکه عصبی کانولوشن روال کار با تصاویر در مقیاس خاکستری را بررسی کنیم. تصویر زیر نشان میدهد که شبکه عصبی کانولوشن CNN چیست؟ ما یک فیلتر / هسته (ماتریس 3 × 3) در نظر میگیریم و آن را روی تصویر ورودی اعمال میکنیم تا ویژگی را بدست آوریم. این ماتریس ویژگی به لایه بعدی منتقل میشود.
لایه های شبکه عصبی کانولوشن
لایه های شبکه عصبی کانولوشن : شبکه های عصبی کانولوشن از چندین لایه نورون مصنوعی تشکیل شده اند. نورون های مصنوعی، تقلیدی تقریبی از نمونه های بیولوژیکی آنها و بر اساس توابع ریاضیاتی هستند که مجموع وزنی چندین ورودی و خروجی را با تابع فعال ساز محاسبه میکنند. هنگام وارد کردن تصویر در شبکه ی عصبی کانولوشن، هر لایه چندین عملکرد فعالسازی ایجاد میکند که به لایه بعدی منتقل میشوند.
لایه اول معمولاً ویژگیهای اساسی مانند لبه های افقی یا مورب را استخراج میکند. این خروجی به لایه بعدی منتقل میشود که ویژگیهای پیچیده تری مانند گوشه ها یا لبه های ترکیبی را تشخیص میدهد.
بر اساس نقشه فعالسازی لایه کانولوشن نهایی، لایه طبقه بندی مجموعه ای از مقادیر (مقادیر بین 0 و 1) را تولید میکند که مشخص میکند احتمال تعلق تصویر به یک “کلاس” چیست. به عنوان مثال ، اگر یک کانولوشن دارید که گربه ها، سگ ها و اسب ها را تشخیص میدهد، با دادن تصویر هریک از این حیوانات انتظار میرود شبکه به درستی تشخیص دهد که تصویر متعلق به چه گروهی است.
تصویر زیر نشان دهنده یک شخص است و شبکه ی کانولوشن امکان این را دارد که تشخیص دهد تصویر یک شخص است یا ماشین یا حیوان. در لایه اول که لایه ی ورودی است ابتدا تصویر به صورت پیکسل وارد شبکه میشود. در لایه مخفی اول لبه های تصویر شناسایی شده، در لایه مخفی بعدی گوشه های تصویر شناسایی میشود و در لایه ی مخفی سوم قسمتهایی از شکل شناسایی میشود و در نهایت در لایه خروجی کلاسی که عکس متعلق به آن است شناسایی میشود.
لایه 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 چه منابعی را پیشنهاد میکنید؟
سلام وقتتون بخیر. منابع مختلفی وجود داره. پیشنهاد ما به شما مطالعه این مقاله است که در انتها منابعش هم ذکر کرده و میتونید استفاده کنید.
https://www.sciencedirect.com/science/article/abs/pii/B9780128157398000109?via%3Dihub
سلام
سطح مطلب شما ابتدایی هست همه چیز را گفتید ولی سطحی این نوع مطالب همه جا گیر میاد به نظر من بحث های جزیی تر و نکات فنی تر برای مخاطب جذاب تر هست ممنون
ممنون از اینکه نظرتون رو با ما در میون گذاشتید.