Neyron tarmoq formulalari: qo‘llanma · Yo‘qotishlar — klassifikatsiya

Kategorial kross-entropiya

Klassifikatsiya va til modellarining asosiy yo‘qotishi. Uni mayda detallarigacha tahlil qilamiz: nega jarima — minus logarifm, kross-entropiya qanday qilib entropiya va KL-divergensiyaga ajraladi, nega softmax bilan juftlikda gradiyent shunchaki s − y, yo‘qotishlar landshafti qanday ko‘rinadi, belgilar nima uchun silliqlanadi va perpleksiya nima.

Javharbek Abdulatipov · 35 daq o‘qish
$$\mathrm{CE}=-\sum_{k=1}^{K}y_k\log\hat{y}_k$$

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.
Bir daqiqada asosiysi

$\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.

1-rasm. Yuqorida — $-\ln p$ jarima (ko‘k) va taqqoslash uchun $(1-p)^2$ kvadratik xato; pastda — ularning $p$ bo‘yicha hosilalari. Nuqtani torting. $p=0{,}665$ da yo‘qotish $0{,}408$ nat yoki $0{,}589$ bit, hosila $-1{,}504$. Ishonchli to‘g‘ri javob ($p=0{,}9$, jarima $0{,}105$) va ishonchli xato ($p=0{,}1$, jarima $2{,}303$) belgilangan.
Nimaga e’tibor berish kerak

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

$$\mathrm{CE}(y,\hat y)=-\sum_{k=1}^{K}y_k\ln\hat y_k$$
$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:

$$\mathrm{CE}=-\ln s_c=-z_c+\ln\sum_{j=1}^{K}e^{z_j}=\operatorname{LSE}(z)-z_c$$

Oxirgi ko‘rinish amalda asosiysi: yo‘qotish aniq softmax’siz hisoblanadi. $N$ ta misoldan iborat batch uchun yo‘qotishlar o‘rtachalanadi:

$$\mathcal L=-\frac1N\sum_{n=1}^{N}\ln s^{(n)}_{c_n}$$

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$
120,66510,408−0,335
210,245000,245
300,090000,090
Σ110,4080

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:

$$\arg\max_\theta\prod_{n=1}^{N}q_\theta(c_n\mid x_n)=\arg\min_\theta\Bigl(-\frac1N\sum_{n=1}^{N}\ln q_\theta(c_n\mid x_n)\Bigr)=\arg\min_\theta\mathcal L$$

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)=-\sum_k p_k\ln p_k,\qquad H(p,q)=-\sum_k p_k\ln q_k,\qquad\mathrm{KL}(p\,\|\,q)=\sum_k p_k\ln\frac{p_k}{q_k}$$
$$H(p,q)=H(p)+\mathrm{KL}(p\,\|\,q)$$

$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.

2-rasm. Uch sinfli simpleksda maqsad $p$ (qora nuqta) va bashorat $q$ (qizil); ikkala nuqtani ham surish mumkin. Bo‘yoq va sath chiziqlari — barcha mumkin bo‘lgan $q'$ bashoratlar uchun $\mathrm{KL}(p\,\|\,q')$ ($0{,}05$, $0{,}25$, $0{,}75$ sathlar): eng och rang $p$ nuqtaning o‘zida. O‘ngda — $H(p,q)=H(p)+\mathrm{KL}(p\,\|\,q)$ yoyilmasi. $p=(0{,}7;\,0{,}2;\,0{,}1)$ va $q=(0{,}25;\,0{,}5;\,0{,}25)$ da: $H(p)\approx0{,}802$, $\mathrm{KL}\approx0{,}446$, $H(p,q)\approx1{,}248$ nat ($1{,}800$ bit). $q$ ni $p$ ustiga qo‘ying — KL yo‘qoladi; $p$ ni uchga suring — $H(p)$ yo‘qoladi.
Nega KL ≥ 0

Botiq logarifm uchun Yensen tengsizligi bo‘yicha (yig‘indilar $p_k>0$ bo‘lgan $k$ lar bo‘yicha):

$$-\mathrm{KL}(p\,\|\,q)=\sum_k p_k\ln\frac{q_k}{p_k}\le\ln\sum_k p_k\frac{q_k}{p_k}=\ln\sum_{k:\,p_k>0}q_k\le\ln1=0$$

