7.1 Entrópia, cross-entropy és KL

7.1.1 Cél, előismeret és induló kérdés

Ez az alfejezet a diszkrét valószínűségi vektorok három alapvető információelméleti mennyiségét, az entrópiát, a cross-entropy-t és a Kullback–Leibler-divergenciát (KL) vezeti be. A cél, hogy a hallgató pontosan számolni tudjon, értse a support szerepét, és felkészüljön a következő alfejezetben tárgyalt, logitsból számolt osztályozási veszteségre.

Előismeret a 3.1. Vektor, norma és skalárszorzat vektor- és távolságfogalma, az 5.4. Függő képek, seedek és resampling statisztikai egységek kezelése és a 6.1. Objektív, reguláris tag és gradienslépés batch-átlag/reduction konvenciója. A 6.4. Momentum és adaptív optimizálók optimalizálóból tudjuk, hogy a gradienslépés célfüggvényt csökkent; itt azt alapozzuk meg, hogy a veszteség mit mér valószínűségi értelemben.

Induló kérdés. Egy háromosztályos feladatban az igaz címke one-hot eloszlása p=(1,0,0)p=(1,0,0). Két modell qA=(0.9,0.05,0.05)q_A=(0.9,0.05,0.05) és qB=(0.6,0.3,0.1)q_B=(0.6,0.3,0.1) eloszlást ad. qAq_A nyilván jobb, de mennyivel? A természetes logaritmussal −ln0.9≈0.105-\ln 0.9\approx 0.105 nat, míg −ln0.6≈0.511-\ln 0.6\approx 0.511 nat: a qBq_B rosszabb, mint qAq_A, és a különbség nagyobb, mint a nyers 0.9−0.6=0.30.9-0.6=0.3 sugallja.

7.1.2 Definíciók és intuíció

Diszkrét valószínűségi vektor. Legyen K≥1K\ge 1 egész. A p=(p1,…,pK)p=(p_1,\dots,p_K) vektor valószínűségi vektor, ha

pi≥0(1≤i≤K),∑i=1Kpi=1.p_i\ge 0\ (1\le i\le K),\qquad \sum_{i=1}^K p_i=1.

Batchelt alakban P∈ℝN×KP\in\mathbb R^{N\times K}, ahol minden sor egy-egy valószínűségi vektor; ebben az alfejezetben egyetlen sorral dolgozunk.

Support. A pp valószínűségi vektor supportja (tartóhalmaza) azon indexek halmaza, ahol pozitív a tömeg:

supp(p)={i∈{1,…,K}:pi>0}.\operatorname{supp}(p)=\{\,i\in\{1,\dots,K\}:p_i>0\,\}.

Entrópia. A pp valószínűségi vektor entrópiája

H(p)=−∑i=1Kpilnpi,H(p)=-\sum_{i=1}^K p_i\ln p_i,

ahol ln\ln a természetes logaritmus (natural logarithm), az egység pedig nat. A 0ln00\ln 0 tagot a 00-val azonosítjuk, mert limx↓0xlnx=0\lim_{x\downarrow 0}x\ln x=0. Az entrópia a bizonytalanság mértéke: H=0H=0 pontosan akkor, ha pp egyetlen kimenetelre koncentrálódik, a maximum lnK\ln K pedig az egyenletes eloszlásnál áll elő. Az utóbbi következik a KL nemnegativitásából, ha u=(1/K,…,1/K)u=(1/K,\dots,1/K): H(p)=lnK−DKL(p‖u)H(p)=\ln K-D_{KL}(p\Vert u).

Cross-entropy. Két valószínűségi vektor, pp és qq esetén a pp célhoz és qq predikcióhoz tartozó cross-entropy

H(p,q)=−∑i=1Kpilnqi,H(p,q)=-\sum_{i=1}^K p_i\ln q_i,

a 0ln00\ln 0 konvencióval a pi=0p_i=0 tagokra. Ha valamely ii-re pi>0p_i>0 és qi=0q_i=0, akkor H(p,q)=+∞H(p,q)=+\infty; ezt a support-csapdát később külön elemezzük. Az első argumentum a megfigyelt vagy cél-eloszlás, a második a modell által adott eloszlás.

KL-divergencia. Ugyanazon feltételekkel

