ویرگول
ورودثبت نام
علیرضا محمدی
علیرضا محمدی
خواندن ۱۱ دقیقه·۲ سال پیش

یادگیری محلی contrastive بدون نظارت

در این روش، برای محاسبه گرادیان لایه‌های ابتدایی شبکه، به گرادیان لایه‌های انتهایی نیاز داریم. در چنین ساختاری لایه‌های ابتدایی در فرآیند backwark propagation باید منتظر لایه‌های انتهایی بمانند در حالی که این قید وابستگی بین لایه‌ها چندان منطقی به نظر نمی‌رسد.

اگر بخواهیم شبکه‌های عصبی عمیق را در مقایسه با سیستم‌های زیستی بررسی کنیم، شواهدی وجود دارد که وزن سیناپس‌های موجود در مغز انسان به صورت محلی بروزرسانی می‌شود و احتیاجی به هماهنگی و منتظر ماندن برای اتمام کار باقی قسمت‌های مغز وجود ندارد.

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


در این مقاله ابتدا نگاهی خواهیم داشت به ایده‌های کنونی در زمینه آموزش محلی شبکه و ساختار Greedy InfoMax را مورد بررسی قرار می‌دهیم؛ سپس با بررسی مشکلات و نواقص آن، ساختار یادگیری محلی LoCo [1] را معرفی می‌کنیم و راهکار‌هایی را که در این ساختار به منظور کاهش فاصله‌ی بین عملکرد یادگیری end to end و یادگیری محلی، ارائه شده‌است بررسی می‌کنیم.


یادگیری بدون نظارت

در ابتدا با موفقیت شبکه‌ی AlexNet در یادگیری بازنمایی تصاویر بدون برچسب، یادگیری بدون نظارت در زمینه‌هایی همچون پیش‌بینی محتوا، پیش‌بینی چرخش تصاویر، افزودن رنگ‌ به تصاویر و مساله شمارش یک مفهوم در تصویر مورد توجه قرار گرفت. بازنمایی که این شبکه‌ها از تصاویر می‌آموزند را می‌توان با استفاده از یک دیکودر و حتی با بهره‌گیری از لایه‌های خطی به برچسب کلاس تبدیل کرد.

پس از آن یادگیری بدون نظارت contrastive معرفی شد که توانست عملکرد خوبی را از خود در شبکه‌ی ImageNet نشان دهد و فاصله‌ی بین یادگیری با نظارت و بدون نظارت را هرچه بیشتر کاهش دهد.

روش contrastive عبارت است از یادگیری بازنمایی تصاویر از زوج ورودی‌های مشابه و غیرمشابه. بدین صورت که در طول یادگیری شبکه، انکودر تلاش می‌کند یک بازنمایی معقول را از تصاویر ایجاد کند و دیکودر نیز تا بر اساس تابع خطای contrastive تصاویر غیرمشابه را از هم تفکیک کند.

یکی از نمونه‌های این تابع خطا به صورت زیر است:

این تابع خطای InfoNCE مشابه با تابع خطای cross entropy در یک مساله طبقه‌بندی است که پارامتر دما tau نیز در آن لحاظ شده‌است. در این تابع q و k بردار بازنمایی نرمال‌شده تصاویر هستند که هدف کلی ایجاد یک بازنمایی است که در آن نمونه‌ی مرجع q فاصله‌ی کم‌تری از نمونه مثبت داشته و فاصله بیشتری از نمونه‌های منفی پیدا کند. یک شبکه ارائه شده یادگیری بدون نظارت و بر اساس تابع خطای بررسی شده در بالا، شبکه‌ی SimCLR نام دارد که در آن روش‌های زیادی به منظور کاهش فاصله‌ی بین یادگیری بدون نظارت و یادگیری با نظارت ارائه شده‌است.

اولین ایده استفاده از batch بزرگ‌تر و augmentation قوی‌تر تصاویر آموزشی است. همچنین به منظور ایجاد بازنمایی‌ها عمومی‌تر به جای استفاده از دیکودر خطی، از MLP غیرخطی استفاده شده‌است.

شبکه‌ی Greedy InfoMax نیز شبکه‌ی دیگری است که بر اساس یادگیری بدون نظارت ولی با ارائه‌ی ایده‌هایی در آموزش محلی مطرح شده‌است که در ادامه به بررسی جزئیات آن می‌پردازیم.

Greedy InfoMax

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

هرچند موفقیت تعدادی از مدل‌های self-supervised contrastive این مساله را به چالش می‌کشد، زیرا این مدل‌ها در مرحله‌ی یادگیری بازنمایی بدون استفاده از دیتاهای برچسب خورده، توانسته‌اند به عملکرد مشابه و یا نزدیک به رقبایsupervised خود برسند. بر این اساس ایده‌ای که وجود دارد این است که بلوک‌های شبکه‌ی عصبی عمیق را از لحاظ گرادیانی ایزوله کنیم و هر بلوک را با استفاده از روش یادگیری contrastive محلی آموزش دهیم.

