یادگیری انتقالی
جواب کوتاه
یادگیری انتقالی یعنی دانشی که یه مدل از یه کار یاد گرفته، برای یه کار مرتبط دوباره استفاده بشه. مثلا مدلی که با کلی عکس یاد گرفته ماشین بشناسه، برای شناختن کامیون. از صفر شروع نمیکنیم: مدل آماده رو برمیداریم، لایهی آخرش رو با یه لایهی تازه برای کار خودمون عوض میکنیم، و با دادهی کم خودمون یه کم آموزشش میدیم. به این آموزش اضافه میگن فاینتیون. معمولا لایههای اول رو قفل میکنن، چون چیزای سادهای مثل لبه رو میبینن که توی هر عکسی هست.
ایده
فرض کنید یه مدل داریم که با کلی عکس آموزش دیده و ماشین رو خوب میشناسه. حالا میخوایم کامیون بشناسه، ولی فقط چند تا عکس کامیون داریم:
لازم نیست از صفر شروع کنیم. مدلی که ماشین رو میشناسه، کلی چیز بلده که برای کامیون هم به درد میخوره. به این استفادهی دوباره از دانش یه کار، برای یه کار مرتبط، میگن یادگیری انتقالی.
اینجوری یادگیری خیلی کارآمدتر میشه؛ چون همهچی دوباره از اول یاد گرفته نمیشه، و با دادهی کم هم میشه به جای خوبی رسید.
سر رو عوض کن
روال رایجش سه قدمه:
- یه مدل آماده برمیداریم که روی دادهی بزرگ آموزش دیده. به این میگن مدل از پیش آموزشدیده.
- لایهی آخرش رو برمیداریم؛ چون اون لایه برای جوابهای کار قدیمی ساخته شده.
- یه لایهی تازه برای جوابهای کار خودمون میذاریم، که از صفر یاد میگیره، و مدل رو با دادهی خودمون یه کم دیگه آموزش میدیم.
به این آموزش اضافه روی مدل آماده میگن فاینتیون، یعنی تنظیم دقیق. معمولا هم نظارتشده هست: مثالهای ما جواب درست دارن.
کدوم لایهها قفل
موقع آموزش اضافه، لازم نیست همهی لایهها عوض بشن. لایهای که دست نمیخوره رو میگن فریز شده، یعنی قفل: موقع پسانتشار وزنهاش ثابت میمونه. ولی کدومها؟
توی شبکهای که عکس میبینه (کانولوشنی)، لایههای اول، نزدیک ورودی، چیزای ساده رو میبینن: لبههایی با جهتهای مختلف، یا لکههای رنگ. اینها توی هر عکسی هست؛ ماشین باشه یا کامیون. لایههای آخر چیزای کلیتری رو میبینن که به خود کار نزدیکترن.
برای همین رایجه که لایههای اول رو قفل کنن و فقط لایههای آخر رو آموزش بدن.
سه راه
حالا چقدر از مدل رو آموزش بدیم؟ سه راه رایج هست. توی طراحی، هر چی پررنگه یاد میگیره:
- فقط سر تازه: بدنه قفل، فقط لایهی تازه یاد میگیره. سبکترین راهه.
- همهی مدل: همهی وزنها از همون جایی که مدل آماده بود شروع میکنن و یه کم جابهجا میشن. اغلب نتیجهی بهتری میده، ولی محاسبهی بیشتری میخواد.
- آداپتور: چند تا تیکهی کوچیک وسط مدل میذارن، با پارامتر خیلی کمتر از خود مدل، و فقط همونها آموزش میبینن. برای مدلهای خیلی بزرگ به درد میخوره؛ یه نوع معروفش LoRA هست.
همیشه کمک میکنه؟
نه همیشه. از همون آزمایشهای قدیمی، هم انتقال مثبت دیده شده هم منفی:
- انتقال مثبت: مدل با دانش کار قبلی، توی کار تازه بهتر از آموزش از صفر شد.
- انتقال منفی: دانش قبلی به کار تازه نخورد و حتی بدترش کرد. یه پژوهش هم دیده که آموزش از پیش، گاهی دقت رو کم میکنه.
پس یه راه مطمئن اینه که هر دو رو با دادهی آزمون بسنجید: مدل با انتقال، و مدل از صفر.
چند نکته
- دادهی کم: دادهی کم یعنی خطر حفظ کردن؛ اینجا هم توقف زودهنگام کمک میکنه.
- دادهی متفاوت: فاینتیون ممکنه مدل رو در برابر دادهای که با دادهی آموزش فرق داره، شکنندهتر کنه. یه راه: وزنهای مدل تنظیمشده رو با وزنهای مدل اصلی میانگین بگیرن.
- کجاها: دستهبندی متن، شناختن رقم، عکس پزشکی، فیلتر هرزنامه، و کلی جای دیگه.
- مدلهای زبانی: مدلهای زبانی بزرگ رو هم برای کارهای خاص فاینتیون میکنن.
این آخرین درس ایستگاه «آموزش شبکهی عمیق» بود. ایستگاه بعد: خانوادههای شبکه، که از نقشهشون شروع میشه.
جمعبندی. آنچه از این درس با خودتان میبرید.
- از صفر نه؛ از یه مدل آماده.
- سر قدیمی برمیداریم، سر تازه میذاریم.
- لایههای اول قفل، لایههای آخر آموزش.
- فقط سر، همهی مدل، یا آداپتور.
- گاهی هم ضرر داره؛ مقایسه کنید.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.