آموزش‌های پیشرفته هوش مصنوعی

معرفی ماژول Inception در شبکه‌ GoogleNet

GoogleNet یک شبکه‌ پیچشی عمیق با 22 لایه است. معماری این شبکه در چالش ILSVRC سال 2014 معرفی شد (دو مسئله‌ی اصلی این چالش تشخیص اشیاء Object detection و طبقه‌بندی تصویر Image classification بودند). جنبه‌ نوآورانه‌ی معماری GoogleNet مربوط به ماژولی به نام Incept…

4 دقیقه مطالعه
  • پشتیبانی شبکه
  • Inception
  • عملیات
  • کانولوشن
  • تنسور
  • ماژول
  • تعداد
  • خروجی
معرفی ماژول Inception در شبکه‌ GoogleNet

خلاصه تحلیلی خبر

GoogleNet یک شبکه‌ پیچشی عمیق با 22 لایه است. معماری این شبکه در چالش ILSVRC سال 2014 معرفی شد (دو مسئله‌ی اصلی این چالش تشخیص اشیاء Object detection و طبقه‌بندی تصویر Image classification بودند). جنبه‌ نوآورانه‌ی معماری GoogleNet مربوط به ماژولی به نام Incept…

موضوعات اصلی: پشتیبانی شبکه، Inception، عملیات، کانولوشن، تنسور، ماژول

GoogleNet یک شبکه‌ پیچشی عمیق با 22 لایه است. معماری این شبکه در چالش ILSVRC سال 2014 معرفی شد (دو مسئله‌ی اصلی این چالشتشخیص اشیاءObject detectionوطبقه‌بندی تصویرImage classificationبودند). جنبه‌ نوآورانه‌ی معماری GoogleNet مربوط به ماژولی به نام Inception است.

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

برقراری توازن در ساختCNNها

اجزای تشکیل‌دهنده‌ی CNNها عبارت‌اند از

  • لایه‌یکانولوشنconvolution(+تبدیلات غیرخطیNon-affine transformationsکه از طریق توابع فعالسازی اجرا می‌شوند)
  • لایه‌یپولینگpooling
  • لایه‌ی تراکم (کاملاً متصل)

هر بار بخواهیم یک لایه‌ی جدید قبل از لایه‌های تراکم (که در انتهای شبکه قرار دارند) اضافه کنیم، دو نکته‌ی مهم را باید تعیین کنیم

  • انتخاب بین عملیات کانولوشن و یا ادغام؛
  • تعیین اندازه و تعداد فیلترهایی که از خروجی لایه‌ی قبلی وارد لایه‌ی جدید خواهند شد.

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

[irp posts=”23236″]

معرفی ماژولInception

هدف اصلی از طراحی ماژول Inception این بود که چندین عملیات (ادغام، کانولوشن) با فیلتر‌هایی با اندازه‌های گوناگون (3×3، 5×5 و …) را بتوان به صورت موازی ایجاد کرد و نیازی به انتخاب بین آن‌ها نباشد.

قبل از این‌که معماری رسمی GoogleNet را نشان دهیم، ابتدا نحوه‌ی کارکرد ماژول Inception را با هم بررسی می‌کنیم؛ بدین منظور از این لایه استفاده می‌کنیم

ماژول Inception

همانطور که مشاهده می‌کنید، ورودی اولیه (پشته‌ایstackازنقشه‌های ویژگیFeature mapsکه خروجی لایه‌ی قبلی هستند)تنسورtensorبا 64 نقشه‌ی ویژگی است، ابعاد همه‌ی این نگاشت‌ها 32×32 می‌باشد. سه عملیات، به صورت موازی، روی این تنسور اجرا می‌شوند

  • عملیات کانولوشن با16فیلتر1×1اندازه‌ی تنسور خروجی 16×32×32 خواهد بود (عدد آخر، یعنی 16، نشان‌دهنده‌ی تعداد نهایی نقشه‌های ویژگی است که برابر با تعداد فیلترهای اعمال شده روی تصویر می‌باشد).
  • عملیات کانولوشن با32فیلتر3×3هدف از این عملیات این است که ابعاد خروجی هم‌اندازه با نگاشت‌های ویژگی اصلی باقی بماند. padding را می‌توان برابر با 1 و stride (گام) را برابر با 1 قرار داد (برای کسب اطلاعات بیشتر در مورد padding و strides و تأثیرات آن‌ها روی ابعاد نگاشت‌ها به این مقاله مراجعه کنید). اندازه‌ی تنسور خروجی 32×32×32 خواهد بود.
  • عملیات پولینگ ماکزیمم با یک فیلتر3×3(مقادیر padding و stride طبق استدلال بیان شده در عملیات قبلی محاسبه می‌شوند): اندازه‌ی تنسور خروجی 64×32×32 خواهد بود؛ از آن‌جایی که فیلتر پولینگ روی همه‌ی نقشه‌های ویژگی تنسور ورودی اجرا می‌شود، عمق تنسور خروجی برابر با عمق تنسور اصلی (=64) است.

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

حل مشکل پارامترهای زیاد

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

به عنوان مثال، در اجرای عملیات اول کانولوشن، با اجرای کانولوشن 1×1 می‌توانیم تعداد نگاشت‌ها را از 64 به 16 کاهش دهیم.

پارامترهای زیاد

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

[irp posts=”5264″]

جمع‌بندی

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

ماژول Inception
ماژول Inception، نسخه‌ی 1.0
ماژول Inception، نسخه‌ی 2.0
ماژول Inception، نسخه‌ی 2.0

Inception

برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.