این ایده موجب می‌شود تا به این موضوع فکر کنیم که آیا می‌توانیم نتایج مشابه با روش‌های contrastive را به صورت محلی بدست آوریم؟

بر این اساس روش contrastive ارائه شده‌است که به دنبال یادگیری بازنمایی محلی در هر طبقه است.

در این شبکه، بخش انکودر که مسئول یادگیری بازنمایی دیتاست، به چند ماژول مختلف تقسیم شده‌است که در انتهای هرکدام یک تابع خطای contrastive استفاده شده‌است بنابراین در روند back propagation گرادیان در طول شبکه جریان نمی‌یابد و بلکه هر یک از ماژول‌ها بر اساس تابع خطای تعریف شده و به صورت حریصانه آموزش می‌بیند.

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

همچنین ایزولاسیون گرادیان موجب می‌شود تا لایه‌های مختلف از یکدیگر بازخوردی نداشته باشند؛ همانطور که گفته شد در حالت عادی لایه‌های ابتدایی بازنمایی خود را از دیتا بر اساس نظارت لایه‌ی نهایی بهبود می‌بخشند و در صورتی که این نظارت وجود نداشته باشد، بازنمایی ضعیف از دیتا در لایه‌های ابتدایی می‌تواند عملکرد شبکه را در لایه‌های نهایی کاهش دهد.

بنابراین عملکرد شبکه در این ساختار همچنان وجود دارد و فاصله زیادی بین این ساختار یادگیری محلی و یادگیری end to end دیده می‌شود که در روش LoCo تلاش شده‌است تا این فاصله کم و کم‌تر شود.

روش LoCo

به منظور کاهش فاصله‌ی عملکرد بین شبکه‌های مطرح با روش یادگیری end to end و یادگیری محلی contrastive ، روش Local Contrastive Representation Learning معرفی شده‌است. اولین ایده‌ی مطرح شده در این مقاله به منظور مرتفع ساختن مشکل ناشی از ایزولاسیون گرادیان می‌باشد که در بخش قبل به آن اشاره شد.

بر خلاف روش GIM که در آن تمامی ماژول‌ها از یکدیگر ایزوله بودند و بازخوردی از عملکرد باقی شبکه دریافت نمی‌کردند، در ساختار LoCo هر دو طبقه در یک واحد با یادگیری محلی قرار می‌گیرد که طبقه‌های میانی دو واحد متوالی با یکدیگر اشتراک دارند.

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

پل گرادیانی

