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

Greedy Layerwise Learning Can Scale to ImageNet

در این پست به بررسی و تحلیل یادگیری layerwise، بعنوان یک متد جایگزین برای یادگیری end-to-end می پردازیم.

مقدمه و تاریخچه

شبکه های shallow با یک لایه ویژگی هایی دارند که تفسیر، آنالیز و بهینه سازی آنها را نسبت به شبکه های دیپ آسان تر می کند؛ اما این شبکه ها در representation ضعیف‌ هستند، یعنی بعضاً ورودی های شبکه از نوعی هستند (مثلا تصویر) که نمی توان تنها با یک لایه آنها را در فضای latent به خوبی نمایش داد. در بسیاری از تسک های بینایی ماشین و همچنین در حوزه هایی نظیر speech recognition، NLP و حتی در مسائل یادگیری تقویتی، از deep CNN ها استفاده می شود و این شبکه ها با الگوریتم back propagation آموزش داده می شوند. اما چه چیزی در موفقیت این شبکه ها نقش اساسی دارد؟ آیا نیاز است که لایه های کانولوشنی بطور مشترک، یا به اصطلاح jointly، آموزش ببینند تا به عملکرد بالایی دست یابند؟ جلوتر توضیح می دهیم که حتی برای داده های پرچالشی مثل ImageNet پاسخ این سوال منفی است.

یادگیری end-to-end (فرآیندی که در آن همه ی بخش های مختلف شبکه با هم و همزمان آموزش می بینند، نه بصورت ترتیبی) یک رویکرد استاندارد در بهینه سازی شبکه های عصبی است. اما چند نکته در خصوص این رویکرد قابل توجه است: اول اینکه لایه ها چطور با هم کار می کنند تا به دقت های بالا در پیش بینی برسند؛ در واقع، چرا و چگونه جدایی پذیری خطی در طول شبکه افزایش پیدا می کند. دوم اینکه پی بردن به ارتباط بین شبکه های shallow و deep سخت است؛ به عبارت دیگر، نتایج تعمیم پذیری، تخمین و بهینه سازی در شبکه های تک لایه در دسترس است اما در شبکه های چند لایه چنین نیست. در نهایت، یادگیری end-to-end می تواند از نظر محاسبات و منابع حافظه بعضاً ناکارآمد باشد. یک رویکرد alternative برای روش یادگیری end-to-end این است که لایه های CNN را بصورت sequential یا ترتیبی آموزش بدهیم؛ یعنی یادگیری هر لایه را به یک مسئله ی یادگیری نظارت شده‌ی shallow (که در متن با عنوان 1-hidden-layer auxiliary problem به آن اشاره شده است) تبدیل کرده و آن را حل کنیم؛ تمام لایه های شبکه را به ترتیب و با همین رویکرد learn کنیم. این روش می تواند هدف هر لایه را مستقیماً مشخص کند. به این رویکرد، یادگیری layerwise گفته می شود.

در سال 2007 بنژیو و همکارانش از greedy layerwise learning برای initialization شبکه ها در یادگیری end-to-end استفاده کردند. اما کریژفسکی و همکارانش در 2012 نشان دادند که تکنیک های آموزشی مدرن، بطور کلی ما را از layerwise initialization بی نیاز می کنند.

استفاده از layerwise learning در ساختن شبکه های عصبی supervised، در سال های 1965 (ایواخننکو و لاپا)، 1990 (فهلمن و لبیر) و 1996 (لنگله و همکارش) روی مسائل ساده و جایی که هنوز دیپ لرنینگ رویکرد غالب برای حل مسائل یادگیری نبود، مورد توجه قرار گرفت. هدف این کارها در درجه ی اول، یادگیری ساختار بود؛ ساختن معماری هایی که به مدل اجازه می دهد متناسب با داده ها رشد کند. بطور مشابه در سال 2016، کورتس و همکارانش یک متد یادگیری progressive پیشنهاد دادند که در آن شبکه به نحوی ساخته می شد که معماری با مسئله سازگار باشد.

در سال 2017، هوانگ و همکارانش تئوری تقویت (boosting theory) را با یک معماری residual ترکیب کردند تا لایه ها را بصورت ترتیبی آموزش دهند. اما این کار روی دیتاست های محدودی انجام شد و نشان داده شد که همچنان استفاده از رویکرد end-to-end برای رسیدن به نتایج بهتر نیاز است.

