Materiallar · Amaliyot · ML / AI

Excel’da kross-entropiya: BCE va CE qadamma-qadam

Ishchi daftar tahlili: logit → sigmoid yoki softmax → yo‘qotish formulasi. Har bir varaq va har bir ustun nimani ko‘rsatadi, nega logitlarni formulaga to‘g‘ridan-to‘g‘ri berib bo‘lmaydi — va o‘zini tekshiradigan mashq. Daftarni yuklab olish mumkin.

Javharbek Abdulatipov · 35 daq o‘qish
4 varaq2 grafik3 topshiriq
$$\begin{gathered}\mathrm{BCE}=-\frac1n\sum_{i=1}^{n}\bigl[y_i\ln\hat y_i+(1-y_i)\ln(1-\hat y_i)\bigr]\\[6pt]\mathrm{CE}=-\sum_{k=1}^{K}y_k\ln\hat y_k\end{gathered}$$

Daftarda nima bor

XLSX
Ishchi daftar

4 varaq: BCE, Categorical CE, Mashq, Javoblar. Sariq kataklar — kirish qiymatlari, ularni o‘zgartirish mumkin: qolgani o‘zi qayta hisoblanadi. Excel, LibreOffice Calc va Google Sheets’da ochiladi (Fayl → Import).

Daftar istalgan klassifikator chiqishi ortida turgan bitta zanjirni o‘rgatadi: tarmoq logit beradi — $-\infty$ dan $+\infty$ gacha istalgan son, «tarjimon» (ikki sinf uchun sigmoid, $K$ sinf uchun softmax) uni ehtimollikka aylantiradi, va faqat ehtimollik yo‘qotish formulasiga tushadi. Har bir varaq bu zanjirni chapdan o‘ngga bosib o‘tadi va o‘rta qadam tashlab ketilsa nima bo‘lishini ko‘rsatadi.

VaraqIchida nima borNimani o‘rgatadi
BCE4 blok: 5 ta obyekt uchun hisob; o‘sha logitlar sigmoid’siz; jarimaning ikki tarmog‘i jadvali va grafigi; sigmoid logitni qanday siqadibinary cross-entropy, logitlardan NaN, sigmoid’ning roli
Categorical CE3 blok: 3 ta sinf uchun hisob; softmax’siz logitlar; $-\ln x$ jadvali va grafigicategorical cross-entropy, tubsiz manfiy loss, softmax’ning roli
Mashq3 topshiriq: uchta obyekt uchun BCE, softmax’dan keyingi CE, softmax qo‘ldao‘zingiz hisoblang; javob yonida ✓ yoki ✗ chiqadi (ruxsat etilgan farq ±0,005)
Javoblarbarcha topshiriqlarga namunaviy javoblar — formulalar bilanyechim yo‘lini solishtirish

Kataklar ranglari hamma joyda bir xil:

  • sariq — kirish qiymatlari: $y$ belgilar va $z$ logitlar, ularni o‘zgartirish mumkin
  • havorang — sigmoid yoki softmax «tarjimoni»: alohida qadam, yo‘qotish formulasining qismi emas
  • qizil — yo‘qotish formulasining o‘zi; qanchalik och bo‘lsa, qavslar ichida shunchalik chuqur
  • yashil va qizil zonalar 3-bloklarda — logarifmlar qayerda mavjud, qayerda yo‘q
Bu tahlilni qanday o‘qish kerak

Bo‘limlar daftar varaqlari va bloklari tartibida. Sahifadagi barcha sonlar fayldagi o‘sha kirish qiymatlaridan hisoblangan va u bilan uchinchi xonagacha mos keladi. Har bir varaq ostida — «Daftar brauzerda»: o‘sha hisob, uni shu yerning o‘zida o‘zgartirish mumkin. Logarifm hamma joyda natural: $\ln$.

BCE varag‘i: hisob qadamma-qadam

Varaqning 1-blokida binary masalaning beshta obyekti bor: $y=1$ («ha») yoki $y=0$ («yo‘q») belgi va tarmoq bergan $z$ logit. Hisob jadval ustunlari kabi uch qadamdan iborat: kirish → sigmoid → BCE formulasi.

