Kimia Alavi
Kimia Alavi
خواندن ۱۹ دقیقه·۳ سال پیش

Neural Architecture Search (NAS)

مقدمه

یکی از مسائل حائز اهمیت و چالش برانگیز در بکارگیری شبکه های عصبی عمیق، در کاربرد های مختلف اعم از طبقه بندی و شناسایی اشیا، انتخاب معماری مناسب است. در سال های اخیر، پیدا کردن روشی به منظور یادگیری خودکار یک معماری مناسب برای شبکه ها، مورد توجه قرار گرفته است. در این خصوص کارهای زیادی انجام شده که به بخشی از آن ها، جلوتر اشاره خواهیم کرد؛ اما بطور کلی، تکنیک هایی که در حال حاضر استفاده می شوند، معمولا در دو دسته ی الگوریتم های تکاملی (EA) و یادگیری تقویتی (RL) قرار می گیرند. در الگوریتم های تکاملی، هر ساختار شبکه عصبی بصورت یک رشته انکد می شود، در طول فرآیند جست و جو، تغییرات و بازترکیب هایی بصورت رندوم روی این رشته ها اعمال می شود؛ سپس هر رشته (مدل) آموزش دیده و ارزیابی می شود و مدل هایی که عملکرد بهتری داشتند، انتخاب می شوند. در الگوریتم های یادگیری تقویتی، عامل تعدادی اکشن انتخاب می کند که ساختار مدل را مشخص می کند، این مدل آموزش دیده و دقت آن در مرحله ی ارزیابی به عنوان پاداش برگردانده می شود؛ از این پاداش برای بروزرسانی کنترلر RNN (که همان پالیسی انتخاب اکشن است) استفاده می شود. در سال 2017، زوف و همکارانش متدی به نام "جست و جوی معماری عصبی" یا به اختصار NAS پیشنهاد کردند که در آن از الگوریتم REINFORCE (یکی از الگوریتم های policy gradient مشهور در یادگیری تقویتی که برای بدست آوردن مستقیم پالیسی در محیط بکار می رود) برای تخمین پارامتر های یک شبکه ی عصبی بازگشتی (RNN) استفاده شده بود؛ در این متد، RNN همان پالیسی است که با استفاده از آن یک توالی از اکشن ها برای مشخص کردن ساختار CNN، تولید می شود. در این مسئله ی یادگیری تقویتی ریوارد یا تابع پاداش، دقت طبقه بندی CNN تشکیل شده، روی مجموعه ای از دادگان ارزیابی است.

مقالات دیگری هم وجود دارند که از RL برای یادگیری ساختار شبکه استفاده کرده اند؛ بعنوان مثال در مقاله ی دیگری، متدی مشابه NAS پیاده سازی شده با این تفاوت که بجای بکار بردن الگوریتم policy gradient، از الگوریتم Q-Learning استفاده شده است. در یکی از مقالات، فضای اکشن ها دستخوش کمی تغییر شده، به این صورت که گسترش دادن یکی از لایه ی موجود یا اضافه کردن یک لایه جدید به عمق شبکه نیز بعنوان یک اکشن در نظر گرفته شده است. در کار های دیگری از الگوریتم های تکاملی برای یادگیری ساختار شبکه و همچنین تخمین پارامتر ها استفاده شده است. در شماری از مقالات، الگوریتم های EA برای یادگیری شبکه و الگوریتم SGD برای تخمین پارامتر ها بکار گرفته شده اند.

الگوریتم های RL و EA هر دو از متد های جست و جوی لوکال یا محلی هستند؛ یک رویکرد متفاوت، استفاده از جست و جوی heuristic یا سرانگشتی است که در آن ساختار شبکه از یک مدل ساده شروع شده و بصورت progressive یا تصاعدی به یک مدل پیچیده تبدیل می شود. در یک مقاله، از جست و جوی درختی Monte Carlo (MCTS) استفاده شده است که در آن، در هر node (گره) از درخت جست و جو، یک شاخه بصورت رندوم انتخاب شده و گسترش می یابد، بنابراین این روش بسیار ناکارآمد است. در مقاله ی دیگری، بهینه سازی مبتنی بر مدل ترتیبی (SMBO) توسعه یافته که با استفاده از آن تصمیم گیری می شود که کدام گره گسترش یابد (انتخاب گره تصادفی نیست).

از طرفی طراحی شبکه های عصبی کانولوشنی برای دستگاه های موبایل یکی از چالش هایی است که در دنیای امروز با آن مواجهیم، چرا که لازم است چنین مدل هایی کوچک، سریع و در عین حال دقیق باشند. مدل هایی نظیر MobileNet و ShuffleNet به همین منظور ارائه شدند؛ در این مدل ها سعی شده ساختار و محاسبات سک تر و تعداد پارامتر ها کمتر شود. در ادامه ابتدا به بررسی متد های NAS و PNAS می پردازیم که به ترتیب از الگوریتم های RL و SMBO بهره گرفته اند (این دو الگوریتم پیش تر معرفی شدند)، سپس به سراغ بررسی متد MNASمی رویم که به منظور یافتن معماری مناسب برای دستگاه های موبایل معرفی شده است.