DKL(p‖q)=∑i=1Kpilnpiqi=∑i=1Kpilnpi−∑i=1Kpilnqi,D_{KL}(p\Vert q)=\sum_{i=1}^K p_i\ln\frac{p_i}{q_i} =\sum_{i=1}^K p_i\ln p_i-\sum_{i=1}^K p_i\ln q_i,

ahol a pi=0p_i=0 tagok nullák. A KL a pp és qq eloszlások közötti, irányított információnövekmény; nem szimmetrikus általában, és nem metrikus távolság. Egysége szintén nat, ha természetes logaritmust használunk.

7.1.3 A fő levezetés: a cross-entropy felbontása

Tétel (a cross-entropy entrópia–KL felbontása). Legyenek p,q∈[0,1]Kp,q\in[0,1]^K valószínűségi vektorok. A fenti konvenciókkal

H(p,q)=H(p)+DKL(p‖q).H(p,q)=H(p)+D_{KL}(p\Vert q).

A három mennyiség pontosan akkor véges egyidejűleg, ha supp(p)⊆supp(q)\operatorname{supp}(p)\subseteq\operatorname{supp}(q).

Bizonyítás. A definíciókat behelyettesítve:

H(p,q)=−∑i=1Kpilnqi=−∑i=1Kpi(lnpi−lnpi+lnqi)=−∑i=1Kpilnpi+∑i=1Kpilnpiqi=H(p)+DKL(p‖q).H(p,q) =-\sum_{i=1}^K p_i\ln q_i =-\sum_{i=1}^K p_i(\ln p_i-\ln p_i+\ln q_i) =-\sum_{i=1}^K p_i\ln p_i+\sum_{i=1}^K p_i\ln\frac{p_i}{q_i} =H(p)+D_{KL}(p\Vert q).

A második egyenlőségnél tagként adtunk hozzá és vontunk ki lnpi\ln p_i-t. A pi=0p_i=0 tagok a 0ln0=00\ln 0=0 konvenció miatt nem járulnak hozzá. A véges-értékű feltételhez: H(p)H(p) mindig véges, mert véges sok pilnpip_i\ln p_i tag összege. A cross-entropy és a KL pontosan akkor véges, ha nincs olyan ii, amelyre pi>0p_i>0 és qi=0q_i=0, vagyis supp(p)⊆supp(q)\operatorname{supp}(p)\subseteq\operatorname{supp}(q). Ha a tartalmazás sérül, akkor H(p,q)=+∞H(p,q)=+\infty és DKL(p‖q)=+∞D_{KL}(p\Vert q)=+\infty, az egyenlőség pedig a kiterjesztett valós számokon fennáll; a szokásos gyakorlati esetben azonban a véges feltételt követeljük meg. ▫\square

A nemnegativitás külön is indokolható a lnx≤x−1\ln x\le x-1 elemi egyenlőtlenségből, amely minden x>0x>0-ra igaz, egyenlőséggel csak x=1x=1-ben. Ha a support feltétel teljesül, minden ii-re xi=qi/pi>0x_i=q_i/p_i>0, ezért

DKL(p‖q)=−∑i:pi>0pilnqipi≥−∑i:pi>0pi(qipi−1)=∑i:pi>0(pi−qi)=1−∑i:pi>0qi≥0.D_{KL}(p\Vert q) =-\sum_{i:p_i>0}p_i\ln\frac{q_i}{p_i} \ge -\sum_{i:p_i>0}p_i\left(\frac{q_i}{p_i}-1\right) =\sum_{i:p_i>0}(p_i-q_i) =1-\sum_{i:p_i>0}q_i\ \ge\ 0.

Az utolsó lépésben ∑i:pi>0pi=1\sum_{i:p_i>0}p_i=1, a qq tartón kívüli része pedig nemnegatív, ezért ∑i:pi>0qi≤1\sum_{i:p_i>0}q_i\le1. A supp(p)⊆supp(q)\operatorname{supp}(p)\subseteq\operatorname{supp}(q) tartalmazás nem jelenti, hogy qq a pp tartóján kívül nulla, ezért ez az összeg általában kisebb 11-nél: például p=(1,0)p=(1,0), q=(12,12)q=(\tfrac12,\tfrac12) mellett ∑i:pi>0(pi−qi)=12\sum_{i:p_i>0}(p_i-q_i)=\tfrac12, míg ∑i=1K(pi−qi)=0\sum_{i=1}^K(p_i-q_i)=0.