$$\hat y_i=\sigma(z_i)=\frac{1}{1+e^{-z_i}},\qquad \mathrm{BCE}=-\frac1n\sum_{i=1}^{n}\bigl[y_i\ln\hat y_i+(1-y_i)\ln(1-\hat y_i)\bigr]$$
$y_i$
$i$ obyekt uchun to‘g‘ri javob: 1 yoki 0
$z_i$
logit — tarmoqning «xom» chiqishi, istalgan son
$\hat y_i=\sigma(z_i)$
«ha» javobining bashorat qilingan ehtimolligi
$n$
obyektlar soni, bu yerda $n=5$
$i$$y$logit $z$$\hat y=\sigma(z)$$y\ln\hat y$$(1-y)\ln(1-\hat y)$ikkalasining yig‘indisi
112,200,900−0,1050,000−0,105
20−1,400,1980,000−0,220−0,220
310,400,599−0,5130,000−0,513
40−0,600,3540,000−0,437−0,437
511,400,802−0,2200,000−0,220
barcha $i$ bo‘yicha Σ−1,496
$n$5
BCE = −Σ / n0,299
Har bir qator tahlili

2-qadam (havorang ustun): $\hat y=1/(1+e^{-z})$. 3-qadam (qizil ustunlar): ikki qo‘shiluvchi va ularning yig‘indisi. Har bir qatorda bitta qo‘shiluvchi $y$ yoki $1-y$ ko‘paytuvchi bilan nolga aylanadi.

Qator 1

$$\begin{gathered}\hat y_1 = \frac{1}{1+e^{-2{,}20}} = \frac{1}{1+0{,}1108} = 0{,}900\\y_1\ln\hat y_1 = 1\cdot\ln 0{,}900 = -0{,}105\\(1-y_1)\ln(1-\hat y_1) = 0\cdot\ln 0{,}100 = 0\end{gathered}$$

Qator 2

$$\begin{gathered}\hat y_2 = \frac{1}{1+e^{-(-1{,}40)}} = \frac{1}{1+4{,}0552} = 0{,}198\\y_2\ln\hat y_2 = 0\cdot\ln 0{,}198 = 0\\(1-y_2)\ln(1-\hat y_2) = 1\cdot\ln 0{,}802 = -0{,}220\end{gathered}$$

Qator 3

$$\begin{gathered}\hat y_3 = \frac{1}{1+e^{-0{,}40}} = \frac{1}{1+0{,}6703} = 0{,}599\\y_3\ln\hat y_3 = 1\cdot\ln 0{,}599 = -0{,}513\\(1-y_3)\ln(1-\hat y_3) = 0\cdot\ln 0{,}401 = 0\end{gathered}$$

Qator 4

$$\begin{gathered}\hat y_4 = \frac{1}{1+e^{-(-0{,}60)}} = \frac{1}{1+1{,}8221} = 0{,}354\\y_4\ln\hat y_4 = 0\cdot\ln 0{,}354 = 0\\(1-y_4)\ln(1-\hat y_4) = 1\cdot\ln 0{,}646 = -0{,}437\end{gathered}$$

Qator 5

$$\begin{gathered}\hat y_5 = \frac{1}{1+e^{-1{,}40}} = \frac{1}{1+0{,}2466} = 0{,}802\\y_5\ln\hat y_5 = 1\cdot\ln 0{,}802 = -0{,}220\\(1-y_5)\ln(1-\hat y_5) = 0\cdot\ln 0{,}198 = 0\end{gathered}$$

Barcha qatorlar yig‘indisi $\Sigma = -1{,}496$, obyektlar $n=5$ ta, shuning uchun $\mathrm{BCE}=-\Sigma/n = -(-1{,}496)/5 = 0{,}299$. Varaqning oxirgi kulrang qatori xuddi shuni boshqa yo‘l bilan — ikkala tarmoq bo‘yicha SUMPRODUCT orqali hisoblaydi va u ham $0{,}299$ beradi.

Har bir qatorda bitta qo‘shiluvchi tirik

$y=1$ da $\ln\hat y$, $y=0$ da — $\ln(1-\hat y)$ qoladi. Ya’ni qator jarimasi doim $-\ln$(model to‘g‘ri javobga bergan ehtimollik) ga teng. 1-blokda bu ehtimolliklar $0{,}900$, $0{,}802$, $0{,}599$, $0{,}646$ va $0{,}802$. 2- va 5-qatorlarning jarimasi bir xil, $-0{,}220$: $-1{,}4$ va $1{,}4$ logitlar simmetrik, $\sigma(-z)=1-\sigma(z)$ esa.

