Neyron tarmoq formulalari: qo‘llanma · Aktivatsiya funksiyalari

Softmax: logitlardan ehtimolliklarga

Neyron tarmoqning xom ballarini K ta sinf bo‘yicha ehtimolliklar taqsimotiga aylantiradigan funksiya. Uni mayda detallarigacha tahlil qilamiz: eksponenta nima uchun kerak, nega faqat logitlar ayirmalari muhim, harorat nima qiladi, diag(s) − ssᵀ Yakobi matritsasi qanday tuzilgan, nega softmax silliq maksimumning gradiyenti va kodda NaN olmaslik uchun nima qilish kerak.

Javharbek Abdulatipov · 35 daq o‘qish
$$\operatorname{softmax}(z)_i=s_i=\frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}}$$

U nima uchun kerak

$K$ ta sinfli klassifikator oxirida $K$ ta son chiqaradi — logitlar (logits): masalan, «mushuk», «it», «qush» uchun $(2;\,1;\,0)$. Bular shunchaki ballar: ular manfiy bo‘lishi mumkin, yig‘indisi 1 ga teng emas va ulardan modelning qanchalik ishonchli ekani ko‘rinmaydi. Softmax bunday vektorni ehtimolliklar taqsimotiga aylantiradi: barcha sonlar musbat, yig‘indisi 1, tartib esa saqlanadi — balli katta bo‘lganning ehtimolligi ham katta.

U qayerda uchraydi:

  • ko‘p sinfli klassifikator chiqishi — logistik regressiyadan ResNet va ViT’gacha: $\hat y=\operatorname{softmax}(Wx+b)$;
  • til modellari — LLM har qadamda lug‘atdagi barcha tokenlar (o‘n va yuz minglab) uchun logit chiqaradi, softmax ulardan keyingi token taqsimotini yasaydi, harorat esa generatsiyaning «jasoratini» boshqaradi;
  • transformerlardagi attention (diqqat) mexanizmi — $\operatorname{softmax}(QK^\top/\sqrt d)$ vaznlari qaysi tokenlarga qarashni hal qiladi;
  • ekspertlar aralashmasi (MoE) — marshrutlovchi tokenni ekspertlar orasida softmax orqali taqsimlaydi;
  • mustahkamlab o‘qitish — Bolsman siyosati $a$ harakatni $e^{Q(a)/T}$ ga proporsional ehtimollik bilan tanlaydi;
  • statistik fizika — bu Bolsman — Gibbs taqsimoti $p_i\propto e^{-E_i/(kT)}$; «harorat» so‘zi ham shu yerdan.
Bir daqiqada asosiysi

$s_i=e^{z_i}/\sum_j e^{z_j}$: eksponenta barcha sonlarni musbat qiladi va ayirmalarni nisbatlarga aylantiradi, yig‘indiga bo‘lish esa normallaydi. Barcha logitlarga bitta o‘zgarmas qo‘shilsa, softmax o‘zgarmaydi (shuning uchun kodda maksimum ayiriladi), uning hosilasi — $\operatorname{diag}(s)-ss^\top$ matritsa, ikki sinf uchun esa u logitlar ayirmasining sigmoidasi bilan ustma-ust tushadi.

Intuitsiya: kuchaytirilgan ovoz berish

Sinflarni nomzodlar, logitlarni esa ularning ballari deb tasavvur qiling. «Ovozlar» ulushini olish uchun ballarni musbat qilish va normallash kerak. Shunchaki yig‘indiga bo‘lib bo‘lmaydi: ballar manfiy, yig‘indi esa nol bo‘lishi mumkin. Eksponenta ikkala muammoni hal qiladi: $e^{z}$ doim musbat, ballar ayirmasi esa nisbatga aylanadi: har bir birlik ustunlik nomzod ulushini raqibnikidan $e\approx2{,}718$ marta katta qiladi.

Chapdagi logit-ustunlarning uchini torting va o‘ngdagi ehtimolliklar qanday o‘zgarishini kuzating. Keyin «Barcha logitlarga +1» tugmasini bosing: chapdagi ustunlar ko‘tariladi, o‘ngda esa hech narsa o‘zgarmaydi.

1-rasm. Logitlar va ehtimolliklar. $(2;\,1;\,0)$ logitlar $(0{,}665;\,0{,}245;\,0{,}090)$ ni beradi, eksponentalar yig‘indisi $11{,}11$. ±1 tugmalari barcha logitlarni siljitadi — ehtimolliklar joyida qoladi. Harorat slayderi: $T=0{,}1$ da birinchi sinfga $0{,}9999$ dan ko‘prog‘i tegadi, $T=10$ da taqsimot deyarli tekis, $(0{,}367;\,0{,}332;\,0{,}301)$. Punktir — $1/K$ darajasi.
Nimaga e’tibor berish kerak

