Ahmadreza Sezavar
Ahmadreza Sezavar
خواندن ۱۳ دقیقه·۳ سال پیش

LoCo: Local Contrastive Representation Learning

مقدمه

اکثر الگوریتم های یادگیری عمیق، امروزه توسط روش back-propagation آموزش پیدا می کنند، ایده بر این اساس است که خطای آموزش در انتهای شبکه محاسبه می شود و وزن های شبکه براساس گرادیانی که از لایه انتهایی به سمت ابتدای شبکه جریان پیدا می کند، بروزرسانی می شوند. در نتیجه لایه های ابتدایی برای بروزرسانی پارامتر های خود باید منتظر لایه های انتهایی بمانند و این هماهنگی برای فرآیند های محاسباتی موازی مناسب نمی باشد.

الگوریتم پس انتشار خطا (Back propagation)

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

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


رابطه (1)
رابطه (1)



در رابطه (1) E تابع خطا و گرادیان در نرخ یادگیری ضرب شده و نتیجه آن از وزن کم شده و وزن بروزرسانی می شود.

مقدمه ای بر روش های یادگیری

مفهوم Representation Learning یعنی فرآیند یادگیری یک نگاشت پارامتریک از دامنه ورودی داده خام به فضای ویژگی به این امید که بتوان انتزاع و جنبه های مفیدتری را استخراج کرد و عملکرد را به خصوص در نمونه برداری کاهشی افزایش داد.

در شبکه های عصبی اولیه، از قوانین یادگیری انجمنی محلی که از شبکه های عصبی بیولوژیکی الهام گرفته شده بود، استفاده می شد و براین اساس بود که تغییر وزن سیناپس ها به فعال ساز های قبل و بعد از آن وابسته بود. یکی از مثال های کلاسیک آن روش hebbian است، که ارتباط بین دو نورون وقتی تقویت خواهد شد که هر دو نورون با هم فعال شده باشند. روش های یادگیری محلی در ماشین های محدود کننده بولتزمن (RBM) نیز بکار گرفته شده اند. نکته قابل توجه دیگر آن است که با ارائه روش های مختلف در این زمینه، عملکرد آنها با در مقایسه با روش های مرسوم مانند الگوریتم پس انتشار خطا فاصله زیادی داشتند. با این حال روش های جدیدتر از قبیل GIM و LoCo که در ادامه توضیح داده می شوند، یک تفاوت اصلی با متد های قبلی دارند و این است که آنها برای عملیات نمونه برداری کاهشی، بخش های بزرگی از شبکه عصبی را به عنوان یک واحد (unit) در نظر می گیرند در حالیکه روش های پیشین یک واحد را یک لایه کانولوشنی در نظر می گرفتند.

با موفقیت AlexNet، روش های متعددی مبتنی بر عدم استفاده از برچسب گذاری داده ها معرفی شدند، یکی از آنها آموزش self-supervised می باشد که در پیش بینی محتوا، رنگ و شمارش شی ورودی بکار می رود. روش های یادگیری رقابتی بدون نظارت نیز با پیشرفت خود، فاصله ی بین متد های مبتنی بر نظارت و بدون نظارت را تا حد زیادی پر کرده اند. روش Greedy InfoMax (GIM) برای یادگیری هر stageمحلی با ازبین بردن وابستگی ها روبه عقب مطرح شده اند که به صورت بدون نظارت کار می کنند.

با حذف وابستگی داده ها در مرحله عقب گرد، مدل می تواند یادگیری موازی داشته باشد و نیازی به منتظر بودن برای رسیدن اطلاعات از لایه های بالایی را نداشته باشند. بیشتر آموزش های موازی شبکه های یادگیری عمیق به صورت موازی سازی داده ها (data parallel training) انجام می شود، در این روش هر GPU بخشی از داده ورودی را گرفته و سپس گرادیان های محاسبه شده میانگین گرفته می شوند. به طور خلاصه روش های مبتنی بر پس انتشار عقب، نیاز به ذخیره محاسبات انجام شده دارند تا بتوانند گرادیان های جدیدتر را به دست آورند، در حالیکه در روش های یادگیری محلی نیازی به ذخیره این محاسبات و انتظار زمانی وجود ندارد.

یادگیری رقابتی (Contrastive learning)