Sinab ko‘ring (varaq taklif qilganidek)

  • 1-qator logiti: $2{,}2 \to 6$. U holda $\hat y_1 = 0{,}998$, qator jarimasi $0{,}002$ — deyarli nol, BCE esa $0{,}299$ dan $0{,}279$ gacha tushadi.
  • 1-qator logiti: $y=1$ da $2{,}2 \to -3$. U holda $\hat y_1 = 0{,}047$, qator jarimasi $3{,}049$ — qolgan to‘rtta qatorning birgalikdagi jarimasidan ($1{,}391$) katta. BCE $0{,}888$ gacha o‘sadi: bitta ishonchli xato qolgan hammasidan og‘irroq.

Sigmoid’siz logitlar

2-blok o‘sha belgilar va logitlarni olib, logitlarni BCE formulasiga to‘g‘ridan-to‘g‘ri beradi — go‘yo $z$ allaqachon ehtimollik. BCE ning ikki tarmog‘i bor, $\ln z$ va $\ln(1-z)$, va hisobda ikkalasi ham mavjud bo‘lishi kerak — keyin nolga ko‘paytiriladigani ham.

$i$$y$$z$$\ln z$$\ln(1-z)$$y\ln z+(1-y)\ln(1-z)$
112,20,788yo‘qNaN
20−1,4yo‘q0,875NaN
310,4−0,916−0,511−0,916 (tasodifan $(0;1)$ da)
40−0,6yo‘q0,470NaN
511,40,336yo‘qNaN

Qatorlar bo‘yicha nima chiqdi:

  • 1-qator, $z=2{,}2$: $\ln 2{,}2 \approx 0{,}788 > 0$ — teskari ishorali «jarima», $\ln(1-2{,}2)=\ln(-1{,}2)$ esa mavjud emas.
  • 2- va 4-qatorlar, $z<0$: $\ln z$ mavjud emas; 5-qator, $z=1{,}4$: $\ln(1-z)$ mavjud emas.
  • Faqat 3-qator ($z=0{,}4$) «tasodifan» $(0;1)$ ga tushdi va son berdi: $\ln 0{,}4\approx-0{,}916$. Lekin u ham ma’nosiz: $0{,}4$ — logit, ehtimollik emas; bu yerdagi haqiqiy ehtimollik $\sigma(0{,}4)=0{,}599$.
Nega nol ko‘paytuvchi qutqarmaydi

1-qatorda ikkinchi tarmoq $1-y=0$ ga ko‘paytiriladi va uni hisoblamasa ham bo‘ladigandek tuyuladi. Lekin kompyuter avval logarifmni hisoblaydi, keyin ko‘paytiradi: suzuvchi nuqtali sonlarda $\ln(-1{,}2)=\mathrm{NaN}$, $\ln 0 = -\infty$, $0\cdot\mathrm{NaN}=\mathrm{NaN}$ va $0\cdot(-\infty)=\mathrm{NaN}$. Excel’da bu #NUM! xatosi bo‘lib ko‘rinadi, shuning uchun varaq uni IFERROR bilan ushlaydi va «NaN» deb yozadi.

Bitta shunday qator yetarli: NaN li o‘rtacha — NaN, gradiyentlar — NaN, optimizator qadamidan keyin tarmoq vaznlari ham NaN. O‘qitish «yomon» emas, u o‘lik. Blok natijasi: sigmoid’siz BCE — NaN, sigmoid bilan BCE — 0,299.

Sigmoid ikkala muammoni birdan hal qiladi: $\hat y\in(0;1)$ va $1-\hat y\in(0;1)$, shuning uchun ikkala logarifm doim mavjud va ikkalasi $\le 0$ — demak, har bir jarima $\ge 0$.

Daftar brauzerda

Varaqdagi hisobning o‘zi: sariq kataklarni o‘zgartiring — qolgani qayta hisoblanadi.

Ikki tarmoq va ikki devor

3-blok nega shundayligini tushuntiradi: jadval BCE ning ikkala tarmog‘iga turli $x$ larni qo‘yadi — ehtimolliklarni ham, $(0;1)$ dan tashqaridagi «logit» qiymatlarni ham. Varaqdagi sariq $x$ larni o‘zgartirish mumkin, jadval ostidagi grafik (varaq uni $\hat y$ ning $0{,}02$ dan $0{,}98$ gacha qiymatlari uchun chizadi) ikkala tarmoqni to‘liq ko‘rsatadi.

$x$$y=1$ da: $-\ln x$$y=0$ da: $-\ln(1-x)$zona
−1yo‘q−0,693logit
0yo‘q0,000logit
0,014,6050,010ehtimollik
0,12,3030,105ehtimollik
0,50,6930,693ehtimollik
0,90,1052,303ehtimollik
0,990,0104,605ehtimollik
10,000yo‘qlogit
2−0,693yo‘qlogit
10−2,303yo‘qlogit

