نمونهبرداری: دما، top-p و توهم هوش مصنوعی
چرا مدل به یک پرسش دو بار دو جواب متفاوت میدهد؟ چرا گاهی با اعتمادبهنفس کامل چیزی را از خودش میسازد؟ جواب هر دو در یک مرحلهٔ کمتوجهشده است: نمونهبرداری. و خبر خوب اینکه با چند پارامتر ساده میشود رفتارش را عوض کرد.
در درس قبل دیدید مدل در آخرین لایه برای هر توکن ممکن یک احتمال حساب میکند. ولی خروجی مدل یک توکن است، نه یک جدول احتمال. فرایند انتخاب از میان این احتمالها را نمونهبرداری (sampling) میگویند — و شاید کمقدرترین مفهوم در کل هوش مصنوعی باشد. هم رفتارهای عجیب مدل را توضیح میدهد، هم با کمترین زحمت کیفیت را بالا میبرد.
از عدد خام تا احتمال
مدل مستقیم احتمال بیرون نمیدهد. برای هر توکن واژگانش یک عدد خام به نام لوجیت (logit) میسازد — پس اگر واژگان ۱۰۰ هزار توکن باشد، ۱۰۰ هزار لوجیت. لوجیت بزرگتر یعنی احتمال بیشتر، ولی خودش احتمال نیست: جمعشان یک نمیشود و میتواند منفی باشد. یک تابع به نام سافتمکس (softmax) آنها را به احتمالهای درست تبدیل میکند: همه مثبت، جمعشان یک.
حالا از این احتمالها چطور انتخاب کنیم؟ سادهترین راه، برداشتن محتملترین است که به آن نمونهبرداری حریصانه (greedy) میگویند. برای دستهبندی عالی است: اگر مدل فکر میکند ایمیل به احتمال ۹۰٪ هرزنامه است، هرزنامهاش بدان. ولی برای تولید متن، نتیجه خستهکننده است: مدلی که به هر پرسشی با پیشپاافتادهترین کلمهها جواب بدهد.
راه دیگر، انتخاب به نسبت احتمال است. اگر بعد از «رنگ موردعلاقهام…» کلمهٔ «سبز» ۵۰٪ و «قرمز» ۳۰٪ احتمال داشته باشد، مدل نصف دفعهها سبز و یکسوم دفعهها قرمز میگوید. همین یک تصمیم است که مدل را غیرقطعی میکند.
سه پیچ تنظیم: دما، top-k و top-p
دما: خلاقیت در برابر ثبات
انتخاب به نسبت احتمال هم یک ایراد دارد: کلمههای رایج آنقدر محتملاند که جواب شبیه حرف یک بچهٔ پنجساله میشود: «رنگ موردعلاقهام سبز است.» جملهٔ خلاق — «رنگ موردعلاقهام رنگ برکهای آرام در صبح بهار است» — شانس کمی دارد، چون کلمهٔ اولش کماحتمال است.
دما (temperature) احتمالها را بازتوزیع میکند. پیش از سافتمکس، همهٔ لوجیتها بر دما تقسیم میشوند. دمای بالا فاصلهٔ توکنهای رایج و نادر را کم میکند (خلاقتر، ولی شاید بیربطتر)؛ دمای پایین فاصله را زیاد میکند (یکنواختتر، ولی شاید کسلکنندهتر). یک مثال عددی: مدلی با دو خروجی A و B که لوجیتهایشان ۱ و ۲ است:
top-k: فقط از میان k تای اول
سافتمکس روی ۱۰۰ هزار لوجیت گران است. top-k فقط k لوجیت بزرگتر را نگه میدارد و سافتمکس و انتخاب را فقط روی همانها انجام میدهد. k معمولاً بین ۵۰ تا ۵۰۰ است. k کوچکتر یعنی متن قابلپیشبینیتر ولی کمجذابتر.
top-p: به اندازهٔ لازم، نه عدد ثابت
ایراد top-k این است که تعداد گزینهها ثابت است، در حالی که باید به موقعیت بستگی داشته باشد. برای «موسیقی دوست داری؟ فقط بگو بله یا نه» دو گزینه کافی است؛ برای «معنای زندگی چیست؟» خیلی بیشتر لازم است. top-p (یا نمونهبرداری هستهای) توکنها را از محتملترین به پایین جمع میزند و وقتی جمع احتمال به p رسید، میایستد. فقط همین مجموعه در انتخاب شرکت میکند.
| توکن بعدی (نمونهٔ فرضی) | احتمال | جمع تجمعی | با top-p = ۰٫۹ | با top-p = ۰٫۹۹ |
|---|---|---|---|---|
| بله | ۶۰٪ | ۶۰٪ | ✓ | ✓ |
| شاید | ۳۲٪ | ۹۲٪ | ✓ (از ۹۰٪ گذشت) | ✓ |
| نه | ۷٪ | ۹۹٪ | — | ✓ |
| بقیه | ۱٪ | ۱۰۰٪ | — | — |
مقدار رایج p بین ۰٫۹ تا ۰٫۹۵ است. روی کاغذ مزیت چشمگیری ندارد، ولی در عمل خوب جواب داده و برای همین رایج شده. روش نزدیک دیگری هم هست به نام min-p: حداقل احتمالی که هر توکن باید داشته باشد تا در انتخاب شرکت کند.
کِی بایستد؟
خروجی بلندتر یعنی زمان و هزینهٔ بیشتر. دو راه برای متوقف کردن مدل هست: سقف تعداد توکن (ساده، ولی ممکن است وسط جمله قطع کند) و توکن یا کلمهٔ توقف (مثلاً توکن پایان دنباله).
چند بار بپرس، بهترین را بردار
تا اینجا دربارهٔ انتخاب یک توکن بود. حالا دربارهٔ کل پاسخ: یک راه ساده برای بهتر کردن کیفیت این است که بهجای یک پاسخ، چند پاسخ بگیرید و بهترین را انتخاب کنید. به این کار در ادبیات این حوزه محاسبهٔ زمان آزمون (test time compute) میگویند — یعنی خرج محاسبهٔ بیشتر در لحظهٔ استفاده، نه در آموزش.
| روش انتخاب | چطور | مناسب برای |
|---|---|---|
| میانگین logprob | احتمال کل پاسخ = حاصلضرب احتمال توکنها؛ برای اینکه پاسخ کوتاه جایزه نگیرد، میانگین را میگیرند | وقتی logprobs در دسترس است |
| مدل پاداش یا وارسیگر | مدل دیگری به هر پاسخ نمره میدهد (همان بهترین از N در درس قبل) | کیفیت کلی، ریاضی، کد |
| رأی اکثریت | یک مسئله را چند بار حل کن؛ پرتکرارترین جواب را بردار | کارهایی با جواب دقیق — ریاضی، چندگزینهای |
| قاعدهٔ خود محصول | مثلاً کوتاهترین پاسخ، یا اولین پرسش SQL که معتبر است | وقتی معیار روشنی دارید |
| اولین پاسخ معتبر | چند پاسخ همزمان بخواه و اولی را که تمام شد و درست بود نشان بده | کم کردن تأخیر |
دو نکتهٔ عملی. اول، تنوع پاسخها کمک میکند؛ اگر از یک مدل چند پاسخ میگیرید، پارامترهای نمونهبرداری را بین درخواستها کمی عوض کنید. دوم، این روش هزینه دارد: دو پاسخ تقریباً دو برابر یک پاسخ خرج دارد. در آزمایش OpenAI، بهبود تا حدود ۴۰۰ پاسخ ادامه داشت و بعد افت کرد — ولی هیچ محصول واقعیای برای هر پرسش ۴۰۰ پاسخ نمیگیرد.
خروجی ساختاریافته
در محصول واقعی خروجی مدل اغلب باید قالب مشخصی داشته باشد: یا چون خود کار ساختاریافته است (تبدیل پرسش فارسی به SQL، دستهبندی به یکی از چند برچسب)، یا چون خروجی به برنامهٔ دیگری داده میشود — مثلاً JSON با کلیدهای مشخص، که در فصل ۶ برای ابزارهای ایجنت حیاتی میشود. پنج راه هست، از سبک به سنگین:
| راه | چطور | قوت و ضعف |
|---|---|---|
| پرامپت | از مدل بخواه قالب را رعایت کند | آسانترین؛ ولی تضمینی نیست و چند درصد خطا برای خیلی از محصولات زیاد است |
| پسپردازش | خطاهای تکراری مدل را با کد درست کن — مثلاً کروشهٔ جاافتاده را اضافه کن | ارزان و شگفتانگیز؛ LinkedIn با یک تجزیهگر مقاوم، خروجی درست را از ۹۰٪ به ۹۹٫۹۹٪ رساند |
| چند بار پرسیدن | آنقدر بپرس تا قالب درست شود | ساده؛ ولی هزینه و تأخیر دارد |
| نمونهبرداری مقید | در هر گام فقط توکنهایی را مجاز کن که با دستور زبان قالب جورند | تضمین قالب؛ ولی برای هر قالب دستور زبان جدا لازم است و ممکن است کُند کند |
| تنظیم دقیق | مدل را روی نمونههای همان قالب آموزش بده | مؤثرترین و عمومیترین؛ ولی گرانترین |
طبیعت احتمالی: ناسازگاری و توهم
از دوستتان دو بار با یک دقیقه فاصله بپرسید «بهترین غذای دنیا چیست؟» — هر دو بار یک جواب میدهد. مدل ممکن است ندهد: اگر فکر کند غذای ایرانی ۷۰٪ و ایتالیایی ۳۰٪ «بهترین» است، ۷۰٪ دفعهها ایرانی میگوید و ۳۰٪ ایتالیایی. این احتمالی بودن همان چیزی است که مدل را برای ایدهپردازی عالی میکند — خلاقیت یعنی بیرون رفتن از مسیرهای رایج — و برای بقیهٔ کارها دردسرساز.
ناسازگاری
دو شکل دارد: ورودی یکسان، خروجی متفاوت (یک پرسش را دو بار بپرسید، دو جواب بگیرید — مثلاً مدلی که به یک انشا یک بار ۳ از ۵ و بار دیگر ۵ از ۵ نمره میدهد) و ورودی کمی متفاوت، خروجی بسیار متفاوت (مثلاً فقط یک حرف بزرگتر نوشته شده).
- برای شکل اول: پاسخ را ذخیره کنید تا پرسش تکراری همان جواب را بگیرد؛ دما، top-p و top-k را ثابت کنید؛ و بذر تصادفی (seed) را ثابت نگه دارید.
- ولی حتی با همهٔ اینها تضمین صددرصد نیست: سختافزار هم روی خروجی اثر دارد. اگر از سرویس ابری استفاده میکنید، این کنترل دست شما نیست.
- برای شکل دوم: ثابت کردن پارامترها کمکی نمیکند؛ راهش پرامپت دقیق (فصل ۵) و سامانهٔ حافظه (فصل ۶) است.
توهم
توهم یعنی پاسخی که ریشهای در واقعیت ندارد — و برای هر کاری که به درستی وابسته است، کشنده است. در ژوئن ۲۰۲۳ یک مؤسسهٔ حقوقی آمریکایی جریمه شد چون پروندهای به دادگاه داده بود که پژوهش حقوقیاش را ChatGPT ساخته بود — با رأیهایی که هرگز وجود نداشتند.
اگر ناسازگاری از تصادف نمونهبرداری میآید، توهم پیچیدهتر است: چطور چیزی که مدل هرگز ندیده، گزینهٔ محتملی میشود؟ دو فرضیهٔ مکمل هست:
| فرضیه | خلاصه | مثال |
|---|---|---|
| خودفریبی (DeepMind، ۲۰۲۱) | مدل فرق بین چیزی که به او دادهاند و چیزی که خودش ساخته را نمیفهمد. یک جملهٔ کمی غلط که خودش نوشت، برایش حکم واقعیت را پیدا میکند و روی آن بنا میکند | مدل تصویری شیشهٔ شامپو را «شیر» تشخیص داد و بعد «شیر» را جزو مواد تشکیلدهندهٔ روی برچسب نوشت. پژوهشگران به این «توهم گلولهبرفی» میگویند |
| ناهمخوانی دانش (OpenAI) | در SFT، مدل از پاسخهای برچسبزنها تقلید میکند. اگر برچسبزن از دانشی استفاده کند که مدل ندارد، در عمل به مدل یاد میدهیم چیزی بسازد | برچسبزن پاسخ دقیقی با منبعی مینویسد که مدل هرگز ندیده؛ مدل یاد میگیرد با همان اطمینان حرف بزند |
گلولهبرفی یک جنبهٔ نگرانکننده دارد: فرض غلط اولیه میتواند مدل را در پرسشهایی هم به اشتباه بیندازد که در حالت عادی درست جواب میداد — مثلاً ادعا کند ۹۶۷۷ بر ۱۳ بخشپذیر است، با اینکه خودش میداند نیست. و یک نتیجهٔ غافلگیرکننده: در مقالهٔ InstructGPT، مدلی که RLHF دیده بود بیشتر توهم داشت تا مدلی که فقط SFT دیده بود — هرچند برچسبزنها در مجموع همان را ترجیح میدادند.
خودآزمایی
برای استخراج شمارهٔ فاکتور از متن ایمیل، کدام تنظیم منطقیتر است؟
مزیت top-p نسبت به top-k چیست؟
مدلی که به یک انشا یک بار ۳ و یک بار ۵ نمره میدهد، دچار کدام مشکل است و اولین قدم منطقی کدام است؟
طبق فرضیهٔ «خودفریبی»، چرا یک خطای کوچک در اول پاسخ میتواند به یک توهم بزرگ برسد؟
سقف توکن خروجی را خیلی پایین گذاشتهاید و از مدل JSON خواستهاید. محتملترین خرابی کدام است؟
مرور فلشکارتهای این درس
۱۰ کارت · ۰ مروروارد شوید تا پیشرفتتان ذخیره شود و از همینجا ادامه دهید.