متد های دیگری هم وجود دارند که در آنها، در هر مرحله، یک لایه به شبکه ی موجود اضافه و سپس یادگیری end-to-end برای آموزش شبکه ی جدید بکار گرفته می شود. در این متد ها هدف پایداری مدل های آموخته شده است؛ نظیر کار موسکا و ماگولاس و همینطور کار وانگ و همکارانش در سال 2017.

نوآوری و مشارکت

در کار های اخیر به استفاده از متد های آموزش جایگزین برای مسائلی با دیتاست های بزرگ که فقط با دیپ لرنینگ حل می شدند، توجه بسیاری شده است. اما بسیاری از این متد ها و استراتژی های آموزش روی دیتاست های کوچک (نظیر MNIST و CIFAR) جواب می دهند و برای دیتاست های large-scale (نظیر ImageNet) نتیجه‌بخش نیستند. در این مقاله با استفاده از یک سری ایده ها برای معماری و فرآیند آموزش، به این نتیجه رسیدند که حل ترتیبی مسائل auxiliary با یک لایه مخفی منجر به CNN ای می شود که می تواند روی دیتاست ImageNet عملکرد بهتری نسبت به AlexNet داشته باشد. سپس این ایده گسترش یافت و با حل مسائل auxiliary، این بار با 2 یا 3 لایه مخفی (k-hidden layer CNN problem, k=2,3)، یک مدل 11 لایه بدست آمد که از تعدادی از خانواده مدل VGG بهتر عمل می کند؛ می توان با آموزش یک مدل VGG-11 به دقتی برابر با دقت بدست آمده از روش یادگیری end-to-end رسید. ادعا شده این روش جایگزین، اولین روشی است که می تواند روی دیتاست ImageNet با روش یادگیری end-to-end رقابت کند.

متد پیشنهادی

در این بخش معماری و الگوریتم آموزش فرمولایز می شود. تمرکز روی CNN هاست با تابع فعال ساز غیرخطی ReLU که با ρ نشان داده می شود. در این متد، در هر گام یک لایه اضافه می شود: اولین لایه از مسئله CNN با k لایه مخفی.

· فرمولاسیون معماری

مطابق شکل 1، معماری ما J بلاک دارد که به ترتیب آموزش داده می شوند. با شروع از یک ورودی x، یک representation اولیه بصورت x0 از j کانولوشن عبور می کند و هر بار یک xj تولید می کند. هر xj به یک طبقه بند auxiliary داده می شود تا خروجی پیش بینی شده ی zj حاصل شود. در لایه ی j-اُم یک اپراتور کانولوشنی با پارامتر های θj با نماد Wθj، یک طبقه بند با پارامتر های γj با نماد Cγj و یک اپراتور down-sampling با Pj نمایش داده می شوند. پارامتر ها با کرنل سایز 3*3 و با ترم های بایاس می باشند. بنابراین با ورودی xj، در لایه ی j+1 خواهیم داشت:

که c تعداد کلاس هاست. برای اپراتور پولینگ P، از اپراتور invertible downsamplingاستفاده شده است؛ اپراتور های پولینگ دیگر نظیر strided pooling، average pooling و non-linear max-pooling باعث از دست رفتن اطلاعات می شوند. P برای لایه های مشخصی اعمال می شود (Pj = P) و نه لایه های دیگر (Pj = Id). طبقه بند Cγj هم بصورت زیر است:

که در آن W˜ 0, ..., W˜ k−2 لایه های کانولوشنی با پهنای ثابت، A یک spatial averaging، L یک اپراتور خطی است که ابعاد خروجی آن c می باشد. برای k=1، طبقه‌بند Cγj یک مدل خطی است و در این حالت معماری با دنباله ای از تک لایه های CNN آموزش داده می شود. برای k=2,3، طبقه‌بند یک CNN با 1 یا 2 لایه مخفی است (p=1,2-hidden-layer CNN).

شکل 1: یادگیری layerwise CNN با استفاده از 2 لایه مخفی (k=2-hidden layer)
شکل 1: یادگیری layerwise CNN با استفاده از 2 لایه مخفی (k=2-hidden layer)


· آموزش با مسائل کمکی (Auxiliary Problems)