BCE ning ikki «devori» bor. $y=1$ tarmog‘i — $-\ln x$ jarima — nol yonida cheksizlikka ketadi: to‘g‘ri javob «ha» bo‘lganda ishonchli «yo‘q». $y=0$ tarmog‘i — $-\ln(1-x)$ jarima — bir yonida cheksizlikka ketadi. Devorlar orasida, $x=0{,}5$ nuqtada, ikkala tarmoq bir xil jarima beradi: $\ln 2 \approx 0{,}693$ — to‘liq ishonchsizlik bahosi.

$(0;1)$ dan tashqarida hammasi buziladi: $x\le0$ da $\ln x$ yo‘q, $x\ge1$ da $\ln(1-x)$ yo‘q, $x>1$ da $y=1$ tarmog‘i manfiy jarima beradi ($x=10$ da u $-\ln 10\approx-2{,}303$ ga teng va tubsiz pasayishda davom etadi), $x<0$ da esa xuddi shunday $y=0$ tarmog‘i «buziladi»: $x=-1$ da uning jarimasi $-\ln 2\approx-0{,}693$. Manfiy loss’ga ruxsat berilgan tarmoq shunchaki logitni kattalashtiradi.

Nuqtani torting: yashil yo‘lak — sigmoid tushadigan ehtimolliklar; qizil yo‘laklar — logitlar sohasi. Almashtirgich qaysi tarmoq jarima hisoblanishini tanlaydi.

Sigmoid logitni qanday siqadi

4-blok «tarjimon»ning o‘zini ko‘rsatadi. Varaq ustunlari $\hat y = 1/(1+e^{-z})$ formulasining oraliq qadamlari: avval $e^{-z}$, keyin $\hat y$, keyin $1-\hat y$.

$z$$e^{-z}$$\hat y=\dfrac{1}{1+e^{-z}}$$1-\hat y$
−1022026,46580,00001,0000
−320,08550,04740,9526
−12,71830,26890,7311
01,00000,50000,5000
10,36790,73110,2689
30,04980,95260,0474
100,00001,00000,0000

Nega natija doim $(0;1)$ da: istalgan $z$ da $e^{-z}>0$, demak maxraj $1+e^{-z}>1$ va $0<\hat y<1$. $z=0$ da aynan $\hat y=0{,}5$ — to‘liq ishonchsizlik; katta musbat $z$ lar ishonchli «ha», katta manfiylari — ishonchli «yo‘q» beradi. Jadval simmetrik: $\sigma(-z)=1-\sigma(z)$, shuning uchun $z$ va $-z$ qatorlarida $\hat y$ va $1-\hat y$ ustunlari o‘rin almashadi.

Logitni suring: egri chiziq — $\sigma(z)$, pastda — varaq ustunlaridagi kabi oraliq qiymatlar.
Chuqurroq: «−1000 mi, +1000 mi» — matematikada, lekin kompyuterda emas

Varaq istalgan logitda $\hat y$ qat’iy 0 va 1 orasida qoladi deydi. Matematik jihatdan shunday. Lekin suzuvchi nuqtali sonlarda $z \gtrsim 36{,}74$ da (float64; float32 da allaqachon $z \gtrsim 16{,}64$ da) $e^{-z}$ qo‘shiluvchi birning yonida yo‘qoladi, $\hat y$ aynan $1$ gacha, $1-\hat y$ esa aynan $0$ gacha yaxlitlanadi. $y=0$ da $-\ln(1-\hat y)$ jarima $+\infty$ ga aylanadi.

Boshqa tomondan, $z<-709{,}78$ da $e^{-z}$ to‘lib ketadi: varaqning o‘zida $z=-1000$ qo‘yilsa, butun qatorda #NUM! xatosi chiqadi, $z=1000$ esa aynan $\hat y=1$ va $1-\hat y=0$ beradi.

Shuning uchun kutubxonalar sigmoid va logarifmni alohida hisoblamaydi. Ular jarimani darhol logitdan barqaror ko‘rinishda hisoblaydi: $\max(z,0)-yz+\ln\bigl(1+e^{-|z|}\bigr)$ — nn.BCEWithLogitsLoss shunday qiladi. Bu $-[y\ln\sigma(z)+(1-y)\ln(1-\sigma(z))]$ bilan aynan bir xil son, faqat to‘lib ketishlarsiz.