$(2;\,1;\,0)$ logitlar bittaga farq qiladi, ehtimolliklar esa $e$ marta: $0{,}665/0{,}245\approx0{,}245/0{,}090\approx2{,}718$. Softmax faqat logitlarning ayirmalariga qaraydi. $T$ harorat logitlarni bo‘ladi: $T<1$ da ayirmalar o‘sadi va taqsimot keskinlashadi, $T>1$ da — silliqlashadi.

Formula mayda detallarigacha

$$s_i=\operatorname{softmax}(z)_i=\frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}},\qquad i=1,\dots,K$$
$z=(z_1,\dots,z_K)$
logitlar vektori — oxirgi qatlamning xom chiqishlari, istalgan haqiqiy sonlar;
$e^{z_i}$
eksponenta: sonni musbat qiladi va logitlar ayirmalarini nisbatlarga aylantiradi;
$\sum_{j}e^{z_j}$
normallovchi yig‘indi (fizikada — statistik yig‘indi, partition function $Z$);
$s_i$
$i$-sinf ehtimolligi: $s_i\in(0;\,1)$ va $\sum_i s_i=1$.

Qo‘llanmadagi umumiy misolni ko‘rib chiqamiz — $z=(2;\,1;\,0)$ logitlar:

$$\begin{gathered}e^{2}\approx7{,}389,\quad e^{1}\approx2{,}718,\quad e^{0}=1,\quad\textstyle\sum\approx11{,}107\\ \Longrightarrow\;s\approx\Bigl(\frac{7{,}389}{11{,}107};\,\frac{2{,}718}{11{,}107};\,\frac{1}{11{,}107}\Bigr)=(0{,}665;\,0{,}245;\,0{,}090)\end{gathered}$$

Harorat

Ko‘pincha softmax’dan oldin logitlar $T>0$ songa — haroratga bo‘linadi:

$$s_i(T)=\frac{e^{z_i/T}}{\sum_j e^{z_j/T}}$$

Jadval haroratning o‘sha $(2;\,1;\,0)$ vektor bilan nima qilishini ko‘rsatadi:

$i$$z_i$$e^{z_i}$$s_i,\ T=1$$s_i,\ T=0{,}5$$s_i,\ T=2$
127,3890,6650,8670,506
212,7180,2450,1170,307
301,0000,0900,0160,186
Σ11,107111

Ikki limit nomni tushuntiradi. $T\to0$ da faqat eng katta logit yutadi: softmax $\operatorname{argmax}$ ning one-hot vektoriga intiladi (agar maksimum yagona bo‘lsa). $T\to\infty$ da ayirmalar yo‘qoladi va taqsimot tekis bo‘ladi, $s_i\to1/K$. Softmax — «yumshoq» (soft) argmax: qat’iy tanlov va to‘liq befarqlik orasidagi holat.

Nom haqida

Aniqroq aytganda, softmax max funksiyasini emas, argmax ning one-hot vektorini silliq yaqinlashtiradi. Silliq maksimum — bu log-sum-exp, softmax esa uning gradiyenti (LSE haqidagi bo‘limga qarang).

Xossalar

  • Taqsimot: istalgan logitlarda $s_i>0$ va $\sum_i s_i=1$. Aynan 0 yoki 1 hech qachon chiqmaydi — faqat limitda (kompyuterda esa yaxlitlash tufayli).
  • Tartibni saqlaydi: $z_i>z_j\iff s_i>s_j$, shuning uchun $\operatorname{argmax}s=\operatorname{argmax}z$. Faqat sinfni bashorat qilish uchun softmax’ni hisoblamasa ham bo‘ladi.
  • Nisbatlar: $s_i/s_j=e^{z_i-z_j}$ — logitlar ayirmasi ehtimolliklar nisbatining logarifmiga teng. Aksincha, $z_i=\ln s_i+C$: logitlar ehtimolliklardan umumiy o‘zgarmas aniqligida tiklanadi.
  • Siljishga invariantlik: istalgan $c$ son uchun $\operatorname{softmax}(z+c\mathbf 1)=\operatorname{softmax}(z)$. $K$ ta logitdan faqat $K-1$ ta ayirma ahamiyatli.
  • Masshtabga invariant emas: $\operatorname{softmax}(az)$ $a>1$ da keskinroq, $0<a<1$ da yassiroq. Bu o‘sha harorat, $a=1/T$.
  • Raqobat: bitta logitning o‘sishi uning ehtimolligini oshiradi va qolganlarining hammasini kamaytiradi — massa yaratilmaydi, qayta taqsimlanadi.