Ebből az is következik, hogy H(p,q)≥H(p)H(p,q)\ge H(p) minden support-feltételt teljesítő qq-ra. Egyenlőség, DKL(p‖q)=0D_{KL}(p\Vert q)=0, pontosan akkor áll, ha a lánc mindkét egyenlőtlensége egyenlőség: a lnx≤x−1\ln x\le x-1 egyenlőtlenség minden pi>0p_i>0 tagra, vagyis qi/pi=1q_i/p_i=1, tehát qi=piq_i=p_i a pp tartóján; és ∑i:pi>0qi=1\sum_{i:p_i>0}q_i=1, vagyis qq a tartón kívül nulla. A kettő együtt p=qp=q, és fordítva p=qp=q esetén nyilván DKL=0D_{KL}=0.

7.1.4 Kézi számpélda

Legyen K=3K=3, p=(0.2,0.5,0.3)p=(0.2,0.5,0.3) és q=(0.4,0.4,0.2)q=(0.4,0.4,0.2). Először az entrópia:

H(p)=−0.2ln0.2−0.5ln0.5−0.3ln0.3≈0.321888+0.346574+0.361192=1.029653. H(p)=-0.2\ln 0.2-0.5\ln 0.5-0.3\ln 0.3 \approx 0.321888+0.346574+0.361192=1.029653.

A cross-entropy:

H(p,q)=−0.2ln0.4−0.5ln0.4−0.3ln0.2≈0.183258+0.458145+0.482831=1.124234. H(p,q)=-0.2\ln 0.4-0.5\ln 0.4-0.3\ln 0.2 \approx 0.183258+0.458145+0.482831=1.124234.

A KL a tételből 1.124234−1.029653=0.0945811.124234-1.029653=0.094581. Közvetlenül:

DKL(p‖q)=0.2ln0.20.4+0.5ln0.50.4+0.3ln0.30.2≈−0.138629+0.111572+0.121640=0.094583, D_{KL}(p\Vert q) =0.2\ln\frac{0.2}{0.4}+0.5\ln\frac{0.5}{0.4}+0.3\ln\frac{0.3}{0.2} \approx -0.138629+0.111572+0.121640=0.094583,

ami a kerekítési hibán belül egyezik.

7.1.5 Labor: nemszimmetria és support-csapda

Az alábbi minimális Python-munkamenet NumPy-ben számol. Nincs véletlen mintavétel, ezért seed nem szükséges; a determinisztikus képletek és a rögzített tömbök adják a reprodukálhatóságot. A dtype float64, a device pedig CPU, mert a NumPy ebben a laborban nem használ gyorsítóabsztrakciót.

# lab/n025_entropy_lab.py
import numpy as np

DTYPE = np.float64
# DEVICE = "CPU" (NumPy, nincs külön eszközkezelés)

def entropy(p):
    p = np.asarray(p, dtype=DTYPE)
    return -np.sum(np.where(p > 0, p * np.log(p), 0.0))

def cross_entropy(p, q):
    p = np.asarray(p, dtype=DTYPE)
    q = np.asarray(q, dtype=DTYPE)
    return -np.sum(np.where(p > 0, p * np.log(q), 0.0))

def kl_divergence(p, q):
    p = np.asarray(p, dtype=DTYPE)
    q = np.asarray(q, dtype=DTYPE)
    if np.any((p > 0) & (q == 0)):
        return np.inf
    return np.sum(np.where(p > 0, p * np.log(p / q), 0.0))

# 1) Nemszimmetria
p = np.array([0.2, 0.8], dtype=DTYPE)
q = np.array([0.7, 0.3], dtype=DTYPE)
kl_pq = kl_divergence(p, q)
kl_qp = kl_divergence(q, p)
print(f"KL(p||q) = {kl_pq:.9f}")
print(f"KL(q||p) = {kl_qp:.9f}")
print(f"kulonbseg = {abs(kl_pq - kl_qp):.9f}")

# 2) Support-csapda: supp(p) ⊆ supp(q), de nem fordítva
p = np.array([0.5, 0.0, 0.5], dtype=DTYPE)
q = np.array([0.4, 0.3, 0.3], dtype=DTYPE)
print(f"KL(p||q) = {kl_divergence(p, q):.9f}")
print(f"KL(q||p) = {kl_divergence(q, p)}")

# Ellenőrzés a tételre
print(f"H(p,q)-H(p) = {cross_entropy(p, q) - entropy(p):.9f}")

