خب بچهها، امروز میخوام راجع به یه روش باحال و خلاقانه برای آموزش مدلهای ویژن-لنگویج (یعنی همون مدلهایی که هم عکس رو میفهمن هم متن رو، مثل CLIP) حرف بزنیم. داستان از این قراره که وقتی مدلهای پیشرفتهای مثل CLIP رو میخوایم روی یه محیط یا دیتاست جدید (مثلاً تصاویری که قبلاً هیچوقت ندیده) استفاده کنیم، خیلی از روشها بدون استفاده از لیبل واقعی – یعنی بدون اینکه کسی به سیستم بگه توی هر عکس چی هست – اجرا میشن. به این میگن unsupervised adaptation یا همون «سازگاری بینظارت»؛ یعنی مدل باید خودش شرایط جدید رو هضم کنه و خودش یاد بگیره که چی به چیه!
حالا مشکلی که همیشه هست چیه؟ بیشتر روشها میان برچسبهای فیک به نمونهها میزنن که بهشون میگن pseudo-label (یعنی «برچسب ساختگی» که خود مدل بر اساس حدس و گمان خودش اختصاص میده). این برچسبها معمولاً از پیشبینیهای مدل بدون هیچ آموزش اضافی – مثلاً توی CLIP بهش میگن zero-shot prediction یعنی پیشبینی مدل برای دیتاستی که قبلاً ندیده – گرفته میشه. اما مشکل اینجاست که تو سناریوهایی که عکسها خیلی پیچیدهان یا دیتاست با دیتاست اصلی فرق داره (بهش میگن domain shift یا همون «جابجایی حوزه داده») این لیبلهای ساختگی اصلاً قابلاعتماد نیستن! یا به عبارتی مدل خیلی راحت اشتباه میکنه، مخصوصاً بدون آدمهایی که نظارت کنن.
تا حالا رویکردهای قدیمی برای فیلتر کردن این برچسبهای فیک، بیشتر بر اساس یه معیار عددی بودن؛ یعنی یه آستانه confidence ثابت براشون میذاشتن. مثلاً هر برچسبی که مدل با اطمینان ۸۰٪ یا بیشتر زده، قبول میکردن. اما خب این تو محیطهایی که کلاً لیبل نداریم و مدل هم توش گیجه، اصلاً جواب نمیده!
حالا این مقاله اومده و یه راهحل پیشرفتهتر رو پیشنهاد داده، اسم روششون هم کلیست: Prototype-Guided Pseudo-Labeling with Neighborhood-Aware Consistency! یعنی چیزی مثل «برچسبگذاری ساختگی با راهنمایی نمونههای وسط کلاس و توجه به همسایهها».
این روش که برای CLIP هم نتیجه داده، دوتا بخش اصلی داره:
۱. PICS: این بخش اولین لایه است و تقریباً روی بررسی ویژگیهای نمونهها تمرکز میکنه. PICS سرواژه Prototype-guided In-class Compactness and Separation هست؛ به زبان خودمونی یعنی میاد میسنجه ببینه نمونهها تو هر کلاس چقدر به هم شبیهان (بهش میگن compactness یعنی چسبندگی نمونههای یه کلاس) و چقدر از کلاسهای دیگه جدا هستن (separation یا تفکیکپذیری). اگر تو یه کلاس، دادهها به هم نزدیک باشن و با دیگر کلاسها قاطی نشن، مدل با احتمال بیشتری درست حدس زده! پس برچسبش قابلاعتمادتره.
۲. NALR: بخش دوم، Neighborhood-Aware Label Refinementه. این یعنی مدل میاد و همسایههای هر نمونه رو کشف میکنه، و با توجه به شباهت معناییشون (یعنی مثلاً اگر عکسها همه شبیه همن یا مفهومشون به هم نزدیکه)، برچسبهای ساختگی رو هوشمندانهتر بهروزرسانی میکنه. دیگه فقط به هر نمونه بهتنهایی نگاه نمیکنه، بلکه نگاه میکنه آیا بغلدستیاش هم همچین لیبلی دارن یا نه. این خیلی کمک میکنه که مدل کمتر دچار اشتباهات عجیب و غریب بشه! (Neighborhood یعنی همسایه، semantic similarity یعنی شباهت معنایی)
علاوه بر این دوتا ترفند، تو روش جدید یه چیز مهم دیگه هم هست: adaptive weighting. یعنی مدل به برچسبهایی که مطمئنتر هست با قدرت بیشتری تو آموزش اهمیت میده، و اونایی که احتمالاً اشتباهان رو خیلی جدی نمیگیره (یه جور فیلتر هوشمندانه وزندار!).
حالا نتیجه چی بوده؟ مدل رو روی ۱۱ دیتاست استاندارد (بهشون میگن benchmark datasets یعنی دیتاستهایی که همه روشون تست میزنن برای مقایسه) تست کردن و دیدن که نه تنها از روشهای قدیمی بهتر عمل میکنه (state-of-the-art performance میده یعنی بهترین نتیجهها تا امروز)، بلکه سرعت و کارایی سیستم هم حفظ میشه و سختافزار زیادی هم لازم نداشته.
خلاصه اگه بخوای برای خودت یه مدل بسازی یا مدل معروفی مثل CLIP رو ببری رو دیتاست جدید اما بدون لیبل واقعی، این روش میتونه کلی بهت کمک کنه. هم یادگیری مدل دقیقتر میشه، هم کلی وقت و دیتا جمع کردن صرفهجویی میشه، هم نیازت به داده لیبلخورده کمتر میشه. خلاصه که بچهها، دنیای مدلهای هوش مصنوعی داره روز به روز با این ترفندها هوشمندتر و قابلاعتمادتر میشه. به نظرم خیلی باحاله، شما چی فکر میکنین؟
منبع: +