Temperature (LLM) (FA)

From Systems analysis Wiki
Jump to navigation Jump to search

دما (انگلیسی: Temperature) در زمینه مدل‌های زبانی بزرگ (LLM) یک hyperparameter است که سطح تصادفی بودن و «خلاقیت» در تولید متن را کنترل می‌کند. این پارامتر «تیزی» یا برعکس «هموار بودن» توزیع احتمال token بعدی را در هر مرحله از decoding تنظیم می‌کند. با دستکاری دما می‌توان تعادل میان قابل‌پیش‌بینی بودن (انسجام) و تنوع (خلاقیت) متن تولیدشده را مدیریت کرد.

توضیح ساده

دما پارامتری است که مشخص می‌کند مدل چقدر محتاطانه یا برعکس، آزادانه کلمه بعدی را انتخاب می‌کند. یک مدل زبانی بزرگ تقریباً هرگز تنها یک ادامه ممکن ندارد: معمولاً در هر مرحله چند گزینه مناسب وجود دارد و هر کدام احتمال خاص خود را دارند. دما نه بر دانش مدل و نه بر «آنچه می‌داند» تأثیر می‌گذارد، بلکه بر نحوه انتخاب میان این گزینه‌ها هنگام تولید متن تأثیر می‌گذارد.

با دمای پایین، مدل محافظه‌کارانه‌تر عمل می‌کند. به محتمل‌ترین کلمات بیشتر «اعتماد» می‌کند و کمتر از مورد انتظارترین ادامه منحرف می‌شود. در نتیجه متن معمولاً یکنواخت‌تر، قابل‌پیش‌بینی‌تر، از نظر رسمی صحیح‌تر و پیوسته‌تر می‌شود. این حالت در جاهایی مفید است که دقت در بیان، ثبات پاسخ، تکرارپذیری نتیجه و به حداقل رساندن تنوع اضافی اهمیت دارند. اما این رویکرد معایبی هم دارد: متن ممکن است بیش از حد کلیشه‌ای، خشک، یکنواخت و گاهی بیش از حد «محتاطانه» شود. با دمای بیش از حد پایین، مدل حتی ممکن است شروع به تکرار بی‌پایان همان ساختارها کند (در یک حلقه گیر بیفتد) و روی محتمل‌ترین ادامه‌ها که همیشه مناسب نیستند «گیر کند».

با دمای بالا، مدل جسورانه‌تر عمل می‌کند. انتخاب نه تنها محتمل‌ترین کلمات، بلکه کلمات کمتر آشکار را هم بیشتر می‌پذیرد. در نتیجه پاسخ‌ها متنوع‌تر، پویاتر، غیرمعمول‌تر و گاهی اصیل‌تر می‌شوند. این در وظایف خلاقانه، طوفان فکری، تولید ایده، متون هنری یا جستجوی چند بیان مختلف مفید است. اما با افزایش تنوع، خطر هم افزایش می‌یابد: متن ممکن است کمتر منسجم، کمتر دقیق و در موارد شدید عجیب، غیرمنطقی یا تصادفی شود.

یک شهود مفید این است که دما نه تنظیم‌کننده دانش، بلکه تنظیم‌کننده ریسک در انتخاب کلمات است. دمای پایین مدل را مجبور می‌کند تقریباً همیشه «امن‌ترین» گزینه را انتخاب کند. دمای بالا به آن اجازه می‌دهد بیشتر «ریسک کند» و ادامه‌های کمتر آشکار را امتحان کند.

تصویر مفید دیگری وجود دارد: دما را می‌توان با نحوه پاسخ دادن انسان به یک سوال مقایسه کرد. اگر پاسخ رسمی، دقیق و منظم لازم باشد، انسان معمولاً خنثی‌ترین و مورد انتظارترین بیان‌ها را انتخاب می‌کند — این شبیه دمای پایین است. اما اگر هدف ابداع ایده‌ای غیرمعمول، استعاره‌ای، پیچشی در داستان یا چند گزینه غیراستاندارد باشد، بیان‌ها آزادانه‌تر و جسورانه‌تر می‌شوند — این شبیه دمای بالا است.