به منظور ایجاد یک مکانیزم بازخورد مناسب در یادگیری محلی، ایده‌های مختلفی در [1] بررسی شده‌است.

  • در ایده‌ی اول به منظور بروزرسانی وزن‌های طبقات مشترک بین دو واحد، تنها از گرادیان لایه بالاتر در شبکه استفاده می‌شود. این روش نسبت به ایده‌ی اصلی ارائه شده در [1] که وزن‌ها از هر دو لایه‌ی بالایی و پایینی به اشتراک گذاشته می‌شود عملکرد ضعیف‌تری دارد اما باز هم عملکرد بهتری را نسبت به حالتی که ایزولاسیون کامل گرادیانی وجود داشته باشد از خود نشان می‌دهد.
  • در این روش مکانیزم soft sharing مورد بررسی قرار گرفته‌است. بدین صورایده‌های مختلفی برای ایجاد این مکانیزم بازخورد گرادیانی وجود دارد که بعضی از این ایده‌ها ظت که وزن‌ها مستقیما در ماژول‌های یادگیری محلی به اشتراک گذاشته نمی‌شوند بلکه از طریق اعمال ترم جریمه‌ی L2 بر روی تفاضل آن‌ها، استفاده خواهند شد. برای مثال در تصویر مروبط به ساختار LoCo بلوک res3 در ابتدای یادگیری دارای وزن‌دهی یکسانی در ماژول‌های محلی متفاوت است، اما در طول یادگیری این وزن‌ها واگرا خواهند شد. ترم پنالتی به منظور کنترل این وضعیت و اشتراک وزن‌ها به صورت soft اضافه می‌شود. ضرائب مختلفی برای ترم پنالتی مورد بررسی قرار گرفته‌است که این روش اشتراک را از soft تا hard مورد بررسی قرار دهد. انتخاب ضریب ترم پنالتی و soft sharing بهبودی را در عملکرد شبکه نسبت به حالتی که هیچ اشتراک‌گذاری وزنی وجود نداشته باشد، ایجاد می‌کند اما اعمال روش hard sharing اندکی عملکرد را کاهش می‌دهد، هرچند که باز هم عملکرد کلی نسبت به روش بدون اشتراک‌گذاری بهتر است.
  • در نهایت نیز مساله اندازه‌ی ماژول یادگیری محلی بررسی شده‌است. به این صورت که به جای استفاده از یک طبقه کامل، از تعداد کم‌تری لایه residual به منظور به اشتراک‌گذاری وزن‌ها استفاده شود. در حالت عادی هر واحد یادگیری محلی دارای دو طبقه کامل است اما حال می‌خواهیم عملکرد شبکه را در حالتی که هر واحد متشکل از یک طبقه کامل و تعدادی لایه کانولوشنی باشد بررسی کنیم. در این حالت تنها بلوک‌های residual ابتدای هر واحد به اشتراک گذاشته خواهند شد. برای این بررسی عملکرد شبکه در دو حالتی که یک بلوک و یا دو بلوک مشترک باشد بررسی شده‌است. مشاهده می‌شود که هرچه تعداد بلوک‌های بیشتری مشترک باشد (که نهایتا به اشتراک گذاری یک طبقه کامل و ساختار (که نهایتا به اشتراک گذاری یک طبقه کامل و ساختار LoCo نزدیک می‌شود.) عملکرد شبکه بهتر خواهد شد. هر چه تعداد بلوک‌های مشترک کم‌تر باشد، دریافت بازخورد ضعیف‌تر بوده و نتیجتا عملکرد شبکه به ساختار GIM نزدیک‌تر است.

با استفاده از این بررسی و مقایسه نتایج این 3 روش با روش بدون بازخورد و با روش پل گرادیانی معرفی شده در [1] دریافتیم که به اشتراک گذاری وزن‌های یک طبقه کامل بین دو واحد یادگیری محلی متوالی، بهترین عملکرد را نتیجه می‌دهد و تا حد خوبی فاصله را با یادگیری end to end کاهش می‌دهد.

دیکودر عمیق‌تر

تحلیل دیگری که در [1] بررسی شده‌است این است که اندازه‌ی محدوده‌ی موثر در لایه‌های کانولوشنی ابتدایی شبکه ممکن است برای عملکرد مناسب یادگیری contrastive خیلی کوچک باشد.

با توجه به آنکه تابع خطا در تمامی واحد‌ها استفاده می‌شود، تشخیص نمونه‌ی مثبت در دیکودر مربوط به واحد‌های ابتدایی خیلی سخت می‌باشد. برای مثال در نظر داشته باشد که در واحدهای یادگیری محلی در ابتدای شبکه، باید یک max pooling بر روی فضای ویژگی 56*56 اعمال شود و سپس بردار حاصل برای طبقه‌بندی به دیکودر سپرده شود. بنابراین به نظر می‌رسد که افزودن لایه‌های کانولوشنی به دیکودر، به منظور افزایش محدوده‌ی موثر دریافت، ایده‌ی مناسبی باشد. همچنین با توجه به طبقات مشترک بین واحد‌ها، می‌توان بدون ایجاد بار اضافی در مسیر forward شبکه، دیکودر را عمیق‌تر کرد.

  • در ابتدا تاثیر افزودن یک لایه کانولوشنی به دیکودر بررسی شده‌است. افزودن یک لایه به تنهایی باعث بهبود عملکرد نشده‌است اما افزودن یک لایه کانولوشنی با downsampling از max pooling در دیکودر، توانسته‌است عملکرد یادگیری محلی contrastive را بهبود بخشد.
  • در این بخش تعداد لایه‌های کانولوشنی بیشتری به دیکودر اضافه می‌شود. ابتدا تنها دو لایه، سپس به اندازه یک طبقه کامل و نهایتا به ازای یک شبکه کامل لایه اضافه می‌شود. مشاهده شده‌است که عملکرد هر سه در مقدار مشخصی اشباع شده‌است و افزودن بیش از دو لایه تاثیری در عملکرد نخواهد داشت؛ هرچند عملکرد 2 لایه کانولوشنی بهتر از 1 لایه کانولوشنی در دیکودر است.
  • ایده‌ی دیگری که بررسی شده‌است، افزودن دو لایه MLP و ایجاد یک دیکودر با 4 لایه می‌باشد. افزودن این لایه موجب بهبود عملکرد کلی شده‌است اما مشکل محدوده‌ی موثر دریافت همچنان وجود دارد.
  • ایده‌ای که در نهایت استفاده شده‌است، افزودن یک لایه کانولوشنی residual و دیکودر با دو لایه MLP است که در این حالت حتی با به اشتراک‌گذاری یک طبقه بین واحد‌های متوالی و یادگیری محلی، عملکرد شبکه خیلی نزدیک به شبکه‌ی SimCLR شده‌است، در حالی که از دیکودر خیلی عمیقی نیز استفاده نکردیم.

بحث مدیریت حافظه

ایده‌ای که در ابتدای بررسی یادگیری محلی نیز مطرح شد این است که با استفاده از یادگیری محلی احتیاج به نگه‌داری خروجی تمامی نورون‌ها و گرادیان‌ها برای بروز‌رسانی وزن‌ لایه‌ها از بین می‌رود و از این رو میزان مصرف حافظه در این روش‌های یادگیری کم‌تر خواهد بود.

اما مساله‌ای که وجود دارد و باعث می‌شود تا LoCo نتواند از قابلیت اشتراک‌گذاری محلی با استفاده از شبکه‌ی ResNet-50 بهره ببرد این است که هرچند در پیاده‌سازی این شبکه مساله‌ی توازن هزینه‌ی محاسباتی در نظر گرفته‌شده اما مساله‌ی توازن مصرف حافظه نادیده گرفته شده‌است.

برای مثال در شبکه‌ی ResNet-50 هرچند که ابعاد فضایی پس از کاهش بعد به اندازه‌ی یک‌چهارم کاهش می‌یابد، اما تعداد کانال‌های ویژگی تنها دو برابر می‌شود؛ این موضوع سبب می‌شود تا دو لایه‌ی conv1 و res2 به تنهایی 50 درصد از حافظه‌ای که کل شبکه استفاده می‌کند را به خود اختصاص دهند.

هرچند با استفاده از این شبکه به عنوان backbone نسبت کاهش مصرف مموری در ساختار GIM برابر با 1.81x و این نسبت در ساختار LoCo برابر با 1.28x می‌باشد، به این دلیل که LoCo بر خلاف GIM یک طبقه اضافی را نیز ذخیره می‌کند.

ایده‌ای که به منظور بهره‌برداری بیشتر از اشتراک‌گذاری محلی در [1] استفاده شده‌است، بازطراحی و ایجاد تغییراتی در ساختار ResNet-50 است. به این صورت که به جای استفاده از شبکه با 4 طبقه، از شبکه‌ای با 6 طبقه و کاهش ابعاد تصاعدی‌تر استفاده شده‌است که هر طبقه دارای 3 بلوک residual است؛ این ساختار PResNet-50 نامیده‌شده‌است [1].

استفاده از این شبکه به عنوان backbone میزان کاهش مصرف مموری در LoCo نسبت به SimCLR به 2.76x رسیده‌است با وجود آنکه عملکرد هر دو خیلی نزدیک می‌باشد.

میزان مصرف حافظه در لایه‌های مختلف ResNet-50 و PResNet-50 در تصویر زیر مقایسه شده‌است:

همانطور که در شکل فوق نیز مشاهده می‌شود، PResNet-50 مصرف حافظه متعادل‌تری نسبت به ResNet-50 دارد.

مقایسه عملکرد

برای آنکه فاصله بین عملکرد سه مدل زیر بررسی شود، نمودار توابع خطای هر مدل در مقایسه با هم نمایش داده‌شده‌است.

  • شبکه SimCLR که آموزش آن به صورت end to end انجام می‌شود و یک مدل بدون نظارت و contrastive است و تنها یک تابع خطا دارد.
  • مدل GIM که یادگیری آن کاملا محلی است و مکانیزم بازخوردی وجود ندارد، به منظور بررسی آن با مدل SimCLR مقادیر تمامی توابع خطا پس از تمامی لایه‌ها بررسی می‌شود، انتظار می‌رود که مقدار تابع خطای لایه آخر، در صورتی که عملکرد مشابه با SimCLR باشد، به مقدار تابع خطای این شبکه میل کند.
  • مدل LoCo با یادگیری محلی و مکانیزم بازخورد گرادیانی، مجددا مقادیر توابع خطای تمامی لایه‌ها بررسی می‌شود.
مقایسه عملکرد سه شبکه
مقایسه عملکرد سه شبکه


همانطور که مشاهده می‌شود مقدار تابع خطای طبقه نهایی شبکه LoCo به مقدار تابع خطای شبکه‌ی SimCLR کرده‌است و بنابراین هردوی این شبکه‌ها عملکرد مشابهی دارند، اما مقدار تابع خطای نهایی در GIM فاصله زیادی از مقدار خطای این دو شبکه دارد و نتوانسته‌است به بازنمایی خوبی از تصاویر برسد.



[1] X. Yuwen, R. Mengye, (2020). LoCo: Local Contrastive Representation Learning.

یادگیری محلیcontrastive learningطراحی و تحلیل شبکه‌های عصبی عمیقدانشگاه تهران
شاید از این پست‌ها خوشتان بیاید