اگر به مقاله “Supervised Contrastive Loss” که در سال 2020 چاپ شده است، نگاهی کنیم، در بخشی از آن که مربوط به نتایج است، اشاره شده که در ارزیابی که برروی دیتاست ImageNet انجام داده اند، تابع خطا پیشنهادی supervised contrastive lossآنها به مراتب عملکرد بهتری از cross entropy loss داشته است. چنین ادعایی واقعا یک پیشرفت برای تمام روش های یادگیری بانظارت می باشد، اما با مطالعه بیشتر مقاله متوجه خواهید شد که تابع خطای معرفی شده یک تابع خطای کاملا جدیدی نیست که جایگزین تابع cross-entropy شده، و درواقع یک راه جدید برای Pre-train کردن شبکه عصبی برای مساله طبقه بندی می باشد. در واقع در مساله طبقه بندی یک تصویر به شبکه داده می شود و در انتهای شبکه یک بازنمایی (Representation) از آن ایجاد شده و به کمک تابع Softmax یک احتمال که تصویر ورودی به کدام کلاس متعلق است تولید می شود. اما آنچه در مقاله فوق اشاره شده، این است که بتوان ابتدا در فضای ویژگی ها، ویژگی های مربوط به هرکلاس را تا جای ممکن به هم نزدیک و ویژگی های مربوط به کلاس های مختلف را از هم دور کرد، در چنین شرایطی می توان به کمک یک لایه جداساز خطی نیز طبقه بندی را انجام داد، بر این اساس الگوریتم پیشنهادی آنها دارای دو stage می باشد، در stage 1، با استفاده از روش contrastive سعی در یادگیری یک بازنمایشی می باشد که بدون اعمال هیچ مرزی بین کلاس ها، فضای ویژگی گفته شده مورد نظر ایجاد شود، و در stage 2، شبکه ای که در stage 1 بود را freeze کرده و دیگر آموزش نمی دهند و تنها لایه مربوط به طبقه بندی در stage 2 را آموزش می دهند که این آموزش نیز بر اساس همان روش سنتی مبتنی بر cross-entropy است.

شکل 1- supervied contrastive learning
شکل 1- supervied contrastive learning


پس نکته مهمی که وجود داشت contrastive pre-training بود، برای درک بهتر باید به موضوعاتی که در زمینه Unsupervised Contrastive learning وجود دارد، وارد شویم. نویسندگانی که در این حوزه هستند، معتقدند که می توان یک شبکه عصبی را با ابتدا pre-trainکردن آن به صورت unsupervised ارتقا داد، یکی از متد هایی که وجود دارد، یادگیری خود نظارتی یا Self Supervised Learning می باشد. همان طور که قبلا بیان شد، مهم ترین مزیت این روش ها این است که داده ها نیازی نیست برچسب گذاری شده باشند، و هدف این است که شبکه یک بازنمایشی از ویژگی ها را یادگیرد که معنا دار باشد، بدین منظور وقتی یک تصویر گرفته می شود، بر روی آن افزونگی هایی مثل crop، Flip و غیره صورت می گیرد، و تصویر را positive می نامند، هم چنین نیاز به یک تصویر negativeاست، تصویر negative می تواند هر تصویری از مجموعه داده باشد و تنها بایستی متفاوت از تصویر positiveباشد، و هدف این است که در فضای بازنمایش ویژگی ها، ویژگی مربوط به تصویر positive و تصویر های augment شده آن به هم نزدیک شده و تصویر های negative تاجای ممکن از آنها دور باشند. اما یک نکته مهم که وجود دارد این است که چون داده ها برچسب ندارند ممکن است تصویر negative نیز دارای کلاس مشابهی با positiveباشد و چنین رخدادی کار طبقه بندی برای لایه نهایی که از فضای بازنمایش ویژگی ها استفاده می کند را دشوار می کند در حالیکه این مشکل در supervised contrastive learning وجود ندارد (چون داده ها برچسب دارند)

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

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

در مقاله “LoCo” بیان شده که یادگیری رقابتی بر این اساس که یک زوج داده مشابه یا غیرمشابه را دریافت می کند، در طی روند آموزش، یک encoder برای یادگیری بازنمایش های معنادار و یک decoder برای تمایز دادن positive از negative از طریق تابع خطا InfoNCEاستفاده می کند. تابع خطا InfoNCE که در رابطه (2) نشان داده شده، در واقع یک تابع cross-entropy است که برای طبقه بندی استفاده می شود که دارای یک پارامتر مقیاس زمانی است و بردار های q و k بردار های بازنمایش نرمال شده encoder می باشند.