1. Learning Transferable Architectures for Scalable Image Recognition

نوآوری مقاله:

در آپریل 2018، زوف و همکارانش متد دیگری برای یادگیری مستقیم معماری روی یک دیتاست خاص (نظیر ImageNet) ارائه دادند. از آنجا که بکارگیری متد قبلی (که سال 2017 ارائه شد) برای دیتاست های خیلی بزرگ پرهزینه بود، آنها پیشنهاد دادند که در گام اول، جست و جو روی یک دیتاست کوچکتر صورت گیرد سپس معماری بدست آمده به دیتاست بزرگتر انتقال پیدا کند. ایده اصلی این مقاله، طراحی یک فضای جست و جوی جدید (فضای جست و جوی NASNet) است که قابلیت انتقال را ایجاد کند. این کار الهام گرفته از مقاله ی اول NAS در سال 2017 است که با بهره گیری از یادگیری تقویتی یا همان RL، ساختار معماری را بهینه می کرد؛ اما همانطور که اشاره شد، اعمال NAS یا هر متد جست و جوی دیگر، روی دیتاست های بزرگی مثل ImageNet از نظر محاسباتی بسیار سنگین است. بنابراین نویسندگان مقاله تصمیم گرفتند که در قدم اول جست‌وجو برای معماری مناسب را روی یک دیتاست کوچکتر، مثل CIFAR-10 انجام داده و سپس معماری بدست آمده را به ImageNet منتقل کنند. در اینصورت پیچیدگی معماری مستقل از عمق شبکه و سایز تصویر ورودی می شود. همچنین از آنجا که تمام CNN های موجود در فضای جست و جو، متشکل از لایه های کانولوشنی (یا cell های) مشابه (از نظر ساختار) و با وزن های متفاوت هستند؛ جست و جو برای بهترین معماری کانولوشنی می تواند به جست و جو برای بهترین ساختار cell کاهش یابد. سپس با stack کردن یا پشت سر هم قرار دادن این cell ها به تعداد مطلوب، شبکه ی CNN نهایی حاصل می شود. بعلاوه در این مقاله یک تکنیک جدید برای regularization به نام ScheduledDropPath معرفی شد که بصورت چشمگیر قدرت تعمیم در مدل های NASNet را بهبود می دهد.

متد ارائه شده:

در متد NAS که سال 2017 معرفی شد، یک کنترلر RNN معماری A از فضای جست و جو را با احتمال p پیش بینی می کند؛ یک شبکه ی کوچک (به اصطلاح child network) با معماری A آموزش داده می شود تا دقت ارزیابی R حاصل شود. با استفاده از مقادیر دقت بدست آمده، وزن های کنترلر به روش policy gradient آپدیت می شود تا کنترلر معماری های بهتری را در طول زمان تولید کند (شکل 1).

شکل 1: شمای کلی متد  NAS معرفی شده در 2017
شکل 1: شمای کلی متد NAS معرفی شده در 2017


با توجه به این واقعیت که شبکه های عصبی حاصل پشت سر هم قرار گرفتن مکرر یک سری cell (متشکل از لایه های کانولوشنی، توابع غیرخطی و اتصالات بین لایه ها) می باشند، در سال 2018 راهکار جدیدی مطرح شد که طبق آن کنترلر RNN (متشکل از ماژول LSTM) بجای پیش بینی یک CNN کامل، یک cell کانولوشنی را پیش بینی کند (یا تولید کند)، سپس با stack کردن این cell ها، شبکه ی CNN نهایی حاصل خواهد شد در این راهکار جدید هم، شبکه ی بدست آمده آموزش می بیند، دقت آن محاسبه می شود و با استفاده از مقادیر دقت بدست آمده، وزن های کنترلر به کمک الگوریتم proximal policy optimization (PPO) بروز می شوند. در واقع هر شبکه با یک احتمالی ایجاد می شود، از این احتمال برای بدست آوردن گرادیان RNN استفاده می شود، این گرادیان با دقت شبکه scale می شود تا RNN به نحوی آپدیت شود که به شبکه های بد، احتمال کم و به شبکه های خوب، احتمال زیاد اختصاص داده شود. برای ساختن معماری های مقیاس پذیر برای تصاویر ورودی با ابعاد متفاوت، به دو نوع cell برای دو هدف اصلی نیاز است؛ 1. Cell های کانولوشنی که یک فیچر مپ با همان ابعاد ورودی بر می گرداند (Normal Cell) و 2. Cell های کانولوشنی که فیچر مپی بر می گرداند که ابعاد آن با ضریب دو کاهش یافته است (Reduction Cell). در لایه ی ورودی Reduction Cell،stride برابر با 2 در نظر گرفته شده تا ابعاد کاهش یابد.