Nega siljish hech narsani o‘zgartirmaydi
$$\frac{e^{z_i+c}}{\sum_j e^{z_j+c}}=\frac{e^{c}\,e^{z_i}}{e^{c}\sum_j e^{z_j}}=\frac{e^{z_i}}{\sum_j e^{z_j}}$$

$e^c$ ko‘paytuvchi qisqaradi. Aynan shu xossa kodda barcha logitlardan $\max_j z_j$ ni ayirishga imkon beradi: natija o‘sha, eksponenta esa endi to‘lib ketmaydi.

Ikki sinf — bu sigmoida

$$\operatorname{softmax}(z_1,z_2)_1=\frac{e^{z_1}}{e^{z_1}+e^{z_2}}=\frac{1}{1+e^{-(z_1-z_2)}}=\sigma(z_1-z_2)$$

Ikki sinf uchun softmax — logitlar ayirmasining sigmoidasi, shuning uchun binar klassifikatorga bitta chiqish yetarli. Bitta sinfni qolgan hammasiga qarshi qo‘ysak, $K$ ta sinf uchun ham shunga o‘xshash formula o‘rinli:

$$s_i=\sigma\Bigl(z_i-\ln\sum_{j\ne i}e^{z_j}\Bigr)$$

Har bir ehtimollik — o‘z logitining qolganlarning «silliq maksimumidan» ustunligining sigmoidasi. Tekshirish uchun $s_i$ ning surat va maxrajini $e^{z_i}$ ga bo‘ling.

2-rasm. $z_2=1$, $z_3=0$ qayd etilganda $s_1$ $z_1$ ning funksiyasi sifatida. Ko‘k egri — $m=\ln(e^{1}+e^{0})\approx1{,}313$ nuqtaga siljigan sigmoida: $z_1=2$ da $\sigma(0{,}687)\approx0{,}665$ chiqadi. To‘q sariq va firuza egrilar — $s_2$ va $s_3$: ular kamayib, massasini birinchi sinfga beradi. «Uchinchi sinf bor» belgisini olib tashlang — oddiy $\sigma(z_1-z_2)$ sigmoida qoladi.

Geometriya: ehtimolliklar simpleksi

$K$ ta sinf bo‘yicha barcha taqsimotlar ehtimolliklar simpleksini tashkil etadi:

$$\Delta^{K-1}=\Bigl\{s\in\mathbb R^{K}:\ s_i\ge0,\ \textstyle\sum_i s_i=1\Bigr\}$$

$K=3$ da bu teng tomonli uchburchak. Uchlari — ishonchli javoblar $(1;\,0;\,0)$, $(0;\,1;\,0)$, $(0;\,0;\,1)$, markazi — tekis taqsimot $(\tfrac13;\,\tfrac13;\,\tfrac13)$, ichidagi nuqta esa uchlarning $s_i$ vaznli «aralashmasi» (barisentrik koordinatalar).

Softmax butun $\mathbb R^K$ logitlar fazosini simpleksning ichki qismiga akslantiradi: tomonlar va uchlarga yetib bo‘lmaydi. $z+c\mathbf 1$ to‘g‘ri chiziqning barcha nuqtalari bitta nuqtaga o‘tadi, shuning uchun mohiyatan softmax $(K-1)$ o‘lchovli logitlar ayirmalari fazosi bilan simpleks ichki qismi orasidagi o‘zaro bir qiymatli moslikdir. Teskari akslantirish — logarifm: siljish aniqligida $z=\ln s$.

3-rasm. Uch sinf bo‘yicha taqsimot — uchburchakning nuqtasi; bo‘yoq qaysi sinf va qanchalik ishonch bilan yutayotganini ko‘rsatadi. Qora nuqtani torting: o‘ngda o‘sha ehtimolliklar ustunlarda, rasm ostida — shu nuqtani beradigan logitlar. Qora punktir — harorat o‘zgargandagi yo‘l: g‘olib uchdan ($T\to0$) markazga ($T\to\infty$). Ko‘k chiziq — faqat $z_1$ o‘zgargandagi yo‘l: qarama-qarshi tomondan 1-uchga. $z=(2;\,1;\,0)$ da markazlashtirilgan logitlar $(1;\,0;\,-1)$, entropiya $0{,}832$.
Entropiya — uchlardan uzoqlik

$H(s)=-\sum_i s_i\ln s_i$ entropiya noaniqlikni o‘lchaydi: u uchlar yonida 0 ga intiladi va markazda eng katta bo‘lib, $\ln K$ ga teng. $(0{,}665;\,0{,}245;\,0{,}090)$ uchun $0{,}832$ chiqadi, maksimum esa $\ln3\approx1{,}099$.

Hosila: Yakobi matritsasi