رابطه (2)
رابطه (2)


اخیرا نیز چارچوب SimCLR برای یادگیری رقابتی پیشنهاد شده که دارای تکنیک های مختلفی برای پرکردن فاصله بین بازنمایش یادگیری در روش های بانظارت و بدون نظارت می باشد. از مزیت های آن می توان به استفاده از batch sizeهای با سایز بزرگ (2k to 8k)، افزونگی داده قوی تر و به جای استفاده از یک لایه خطی به عنوان decoder، از یک سر غیر خطی MLPاستفاده می کند. چارچوب SimCLR، با وجود سادگی اش، به شدت وضعیت جاری را در یادگیری خود نظارت شده و نیمه نظارت شده بر روی تصویر برداری اینترنت پیشرفت می‌دهد.

Greedy infomax

این روش برای یادگیری بازنمایی در هر stage یک شبکه مطرح شده است، به این صورت که encoder را به چندین ماژول تقسیم کرده که هریک در انتها دارای تابع خطا Contrastive loss است. ورودی به همان صورت عادی روبه جلو منتشر شده ولی گرادیان ها به صورت عقبگرد بین ماژول ها منتشر نمی شوند، درعوض، هر ماژول به صورت حریصانه توسط یک تابع خطا محلی Contrastive lossآموزش پیدا می کند. آنچه باعث شده نویسندگان به دنبال چنین روشی بروند، الهام گرفتن از یادگیری نورون ها در مغز انسان است، که براساس اطلاعات محلی است و خبری از یک خطای سراسری نمی باشد. برای بازنمایش ویژگی های یادگرفته شده نیز از تابع خطا از نوع self supervised lossاستفاده شده است. به طور خلاصه Greedy InfoMax معماری موجود شبکه عصبی را به چندین ماژول که گرادیان های آنها از هم مستقل هستند تقسیم کرده و اطلاعات بین patchهایی که با هم در ارتباط هستند را افزایش می دهد.

Loco

این روش برای پوشاندن فاصله بین یادگیری رقابتی و یادگیری مبتنی بر پس انتشار عقب پیشنهاد شده است. در شکل 2، ما یک شبکه عصبی که با متد پس انتشار عقبگرد که هر مستطیل یک downsample stage است، نمایش داده ایم (شکل 2سمت چپ). در میانه شکل 2، متد GIM نمایش داده شده که تابع خطا InfoNCE در انتهای هر stageمحلی اضافه شده و گرادیان ها از stageهای بالایی به stage های پایینی جریان پیدا نمی کنند، چنین روندی وقتی که دیتاست با مقیاس بالا داریم، مانند ImageNet، عمکلرد را بسیار پایین می آورد. یکی از دلایلی که باعث کاهش عمکلرد شده می تواند به دلیل نبود هیچ گونه فیدبکی از لایه های بالایی و نداشتن عمق در decoder های لایه های پایینی و تلاش برای برای حل حریصانه مساله طبقه بندی می باشد. برای حل چنین مشکلاتی، روش LoCo پیشنهاد شده (شکل 2 سمت راست) که هر دو stage به عنوان یک unit گروه بندی شده و هر stage میانی به طور همزمان بین stage ها به اشتراک گذاشته می شود.

شکل 2 - مقایسه بین روش های پس انتشار عقبگرد، GIM و LoCo
شکل 2 - مقایسه بین روش های پس انتشار عقبگرد، GIM و LoCo



  • پوشاندن فاصله بین بلوک های منحصر گرادیانی

در GIM فیدبک از ویژگی های سطح بالا وجود ندارد. زمانی که یادگیری رقابتی با سختی روبه رو می شود، کیفیت بازنمایش از لایه های ابتدایی روی عملکرد نهایی لایه های بالایی اثرگزار است در حالیکه لایه های ابتدایی از اینکه چه بازنمایشی در لایه های انتهایی اتفاق می افتد، با خبر نیستند. در نتیجه نیاز است یک پلی بین stage های بالایی و پایینی وجود داشته باشد تا لایه های پایینی از یک فیدبک از لایه های بالایی برخورددار باشند، برای همین همان طور که در شکل 2 نشان داده شده، به جای اینکه encoder را به چندین بخش که هم پوشانی با هم ندارند، تقسیم کنیم، می توانیم بین stage های محلی یک همپوشانی ایجاد کنیم. لازم به یادآوری است که روند انتشار رو به جلو در شبکه تغییری نخواهد کرد.

  • دیکدر عمیق تر