Tenglik faqat barcha $k$ uchun $q_k=p_k$ bo‘lganda bajariladi.

Bitlar yoki natlar

$\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.

$$\frac{\partial\,\mathrm{CE}}{\partial z_k}=\frac{\partial\operatorname{LSE}(z)}{\partial z_k}-\frac{\partial z_c}{\partial z_k}=s_k-y_k$$
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:

$$\frac{\partial\,\mathrm{CE}}{\partial z_k}=\sum_i\Bigl(-\frac{y_i}{s_i}\Bigr)s_i(\delta_{ik}-s_k)=-\sum_i y_i\delta_{ik}+s_k\sum_i y_i=s_k-y_k$$

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.
3-rasm. $(2;\,1;\,0)$ logitli va birinchi sinfi to‘g‘ri bo‘lgan bitta misol. O‘ngda ustunlar — $s$ bashorat, qora tokchalar — $y$ maqsad, strelkalar $s_k$ dan $y_k$ ga yo‘nalgan, sonlar — $s_k-y_k$ (qadam $z_k$ logitni $-\eta(s_k-y_k)$ ga siljitadi). «Qadam» ni bosing: logitlar $\eta=1$ bilan $z\leftarrow z-\eta(s-y)$ qoidasi bo‘yicha yangilanadi va yo‘qotish kamayadi: $0{,}408\to0{,}258\to0{,}187\to0{,}146$, 10 qadamdan keyin $0{,}058$. 3-sinfni to‘g‘ri qiling — yo‘qotish $2{,}408$, gradiyent esa $(0{,}665;\,0{,}245;\,-0{,}910)$ bo‘ladi.
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:

$$\mathrm{CE}(z_1,z_2)=\ln\bigl(e^{z_1}+e^{z_2}+1\bigr)-z_1=\ln\bigl(1+e^{z_2-z_1}+e^{-z_1}\bigr)$$

$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.

4-rasm. Chapda — tanlangan to‘g‘ri sinf uchun $\mathrm{CE}(z_1,z_2,0)$ sirt (uni aylantirish mumkin). O‘ngda — yuqoridan ko‘rinish: rang va sath chiziqlari — yo‘qotish, strelkalar — $z_1$ va $z_2$ bo‘yicha $-(s-y)$ antigradiyent. Qizil nuqtani surish mumkin. «Boshlash» $(2;\,1)$ nuqtadan $z_1$, $z_2$ bo‘yicha $0{,}8$ qadamli gradiyentli tushishni ishga tushiradi: yo‘qotish 5 qadamda $0{,}408\to0{,}132$, 10 qadamda $0{,}079$, 79 qadamda $0{,}013$, nuqta esa o‘ngga-pastga ketaveradi — minimumga yetib bo‘lmaydi.
Minimum yo‘q

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:

$$y^{\mathrm{LS}}_k=(1-\varepsilon)\,y_k+\frac{\varepsilon}{K}$$

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:

$$s_c=\frac{e^{m}}{e^{m}+K-1}=1-\varepsilon+\frac{\varepsilon}{K}\quad\Longrightarrow\quad m^{*}=\ln\Bigl(1+\frac{K(1-\varepsilon)}{\varepsilon}\Bigr)$$
5-rasm. Yo‘qotish va uning hosilasi to‘g‘ri logitning $m$ ustunligi funksiyalari sifatida (qolgan $K-1$ ta logit teng). Silliqlashsiz (punktir) yo‘qotish monoton kamayadi va faqat $m\to\infty$ da 0 ga intiladi, hosila doim manfiy. $K=3$ da $\varepsilon=0{,}1$ silliqlash bilan minimum paydo bo‘ladi: $m^*=\ln28\approx3{,}332$, bu yerda to‘g‘ri sinf ehtimolligi $0{,}9333$ maqsadga, yo‘qotish esa maqsad entropiyasi $H(y^{\mathrm{LS}})\approx0{,}291$ ga teng. $K=10$ da: $m^*\approx4{,}511$.

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:

$$\frac{\partial\,\mathrm{CE}}{\partial z}=s-y,\qquad\frac{\partial\,\|s-y\|^2}{\partial z}=J^{\top}\,2(s-y)=2\,s\odot\bigl((s-y)-\langle s-y,\,s\rangle\,\mathbf 1\bigr)$$

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.