Futtatás a lab munkakönyvtárból:

python n025_entropy_lab.py

A várt kimenet szemléltetése (a kód által számolt érték):

KL(p||q) = 0.534082485
KL(q||p) = 0.582584342
kulonbseg = 0.048501857
KL(p||q) = 0.366985341
KL(q||p) = inf
H(p,q)-H(p) = 0.366985341

Értelmezés. Az első esetben a két irányú KL érték különbözik, tehát a KL nem szimmetrikus. A második esetben supp(p)={1,3}\operatorname{supp}(p)=\{1,3\}, míg supp(q)={1,2,3}\operatorname{supp}(q)=\{1,2,3\}, ezért a pp felőli irány véges, a qq felőli irány viszont végtelen, mert q2=0.3>0q_2=0.3>0, de p2=0p_2=0. A harmadik sor a levezetett tételt numerikusan ellenőrzi: a cross-entropy és az entrópia különbsége egyenlő a KL-lel.

7.1.6 Feladatok

F1 (fogalmi, nehézség 1). Definiálja a support fogalmát, és magyarázza el, miért éppen a supp(p)⊆supp(q)\operatorname{supp}(p)\subseteq\operatorname{supp}(q) feltétel garantálja a DKL(p‖q)D_{KL}(p\Vert q) végességét. Adjon K=2K=2-re olyan p,qp,q párt, amelyre az egyik irány véges, a másik végtelen.

F2 (levezetési, nehézség 1). Legyen p=(0.25,0.75)p=(0.25,0.75) és q=(0.5,0.5)q=(0.5,0.5). Számolja ki négy tizedesjegyre H(p)H(p), H(q)H(q), H(p,q)H(p,q), H(q,p)H(q,p), DKL(p‖q)D_{KL}(p\Vert q) és DKL(q‖p)D_{KL}(q\Vert p) értékét, majd ellenőrizze a felbontási tételt mindkét irányban.

F3 (implementációs, nehézség 2). Írjon Python-függvényt, amely két KK hosszú tömböt fogad, ellenőrzi, hogy elemeik nemnegatívak és összegük 1, majd visszaadja a három mennyiséget. A függvény jelezze a support-csapdát: ha pi>0p_i>0 és qi=0q_i=0, a cross-entropy és a KL legyen inf. Tesztelje p=(0.5,0,0.5)p=(0.5,0,0.5), q=(0.4,0.3,0.3)q=(0.4,0.3,0.3) bemenettel.

F4 (hibakeresési, nehézség 2). A következő kód a cross-entropy kiszámítására készült:

def ce(p, q):
    return -np.mean(p * np.log(q))

Magyarázza el, miért hibás ez a függvény az p=(0,0.5,0.5)p=(0,0.5,0.5), q=(0.5,0.5,0)q=(0.5,0.5,0) bemenetre, és lokalizálja a hibák okát, következményét és javítását. Ellenőrizze a javított változatot a megadott bemeneten.

F5 (kísérleti/transzfer, nehézség 3). Egy kalibrációs kísérletben három modell ugyanazon MM darab, független jelenetből származó tesztpéldára q(m)∈[0,1]Kq^{(m)}\in[0,1]^K eloszlást ad, a cél pedig p(m)p^{(m)} one-hot vektor. Tervezzen protokollt annak eldöntésére, melyik modell célhoz legközelebbi eloszlást ad: adja meg a megfigyelési egységet, a pontozófüggvényt, a csoportos kiértékelés indokát az 5.4. Függő képek, seedek és resampling tapasztalata alapján, és azt, miért nem a szimmetrizált KL-t választja elsődleges veszteségnek. A következtetési korlátot is nevezze meg.

7.1.7 Megoldások és indoklás

F1 megoldás. A support a pozitív valószínűségű indexek halmaza: supp(p)={i:pi>0}\operatorname{supp}(p)=\{i:p_i>0\}. Ha pi>0p_i>0 és qi=0q_i=0, akkor a piln(pi/qi)=piln(pi/0)=+∞p_i\ln(p_i/q_i)=p_i\ln(p_i/0)=+\infty tag miatt a KL végtelen; ha minden pi>0p_i>0 indexre qi>0q_i>0, a tagok végesek, és véges sok tag összege véges. Példa K=2K=2-re: p=(0.5,0.5)p=(0.5,0.5), q=(1,0)q=(1,0). Ekkor supp(p)={1,2}⊈{1}=supp(q)\operatorname{supp}(p)=\{1,2\}\not\subseteq\{1\}=\operatorname{supp}(q), ezért DKL(p‖q)=+∞D_{KL}(p\Vert q)=+\infty; viszont DKL(q‖p)=1ln(1/0.5)=0.6931D_{KL}(q\Vert p)=1\ln(1/0.5)=0.6931 véges, mert supp(q)⊆supp(p)\operatorname{supp}(q)\subseteq\operatorname{supp}(p).

