U nima uchun kerak
Model sinflar ehtimolliklarini chiqardi — masalan, «mushuk», «it», «qush» uchun $(0{,}665;\,0{,}245;\,0{,}090)$, — rasmda esa mushuk. Bu qanchalik yaxshi? Bitta son kerak: to‘g‘ri javob ehtimolligi qancha katta bo‘lsa, u shuncha kichik bo‘lsin va uni gradiyentli tushish bilan minimallashtirish mumkin bo‘lsin. Standart javob — kategorial kross-entropiya (categorical cross-entropy, CE): bu yerda $\mathrm{CE}=-\ln0{,}665\approx0{,}408$.
U qayerda uchraydi:
- ko‘p sinfli klassifikatorlarni o‘qitish — logistik regressiyadan ResNet va ViT’gacha: oxirgi qatlam logitlarni chiqaradi, softmax ularni ehtimolliklarga aylantiradi, CE javobni baholaydi;
- til modellari — GPT, LLaMA, Qwen’ni oldindan o‘qitish — keyingi token CE sini minimallashtirish: sinflar — lug‘at tokenlari, $e^{\mathrm{CE}}$ esa mashhur perpleksiya;
- bilimlar distillyatsiyasi — o‘quvchi o‘qituvchining «yumshoq» ehtimolliklarigacha bo‘lgan CE’ni minimallashtiradi;
- statistika — CE’ni minimallashtirish kategorial taqsimot uchun maksimal haqqoniylik usuliga teng kuchli;
- axborot nazariyasi — ma’lumotlar $p$ taqsimotdan kelib, $q$ model bo‘yicha kodlansa, CE kodning o‘rtacha uzunligiga teng.
$\mathrm{CE}=-\sum_k y_k\ln\hat y_k$; one-hot belgi uchun bu to‘g‘ri sinf ehtimolligining minus logarifmi. Ishonchli xato qimmatga tushadi: $-\ln0{,}1\approx2{,}303$, $-\ln0{,}9\approx0{,}105$ ga qarshi. Softmax bilan juftlikda logitlar bo‘yicha gradiyent shunchaki $s-y$, to‘yinishsiz. Kross-entropiya = entropiya + KL-divergensiya, $e^{\mathrm{CE}}$ esa perpleksiya.
Intuitsiya: hayrat uchun jarima
Model ehtimolliklarni oldindan e’lon qiladi, keyin to‘g‘ri javobni bilib oladi, deylik. Agar u to‘g‘ri sinfga $p$ ehtimollik bergan bo‘lsa, uning «hayrati» $-\ln p$ ga teng: $p=1$ da hayrat yo‘q, $p=0{,}5$ da u $\ln2\approx0{,}693$, $p\to0$ da esa cheksizlikkacha o‘sadi. Kross-entropiya — modelning ma’lumotlardagi o‘rtacha hayrati.
Nega aynan logarifm? Birinchidan, u mustaqil misollar ehtimolliklari ko‘paytmasini yig‘indiga aylantiradi. Ikkinchidan, u halollikni rag‘batlantiradi: faqat model sodir bo‘lgan natijaga bergan ehtimollikka bog‘liq jarimalar orasida uch va undan ortiq natijada faqat logarifmik jarima (musbat ko‘paytuvchi va o‘zgarmas aniqligida) model o‘zining haqiqiy ehtimolliklarini aytganda o‘rtacha minimal bo‘ladi.
Ishonchli xato ($p=0{,}1$) ishonchli to‘g‘ri javobdan ($p=0{,}9$) 22 marta qimmat. $p=0{,}01$ da jarima allaqachon $4{,}605$ va chegarasiz o‘sadi, $(1-p)^2$ kvadratik xato esa birdan kichikligicha qoladi ($0{,}980$). $-1/p$ hosila $p\to0$ da modul bo‘yicha chegarasiz o‘sadi: javob qancha yomon bo‘lsa, turtki shuncha kuchli.
Formula mayda detallarigacha
- $y=(y_1,\dots,y_K)$
- haqiqiy taqsimot; odatda one-hot: to‘g‘ri $c$ sinf uchun $y_c=1$, qolganlari uchun $0$;
- $\hat y_k$
- $k$-sinfning bashorat qilingan ehtimolligi, odatda $\hat y=s=\operatorname{softmax}(z)$;
- $\ln$
- natural logarifm: CE natlarda (nats) o‘lchanadi; $\log_2$ bilan — bitlarda, $1$ nat $\approx1{,}443$ bit;
- $-$
- ehtimollik logarifmi manfiy, minus yo‘qotishni nomanfiy qiladi.
One-hot belgida yig‘indidan bitta qo‘shiluvchi qoladi. $s=\operatorname{softmax}(z)$ ni qo‘yib, to‘g‘ridan-to‘g‘ri logitlar orqali formula olamiz:
Oxirgi ko‘rinish amalda asosiysi: yo‘qotish aniq softmax’siz hisoblanadi. $N$ ta misoldan iborat batch uchun yo‘qotishlar o‘rtachalanadi:
Qo‘llanmadagi misol — $(2;\,1;\,0)$ logitlar, to‘g‘ri sinf birinchisi:
| $k$ | $z_k$ | $s_k$ | $y_k$ | $-y_k\ln s_k$ | $s_k-y_k$ |
|---|---|---|---|---|---|
| 1 | 2 | 0,665 | 1 | 0,408 | −0,335 |
| 2 | 1 | 0,245 | 0 | 0 | 0,245 |
| 3 | 0 | 0,090 | 0 | 0 | 0,090 |
| Σ | 1 | 1 | 0,408 | 0 |
Natija: $\mathrm{CE}\approx0{,}408$, gradiyent $s-y\approx(-0{,}335;\,0{,}245;\,0{,}090)$. Agar uchinchi sinf to‘g‘ri bo‘lganda, yo‘qotish $-\ln0{,}090\approx2{,}408$ bo‘lardi — model ishonch bilan xato qilgan.
CE va maksimal haqqoniylik
$\theta$ parametrli model $c_n$ sinfga $q_\theta(c_n\mid x_n)$ ehtimollik bersin. Tanlanma haqqoniyligi — $\prod_n q_\theta(c_n\mid x_n)$ ko‘paytma. Logarifm ko‘paytmani yig‘indiga, ishorani almashtirish esa maksimallashtirishni minimallashtirishga aylantiradi:
O‘rtacha CE’ni minimallashtirish — kategorial taqsimot uchun maksimal haqqoniylik bahosini izlash bilan bir xil. Shuning uchun CE ixtiyoriy tanlov emas, balki ehtimoliy klassifikatorning «tug‘ma» yo‘qotishi.
Entropiya, kross-entropiya va KL-divergensiya
Nom axborot nazariyasidan kelgan. Hodisalar $p$ taqsimotdan kelsin, biz esa ularni $q$ modelga asoslanib kodlaylik. U holda:
$H(p)$ — ma’lumotlarning o‘zidagi yo‘qotib bo‘lmaydigan noaniqlik (entropiya), $\mathrm{KL}(p\,\|\,q)\ge0$ — $q$ modelning haqiqatdan farq qilgani uchun jarima (Gibbs tengsizligi; tenglik faqat $q=p$ da). Shuning uchun kross-entropiyaning $q$ bo‘yicha minimumiga $q=p$ da erishiladi va u $H(p)$ ga teng. One-hot belgi uchun $H(y)=0$ va CE KL-divergensiya bilan ustma-ust tushadi.
Nega KL ≥ 0
Botiq logarifm uchun Yensen tengsizligi bo‘yicha (yig‘indilar $p_k>0$ bo‘lgan $k$ lar bo‘yicha):
Tenglik faqat barcha $k$ uchun $q_k=p_k$ bo‘lganda bajariladi.
$\log_2$ bilan kross-entropiya bitlarda o‘lchanadi — bu $q$ bo‘yicha qurilgan optimal kodda har bir hodisaga to‘g‘ri keladigan o‘rtacha bitlar soni. Mashinali o‘qitishda natural logarifm olinadi: hosilalar soddaroq, minimum esa o‘sha. O‘tkazish: $1$ nat $=1/\ln2\approx1{,}443$ bit.
Hosila: nega softmax + CE s − y ni beradi
Yo‘qotishning logitlar bo‘yicha gradiyentini hisoblaylik. Softmax’ning Yakobi matritsasi orqali borish mumkin, lekin $\mathrm{CE}=\operatorname{LSE}(z)-z_c$ ko‘rinishi orqali qisqaroq: LSE ning hosilasi — softmax (softmax sahifasiga qarang), $z_c$ ning $z_k$ bo‘yicha hosilasi esa $y_k$ ga teng.
Yakobi matritsasi orqali keltirib chiqarish (zanjir qoidasi)
Ehtimolliklar bo‘yicha hosila: $\partial\,\mathrm{CE}/\partial s_i=-y_i/s_i$. Softmax Yakobi matritsasi: $\partial s_i/\partial z_k=s_i(\delta_{ik}-s_k)$. Zanjir qoidasi bo‘yicha:
Oxirgi qadamda $\sum_i y_i=1$ dan foydalanildi. Yakobi matritsasidagi $s_i$ ko‘paytuvchilar logarifmdagi $1/s_i$ maxrajlar bilan qisqardi — butun matritsa ayirmaga aylandi. Formula faqat one-hot uchun emas, yig‘indisi 1 bo‘lgan istalgan $y$ maqsad uchun o‘rinli (masalan, belgilar silliqlanganda).
Bu formulaning uchta muhim natijasi bor:
- gradiyent chegaralangan: har bir $s_k-y_k$ komponenta $(-1;\,1)$ da yotadi, ularning yig‘indisi esa 0 — to‘g‘ri logit qolganlari birgalikda pastga tortilgancha yuqoriga tortiladi;
- xatoda to‘yinish yo‘q: agar model ishonch bilan xato qilsa ($s_c\to0$), to‘g‘ri logit bo‘yicha gradiyent nolga emas, $-1$ ga intiladi. Softmax ustidagi MSE bilan solishtiring: u yerda Yakobi matritsasidan kelgan ko‘paytuvchilar gradiyentni aynan xato katta bo‘lganda so‘ndiradi (CE va MSE haqidagi bo‘lim);
- muvaffaqiyatda so‘nish: $s\to y$ da gradiyent 0 ga intiladi — yaxshi o‘rganilgan misollar o‘qitishga deyarli ta’sir qilmaydi.
Ikkinchi hosila: CE logitlar bo‘yicha qavariq
$s_k-y_k$ ni yana bir marta differensiallaymiz: CE’ning logitlar bo‘yicha gessiani softmax Yakobi matritsasiga teng, $\nabla^2_z\,\mathrm{CE}=\operatorname{diag}(s)-ss^\top$. Bu matritsa nomanfiy aniqlangan, shuning uchun CE — logitlarning qavariq funksiyasi, $z=Wx+b$ softmax-regressiyada esa yo‘qotish $(W,b)$ bo‘yicha qavariq: yomon lokal minimumlar yo‘q. $\mathbf 1$ yo‘nalishda matritsa xos — barcha logitlarni siljitish yo‘qotishni o‘zgartirmaydi.
3D’da yo‘qotishlar landshafti
Uchinchi logitni $z_3=0$ da qayd etamiz va yo‘qotishni qolgan ikkitasining funksiyasi sifatida chizamiz. To‘g‘ri sinf 1 uchun:
$z_1$ ham $z_2$ dan, ham noldan ancha katta bo‘lgan joyda logarifm ostidagi ikkala eksponenta kichik va yo‘qotish 0 ga yaqin. Birinchi sinf yutqazgan joyda yo‘qotish deyarli chiziqli — taxminan $\max(z_2,0)-z_1$ kabi o‘sadi. Asta pastga tushadigan, lekin nolga yetmaydigan qavariq «vodiy» hosil bo‘ladi.
One-hot maqsad uchun CE’ning quyi chegarasi 0, lekin unga faqat to‘g‘ri logitning cheksiz ustunligida erishiladi. Agar model o‘qitish ma’lumotlarini ideal ajrata olsa, CE logitlar o‘sishi hisobiga kamayishda davom etadi va vaznlar cheksizlikka ketadi. Buni vaznlarni regulyarizatsiya qilish, erta to‘xtatish va belgilarni silliqlash bilan davolaydilar.
Belgilarni silliqlash
Belgilarni silliqlash (label smoothing) one-hot maqsadni tekis taqsimot bilan aralashmaga almashtiradi:
To‘g‘ri sinf $1-\varepsilon+\varepsilon/K$, qolganlarining har biri $\varepsilon/K$ oladi. Endi yo‘qotishning haqiqiy minimumi bor: $s=y^{\mathrm{LS}}$ bo‘lganda $s-y^{\mathrm{LS}}$ gradiyent nolga aylanadi. Agar barcha noto‘g‘ri logitlar teng bo‘lib, to‘g‘ri logit ulardan $m$ ga oldinda bo‘lsa, optimal ustunlik chekli:
Belgilarni silliqlash (Segedi va boshq., 2016, Inception-v3) logitlar o‘sishini cheklaydi va odatda kalibrlashni yaxshilaydi; u, masalan, asl Transformer’da $\varepsilon=0{,}1$ bilan ishlatilgan. Bahosi — model endi hech qachon 100% ishonchli emas, logitlaridagi sinflar o‘xshashligi haqidagi axborot qisman o‘chadi, bu esa distillyatsiyaga xalaqit berishi mumkin (Myuller va boshq., 2019).
CE va MSE: nega klassifikatorlar kross-entropiyada o‘qitiladi
Nega klassifikatorni ehtimolliklar va one-hot belgi orasidagi $\|s-y\|^2$ kvadratik xato bilan o‘qitmaslik kerak? Logitlar bo‘yicha gradiyentlarni solishtiramiz:
MSE gradiyentida Yakobi matritsasidan kelgan $s$ ko‘paytuvchi turadi. Agar model ishonch bilan xato qilsa — deyarli butun massa bitta noto‘g‘ri sinfda bo‘lsa, — gradiyent deyarli nolga aylanadi: kichik $s_k$ lar uchun $s_k$ ko‘paytuvchi kichik, noto‘g‘ri sevimli sinf uchun esa qavs deyarli nol. Model o‘zining qo‘pol xatosini «eshitmaydi». CE gradiyentida bunday ko‘paytuvchi yo‘q.
Ehtimolliklar va belgi orasidagi kvadratik xato Brayer bahosi (Brier score) deb ataladi va kalibrlash metrikasi sifatida foydali. Klassifikatorlarni o‘qitish uchun deyarli doim CE olinadi: u logitlar bo‘yicha qavariq va xatolarda to‘yinmaydi.
Til modellari va perpleksiya
Til modeli har bir $t$ pozitsiyada keyingi tokenning $V$ ta tokenli (o‘n va yuz minglab) lug‘at bo‘yicha taqsimotini bashorat qiladi. Bu $V$ ta sinfga klassifikatsiya, yo‘qotish esa pozitsiyalar bo‘yicha o‘rtacha kross-entropiya:
Perpleksiya — CE’ning eksponentasi, ya’ni $1/p_t$ qiymatlarning o‘rta geometrigi. Uni «variantlarning samarali soni» deb o‘qiydilar: ehtimollikni doim $k$ ta token orasida tekis taqsimlaydigan, to‘g‘ri token esa doim ular orasida bo‘lgan modelning perpleksiyasi aynan $k$. Til haqida hech narsa bilmaydigan model (lug‘at bo‘yicha tekis taqsimot) uchun $\mathcal L=\ln V$ va $\mathrm{PPL}=V$.
Perpleksiya tokenizatorga bog‘liq: bir xil matnda yirikroq tokenli model kamroq bashorat qiladi va har biri qiyinroq. Faqat bir xil lug‘atli modellarni bir xil ma’lumotlarda solishtirish mumkin — yoki belgi yoki bayt boshiga bitlarga o‘tish kerak.
Kodda
Asosiy qoida — CE’ni logitlardan log-softmax orqali hisoblash: $\mathrm{CE}=\operatorname{LSE}(z)-z_c$. «Avval softmax, keyin logarifm» yo‘li ishonchli xatolarda $\ln0=-\infty$ beradi: $(0;\,800;\,0)$ logitlar va to‘g‘ri birinchi sinf uchun sodda kod inf qaytaradi, barqarori esa aniq $800$ javobini.
pythonimport numpy as np
np.set_printoptions(precision=3)
def log_softmax(z):
z = z - z.max(axis=-1, keepdims=True) # barqarorlik: max-hiyla
return z - np.log(np.exp(z).sum(axis=-1, keepdims=True))
def cross_entropy(logits, y):
"""Batch bo‘yicha o‘rtacha CE. logits: (N, K), y: (N,) — sinf raqamlari."""
logp = log_softmax(logits)
return -logp[np.arange(len(y)), y].mean()
def cross_entropy_grad(logits, y):
# dCE/dz = (softmax(z) − onehot(y)) / N
s = np.exp(log_softmax(logits))
s[np.arange(len(y)), y] -= 1
return s / len(y)
z = np.array([[2.0, 1.0, 0.0]])
print(cross_entropy(z, np.array([0]))) # ≈ 0.4076
print(cross_entropy(z, np.array([2]))) # ≈ 2.4076 — ishonchli xato
print(cross_entropy_grad(z, np.array([0]))) # [[-0.335 0.245 0.09 ]]
print(cross_entropy(z + 1000, np.array([0]))) # ≈ 0.4076 — to‘lib ketishsiz
pythonimport torch
import torch.nn.functional as F
logits = torch.tensor([[2.0, 1.0, 0.0]], requires_grad=True)
target = torch.tensor([0]) # one-hot emas, sinf raqami
loss = F.cross_entropy(logits, target) # tensor(0.4076): log_softmax + NLL
loss.backward()
print(logits.grad) # tensor([[-0.3348, 0.2447, 0.0900]])
F.cross_entropy(logits, target, label_smoothing=0.1) # tensor(0.5076)
# Til modeli: logitlar (B, T, V), tokenlar (B, T)
B, T, V = 2, 5, 50000
lm_logits = torch.randn(B, T, V)
tokens = torch.randint(0, V, (B, T))
loss = F.cross_entropy(lm_logits.reshape(-1, V), tokens.reshape(-1))
print(torch.exp(loss)) # perpleksiya: tasodifiy logitlarda V tartibida
F.cross_entropy / nn.CrossEntropyLoss logitlarni (softmax’siz!) va long turidagi sinf raqamlarini — yoki logitlar bilan bir xil shakldagi ehtimolliklarni qabul qiladi. Foydali parametrlar: label_smoothing, weight (nomutanosiblikda sinflar vaznlari), ignore_index (masalan, padding). Sinflar ikkinchi o‘lchovda turishi kerak, shuning uchun $(B,T,V)$ shaklli logitlarni reshape bilan $(BT,V)$ ga aylantirish eng oson.
Ko‘p uchraydigan xatolar
CrossEntropyLossdan oldin softmax — ikki karra softmax: ehtimolliklar siqiladi, yo‘qotish nolgacha tusha olmaydi, gradiyentlar buziladi. Logitlarni bering.- log-softmax o‘rniga
np.log(softmax(z))— ishonchli xatoda ehtimollik 0 gacha yaxlitlanadi, yo‘qotishinf, gradiyent NaN bo‘ladi.clip(p, 1e-7, 1)«yamog‘i» cheksizlikdan qutqaradi, lekin gradiyentni kesadi; to‘g‘risi — LSE. - One-hot va sinf raqamlarini chalkashtirish. Keras’da bular turli funksiyalar:
categorical_crossentropyone-hot kutadi,sparse_categorical_crossentropy— raqamlarni. PyTorch’da raqamlarlongturida, ehtimoliy maqsadlar esa logitlar bilan bir xil shaklda bo‘lishi kerak. - O‘rtacha o‘rniga yig‘indi.
reduction='sum'bilan yo‘qotish va gradiyent batch o‘lchami bilan o‘sadi va tanlangan o‘qitish tezligi mos kelmay qoladi. - Sinflar nomutanosibligiga e’tiborsizlik. CE misollar bo‘yicha o‘rtachalaydi, shuning uchun kam uchraydigan sinf gradiyentga deyarli ta’sir qilmaydi. Sinflar vaznlari (
weight) yoki Focal Loss yordam beradi. - Solishtirib bo‘lmaydigan sonlar: natlar va bitlardagi yo‘qotishlar, turli tokenizatorli modellarning perpleksiyalari.
Boshqa formulalar bilan bog‘liqlik
- Softmax: $s$ ehtimolliklarni beradi; CE bilan birga — $s-y$ gradiyentni, $\mathrm{CE}=\operatorname{LSE}(z)-z_c$.
- BCE: bitta chiqishli $K=2$ holi: $-\bigl[y\ln\hat y+(1-y)\ln(1-\hat y)\bigr]$.
- Sigmoida: ikki sinf uchun softmax sigmoidaga keladi va CE BCE’ga aylanadi.
- Focal Loss: $-(1-p_t)^\gamma\ln p_t$ — oson misollarda susaytirilgan kross-entropiya.
- MSE: softmax ustida ishonchli xatolarda to‘yinadi (solishtirish haqidagi bo‘limga qarang).
- Adam: chuqur tarmoqlarda CE odatda shu optimizator bilan minimallashtiriladi.
Xulosa
1) One-hot belgi uchun $\mathrm{CE}=-\ln s_c$ — modelning to‘g‘ri javobdan hayrati; ma’lumotlar bo‘yicha o‘rtachasi — $N$ ga bo‘lingan minus log-haqqoniylik. 2) $H(p,q)=H(p)+\mathrm{KL}(p\,\|\,q)$: $q$ bo‘yicha minimum $q=p$ da. 3) Softmax bilan logitlar bo‘yicha gradiyent $s-y$: chegaralangan, xatolarda to‘yinmaydi va muvaffaqiyatda yo‘qoladi; CE logitlar bo‘yicha qavariq. 4) One-hot maqsadlarda minimumga erishib bo‘lmaydi — logitlar o‘sadi; belgilarni silliqlash optimumni chekli qiladi. 5) CE’ni logitlardan log-sum-exp orqali hisoblang; $e^{\mathrm{CE}}$ — perpleksiya.