mojtaba rayati
mojtaba rayati
خواندن ۵ دقیقه·۲ سال پیش

آموزش شبکه های عمیق: layer wise در مقابل end to end

این نوشته بر اساس مقاله Greedy Layerwise Learning Can Scale to ImageNet نوشته شده است. هدف اینست که با آموزش با یکی شیوه های آموزش layerwised آشنا شویم، امکان­پذیری و مزیت­های آن را دریابیم.

آشنایی با Layerwised training

می دانیم که شبکه­ های عمیق در مسائل supervised به این صورت آموزش داده می شوند که برای لایه آخر خطایی بر اساس خروجی حاصل شده و خروجی دلخواه در نظر گرفته می شود سپس تمامی لایه ها و وزن ها بر اساس خطای به دست آمده تغییر می کند. به این شیوه از آموزش اصطلاح end to end training اطلاق می شود. اگرچه این شیوه از آموزش در عملکرد موثر اما از نظر تحلیل رفتاری شبکه حین آموزش دشوار است یعنی اولاً نمی توان ارتباط بین لایه ها را فهمید و یا اینکه فهمید هر لایه چه عملکردی از خود نشان می دهد. حال اگر مسئله، آموزش یک شبکه تک لایه بود، به دلیل وجود پشتوانه گسترده علمی می­شد آنها را به خوبی تجزیه تحلیل کرد. یعنی می­توان فهمید که آن لایه چه رفتاری از خود نشان می دهند همچنین می­توان در مورد همگرایی آن اظهار نظر های قویتری انجام داد.

هدف این است که روشی پیشنهاد بشود که بتوان در عین اینکه شبکه هدف عمیق است، در حین طراحی از ابزارهای تحلیلی شبکه های کم بهره ببریم. برای این کار ابتدا این مشاهده را که در شبکه های دیده می‌شود را در نظر بگیرید داده ها در شبکه ها هر چی پیش می روند به صورت تدریجی کلاس های مختلف جداسازی بیشتر و کلاس های مشابه نزدیکی بیشتری از خود نشان خواهند داد (contraction & sepertaion). به شکل زیر توجه کنید در شکل ρ همان تابع تحریک ReLu و W نیز بلوک کانولوشنی هست.

شکل 1. جداسازی کلاس­های مختلف داده در لایه­های به صورت تدریجی
شکل 1. جداسازی کلاس­های مختلف داده در لایه­های به صورت تدریجی

این مشاهده در شبکه­های عمیق کانولوشنی بسیار فراگیر است. بنابراین می توان گفت ظاهراً هر لایه وظیفه دارد روی داده ها عملیات separationرا انجام دهد.

حال می­توان ایده greedy layer wised training را مطرح کرد. این روش بیان می دارد که آموزش لایه­ای باشد. به این صورت که هر لایه وظیفه داشته باشد حداکثر جداسازی برای ورودی های خود را به وجود آورد. در این حال چون آموزش در هر بار برای یک لایه هست، می توان ابزار تحلیل شبکه­های تک لایه را نیز برای آن در نظر گرفت.

حال چطور می ­توان لایه به لایه این شکل از آموزش را انجام داد. به شکل های زیر توجه کنید.

شکل 2. مراحل آموزش یک شبکه عمیق به صورت layerwised
شکل 2. مراحل آموزش یک شبکه عمیق به صورت layerwised

در این شبکه ابتدا لایه­ی مورد نظر با یکclassifier auxiliary آموزش می بیند. تابع هدف این گذاشته می­شود که خروجی شاخه همان خروجی هدف (لیبل کلاس­ها) باشد (به همین دلیل از کلمه greedy در عنوان روش استفاده شده است). بعد از اتمام آموزش ضرایب به‌دست‌آمده فریز می شود و لایه بعد به شبکه اضافه می شود. این لایه نیز با classifier auxiliary مربوط به خود آموزش می­بیند. پس در هر مرحله تنها یک لایه آموزش می بیند که برای آن یک لایه ورودی، خروجی لایه قبل و خروجی لیبل های هر کلاس از داده است. در شکل DNN شبکه عمیق متناظر با classifier auxiliary و عمق شاخه auxiliary به صورت زیر تعریف شده است.

در این رابطه اگر k=1 باشد به معنای اینست که شاخه auxiliary تنها یک جداساز خطی هست. شکل زیر نمودار دیگری برای این شیوه از آموزش هست.