فرآیند آموزش layerwise است: در عمق j از مدل، درحالیکه همه ی پارامتر های دیگر فریز می شوند، θj با حل یک مسئله ی auxiliary بدست می آید: بهینه سازی {θj , γj} برای رسیدن به بهترین دقت training برای طبقه‌بند Cγj. این ایده را برای مجموعه آموزش {xn, yn} فرمولایز می کنیم:

برای یک تابع z(·; θ, γ) با پارامتر های {θ, γ} و یک تابع loss بصورت l، می خواهیم مقدار ریسک کمینه شود:

هرچه مقدار فوق کمتر شود، auxiliary classifier مورد نظر در طبقه بندی داده ها بهتر عمل کرده و دقت آن بیشتر خواهد شد. این بهینه سازی به روش SGD انجام می شود و می توان نشان داد که خطای training در هر لایه بهبود می یابد.

الگوریتم 1. LayerWise CNN
الگوریتم 1. LayerWise CNN

الگوریتم 1، فرآیند آموزش مدل layer Wise CNN را نشان می دهد؛ در استپ j-اُم، سمپل های ورودی {xj} را با استفاده از رابطه ی x(j) = ρWθ(j-1)P(j-1)x(j-1) بدست می آوریم؛ سپس پارامتر های {θj , γj} را به نحوی بدست می آوریم که Rˆ(z(j+1); θj , γj ) کمینه شود.

در ادامه دو قضیه در خصوص این متد، آورده شده است: قضیه ی اول بیان می کند که در هر لایه، خطای training بهبود می یابد (Progressive improvement)؛ بهینه سازی یک شبکه ی تک لایه منجر به این می شود که خروجی های classification بیشترین جدایی پذیری خطی را داشته باشند. بنابراین حل مسئله ی layerwise با یک لایه، باعث بهبود فزاینده linear separability در طول شبکه می شود. شکل 2 نمودار دقت مدلی که بصورت layerwise با یک لایه مخفی آموزش دیده را نشان می دهد؛ مطابق نمودار، با افزایش تعداد لایه ها دقت شبکه نیز افزایش می یابد.

شکل 2: نمودار دقت مدل layerwise با k=1، روی دیتاست ImageNet
شکل 2: نمودار دقت مدل layerwise با k=1، روی دیتاست ImageNet


قضیه ی دوم بیان می کند اگر برای حل یک مسئله، آن را به چند زیرمسئله ی کوچکتر تبدیل کنیم و هر کدام از زیرمسئله ها را جداگانه حل کنیم، درصورتیکه پاسخ آنها به پاسخ آپتیمال نزدیک باشد، پاسخ مسئله نیز به پاسخ آپتیمال نزدیک خواهد بود؛ به بیان دیگر، بهینگی پاسخ auxiliary problem ها، بهینگی پاسخ الگوریتم 1 را نتیجه می دهد.

نتایج مقاله

آزمایش ها روی دو دیتاست CIFAR-10 و ImageNet انجام شده و عملکرد مدل های layer-wise با k=1 (و البته در ادامه، برای k=2,3) لایه بررسی شده است.

بسیاری از الگوریتم های پیشنهاد شده روی دیتاست های بزرگی نظیر ImageNet قابل استفاده نیستند و به نتایج خوبی نمی انجامند. برای مثال، ترکیب توصیفگر SOTA با یک مدل خطی، روی دیتاست CIFAR-10 به دقت 82% و روی ImageNet به دقت 17.4% منجر می شود. در این بخش نتایج مدل پیشنهادی این مقاله (تحت عنوان مدل SimCNN) روی هر دو دیتاست مذکور، بررسی می شود. برای CIFAR-10 نتایج مطابق جدول زیر است:

برای layerwise CNN با k=1 یک مدل با J=5 لایه، به همراه down-sampling در لایه های j=2,3، آموزش داده شده که به دقت 88.3% می رسد، دقتی نزدیک به عملکرد مدل AlexNet با رویکرد یادگیری end-to-end(e2e) (89.0%). طبق جدول فوق، دقت بدست آمده از بالاترین دقت بدست آمده با متد های layerwise دیگر (82.1%) بیشتر است.