Softmax’ning $K$ ta kirishi va $K$ ta chiqishi bor, shuning uchun uning hosilasi son emas, balki $K\times K$ matritsa: $J_{ij}=\partial s_i/\partial z_j$ element $i$-ehtimollik $j$-logitga qanday javob berishini ko‘rsatadi.

Bo‘linma qoidasi bilan keltirib chiqarish

$S=\sum_k e^{z_k}$ deb belgilaymiz; u holda $\partial S/\partial z_j=e^{z_j}$. $i=j$ uchun:

$$\frac{\partial s_i}{\partial z_i}=\frac{e^{z_i}S-e^{z_i}e^{z_i}}{S^{2}}=s_i-s_i^{2}=s_i(1-s_i)$$

$i\ne j$ uchun $e^{z_i}$ surat $z_j$ ga bog‘liq emas:

$$\frac{\partial s_i}{\partial z_j}=\frac{0\cdot S-e^{z_i}e^{z_j}}{S^{2}}=-s_is_j$$
Logarifm orqali keltirib chiqarish (qisqaroq)

$\ln s_i=z_i-\ln S$. Eksponentalar yig‘indisi logarifmining hosilasi yana softmax: $\partial\ln S/\partial z_j=e^{z_j}/S=s_j$. Demak,

$$\frac{\partial\ln s_i}{\partial z_j}=\delta_{ij}-s_j\quad\Longrightarrow\quad\frac{\partial s_i}{\partial z_j}=s_i(\delta_{ij}-s_j)$$

Bu yerda $\delta_{ij}$ — Kroneker belgisi: $i=j$ da 1, aks holda 0.

$$J=\frac{\partial s}{\partial z}=\operatorname{diag}(s)-s\,s^{\top},\qquad J_{ij}=\begin{cases}s_i(1-s_i),&i=j\\-s_is_j,&i\ne j\end{cases}$$

Bu matritsaning xossalari:

  • diagonal $s_i(1-s_i)$ — aynan sigmoidaning hosilasi: $\tfrac14$ dan oshmaydi, $s_i=\tfrac12$ da maksimal;
  • diagonaldan tashqaridagi barcha elementlar manfiy: bitta logitni ko‘tarib, qolganlaridan ehtimollik olamiz;
  • simmetrik va har bir satr (hamda ustun) yig‘indisi 0: $J\mathbf 1=s-s\,(s^\top\mathbf 1)=0$. Bu $\sum_i s_i=1$ tenglikning hosilasi, $\mathbf 1$ vektor esa hech narsani o‘zgartirmaydigan siljish yo‘nalishi. Shuning uchun $J$ xos (singulyar);
  • nomanfiy aniqlangan: $v^\top Jv=\sum_i s_iv_i^2-\bigl(\sum_i s_iv_i\bigr)^2$ — $s$ taqsimotdagi $v$ kattalikning dispersiyasi, dispersiya esa manfiy bo‘lmaydi;
  • ishonch oshganda so‘nadi: $s$ simpleks uchiga yaqin bo‘lsa, $J$ ning barcha elementlari nolga yaqin — sigmoidadagi kabi to‘yinish.
4-rasm. Chapda — $z=(2;\,1;\,0)$ dagi Yakobi matritsasi: $(0{,}223;\,0{,}185;\,0{,}082)$ diagonal musbat (qizil), diagonaldan tashqarida manfiy $-0{,}163$, $-0{,}060$, $-0{,}022$ (ko‘k); har bir ustun yig‘indisi 0, iz $1-\sum s_i^2\approx0{,}4895$. O‘ngda — tanlangan ustun elementlari $z_j$ ning funksiyalari sifatida: diagonal element — $s_j=0{,}5$ bo‘lgan joyda cho‘qqisi $0{,}25$ bo‘lgan $s_j(1-s_j)$ qo‘ng‘iroq; qolganlari — manfiy «chuqurlar».

Matritsasiz teskari o‘tish

Backprop’da $J$ ning o‘zi emas, $J^\top g$ ko‘paytma kerak, bu yerda $g=\partial L/\partial s$ yuqoridan keladi. $\operatorname{diag}(s)-ss^\top$ tuzilishi tufayli bu $O(K^2)$ o‘rniga $O(K)$ amal turadi:

$$\frac{\partial L}{\partial z}=J^{\top}g=s\odot\bigl(g-\langle g,s\rangle\,\mathbf 1\bigr)$$

$K\approx10^5$ tokenli LLM lug‘ati uchun bu har bir pozitsiyada $10^5$ va $10^{10}$ son orasidagi farq. Kross-entropiya bilan juftlikda esa yanada oddiy: $\partial L/\partial z=s-y$ (keltirib chiqarish — kross-entropiya sahifasida).

