Melika Sadeghi
Melika Sadeghi
خواندن ۳ دقیقه·۲ سال پیش

Layer-Wise Contrastive Unsupervised Representation Learning

مدل های ماشین لرنینگی حال حاضر , عموما به حجم زیادی دیتای برچسب دار (لیبل خورده ) نیاز دارند اما برچسب گذاری داده ها کاری هزینه بر می باشد

در این مقاله به شیوه یادگیری بدون نظارت (unsupervised ) پرداخته می شود که contrastive unsupervised representation learning نام دارد

و از شیوه layer wise استفاده می کنیم بدین صورت که feature representation های تصاویر مشابه به گونه ای ترین شوند که patch های نزدیک در داخل یک تصویر یکسان , نزدیک تر از patch های رندوم باشند

این مقاله فرض می کند که این روش layer wise از روش یادگیری کلی (end to end ) سریع تر است به ویژه اگر فقط تعداد کمی از لایه ها را ترنسفرکنیم

برخی نتایج نشان می دهند که در معماری شبکه multi layer لایه های اندک ابتدایی فیچر های عمومی تری را یاد می گیرند که نسبت به بقیه transformable تر هستند

همینطور نشان داده شده که فیلتر های لایه اول می توانند به خوبی یادگیری کلی (end to end ) عمل کنند اما با سرعت ترین بالاتر

هدف از contrastive learning این است که شبکه مشابهات و تفاوت های بین تصاویر را بدون در نظر گرفتن لیبل ان ها یاد بگیرد و فاصله بین تصاویر مشابه را کمینه کند و فاصله بین تصاویر متفائت را بشینه نماید

لازم به ذكر است كه Contrastive learning با دیتای ویژوال از طریق مقایسه پچ ها صورت می گیرد , در کار های مربوط به ویدئو بدین صورت است که اولین و آخرین فریم یک جفت مثبت (positive pair)در نظر گرفته می شوند

و می توان ان ها را با یک patch تصادفی مقایسه کرد

پچ ها از طریق یک Siamese triplet network شامل هر دو لایه های convolutional و fully connected منتقل می شوند و loss بر اساس cosine distance فیچر های نهایی محاسبه می شود

با اعمال یک سری تبدیل در پچ مثل چرخش , تغییر رنگ , کراپ کردن , تغییر سایز پچ های دچار اختلال شده را مشابه در نظر گرفته که این ها تشکیل یک کلاس می دهند که می توان الگوریتم های طبقه بندی را برای ان ها اعمال کرد

Implementation Details

روش پیاده سازی بدین صوت است که پچ های مجاور یک تصویر انتخاب می شوند و پچ ها به فیلتر های کانولوشنال داده می شوند . سپس از یک فیلتر max pooling استفاده کرده . در نهایت خروجی را به یک triplet loss می دهند

در این مقاله متوجه شده اند که پچ های کوچک 7×7 ,با فیلتر 6×6 , مکس پولینگ 2×2 برای لایه اول بهتر از پچ های بزرگ (مثلا 10×10) عمل می کنند

همچنین استفاده از maxpooling برای لایه اول به این دلیل که ویژگی های کلی مانند لبه ها را تشخیص می دهد, ضروری می باشد

این روش بر دیتای cifar100 آموزش داده شده و فیلتر های لایه اول مانند روش supervised آموزش داده شده اند و فیلتر های لایه های اولیه مانند روش supervised آموزش داده شده اند

سپس شبکه به صورت transfer learning بر روی cifar 10 آزموده می شود

ابتدا وزن های قسمت ترنسفر شده فریز است سپس وزن ها روی , cifa10 فاین تیون شده

نتیجه قابل مشاهده این است که وزن های فاین تیون شده به نسبت شبکه آموزش داده شده از صفر عملکرد بهتری دارد . در حالت فریز مقایسه با شبکه ای صورت گرفت که به صورت supervised روی cifar100 آموزش دیده بود و نتیجه این بود که شبکه supervised عملکرد بهتری نسبت به unsupervised داشت و این به خاطر این هست که فیچر های مفید برای cifar100 همان فیچر های مفید برای cifar10 هستند

شکل1 : فیلتر های supervised
شکل1 : فیلتر های supervised



شکل 2 : فیلتر های unsupervised
شکل 2 : فیلتر های unsupervised



                  شکل3 :       مقایسه fine tune  شبکه روی cifa10   در حالات unsupervised , supervised , random initialize
شکل3 : مقایسه fine tune شبکه روی cifa10 در حالات unsupervised , supervised , random initialize


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