در شکل 2 نحوه ی قرارگیری cell های Normal و Reduction برای دیتاست های CIFAR-10 و ImageNet نشان داده شده است. برای دیتاست ImageNet تعداد cell های Reduction بیشتر است چون ابعاد ورودی به صورت 299*299 است (در مقایسه با ابعاد ورودی در CIFAR-10 که 32*32 می باشد). این دو cell می توانند معماری مشابه داشته باشند اما یادگیری دو معماری مجزا به اینصورت، سودمندتر است. تعداد تکرار cellها، یعنی N، و همینطور تعداد فیلتر های کانولوشنی بعنوان پارامتر های آزاد در نظر گرفته شده اند که با توجه به مسئله ی طبقه بندی مقداردهی می شوند.

شکل 2: معماری مقیاس پذیر به منظور طبقه بندی تصاویر برای CIFAR-10 و ImageNet
شکل 2: معماری مقیاس پذیر به منظور طبقه بندی تصاویر برای CIFAR-10 و ImageNet


ساختار cell های Normal و Reduction در شبکه ی کانولوشنی متغیر است و توسط کنترلر RNN جست و جو می شود و بدست می آید. در فضای جست و جوی NAS، هر cell دو hidden state بصورت h(i) و h(i-1) دریافت می کند که این ‌ها خروجی های دو cell در دو لایه ی پایین قبلی و یا تصویر ورودی هستند. کنترلر RNN با استفاده از این دو hidden state، بصورت بازگشتی باقی ساختار cellرا پیش بینی می کند (شکل 3). پیش بینی های کنترلر برای هر cell، در B بلوک تقسیم بندی می شود (به عبارت دیگر هر cell متشکل از B بلوک، مطابق شکل 3-ب است). هر بلوک 5 گام پیش بینی دارد که به کمک 5 softmax classifier (طبقه‌بند سافتمکس) مجزا انجام می شود:

گام 1. انتخاب یک hidden state از بین h(i) و h(i-1) یا از مجموعه ی hidden state های ساخته شده در بلوک های قبلی

گام 2. انتخاب hidden state دوم از آپشن های گام 1

گام 3. انتخاب یک operation (عمل) برای اعمال روی hidden stateانتخاب شده در گام 1

گام 4. انتخاب یک operation برای اعمال روی hidden state انتخاب شده در گام 2

گام 5. انتخاب یک روش برای ترکیب خروجی های گام 3 و 4، به منظور ساختن یک hidden stateجدید

در نهایت hidden state جدید به مجموعه ی hidden state های قبلی اضافه می شود. این 5 گام به ازای هر بلوک (یعنی B مرتبه) تکرار می شود (در اینجا B=5 است). در گام های 3 و 4 operation مورد نظر از میان گزینه های زیر انتخاب می شود:

در گام 5، کنترلر روشی برای ترکیب دو hidden state بدست آمده انتخاب می کند؛ این روش می تواند یک عملیات جمع element-wise و یا concatenation باشد. در نهایت هم همه ی hidden state های استفاده نشده که در cellایجاد شده بودند، با هم concat می شوند و خروجی نهایی cell را تولید می کنند. کنترلر در مجموع 5B*2 پیش بینی انجام می دهد (با در نظر گرفتن هر دو cell نرمال و کاهشی). هر بلوک نیاز به انتخاب 5 پارامتر گسسته دارد که هر کدام منطبق بر خروجی یک لایه ی سافتمکس است.

شکل 3-الف: نحوه ی ساختن یک بلوک از cell
شکل 3-الف: نحوه ی ساختن یک بلوک از cell
شکل 3-ب: بلوک ساخته شده
شکل 3-ب: بلوک ساخته شده


در شکل 4 معماری بهترین cell های کانولوشنی برای CIFAR-10 (با B=5) آورده شده است. علاوه بر این معماری، cell های کانولوشنی top-rank دیگر که بهترین عملکرد را داشتند نیز مورد ارزیابی قرار گرفتند. سه شبکه ی ساخته شده از این 3 جست و جویی که به نتایج بهتر منجر شدند، NASNet-A، NASNet-B و NASNet-C نامگذاری شده اند.

شکل 4: معماری بهترین cell های کانولوشنی (NASNet-A)
شکل 4: معماری بهترین cell های کانولوشنی (NASNet-A)


حین آموزش NASNet ها، نویسندگان به این نتیجه رسیدند که ScheduledDropPath، ورژن اصلاح شده ی DropPath، یک متد regularization موثرتر برای NASNet است؛ در DropPath، هر مسیر در cell بصورت تصادفی با یک احتمال ثابت، در فرآیند آموزش حذف می شود. در ورژن اصلاح شده، هر مسیر با احتمالی که بصورت خطی در طول آموزش افزایش می یابد، حذف می شود و این کار عملکرد نهایی شبکه ها را بطور چشمگیری بهبود می دهد.