3D manzara: logitlar tekisligi ustidagi softmax

$z_3=0$ ni qayd etamiz — bu umumiylikni yo‘qotmaydi, chunki siljish bilan istalgan logitni nolga aylantirish mumkin, — va $s_1$ ni ikki o‘zgaruvchi $z_1$ va $z_2$ ning funksiyasi sifatida chizamiz. «Rampa» hosil bo‘ladi: $z_1$ ham $z_2$ dan, ham noldan katta bo‘lgan joyda sirt 1 ga yaqin, birinchi sinf yutqazgan joyda esa 0 ga yaqin. Chegara bo‘ylab u sigmoida bo‘yicha ko‘tariladi — bu «bittasi hammaga qarshi» formulasining amaldagi ko‘rinishi.

5-rasm. Chapda — 3D’da $s_k(z_1,z_2,0)$ (sirtni aylantirish mumkin), qora nuqta — $s_1\approx0{,}665$ bo‘lgan $z=(2;\,1;\,0)$. O‘ngda — logitlar tekisligi: bo‘yoq g‘olib sinf va ishonchni ko‘rsatadi, chiziqlar — tanlangan funksiyaning $0{,}1$, $0{,}5$, $0{,}9$ sathlari (hosila uchun — $0{,}05$, $0{,}15$, $0{,}24$). Nuqtani surish mumkin. $\partial s_1/\partial z_1$ ga o‘ting: bu $s_1=0{,}5$ chiziq bo‘ylab balandligi $0{,}25$ bo‘lgan qir.

Yuqoridan ko‘rinish logitlar tekisligini uchta sohaga bo‘ladi. Chegaralar — teng logitlar to‘plamlari: $z_1=z_2\ge0$ nur 1- va 2-sinflarni, $z_1=0$, $z_2\le0$ nur 1- va 3-sinflarni, $z_2=0$, $z_1\le0$ nur 2- va 3-sinflarni ajratadi. Uchala nur ham $s=(\tfrac13;\,\tfrac13;\,\tfrac13)$ bo‘lgan koordinatalar boshidan chiqadi.

Gradiyent qayerda oqadi

$\partial s_1/\partial z_1=s_1(1-s_1)$ sirt «o‘z» va «begona» sohalar ichkarisida deyarli tekis va deyarli nol. Softmax orqali gradiyent faqat model ikkilanayotgan joyda — chegaralar yaqinida oqadi.

Log-sum-exp: silliq maksimum

Softmax’ning «boshlang‘ich funksiyasi» bor — log-sum-exp funksiyasi:

$$\operatorname{LSE}(z)=\ln\sum_{j=1}^{K}e^{z_j},\qquad\frac{\partial\operatorname{LSE}}{\partial z_i}=\frac{e^{z_i}}{\sum_j e^{z_j}}=s_i,\qquad\nabla\operatorname{LSE}(z)=\operatorname{softmax}(z)$$

LSE — silliq maksimum: eng katta eksponenta yig‘indida ustunlik qiladi va logarifm deyarli uning ko‘rsatkichini qaytaradi. Aniqroq,

$$\max_j z_j\;\le\;\operatorname{LSE}(z)\;\le\;\max_j z_j+\ln K$$

Chap tengsizlik o‘rinli, chunki yig‘indi eng katta qo‘shiluvchisidan kichik emas, o‘ng tengsizlik — chunki $K$ ta qo‘shiluvchining har biri eng kattasidan oshmaydi. $(2;\,1;\,0)$ uchun: $\operatorname{LSE}=\ln11{,}107\approx2{,}408$ — $2$ va $2+\ln3\approx3{,}099$ orasida. Harorat bilan $\operatorname{LSE}_T(z)=T\ln\sum_j e^{z_j/T}$ da oraliq $T\ln K$ gacha qisqaradi: $T\to0$ da LSE oddiy maksimumga, uning gradiyenti $\operatorname{softmax}(z/T)$ esa argmax ning one-hot vektoriga aylanadi.

6-rasm. Yuqorida — $\operatorname{LSE}_T(x,0)=T\ln(e^{x/T}+1)$ va $\max(x,0)$; oraliq $T\ln2$ dan oshmaydi va $x=0$ da eng katta. $T=1$, $x=1$ da: $\operatorname{LSE}\approx1{,}3133$, oraliq $0{,}3133$. Pastda — $x$ bo‘yicha hosila: bu $\sigma(x/T)$, ya’ni $\operatorname{softmax}(x/T,\,0)$ ning birinchi komponentasi, silliq pog‘ona. $T$ ni kamaytiring — LSE siniq chiziqqa, softmax esa pog‘onaga yopishadi.
LSE va kross-entropiyaning qavariqligi