قابل ذکر است که یک مدل ensemble بصورت میانگین وزندار خروجی های تمام طبقه‌بند های auxiliary نیز در نظر گرفته شده است (طبق رابطه ی زیر)؛ منظور از Ens. در جدول فوق، دقت بدست آمده از این مدل می باشد.

نتایج بدست آمده روی ImageNet در جدول 2 آورده شده است؛ برای k=1 با J=8 لایه و downsampling در لایه های j=2,3,4,6، top-5 acc روی مجموعه ولیدیشن به 79.7% و برای مدل ensemble به دقت 80.8% می رسد که از عملکرد AlexNet و بالاترین دقت بدست آمده از روشهای alternative دیگر، بهتر است.

در اینجا linear separability را ماکزیمم دقتی که classifier خطی می تواند به آن برسد، تعریف می کنیم و CNN-p-separability را دقت بدست آمده برای طبقه‌بند CNN با p لایه (p-layer CNN) تعریف می کنیم.

همانطور که اشاره شد، linear separability برای k=1، با افزایش عمق شبکه بیشتر می شود؛ طبق نمودار سمت چپ در شکل زیر، برای k>1 هم linear separability با بیشتر شدن عمق شبکه بهبود می یابد. در لایه های اول linear separability برای k=1 سریعتر افزایش می یابد (تقریبا بصورت خطی)؛ اما در نهایت برای k>1، linear separability به مقادیر بیشتری همگرا می شود. نمودار های سمت راست نشان می دهند که CNN-p-separability هم با عمق شبکه بهبود می یابد؛ البته برای k>1، بسیار بیشتر. این نتایج نشان می دهد که فرآیند آموزش ترتیبی برای حالت k>1 می تواند representation ای ایجاد کند که برای لایه ی بعدی ورودی بهتری باشد.

شکل 3: Linear separability (نمودار سمت چپ) و CNN-p separabilibty (نمودار های سمت راست) برحسب عمق، روی دیتاست CIFAR-10
شکل 3: Linear separability (نمودار سمت چپ) و CNN-p separabilibty (نمودار های سمت راست) برحسب عمق، روی دیتاست CIFAR-10


در نمودار سمت چپ، classifier یک مدل خطی (Logistic Regression) است. در نمودار های سمت راست، classifier یک مدل CNN با 1 (نمودار بالا) و 2 (نمودار پایین) لایه می باشد. k هم در واقع تعداد لایه های مخفی هر بلوک (با صرف نظر کردن از classifier) است.

طبق جداول فوق، آموزش ترتیبی با k>1 لایه ی مخفی، عملکرد بهتری را روی هر دو دیتاست نتیجه می دهد.

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

در این مقاله یک راه حل جایگزین برای یادگیری end-to-endدر CNN ها معرفی شد که مبتنی بر آموزش لایه به لایه ی شبکه، بدون هیچ فیدبکی بین لایه ها، بود. این متد روی دیتاست های بزرگ نیز قابل استفاده است و رقیبی جدی برای روشهای پایه به شمار می آید. آموزش layerwiseمی تواند برای مدل های بزرگ با محدودیت حافظه، آموزش و فشرده سازی همزمان مدل، آموزش پایدار برای مسائل پر چالش کاربرد داشته باشد. بعلاوه، بهینه سازی مدل های shallow بسیار راحت‌تر و تفسیر پذیرتر از مدل های دیپ است؛ همچنین می توان مشکل vanishing gradient را تا حدی برطرف و نیاز به استفاده از تکنیک های نرمالیزیشن را کم کرد.

این متد امکان آموزش مدل های layerwise بزرگتر را فراهم می کند و بنابراین برای کاربرد هایی با مدل های بزرگ، نظیر کاربرد های 3-D vision و تصویر برداری در حوزه ی پزشکی، پیشنهاد می شود.

مدل های ImageNet اخیر (بعد از خانواده مدل VGG) برای کاربرد های صنعتی توسعه یافته اند؛ در این کاربرد ها زیرساخت های لازم برای تنظیم هایپر پارامتر و معماری فراهم است، بنابراین طراحی بهتر بهینه سازی برای مسائل auxiliary می تواند به نتایج بهتری هم منجر شود.




مرجع:

Belilovsky, E., Eickenberg, M. and Oyallon, E. (2018) “Greedy layerwise learning can scale to ImageNet,” arXiv [cs.LG]. Available at: http://arxiv.org/abs/1812.11446.


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


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