BCE varag‘i xulosasi

  • BCE — bu ikki sinf uchun kross-entropiya, bitta $\hat y$ soni orqali yozilgan: «ha» ehtimolligi $\hat y$, «yo‘q» ehtimolligi — $1-\hat y$.
  • Formula faqat $\hat y\in(0;1)$ ni biladi. Logitlar butun to‘g‘ri chiziqda yashaydi: to‘g‘ridan-to‘g‘ri berilsa, NaN yoki teskari ishorali jarima beradi.
  • Sigmoid istalgan logitni $(0;1)$ ga siqadi. Ikki sinf uchun softmax aynan sigmoid beradi: $\mathrm{softmax}(z_1,z_2)_1=\sigma(z_1-z_2)$ — bu bitta g‘oya.
  • $n$ ga bo‘lish faqat loss batch o‘lchamiga bog‘liq bo‘lmasligi uchun kerak; jarima shaklini $-\ln$ belgilaydi.
  • Kodda: nn.BCEWithLogitsLoss logitlarni kutadi (sigmoid’ni o‘zi bajaradi, sonli jihatdan barqarorroq), nn.BCELoss — tayyor ehtimolliklarni.
Pythonimport numpy as np

# BCE varag‘idagi belgilar va logitlar
y = np.array([1, 0, 1, 0, 1])
z = np.array([2.2, -1.4, 0.4, -0.6, 1.4])

# 2-qadam: sigmoid; 3-qadam: BCE formulasi
p = 1 / (1 + np.exp(-z))
bce = -np.mean(y * np.log(p) + (1 - y) * np.log(1 - p))
print(round(bce, 3))       # 0.299

# xuddi shu logitlardan, barqaror (nn.BCEWithLogitsLoss kabi)
s = np.maximum(z, 0) - z * y + np.log1p(np.exp(-np.abs(z)))
print(round(s.mean(), 3))  # 0.299

# PyTorch:
# nn.BCEWithLogitsLoss() logitlarni kutadi
# nn.BCELoss() ehtimolliklarni kutadi

Categorical CE varag‘i: hisob qadamma-qadam

Ikkinchi varaq — $K=3$ sinf uchun o‘sha zanjir. Kirishda belgilar «bitta issiq» vektor ko‘rinishida (one-hot: $y_k=1$ faqat to‘g‘ri sinfda, bu yerda $k=2$) va uchta logit. Tarjimon — softmax: u logitlarni yig‘indisi 1 ga teng ehtimolliklarga aylantiradi.

$$\hat y_k=\mathrm{softmax}(z)_k=\frac{e^{z_k}}{\sum_{j=1}^{K}e^{z_j}},\qquad \mathrm{CE}=-\sum_{k=1}^{K}y_k\ln\hat y_k$$
$z_k$
$k$ sinf logiti
$\hat y_k=\dfrac{e^{z_k}}{\sum_j e^{z_j}}$
softmax: $k$ sinf ehtimolligi
$y_k$
to‘g‘ri sinfda 1, qolganlarida 0
$K$
sinflar soni, bu yerda $K=3$
$k$$y$logit $z$$\hat y=\mathrm{softmax}(z)$$\ln\hat y$$y\ln\hat y$
1010,231−1,4640,000
2120,629−0,464−0,464
300,50,140−1,9640,000
$\Sigma\hat y$1,000Σ−0,464
CE = −Σ0,464

Havorang ustun va $\ln\hat y$ ustuni sonlari qanday hosil bo‘ladi:

1. Logitlarning eksponentalari va ularning yig‘indisi:

$$\begin{gathered}e^{1}=2{,}718\\e^{2}=7{,}389\\e^{0{,}5}=1{,}649\\\sum_j e^{z_j} = 11{,}756\end{gathered}$$

2. Har bir eksponentani yig‘indiga bo‘lamiz — bu softmax. Varaqdagi $\Sigma\hat y = 1$ tekshiruvi istalgan logitlarda doim bajariladi:

$$\begin{gathered}\hat y_1=\frac{2{,}718}{11{,}756}=0{,}231\\\hat y_2=\frac{7{,}389}{11{,}756}=0{,}629\\\hat y_3=\frac{1{,}649}{11{,}756}=0{,}140\end{gathered}$$

3. Ehtimolliklar logarifmlari. $\ln\hat y_k = z_k - \ln\sum_j e^{z_j}$ ekanini va $\ln 11{,}756 = 2{,}464$ ni payqash qulay. Demak, uchala logarifm — logitlardan bitta va o‘sha sonni ayirish:

$$\begin{gathered}\ln\hat y_1=1-2{,}464=-1{,}464\\\ln\hat y_2=2-2{,}464=-0{,}464\\\ln\hat y_3=0{,}5-2{,}464=-1{,}964\end{gathered}$$

4. $y\ln\hat y$ ustunida bitta qo‘shiluvchi qoladi — $y=1$ bo‘lgani. Demak, CE — to‘g‘ri sinf ehtimolligining $-\ln$ i (varaqning kulrang qatori aynan shuni tekshiradi):

$$\mathrm{CE} = -(0\cdot\ln\hat y_1 + 1\cdot\ln\hat y_2 + 0\cdot\ln\hat y_3) = -\ln 0{,}629 = 0{,}464$$

Bundan CE faqat to‘g‘ri sinf logiti qolganlari fonida qanchalik ajralib turishiga bog‘liqligi ko‘rinadi: $\mathrm{CE}=\ln\sum_j e^{z_j}-z_{\text{to‘g‘ri}}$.

Sinab ko‘ring (varaq taklif qilganidek)

  • 2-sinf logiti: $2 \to 5$. U holda $\hat y_2=0{,}971$ va $\mathrm{CE}=0{,}029$ — deyarli nol.
  • 2-sinf logiti: $2 \to -2$. U holda $\hat y_2=0{,}030$ va $\mathrm{CE}=3{,}505$ — katta jarima. Ikkala holda ham $\hat y$ yig‘indisi 1 ga teng qoladi.

Softmax’siz logitlar

2-blok yana logitlarni to‘g‘ridan-to‘g‘ri beradi — endi $\mathrm{CE}=-\sum_k y_k\ln z_k$ ga. Bu yerda uchala logit musbat bo‘lib chiqdi, shuning uchun logarifmlar mavjud, lekin natija xatodan ham yomon: softmax’siz CE $= -\ln 2 \approx -0{,}693$ — manfiy loss, softmax bilan esa CE $= 0{,}464$.

$k$$y$$z$$\ln z$$y\ln z$
1010,0000,000
2120,6930,693
300,5−0,6930,000
softmax’siz CE−0,693

Haqiqiy ehtimollik taqsimotlarining kross-entropiyasi manfiy bo‘lmaydi: $\mathrm{CE}(y,\hat y)=H(y)+\mathrm{KL}(y\,\|\,\hat y)\ge 0$, one-hot belgi uchun esa bu shunchaki 1 dan katta bo‘lmagan ehtimollikning $-\ln$ i. Manfiy son — formulaga ehtimolliklar emas, boshqa narsa tushganining aniq belgisi.

  • To‘g‘ri sinf logiti $\to 100$: softmax’siz loss $= -\ln 100 \approx -4{,}605$, $1000$ da — $-6{,}908$, va hokazo, tubi yo‘q. Tarmoq faqat shu logitni kattalashtirishni o‘rganadi. Softmax bilan loss pastdan 0 ga taqaladi.
  • To‘g‘ri sinf logiti $\to -1$: softmax’siz — xato, manfiy sonning logarifmi yo‘q. Softmax bilan hammasi hisoblanadi, faqat loss katta.

Daftar brauzerda

Varaqdagi hisobning o‘zi: sariq kataklarni o‘zgartiring — qolgani qayta hisoblanadi.

Nega faqat $(0;\,1]$

Ikkinchi varaqning 3-bloki — BCE dagi o‘sha «xarita», lekin bitta $-\ln x$ tarmog‘i bilan: CE faqat to‘g‘ri sinf ehtimolligini jarimalaydi. Yashil zona — $(0;1]$: nol yonidagi juda katta jarimadan $x=1$ dagi nol jarimagacha. Qizil zonalar — logitlar: $x\le 0$ da logarifm yo‘q, $x>1$ da jarima manfiy va tubsiz pasayadi.

$x$$-\ln x$zona
−1yo‘qlogit
0yo‘qlogit
0,014,605ehtimollik
0,12,303ehtimollik
0,50,693ehtimollik
0,90,105ehtimollik
10,000ehtimollik
2−0,693logit
10−2,303logit
1000−6,908logit
Nuqtani torting: $-\ln x$ egri chizig‘i va uning zonalari. BCE dan farqli ravishda devor bitta — nol yonida.

