فیلتر / کرنل (Filter / Kernel)  چیست و در شبکه‌ی عصبی کانولوشنی (CNN) چه نقشی دارد؟ فرآیند کانولوشن اصلی‌ترین مرحله در شبکه‌ی عصبی کانولوشن (CNN / Convolutional Neural Network) محسوب می‌شود؛ درواقع نام این شبکه به‌ همین دلیل انتخاب شده است. اتفاقی که در هر لایه از کانولوشن رخ می‌دهد قرارگرفتن یک فیلتر / کرنل روی عکس ورودی است تا درنهایت یک خروجی فیلترشده که ویژگی‌های اصلی آن را به‌همراه دارد به دست آید. در این مطلب قصد داریم فیلتر / کرنل (Filter / Kernel) را شرح دهیم و ببینیم چطور اندازه‌ی یک فیلتر / کرنل مشخص می‌شود.

فیلتر  کرنل (Filter  Kernel)

کرنل (Kernel) چیست؟

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

نحوه‌ی عملکرد کرنل

کرنل‌ها انواع مختلفی دارند و هر کرنل برای استخراج ویژگی‌های متفاوتی طراحی شده است؛ برای مثال، به این عکس نگاه کنید:

عملکرد کرنل شارپ‌کردن عکس

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

اما چطور این کرنل با این کار، می‌تواند عکس را شارپ کند؟

فرایند شارپ‌شدن عکس در کرنل

مثال دیگری را در شکل بعدی می‌بینیم که زمانی‌که در عکس اول مقادیر کرنل در مقادیر عکس ضرب می‌شوند و درنهایت با هم جمع می‌شوند مقدار خروجی برابر با ۲×۰+۲×-۱+۲×+۲×-۱+۳×۵+۲×-۱+۲×۰+۲×-۱+۲×۰=۷ می‌شود؛ یعنی درواقع مقدار ۳ که در مرکز عکس قرار دارد به ۷ افزایش یافته است؛ هم‌چنین در عکس دوم خروجی برابر با ۳- شده است؛ یعنی مقدار ۱ که مرکز قرار دارد به -3 کاهش یافته است. این یعنی تضاد میان ۱ و ۳ به ۷ و ۳- تبدیل شده است و این یعنی کنتراست (Contrast) عکس افزایش می‌یابد و شارپ می‌شود.

نحوه‌ی عملکرد فیلتر برای شارپ‌کردن عکس

تفاوت فیلتر (Filter) و کرنل (Kernel)

ممکن است بارها کلمه‌های فیلتر (Filter) و کرنل (Kernel) را شنیده باشید که به‌جای هم استفاده می‌شوند، اما در واقعیت این دو کمی با هم متفاوت هستند. همان‌طور که در بخش قبل توضیح داده شد، کرنل ماتریسی است که روی عکس ورودی حرکت می‌کند و مقدار آن با مقدار ماتریس ورودی ضرب می‌شود؛ درنهایت ماتریسی را در خروجی به ما ارائه می‌کند که ویژگی‌هایی از عکس دارد که مدنظر ماست. ابعاد کرنل ابعاد کانولوشن را تعیین می‌کند؛ برای مثال، زمانی‌که می‌گوییم کانولوشن دوبعدی (2D Convolution) یعنی ماتریس کرنل دوبعدی است.

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

حرکت کرنل‌ها روی ورودی با سه کانال رنگ

برای مثال شکل بالا یک ماتریس ورودی ۵×۵ را نشان می‌دهد که سه کانال رنگ دارد. یک فیلتر ۳×۳ هم داریم که سه‌بعدی است؛ یعنی سه کرنل دارد که هر یک جداگانه روی سه کانال رنگ ماتریس ورودی اعمال می‌شوند.

انتخاب اندازه‌ی کرنل / فیلتر در شبکه‌ی عصبی کانولوشنی

قطعاً همه‌ی ما در حین یادگیری و مطالعه درباره‌ی شبکه‌ی عصبی کانولوشنی (CNN) بارها با اندازه‌های مختلف کرنل برخورد کرده‌ایم و این سؤال ذهنمان را مشغول کرده است که آیا راهی برای تشخیص اندازه و ابعاد کرنل وجود دارد؟ درواقع پاسخ این سؤال منفی است. به‌طور کلی، مشهورترین انتخاب در دنیای یادگیری عمیق اندازه‌ی ۳×۳ است که اکثر مواقع استفاده می‌شود، اما چرا ۳×۳؟ چرا ۱×۱ یا ۴×۴ یا ۲×۲ نه؟