بنابراین دما مسئول تعادل میان دو ویژگی تولید است:

  • قابل‌پیش‌بینی بودن و پایداری پاسخ؛
  • تنوع و غیرمنتظره بودن بیان‌ها.

هرچه دما پایین‌تر باشد، مدل به محتمل‌ترین و استانداردترین ادامه نزدیک‌تر است. هرچه دما بالاتر باشد، فضای بیشتری برای تنوع وجود دارد، اما کنترل بر دقت و انسجام نتیجه ضعیف‌تر می‌شود.

تعریف نظری

از نظر ریاضی، دما (T) به عنوان مقسوم‌علیه در تابع softmax معرفی می‌شود، که logit‌های خروجی مدل (ui) را به توزیع احتمال (Pi) تبدیل می‌کند. فرمول به شکل زیر است:

Pi(T)=eui/Tjeuj/T

که در آن:

  • Pi(T) — احتمال نهایی token ام i با دمای T.
  • ui — logit (ارزیابی نرمال‌نشده) برای token ام i، که توسط مدل داده شده.
  • T — پارامتر دما (عدد کاملاً مثبت). به عنوان مثال، در API OpenAI برای اکثر مدل‌ها، محدوده مجاز از 0 تا 2.0 است، که 0 یک مورد خاص greedy decoding است (نگاه کنید به پایین). در کتابخانه‌های دیگر (Hugging Face Transformers، llama.cpp) دما می‌تواند هر مقدار مثبتی داشته باشد.

مهم: دما تنها در حالت‌های دارای sampling بر خروجی تأثیر می‌گذارد. در حالت‌های بدون نمونه‌برداری (greedy decoding، beam search کلاسیک)، پارامتر دما تأثیری ندارد. به عنوان مثال، در Hugging Face Transformers برای فعال‌سازی دما لازم است do_sample=True فعال شود.

تأثیر مقدار دما

  • T=1 (مقدار استاندارد): توزیع احتمال بدون تغییر باقی می‌ماند. این softmax استاندارد است که پیش‌بینی‌های اصلی مدل را منعکس می‌کند.
  • T<1 (دمای پایین، مثلاً 0.20.7): توزیع تیزتر یا قله‌دارتر می‌شود. احتمال‌های محتمل‌ترین token‌ها افزایش می‌یابد و احتمال‌های کم‌احتمال‌ترها کاهش می‌یابد. این تولید را قطعی‌تر و قابل‌پیش‌بینی‌تر می‌کند. مدل بیشتر کلمات آشکار و پرتکرار را انتخاب می‌کند که انسجام و صحت دستوری متن را بهبود می‌بخشد اما تنوع آن را کاهش می‌دهد.
  • T>1 (دمای بالا، مثلاً 1.11.5): توزیع هموارتر یا یکنواخت‌تر می‌شود. تفاوت میان احتمال‌های token‌ها کاهش می‌یابد که شانس انتخاب token‌های کمتر محتمل (و «غیرمنتظره‌تر») را افزایش می‌دهد. این متن را خلاق‌تر، متنوع‌تر و غیرقابل‌پیش‌بینی‌تر می‌کند، اما خطر تولید عبارات نامنسجم یا دستوراً نادرست را افزایش می‌دهد.

موارد مرزی

  • T0: در حد، وقتی دما به سمت صفر میل می‌کند، تابع softmax به argmax تبدیل می‌شود. مدل همیشه token با بیشترین logit را انتخاب می‌کند. این حالت معادل decoding حریص (greedy decoding) است و کاملاً قطعی است. این اغلب به متن تکراری و کلیشه‌ای منجر می‌شود. توجه: مقدار T=0 را نمی‌توان مستقیماً در فرمول جایگذاری کرد (تقسیم بر صفر)؛ در بسیاری از پیاده‌سازی‌ها به عنوان یک حالت خاص انتخاب حداکثر محافظه‌کارانه نزدیک به greedy decoding پردازش می‌شود. در این حال، نه همه hosted API‌ها قطعیت کامل را در T=0 تضمین می‌کنند — برای مثال، در Anthropic API حتی با دمای صفر نتایج ممکن است اندکی متفاوت باشند.
  • T: وقتی دما به بی‌نهایت میل می‌کند، توزیع احتمال یکنواخت می‌شود. همه token‌های واژگان به احتمال مساوی می‌رسند و مدل یک «جریان آگاهی» تصادفی تولید می‌کند که انسجام را کاملاً از دست می‌دهد. در عمل بی‌نهایت لازم نیست: حتی در T>2.0 توزیع تقریباً یکنواخت می‌شود و متن به مجموعه‌ای نامنسجم از token‌ها تبدیل می‌شود.