Categorical CE varag‘i xulosasi

  • CE formulasi faqat ehtimolliklarni biladi: yig‘indisi 1 ga teng, 0 dan 1 gacha sonlar.
  • Logitlar — $-\infty$ dan $+\infty$ gacha istalgan sonlar. CE ga to‘g‘ridan-to‘g‘ri berilsa, yo xato, yo tubsiz manfiy loss beradi.
  • Softmax — tarjimon: istalgan logitlarni yig‘indisi 1 bo‘lgan $(0;1)$ ga siqadi. Shuning uchun CE va softmax doim juft bo‘lib yuradi.
  • Kodda softmax’ni kim bajarishini qarang: nn.CrossEntropyLoss logitlarni kutadi (softmax ichida), nn.NLLLoss — tayyor log-ehtimolliklarni (log_softmax).
Pythonimport numpy as np

# Categorical CE varag‘idagi logitlar; to‘g‘ri sinf k = 2 (indeks 1)
z = np.array([1.0, 2.0, 0.5])
k = 1

lse = np.log(np.sum(np.exp(z)))   # ln Σ e^z
p = np.exp(z - lse)               # 2-qadam: softmax
print(np.round(p, 3), round(p.sum(), 3))
# [0.231 0.629 0.14 ] 1.0
print(round(-np.log(p[k]), 3))    # 0.464
print(round(lse - z[k], 3))       # 0.464: CE = ln Σ e^z − z_k

# PyTorch:
# nn.CrossEntropyLoss() logitlarni kutadi (softmax ichida)
# nn.NLLLoss() log-ehtimolliklarni kutadi (log_softmax)
Chuqurroq: nega BCE — ikki sinf uchun CE

$z_1, z_2$ logitli ikki sinfni olaylik. Softmax $\hat y_1=\dfrac{e^{z_1}}{e^{z_1}+e^{z_2}}=\dfrac{1}{1+e^{-(z_1-z_2)}}=\sigma(z_1-z_2)$ va $\hat y_2=1-\hat y_1$ beradi.

$(y,\,1-y)$ one-hot belgili CE $-[y\ln\hat y_1+(1-y)\ln(1-\hat y_1)]$ ga teng — aynan BCE qo‘shiluvchisi. Demak, bitta $z$ logitli binary klassifikator — $(z, 0)$ juftligi bo‘yicha softmax, BCE esa CE ning xususiy holi.

O‘zini tekshiradigan mashq

«Mashq» varag‘ida kalkulyator uchun uchta topshiriq bor: javobni sariq katakka yozing — yonida ✓ yoki ✗ chiqadi. Ruxsat etilgan farq — $\pm 0{,}005$, logarifm natural. Quyida o‘sha topshiriqlar sahifaning o‘zida; sonlarni vergul yoki nuqta bilan yozish mumkin.

Ruxsat etilgan farqga sig‘ish uchun oraliq qiymatlarni verguldan keyin uch xonadan qo‘polroq yaxlitlamang. Qo‘shiluvchi javobi — manfiy son (ehtimollik logarifmi), BCE va CE esa musbat: oxirida minus turadi.

Javoblar va tahlil («Javoblar» varag‘i)

1-topshiriq. Har bir qo‘shiluvchi — to‘g‘ri javob ehtimolligining $\ln$ i: $y=1$ da bu $\ln\hat y$, $y=0$ da — $\ln(1-\hat y)$.

$$\begin{gathered}i=1:\ 1\cdot\ln 0{,}8 = -0{,}223\\i=2:\ 1\cdot\ln(1-0{,}3) = \ln 0{,}7 = -0{,}357\\i=3:\ \ln 0{,}5 = -0{,}693\end{gathered}$$
$$\mathrm{BCE} = -\frac{(-0{,}223) + (-0{,}357) + (-0{,}693)}{3} = 0{,}424$$

2-topshiriq. Ehtimolliklar allaqachon softmax’dan keyin; faqat to‘g‘ri $k=3$ sinf qo‘shiluvchisi qoladi.

$$\begin{gathered}k=1:\ 0\cdot\ln 0{,}1 = 0\\k=2:\ 0\cdot\ln 0{,}3 = 0\\k=3:\ 1\cdot\ln 0{,}6 = -0{,}511\end{gathered}$$
$$\mathrm{CE} = -(-0{,}511) = 0{,}511$$

3-topshiriq. $z=(0;\,1;\,2)$ logitlar uchun softmax qo‘lda, to‘g‘ri sinf $k=3$.

