7.3 Bináris, multilabel és regressziós cél

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

A 7.2. Softmax és többosztályos cross-entropy egységben a többosztályos célhoz tartozó softmax–cross-entropy párt vezettük be. Nem minden osztályozási feladat ilyen: egyetlen képhez tartozhat egyszerre több címke is, egyetlen bináris döntéshez pedig nincs szükség KK osztály logitjára. Emellett a neurális háló kimenete nem mindig osztálycímke: regressziós cél esetén valós számot jósolunk, amelyhez más veszteség illik. Ebben az alfejezetben a bináris, multilabel és regressziós célokhoz tartozó outputaktivációt és loss-szerződést építjük fel.

Előismeret: logit fogalma, softmax és természetes logaritmus (7.2. Softmax és többosztályos cross-entropy); batchgradiens és átlagolási konvenció (6.3. Sztochasztikus és minibatch gradiens); legkisebb négyzetek alapgondolata (3.3. Vetítés, legkisebb négyzetek és kondicionáltság). Programozói eszközként elég egy NumPy- vagy PyTorch-alapú tenzorkörnyezet.

Induló kérdés: egy modell három lehetséges betegség egyidejű jelenlétét becsli egy röntgenfelvételen. Miért nem elegendő a három kimenetű softmax, ha egy betegnek egyszerre két betegsége is lehet? Erre a kérdésre a multilabel szerződés ad pontos választ.

7.3.2 Definíciók és alakok

Logit. A neurális háló végső affin rétegének aktiváció előtti kimenete a logit. Egy NN elemű minibatch esetén a logitokat Z∈ℝN×KZ\in\mathbb R^{N\times K} jelöli, ahol KK az osztályok vagy célváltozók száma. A logit nem valószínűség: lehet negatív, nulla vagy tetszőlegesen nagy.

Bináris cél és sigmoid. Bináris osztályozásban minden megfigyeléshez egyetlen y∈{0,1}y\in\{0,1\} cél tartozik. A modell egyetlen z∈ℝz\in\mathbb R logitot ad, amelyből a

σ(z)=11+e−z \sigma(z)=\frac{1}{1+e^{-z}}

szigmoid aktiváció [0,1][0,1]-beli becsült pozitív valószínűséget készít. Batchelt alakban: Z∈ℝN×1Z\in\mathbb R^{N\times 1} (vagy PyTorch-ban (N,)(N,)) és Y∈{0,1}NY\in\{0,1\}^{N}; a cél float32, mert a veszteségfüggvény valós célokkal dolgozik.

BCEWithLogits. A bináris cross-entropy logitbemenettel egy megfigyelésre:

ℓ(z,y)=−ylogσ(z)−(1−y)log(1−σ(z)). \ell(z,y)=-y\log\sigma(z)-(1-y)\log(1-\sigma(z)).

Batchelt mean reduction esetén L=1N∑n=1Nℓ(zn,yn)L=\frac1N\sum_{n=1}^{N}\ell(z_n,y_n); sum reduction esetén az összeget jelöljük külön. A PyTorch BCEWithLogitsLoss ezt a formulát számítja numerikusan stabil módon, tehát a bemenete logit, nem szigmoidált érték. A szigmoid és a BCE különválasztása (σ(z)\sigma(z) majd BCELoss) numerikusan kevésbé stabil, mert a logaritmus alá kerülhet nagyon kicsi pozitív szám.

Multilabel cél. Multilabel osztályozásban minden megfigyeléshez egy Y∈{0,1}N×KY\in\{0,1\}^{N\times K} float32 célmátrix tartozik: ynk=1y_{nk}=1, ha az nn-edik példának a kk-adik címke jelen van. A modell Z∈ℝN×KZ\in\mathbb R^{N\times K} logitmátrixot ad, és minden (n,k)(n,k) párra külön bináris BCE-t számítunk:

L=1NK∑n=1N∑k=1K[−ynklogσ(znk)−(1−ynk)log(1−σ(znk))] L=\frac1{NK}\sum_{n=1}^{N}\sum_{k=1}^{K}\left[-y_{nk}\log\sigma(z_{nk})-(1-y_{nk})\log(1-\sigma(z_{nk}))\right]

a reduction='mean' konvenció szerint. Fontos: itt nincs softmax a kk dimenzió mentén, mert az osztályok nem zárják ki egymást.

Regressziós cél és MSE. Ha a cél valós vektor Y∈ℝN×doutY\in\mathbb R^{N\times d_{out}}, a modell Z∈ℝN×doutZ\in\mathbb R^{N\times d_{out}} kimenetet ad aktiváció nélkül, és a veszteség az átlagos négyzetes hiba:

L=1Ndout∑n=1N∥zn−yn∥22=1Ndout∑n=1N∑j=1dout(znj−ynj)2, L=\frac1{N d_{out}}\sum_{n=1}^{N}\|z_n-y_n\|_2^2 =\frac1{N d_{out}}\sum_{n=1}^{N}\sum_{j=1}^{d_{out}}(z_{nj}-y_{nj})^2,

ahol a reduction='mean' PyTorch-konvenció a batch és a kimeneti dimenzió összes elemén átlagol. A mintánkénti négyzetes normák 1/N1/N-es átlaga ettől doutd_{out}-szoros tényezővel különbözik; a kettőt nem szabad azonosnak tekinteni. A skalárkimenetű (dout=1d_{out}=1) esetben a képletek megegyeznek.

Class weights. Kiegyensúlyozatlan célok esetén a veszteséghez súlyok adhatók. Bináris BCE esetén a pos_weight paraméterrel a pozitív osztály tagját c∈ℝ>0c\in\mathbb R_{>0} súllyal szorozzuk:

ℓc(z,y)=−cylogσ(z)−(1−y)log(1−σ(z)). \ell_c(z,y)=-c\,y\log\sigma(z)-(1-y)\log(1-\sigma(z)).

Multilabel esetén osztályonkénti wkw_k súlyokat használhatunk; többosztályos cross-entropy esetén a weight paraméter a −logpyn-\log p_{y_n} tagot súlyozza. A súlyozás nem változtatja meg a target dype-ot vagy alakot.

7.3.3 Levezetések

7.3.3.1 Tétel (BCE logitgradiense)

Legyen ℓ(z,y)=−ylogσ(z)−(1−y)log(1−σ(z))\ell(z,y)=-y\log\sigma(z)-(1-y)\log(1-\sigma(z)), ahol y∈{0,1}y\in\{0,1\} rögzített és z∈ℝz\in\mathbb R. Ekkor

dℓdz=σ(z)−y. \frac{d\ell}{dz}=\sigma(z)-y.

Bizonyítás. A szigmoid deriváltja σ′(z)=σ(z)(1−σ(z))\sigma'(z)=\sigma(z)(1-\sigma(z)), amit a hányadosszabályból vagy a logisztikus differenciálegyenletből kapunk. A láncszabállyal:

ddz[−ylogσ(z)]=−yσ′(z)σ(z)=−y(1−σ(z)), \frac{d}{dz}\left[-y\log\sigma(z)\right] =-y\frac{\sigma'(z)}{\sigma(z)} =-y(1-\sigma(z)),

és

ddz[−(1−y)log(1−σ(z))]=−(1−y)−σ′(z)1−σ(z)=(1−y)σ(z). \frac{d}{dz}\left[-(1-y)\log(1-\sigma(z))\right] =-(1-y)\frac{-\sigma'(z)}{1-\sigma(z)} =(1-y)\sigma(z).

Összeadva:

−y(1−σ(z))+(1−y)σ(z)=−y+yσ(z)+σ(z)−yσ(z)=σ(z)−y. -y(1-\sigma(z))+(1-y)\sigma(z) =-y+y\sigma(z)+\sigma(z)-y\sigma(z) =\sigma(z)-y.

Ez a kifejezés y=1y=1 esetén σ(z)−1\sigma(z)-1, tehát negatív, amikor a modell a pozitív osztályhoz tartozó becslése kicsi; ilyenkor a gradiens a logit növelése felé mutat. y=0y=0 esetén σ(z)\sigma(z), ami csökkenti a logitot, ha a modell tévesen magas valószínűséget ad. A batchelt mean derivált a 4.3. Jacobi-mátrix, láncszabály és VJP alfejezetbeli VJP-konvenció miatt 1N(σ(Z)−Y)\frac1N(\sigma(Z)-Y) alakú.

7.3.3.2 Levezetés (Gauss-feltevéshez kötött MSE)

Tegyük fel, hogy a cél y∈ℝy\in\mathbb R a modell f(x)f(x) kimenetének és egy additív zajnak az összege:

y=f(x)+ε,ε∼𝒩(0,σ2), y=f(x)+\varepsilon,\qquad \varepsilon\sim\mathcal N(0,\sigma^2),

ahol σ2∈ℝ>0\sigma^2\in\mathbb R_{>0} ismert, rögzített variancia. A feltételes likelihood sűrűsége:

p(y∣x)=12πσ2exp(−(y−f(x))22σ2). p(y\mid x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(y-f(x))^2}{2\sigma^2}\right).

A negatív log-likelihood (NLL) egy megfigyelésre:

−logp(y∣x)=(y−f(x))22σ2+12log(2πσ2). -\log p(y\mid x) =\frac{(y-f(x))^2}{2\sigma^2}+\frac12\log(2\pi\sigma^2).

A ff paramétereitől független konstans tagot elhagyva a minimalizálandó cél az

12σ2(y−f(x))2 \frac{1}{2\sigma^2}(y-f(x))^2

kifejezés. Mivel σ2\sigma^2 rögzített, az (y−f(x))2(y-f(x))^2 négyzetes hiba minimalizálása ekvivalens az NLL minimalizálásával: a pozitív skálázás nem változtatja meg az optimum helyét. Ez az ekvivalencia azonban csak a fenti Gauss-feltevés mellett érvényes. Ha σ2\sigma^2-et is becsülni kell, vagy a zaj nem additív Gauss, az MSE már nem indukál ugyanolyan likelihood-feladatot; például heteroszkedasztikus zajnál külön varianciamodellt kell becsülni.

7.3.4 Kézi kis példa

Legyen egy bináris megfigyelés logitja z=0z=0 és célja y=1y=1. Ekkor σ(0)=0.5\sigma(0)=0.5, a BCE veszteség

ℓ(0,1)=−log0.5=log2≈0.6931. \ell(0,1)=-\log 0.5=\log 2\approx 0.6931.

A gradiens a fenti tétel szerint σ(0)−1=−0.5\sigma(0)-1=-0.5.

Multilabel esetben legyen K=2K=2, z=(1,−2)z=(1,-2) és y=(1,0)y=(1,0). A két elem BCE-je:

ℓ(1,1)=−logσ(1)=−log0.73106≈0.3133, \ell(1,1)=-\log\sigma(1)=-\log 0.73106\approx 0.3133,

ℓ(−2,0)=−log(1−σ(−2))=−log0.88080≈0.1269. \ell(-2,0)=-\log(1-\sigma(-2))=-\log 0.88080\approx 0.1269.

A reduction='mean' veszteség (0.3133+0.1269)/2=0.2201(0.3133+0.1269)/2=0.2201.

Regressziós példa: z=(1.5,4.5)z=(1.5,4.5), y=(2,4)y=(2,4), dout=2d_{out}=2. A négyzetes hibák: (1.5−2)2=0.25(1.5-2)^2=0.25, (4.5−4)2=0.25(4.5-4)^2=0.25, az átlag 0.250.25.

7.3.5 Labor: shape- és dtype-ellenőrzés

A labor három eltérő célszerződést ellenőriz shape- és dtype-szempontból. Az alábbi tábla az érvényes konfigurációkat foglalja össze:

Feladat Logit alak Target alak Target dtype Loss
Bináris (N,1)(N,1) vagy (N,)(N,) a logittal pontosan azonos alak float32 BCEWithLogitsLoss
Multilabel (N,K)(N,K) (N,K)(N,K) float32 BCEWithLogitsLoss
Regresszió (N,dout)(N,d_{out}) (N,dout)(N,d_{out}) float32 MSELoss

Hibás példák és javításuk:

  1. Hiba: többosztályos one-hot cél float32 alakkal (N,K)(N,K) a BCEWithLogitsLoss-nak adva, a modell KK logitot ad. Következmény: a könyvtár ezt multilabelként értelmezi; minden osztályt függetlenül kezel, nincs softmax normalizálás, ezért a modell helytelen szerződést tanul. Javítás: ha a cél egyetlen kizárólagos osztály, használjunk CrossEntropyLoss-t int64 célindexszel.

  2. Hiba: bináris BCE-nek int64 target. Következmény: dtype-hiba vagy csendes átkonvertálási kísérlet; a BCE a célokat valósnak feltételezi. Javítás: y.to(torch.float32).

  3. Hiba: regressziós MSELoss-nak int64 target. Következmény: a veszteség nem tudja a gradienst visszavezetni a targetre (nem is kell), de az input-típus-ellenőrzés hibát adhat. Javítás: a target legyen float32.

Az alábbi kód a fenti ellenőrzést futtatja; a kimeneti értékek számított példák, a kódot a laborban külön futtatni kell:

# labor/n027_shape_check.py
import torch

torch.manual_seed(20261020)
device = torch.device("cpu")
dtype = torch.float32

# Bináris: N=2
z_bin = torch.zeros(2, 1, device=device, dtype=dtype)
y_bin = torch.tensor([[1.0], [0.0]], device=device, dtype=dtype)
loss_bin = torch.nn.functional.binary_cross_entropy_with_logits(z_bin, y_bin)
print("bináris loss, N=2:", loss_bin.item())  # számított példa: 0.6931

# Multilabel: N=1, K=2
z_ml = torch.tensor([[1.0, -2.0]], device=device, dtype=dtype)
y_ml = torch.tensor([[1.0, 0.0]], device=device, dtype=dtype)
loss_ml = torch.nn.functional.binary_cross_entropy_with_logits(z_ml, y_ml)
print("multilabel loss, N=1, K=2:", loss_ml.item())  # számított: 0.2201

# Regresszió: N=1, d_out=2
z_reg = torch.tensor([[1.5, 4.5]], device=device, dtype=dtype)
y_reg = torch.tensor([[2.0, 4.0]], device=device, dtype=dtype)
loss_reg = torch.nn.functional.mse_loss(z_reg, y_reg)
print("MSE loss, N=1, d_out=2:", loss_reg.item())  # számított: 0.25

A kimeneti értékek a kézi példából következnek; toleranciaként ±0.0001\pm0.0001 abszolút eltérés használható a print-elt értékek ellenőrzéséhez. A seed itt nem befolyásolja a veszteségeket, mert nincs véletlen mintavétel; a protokoll-egységesség miatt mégis rögzítjük.

7.3.6 Feladatok

F1 (fogalmi, nehézség 1). Egy dokumentumhoz egyszerre több témacímke is tartozhat a {0,1,2}\{0,1,2\} halmazból. Miért nem helyes egy háromkimenetű softmaxot használni? Adjunk egy konkrét Y∈{0,1}1×3Y\in\{0,1\}^{1\times 3} célt, amelyet semmilyen softmax-kimenet nem tud pontosan előállítani, és indokoljuk.

F2 (levezetési, nehézség 2). Vezessük le a BCE logitgradiensét y=1y=1 esetén közvetlenül a logisztikus függvény deriváltjának felhasználásával, majd számítsuk ki z=−3z=-3 esetén a gradiens értékét három tizedesjegy pontossággal.

F3 (implementációs, nehézség 2). Írjunk NumPy-függvényt bce_with_logits(z, y) néven, amely stabilan számítja a BCE-t az

ℓ(z,y)=softplus(z)−yz \ell(z,y)=\operatorname{softplus}(z)-y z

azonosság alapján, ahol softplus(z)=log(1+ez)\operatorname{softplus}(z)=\log(1+e^z). Ellenőrizzük a fenti azonosságot levezetéssel, és a függvényt a z=0.0,y=1.0z=0.0, y=1.0 és z=1.0,y=0.0z=1.0, y=0.0 eseteken; adjunk toleranciát is.

F4 (hibakeresési, nehézség 2). Az alábbi kód egy háromosztályos probléma céljait készíti elő:

N, K = 4, 3
logits = torch.randn(N, K, device="cpu", dtype=torch.float32)
target_onehot = torch.zeros(N, K, device="cpu", dtype=torch.float32)
target_onehot.scatter_(1, torch.randint(0, K, (N, 1), device="cpu"), 1.0)
loss = torch.nn.functional.binary_cross_entropy_with_logits(logits, target_onehot)

Mi a szerződési hiba? Milyen matematikai következménye van a predikcióra nézve? Javítsuk a kódot úgy, hogy valódi többosztályos célt használjon, és adjuk meg a helyes target dype-ot.

F5 (kísérleti/transzfer, nehézség 3). Tervezzünk kis kísérletet egy kiegyensúlyozatlan multilabel osztályozási feladatra, ahol a pozitív címkék aránya osztályonként 1%1\%, 5%5\% és 20%20\%. Hasonlítsuk össze a súlyozatlan BCE-t és a pos_weight-et (vagy osztálysúlyt) használó változatot. Adjunk protokollt: megfigyelési egység, split, baseline, változó tényező, metrika, kiértékelési korlát. Nem kell előre megjósolni a győztest.

7.3.7 Megoldások és indoklás

F1 megoldás. A softmax egy diszkrét eloszlást ad, amelynek komponensei nemnegatívak és összegük 11. Egy többcímkés cél viszont tetszőleges csúcshalmazt megenged; az Y=(1,1,0)Y=(1,1,0) vektor összege 22, tehát nem lehet eloszlás. Pontosabban, ha p=softmax(z)p=\operatorname{softmax}(z), akkor p1+p2+p3=1p_1+p_2+p_3=1, ezért p1=1p_1=1 és p2=1p_2=1 egyszerre nem teljesülhet. A helyes szerződés: KK darab független szigmoid kimenet, például (σ(z1),σ(z2),σ(z3))(\sigma(z_1),\sigma(z_2),\sigma(z_3)), és multilabel BCE.

F2 megoldás. Az y=1y=1 esetben ℓ(z,1)=−logσ(z)\ell(z,1)=-\log\sigma(z). A szigmoid deriváltja σ′(z)=σ(z)(1−σ(z))\sigma'(z)=\sigma(z)(1-\sigma(z)), így a láncszabállyal

dℓdz=−σ′(z)σ(z)=−(1−σ(z))=σ(z)−1. \frac{d\ell}{dz}=-\frac{\sigma'(z)}{\sigma(z)} =-(1-\sigma(z)) =\sigma(z)-1.

z=−3z=-3 esetén σ(−3)=11+e3≈0.047426\sigma(-3)=\frac{1}{1+e^{3}}\approx 0.047426, tehát a gradiens σ(−3)−1≈−0.952574\sigma(-3)-1\approx -0.952574, három tizedesjegyre −0.953-0.953. A negatív előjel várható: a cél pozitív, a modell becslése nagyon kicsi, ezért a logitot növelni kell.

F3 megoldás. Az azonosság: softplus(z)−yz=log(1+ez)−yz\operatorname{softplus}(z)-yz=\log(1+e^z)-yz. Mivel σ(z)=11+e−z=ez1+ez\sigma(z)=\frac{1}{1+e^{-z}}=\frac{e^z}{1+e^z}, kapjuk, hogy 1−σ(z)=11+ez1-\sigma(z)=\frac{1}{1+e^z}. Így

−log(1−σ(z))=log(1+ez)=softplus(z). -\log(1-\sigma(z))=\log(1+e^z)=\operatorname{softplus}(z).

Ezért y=0y=0 esetén a BCE softplus(z)\operatorname{softplus}(z); y=1y=1 esetén a BCE −logσ(z)=log(1+e−z)-\log\sigma(z)=\log(1+e^{-z}). A kettőt egységesen az softplus(z)−yz\operatorname{softplus}(z)-yz alak adja, ugyanis y=0y=0-nál softplus(z)\operatorname{softplus}(z), y=1y=1-nél pedig softplus(z)−z\operatorname{softplus}(z)-z. Az utóbbi: softplus(z)−z=log(1+ez)−z=log(1+ezez)=log(1+e−z)\operatorname{softplus}(z)-z=\log(1+e^z)-z = \log\left(\frac{1+e^z}{e^z}\right)=\log(1+e^{-z}), ami valóban −logσ(z)-\log\sigma(z). Tehát az azonosság helyes.

import numpy as np

def softplus(z):
    # logaddexp stabilan, elágazások túlcsorduló előértékelése nélkül
    return np.logaddexp(0.0, z)

def bce_with_logits(z, y):
    # z, y: float64 tömbök; y elemei {0,1}
    return softplus(z) - y * z

# Ellenőrzés
for z, y in [(0.0, 1.0), (1.0, 0.0)]:
    val = bce_with_logits(np.array(z), np.array(y))
    print(z, y, val)  # 0.0 1.0 0.69314718; 1.0 0.0 0.31326169

Tolerancia: a referenciaértékekhez képest |val−0.693147|<10−6|val - 0.693147|<10^{-6} és |val−0.313262|<10−6|val - 0.313262|<10^{-6}. A float64 használata a numerikus ellenőrzéshez ajánlott; a tanítási főút ettől függetlenül float32 maradhat.

F4 megoldás. A hiba: a one-hot cél BCEWithLogitsLoss-szal párosul, amely minden osztályt külön bináris problémaként kezel. A modell KK logitot ad, de nem normalizálja őket softmaxszal, így a predikált osztályok valószínűségei nem összegződnek 11-re, és a kizárólagosság nem érvényesül. A matematikai következmény: a tanulási cél nem a helyes diszkrét eloszlást közelíti. Javítás: CrossEntropyLoss int64 indexekkel:

target_class = torch.randint(0, K, (N,), device="cpu")  # int64
loss = torch.nn.functional.cross_entropy(logits, target_class)

Ekkor a logits shape (N,K)(N,K), a target shape (N,)(N,) int64, és a softmax a loss belsejében történik.

F5 megoldásminta (nyitott). Egy lehetséges terv: a GlyphLab-hoz hasonló kis szintetikus multilabel adat, ahol N=2000N=2000 független jelenet, minden jelenethez három bináris címke tartozik, a pozitív arányok 1%1\%, 5%5\%, 20%20\%. A független mintavételi egység a scene_id. Rögzített, címkénként rétegzett train/val/test split 60/20/2060/20/20 arányban. Baseline: súlyozatlan BCEWithLogitsLoss, a változat: pos_weight minden osztályhoz az inverz gyakoriság arányában, vagy osztályonkénti weight. A kísérlet változója csak a veszteségsúlyozás; a modell, az initializálás, az optimizáló, az epochszám és a seed rögzített. Metrika: per-osztály és mikro-átlagolt ROC-AUC/F1 a test spliten, az osztályaránytól független küszöbbel; emellett a becsült pozitív gyakoriság eltérése. Korlát: a kis szintetikus adat nem általánosít valós klinikai feladatra; a pos_weight javíthatja a ritka osztályok visszahívását, de ronthatja a globális F1-et, ezért nem állítunk előre győztest; legalább három seed ismétlése szükséges a bizonytalansághoz.

7.3.8 Tipikus tévedés ellenpéldával

A leggyakoribb szerződési hiba a többosztályos one-of-K cél és a multilabel cél felcserélése. Tekintsük a K=3K=3 esetet és egy olyan kérdést, ahol egy dokumentum egyszerre „matematika” és „programozás” címkéjű. A cél y=(1,1,0)y=(1,1,0). A softmax-kimenet p=(p1,p2,p3)p=(p_1,p_2,p_3) elemei nemnegatívak és p1+p2+p3=1p_1+p_2+p_3=1, ezért p1=1p_1=1 és p2=1p_2=1 egyszerre lehetetlen. Ha a hálót CrossEntropyLoss-szal tanítjuk, az y=(1,1,0)y=(1,1,0) cél int64 indexként nem is értelmezhető, mert egyetlen osztályindexet vár. Ha viszont one-hot float célként a BCE-hez adjuk, a könyvtár nem hibázik dtype miatt, de szemantikailag rossz célt tanít. Az ellenpélda tehát azt mutatja, hogy a shape egyezése önmagában nem garantálja a helyes szerződést; a célstruktúra matematikai jelentése dönt.

7.3.9 Önellenőrzés és visszahívás

Önellenőrzés: tudjuk-e a BCE gradienst batchelt mean esetén felírni 1N(σ(Z)−Y)\frac1N(\sigma(Z)-Y) alakban? Meg tudjuk-e mondani, miért nem kapunk softmaxot a multilabel BCE-ben? El tudjuk-e választani az MSE optimumát a Gauss-variancia skálázásától?

Visszahívás: a logit gradiense a 7.2. Softmax és többosztályos cross-entropy alfejezetbeli softmax esetben p−eyp-e_y volt; ezt a BCE σ(z)−y\sigma(z)-y gradiense egészíti ki, és mindkettő a logit bemenetű, numerikusan stabil lossok közös tulajdonsága. A mean/sum reduction különbsége a 6.3. Sztochasztikus és minibatch gradiens alfejezetben tárgyalt batch-átlagozáshoz kapcsolódik; a reguláris tagoknál ugyanez a pontos skála megadásának kötelezettsége. Az MSE pedig a 3.3. Vetítés, legkisebb négyzetek és kondicionáltság alfejezetbeli legkisebb négyzetek elvének neurális megfelelője.

7.3.10 Rövid összefoglaló

A bináris cél logitból szigmoiddal alakul valószínűséggé, a BCEWithLogits pedig numerikusan stabil formulát ad; gradiense σ(z)−y\sigma(z)-y. Multilabel cél esetén KK célbithez KK független szigmoid tartozik, nincs softmax, a célmátrix float32. Regressziós cél aktiváció nélküli logitot használ, és MSE-vel tanul; ez rögzített varianciájú additív Gauss-zaj mellett ekvivalens a negatív log-likelihood minimalizálásával. A class weight a ritka célokra ad kontrollt, de nem változtatja meg a target alakját vagy dtype-ját. A labor shape- és dtype-táblája a három szerződést ellenőrzi.

7.3.11 Következő alkalmazás

A 7.4. Numerikus stabilitás és jelentésmegőrző implementáció egységben a numerikus stabilitást és a jelentésmegőrző implementációt általánosítjuk: a log-softmax, a BCE és az MSE implementációs trükkjei után megvizsgáljuk, hogyan őrizhető meg a matematikai jelentés lebegőpontos környezetben.

7.3.12 Források