به‌طور کلی، اندازه‌ی کرنل به دو دسته‌ی کوچک و بزرگ تقسیم می‌شود که کوچک‌ها ۴×۴ و قبل از آن و بزرگ‌ها ۵×۵ و بعد از آن را شامل می‌شود که ما هنوز از ۵×۵ فراتر نمی‌رویم؛ به‌این دلیل که کرنل‌هایی با اندازه‌ی بزرگ زمان بسیار زیادی را می‌گیرند. در سال ۲۰۱۲ الکس‌نت (AlexNet) از کرنلی به‌اندازه‌ی ۱۱×۱۱ استفاده کرد و زمان آموزش حدود ۲ تا ۳ هفته زمان برد.

برای آشنایی با الکس‌نت این مطلب را مطالعه کنید:

معماری الکس نت (AlexNet) را به‌صورت کامل بشناسید!

دلیل ترجیح استفاده از کرنل‌های اندازه‌ی کوچک همین زمان و هزینه‌ی محاسباتی کمتر آن‌هاست. در سال ۲۰۱۵ شبکه‌ی عصبی کانولوشنی VGG از کرنل‌های ۳×۳ استفاده کرد و از آن زمان به‌بعد اندازه‌ی کرنل ۳×۳ انتخاب محبوب همه شد.

برای آشنایی با وی‌جی‌جی‌نت این مطلب را مطالعه کنید:

با شبکه‌ی عصبی وی جی جی نت (VGGNet) آشنا شوید!

تا اینجا متوجه شدیم که کرنل‌های اندازه‌های کوچک گزینه‌های مناسب‌تری هستند، اما چرا ۱×۱، ۲×۲ یا ۴×۴ انتخاب نمی‌شوند؟

نحوه‌ی انتخاب اندازه‌ی کرنل

کرنل با اندازه‌ی ۱×۱ فقط برای کاهش ابعاد به‌منظور کاهش تعداد کانال‌های رنگ استفاده می‌شود. از آنجا که کرنل ۱×۱ ارتباط میان کانال‌های ورودی را در یک نقشه‌ی ویژگی (Feature Map) یک‌پیکسلی به دست می‌آورد، هیچ اطلاعاتی از پیسکل‌های همسایه ارائه نمی‌کند و کارایی برای استخراج ویژگی ندارد.

کرنل‌هایی با اندازه‌ی زوج مانند ۲×۲ و ۴×۴ معمولاً به‌دلیل اینکه نمی‌توان پیکسل‌های دور پیکسل خروجی را متقارن تقسیم کرد استفاده نمی‌شوند؛ برای مثال، در شکل بعدی می‌بینیم که کرنل ۳×۳ انتخاب شده است و پیکسل‌های دور پیکسل ۶ که درنهایت پیکسل خروجی خواهد بود متقارن هستند. اگر اندازه‌ی کرنل زوج باشد، نمی‌توانیم یک پیکسل در مرکز انتخاب کنیم که درنهایت پیکسل خروجی باشد.

فیلتر / کرنل (Filter / Kernel) با اندازه‌ی ۳×۳

خلاصه‌ی مطالب درباره‌ی فیلتر / کرنل (Filter / Kernel)

در این مطلب کرنل و نحوه‌ی کار آن در شبکه‌ی عصبی کانولوشنی (CNN) را بررسی کردیم؛ هم‌چنین تفاوت اصلی میان کرنل و فیلتر را یاد گرفتیم. از همه مهم‌تر، دلیل محبوب‌بودن اندازه‌ی کرنل ۳×۳ را بررسی کردیم.

برای آشنایی با شبکه‌ی عصبی کانولوشنی این مطلب را مطالعه کنید:

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

هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!

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

جوایز هفت‌خوان

  • ۱,۵۰۰,۰۰۰ تومان جایزه نقدی
  • ۳ کلاس رایگان ۵۰۰,۰۰۰ تومانی

پرسش‌های مسابقه

برای شرکت در هفت‌خوان کافه‌تدریس در کامنت همین مطلب به این پرسش‌ها پاسخ دهید:

  • کرنل (Kernel) در زمینه شبکه‌های عصبی کانولوشنی به چه چیزی اشاره دارد؟
  • دو تفاوت اصلی میان فیلتر (Filter) و کرنل (Kernel) در شبکه‌های عصبی کانولوشنی چیست؟
  • چرا انتخاب اندازه‌ی مناسب برای کرنل / فیلتر در شبکه‌های عصبی کانولوشنی اهمیت دارد؟

هفت‌خوان‌پلاس

برای بالابردن شانس‌تان می‌توانید این مطلب را هم مطالعه کنید و به پرسش‌های آن پاسخ دهید:

قدرت شبکه عصبی کانولوشنال چقدر است؟