کاربرد عملی و توصیه‌ها

انتخاب صحیح دما بسیار مهم است و به وظیفه خاص بستگی دارد. محدوده‌های ذکرشده در زیر اکتشافات تقریبی هستند — مقادیر بهینه ممکن است بسته به مدل، حوزه و وظیفه خاص به طور قابل توجهی متفاوت باشند.

  • برای وظایف خلاقانه (نوشتن داستان، شعر، شعارهای بازاریابی):
    • دمای بالاتر (T0.71.2) توصیه می‌شود.
    • این مدل را تشویق می‌کند ایده‌های غیرمنتظره‌تر و خلاقانه‌تر تولید کند، واژگان متنوع‌تری استفاده کند و از عبارات کلیشه‌ای پرهیز کند.
  • برای وظایفی که نیاز به دقت و واقع‌گرایی دارند (پاسخ به سوالات، خلاصه‌سازی، تولید کد):
    • دمای پایین (T0.00.4) توصیه می‌شود.
    • این تنوع را کاهش و تکرارپذیری نتیجه را افزایش می‌دهد، مدل را مجبور می‌کند به محتمل‌ترین ادامه‌های متن پایبند باشد. با T=0 تولید قطعی می‌شود (با seed ثابت و بدون منابع تصادفی دیگر)، که برای آزمایش و اشکال‌زدایی مفید است، اما ممکن است مشکلاتی را که فقط هنگام sampling ظاهر می‌شوند پنهان کند. اما دمای پایین به خودی خود دقت واقعی را تضمین نمی‌کند — اگر مدل دانش لازم را نداشته باشد، ممکن است با اطمینان پاسخ اشتباه تولید کند. برای حداکثر واقع‌گرایی توصیه می‌شود دمای پایین را با روش‌های جستجو در پایگاه دانش (RAG) و prompt بهتر ترکیب کنید. در مستندات OpenAI برای استخراج داده و پاسخ‌های واقعی T=0 توصیه می‌شود.
  • برای وظایف reasoning، ریاضیات و تولید کد:
    • به طور کلی، دماهای پایین‌تر استفاده می‌شود، اما مقدار بهینه به طور قابل توجهی به مدل و وظیفه خاص بستگی دارد.
    • توجه: در برخی مدل‌های reasoning (مثلاً خانواده OpenAI o1/o3) پارامترهای sampling ممکن است از سمت ارائه‌دهنده محدود یا ثابت شده باشند. chain-of-thought داخلی نیازمند توزیع پایدار است، بنابراین ارائه‌دهندگان ممکن است تغییر دما را کاملاً مسدود کنند یا مقادیر کاربری را فقط در محدوده کمی بپذیرند.
  • برای سیستم‌های گفتگو و چت‌بات‌ها:
    • دمای متوسط (T0.50.8) توصیه می‌شود.
    • این امکان تعادل را فراهم می‌کند: پاسخ‌ها منسجم و مرتبط با موضوع باقی می‌مانند، اما بیش از حد خشک و یکنواخت نمی‌شوند.

توجه: در مستندات OpenAI API توصیه می‌شود یا temperature یا top_p تغییر داده شود، اما نه هر دو پارامتر به طور همزمان — در غیر این صورت رفتار سخت قابل پیش‌بینی می‌شود. در مثال‌های مرجع OpenAI API معمولاً T=1.0 به عنوان مقدار پیش‌فرض ذکر می‌شود.

مقایسه با Top-k و Top-p