LSE gessiani — softmax’ning hosilasi, ya’ni o‘sha Yakobi matritsasi: $\nabla^2\operatorname{LSE}=\operatorname{diag}(s)-ss^\top$. U nomanfiy aniqlangan, demak LSE — qavariq funksiya. Bundan kross-entropiyaning logitlar bo‘yicha qavariqligi kelib chiqadi: $-\ln s_y=\operatorname{LSE}(z)-z_y$ — qavariq funksiyadan chiziqli funksiya ayirmasi.

Bog‘lashga arziydigan uchta formula

$\operatorname{softmax}=\nabla\operatorname{LSE}$; $\ln s_i=z_i-\operatorname{LSE}(z)$ (log-softmax); $\mathrm{CE}=\operatorname{LSE}(z)-z_y$. Qo‘llanmadagi misol uchun: $2{,}408-2=0{,}408$. $K=2$ va $z=(x;\,0)$ da esa LSE softplus $\ln(1+e^{x})$ ga — ReLU ning silliq ko‘rinishiga aylanadi.

O‘qitishda softmax

Softmax’li eng oddiy model — ko‘p sinfli logistik (softmax-) regressiya: $K$ ta chiziqli funksiya logitlarni, softmax ehtimolliklarni beradi, yo‘qotish esa — kross-entropiya:

$$s=\operatorname{softmax}(Wx+b),\qquad L=-\ln s_y,\qquad\frac{\partial L}{\partial W}=(s-y)\,x^{\top},\qquad\frac{\partial L}{\partial b}=s-y$$

Bu yerda $y$ — to‘g‘ri sinfning one-hot vektori. Butun Yakobi matritsasi logarifm bilan juftlikda «bashorat − haqiqat» ayirmasiga qisqardi.

7-rasm. Har biri 30 nuqtadan iborat uchta sinf. Model $W=0$, $b=0$ dan boshlaydi: barcha ehtimolliklar $\tfrac13$, $\mathrm{CE}=\ln3\approx1{,}099$, aniqlik $33{,}3\%$. «Boshlash» ni bosing: butun to‘plam bo‘yicha $0{,}15$ qadamli gradiyentli tushish. Birinchi qadamdan keyinoq aniqlik $94{,}4\%$, 200 qadamdan keyin $\mathrm{CE}\approx0{,}181$ va aniqlik $95{,}6\%$. Bo‘yoq yorqinligi — model ishonchi; istalgan nuqtadagi ehtimolliklarni ko‘rish uchun kursorni olib boring.
Chegaralar — to‘g‘ri chiziqlar

$i$ va $j$ sinflar orasidagi chegara — $z_i=z_j$ bo‘lgan to‘plam, ya’ni $(w_i-w_j)^\top x+b_i-b_j=0$: to‘g‘ri chiziq (umumiy holda gipertekislik). Softmax modelni nochiziqli qilmaydi — u faqat ballarni ehtimolliklarga aylantiradi. Egri chegaralar logitlarni neyron tarmoq hisoblaganda paydo bo‘ladi.

Transformer ichidagi softmax: attention

$$\operatorname{Attention}(Q,K,V)=\operatorname{softmax}\Bigl(\frac{QK^{\top}}{\sqrt{d}}\Bigr)V$$

$\operatorname{softmax}(\cdot)$ ning har bir satri — bitta tokenning diqqati ketma-ketlik tokenlari (o‘zi ham) bo‘yicha taqsimoti, vaznlar yig‘indisi 1. $\sqrt d$ ga bo‘lish — bu harorat: komponentalari mustaqil, o‘rtachasi nol va dispersiyasi bir bo‘lgan $d$ o‘lchovli vektorlarning skalyar ko‘paytmasi dispersiyasi $d$ ga teng. Masshtablashsiz attention logitlari katta bo‘ladi, softmax deyarli one-hot gacha to‘yinadi, Yakobi matritsasi — u bilan birga gradiyentlar ham — deyarli nolga aylanadi.

Matn generatsiyasidagi harorat

Til modeli keyingi tokenni $\operatorname{softmax}(z/T)$ dan tanlaydi. $T\to0$ da (ochko‘z tanlov) eng ehtimolli token olinadi, $T<1$ da matn oldindan aytib bo‘ladiganroq, $T>1$ da — xilma-xilroq va xavfliroq. $T>1$ harorat bilimlar distillyatsiyasida ham ishlaydi (Xinton va boshq., 2015): o‘qituvchining «yumshoq» ehtimolliklari one-hot belgilardan ko‘ra ko‘proq axborot tashiydi.

Nom qayerdan kelgan