شکل 3. دیاگرام بلوکی آموزش layer wised
شکل 3. دیاگرام بلوکی آموزش layer wised

حال ممکن این سوال پیش آید که آیا آموزش layer wisedبرای عملکرد کل شبکه موثر است؟ به بیان دیگر آیا شبکه آموزش دیده شده توسط این روش classifier خوبی خواهد بود؟ نویسندگان مقاله به ازای قبول شرایطی خاص قضایای زیر را به صورت تحلیلی نشان دادند.

  • پیشرفت تدریجی (progressive improvement) به شرط اینکه در لایه ها از downsampling استفاده نشود تابع هزینه هر لایه از لایه قبلی خود خود کمتر یا مساوی است.
  • اگر تابع تحریک تابعی 1-lipshitz باشد (تابع Relu تابع 1-lipshitz هست) که با لایه­ های کانولوشنی سری شده شبکه پایدار می ماند
  • خطای عملکرد لایه آخر با یک باند از مرتبه J2ε محدود می‌شود. که J تعداد لایه هاست و همچنین ε از تعریف لایه ­ها به دست می ­آید ( ε -approximation ) و نیاز به محاسبه جداگانه آن نیست. دقت کنید این قضیه نشان می دهد که هر چه تعداد لایه ها بیشتر باشند باند خطا از مرتبه ای بالاتر خواهد بود و شبکه از بهینگی فاصله می‌گیرد. به شکل زیر توجه کنید که هرچه تعداد لایه­ها بیشتر شده رفتار از بهینگی فاصله گرفته (فاصله دقت داده­های train و testتخمینی از فاصله شبکه از بهینگی هست).
شکل 4. تغییرات خطا به ازای تغییر عمق شبکه (J)
شکل 4. تغییرات خطا به ازای تغییر عمق شبکه (J)

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

تست روش layer wised

این شیوه از آموزش هم بر روی دیتاست cifar10 تست شده و هم بر روی ImageNet. دو جدول زیر عملکرد شبکه روی این دیتاست ها را نشان می دهد. در جدول SimCNN شبکه مورد نظر است و شبکه به ازای عمق­های مختلفی از auxiliary classifier آموزش داده شده است (k=1,2,3).

دیده می­شود شبکه به ازای k=3 از روی دیتاست cifar10 (با دقت 92.8) از دقت VGG (با دقت 92.5) فراتر رفته است. همچنین برای همین عمق از شبکه auxiliary عملکرد (با دقت 89.8) نسبت به vgg13 (با دقت 89.3) بر روی دیتاست ImageNet بهتر شده است. در جدول دیده می شود هرچه عمق شبکه auxiliary (k) افزایش پیدا کرده عملکرد بهبود می­یابد. نمودار زیر این مطلب را دقیق­تر نشان­ می­دهد.

شکل 5. تغییرات دقت بر حسب عمق شبکه اصلی و شبکه auxiliary
شکل 5. تغییرات دقت بر حسب عمق شبکه اصلی و شبکه auxiliary


نتیجه ­گیری

اول از همه باید گفته این پژوهش قوام این ایده که لایه­های کانولشونی در CNNها باعث جداسازی تدریجی داده ها می­شوند را تقویت کرد. و نشان داد که می توان از روش layer wised برای آموزش شبکه­های عمیق بر روی دیتاست­های سخت مانند ImageNetاستفاده کرد. نتایج و تحلیل­ها این پژوهش نشان داد که این شیوه از آموزش، جدا از امکان تحلیل لایه­ای بهتر، استفاده­های کاربردی نیز دارد:

  • زمانی که محدودیت حافظه وجود دارد چراکه در زمان آموزش تنها متغیرهای یک لایه آموزش می بینند
  • زمانی که پایداری شبکه در طول آموزش چالش باشد.
  • برای prototypingو زمانی که معلوم نیست معماری پیشنهادی موثر است یا نه این شیوه می­تواند به عنوان قدم اول استفاده شود.



مرجع:

[1] Belilovsky, Eugene, Michael Eickenberg, and Edouard Oyallon. "Greedy layerwise learning can scale to imagenet." International conference on machine learning. PMLR, 2019.

شبکه عمیقآموزش لایه به لایهlayer wisedend to end trainingشبکه عصبی
شاید از این پست‌ها خوشتان بیاید