دما، برخلاف روش‌های برش مانند Top-k و Top-p (nucleus sampling)، به شکل دیگری عمل می‌کند:

  • دما احتمال‌ها را میان همه token‌های واژگان توزیع مجدد می‌کند، اما هیچ‌کدام را حذف نمی‌کند. حتی با دمای بسیار پایین، token‌های کم‌احتمال شانس ناچیز اما غیر صفری برای انتخاب شدن دارند.
  • Top-k و Top-p برش سخت اعمال می‌کنند و token‌هایی را که در هسته نمونه‌برداری قرار نگرفته‌اند کاملاً حذف می‌کنند. چنین برشی خطر انتخاب token‌های دنباله را کاهش می‌دهد، اما خودش یک اکتشاف خام است و ممکن است ادامه‌های معقول با احتمال «واقعی» غیر صفر را کنار بگذارد.

در عمل، این پارامترها اغلب با هم استفاده می‌شوند. به عنوان مثال، می‌توان دمای متوسط (مثلاً T=0.8) برای سبک کلی تنظیم کرد و Top-p (مثلاً p=0.9) اضافه کرد تا «دنباله» توزیع برش داده شود و خطر خطاهای جدی کاهش یابد. با دمای بسیار پایین (T0)، Top-p عملاً معنا ندارد، زیرا توزیع خودش تنها یک قله معنادار دارد.

تعامل دما با سایر پارامترهای decoding

دما تقریباً هرگز به تنهایی استفاده نمی‌شود. در عمل، آن را با سایر hyperparameter‌ها برای تنظیم دقیق تعادل «خلاقیت ↔ قابلیت اطمینان» ترکیب می‌کنند.

ترتیب معمول اعمال پارامترها

در پیاده‌سازی‌های متداول sampling (به ویژه Hugging Face Transformers) پارامترها معمولاً به ترتیب زیر اعمال می‌شوند:

  1. مدل logit‌های خام (ui) تولید می‌کند.
  2. جریمه‌های تکرار (repetition / frequency / presence penalty) اعمال می‌شوند — تغییر logit‌ها بر اساس token‌های قبلاً تولیدشده.
  3. دما logit‌ها را مقیاس می‌کند: ui/T.
  4. softmax اعمال می‌شود → توزیع احتمال جدید به دست می‌آید.
  5. برش (truncation): ابتدا Top-k (اگر تنظیم شده باشد)، سپس Top-p یا Min-p.
  6. از «هسته» باقیمانده نمونه‌برداری تصادفی (sampling) انجام می‌شود.

در این طرح معمول، دما شکل توزیع را پس از اعمال جریمه‌های تکرار، اما قبل از softmax و فیلترگذاری تغییر می‌دهد. بنابراین همان top_p=0.9 با T=0.2 و با T=1.5 اندازه کاملاً متفاوتی از «هسته» ایجاد می‌کند. جریمه‌ها و دما به صورت غیرخطی تعامل دارند — این را هنگام انتخاب پارامترها باید در نظر گرفت. ترتیب داخلی اعمال در hosted API‌ها (OpenAI، Anthropic) در این سطح از جزئیات به طور عمومی مستند نشده است.

Top-p (nucleus sampling) و Min-p

Min-p (minimum probability sampling) — روش نسبتاً جدید برش است که یک آستانه حداقل احتمال نسبت به محتمل‌ترین token تنظیم می‌کند (معمولاً 0.05–0.1). برخلاف Top-p، token‌ها را بر اساس آستانه نسبی (مرتبط با احتمال بهترین token، نه جرم تجمعی ثابت) برش می‌دهد، که به ویژه با دمای بالا (>0.8) مؤثر است: از انتخاب token‌های کاملاً نامناسب جلوگیری می‌کند بدون اینکه تنوع را به طور قابل توجهی از دست بدهد. Min-p توسط تعدادی از inference stack‌های محبوب open-source، از جمله vLLM و llama.cpp پشتیبانی می‌شود.

Repetition / Frequency / Presence penalty

frequency_penalty و presence_penalty (OpenAI API) احتمال تکرار token‌هایی که قبلاً دیده شده‌اند را کاهش می‌دهند. آن‌ها می‌توانند یکی از معایب دمای پایین — تمایل به کلیشه‌ای بودن و حلقه‌ای شدن — را جبران کنند.