Formula statistik fizikadan kelgan: Bolsman — Gibbs taqsimoti $p_i\propto e^{-E_i/(kT)}$ $T$ haroratda $E_i$ energiyali holat ehtimolligini beradi; logit minus ishorali energiya rolini o‘ynaydi. «Softmax» so‘zini 1990 yilda Jon Braydl tarmoq chiqishlarining ehtimoliy talqinini tasvirlab taklif qilgan. Ekonometrikada xuddi shu model multinomial logit deb ataladi.

Kodda: barqarorlik, log-softmax va PyTorch

Sodda formula katta logitlarda buziladi: $e^{1000}\approx2\cdot10^{434}$ na float32 ga, na float64 ga sig‘adi va cheksizlikka aylanadi, so‘ng $\infty/\infty=\text{NaN}$ chiqadi. float32 da (va daraja diapazoni xuddi shunday bo‘lgan bfloat16 da) chegara yaqinroq: $e^{x}$ allaqachon $x>88{,}72$ da to‘lib ketadi (eng katta float32 soni $\approx3{,}4\cdot10^{38}$). Juda manfiy logitlarda muammo teskari: eksponentalar nolga aylanadi va $0/0$ chiqadi.

8-rasm. $c$ $-800$ dan $800$ gacha bo‘lganda $(2+c;\,1+c;\,c)$ logitlar; to‘g‘ri javob doim $(0{,}665;\,0{,}245;\,0{,}090)$. float32 da sodda formula faqat $-99\le c\le86$ da to‘g‘ri: $c=87$ da $e^{89}$ soni float32 ga sig‘maydi va NaN chiqadi; $c\le-106$ da barcha eksponentalar nolga teng, $0/0$; ular orasida esa subnormal sonlar aniqlikni yo‘qotadi — $c=-105$ da ishonchli, lekin yolg‘on $(1;\,0;\,0)$ javob chiqadi. float64 da zaxira kattaroq ($-741\le c\le707$), lekin chegara bor. Maksimum ayirilganda javob hamma joyda to‘g‘ri.

Davo — siljishga invariantlik: $m=\max_j z_j$ ni ayiramiz. Eng katta ko‘rsatkich 0 ga, $e^0=1$ ga teng bo‘ladi, maxraj 1 va $K$ orasida yotadi — na to‘lib ketish, na nolga bo‘lish:

$$s_i=\frac{e^{z_i-m}}{\sum_j e^{z_j-m}},\qquad\ln s_i=(z_i-m)-\ln\sum_j e^{z_j-m}$$
pythonimport numpy as np
np.set_printoptions(precision=3)

def softmax(z, axis=-1, T=1.0):
    """Barqaror softmax: maksimumni ayiramiz, natija o‘zgarmaydi."""
    z = np.asarray(z, dtype=float) / T
    z = z - z.max(axis=axis, keepdims=True)
    e = np.exp(z)
    return e / e.sum(axis=axis, keepdims=True)

def log_softmax(z, axis=-1):
    # log s_i = z_i − logsumexp(z): juda kichik ehtimolliklarda ham log(0) siz
    z = np.asarray(z, dtype=float)
    m = z.max(axis=axis, keepdims=True)
    return z - m - np.log(np.exp(z - m).sum(axis=axis, keepdims=True))

def softmax_backward(s, g):
    # J^T g = s * (g − <g, s>): K×K matritsa o‘rniga O(K)
    return s * (g - (g * s).sum(axis=-1, keepdims=True))

z = np.array([2.0, 1.0, 0.0])
print(softmax(z))            # [0.665 0.245 0.09 ]
print(softmax(z + 1000))     # [0.665 0.245 0.09 ] — siljish muhim emas
print(softmax(z, T=0.5))     # [0.867 0.117 0.016] — keskinroq
print(log_softmax([0.0, -800.0]))  # [   0. -800.], np.log(softmax(...)) esa -inf beradi
pythonimport torch
import torch.nn.functional as F

z = torch.tensor([2.0, 1.0, 0.0], requires_grad=True)
s = F.softmax(z, dim=-1)          # tensor([0.6652, 0.2447, 0.0900])
s[0].backward()                   # Yakobi matritsasining birinchi satri
print(z.grad)                     # tensor([ 0.2227, -0.1628, -0.0599])

# O‘qitishda alohida softmax kerak emas:
logits = torch.randn(4, 3)        # batch: 4 ta misol, 3 ta sinf
target = torch.tensor([0, 2, 1, 0])
loss = F.cross_entropy(logits, target)   # ichida — log_softmax + NLL
log_p = F.log_softmax(logits, dim=-1)    # ehtimolliklar logarifmlari kerak bo‘lsa
Qoida

