فاینتیونینگ (Fine-tuning) چیست؟

فاینتیونینگ (Fine-tuning) چیست؟ در دنیای یادگیری ماشین، فاینتیونینگ فرآیند بهینهسازی یک مدل از پیش آموزشدیده برای وظایف خاص است. این تکنیک، زیرمجموعهای از انتقال یادگیری (Transfer Learning)، به شما کمک میکند تا با استفاده از دانش موجود یک مدل پایه، در زمان و هزینه آموزش صرفهجویی کنید.
فاینتیون کردن یا fine-tune که در فارسی به تنظیم-دقیق هم ترجمه میگردد، در لغت اینگونه ترجمه میگردد:
to make very small changes to something in order to make it work as well as possible
به فارسی:
“ایجاد تغییرات بسیار کوچک در چیزی به منظور بهبود عملکرد آن تا حد امکان”
که در کاربرد دیپ لرنینگ، مدل از قبل آموزش دیده شده تغییرات کوچک پیدا میکند تا در وظیفه جدید خوب عمل کند. از تنظیم لحن یک مدل زبانی بزرگ (LLM) تا افزودن دانش تخصصی، فاینتیونینگ نقشی کلیدی در سفارشیسازی و کاربردیسازی مدلهای هوش مصنوعی ایفا میکند. در این مقاله به بررسی دقیق روشهای فاینتیونینگ، از جمله PEFT و RLHF، و کاربردهای گسترده آن میپردازیم.
فهرست مطالب
- فاینتیونینگ (Fine-tuning) چیست؟
- فاینتیونینگ در مقابل آموزش (Training)
- فاینتیونینگ
- فاینتیونینگ چگونه کار میکند؟
- فاینتیونینگ کامل (Full Fine-tuning)
- فاینتیونینگ کارآمد پارامتری (Parameter Efficient Fine-tuning یا PEFT)
- فاینتیونینگ مدلهای زبانی بزرگ
- موارد استفاده رایج فاینتیونینگ
فاینتیونینگ (Fine-tuning) چیست؟
فاینتیونینگ در یادگیری ماشین، فرآیند تطبیق یک مدل از پیش آموزشدیده برای وظایف یا کاربردهای خاص است. این روش به یک تکنیک اساسی در یادگیری عمیق تبدیل شده است، بهویژه در فرآیند آموزش مدلهای پایه (foundation models) که برای هوش مصنوعی مولد استفاده میشوند.
فاینتیونینگ را میتوان زیرمجموعهای از تکنیک گستردهتر انتقال یادگیری (transfer learning) دانست: روشی که از دانش کسبشده توسط یک مدل موجود به عنوان نقطه شروع برای یادگیری وظایف جدید استفاده میکند.
منطق پشت فاینتیونینگ این است که اساساً، صیقل دادن قابلیتهای یک مدل پایه از پیش آموزشدیده که قبلاً یادگیریهای گستردهای مرتبط با وظیفه مورد نظر کسب کرده، آسانتر و کمهزینهتر از آموزش یک مدل جدید از صفر برای آن هدف خاص است. این موضوع بهویژه برای مدلهای یادگیری عمیق با میلیونها یا حتی میلیاردها پارامتر صادق است، مانند مدلهای زبانی بزرگ (LLMها) که در حوزه پردازش زبان طبیعی (NLP) به برجستگی رسیدهاند یا شبکههای عصبی کانولوشنی (CNNs) و ترنسفورمرهای بینایی (ViTs) که برای وظایف بینایی کامپیوتر مانند طبقهبندی تصویر، تشخیص اشیاء یا قطعهبندی تصویر استفاده میشوند.
با بهرهگیری از آموزش قبلی مدل از طریق انتقال یادگیری، فاینتیونینگ میتواند میزان قدرت محاسباتی گرانقیمت و دادههای برچسبخورده مورد نیاز برای دستیابی به مدلهای بزرگ متناسب با کاربردهای تخصصی و نیازهای تجاری را کاهش دهد. به عنوان مثال، از فاینتیونینگ میتوان برای تنظیم ساده لحن مکالمه یک LLM از پیش آموزشدیده یا سبک تصویرسازی یک مدل تولید تصویر از پیش آموزشدیده استفاده کرد؛ همچنین میتوان از آن برای تکمیل یادگیریهای مدل از مجموعه داده آموزشی اصلی با دادههای اختصاصی یا دانش تخصصی حوزهای خاص استفاده کرد.
بنابراین فاینتیونینگ نقش مهمی در کاربرد واقعی مدلهای یادگیری ماشین ایفا میکند.
فاینتیونینگ در مقابل آموزش (Training)
اگرچه فاینتیونینگ ظاهراً تکنیکی است که در آموزش مدل استفاده میشود، اما فرآیندی متمایز از آنچه معمولاً train نامیده میشود، است. برای رفع ابهام، دانشمندان داده معمولاً در این زمینه به آموزش اولیه، پیشآموزش (pre-training) میگویند.
پیشآموزش (Pre-Training)
در آغاز آموزش (یا در این زمینه، پیشآموزش)، مدل هنوز چیزی یاد نگرفته است. آموزش با مقداردهی اولیه تصادفی پارامترهای مدل آغاز میشود—وزنها و بایاسهای متفاوتی که به عملیاتهای ریاضی در هر گره شبکه عصبی اعمال میشوند.
آموزش به صورت تکراری در دو مرحله انجام میشود: در گذر رو به جلو (forward pass)، مدل پیشبینیهایی برای یک دسته از نمونههای ورودی از مجموعه داده آموزشی انجام میدهد، و یک تابع خطا (loss function) تفاوت (یا خطا) بین پیشبینیهای مدل برای هر ورودی و پاسخهای “صحیح” (یا ground truth) را اندازهگیری میکند؛ در طول backpropagation، یک الگوریتم بهینهسازی—معمولاً گرادیان نزولی (gradient descent)—برای تنظیم وزنهای مدل در سراسر شبکه به منظور کاهش خطا استفاده میشود. این تنظیمات وزنهای مدل نحوه “یادگیری” مدل است. این فرآیند در چندین دوره (epoch) آموزشی تکرار میشود تا زمانی که مدل به اندازه کافی آموزش دیده تلقی شود.
یادگیری نظارتشده (supervised learning) متداول، که معمولاً برای پیشآموزش مدلها برای وظایف بینایی کامپیوتر مانند طبقهبندی تصویر، تشخیص اشیاء یا قطعهبندی تصویر استفاده میشود، از دادههای برچسبدار استفاده میکند: برچسبها (یا حاشیهنویسیها) هم محدوده پاسخهای ممکن و هم خروجی صحیح برای هر نمونه را فراهم میکنند.
مدلهای زبانی بزرگ (LLMs) معمولاً از طریق یادگیری خودنظارتی (self-supervised learning یا SSL) پیشآموزش میبینند، که در آن مدلها از طریق وظایف پیشمتنی (pretext tasks) یاد میگیرند که برای استخراج حقیقت زمینه از ساختار ذاتی دادههای بدون برچسب طراحی شدهاند. این وظایف پیشمتنی دانشی را منتقل میکنند که برای وظایف پاییندستی (downstream tasks) مفید است. آنها معمولاً یکی از دو رویکرد زیر را دنبال میکنند:
۱. خودپیشبینی (Self-prediction): پنهان کردن بخشی از ورودی اصلی و وظیفه بازسازی آن توسط مدل. این روش غالب آموزش برای LLMها است.
۲. یادگیری متضاد (Contrastive learning): آموزش مدلها برای یادگیری embeddingهای مشابه برای ورودیهای مرتبط و embeddingهای متفاوت برای ورودیهای غیرمرتبط. این روش به طور برجسته در مدلهای بینایی کامپیوتر طراحی شده برای یادگیری few-shot یا zero-shot، مانند CLIP (Contrasting Language-Image Pretraining) استفاده میشود.
بنابراین SSL امکان استفاده از مجموعه دادههای بسیار بزرگ را در آموزش بدون بار لیبل زنی میلیونها یا میلیاردها داده را فراهم میکند. این کار مقدار زیادی از کار را صرفهجویی میکند، اما با این حال به منابع محاسباتی عظیمی نیز نیاز دارد.
فاینتیونینگ
در مقابل، فاینتیونینگ شامل تکنیکهایی برای آموزش بیشتر مدلی است که وزنهای آن قبلاً از طریق آموزش پیشین بهروزرسانی شدهاند. با استفاده از دانش قبلی مدل پایه به عنوان نقطه شروع، فاینتیونینگ مدل را با آموزش روی یک مجموعه داده کوچکتر و مختص وظیفه خاص، سفارشی میکند.
اگرچه از نظر تئوری میتوان از آن مجموعه داده مختص وظیفه برای آموزش اولیه استفاده کرد، اما آموزش یک مدل بزرگ از صفر روی یک مجموعه داده کوچک خطر بیشبرازش (overfitting) را به همراه دارد: ممکن است مدل یاد بگیرد که روی نمونههای آموزشی عملکرد خوبی داشته باشد، اما در تعمیم به دادههای جدید ضعیف عمل کند. این امر مدل را برای وظیفه مورد نظر نامناسب میکند و هدف آموزش مدل را شکست میدهد.
بنابراین فاینتیونینگ بهترین حالت از هر دو دنیا را فراهم میکند: بهرهگیری از دانش گسترده و ثبات به دست آمده از پیشآموزش روی مجموعه عظیمی از دادهها و صیقل دادن درک مدل از مفاهیم جزئیتر و خاصتر. با توجه به توانایی روزافزون مدلهای پایه متنباز (open source)، اغلب میتوان از مزایای آنها بدون هیچیک از بارهای مالی، محاسباتی یا لجستیکی پیشآموزش بهرهمند شد.
فاینتیونینگ چگونه کار میکند؟
فاینتیونینگ از وزنهای یک مدل از پیش آموزشدیده به عنوان نقطه شروع برای آموزش بیشتر روی مجموعه داده کوچکتری از نمونههایی استفاده میکند که مستقیمتر منعکسکننده وظایف و کاربردهای خاصی هستند که مدل برای آنها استفاده خواهد شد. این فرآیند معمولاً شامل یادگیری نظارتشده است، اما میتواند شامل یادگیری تقویتی (reinforcement learning)، یادگیری خودنظارتی یا یادگیری نیمهنظارتی (semi-supervised learning) نیز باشد.
مجموعه دادههایی که برای فاینتیونینگ استفاده میشوند، دانش حوزه خاص، سبک، وظایف یا موارد استفادهای را منتقل میکنند که مدل از پیش آموزشدیده برای آنها فاینتیون میشود. برای مثال:
- یک LLM که برای زبان عمومی پیشآموزش دیده، ممکن است برای کدنویسی با مجموعه داده جدیدی که حاوی درخواستهای برنامهنویسی مرتبط و قطعات کد متناظر برای هر کدام است، فاینتیون شود.
- یک مدل طبقهبندی تصویر که برای شناسایی گونههای خاصی از پرندگان استفاده میشود، میتواند گونههای جدید را از طریق نمونههای آموزشی برچسبدار اضافی یاد بگیرد.
- یک LLM میتواند از طریق یادگیری خودنظارتی روی متنهای نمونه که نماینده آن سبک هستند، یاد بگیرد که یک سبک نوشتاری خاص را تقلید کند.
یادگیری نیمهنظارتی، زیرمجموعهای از یادگیری ماشین که هم دادههای برچسبدار و هم بدون برچسب را شامل میشود، هنگامی مفید است که سناریو نیازمند یادگیری نظارتشده است اما نمونههای برچسبدار مناسب کمیاب هستند. فاینتیونینگ نیمهنظارتی نتایج امیدوارکنندهای برای وظایف بینایی کامپیوتر و NLP به همراه داشته است و به کاهش بار تهیه مقدار کافی داده برچسبدار کمک میکند.
فاینتیونینگ میتواند برای بهروزرسانی وزنهای کل شبکه استفاده شود، اما به دلایل عملی این همیشه مورد استفاده قرار نمیگیرد. انواع مختلفی از روشهای فاینتیونینگ جایگزین وجود دارند که اغلب تحت عنوان کلی فاینتیونینگ کارآمد پارامتری (parameter-efficient fine-tuning یا PEFT) شناخته میشوند، که فقط زیرمجموعه خاصی از پارامترهای مدل را بهروزرسانی میکنند. روشهای PEFT، که در ادامه این بخش بررسی میشوند، میتوانند نیازهای محاسباتی را کاهش دهند و فراموشی فاجعهبار (catastrophic forgetting)—پدیدهای که در آن فاینتیونینگ باعث از دست رفتن یا بیثباتی دانش اصلی مدل میشود—را کاهش دهند، اغلب بدون مصالحه معنادار در عملکرد.
با توجه به تنوع گسترده تکنیکهای فاینتیونینگ و متغیرهای متعدد ذاتی هر کدام، دستیابی به عملکرد ایدهآل مدل اغلب نیازمند تکرارهای متعدد استراتژیها و تنظیمات آموزشی، تنظیم مجموعه دادهها و هایپرپارامترها (hyperparameterها) مانند اندازه دسته (batch size)، نرخ یادگیری (learning rate) و regularization است تا نتیجه رضایتبخشی—بر اساس معیارهایی که برای مورد استفاده شما مرتبطترین هستند—به دست آید.
فاینتیونینگ کامل (Full Fine-tuning)
مستقیمترین روش فاینتیونینگ از نظر مفهومی، بهروزرسانی کل شبکه عصبی است. این متدولوژی ساده اساساً شبیه فرآیند پیشآموزش است: تنها تفاوتهای اساسی بین فرآیندهای فاینتیونینگ کامل و پیشآموزش، مجموعه داده مورد استفاده و وضعیت اولیه پارامترهای مدل است.
برای جلوگیری از تغییرات بیثباتکننده ناشی از فرآیند فاینتیونینگ، برخی هایپرپارامترها—ویژگیهای مدل که بر فرآیند یادگیری تأثیر میگذارند اما خودشان پارامترهای قابل یادگیری نیستند—ممکن است نسبت به مشخصات آنها در طول پیشآموزش تنظیم شوند: به عنوان مثال، نرخ یادگیری کوچکتر (که میزان هر بهروزرسانی وزنهای مدل را کاهش میدهد) احتمال کمتری دارد که به فراموشی فاجعهبار منجر شود.
فاینتیونینگ کارآمد پارامتری (Parameter Efficient Fine-tuning یا PEFT)
فاینتیونینگ کامل، مانند فرآیند پیشآموزشی که به آن شباهت دارد، از نظر محاسباتی بسیار پرهزینه است. برای مدلهای یادگیری عمیق مدرن با صدها میلیون یا حتی میلیاردها پارامتر، اغلب به طور ممنوعکنندهای پرهزینه و غیرعملی است.
فاینتیونینگ کارآمد پارامتری (PEFT) شامل مجموعهای از روشها برای کاهش تعداد پارامترهای قابل آموزش است که نیاز به بهروزرسانی دارند تا یک مدل بزرگ از پیش آموزشدیده را به طور مؤثر با کاربردهای پاییندستی خاص سازگار کنند. با این کار، PEFT به طور قابل توجهی منابع محاسباتی و حافظه ذخیرهسازی مورد نیاز برای ایجاد یک مدل فاینتیون شده مؤثر را کاهش میدهد. روشهای PEFT اغلب نشان دادهاند که از روشهای فاینتیونینگ کامل پایدارتر هستند، به ویژه برای کاربردهای NLP.
فاینتیونینگ جزئی (Partial Fine-tuning)
همچنین به عنوان فاینتیونینگ انتخابی (selective fine-tuning) شناخته میشود، روشهای فاینتیونینگ جزئی هدف دارند با بهروزرسانی تنها زیرمجموعه انتخابی از پارامترهای از پیش آموزشدیده که برای عملکرد مدل در وظایف پاییندستی مرتبط بسیار مهم هستند، نیازهای محاسباتی را کاهش دهند. پارامترهای باقیمانده “منجمد” (frozen) میشوند، که تضمین میکند تغییر نخواهند کرد.
بدیهیترین رویکرد فاینتیونینگ جزئی، بهروزرسانی فقط لایههای بیرونی شبکه عصبی است. در بیشتر معماریهای مدل، لایههای درونی مدل (نزدیکترین به لایه ورودی) تنها ویژگیهای گسترده و عمومی را تشخیص میدهند: به عنوان مثال، در یک CNN که برای طبقهبندی تصویر استفاده میشود، لایههای اولیه معمولاً لبهها و بافتها را تشخیص میدهند؛ هر لایه بعدی ویژگیهای ظریفتری را تشخیص میدهد تا در نهایت طبقهبندی نهایی در بیرونیترین لایه پیشبینی شود. به طور کلی، هرچه وظیفه جدید (که مدل برای آن فاینتیون میشود) به وظیفه اصلی شبیهتر باشد، وزنهای از پیش آموزشدیده لایههای درونی برای این وظیفه جدید مرتبط مفیدتر خواهند بود—و در نتیجه لایههای کمتری نیاز به بهروزرسانی دارند.
سایر روشهای فاینتیونینگ جزئی شامل بهروزرسانی تنها عبارات بایاس سراسری لایه مدل (به جای وزنهای مختص گره) و روشهای فاینتیونینگ “پراکنده” (sparse) که تنها زیرمجموعه انتخابی از وزنهای کلی در سراسر مدل را بهروزرسانی میکنند.
فاینتیونینگ افزودنی (Additive Fine-tuning)
به جای فاینتیون کردن پارامترهای موجود یک مدل از پیش آموزشدیده، روشهای افزودنی پارامترها یا لایههای اضافی به مدل اضافه میکنند، وزنهای از پیش آموزشدیده موجود را منجمد میکنند و فقط آن مؤلفههای جدید را آموزش میدهند. این رویکرد با اطمینان از اینکه وزنهای اصلی از پیش آموزشدیده بدون تغییر باقی میمانند، به حفظ ثبات مدل کمک میکند.
اگرچه این میتواند زمان آموزش را افزایش دهد، اما نیازهای حافظه را به طور قابل توجهی کاهش میدهد زیرا گرادیانها و حالتهای بهینهسازی بسیار کمتری برای ذخیره وجود دارد: طبق گفته Lialin و همکاران، آموزش تمام پارامترهای یک مدل به ۱۲ تا ۲۰ برابر حافظه GPU بیشتر نسبت به وزنهای مدل به تنهایی نیاز دارد. صرفهجویی بیشتر در حافظه میتواند از طریق کوانتیزاسیون (quantization) وزنهای مدل منجمدشده به دست آید: کاهش دقت استفادهشده برای نمایش پارامترهای مدل، که از نظر مفهومی شبیه به کاهش بیتریت یک فایل صوتی است.
یکی از زیرشاخههای روشهای افزودنی، prompt tuning است. از نظر مفهومی، این شبیه به prompt engineering است که به سفارشیسازی “پرامپتهای سخت” (hard prompts)—یعنی پرامپتهایی که توسط انسان به زبان طبیعی نوشته شدهاند—برای هدایت مدل به سمت خروجی مطلوب اشاره دارد، مانند مشخص کردن لحن خاص یا ارائه مثالهایی که یادگیری few-shot را تسهیل میکنند. Prompt tuning، پرامپتهای نرم (soft prompts) نوشتهشده توسط هوش مصنوعی را معرفی میکند: embeddingهای برداری قابل یادگیری که به پرامپت سخت کاربر متصل میشوند. به جای بازآموزی مدل، prompt tuning شامل منجمد کردن وزنهای مدل و در عوض آموزش خود پرامپت نرم است. Prompt tuning سریع و کارآمد است و به مدلها اجازه میدهد راحتتر بین وظایف خاص جابجا شوند، اگرچه با مصالحه در تفسیرپذیری همراه است.
آداپترها (Adapters)
زیرمجموعه دیگری از فاینتیونینگ افزودنی، ماژولهای آداپتر را تزریق میکند—لایههای جدید مختص وظیفه که به شبکه عصبی اضافه میشوند—و این ماژولهای آداپتر را به جای فاینتیون کردن هر یک از وزنهای مدل از پیش آموزشدیده (که منجمد هستند) آموزش میدهد. طبق مقاله اصلی که نتایج را روی مدل زبانی ماسکشده BERT اندازهگیری کرده است، آداپترها به عملکردی معادل با فاینتیونینگ کامل دست یافتند در حالی که تنها ۳.۶٪ از تعداد پارامترها را آموزش میدادند.
بازپارامتریسازی (Reparameterization)
روشهای مبتنی بر بازپارامتریسازی مانند Low Rank Adaptation (LoRA) از تبدیل رتبه پایین (low-rank transformation) ماتریسهای با ابعاد بالا (مانند ماتریس عظیم وزنهای مدل از پیش آموزشدیده در یک مدل ترنسفورمر) استفاده میکنند. این نمایشهای رتبه پایین، اطلاعات بیاهمیت با ابعاد بالاتر را حذف میکنند تا ساختار زیربنایی با ابعاد پایین وزنهای مدل را ثبت کنند، که تعداد پارامترهای قابل آموزش را به شدت کاهش میدهد. این امر سرعت فاینتیونینگ را به طور چشمگیری افزایش میدهد و حافظه مورد نیاز برای ذخیره بهروزرسانیهای مدل را کاهش میدهد.
LoRA از بهینهسازی مستقیم ماتریس وزنهای مدل صرفنظر میکند و در عوض یک ماتریس بهروزرسانیهای وزن مدل (یا وزنهای دلتا) را بهینه میکند که در مدل قرار میگیرد. آن ماتریس بهروزرسانیهای وزن، به نوبه خود، به عنوان دو ماتریس کوچکتر (یعنی با رتبه پایینتر) نمایش داده میشود، که تعداد پارامترهای نیازمند بهروزرسانی را به شدت کاهش میدهد—که به نوبه خود، سرعت فاینتیونینگ را به طور چشمگیری افزایش میدهد و حافظه مورد نیاز برای ذخیره بهروزرسانیهای مدل را کاهش میدهد. خود وزنهای مدل از پیش آموزشدیده منجمد باقی میمانند.
مزیت اضافی LoRA این است که، از آنجا که آنچه بهینهسازی و ذخیره میشود وزنهای جدید مدل نیستند بلکه تفاوت (یا دلتا) بین وزنهای اصلی از پیش آموزشدیده و وزنهای فاینتیون شده است، LoRAهای مختص وظایف مختلف میتوانند در صورت نیاز “جایگزین” شوند تا مدل از پیش آموزشدیده—که پارامترهای واقعی آن بدون تغییر باقی میمانند—را با یک مورد استفاده خاص سازگار کنند.
انواع مختلفی از مشتقات LoRA توسعه یافتهاند، مانند QLoRA، که پیچیدگی محاسباتی را با کوانتیزه کردن مدل ترنسفورمر قبل از LoRA بیشتر کاهش میدهد.
فاینتیونینگ مدلهای زبانی بزرگ
فاینتیونینگ بخش ضروری چرخه توسعه LLM است که امکان میدهد قابلیتهای زبانی خام مدلهای پایه برای انواع موارد استفاده سازگار شوند، از چتباتها گرفته تا کدنویسی و سایر حوزههای خلاقانه و فنی.
LLMها با استفاده از یادگیری خودنظارتی روی مجموعه عظیمی از دادههای بدون برچسب پیشآموزش میبینند. مدلهای زبانی خودبازگشتی (autoregressive)، مانند GPT از OpenAI، Gemini از Google یا مدلهای Llama از Meta، آموزش میبینند تا به سادگی کلمه(های) بعدی را در یک توالی پیشبینی کنند تا زمانی که کامل شود. در پیشآموزش، به مدلها ابتدای یک جمله نمونه از دادههای آموزشی داده میشود و مکرراً وظیفه پیشبینی کلمه بعدی در توالی تا پایان نمونه به آنها محول میشود. برای هر پیشبینی، کلمه بعدی واقعی جمله نمونه اصلی به عنوان ground truth عمل میکند.
اگرچه این پیشآموزش قابلیتهای قدرتمند تولید متن را به همراه دارد، اما هیچ درک واقعی از قصد کاربر ایجاد نمیکند. در سطح اساسی، LLMهای خودبازگشتی در واقع به یک پرامپت پاسخ نمیدهند؛ آنها فقط متن را به آن اضافه میکنند. بدون راهنمایی بسیار خاص در قالب prompt engineering، یک LLM از پیش آموزشدیده (که فاینتیون نشده است) به سادگی به شیوهای از نظر دستوری منسجم، پیشبینی میکند که کلمه(های) بعدی در یک توالی معین که توسط پرامپت آغاز شده است، چه میتواند باشد. اگر با “به من یاد بده چگونه یک رزومه بسازم” پرامپت شود، یک LLM ممکن است با “با استفاده از Microsoft Word” پاسخ دهد. این یک روش معتبر برای تکمیل جمله است، اما با هدف کاربر همسو نیست. مدل ممکن است قبلاً دانش قابل توجهی در مورد نوشتن رزومه از محتوای مرتبط موجود در مجموعه پیشآموزش خود کسب کرده باشد، اما بدون فاینتیونینگ ممکن است به این دانش دسترسی پیدا نکند.
بنابراین فرآیند فاینتیونینگ نقش مهمی نه تنها در سازگار کردن مدلهای پایه با لحن و موارد استفاده منحصر به فرد شما یا کسب و کارتان دارد، بلکه در کل آنها را برای استفاده عملی مناسب میسازد.
آموزش دستورالعمل (Instruction tuning)
آموزش دستورالعمل زیرمجموعهای از فاینتیونینگ نظارتشده (SFT) است که اغلب برای فاینتیون کردن LLMها برای استفاده در چتبات استفاده میشود، که LLM را آماده میکند تا پاسخهایی تولید کند که مستقیمتر به نیازهای کاربر پاسخ دهد: به عبارت دیگر، برای پیروی بهتر از دستورالعملها. نمونههای برچسبدار، با فرمت (پرامپت، پاسخ)—که در آن نمونههای پرامپت شامل وظایف دستورالعملمحور هستند، مانند “جمله زیر را از انگلیسی به اسپانیایی ترجمه کن” یا “جمله زیر را به عنوان مثبت یا منفی طبقهبندی کن”—نشان میدهند که چگونه به پرامپتهایی که نماینده انواع موارد استفاده هستند، مانند پاسخ به سؤال، خلاصهسازی یا ترجمه، پاسخ دهند. با بهروزرسانی وزنهای مدل برای به حداقل رساندن خطا بین خروجیهای مدل و نمونههای برچسبدار، LLM یاد میگیرد که متن را به پرامپتها به روشی مفیدتر اضافه کند و به طور کلی بهتر از دستورالعملها پیروی کند.
در ادامه مثال پرامپت قبلی “به من یاد بده چگونه یک رزومه بنویسم”، مجموعه داده مورد استفاده برای SFT میتواند تعدادی جفت (پرامپت، پاسخ) را شامل شود که نشان میدهد روش مطلوب پاسخ به پرامپتهایی که با “به من یاد بده چگونه” شروع میشوند، ارائه پیشنهادات گام به گام است، نه صرفاً تکمیل جمله.
یادگیری تقویتی از بازخورد انسانی (RLHF)
در حالی که آموزش دستورالعمل میتواند به مدل رفتارهای ملموس و مستقیم مانند نحوه ساختاردهی پاسخهایش را آموزش دهد، آموزش ویژگیهای انتزاعی انسانی مانند مفید بودن، دقت واقعی، طنز یا همدلی از طریق نمونههای برچسبدار میتواند بسیار زحمتبر و دشوار باشد.
برای همسوسازی بهتر خروجیهای مدل با رفتار ایدهآل انسانی، بهویژه برای موارد استفاده مکالمهای مانند چتباتها، SFT ممکن است با یادگیری تقویتی تکمیل شود—به طور خاصتر، یادگیری تقویتی از بازخورد انسانی (RLHF). RLHF، که همچنین یادگیری تقویتی از ترجیحات انسانی نامیده میشود، به فاینتیون کردن مدلها برای کیفیتهایی کمک میکند که پیچیده، بدتعریف شده یا از طریق نمونههای گسسته به سختی قابل مشخص کردن هستند.
کمدی را در نظر بگیرید: آموزش یک مدل برای “بامزه بودن” با SFT نه تنها نیازمند هزینه و زحمت نوشتن (یا به دست آوردن) جوکهای کافی برای تشکیل یک الگوی قابل یادگیری است، بلکه همچنین نیازمند این است که آنچه یک دانشمند داده خاص فکر میکند بامزه است، با آنچه پایگاه کاربران بامزه مییابند، همسو باشد. RLHF اساساً یک جایگزین ریاضی جمعسپاری شده ارائه میدهد: به LLM پرامپت میدهد تا جوک تولید کند و آزمایشگران انسانی کیفیت آنها را رتبهبندی میکنند. از این رتبهبندیها میتوان برای آموزش یک مدل پاداش (reward model) استفاده کرد تا انواع جوکهایی را پیشبینی کند که بازخورد مثبت دریافت خواهند کرد، و به نوبه خود از آن مدل پاداش میتوان برای آموزش LLM از طریق یادگیری تقویتی استفاده کرد.
به طور عملیتر، RLHF هدف دارد چالشهای وجودی LLMها را برطرف کند، مانند توهمات (hallucinations)، انعکاس تعصبات اجتماعی ذاتی در دادههای آموزشی یا برخورد با ورودیهای بیادبانه یا خصمانه کاربران.
موارد استفاده رایج فاینتیونینگ
فاینتیونینگ میتواند برای طیف گستردهای از اهداف استفاده شود، از سفارشیسازی گرفته تا تکمیل دانش اصلی مدل و گسترش مدل به وظایف و حوزههای کاملاً جدید.
۱. سفارشیسازی سبک: مدلها میتوانند برای انعکاس لحن مطلوب یک برند فاینتیون شوند، از پیادهسازی الگوهای رفتاری پیچیده و سبکهای تصویرسازی منحصربهفرد گرفته تا اصلاحات ساده مانند شروع هر تبادل با یک سلام مؤدبانه.
۲. تخصصیسازی: تواناییهای زبانی عمومی LLMها میتوانند برای وظایف خاص صیقل داده شوند. به عنوان مثال، مدلهای Llama 2 متا به عنوان مدلهای پایه، نسخههای تنظیمشده برای چتبات (Llama-2-chat) و نسخههای تنظیمشده برای کد (Code Llama) منتشر شدند.
۳. افزودن دانش حوزهای خاص: اگرچه LLMها روی مجموعه عظیمی از دادهها پیشآموزش میبینند، اما همهچیزدان نیستند. استفاده از نمونههای آموزشی اضافی برای تکمیل دانش مدل پایه بهویژه در محیطهای حقوقی، مالی یا پزشکی مرتبط است، که معمولاً شامل استفاده از واژگان تخصصی و پیچیدهای است که ممکن است در پیشآموزش به اندازه کافی نمایندگی نشده باشند.
۴. یادگیری few-shot: مدلهایی که قبلاً دانش عمومی قوی دارند، اغلب میتوانند با استفاده از نمونههای نمایشی نسبتاً کمی برای متون طبقهبندی خاصتر فاینتیون شوند.
۵. پرداختن به موارد حاشیهای: ممکن است بخواهید مدل شما با شرایط خاصی که احتمالاً در پیشآموزش پوشش داده نشدهاند، به روشی خاص برخورد کند. فاینتیون کردن یک مدل روی نمونههای برچسبدار چنین موقعیتهایی راهی مؤثر برای اطمینان از برخورد مناسب با آنهاست.
۶. ادغام دادههای اختصاصی: شرکت شما ممکن است خط تولید داده اختصاصی خود را داشته باشد که برای مورد استفاده خاص شما بسیار مرتبط است. فاینتیونینگ اجازه میدهد این دانش بدون نیاز به آموزش مدل از صفر، در مدل گنجانده شود.
اگر به پیاده سازی علاقه دارید، پست فاین تیون کردن در هاگینگ فیس را هم مشاهده فرمایید.
دیدگاهتان را بنویسید