این پیپر از اون دست مقالههاییه که با اینکه سال ۲۰۲۰ اومده (دوران اوج RoBERTa)، ولی منطقش دقیقاً همون چیزیه که امروز توی بحث Continued Pretraining برای LLMهای بزرگ مثل Llama 3 یا Mistral هم به درد میخوره. تیم AllenAI اینجا یه سوال اساسی رو حل کرده: وقتی یه مدل زبانی روی دیتای عمومی (Common Crawl و غیره) آموزش دیده، چقدر میتونه توی دامینهای تخصصی مثل پزشکی، حقوقی یا حتی نقدهای آمازون خوب عمل کنه؟
جواب کوتاهش اینه: مدلهای جنرال اونقدر که فکر میکنید «همه فن حریف» نیستن و Fine-tuning خالی اغلب راهحل بهینهای نیست.
📃 Don’t Stop Pretraining: Adapt Language Models to Domains and Tasks
https://arxiv.org/abs/2004.10964
نکات کلیدی و فنی که باید بدونید:
۱. استراتژی DAPT (Domain-Adaptive Pretraining)
بیشتر ما عادت داریم مدل Pretrained رو برداریم و مستقیم روی دیتای لیبلدار Fine-tune کنیم. این پیپر نشون میده اگر قبل از Fine-tuning، مدل رو روی دیتای بدون لیبل (Unlabeled) همون "دامین" ادامه آموزش بدید (Continued Pretraining)، پرفورمنس به شدت میره بالا.
نکته مهم اینجاست که هرچقدر دامین شما از دیتای اصلی مدل دورتر باشه (مثلاً BioMed نسبت به News)، تاثیر DAPT بیشتره.
۲. استراتژی TAPT (Task-Adaptive Pretraining) - این بخش طلاست
شاید فکر کنید برای ادامه Pretraining نیاز به ترابایتها دیتا دارید. این تحقیق نشون میده که انجام Pretraining روی همون دیتای ترینینگ تسک (بدون استفاده از لیبلها) تاثیر عجیب و غریبی داره.
حتی اگر دیتای شما کمه، TAPT باعث میشه مدل با توزیع آماری خاص اون دیتاست (Task Distribution) آداپته بشه. هزینه محاسباتی TAPT خیلی پایینه ولی تاثیرش بعضاً با DAPT رقابت میکنه.
۳. ترکیب برنده: DAPT + TAPT
بهترین خروجی زمانی به دست میاد که اول مدل رو روی دامین کلی (مثلاً کل مقالات CS) آموزش بدید و بعد روی دیتای خاص تسک (مثلاً فقط چکیدههای مربوط به AI). این "Curriculum Learning" ساده، SOTA رو جابجا میکنه.
۴. انتقال دانش (Cross-Task Transfer) همیشه مثبت نیست
یه نکتهی جالب و غیرشهودی توی پیپر اینه: اگر مدل رو روی تسک A آداپته کنید (TAPT)، ممکنه روی تسک B توی همون دامین پرفورمنسش افت کنه. این یعنی TAPT مدل رو به شدت روی توزیع خاص اون دیتاست Overfit میکنه (به معنای مثبتش برای همون تسک، و منفی برای جنرالیزیشن).
۵. انتخاب هوشمند دیتا (Augmented TAPT)
اگر دیتای ترینینگ شما کمه، میتونید از روشهای ساده مثل kNN یا VAMPIRE استفاده کنید تا از دیتای بزرگ دامین، نمونههای شبیه به دیتای تسک رو پیدا کنید و با اونها TAPT رو انجام بدید. این کار تقریباً جای خالی دیتای زیاد رو پر میکنه.
به نظر من:
امروز خیلیها درگیر RAG یا Prompt Engineering هستن، ولی اگر دارید روی یه محصول جدی توی یه دامین خاص (مثل حقوقی فارسی یا نسخه پیچی پزشکی) کار میکنید، Continued Pretraining روی متون تخصصی اون حوزه (DAPT) و بعدش روی دیتای خودتون (TAPT) یه الزام مهندسیه، نه یه فیچر لوکس.
خیلی وقتا مدلهای کوچیکتر که درست روی دامین آداپته شدن، مدلهای غولپیکر جنرال رو توی تسکهای تخصصی شکست میدن. فقط به بنچمارکهای عمومی GLUE و غیره اعتماد نکنید؛ توزیع دیتای واقعی شما با اونها فرق داره.
خلاصه دستورالعمل اجرایی:
۱- دیتای خام دامینتون رو جمع کنید -> DAPT
۲- دیتای خام تسکتون رو جدا کنید -> TAPT
۳- حالا برید سراغ Supervised Fine-tuning.
🛠 Join @LLMEngineers Community
Post #255
1.37K