$$\begin{gathered}e^0=1{,}000\\e^1=2{,}718\\e^2=7{,}389\\\sum = 11{,}107\end{gathered}$$
$$\hat y = \Bigl(\tfrac{1{,}000}{11{,}107};\ \tfrac{2{,}718}{11{,}107};\ \tfrac{7{,}389}{11{,}107}\Bigr) = (0{,}090;\ 0{,}245;\ 0{,}665)$$
$$\mathrm{CE} = -\ln\hat y_3 = -\ln 0{,}665 = 0{,}408$$

Logitlar orqali tekshiruv: $\mathrm{CE}=\ln\sum_j e^{z_j}-z_3=\ln 11{,}107-2=0{,}408$.

Ko‘p uchraydigan xatolar

  • Ehtimollik kutayotgan formulaga logitlar. Tarmoqning «xom» chiqishi ustidan nn.BCELoss yoki nn.NLLLoss — bu ikkala varaqning 2-bloklari: NaN yoki manfiy loss.
  • Ikki karra tarjimon. nn.BCEWithLogitsLoss oldidan sigmoid yoki nn.CrossEntropyLoss oldidan softmax: funksiya uni ikkinchi marta qo‘llaydi. Xato chiqmaydi, lekin ehtimolliklar o‘rtaga siqiladi, loss deyarli o‘zgarmay qoladi va o‘qitish to‘xtab qoladi.
  • Boshqa logarifm. Formulalarda — natural $\ln$. Kalkulyatorda log tugmasi ko‘pincha $\log_{10}$ ni bildiradi: $\ln 0{,}8\approx-0{,}223$ o‘rniga $\log_{10}0{,}8\approx-0{,}097$.
  • Yo‘qolgan minus. Ehtimollik logarifmi manfiy, shuning uchun «ikkalasining yig‘indisi» ustuni manfiy, BCE va CE esa musbat: $\mathrm{BCE}=-\Sigma/n$.
  • Adashtirilgan tarmoq. $y=0$ da jarima $-\ln\hat y$ emas, $-\ln(1-\hat y)$: «yo‘q» javobining ehtimolligi jarimalanadi.
  • Juda erta yaxlitlash. $e^{z}$ yoki $\hat y$ bir-ikki xonagacha yaxlitlansa, javob $\pm0{,}005$ farqdan chiqib ketadi.

Xulosa

BCE (2 sinf)Categorical CE ($K$ sinf)
tarmoq chiqishibitta $z$ logit$K$ ta logit $z_1,\dots,z_K$
tarjimon$\sigma(z)=1/(1+e^{-z})$$\mathrm{softmax}(z)_k=e^{z_k}/\sum_j e^{z_j}$
obyekt jarimasi$-[y\ln\hat y+(1-y)\ln(1-\hat y)]$$-\sum_k y_k\ln\hat y_k=-\ln\hat y_{\text{to‘g‘ri}}$
daftardagi misol$\mathrm{BCE}=0{,}299$ (5 obyekt)$\mathrm{CE}=0{,}464$ (1 obyekt)
tarjimonsizNaN$-\ln 2\approx-0{,}693$ va undan past
PyTorchBCEWithLogitsLoss (logitlar)CrossEntropyLoss (logitlar)
  • Logit → tarjimon → formula: yo‘qotish formulasi faqat ehtimolliklarni tushunadi.
  • Obyekt jarimasi — doim to‘g‘ri javob ehtimolligining $-\ln$ i: ishonchli to‘g‘ri javobda $0$, to‘liq ishonchsizlikda $\ln 2\approx0{,}693$, ishonchli xatoda $+\infty$.
  • Funksiyalarning o‘zi haqida batafsil — qo‘llanmada: BCE, kross-entropiya, sigmoid, softmax.

O‘zingizni tekshiring

1. Model $\hat y=0{,}9$ berdi, to‘g‘ri javob esa $y=0$. Qator qo‘shiluvchisi («ikkalasining yig‘indisi» ustuni) nimaga teng?
2. Nega BCE ga $z=2{,}2$ logitni to‘g‘ridan-to‘g‘ri berib bo‘lmaydi?
3. Logitlar $(1;\,2;\,0{,}5)$, to‘g‘ri sinf — ikkinchisi. CE nimaga teng?
4. Softmax’siz CE $-0{,}693$ chiqdi. Bu nimani bildiradi?
5. nn.CrossEntropyLoss kirishga nimani kutadi?
6. $(1;\,2;\,0{,}5)$ logitlar uchun $\ln\hat y_2-\ln\hat y_1$ nimaga teng?

← Materiallar