F2 megoldás. H(p)=−0.25ln0.25−0.75ln0.75≈0.346574+0.215761=0.562335. H(p)=-0.25\ln 0.25-0.75\ln 0.75 \approx 0.346574+0.215761=0.562335. H(q)=−0.5ln0.5−0.5ln0.5=0.693147H(q)=-0.5\ln 0.5-0.5\ln 0.5=0.693147. H(p,q)=−0.25ln0.5−0.75ln0.5=0.693147. H(p,q)=-0.25\ln 0.5-0.75\ln 0.5=0.693147. H(q,p)=−0.5ln0.25−0.5ln0.75=0.693147+0.143841=0.836988. H(q,p)=-0.5\ln 0.25-0.5\ln 0.75 =0.693147+0.143841=0.836988. DKL(p‖q)=0.25ln0.250.5+0.75ln0.750.5≈−0.173287+0.304098=0.130811. D_{KL}(p\Vert q)=0.25\ln\frac{0.25}{0.5}+0.75\ln\frac{0.75}{0.5} \approx -0.173287+0.304098=0.130811. DKL(q‖p)=0.5ln0.50.25+0.5ln0.50.75≈0.346574−0.202733=0.143841. D_{KL}(q\Vert p)=0.5\ln\frac{0.5}{0.25}+0.5\ln\frac{0.5}{0.75} \approx 0.346574-0.202733=0.143841. Ellenőrzés: 0.562335+0.130811=0.693146≈H(p,q)0.562335+0.130811=0.693146\approx H(p,q); 0.693147+0.143841=0.836988≈H(q,p)0.693147+0.143841=0.836988\approx H(q,p). A négy tizedesjegyre kerekített eltérés a közbenső kerekítésből adódik.

F3 megoldás.

import numpy as np

def info_measures(p, q, tol=1e-12):
    p = np.asarray(p, dtype=np.float64)
    q = np.asarray(q, dtype=np.float64)
    assert p.ndim == q.ndim == 1 and p.shape == q.shape
    assert np.all(p >= 0) and np.all(q >= 0)
    assert abs(p.sum() - 1.0) < tol and abs(q.sum() - 1.0) < tol
    H = -np.sum(np.where(p > 0, p * np.log(p), 0.0))
    ce = -np.sum(np.where(p > 0, p * np.log(q), 0.0))
    kl = ce - H
    if np.any((p > 0) & (q == 0)):
        ce = np.inf
        kl = np.inf
    return H, ce, kl

p = np.array([0.5, 0.0, 0.5])
q = np.array([0.4, 0.3, 0.3])
print(info_measures(p, q))
# Várható: (0.6931471805599453, 1.060132521889987, 0.3669853413300417)

F4 megoldás. Három hiba van. (1) A np.mean a sum helyett átlagol, ezért a KK hosszú vektorra a helyes összeg 1/K1/K-szorosát adná; ez a batch-reduction félreértése, hasonlóan a 6.1. Objektív, reguláris tag és gradienslépés alfejezetben tárgyalt mean/sum megkülönböztetéshez. (2) A pi=0p_i=0 tagokra 0⋅lnqi0\cdot\ln q_i lehet nan, ha qi=0q_i=0; a konvenció szerint ezeket a tagokat nullának kell venni. (3) Ha pi>0p_i>0 és qi=0q_i=0, a függvény inf-et ad, de a np.mean miatt az inf átlagolása elfedi, melyik koordináta okozza a problémát. A javított függvény a laborban szereplő cross_entropy, amely np.where(p > 0, ...)-rel kezeli a nulla tagokat, összeget számol, és a support-csapdát inf-fel jelzi. A megadott bemenetre p=(0,0.5,0.5)p=(0,0.5,0.5), q=(0.5,0.5,0)q=(0.5,0.5,0): a harmadik koordinátán p3>0p_3>0 és q3=0q_3=0, ezért H(p,q)=+∞H(p,q)=+\infty; a p1=0p_1=0 tag nulla, a második tag −0.5ln0.5≈0.3466-0.5\ln 0.5\approx 0.3466, de az összeg a végtelen miatt inf.