نتایج بدست آمده و مزایای متد پیشنهاد شده:

نرخ خطای متد جدید روی دیتاست سیفار10، 2.4% بدست آمده که بهترین نتیجه تا آن زمان بوده است. NASNet ساخته شده توسط این متد، به top-1 accuracy برابر با 82.7% و top-5 accuracy برابر با 96.2% روی دیتاست ImageNet دست یافته است. متد پیشنهاد شده از نظر top-1 accuracy حدود 1.2% بهتر از معماری های ساخته شده توسط انسان بوده، با 9 بیلیون FLOPS* کمتر که به عبارتی 28% محاسبات را کاهش داده است. فیچر هایی که از فرآیند طبقه بندی یادگرفته شده اند، مفید و قابل انتقال به مسائل بینایی ماشین دیگر هستند. در یک تسک object detection یا شناسایی اشیا، فیچر های بدست آمده یا یاد گرفته شده توسط NASNet، با فریمورک Faster-RCNN استفاده شدند و 4% از بهترین نتیجه تا آن زمان پیشی گرفتند و روی دیتاست COCO به mAP حدود 43.1% دست یافتند.

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

یکی از نوآوری های مقاله این بود که جست و جو برای یک شبکه ی کامل را به جست و جو برای بهترین ساختار cell کاهش داد؛ این کار هم فرآیند سرچ را سریعتر می کند و هم قدرت تعمیم بهتری دارد. با این رویکرد معرفی شده، جست و جو برای بهترین معماری روی دیتاست CIFAR-10 هفت برابر سریعتر شد؛ با متد قبلی فرآیند سرچ 28 روز طول می کشید، اما با متد ارائه شده، پس از گذشت 4 روز الگوریتم به نتیجه می رسد. بعلاوه استفاده از تکنیک جدید برای regularization که پیش تر به آن اشاره کردیم، عملکرد شبکه و قدرت تعمیم آن را نیز بصورت چشمگیری بهبود داد.

2. Progressive Neural Architecture Search

نوآوری های مقاله:

در جولای 2018 زوف به همراه تیم دیگری یک مقاله ی جدید منتشر کردند. در این مقاله به جای استفاده از روش های یادگیری تقویتی و الگوریتم های تکاملی، استفاده از بهینه سازی مبتنی بر مدل ترتیبی یا SMBO پیشنهاد شده است چرا که متد های مبتنی بر RL و EA بار محاسباتی قابل توجهی به همراه داشتند (در متد قبلی فرآیند سرچ به مدت 4 روز زمان می برد). در متد جدید معرفی شده، جست و جو برای ساختار مناسب، از مدل های ساده شروع شده و به مدل های پیچیده تر می رسد؛ در همین حین یک مدل جایگزین بطور همزمان آموزش می بیند تا فرآیند سرچ در فضای ساختارهای cell را هدایت کند. در iteration یا تکرار b ام از الگوریتم، K تعداد cell نماینده داریم که هر کدام b بلوک دارند. این K تا cell با سایز b را به K'>>K تا cell با سایز b+1 افزایش می دهیم (یک بلوک اضافه می شود). از آنجا که آموزش و ارزیابی این تعداد cell روی دیتاست مدنظر پرهزینه است، یک مدل یا تابع جایگزین هم آموزش می بیند تا بدون نیاز به آموزش همه ی ساختار ها، عملکرد آن ها را پیش بینی کند. سپس این تابع جایگزین را به همه ی 'K تا ساختار اعمال می کنیم تا آن ها را رتبه بندی کند؛ در ادامه K ساختار برتر را آموزش داده و ارزیابی می کنیم. این روند را تا زمانیکه b=Bشود، تکرار می کنیم (B ماکزیمم تعداد بلوک هاست). بعلاوه در بخش بعد توضیح می دهیم که با این متد جدید، فضای جست و جو به میزان قابل توجهی کاهش یافته است و این امر فرآیند سرچ را تسریع می کند. همچنین به جای جست و جوی برای دو cell نرمال و کاهشی، یک نوع cell در این متد یاد گرفته می شود.

متد ارائه شده:

این متد نیز مشابه متد قبلی، یک رویکرد سلسله مراتبی را بکار می برد؛ ابتدا یک ساختار cell یادگیری می شود سپس از stack کردن این cell ها به تعداد مطلوب، CNN نهایی حاصل می شود. همانطور که اشاره شد، هر cell حاوی تعدادی بلوک است؛ هر بلوک را می توان با یک تاپل 5 تایی بصورت (I1,I2,O1,O2,C) مشخص کرد. I1 و I2 (متعلق به مجموعه ی Ib) ورودی های بلوک، O1 و O2 (متعلق به مجموعه ی O) عملیاتی است که به ورودی Ii اعمال می شود. C هم مشخص می کند که چگونه O1 و O2 ترکیب شوند تا فیچر مپ متناظر با خروجی بلوک (Hb) تولید شود. مجموعه ی ورودی های ممکن، شامل خروجی بلوک های قبلی بعلاوه ی خروجی cell قبلی یا خروجی دو cell قبلی است. فضای عملگر ها هم شامل 8 عملگر زیر است:

در متد NAS 2018، تعداد عملگر ها 13 تا بود؛ در این مقاله، عملگر هایی که توسط متد RL هرگز مورد استفاده قرار نمی گرفتند حذف شده است. بعلاوه نویسندگان به این موضوع پی بردند که در متد قبلی، روش ترکیب concatenation بکار نمی رود؛ بنابراین برای کاهش فضای جست و جو، تنها از روش جمع بعنوان عملگر ترکیب استفاده می شود. اگر بخواهیم سایز فضای ساختار های ممکن برای بلوک b ام (که با |Bb| نمایش داده می شود) را حساب کنیم، مقدار آن برابر خواهد بود با:

اگر هر cell 5 تا بلوک داشته باشد، تعداد کل ساختار های cell برابر است با:

قطعا بخاطر تقارن موجود در این فضا، تعدادی از این ساختار ها را می توان حذف کرد؛ بنابراین تعداد cell های یونیک تقریبا از مرتبه ی 12^10 است که در مقایسه با فضای سرچ متد قبلی، که از مرتبه ی 28^10 بود، بسیار کوچکتر است.

در بسیاری از رویکرد های قبلی، بطور مستقیم در فضایی مملو از cell ها، یا حتی بدتر، در فضایی از CNN ها، به دنبال ساختار مناسب بودیم. در متد NAS، یک کنترلر RNN در 50 گام بکار گرفته می شد تا ساختار مناسبی برای cell حاصل شود. اما جست و جوی در فضایی که بصورت نمایی در حال بزرگ شدن است، کار سختی می باشد؛ خصوصا در شروع کار که هیچ اطلاعاتی از مدل خوب و مناسب در اختیار نیست. بنابراین در این پژوهشی که زوف و تیمش انجام دادند، پیشنهاد شد که فرآیند جست و جو بصورت progressive یا جلو رونده انجام شود. مطابق شکل 5، فرض می کنیم حداکثر تعداد بلوک ها B=3 است؛ بعلاوه S1 مجموعه ی cell های کاندید متشکل از b بلوک را نشان می دهد. برای شروع، تمام cell های متشکل از یک بلوک را درنظر می گیریم (که تعدادشان B1 تاست)، S1=B1، تمام این cell ها را آموزش داده و ارزیابی می کنیم، سپس predictor را آپدیت می کنیم. در iteration دوم، cell های S1 را گسترش می دهیم تا تمام cell های ممکن با 2 بلوک حاصل شود (که تعدادش برابر است با:

و S'2=B1:2، امتیاز این cell ها را پیش بینی می کنیم و K تای اول را بر می گزینیم تا S2 بدست آید. این K ساختار را آموزش داده و ارزیابی می کنیم و مجددا predictor را آپدیت می کنیم. در iteration سوم، هر کدام از cell های S2 را گسترش می دهیم تا زیر مجموعه ای از cell های ممکن با 3 بلوک حاصل شود، S'3 زیرمجموعه ای از B1:3، امتیاز این cell ها را پیش بینی می کنیم و K تای اول را انتخاب می کنیم تا S3 بدست آید. این K ساختار را آموزش داده و ارزیابی می کنیم و ساختار برنده را بر می گردانیم. Bb تعداد بلوک های ممکن در مرحله ی b ام است.

شکل 5: متد PNAS
شکل 5: متد PNAS

همانطور که اشاره شد، نیاز است تا امتیاز ساختار های موجود در هر مجموعه ی S'b پیش بینی شود، چون آموزش و ارزیابی این ساختار ها بسیار پرهزینه و زمانبر است؛ بنابراین مکانیزمی لازم است تا عملکرد یک cell را پیش از آنکه آموزشش دهیم، پیش بینی کنیم. حداقل سه ویژگی مطلوب برای چنین مدل پیشگویی وجود دارد: predictor باید عملکرد هر cell با b+1 بلوک را پیش بینی کند، حتی اگر تنها روی cell های با حداکثر b بلوک آموزش دیده باشد؛ نیاز نیست که این مدل پیشگو به حداقل میانگین خطای مربعات دست یابد، اما باید قادر باشد مدل ها را دقیقا طبق عملکرد واقعی آنها، رتبه بندی کند؛ همچنین می خواهیم با حداقل تعداد cell ها، predictor را آموزش دهیم، یعنی تعداد داده های آموزشی کم خواهد بود. برای مدل پیشگو دو مدل متفاوت پیشنهاد شده است: داشتن ویژگی اول، بی درنگ استفاده از یک RNN را پیشنهاد می دهد، به همین منظور از یک LSTM استفاده شده که یک توالی به طول 4b (که I1 و I2 و O1 و O2 را برای هر بلوک نشان می دهد) را می خواند، در هر استپ ورودی یک بردار one-hot با سایز |Ib| یا |O| است. برای I1 و I2 از یک embedding مشترک با ابعاد D و برای O1 و O2 هم از یک embedding مشترک دیگر استفاده شده است. hidden state نهایی LSTM از یک لایه ی FC و سیگموئید می گذرد تا دقت ساختار بدست آید. علاوه بر این مدل RNN، یک مدل MLP هم بعنوان predictor پیاده سازی شده که در آن هر cell به یک بردار با طول ثابت تبدیل می شود، به این صورت که I1 و I2 و O1 و O2 هر کدام به شکل یک بردار D بعدی در می آیند، این بردار ها با هم concat شده و یک بردار 4D بعدی بدست می آید و درنهایت از این بردار های 4D بعدی بدست آمده برای هر بلوک، میانگین گرفته می شود. هر دو مدل با لاس L1 آموزش می بیند. برای آپدیت پارامترهای predictor می توان از الگوریتم SGD هم بهره گرفت؛ اما چون sample size خیلی کوچک است، گروهی از 5 مدل پیشگو، هر کدام با 4/5 داده های در دسترس، آموزش داده می شود؛ این روش واریانس پیش بینی را کاهش می دهد.

شکل 6 بهترین ساختار cell که با استفاده از متد PNAS بدست آمده را نشان می دهد. برای تشکیل شبکه های CNN روی دیتاست های CIFAR-10 و ImageNet، از استراتژی بکار رفته در متد NAS (stack کردن cell ها با stride 1 و 2) استفاده شده است. در انتهای شبکه، از یک global average pooling و بدنبال آن، یک لایه ی طبقه بندی سافتمکس بکار رفته است. برای دیتاست ImageNet هم یک لایه ی کانولوشنی 3*3 با stride=2، به منظور کاهش هزینه قرار گرفته است. در کل، ساختار CNN بدست آمده با این متد، مشابه متد قبلی است، با این تفاوت که در اینجا از یک نوع cell استفاده شده (تفاوتی بین cell نرمال و کاهشی در نظر گرفته نشده است) و بجای قرار دادن Reduction cell، یک cell نرمال با stride=2 بکار رفته است.

شکل 6: ساختار بهترین cell با استفاده از PNAS
شکل 6: ساختار بهترین cell با استفاده از PNAS


نتایج بدست آمده و مزایای متد پیشنهاد شده:

عملکرد PNASNet-5 روی دیتاست ImageNet، در مقایسه با NASNet-A، از منظر دقت CNN بدست آمده، کمی بهبود یافته است، با top-1 accuracy برابر با 82.9% و top-5 accuracy برابر با 96.2%. اما از نظر تعداد مدل هایی که باید ارزیابی شود، 5 برابر از متد NAS کارآمد تر و از نظر محاسبات کلی 8 برابر سریعتر است. همانطور که در بخش های قبل توضیح داده شد، فضای جست و جوی متد پیشنهاد شده، در مقایسه با متد قبلی، به میزان قابل توجهی کوچکتر است، این امر فرآیند سرچ برای یافتن بهترین ساختار را تسریع می کند، بعلاوه می توان مدل هایی با تعداد بلوک بیشتر را جست و جو کرد.

3. MnasNet: Platform-Aware Neural Architecture Search for Mobile

نوآوری مقاله:

در سال های اخیر شبکه های عصبی کانولوشنی، در طبقه بندی تصاویر، شناسایی اشیا و بسیاری از کابردهای دیگر پیشرفت چمشگیری داشتند؛ هرچه مدل های CNN بزرگتر و عمیق تر می شوند، کندتر شده و به محاسبات بیشتری نیاز دارند. بنابراین deploy کردن چنین مدل هایی روی پلتفرم هایی نظیر دستگاه های موبایل یا دستگاه های تعبیه شده، کار سختی خواهد بود. از این رو پژوهش های اخیر روی طراحی و بهبود مدل های CNNموبایل متمرکز شده اند و به کاهش عمق شبکه و استفاده از عملگر های کم هزینه تر نظیر depthwise کانولوشن و group کانولوشن پرداخته اند. چالش اصلی در طراحی این است که مدل بدست آمده باید هم کوچک و سریع باشد و هم دقت خوبی داشته باشد. در متد ارائه شده ابتدا مسئله ی طراحی در قالب یک مسئله ی بهینه سازی multi-objective یا چند هدفه به نحوی بیان می شود که هر دو معیار دقت و تاخیر مدل درنظر گرفته شود. برخلاف متد های قبلی، در این متد بجای تخمین دقت، با اجرا کردن مدل روی دستگاه موبایل واقعی، تاخیر بصورت مستقیم اندازه گیری می شود. بعلاوه در متد های پیشین، جست و جو میان تعداد محدودی cell انجام شده و سپس این cellدر سراسر شبکه تکرار می شد؛ هرچند که این کار فرآیند سرچ را ساده تر می کند اما تنوع لایه در شبکه که برای efficient بودن محاسبات مهم است را از بین می برد؛ از این رو در این پژوهش، یک فضای سرچ سلسله مراتبی فاکتوریزه شده (Factorized Hierarchical Search Space) معرفی شده که با حفظ تعادل بین انعطاف پذیری و اندازه ی فضای سرچ، اجازه می دهد لایه ها از نظر معماری متفاوت باشند.

متد ارائه شده:

ابتدا مسئله ی طراحی را در قالب یک مسئله ی بهینه سازی بیان می کنیم: اگر فرض کنیم برای مدل داده شده ی m، ACC(m) دقت مدل روی تسک در نظر گرفته شده، LAT(m) تاخیر مدل روی پلتفرم مورد نظر، همچنین T تاخیر مورد نظر باشد، یک راه حل رایج این است با قید LAT(m)<=T دقت مدل را بیشینه کنیم؛ اما این روش پاسخ های پرتو آپتیمال نمی دهد (چون فقط معیار دقت را بیشینه می کند). از این رو تابع هدف دیگری، به اینصورت در نظر گرفته شده است:

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

در متد ارائه شده، فرآیند جست و جو به اینصورت است که یک مدل CNNبه تعدادی بلوک یونیک شکسته می شود، هر بلوک متشکل از تعدادی لایه ی تکرار شده ی مشابه است، در هر بلوک، جست و جو برای عملیات و اتصالات مناسب برای یک تک لایه انجام می شود، سپس لایه ی بدست آمده، N مرتبه تکرار می شود. مطابق شکل 7، لایه های بلوک 2 با لایه های بلوک 4 می تواند متفاوت باشد؛ لایه ی 1-4 و 2-4 مشابه، ولی لایه های 1-2 و 1-4 متفاوتند.

شکل 7: فضای جست و جوی سلسله مراتبی فاکتوریزه
شکل 7: فضای جست و جوی سلسله مراتبی فاکتوریزه

سمت راست شکل فوق، نشان می دهد که زیرفضای جست و جو برای بلوک i شامل چه انتخاب هایی است؛ 5 مورد اول در ارتباط با معماری هر لایه و مورد آخر در ارتباط با تعداد دفعات تکرار لایه است.

شکل 8: معماری MnasNet-A1
شکل 8: معماری MnasNet-A1

مزیت متد سلسله مراتبی فاکتوریزه این است که اگر شبکه شامل Bبلوک باشد و سایز زیرفضای سرچ برای هر بلوک S باشد، سایز فضای سرچ برابر است با S به توان B ؛ در حالیکه اگر بجای استفاده از این متد، برای هر لایه (از یک بلوک) بصورت مجزا جست و جو انجام شود، سایز فضای سرچ برابر می شود با S به توان B*N (با فرض اینکه N متوسط تعداد لایه ها در هر بلوک باشد)؛ که در این صورت فضای سرچ خیلی بزرگ و فرآیند سرچ خیلی کند خواهد شد.

در نهایت برای پیدا کردن پاسخ های پرتو آپتیمال مسئله ی بهینه سازی چند هدفه، مشابه متد NAS از رویکرد یادگیری تقویتی استفاده شده است. در الگوریتم بکار رفته، مدل CNN با یک توالی از اکشن های انتخاب شده توسط یادگیر a1:T، مشخص می شود. هدف ماکزیمم کردن امید ریاضی پاداش است:

در اینجا m مدلی است که توسط اکشن a1:T تعیین شده، R(m) همان پاداش است که طبق رابطه ی زیر محاسبه می شود.

طبق شکل 8، فریمورک معرفی شده شامل سه جزء است: کنترلر RNN، یک trainer برای بدست آوردن دقت مدل، و یک تلفن همراه برای اندازه گیری تاخیر. از یک الگوریتم نمونه‌-ارزیابی-بروزرسانی استفاده میشد تا کنترلر آموزش ببیند: در قدم اول، کنترلر با پارامتر های فعلی و با پیش بینی توالی هایی از اکشن ها، یک batch مدل ایجاد می کند؛ هر مدل m روی تسک مورد نظر آموزش می بیند تا دقت ACC(m) حاصل شود و روی تلفن های واقعی اجرا می شود تا تاخیر LAT(m) نیز بدست آید. سپس پاداش R(m) محاسبه می شود؛ درنهایت با استفاده از الگوریتم PPO و با ماکزیمم کردن امید ریاضی پاداش ها، پارامتر های کنترلر آپدیت می شود. این الگوریتم تا همگرا شدن پارامتر های کنترلر و یا حداکثر شدن تعداد تکرار، اجرا خواهد شد.

نتایج بدست آمده و مزایای متد پیشنهاد شده:

نتایج بدست آمده از آزمایش ها نشان می دهد که رویکرد معرفی شده (MnasNet)، نسبت به مدل های CNNموبایل که پیش تر ارائه شده، عملکرد بهتری دارد. در تسک طبقه بندی روی دیتاست ImageNet، متد MnasNet به top-1 accuracy حدود 75.2% و تاخیر 78 میلی ثانیه روی یک گوشی Google Pixel دست یافته است که 1.8 برابر سریعتر از MobileNetV2است و 0.5% دقت بیشتری دارد؛ این متد 2.3 برابر سریعتر از NASNetاست و 1.2% دقت بیشتری دارد. MnasNet در مقایسه با مدل ResNet-50به دقت بالاتر (76.7%) می رسد، با 4.8 برابر پارامتر کمتر و 10برابر عملیات جمع و ضرب کمتر. اگر مدل ارائه شده را به منظور استخراج ویژگی در یک فریمورک شناسایی اشیای SSD (Single Stage Detector) استفاده کنیم، روی دیتاست COCO به تاخیر کمتر و mAP بهتر نسبت به ورژن های 1 و 2 MobileNet دست می یابد.

تحلیل و نتیجه گیری کلی:

در متد NAS سال 2018، پیشنهاد شد که بجای اینکه جست و جو را برای پیدا کردن معماری کامل یک شبکه ی CNN روی یک دیتاست بزرگ انجام دهیم، شبکه را بصورت چند سِلِ stack شده در نظر بگیریم و در فضای سرچ بدنبال بهترین ساختار برای cell های کانولوشنی مقیاس پذیر، روی یک دیتاست کوچکتر باشیم به نحوی قابل انتقال به دیتاست های بزرگتر و تسک های طبقه بندی دیگر باشد. این کار فرآیند سرچ را به میزان قابل توجهی تسریع می کند چون فضای سرچ کوچکتر می شود، محاسبات بشدت کاهش می یابد و الگوریتم 7 برابر سریعتر عمل می کند. بعلاوه اینکه CNN بدست آمده با این متد دقت خوبی هم می دهد؛ اما همچنان فرآیند جست و جو زمان قابل توجهی می برد (4 روز). چند ماه متد جدیدتری با نام PNAS ارائه شد که در آن بجای استفاده از الگوریتم یادگیری تقویتی برای رسیدن به ساختار مناسب cell، از یک متد بهینه سازی مبتنی بر مدل ترتیبی استفاده می شد؛ در این متد progressive، جست و جو از ساده ترین ساختار با یک بلوک شروع می شود و در هر تکرار، بلوک دیگری اضافه می شود. بعلاوه تعداد operation هایی که در هر cell انتخاب می شود، کمتر شده و در مجموع سایز فضای جست و جو بشدت کاهش می یابد (قابل ذکر است که برخلاف متد NAS بجای جست و جو برای دو ساختار cell نرمال و کاهشی، جست و جو تنها برای یک مدل cell انجام می شود). با این روش، تعداد مدل هایی که باید ارزیابی شود 5 برابر کمتر و محاسبات 8 برابر سریعتر می شود.

چالش دیگر این است که مدل CNN ای که در دستگاه های قابل حمل و موبایل بکار می رود، باید کوچک، سریع (با تاخیر خیلی کم) و در حین حال دقیق باشد. متد NAS ارائه شده برای پیدا کردن چنین مدلی خیلی کارآمد نیست؛ بنابراین سال 2019 متدی به نام MnasNet ارائه شد که در آن مسئله ی جست و جو برای مدل، به یک مسئله ی بهینه سازی چند هدفه تبدیل می شود که هر دو متریک دقت و تاخیر را مورد توجه قرار می دهد؛ همچنین بجای بدست آوردن تخمین نادقیقی از تاخیر، مدل مورد نظر روی یک تلفن همراه واقعی اجرا می شود تا مقدار واقعی تاخیر بصورت مستقیم بدست آید. از طرفی در دو متد قبل، یک ساختار cell بدست می آمد، این ساختار N مرتبه تکرار و CNN نهایی ساخته می شد؛ این رویکرد هرچند که ساده تر است، اما چون تنوع لایه در شبکه وجود ندارد، محاسبات بشدت inefficient می شود. در MnasNet مدل CNN به چند بلوک تفکیک می شود و فرآیند جست و جو برای هر بلوک بصورت مجزا انجام می شود، لایه های داخل هر بلوک مشابه همند با با لایه های بلوک های دیگر تفاوت دارند؛ استفاده از این رویکرد تنوع لایه در شبکه و نیز دقت شبکه را نسبت به متد دیگر افزایش می دهد.


گردآورنده: کیمیا علوی


nas
شاید از این پست‌ها خوشتان بیاید