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

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

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

Szegedy و همکاران در سال ۲۰۱۴ شبکه گوگل GoogLeNet را معرفی کرد این معماری شامل ۲۲ لایه است و به خطای ۶٫۷ درصدی دست پیدا کرد. این معماری برای اولین بار از معماری های رایج فاصله گرفت ، معماری هایی که لایه های کانولوشن و pooling را بر روی هم به صورت یک ساختار ترتیبی سوار می کردند. نویسنده مقاله نیز تاکید می کند در این معماری توجه خاصی به حافظه مصرفی شده است. (نکته ای که اینجا وجود دارد این است که انباشتن تعداد زیاد لایه ها بر روی یکدیگر و اضافه کردن تعداد زیادی فیلتر باعث افزایش محاسبات، حافظه مصرفی و افزایش شانس بیش برارزش شدن مدل میشود)این معماری با سایر معماری های ارائه شده قبلی متفاوت است و تمامی لایه ها دیگر به صورت ترتیبی نیستند. در این معماری لایه هایی وجود دارد که به صورت موازی قرار گرفته اند هر کدام از بلاک ها Inception module نام دارند.

باکس سبز رنگ در قسمت پایین شکل ورودی و باکس سبز رنگ در بالای شکل خروجی مدل هست.اساسا در هر لایه کانولوشن سنتی شما مجبورید یک انتخاب بین عملیات pooling و عملیات کانولوشن (و اندازه فیلتر)داشته باشد. اما ماژول Inception این اجازه را به شما میدهد که تمامی این عملیات را به صورت موازی انجام دهید. به این دلیل این عملیات باعث افزایش بسیار زیاد تعداد زیادی خروجی ها می شوند. برای برطرف کردن این مشکل نویسندگان مقاله یک کانولوشن ۱×۱ قبل از لایه های ۳×۳ و ۵×۵ اضافه کردند. این کانولوشن ۱ ×۱باعث کاهش ابعاد می شود.برای مثال، فرض کنید ورودی ما به شکل ۱۰۰ ×۱۰۰×۶۰ باشد با اعمال کردن ۲۰ فیلتر ۱×۱باعث کاهش ابعاد به ۱۰۰×۱۰۰×۲۰ می شود. این بدین معنی است که کانولوشن های ۳ ×۳ و ۵ ×۵ دیگر نبایستی با ورودی با حجم بالا کار کنند. در اینجا ماژولی داریم که شامل یک شبکه در لایه،یک فیلتر با اندازه کوچک،یک فیلتر با اندازه بزرگ و یک عملیات pooling است. این ایده “شبکه در شبکه” باعث استخراج اطلاعات در سطوح مختلف می شود به صورتی که فیلتر ۵*۵ ناحیه تاثیر بزرگتری را می تواند پوشش دهد و اطلاعات مفید را استخراج کند. شما لایه pooling را دارید که به کاهش اندازه فضا و کاهش بیش برارزش شدن کمک شود. از همه مهمتر بعد از هر لایه کانولوشن تابع فعال ساز ReLU وجود دارد که غیر خطی بودن شبکه را افزایش می دهد.اساسا شبکه قادر به انجام عملیات متفاوت خواهد بود.

نکات اصلی :

  • از ۹ ماژول Inception استفاده کرد که در مجموع دارای بیش ۱۰۰ لایه بود
  • بیشترین تعداد پارامتر ها در هر معماری در لایه های تماما متصل قرار میگیرند.این معماری به جای استفاده از لایه های تماما متصل از یکaverage pool استفاده کرد. این متد باعث کاهش تعداد پارامترها به صورت چمشگیر شد.
  • نسبت به معماری Alexnet تعداد پارامتر ها ۱۲ درصد کاهش یافت
  • این معماری بر روی تعدادی کارت گرافیک برای یک هفته آموزش داده شد.

 

معماری ResNet

