توی آخرین پست اینستاگرام دیتایاد، دربارهٔ مفهوم Loss Function و اینکه مدلهای زبانی چطور بابت اشتباهاتشون جریمه میشن صحبت کردیم.
اونجا بیشتر روی شهود این مفهوم تمرکز کردیم؛ اما اینجا میخوایم همون ایده رو با چند خط کد Python پیاده کنیم و ببینیم واقعاً چه اتفاقی میافته.
نگران ریاضیات سنگین هم نباشید؛ فقط با یک مثال ساده میبینیم چرا مدلی که با اطمینان زیاد اشتباه میکنه، باید جریمهٔ خیلی بزرگتری بگیره.
import math
def loss(probability):
return -math.log(probability)
predictions = {
"خیلی مطمئن و درست": 0.90,
"نسبتاً مطمئن و درست": 0.60,
"مردد": 0.50,
"مطمئن ولی اشتباه": 0.10,
"خیلی مطمئن ولی اشتباه": 0.01,
}
for situation, probability in predictions.items():
print(f"{situation:30} → Loss: {loss(probability):.2f}")
خروجی تقریباً این شکلیه:
خیلی مطمئن و درست → Loss: 0.11
نسبتاً مطمئن و درست → Loss: 0.51
مردد → Loss: 0.69
مطمئن ولی اشتباه → Loss: 2.30
خیلی مطمئن ولی اشتباه → Loss: 4.61
حالا نکته جالب اینجاست:
مدل بین «۵۰٪ احتمال برای جواب درست» و «۱٪ احتمال برای جواب درست» فقط کمی بدتر نشده؛ مقدار Loss بهشدت افزایش پیدا کرده.
چرا؟
چون وقتی مدل فقط
1% احتمال برای جواب درست در نظر گرفته، یعنی تقریباً مطمئنه که یک جواب دیگه درسته.پس Loss عملاً به مدل میگه:
«اشتباه کردی، مشکلی نیست؛
ولی چرا با اینهمه اعتمادبهنفس؟! 😐»
و این دقیقاً همون سیگنالیه که در فرآیند Backpropagation استفاده میشه تا وزنهای شبکه تغییر کنن و مدل در دفعات بعد احتمال بیشتری به جواب درست بده.
البته این مثال فقط سادهترین شکل ماجراست. در یک مدل زبانی واقعی، مدل برای تمام Tokenها احتمال تولید میکنه و Loss نهایی از خطای پیشبینی اونها به دست میاد.
اما ایدهٔ اصلی همینه:
احتمال جواب درست کمتر » Loss بیشتر » سیگنال قویتر برای اصلاح مدل.
اگر پست اینستاگرام رو هنوز ندیدی، اونجا مفهوم این موضوع رو بدون ریاضیات سنگین توضیح دادیم. 🧠
📌مرجع تخصصی هوش مصنوعی و علم داده
❇️ سایت | بله | تلگرام | اینستاگرام