۲.۱ معرفی کوتاه LLMها
در این بخش، ایدههای پایهٔ LLMها را بهاندازهای معرفی میکنیم که برای ادامهٔ این فصل و فصلهای بعد لازم است. در متن کتاب، واژههای «word» و «token» گاهی بهجای یکدیگر استفاده میشوند. هر دو به واحدهای بنیادی مدلسازی زبان اشاره دارند، هرچند معنای اصلی آنها یکسان نیست.
پیش از ورود به جزئیات، ابتدا ببینیم مدل زبانی چگونه کار میکند. هدف مدلسازی زبان، پیشبینی احتمال وقوع یک دنباله از توکنها است. فرض کنید {x₀, x₁, ..., xₘ} دنبالهای از توکنها باشد که در آن x₀ نماد آغاز ⟨s⟩ (یا ⟨SOS⟩) است.۱ احتمال این دنباله با قاعدهٔ زنجیرهای تعریف میشود:
Pr(x₀,...,xₘ) = Pr(x₀) · Pr(x₁|x₀) · Pr(x₂|x₀,x₁) · ... · Pr(xₘ|x₀,...,xₘ₋₁)
= ∏i=0m Pr(xi|x₀,...,xi−1) (2.1)
یا بهصورت لگاریتمی:
log Pr(x₀,...,xₘ) = ∑i=0m log Pr(xi|x₀,...,xi−1) (2.2)
در اینجا Pr(xi|x₀,...,xi−1) احتمال توکن xi با داشتن همهٔ توکنهای پیشین {x₀,...,xi−1} است.۲ در عصر یادگیری عمیق، رویکرد معمول این است که این احتمال با یک شبکهٔ عصبی عمیق برآورد شود. شبکهٔ آموزشدیده برای این کار، دنبالهٔ x₀,...,xi−1 را دریافت میکند و یک توزیع روی واژگان V، یعنی Pr(·|x₀,...,xi−1)، خروجی میدهد. مقدار Pr(xi|x₀,...,xi−1) همان احتمال متناظر با توکن xi در این توزیع است.
هنگام استفاده از مدل زبانی آموزشدیده، یک وظیفهٔ رایج یافتن محتملترین توکن با توجه به زمینهٔ قبلی است:
x̂i = arg maxxi∈V Pr(xi|x₀,...,xi−1) (2.3)
با تکرار پیشبینی واژه میتوان متن پیوسته تولید کرد: هر بار بهترین توکن x̂i پیشبینی و به انتهای زمینه افزوده میشود تا توکن بعدی x̂i+1 پیشبینی شود. به این ترتیب یک فرایند تولید چپبهراست مطابق روابط (۲.۱) و (۲.۲) شکل میگیرد.
جدول ۲.۱ — تولید سه توکن b c d با داشتن پیشوند ⟨s⟩a. در هر گام، مدل توکنی از V انتخاب میکند که احتمال شرطی آن بیشینه باشد؛ سپس آن توکن به زمینه افزوده میشود و گام بعد روی زمینهٔ جدید تکرار میشود.| زمینه | پیشبینی | قاعدهٔ تصمیم | احتمال دنباله |
| ⟨s⟩ a | b | arg maxx₂∈V Pr(x₂|⟨s⟩a) | Pr(⟨s⟩)·Pr(a|⟨s⟩)·Pr(b|⟨s⟩a) |
| ⟨s⟩ a b | c | arg maxx₃∈V Pr(x₃|⟨s⟩ab) | Pr(⟨s⟩)·Pr(a|⟨s⟩)·Pr(b|⟨s⟩a)·Pr(c|⟨s⟩ab) |
| ⟨s⟩ a b c | d | arg maxx₄∈V Pr(x₄|⟨s⟩abc) | Pr(⟨s⟩)·Pr(a|⟨s⟩)·Pr(b|⟨s⟩a)·Pr(c|⟨s⟩ab)·Pr(d|⟨s⟩abc) |
۲.۱.۱ Transformerهای رمزگشا-تنها
طبق روال استاندارد، ورودی مدل زبانی یک دنباله از توکنها، یعنی {x₀,...,xₘ₋₁} است. در هر گام یک توکن خروجی تولید میشود و برای پیشبینی بعدی، دنباله یک موقعیت به جلو شیفت میکند. مدل زبانی در هر موقعیت i توزیع Pr(·|x₀,...,xi−1) را تولید میکند و توکن xi بر اساس این توزیع انتخاب میشود. مدل با بیشینهکردن درستنمایی لگاریتمی ∑i=1m log Pr(xi|x₀,...,xi−1) آموزش میبیند.۳
در اینجا روی معماری Transformer رمزگشا-تنها تمرکز میکنیم، زیرا یکی از محبوبترین معماریها در LLMها است. دنبالهٔ ورودی با بردارهای de-بعدی {e₀,...,eₘ₋₁} بازنمایی میشود. هر ei جمع تعبیهٔ توکن xi و تعبیهٔ موقعیت i است. بدنهٔ اصلی مدل پشتهای از بلوکها (یا لایههای) Transformer است. هر بلوک دو زیرلایهٔ رویهمقرارگرفته دارد: یکی برای خودتوجهی و دیگری برای FFN. این زیرلایهها میتوانند معماری پسنرمالسازی داشته باشند:
output = LNorm(F(input) + input) (2.4)
یا معماری پیشنرمالسازی:
output = LNorm(F(input)) + input (2.5)
در این روابط، input و output هر دو ماتریس m×d هستند و سطر iام آنها را میتوان بازنمایی زمینهای توکن iام دنباله دانست. F(·) تابع هستهٔ زیرلایه است؛ برای FFN یک شبکهٔ پیشخور چندلایه و برای خودتوجهی، تابع خودتوجهی چندسری است. خودتوجهی معمولاً بهشکل توجه QKV نوشته میشود:
Attqkv(Q,K,V) = Softmax(QKT/√d + Mask)V (2.6)
که در آن Q,K,V∈Rm×d بهترتیب پرسوجوها، کلیدها و مقادیر هستند. هنگام پیشبینی یک توکن فقط توکنهای قبلی باید دیده شوند، بنابراین متغیر ماسک Mask∈Rm×m به خودتوجهی افزوده میشود. مقدار درایهٔ (i,k) در ماسک برای موقعیتهای مجاز صفر و برای موقعیتهای ممنوع −∞ است تا دسترسی به زمینهٔ سمت راست مسدود شود.
با داشتن بازنمایی H∈Rm×d، خودتوجهی چندسری چنین تعریف میشود:
F(H) = Merge(head₁,...,headτ)Whead (2.7)
که در آن Merge(·) الحاق ورودیها و Whead∈Rd×d ماتریس پارامتر است. خروجی سر jام از توجه QKV روی زیرفضای بازنمایی بهدست میآید:
headj = Attqkv(Q[j],K[j],V[j]) (2.8)
پرسوجوها، کلیدها و مقادیر با تبدیلهای خطی روی زیرفضای jام تصویر میشوند:
Q[j]=HWqj (2.9)
K[j]=HWkj (2.10)
V[j]=HWvj (2.11)
که در آن ماتریسهای Wqj, Wkj, Wvj∈Rd×d/τ پارامترهای این تبدیلها هستند.
فرض کنید L بلوک Transformer داریم. یک لایهٔ Softmax روی خروجی آخرین بلوک ساخته میشود و دنبالهای از m توزیع روی واژگان تولید میکند:
[Pr(·|x₀,...,xₘ₋₁), ..., Pr(·|x₀,x₁), Pr(·|x₀)]T = Softmax(HLWo) (2.12)
که در آن HL خروجی آخرین بلوک Transformer و Wo∈Rd×|V| ماتریس پارامتر لایهٔ خروجی است.
شکل ۲.۱ — معماری Transformer رمزگشا برای مدلسازی زبان. هستهٔ مدل از L بلوک Transformer پشتهشده تشکیل میشود و هر بلوک یک زیرلایهٔ خودتوجهی و یک زیرلایهٔ FFN دارد. برای جلوگیری از دسترسی مدل به زمینهٔ سمت راست، ماسک در خودتوجهی اعمال میشود. لایهٔ خروجی با Softmax، با داشتن توکنهای قبلی، توزیع احتمال توکن بعدی را میسازد. در استنتاج، توکن پیشبینیشدهٔ قبلی دوباره وارد مدل میشود و این فرایند تا انتهای دنباله ادامه مییابد. {z₀,...,zₘ₋₁} ورودیهای یک بلوک Transformer و {hL₀,...,hLₘ₋₁} خروجیهای آخرین بلوکاند.
کاربرد این مدل زبانی یک فرایند خودبازگشتی است. هر بار مدل توکن xi−1 را میگیرد و توکن xi را طوری پیشبینی میکند که Pr(xi|x₀,...,xi−1) بیشینه شود. با وجود تفاوتهای پیادهسازی، بسیاری از LLMها همین معماری کلی را دارند. این مدلها «بزرگ» نامیده میشوند زیرا هم عمق و هم عرض آنها قابلتوجه است.
جدول ۲.۲ — مقایسهٔ چند LLM از نظر تعداد پارامتر، عمق، عرض و تعداد سرهای توجه. نماد a/b یعنی a سر برای Query و b سر برای Key و Value.| LLM | پارامتر | عمق L | عرض d | سرها Q/KV |
| GPT-1 [Radford et al., 2018] | 0.117B | 12 | 768 | 12/12 |
| GPT-2 [Radford et al., 2019] | 1.5B | 48 | 1,600 | 25/25 |
| GPT-3 [Brown et al., 2020] | 175B | 96 | 12,288 | 96/96 |
| LLaMA2 7B | 7B | 32 | 4,096 | 32/32 |
| LLaMA2 13B | 13B | 40 | 5,120 | 40/40 |
| LLaMA2 70B | 70B | 80 | 8,192 | 64/64 |
| LLaMA3/3.1 8B | 8B | 32 | 4,096 | 32/8 |
| LLaMA3/3.1 70B | 70B | 80 | 8,192 | 64/8 |
| LLaMA3/3.1 405B | 405B | 126 | 16,384 | 128/8 |
| Gemma2 2B | 2B | 26 | 2,304 | 8/4 |
| Gemma2 9B | 9B | 42 | 3,584 | 16/8 |
| Gemma2 37B | 37B | 46 | 4,608 | 32/16 |
| Qwen2.5 0.5B | 0.5B | 24 | 896 | 14/2 |
| Qwen2.5 7B | 7B | 28 | 3,584 | 28/4 |
| Qwen2.5 72B | 72B | 80 | 8,192 | 64/8 |
| DeepSeek-V3 [Liu et al., 2024a] | 671B | 61 | 7,168 | 128/128 |
| Falcon 7B | 7B | 32 | 4,544 | 71/71 |
| Falcon 40B | 40B | 60 | 8,192 | 128/128 |
| Falcon 180B | 180B | 80 | 14,848 | 232/232 |
| Mistral 7B [Jiang et al., 2023a] | 7B | 32 | 4,096 | 32/32 |
۲.۱.۲ آموزش LLMها
فرض کنید مجموعهٔ آموزش D شامل K دنباله باشد. درستنمایی لگاریتمی هر دنبالهٔ x=x₀...xₘ در D با مدل زبانی چنین محاسبه میشود:
Lθ(x) = ∑i=1m log Prθ(xi|x₀,...,xi−1) (2.13)
زیرنویس θ پارامترهای مدل زبانی را نشان میدهد. هدف آموزش بیشینهٔ درستنمایی بهصورت زیر است:
θ̂ = arg maxθ ∑x∈D Lθ(x) (2.14)
آموزش مدلهای زبانی مبتنی بر Transformer با این هدف معمولاً یک فرایند بهینهسازی استاندارد شبکهٔ عصبی تلقی میشود و با الگوریتمهای گرادیانکاهشی که در ابزارهای متداول یادگیری عمیق پشتیبانی میشوند انجام میگیرد. شاید تا حدی شگفتآور باشد که با تبدیل مدلهای زبانی به مدلهای محاسباتی سنگینتر و آموزش روی دادههای بزرگتر، نتایج بهطور پیوسته بهتر شدهاند [Kaplan et al., 2020]. این موفقیتها پژوهشگران NLP را به افزایش همزمان دادهٔ آموزشی و اندازهٔ مدل برای ساخت مدلهای زبانی قدرتمندتر سوق داده است.
اما با بزرگترشدن مدلهای زبانی، چالشهای آموزشی تازهای پدید میآید که مسئله را نسبت به آموزش مدلهای نسبتاً کوچک بهطور جدی تغییر میدهد. یکی از چالشها نیاز به سامانههای توزیعشدهٔ بزرگمقیاس برای مدیریت داده، پارامترهای مدل، روالهای آموزش و موارد دیگر است. توسعه و نگهداری چنین سامانههایی به تلاش چشمگیر در مهندسی نرمافزار و سختافزار و نیز تخصص یادگیری عمیق نیاز دارد. مسئلهٔ مرتبط دیگر این است که هنگام مقیاسدادن آموزش، برای تکمیل فرایند در زمان قابل قبول به منابع محاسباتی بیشتری نیاز داریم. برای مثال، آموزش یک LLM با دهها میلیارد پارامتر از صفر معمولاً صدها یا هزاران GPU میطلبد. این نیاز، هزینهٔ آموزش را بهشدت افزایش میدهد، بهویژه با توجه به اینکه در فرایند توسعهٔ مدل معمولاً اجرای آموزشی متعدد لازم است. افزون بر این، از دید یادگیری عمیق، اگر شبکه بسیار عمیق یا مدل بسیار بزرگ باشد، آموزش ممکن است ناپایدار شود. بنابراین معمولاً لازم است معماری مدل برای آموزش بزرگمقیاس اصلاح شود. بخش ۲.۲ به این موضوعات بازخواهد گشت.
۲.۱.۳ ریزتنظیم LLMها
پس از پیشآموزش یک LLM، میتوان آن را برای وظایف مختلف NLP بهکار برد. در رویکرد سنتی، مدلهای زبانی معمولاً جزء سامانههای دیگر بودند؛ برای نمونه برای امتیازدهی ترجمهها در سامانههای آماری ترجمهٔ ماشینی استفاده میشدند. در هوش مصنوعی مولد، در مقابل، LLM یک سامانهٔ کامل تلقی میشود و از ماهیت مولد آن برای حل مسائل NLP استفاده میشود. رویکرد رایج این است که وظیفه را با متن توصیف کنیم و سپس LLM را وادار کنیم بر اساس این توصیف متن تولید کند. این همان وظیفهٔ استاندارد تولید متن است که در آن متن از یک زمینهٔ دادهشده ادامه یا تکمیل میشود.
بهطور رسمی، فرض کنید x=x₀...xₘ دنبالهٔ توکن زمینهٔ دادهشده توسط کاربر و y=y₁...yₙ دنبالهٔ پس از زمینه باشد. استنتاج LLM مسئلهٔ یافتن محتملترین y با داشتن x است:
ŷ = arg maxy log Pr(y|x) = arg maxy ∑i=1n log Pr(yi|x₀,...,xₘ,y₁,...,yi−1) (2.15)
جمع سمت راست در اصل همان مفهوم رابطهٔ (۲.۲) را بیان میکند، با این تفاوت که احتمال توکنها از موقعیت m+1 و نه از صفر مدل میشود. در این فصل و فصلهای بعد، برای تمایز ورودی و خروجی LLM از دو متغیر جداگانهٔ x و y استفاده میکنیم، هرچند میتوان آنها را زیردنبالههایی از یک دنباله دانست. با این نمادگذاری، شکل معادله به مدلهای دیگر تولید متن در NLP، مانند ترجمهٔ ماشینی عصبی، شباهت پیدا میکند.
برای نمونه، مسئلهٔ تشخیص درستی دستوری یک جمله را در نظر بگیرید. میتوان الگوی زیر را تعریف کرد:
{*sentence*}
Question: Is this sentence grammatically correct?
Answer:
{*sentence*} متغیری جایگیر است که با جملهٔ واقعی کاربر جایگزین میشود. اگر جملهٔ «John seems happy today.» را داشته باشیم، ورودی مدل چنین میشود:
John seems happy today.
Question: Is this sentence grammatically correct?
Answer:
مدل زمینه را میگیرد و بر اساس آن پاسخ تولید میکند؛ برای مثال اگر «Yes» محتملترین ادامه باشد، y="Yes" تولید میشود.
به همین ترتیب میتوان برای وظایف دیگر الگو ساخت. برای ترجمهٔ جملهای از انگلیسی به چینی:
{*sentence*}
Question: What is the Chinese translation of this English sentence?
Answer:
یا بهشکل دستور:
{*sentence*}
Translate this sentence from English into Chinese.
یا بهشکل کدنما:
[src-lang] = English [tgt-lang] = Chinese [input] = {*sentence*}
[output] =
این الگوها روشی ساده اما مؤثر برای «پرامپتدادن» به یک LLM واحد جهت اجرای وظایف متفاوت، بدون تغییر ساختار مدل، فراهم میکنند. بااینحال این رویکرد نیازمند آن است که LLM دستورها و پرسشها را تشخیص دهد و دنبال کند. یک راه این است که نمونههای دارای دستور و پاسخ متناظر به دادهٔ پیشآموزش افزوده شوند. این روش ساده است، اما ساخت و آموزش LLM از صفر از نظر محاسباتی بسیار پرهزینه است. علاوه بر آن، مؤثرکردن دادهٔ دنبالکردن دستور در پیشآموزش به مقدار زیادی از این داده نیاز دارد و گردآوری دادهٔ برچسبخوردهٔ بزرگمقیاس برای همهٔ وظایف مورد علاقه بسیار دشوار است.
روش دوم که در پژوهشهای اخیر عملاً به استاندارد تبدیل شده، سازگارکردن LLM با ریزتنظیم است. به این ترتیب توان پیشبینی توکن که در پیشآموزش آموخته شده، برای انجام وظایف تازه تعمیم مییابد. ایده این است که مقداری دانش عمومی زبان در پیشآموزش بهدست آمده، اما برای استفاده از این دانش در وظایف جدید به سازوکاری برای فعالسازی آن نیاز داریم. میتوان پارامترهای مدل را اندکی با دادهٔ دنبالکردن دستور ریزتنظیم کرد؛ این رویکرد «ریزتنظیم دستور» (instruction fine-tuning) نام دارد.
هر نمونهٔ ریزتنظیم دستور که بهصورت دنبالهٔ توکن نمایش داده میشود، یک زوج ورودی–خروجی مطلوب است. ورودی شامل دستور، اطلاعات سامانه (system information یا system prefix) و هر اطلاعات دیگری است که کاربر ارائه میکند.۵ نمونههای زیر همگی همان وظیفهٔ طبقهبندی دودویی را با دستورهای متفاوت توصیف میکنند:
Read the following sentence, and answer whether it is grammatically correct.
LLMs are powerful models but are expensive to build.
Yes
LLMs are powerful models but are expensive to build.
Does this sentence make sense grammatically?
Answer Option
- Yes
- No
Yes
Yes or No? Yes = the following sentence is grammatically correct. No = it contains grammatical errors.
LLMs are powerful models but are expensive to build.
Yes
برای افزایش تنوع دادهٔ ریزتنظیم و کمک به تعمیم LLM، میتوان وظایف بیشتری را با دستورها تعریف کرد:
Write a short story about three characters.
Character 1: A boy whose name is Andy.
Character 2: Andy’s dog.
Character 3: Andy’s friend, Jane.
In the heart of a bustling city, Andy, his loyal dog Rocket, and his friend Jane discovered a hidden garden beneath the glow of twilight. Surrounded by ancient trees and whispering winds, they shared dreams and secrets, forging an unbreakable bond. As the night deepened, they made a pact under the stars to always find magic in the mundane. Together, they realized that true adventure lay in the moments spent with friends, and every day was a treasure waiting to be discovered.
Show me a recipe for making ice cream.
Ingredients:
2 cups heavy cream; 1 cup milk; 3/4 cup sugar; 2 tsp vanilla extract; Pinch of salt.
Steps:
1. Whisk all ingredients until sugar dissolves.
2. Chill mixture for 2 hours in the fridge.
3. Freeze in a shallow dish, stirring every 30 minutes, 3-4 times.
4. Freeze solid for 2 hours.
5. Serve your homemade ice cream.
If you buy 5 apples and each apple costs $1.20, how much do you spend in total?
$6.00
Write a Python program to calculate the sum of squares of the following numbers.
1 , 2 , 10 , -9 , 78
numbers = [1,2,10,-9,78]
sum_of_squares = sum(x**2 for x in numbers)
print(sum_of_squares)
برای کسب توان دنبالکردن دستور، مقدار مشخصی دادهٔ ریزتنظیم لازم است؛ این داده میتواند دستورهای متنوع و پاسخهای ممکن را شامل شود. مشخص شده است که افزایش تعداد وظایف ریزتنظیم برای بهبود عملکرد LLM سودمند است [Chung et al., 2022]. بااینحال، گرچه دادهٔ ریزتنظیم بیشتر مطلوب است، مقدار آن معمولاً چند مرتبهٔ بزرگی کمتر از دادهٔ پیشآموزش است. برای مثال، LLMها را میتوان با دهها یا صدها هزار نمونه ریزتنظیم کرد، یا حتی با تعداد کمتری اگر نمونهها کیفیت بالایی داشته باشند [Zhou et al., 2023a; Chen et al., 2023b]؛ در حالی که پیشآموزش ممکن است به میلیاردها یا تریلیونها توکن نیاز داشته باشد و بنابراین توان محاسباتی و زمان بسیار بیشتری مصرف کند [Touvron et al., 2023a].
نباید انتظار داشت دادهٔ ریزتنظیم همهٔ وظایف پاییندستی مورد نظر را پوشش دهد. برداشت رایج از الگوی «پیشآموزش + ریزتنظیم» این است که LLM در مرحلهٔ پیشآموزش دانش لازم برای فهم دستورها و تولید پاسخ را تا حدی بهدست آورده، اما این تواناییها تا زمانی که نوعی نظارت وارد نشود کاملاً فعال نمیشوند. رفتار عمومی دنبالکردن دستور با ریزتنظیم مدل روی مقدار نسبتاً کمی دادهٔ برچسبخورده پدیدار میشود. در نتیجه سطحی از یادگیری صفرنمونهای حاصل میشود: مدل ریزتنظیمشده میتواند وظایف تازهای را انجام دهد که صراحتاً برای آنها آموزش یا ریزتنظیم نشده است [Sanh et al., 2022; Wei et al., 2022a]. این توان صفرنمونهای، LLMهای مولد را از مدلهای پیشآموختهٔ قدیمیتر مانند BERT که عمدتاً برای وظایف مشخص ریزتنظیم میشوند، متمایز میکند.
پس از آمادهسازی مجموعهای از دادههای توصیفشده با دستور، فرایند ریزتنظیم نسبتاً ساده است و میتوان آن را مانند یک فرایند آموزش استاندارد شبیه پیشآموزش، اما روی دادهای بسیار کوچکتر، دید. فرض کنید Dtune مجموعهٔ ریزتنظیم و θ̂ پارامترهای بهینهشده در پیشآموزش باشد. هدف ریزتنظیم از رابطهٔ (۲.۱۴) بهصورت زیر بهدست میآید:
θ̃ = arg maxθ̂+ ∑sample∈Dtune Lθ̂+(sample) (2.16)
در اینجا θ̃ پارامترهای بهینه و نماد θ̂+ نشاندهندهٔ آغاز ریزتنظیم از پارامترهای پیشآموختهٔ θ̂ است. برای هر نمونه، آن را به بخش ورودی xsample و خروجی ysample تقسیم میکنیم:
sample = [ysample, xsample] (2.17)
و تابع زیان را چنین تعریف میکنیم:
Lθ̂+(sample) = −log Prθ̂+(ysample|xsample) (2.18)
به بیان دیگر، زیان روی زیردنبالهٔ خروجی محاسبه میشود، نه کل دنباله. در پیادهسازی عملی پسانتشار، دنبالهٔ کامل در گذر رو به جلو مثل معمول ساخته میشود، اما در گذر رو به عقب گرادیان خطا فقط از بخشهای شبکهٔ متناظر با خروجی عبور میکند. مثال:
⟨s⟩ Square this number . 2 . | The result is 4 .
Context (Input) | Prediction (Output)
زیان فقط برای بخش The result is 4 . محاسبه و پسانتشار میشود.
ریزتنظیم دستور نیز کار مهندسی قابلتوجهی میطلبد. برای رسیدن به نتایج رضایتبخش ممکن است لازم باشد نرخ یادگیری، اندازهٔ دسته، تعداد گامهای ریزتنظیم و تنظیمهای دیگر بارها آزمایش شوند و اجرای ریزتنظیم و ارزیابی متعدد انجام شود. هزینه و تلاش آزمایشی ریزتنظیم، هرچند بسیار کمتر از پیشآموزش است، همچنان مهم است و نباید نادیده گرفته شود.
اگرچه اینجا ریزتنظیم دستور را بهعنوان مثال توضیح دادیم، روشهای ریزتنظیم نقش گستردهتری در توسعهٔ LLMها دارند؛ از جمله ریزتنظیم LLM بهعنوان چتبات با دادهٔ گفتوگو و سازگارکردن مدل برای دنبالههای بسیار بلند. کاربرد گستردهٔ ریزتنظیم پژوهشگران را به طراحی الگوریتمهای کارآمدتر سوق داده است. این بخش تنها مزهای از گامهای کلیدی میدهد و فصلهای بعد بحث مفصلتری ارائه خواهند کرد.
۲.۱.۴ همترازکردن LLMها با جهان
ریزتنظیم دستور راهی ساده برای سازگارکردن LLMها با وظایفی است که میتوان آنها را بهخوبی تعریف کرد. در معنایی گستردهتر، این مسئله بخشی از «همترازی» (alignment) است. همترازی فرایندی برای هدایت LLM به رفتاری است که با نیت انسان سازگار باشد. این هدایت میتواند از دادهٔ برچسبخورده، بازخورد انسانی یا هر شکل دیگری از ترجیحات انسانی بیاید. برای مثال، میخواهیم LLM نهفقط دستورها را دقیق دنبال کند، بلکه بیطرف، راستگو و بیضرر باشد؛ بنابراین لازم است مدل به سمت ارزشها و انتظارات انسانی هدایت شود. یک نمونهٔ رایج آن است که اگر از LLM غیرهمتراز دربارهٔ ساخت سلاح پرسیده شود، ممکن است گامهای لازم را ارائه دهد، در حالی که مدل مسئولانه باید درخواست اطلاعات زیانآور یا غیرقانونی را تشخیص دهد و از پاسخگویی مناسب خودداری کند. در چنین حالتی همترازی برای رفتار مسئولانه و مطابق راهنماهای اخلاقی ضروری است.
مفهوم مرتبط با همترازی، ایمنی هوش مصنوعی (AI safety) است. یکی از هدفهای نهایی هوش مصنوعی ساخت سامانههایی هوشمند، ایمن و سودمند برای جامعه است. برای رسیدن به این هدف باید این سامانهها در شرایط واقعی استفاده، حتی در سوءاستفاده یا استفادهٔ خصمانه، مقاوم، امن و قابلکنترل باقی بمانند. در LLMها، ایمنی را میتوان با همترازکردن مدل با راهنمایی مناسب انسان، مانند دادهٔ برچسبخوردهٔ انسانی و تعاملات کاربران هنگام کاربرد، افزایش داد.
همترازی دشوار است زیرا ارزشها و انتظارات انسانی متنوع و متغیرند. گاهی نمیتوان دقیقاً توصیف کرد انسان چه میخواهد مگر آنکه پاسخ LLM به درخواست واقعی کاربر را ببینیم. بنابراین همترازی دیگر صرفاً تنظیم مدل روی وظایف ازپیشتعریفشده نیست، بلکه مسئلهٔ بزرگتری برای آموزش مدل با تعاملات جهان واقعی است.
در پاسخ به نگرانیهای کنترل سامانههای هوش مصنوعی، پژوهش دربارهٔ همترازی LLMها بهسرعت افزایش یافته است. معمولاً پس از پیشآموزش روی دادهٔ بدون برچسب بزرگمقیاس، دو مرحلهٔ همترازی انجام میشود:
- ریزتنظیم نظارتشده (Supervised Fine-tuning یا SFT). ادامهٔ آموزش LLM پیشآموخته روی دادهٔ تازه، وظیفهمحور و برچسبخورده. ریزتنظیم دستور یکی از روشهای رایج SFT است. با یادگیری از دادهٔ دستور–پاسخ، LLM با رفتار مورد انتظار برای دنبالکردن دستور همتراز میشود و میتواند وظایف مختلفی را که با دستور توصیف شدهاند انجام دهد. SFT ادامهٔ طبیعی الگوی «پیشآموزش + ریزتنظیم» و روشی نسبتاً مستقیم برای سازگارکردن LLM است.
- یادگیری از بازخورد انسانی. پس از پیشآموزش و SFT، مدل در صورت پرامپت مناسب میتواند به درخواست کاربر پاسخ دهد، اما ممکن است محتوای نادرست، سوگیرانه یا زیانآور تولید کند. یک راه ساده برای همترازی بیشتر، یادگیری مستقیم از بازخورد انسان است. مثلاً برای تعدادی دستور و ورودی، از متخصصان خواسته میشود پاسخ مدل را بر اساس ترجیحات و علایق خود ارزیابی کنند و این بازخورد برای آموزش بیشتر LLM بهکار میرود.
روش معمول یادگیری از بازخورد انسانی، صورتبندی آن بهعنوان مسئلهٔ یادگیری تقویتی است که «یادگیری تقویتی از بازخورد انسانی» (RLHF) نام دارد [Ouyang et al., 2022]. RLHF ابتدا برای مسائل عمومی تصمیمگیری ترتیبی پیشنهاد شد [Christiano et al., 2017] و بعداً در توسعهٔ مدلهای خانوادهٔ GPT با موفقیت بهکار رفت [Stiennon et al., 2020]. در یادگیری تقویتی، هدف یادگیری یک سیاست با بیشینهکردن پاداش محیط است. در RLHF دو مؤلفه ساخته میشود:
- عامل (Agent). عامل یا LM agent همان LLMی است که میخواهیم آموزش دهیم. عامل با محیط تعامل میکند: متن را از محیط دریافت میکند و متنی دیگر به محیط برمیگرداند. سیاست عامل همان تابع تعریفشده توسط LLM، یعنی Pr(y|x) است.
- مدل پاداش (Reward Model). مدل پاداش جانشینی برای محیط است. هر بار عامل یک دنبالهٔ خروجی تولید میکند، مدل پاداش یک امتیاز عددی (پاداش) به آن میدهد که نشان میدهد خروجی تا چه حد خوب است.
در RLHF دو وظیفهٔ یادگیری داریم: ۱) یادگیری مدل پاداش از بازخورد انسانی روی خروجی عامل، و ۲) یادگیری سیاست با راهنمایی مدل پاداش و الگوریتمهای یادگیری تقویتی. گامهای اصلی بهطور خلاصه:
- ساخت سیاست اولیه با پیشآموزش و ریزتنظیم دستور.
- استفاده از سیاست برای تولید چند خروجی برای هر ورودی و گردآوری بازخورد انسانی، مثلاً مقایسهٔ خروجیها.
- یادگیری مدل پاداش از بازخورد انسانی.
- ریزتنظیم سیاست با نظارت مدل پاداش.
برای یک مثال ساده، فرض کنید LLM با پیشآموزش و ریزتنظیم دستور ساخته و برای پاسخگویی به کاربران مستقر شده است. کاربر میپرسد:
How can I live a more environmentally friendly life?
چهار خروجی نمونه از فضای خروجی مدل:
- Output 1 (y1): Consider switching to an electric vehicle or bicycle instead of traditional cars to reduce carbon emissions and protect our planet.
- Output 2 (y2): Adopt a minimalist lifestyle. Own fewer possessions to reduce consumption and the environmental impact of manufacturing and disposal.
- Output 3 (y3): Go off-grid. Generate your own renewable energy and collect rainwater to become completely self-sufficient and reduce reliance on non-renewable resources.
- Output 4 (y4): Support local farm products to reduce the carbon footprint of transporting food, while enjoying fresh, healthy food.
شکل ۲.۲ — نمای کلی RLHF با چهار گام اصلی: الف) آموزش LLM اولیه (سیاست) با پیشآموزش و ریزتنظیم نظارتشده؛ ب) گردآوری دادهٔ ترجیح انسانی با رتبهبندی خروجیهای LLM؛ ج) آموزش مدل پاداش با نتایج رتبهبندی؛ د) ریزتنظیم تقویتی سیاست بر اساس مدل پاداش. پیکانهای دولایه نشاندهندهٔ آموزش یا ریزتنظیماند.
سپس از حاشیهنویسان میخواهیم خروجیها را ارزیابی کنند. یک راه مستقیم، تخصیص امتیاز عددی به هر خروجی است که یادگیری مدل پاداش را به مسئلهٔ رگرسیون تبدیل میکند؛ اما تعیین امتیاز عددی برای خروجیهای LLM برای حاشیهنویسان آسان نیست و طراحی یک استاندارد مشترک که همه بتوانند بهسادگی دنبال کنند دشوار است. روش جایگزین و رایجتر، رتبهبندی خروجیها است. مثلاً:
y₁ ≻ y₄ ≻ y₂ ≻ y₃
مدل پاداش با این رتبهبندی آموزش داده میشود. در حالت کلی، مدل پاداش در RLHF یک مدل زبانی با همان معماری LLM هدف، اما معمولاً کوچکتر است. با داشتن ورودی x و خروجی yk، آنها را به دنبالهٔ seqk=[x,yk] متصل میکنیم. دنباله با رمزگشایی اجباری از چپ به راست پردازش میشود. چون هر موقعیت در مدلسازی زبان فقط به زمینهٔ چپ دسترسی دارد، خروجی لایهٔ بالایی Transformer در موقعیت نخست نمیتواند نمایش کل دنباله باشد. بنابراین نماد ویژهای مانند ⟨\s⟩ به انتهای دنباله افزوده میشود و خروجی متناظر پشتهٔ Transformer نمایش کل دنباله تلقی میشود. سپس یک لایهٔ خروجی، مانند تبدیل خطی، روی آن قرار میگیرد تا پاداش R(seqk) یا R(x,yk) را تولید کند.
مدل پاداش با زیان رتبهبندی آموزش میبیند. یک زیان رتبهبندی جفتی:
Lossω(Dr) = −E(x,yk1,yk2)~Dr log Sigmoid(Rω(x,yk1) − Rω(x,yk2)) (2.19)
که در آن ω پارامترهای مدل پاداش و Dr مجموعهای از سهتاییهای ورودی و جفت خروجی است. اگر ابتدا ورودی x بهطور یکنواخت و سپس یک جفت خروجی با احتمال ترجیح Pr(yk1≻yk2|x) نمونهبرداری شود، زیان متناظر چنین است:
Lossω(Dr) = −(1/K) ∑ Pr(yk1≻yk2|x) · log Sigmoid(Rω(x,yk1)−Rω(x,yk2)) (2.20)
گرچه شکل این توابع پیچیده بهنظر میرسد، ایده ساده است: اگر رتبهبندی پیشبینیشدهٔ دو خروجی با رتبهبندی انسانی متفاوت باشد مدل جریمه میشود و اگر مطابق باشد پاداش میگیرد. مدل پاداش با کمینهکردن زیان رتبهبندی آموزش داده میشود:
ω̂ = arg minω Lossω(Dr) (2.21)
مدل Rω̂(·) حاصل میتواند هر جفت ورودی–خروجی را ارزیابی کند. اگرچه با هدف رتبهبندی آموزش دیده، در عمل برای امتیازدهی استفاده میشود و سیگنال نظارتی پیوستهای فراهم میکند که برای آموزش مدلهای دیگر بسیار سودمند است.
در یادگیری سیاست، یک هدف رایج بیشینهکردن پاداش روی مجموعهای از زوجهای ورودی–خروجی است. با شکلی مشابه رابطهٔ (۲.۱۶)، هدف سادهٔ ریزتنظیم تقویتی چنین است:
θ̃ = arg maxθ̂+ E(x,yθ̂+)~Drlft Rω̂(x,yθ̂+) (2.22)
که در آن پارامترهای بهینهٔ θ̃ با ریزتنظیم پارامترهای پیشآموختهٔ θ̂ بهدست میآیند. Drlft دادهٔ ریزتنظیم RL است. برای هر نمونه، x از مجموعهٔ آمادهشدهٔ ورودیها و yθ̂+ از توزیع سیاست Prθ̂+(y|x) نمونهبرداری میشود.
در عمل، الگوریتمهای پیشرفتهتر یادگیری تقویتی مانند Proximal Policy Optimization (PPO) برای آموزش پایدارتر و عملکرد بهتر بهکار میروند. بحث تفصیلی RL به بخشهای بعدی کتاب واگذار میشود که RLHF در آنها برای همترازی بهصورت گستردهتر بررسی خواهد شد.
پرسشی جالب این است که چرا یادگیری از ترجیحات انسانی را یک مسئلهٔ نظارتشدهٔ استاندارد در نظر نگیریم؟ پاسخ با دشواری حاشیهنویسی داده مرتبط است. اغلب توصیف دقیق ارزشها و هدفهای انسانی دشوار است و ارائهٔ خروجی کاملاً همتراز توسط انسان حتی دشوارتر. در مقابل، مقایسهٔ ترجیحات میان چند خروجی آماده سادهتر است. با این کار میتوان مدلی ساخت که ترجیحات انسان را درک کند و بهعنوان مدل پاداش برای آموزش سیاست بهکار رود. از دید یادگیری ماشین، RLHF بهویژه برای سناریوهایی سودمند است که نشاندادن رفتار مطلوب عامل دشوار، اما تشخیص آن برای انسان آسان است. مزیت دیگر RLHF توان کاوش فضای نمونه است: با نمونهبرداری، مدل تقویتی میتواند فراتر از مجموعهٔ برچسبخورده حرکت کند و نمونههای تازه را کاوش کند؛ این توان ممکن است سیاستهای سودمندی را کشف کند که از دادهٔ برچسبخورده بهتنهایی آشکار نیستند.
۲.۱.۵ پرامپتدادن به LLMها
تا اینجا دیدیم LLMها با پرامپت مناسب میتوانند وظایف گوناگون را انجام دهند. محدودیت سختی بر محتوای پرامپت نیست و میتواند هر اطلاعاتی را که میخواهیم از LLM بپرسیم یا به آن منتقل کنیم، مانند دستور زبان طبیعی و زمینهٔ گفتوگو، دربر گیرد. چون این رویکرد به آموزش یا تنظیم اضافی نیاز ندارد، پس از توسعهٔ LLM سازگارسازی آن بسیار کارآمد میشود. این موضوع تا حدی پارادایم NLP را تغییر داده است: بهجای ساخت سامانهٔ جداگانه برای هر وظیفه، میتوان یک LLM خوبآموزشدیده را با پرامپت برای وظایف مختلف بهکار برد. جنبهٔ جذاب دیگر این است که کاربران با طراحی پرامپت خود میتوانند نوعی سامانهٔ «سفارشی» بسازند. بهدلیل نقش مهم پرامپت، مهندسی پرامپت به حوزهای بسیار فعال در NLP تبدیل شده است.
واژهٔ prompt در ادبیات پژوهش به شکلهای مختلف استفاده میشود. در این فصل، پرامپت به کل ورودی LLM گفته میشود و «پرامپت» و «ورودی مدل» بهجای هم بهکار میروند. مثالهای بعدی از نمونههای سادهٔ بخشهای پیشین پیچیدهترند؛ هدف آنها آموزش نوشتن پرامپت باکیفیت نیست، بلکه نشاندادن چند مسئلهٔ جالب در پرامپتکردن LLM است.
یکی از روشهای محبوب، اختصاص یک «نقش» به LLM هنگام تولید پاسخ است. برای مثال، مدل میتواند هنگام پاسخگویی نقش پژوهشگر روانشناسی را بگیرد:
Please explain what delayed gratification is?
Note, you are a researcher with a deep background in psychology. Your own field of study is developmental psychology in children, with a focus on aspects of control and intelligence. You are very familiar with the concept of delayed gratification and have applied it to your own research. You have published papers on delayed gratification and conducted related experiments.
Delayed gratification is the process of resisting an immediate reward in anticipation of receiving a more valuable reward in the future. It is a significant concept in developmental psychology, especially in relation to how children learn self-control and develop cognitive abilities. Research shows that the ability to delay gratification is associated with positive outcomes in academic performance, social competence, and emotional well-being. Studies and experiments in this area highlight the importance of cultivating this skill early in life to support long-term success and resilience.
مثال دیگر، استفاده از LLM برای یافتن و اصلاح خطاهای نحوی یا معنایی متن است. اگر LLM روی کد و زبان طبیعی آموزش دیده باشد، میتوان از آن برای اشکالزدایی کد استفاده کرد:۶
Fix the bugs in this C language program.
#include <stdio.h>
int main() {
printg("Hello, World!")
return 0;
}
1. The function name 'printg' is incorrect. It should be 'printf'.
2. There is a missing semicolon at the end of the 'printf' function call.
Here is the corrected version of the program:
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
همچنین میتوان LLM را برای ایفای نقش شریک گفتوگو ریزتنظیم کرد:۷
Hi! I’m an assistant. How can I help you?
Who won the FIFA World Cup 2022?
Argentina won the FIFA World Cup 2022.
Where was it held?
The 2022 FIFA World Cup was held in Qatar.
How many times has Argentina won the World Cup?
Argentina has won the FIFA World Cup three times.
...
این مثالها و نمونههای پیشین نشان دادند که با دستورها و پرسشهای روشن میتوان پاسخ مناسب تولید کرد. اما وقتی حل مسئله به دانشی نیاز دارد که صراحتاً در پرامپت نیامده است، LLM حتی با دستور دقیق ممکن است اشتباه کند. یک خانوادهٔ دشوار از وظایف شامل استدلال حسابی و استدلال عقل سلیم است. برای مثال:
Jack has 7 apples. He ate 2 of them for dinner, but then his mom gave him 5 more apples. The next day, Jack gave 3 apples to his friend John. How many apples does Jack have left in the end?
The answer is 10.
پاسخ درست ۷ است، بنابراین خروجی مدل نادرست است.
یک راه مقابله با چنین مسئلهای، واردکردن یادگیری در خود پرامپت است که «یادگیری درونمتنی» (In-context Learning یا ICL) نام دارد. ایدهٔ ICL این است که روش حل مسئله را در پرامپت با مثال نمایش دهیم و پیشبینی مدل را به این نمایشها مشروط کنیم. نمونه:
Tom has 12 marbles. He wins 7 more marbles in a game with his friend but then loses 5 marbles the next day. His brother gives him another 3 marbles as a gift. How many marbles does Tom have now?
The answer is 17.
Jack has 7 apples. He ate 2 of them for dinner, but then his mom gave him 5 more apples. The next day, Jack gave 3 apples to his friend John. How many apples does Jack have left in the end?
The answer is 12.
مدل در این حالت نیز اشتباه کرده است. یکی از علتها این است که حل مسائل ریاضی فقط نگاشت مسئله به پاسخ نیست، بلکه تا حد زیادی به استنتاج منطقی چندمرحلهای وابسته است. یکی از روشهای بهبود توان استنتاج LLM، پرامپتکردن زنجیرهٔ فکر (Chain-of-Thought یا COT) است [Wei et al., 2022c]. در COT، مسئلهٔ استدلالی پیچیده به چند مرحلهٔ میانی حل مسئله تجزیه میشود و این مراحل در پرامپت نشان داده میشوند تا LLM روش استدلال را تقلید کند. COT برای بنچمارکهای دشواری مانند GSM8K بسیار مفید گزارش شده است.
برای مسئلهٔ تیلههای Tom، مراحل منطقی را میتوان چنین ساختاربندی کرد:
- Tom با ۱۲ تیله شروع میکند.
- ۷ تیله برنده میشود: 12 + 7 = 19.
- روز بعد ۵ تیله از دست میدهد: 19 − 5 = 14.
- برادرش ۳ تیله میدهد: 14 + 3 = 17.
- پس در پایان ۱۷ تیله دارد.
با افزودن این مراحل به پرامپت، پاسخ درست برای مسئلهٔ Jack نیز بهدست میآید:
Tom has 12 marbles... How many marbles does Tom have now?
Tom initially has 12 marbles. After winning a game, he gains 7 more, increasing his total to 19 marbles. He loses 5 marbles the next day, bringing his total down to 14 marbles. His brother gifts him 3 more marbles, increasing his total to 17 marbles. Therefore, Tom now has 17 marbles. So the answer is 17.
Jack has 7 apples... How many apples does Jack have left in the end?
Jack starts with 7 apples. He eats 2 apples for dinner, so we subtract 2 from 7, leaving him with 5 apples. His mom gives him 5 more apples, adding 5 to his current total. Now he has 5 + 5 = 10 apples. The next day, Jack gives 3 apples to his friend John. Subtracting 3 from 10, Jack is left with 7 apples. Therefore, Jack has 7 apples left. So the answer is 7.
این رویکرد «COT تکنمونهای» (one-shot COT) نامیده میشود. به همین ترتیب با افزودن نمایشهای بیشتر میتوان COT چندنمونهای (few-shot) ساخت.
نوع ویژهای از COT، «COT صفرنمونهای» است که بدون ارائهٔ مراحل میانی در پرامپت، دستوری اضافه میکند تا LLM به استدلال واداشته شود [Kojima et al., 2022]. نمونهٔ جالب، افزودن جملهٔ سادهٔ “Let’s think step by step.” در انتهای پرامپت است:
Jack has 7 apples. He ate 2 of them for dinner, but then his mom gave him 5 more apples. The next day, Jack gave 3 apples to his friend John. How many apples does Jack have left in the end?
Let's think step by step.
1. Initial Quantity: Jack starts with 7 apples.
2. After Dinner: He eats 2 apples, so 7 − 2 = 5 apples remain.
3. His Mom Gives More: His mom gives him 5 more apples, so 5 + 5 = 10 apples are now with him.
4. Giving to John: The next day, Jack gives 3 apples to his friend John, so 10 − 3 = 7 apples are left.
In the end, Jack has 7 apples left.
یادگیری صفرنمونهای، تکنمونهای و چندنمونهای مفاهیم رایج در یادگیری درونمتنی LLMها هستند و به COT محدود نمیشوند. بهطور کلی هر پرامپتی که فقط دستور ساده و بدون نمایش نمونه دارد میتواند شکلی از یادگیری صفرنمونهای باشد. این توان با پیشآموزش و/یا ریزتنظیم LLM پدیدار میشود. روشهای تکنمونهای و چندنمونهای بیشتر زمانی اهمیت دارند که مدل توان صفرنمونهای متناظر را کسب نکرده باشد؛ بنابراین برای ICL در وظایف تازه مهماند. نمونهٔ چندنمونهای طبقهبندی احساس:
Given the following text snippets, classify their sentiment as Positive, Negative, or Neutral.
Example 1: “I had an amazing day at the park!”
Sentiment: Positive
Example 2: “The service at the restaurant was terrible.”
Sentiment: Negative
Example 3: “I think it’s going to rain today.”
Sentiment: Neutral
Text: “This movie was a fantastic journey through imagination.”
Sentiment: Positive