در سال ۲۰۱۵ تعدادی از محققین مایکروسافت معماری ResNet را ارائه دادند که خطا را به ۳٫۶ درصد کاهش داد. این معماری از ۱۵۲ لایه تشکیل شده است که یک رکورد در هر سه بخش تشخیص اشیاء، کلاسه بندی و localization با استفاده از یک مدل به جا گذاشت. این مدل در حقیقت قدرت انسان در تشخیص اشیاء را جا گذاشت و با دقت به مراتب بالاتر از انسان ها اشیاء را تشخیص داد.

ایده اصلی یک بلاک residual این است که ورودی توسط یک لایه کانولوشن ، لایه ReLU و یک لایه کانولوشن پردازش می شود ، نتیجه این تبدیلات یک تابع F(x) تولید میکند . نتیجه این تابع با ورودی لایه قبل جمع می شود . نویسنده مقاله اعتقاد دارد بهینه سازی بلاک residual نسبت به از معماری های قبلی ساده تر است.

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

 

نکات اصلی:

  • عمق زیاد.
  • ۱۵۲ لایه
  • بعد از دو لایه اول فضای ورودی فشرده می شود (از ورودی با اندازه ۲۲۴ ×۲۲۴ به ۵۶ ×۵۶ )
  • نویسنده مقاله اعتقاد دارد در سایر معماری ها ، با اضافه کردن لایه باعث بالارفتن زمان آموزش و خطای آزمایش می شود.
  • نویسندگان مقاله شبکه ای با ۱۲۰۲ لایه را طراحی کردند اما دقت آزمایش کاهش یافت (احتمالا به خاطر بیش بر ارزش شدن)
  • این مدل توسط ۸ کارت گرافیک برای دو تا سه هفته آموزش داده شد.
  • این معماری بهترین معماری شبکه عصبی کانولوشن موجود است.

 

 

 

 

معماری MobileNet

مقاله ای که اخیرا توسط گوگل منتشر شد یک معماری جدید است به نام MobileNets که برای سیستم هایی تعبیه شده مثل موبایل بهینه سازی شده است. در هسته اصلی این معماری از کانولوشن بر حسب کانال تفکیک پذیر (depthwise separable convolution) برای ساخت یک شبکه عصبی سبک استفاده شده است .

در این مقاله برای کاهش تعداد پارامتر های شبکه کانولوشنال از دو عملیات کانولوشن به نام های کانولوشن نقطه ای(pointwise) و کانولوشن بر حسب کانال(depthwise) استفاده می شود که در حین کاهش قابل توجه پارامتر ها، دقت نیز در حد مطلوب باقی می ماند. به عبارتی بده و بستان بین دقت و پارامتر ها بهبود پیدا می کند!

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

متد های زیادی برای ایجاد این چنین شبکه هایی وجود دارند، اما می توان آنها را به دو بخش عمده تقسیم کرد:

  • کاهش تعداد پارامتر ها با ابداع ساختار جدید لایه کانولوشن
  • فشرده سازی پارامتر ها

 

هنگامی که مقاله GoogLeNet در سال ۲۰۱۴ منتشر شد شامل ماژول هایی Inception مثل شکل زیر بود:

ایده اصلی پشت این ماژول این است که ابتدا توسط یک کانولوشن با اندازه فیلتر ۱*۱ همبستگی میان کانالی(cross-channel)و سپس همبستگی مکانی(spatial correlations) توسط یک کانولوشن یا اندازه فیلتر ۳*۳ محاسبه می شود. این دو عملیات جدا از یکدیگر انجام می شوند ، استفاده از کانولوشن با اندازه فیلتر ۱*۱ به این دلیل است که این فیلتر یک پیکسل و تمامی کانال های آن (به عنوان مثال در یک عکس رنگی کانال ها R و G و B هستند) را به یک پیکسل خروجی نگاشت می دهد. از این عملیات عمدتا برای کاهش تعداد ابعاد فیلتر (عمق) استفاده می شود.

بدون دیدگاه

ارسال یک نظر

نظر
نام
ایمیل
وبسایت