نویسندگان مقاله در مورد اینکه respective field مربوط به stage های اولیه در encoder به دلیل کوچک بودن بیش از حد، آنقدر روی حل مساله به کمک روش رقابتی موثر نباشند، نگرانی های خود را مطرح کردند. در واقع تابع InfoNCE روی تمامی بلوک های یادگیری محلی اعمال می شود و برای decoder دشوار است که از بازنمایش های میانی گرفته شده از stage های اولیه برای طبقه بندی درست نمونه های positive استفاده کند که دلیل آن محدودیت مربوط به respective field انها می باشد. در نتایج نیز نویسندگان نشان دادند که با افزایش تعداد لایه های کانولوشنی به decoder برای افزایش گستره respective field امری ضروری برای یادگیری محلی است. هم چنین با داشتن stage هم پوشان بین unitهای محلی باعث می شود تا decoder به طور موثری عمیق تر شده بدون اینکه هزینه اضافی ای در مرحله انتشار رو به جلو داشته باشیم.

جمع بندی

روش پس انتشار عقبگرد متداول ترین الگوریتم برای آموزش شبکه های عصبی می باشد، با این حال وقتی که سایز مدل افزایش پیدا می کند، این روش از نظر محاسباتی، حافظه و سربار سنکرون سازی افزایش پیدا می کند. یکی از راه حل هایی که وقتی با چنین مشکلی برخورد می کنیم و استفاده از روش پس انتشار عقبگرد را بهینه تر می کند، موازی سازی داده (data parallelism) است که اجازه می دهد از سایز دسته بزگتر و آموزش روی چند ماشین استفاده کرد. با این حال، در forward pass هر لایه تنها می تواند ورودی خود را در یک دنباله ای اجرا کند که آن را forward locking گویند و استفاده از پس انتشار عقبگرد وقتی است که کل فرآیند forward pass به پایان رسیده باشد و نیز در طی روند بروزرسانی لایه های پایینی باید منتظر لایه های بالایی بمانند که باعث سربار حافظه شده و موازی سازی مناسبی به ما نمی دهد. چنین چالش هایی باعث شد که روش های مبتنی بر یادگیری محلی مطرح شوند. روش های مبتنی بر یادگیری محلی بروز رسانی را براساس اطلاعات محلی انجام می دهند و تعریف محلی بودن را براساس تعریف همسایگی که انجام می دهند که وابسته به لایه ها و یا گروه بندی لایه ها است، می باشد.

یکی از روش های جدیدی که در این زمینه مطرح شده LoCo نام دارد، یک الگوریتم یادگیری محلی برای یادگیری رقابتی بدون نظارت. LoCoنشان داد که با داشتن یک بازخورد ضمنی گرادیانی بین بلوک های ایجاد شده و عمیق تر کردن decoder روش های یادگیری رقابتی محلی را به خوبی روش های یادگیری رقابتی رساند. آزمایش هایی که برروی مجموعه داده عظیم ImageNet و سایر کارها صورت گرفته نشان می دهد که به خوبی بازنمایش های مناسبی را مدل یادگرفته است. هم چنین با بهتر تعریف کردن همسایگی و stage ها عملکرد را نسبت به روش های پیشین مبتنی بر یادگیری محلی افزایش داده است.

به صورت خلاصه وقتی فرآیند سرعت آموزش یک مورد مهم برای ما می باشد استفاده از روش های موازی سازی محلی بسیار مفید است. از نظر میزان حافظه مصرفی و سربار ایجاد شده روش های یادگیری محلی عملکرد بالایی دارند و به کمک آنها می توان از سایز دسته بزرگتری برای آموزش استفاده کرد. روش های یادگیری محلی در کاربرد های مختلفی از جمله بینایی ماشین، پردازش متن و معماری های شبکه های عصبی مختلفی مانند MLP, ResNets, Transformers قابل استفاده و به کار گیری هستند.

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