Agar keyin logarifm kelsa, $\ln(\operatorname{softmax}(z))$ ni ikki qadamda hisoblamang: kichik ehtimollik 0 ga yaxlitlanadi va $-\infty$ chiqadi. log_softmax dan yoki to‘g‘ridan-to‘g‘ri logitlardagi yo‘qotishdan foydalaning: PyTorch’da F.cross_entropy / nn.CrossEntropyLoss, Keras’da from_logits=True.

Ko‘p uchraydigan xatolar

  1. nn.CrossEntropyLoss dan oldin softmax. Bu yo‘qotish logitlarni kutadi va log-softmax’ni o‘zi qo‘llaydi. Ikki karra softmax ehtimolliklarni siqadi: uch sinf uchun ikkinchi softmax $e/(e+2)\approx0{,}576$ dan ko‘p bermaydi, yo‘qotish $0{,}551$ dan pastga tushmaydi, gradiyentlar buziladi.
  2. Noto‘g‘ri o‘q. $(N,K)$ shaklli batch uchun misollar bo‘yicha (dim=0) emas, sinflar bo‘yicha (dim=-1) normallash kerak. Istisno chiqmaydi — model shunchaki bema’ni narsani o‘rganadi.
  3. Sodda eksponenta maksimumni ayirmasdan — katta logitlarda NaN, ayniqsa aralash aniqlikda: float16 da $e^{x}$ allaqachon $x>11{,}09$ da to‘lib ketadi.
  4. Multi-label uchun softmax. Agar obyektda bir vaqtda bir nechta belgi bo‘lishi mumkin bo‘lsa (rasmda mushuk va it), sinflar raqobatlashmaydi — har bir chiqishda sigmoida va BCE kerak.
  5. Softmax ehtimolligini kafolat deb bilish. $s_{\max}=0{,}99$ «99% hollarda haq» degani emas: chuqur tarmoqlar ko‘pincha o‘ziga haddan tashqari ishonadi. Kalibrlash — alohida vazifa; eng oddiy usul — temperature scaling, validatsiyada bitta $T$ ni tanlash.
  6. Turli misollar logitlarini solishtirish. Logitlar siljish aniqligida aniqlangan, shuning uchun «bir misolda logit 5, boshqasida 3 dan katta» hech narsani anglatmaydi. Ehtimolliklarni yoki bitta misol ichidagi logitlar ayirmalarini solishtiring.
  • Sigmoida: $\operatorname{softmax}(z_1,z_2)_1=\sigma(z_1-z_2)$, Yakobi matritsasining $s_i(1-s_i)$ diagonali esa sigmoidaning hosilasi.
  • Kross-entropiya: softmax’ning tabiiy jufti; birgalikda $s-y$ gradiyentni beradi, $\mathrm{CE}=\operatorname{LSE}(z)-z_y$.
  • BCE: ikki sinf uchun kross-entropiyaning xususiy holi, bunda softmax sigmoidaga keladi.
  • Focal Loss: $-\ln p_t$ ni $(1-p_t)^\gamma$ ga ko‘paytiradi, bu yerda $p_t$ — to‘g‘ri sinfning softmax-ehtimolligi.
  • ReLU: softplus $\ln(1+e^{x})=\operatorname{LSE}(x,0)$ — $\max(x,0)$ ning silliq varianti.

Xulosa

1) $s_i=e^{z_i}/\sum_je^{z_j}$ istalgan logitlarni $K$ ta sinf bo‘yicha taqsimotga aylantiradi va tartibni saqlaydi. 2) Faqat logitlar ayirmalari muhim: $s_i/s_j=e^{z_i-z_j}$, siljish hech narsani o‘zgartirmaydi — maksimumni ayiradigan barqaror formula shundan. 3) Harorat keskinlikni boshqaradi: $T\to0$ — argmax, $T\to\infty$ — tekis taqsimot. 4) $\operatorname{diag}(s)-ss^\top$ Yakobi matritsasi simmetrik, xos va ishonch oshganda so‘nadi; teskari o‘tish $O(K)$ turadi. 5) Softmax — LSE silliq maksimumining gradiyenti, kross-entropiya bilan juftlikda esa $s-y$ gradiyentni beradi.

O‘zingizni tekshiring

1. $(2;\,1;\,0)$ logitlar $s\approx(0{,}665;\,0{,}245;\,0{,}090)$ ni beradi. $(102;\,101;\,100)$ nima beradi?
2. $T\to0$ da $\operatorname{softmax}(z/T)$ bilan nima bo‘ladi?
3. $\operatorname{softmax}(z_1,z_2)_1$ nimaga teng?
4. Softmax Yakobi matritsasining istalgan ustuni elementlari yig‘indisi nimaga teng?
5. Barqaror softmax’da nima uchun $\max_j z_j$ ayiriladi?