F5 megoldásminta. A megfigyelési egység a jelenet (scene_id), nem az egyes kép, mert a GlyphLab-szerződés szerint ugyanazon jelenet nézetei korrelálnak. A pontozófüggvény a jelenetenkénti átlagos cross-entropy:

H‾=1M∑m=1MH(p(m),q(m)),\bar H=\frac1M\sum_{m=1}^M H(p^{(m)},q^{(m)}),

ahol p(m)p^{(m)} a one-hot cél, q(m)q^{(m)} a modell predikciója. A modellválasztásnál a legalacsonyabb H‾\bar H a cél, de a bizonytalanság becslésére jelenetalapú bootstrapet használunk, nem képenkéntit. A szimmetrizált KL-t azért nem választjuk elsődleges veszteségnek, mert a tanulási cél aszimmetrikus: a modell qq eloszlását büntetjük a megfigyelt pp célhoz képest, a DKL(q‖p)D_{KL}(q\Vert p) irány a nem megfigyelt eseményekre más súlyt helyezne, és a support-csapda iránya is megfordulna. A korlát: a tesztjelenetek kis száma és a procedurális adat miatt az eredmény nem általánosítható valós képi vagy termelési feladatra.

7.1.8 Tipikus tévedés és önellenőrzés

Tévedés. „A KL-divergencia távolság, ezért szimmetrikus.” Ez hamis. A 3.1. Vektor, norma és skalárszorzat alfejezetben a metrikus távolság három tulajdonságát láttuk; a KL a szimmetriát sérti. A labor első esetében DKL(p‖q)≠DKL(q‖p)D_{KL}(p\Vert q)\neq D_{KL}(q\Vert p). Másik gyakori tévedés, hogy H(p,p)=0H(p,p)=0; valójában H(p,p)=H(p)H(p,p)=H(p), mert DKL(p‖p)=0D_{KL}(p\Vert p)=0.

Önellenőrzés. Adott p,qp,q vektorokra ellenőrizze, hogy (1) az elemek nemnegatívak és összegük 1; (2) a support-feltétel teljesül-e; (3) a számítás a 0ln00\ln 0 konvenciót használja-e; (4) a cross-entropy és az entrópia különbsége valóban a KL-t adja-e.

Visszahívás. A 6.1. Objektív, reguláris tag és gradienslépés alfejezetben a batch-átlag reduction a gradiens skáláját is meghatározta; itt a cross-entropy batch-átlaga ugyanígy viselkedik. A 6.4. Momentum és adaptív optimizálók alfejezetben látott frissítési szabályok ezt a célfüggvényt fogják csökkenteni; a KL nemszimmetriája pedig a modellválasztási irányt rögzíti.

7.1.9 Rövid összefoglaló

A diszkrét valószínűségi vektor entrópiája a bizonytalanságot méri, a cross-entropy a cél- és predikciós eloszlás közötti átlagos negatív log-valószínűséget, a KL-divergencia pedig a kettő irányított eltérését. A három mennyiségre fennáll a H(p,q)=H(p)+DKL(p‖q)H(p,q)=H(p)+D_{KL}(p\Vert q) felbontás; mindhárom pontosan akkor véges, ha supp(p)⊆supp(q)\operatorname{supp}(p)\subseteq\operatorname{supp}(q). A KL nemnegatív, de nem szimmetrikus és nem metrikus távolság. A nullás support-csapdát a pi>0p_i>0, qi=0q_i=0 eset okozza, amely végtelen cross-entropy-t és KL-t ad. A labor ezt két kis eloszláson numerikusan is ellenőrizte.

7.1.10 Következő alkalmazás

A 7.2. Softmax és többosztályos cross-entropy alfejezetben a többosztályos softmax és a logits-alapú cross-entropy következik, ahol a modell kimenete nem feltétlenül normalizált, és a numerikus stabilitás miatt a softmax és a logaritmus együttes implementálása kerül előtérbe; a [D07] szerint a PyTorch CrossEntropyLoss logits bemenetet vár int64 célindexszel.

7.1.11 Források