Typical sampling و Mirostat

Typical sampling (Meister et al., 2023) token‌هایی را انتخاب می‌کند که احتمال آن‌ها نزدیک به آنتروپی «مورد انتظار» متن است. Mirostat (v2) پارامترهای برش را به صورت پویا تنظیم می‌کند تا perplexity هدف ثابت بماند — این برای متون طولانی که ثبات سبک در آن‌ها اهمیت دارد مفید است.

مثال‌های تنظیم توضیحی

در زیر پیکربندی‌های تقریبی برای انواع مختلف وظایف آورده شده است. این مقادیر توصیه‌های عمومی نیستند — پارامترهای بهینه به مدل، وظیفه و inference stack خاص بستگی دارند.

وظیفه دما ترکیب ممکن منطق
Factual Q&A، خلاصه‌سازی 0.0–0.3 T + top_p=0.9 به حداقل رساندن تنوع تصادفی
تولید کد، ریاضیات 0.1–0.4 T + repetition_penalty پایداری + جلوگیری از حلقه‌ای شدن
گفتگو / چت‌بات‌ها 0.6–0.85 T + top_p=0.92 یا min_p=0.1 تعادل طبیعی بودن و انسجام
خلاقیت (داستان، بازاریابی) 0.75–1.1 T + min_p=0.07–0.1 تنوع با فیلترگذاری دنباله
Long-form / عوامل 0.5–0.8 Mirostat یا T + frequency_penalty کنترل طول و انسجام

توصیه کلی: بهتر است temperature و top_p را به طور همزمان به شدت تغییر ندهید. معمولاً راحت‌تر است یکی از پارامترهای truncation را ثابت نگه دارید و خلاقیت را با دما کنترل کنید — این رفتار مدل را قابل‌پیش‌بینی‌تر می‌کند.

ویژگی مدل‌های aligned مدرن: در مدل‌های کاملاً aligned (که از RLHF / Constitutional AI / RLAIF گذشته‌اند) اثر دمای بالا نسبت به مدل‌های پایه کاهش یافته است — مدل حتی با T=1.2 کمتر متن نامنسجم تولید می‌کند. مقادیر بهینه خاص ممکن است با عرضه نسل‌های جدید مدل‌ها تغییر کنند؛ توصیه‌های فوق تا سال‌های 2025–2026 به‌روز هستند.

همچنین ببینید

  • مدل‌های زبانی بزرگ

منابع

  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Caccia, M. et al. (2018). Language GANs Falling Short. arXiv:1811.02549.
  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
  • Meister, C. et al. (2023). Locally Typical Sampling. arXiv:2202.00666.
  • Hewitt, J.; Manning, C.; Liang, P. (2022). Truncation Sampling as Language Model Desmoothing. arXiv:2210.15191.
  • Su, Y.; Collier, N. (2022). Contrastive Search Is What You Need for Neural Text Generation. arXiv:2210.14140.
  • O'Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Finlayson, M. et al. (2023). Closing the Curious Case of Neural Text Degeneration. arXiv:2310.01693.
  • Shi, C. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925.
  • Ravfogel, S. et al. (2023). Conformal Nucleus Sampling. arXiv:2305.02633.
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.
  • Basu, S. et al. (2021). Mirostat: A Perplexity-Controlled Neural Text Decoding Algorithm. arXiv:2007.14966.
  • Nguyen, M. N. et al. (2025). Turning Up the Heat: Min-p Sampling for Diverse and High-Quality Text Generation. arXiv:2407.01082.
  • Renze, M.; Guven, E. (2024). The Effect of Sampling Temperature on Problem Solving in Large Language Models. arXiv:2402.05201.
  • Zhang, S. et al. (2024). EDT: Improving Large Language Models' Generation by Entropy-based Dynamic Temperature Sampling. arXiv:2403.14541.
  • Li, L. et al. (2025). Exploring the Impact of Temperature on Large Language Models: Hot or Cold?. arXiv:2506.07295.