تفاوت اصلی اینجاست که Logits دیتای خام و نویریه، ولی Logprobs دیتای قابل تحلیل و پایداره.
مفهوم Logits: امتیازهای خام
خروجی لایه آخر مدل (قبل از هر Activation Function) میشه Logits. تصور کنید Vocab مدل شما ۵۰ هزار توکن داره؛ مدل برای هر توکن یه عدد حقیقی (مثبت، منفی یا صفر) برمیگردونه.
بردار خروجی مستقیماً نشوندهنده "احتمال" نیست، بلکه امتیاز نسبی (Relative Score) هست. هرچی عدد بزرگتر باشه، یعنی مدل تمایل بیشتری به اون توکن داره. این اعداد ورودی تابع Softmax هستن.
مفهوم Logprobs: پایداری عددی
محاسبه مستقیم احتمالات (Probabilities) توی شبکههای عصبی مشکل Numerical Stability داره. ضرب کردن تعداد زیادی عدد کوچیک (مثل ۰.۰۰۰۰۱) باعث Underflow میشه و دقت محاسبات از دست میره.
راه حل اینه که بعد از اعمال Softmax روی Logits، از خروجی لگاریتم طبیعی (Natural Log) میگیرن. این میشه Logprobs.
مقادیر Logprobs همیشه منفی یا صفر هستن (چون احتمال همیشه زیر ۱ هست و لگاریتم اعداد زیر ۱ منفی میشه). هرچی عدد به صفر نزدیکتر باشه (مثلا -0.01)، یعنی مدل مطمئنتره.
کاربرد عملی در مهندسی
استفاده از هر کدوم جای خودشو داره:
۱. اگر میخواید Sampling اختصاصی بنویسید (مثل اعمال Temperature دستی یا پیادهسازی Top-K/Top-P کاستوم)، باید Logits رو از مدل بگیرید و دستکاری کنید.
۲. اگر دنبال تحلیل مدل هستید (مثل محاسبه Perplexity برای ارزیابی کیفیت مدل)، باید از Logprobs استفاده کنید چون جمع کردنشون راحتتر از ضرب احتمالاته.
به نظر من، مهمترین کاربرد Logprobs که کمتر بهش توجه میشه، تشخیص Hallucination توی سیستمهای RAG هست. وقتی مدل داره یه Fact یا عدد خاص رو تولید میکنه، اگر Logprob اون توکنها خیلی پایین باشه (عدد منفی بزرگ)، یعنی مدل اصلا مطمئن نیست و داره حدس میزنه. میتونید با یه Threshold ساده روی میانگین Logprobs جمله، پاسخهای غیرمطمئن رو فیلتر کنید تا سیستمتون دروغ تحویل کاربر نده.
مسیر تبدیل دیتا به زبان ساده:
Logits → (Softmax + Temperature) → Probabilities → Log → Logprobs
اگر با API هایی مثل OpenAI یا مدلهای Open Source کار میکنید، پارامتر
logprobs=True رو فعال کنید تا ببینید مدل واقعا چقدر به حرفی که میزنه اطمینان داره.🛠 Join @LLMEngineers Community