6-rasm. Bir xil ma’lumotlar va bir xil «ishonchli noto‘g‘ri» boshlanish: vaznlar begona sinflar markazlariga yo‘nalgan, aniqlik $3{,}3\%$. Softmax-regressiyaning ikki nusxasi $0{,}5$ qadamli gradiyentli tushish bilan parallel o‘qitiladi — biri CE’da, ikkinchisi MSE’da. Boshlanishda logitlar bo‘yicha gradiyentning o‘rtacha normasi: CE’da $1{,}3$, MSE’da $0{,}13$. 10 qadamdan keyin aniqlik $85{,}6\%$ ga qarshi $5{,}6\%$, 50 qadamdan keyin — $93{,}3\%$ ga qarshi $25{,}6\%$; MSE faqat yuzinchi qadamga kelib yetib oladi ($90{,}0\%$), ikki yuzinchi qadamda esa ikkala model $95{,}6\%$ beradi.
Kvadratik xato baribir qachon ishlatiladi

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:

$$\mathcal L=-\frac1T\sum_{t=1}^{T}\ln p_\theta(x_t\mid x_{<t}),\qquad\mathrm{PPL}=e^{\mathcal L}=\Bigl(\prod_{t=1}^{T}\frac{1}{p_\theta(x_t\mid x_{<t})}\Bigr)^{1/T}$$

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$.

7-rasm. Gapning har bir tokenidagi $-\ln p_t$ yo‘qotish (o‘quv misoli: ehtimolliklar qo‘lda berilgan). To‘q sariq chiziq — o‘rtacha, ya’ni CE; punktir — $V=50\,000$ lug‘at uchun $\ln V$. $\lambda=1$ da: $\mathrm{CE}\approx1{,}086$, perpleksiya $\approx2{,}963$ — model o‘rtacha uchta variant orasida ikkilanadi; eng qimmati birinchi so‘z ($p=0{,}05$, jarima $3{,}00$). $\lambda$ slayderi logitlarni ko‘paytiradi: $\lambda=0{,}5$ da perpleksiya allaqachon $\approx263{,}5$, $\lambda=0$ da taqsimot tekis, $\mathrm{CE}=\ln50\,000\approx10{,}82$ va perpleksiya $50\,000$.
Perpleksiyalarni ehtiyotkorlik bilan solishtiring

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
PyTorch uchun tekshiruv ro‘yxati

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

  1. CrossEntropyLoss dan oldin softmax — ikki karra softmax: ehtimolliklar siqiladi, yo‘qotish nolgacha tusha olmaydi, gradiyentlar buziladi. Logitlarni bering.
  2. log-softmax o‘rniga np.log(softmax(z)) — ishonchli xatoda ehtimollik 0 gacha yaxlitlanadi, yo‘qotish inf, gradiyent NaN bo‘ladi. clip(p, 1e-7, 1) «yamog‘i» cheksizlikdan qutqaradi, lekin gradiyentni kesadi; to‘g‘risi — LSE.
  3. One-hot va sinf raqamlarini chalkashtirish. Keras’da bular turli funksiyalar: categorical_crossentropy one-hot kutadi, sparse_categorical_crossentropy — raqamlarni. PyTorch’da raqamlar long turida, ehtimoliy maqsadlar esa logitlar bilan bir xil shaklda bo‘lishi kerak.
  4. 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.
  5. 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.
  6. Solishtirib bo‘lmaydigan sonlar: natlar va bitlardagi yo‘qotishlar, turli tokenizatorli modellarning perpleksiyalari.
  • 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.

O‘zingizni tekshiring

1. Model to‘g‘ri sinfga $0{,}25$ ehtimollik berdi. CE nimaga teng?
2. Ehtimolliklar softmax’dan olingan bo‘lsa, CE’ning logitlar bo‘yicha gradiyenti nimaga teng?
3. Model 10 ta sinfda tekis javob beradi. CE va perpleksiya nimaga teng?
4. Qanday $q$ bashoratda $H(p,q)$ kross-entropiya eng kichik?
5. $K=3$ da $\varepsilon=0{,}1$ bilan belgilarni silliqlash. O‘qitish to‘g‘ri sinfning qaysi ehtimolligiga intiladi?