22.3 Zajos és hiányos címke

22.3.1 1. Cél, előismeret és induló kérdés

A 22.2. Címkemegőrző transzformációk egység azt vizsgálta, mely transzformáció őrzi meg a GlyphLab orientációs címkéjét. Most ugyanannak a tanulási szerződésnek a másik oldalát vizsgáljuk: mi történik, ha nem a transzformáció, hanem maga a címke hibás. A címkezaj nem javítható egyszerűen nagyobb kapacitású modellel, és nagyon különbözik a bemeneti képen megjelenő zajtól. A 21.3. Dropout, súlyregularizálás és augmentáció regularizáló eszközei, a 18.3. Pre-activation, kis batch és alternatív normalizálás normalizáló rétegei és a 10.3. Gradiensellenőrzés és numerikus hibamérce numerikus ellenőrzési protokollja mind feltételezték, hogy a tanulási cél yiy_i érvényes; ezt a feltételt most fellazítjuk. Az induló kérdés: ha egy tanító képsorozat címkéinek egy része véletlenül másik osztályra mutat, mennyire torzul a clean validációra mért osztályozó, és mit tehetünk a kísérleti jegyzőkönyvben?

Előismeret: a többosztályos logit/cross-entropy szerződés (7.2. Softmax és többosztályos cross-entropy), a scene-szintű split és a train/val/test elkülönítés (22.1. Adateredet, címke és csoportos split), valamint a feltételes valószínűség és a teljes valószínűség tétele (5.1. Esemény, feltétel és véletlen változó). A labor továbbra is a helyi GlyphLab-adatokat használja, előtanított súly és GPU nélkül.

22.3.2 2. Definíciók és intuíció

Legyen 𝒳\mathcal X a képtér, 𝒴={0,1,…,K−1}\mathcal Y=\{0,1,\ldots,K-1\} az osztályindexek halmaza. A tiszta megfigyelés az (X,Y)(X,Y) pár; a tanulási mintában azonban gyakran a zajos Ỹ\tilde Y érték áll rendelkezésre. A képek továbbra is X∈ℝN×1×24×24X\in\mathbb R^{N\times 1\times 24\times 24} alakúak, a célok y∈𝒴Ny\in\mathcal Y^N, a zajos cél ỹ∈𝒴N\tilde y\in\mathcal Y^N.

Definíció (címkezaj, label noise). A mintában szereplő Ỹ\tilde Y címke címkezajos, ha Ỹ\tilde Y nem determinisztikus függvénye a tiszta párnak, és a hiba a céloldalon következik be: P(Ỹ≠Y)>0P(\tilde Y\neq Y)>0. A domináns feltevés szerint XX érintetlen, és Ỹ\tilde Y feltételesen független XX-től a YY értékére szorítkozva. A feltételt rövidítve: Ỹ⊥⊥X∣Y\tilde Y \perp\!\!\!\perp X \mid Y. Ez a klasszifikációcímkék tipikus elírás-, félreolvasás- vagy gépi átírási modellje.

Definíció (kovariáns zaj, covariate noise). A mintában a bemenet torzul: X̃\tilde X figyelhető meg, a cél YY változatlan. A feltételes függetlenségi feltevés Y⊥⊥X̃∣XY \perp\!\!\!\perp \tilde X \mid X. Példa: a GlyphLab két nézete ugyanahhoz a scene-hez és címkéhez tartozik, de a két kép véletlen szenzor- vagy megvilágítási zajjal tér el; ez nem címkezaj, hanem bemeneti zaj. A kettő következménye alapvetően eltér: a kovariáns zaj a döntési felületet a bemeneti térben mossa el, a címkezaj a cél kódolását.

Gyenge felügyelet (weak supervision). Olyan tanulási beállítás, ahol a címkék nem egyenként, emberi szakértő által ellenőrzöttek, hanem szabályokból, heurisztikákból, távoli forrásból vagy programozott annotációból származnak. A gyenge címke felfogható szisztematikus, nem feltétlenül sztochasztikus címkezajként; hibatulajdonságai nem cserélhetők fel a szimmetrikus véletlen zajéval.

Annotátorok közötti egyetértés (annotation agreement). Két vagy több annotátor döntésének egyezési mértéke; bináris esetben például Cohen-féle kappa, több annotátorra Fleiss-féle kappa. Az egyetértés a címkeminőség folyamatmutatója, nem a tiszta címke bizonyítéka: két annotátor szisztematikusan ugyanazt a hibát is elkövetheti. A review lépés a vitás vagy alacsony megbízhatóságú rekordok célzott átvizsgálása és javítása a modellválasztás előtt. A review során tilos a val/test címkék megváltoztatása a modell kimenetének ismeretében, mert az adaptív célmanipuláció.

Leakage (szivárgás). Bármely olyan út, amely a train folyamatot a val/test cél vagy a val/test megfigyelési egység azonosítójának tiltott ismeretéhez juttatja. A címkezajos kísérletben leakage, ha a zajszimulációhoz a val/test címkéket használjuk fel, vagy ha a zajos tanítóhalmazt a validáció hibája alapján utólag újracímkézzük. A split határai a zajmodell bevezetése után is érvényesek.

22.3.3 3. A szimulált címkezaj modellje és a kovariáns zaj különbsége

A laborban a zajt szabályozottan, szimulációval visszük be. A modellt formálisan definiáljuk, majd egy lemmában kiszámítjuk az osztályprior torzulását.

Definíció (szimulált címkezaj-modell). Legyen adott a Q∈[0,1]K×KQ\in[0,1]^{K\times K} zajátmenet-mátrix, ahol Qkj=P(Ỹ=j∣Y=k),∑j=0K−1Qkj=1∀k.Q_{kj}=P(\tilde Y=j\mid Y=k),\qquad \sum_{j=0}^{K-1}Q_{kj}=1 \quad\forall k. A zajos példa generálása: Xi∼PX,Yi∼PY|X(⋅∣Xi),Ỹi∼Cat(QYi,0,…,QYi,K−1),X_i\sim P_X,\qquad Y_i\sim P_{Y|X}(\cdot\mid X_i),\qquad \tilde Y_i\sim \operatorname{Cat}(Q_{Y_i,0},\ldots,Q_{Y_i,K-1}), és feltesszük, hogy Ỹi\tilde Y_i független minden mástól a YiY_i értékére feltételesen. Az (Xi,Ỹi)(X_i,\tilde Y_i) párok alkotják a tanító mintát; a tiszta YiY_i legfeljebb az értékelésben jelenik meg, a tanításkor nem.

A leggyakoribb szimuláció a szimmetrikus zaj: adott ϵ∈[0,1]\epsilon\in[0,1] teljes flip-ráta mellett minden osztály azonos eséllyel hibásodik, és a hibás címke egyenletesen választódik a többi K−1K-1 osztály közül: Qkj={1−ϵ,k=j,ϵK−1,k≠j.Q_{kj}=\begin{cases} 1-\epsilon, & k=j,\\ \frac{\epsilon}{K-1}, & k\neq j. \end{cases}

Lemma (a megfigyelt osztályprior torzulása). Legyen a tiszta prior πj=P(Y=j)\pi_j=P(Y=j), és a zaj a fenti feltételes függetlenséget teljesítő átmenetmátrixszal adott. Ekkor a megfigyelt osztálygyakoriság eloszlása π̃j=P(Ỹ=j)=∑k=0K−1πkQkj.\tilde\pi_j=P(\tilde Y=j)=\sum_{k=0}^{K-1}\pi_k\,Q_{kj}.

Bizonyítás. A teljes valószínűség tételét alkalmazzuk a YY értékeire: P(Ỹ=j)=∑k=0K−1P(Ỹ=j,Y=k)=∑k=0K−1P(Y=k)P(Ỹ=j∣Y=k)=∑k=0K−1πkQkj.P(\tilde Y=j)=\sum_{k=0}^{K-1}P(\tilde Y=j,\ Y=k)=\sum_{k=0}^{K-1}P(Y=k)\,P(\tilde Y=j\mid Y=k)=\sum_{k=0}^{K-1}\pi_k Q_{kj}. Az első egyenlőség a partíció, a második a feltételes valószínűség szorzatszabálya, a harmadik a definíció behelyettesítése. ▫\square

Következmény (szimmetrikus zaj). A szimmetrikus zajra π̃j=(1−ϵ)πj+ϵK−1∑k≠jπk=(1−ϵ)πj+ϵK−1(1−πj).\tilde\pi_j=(1-\epsilon)\pi_j+\frac{\epsilon}{K-1}\sum_{k\neq j}\pi_k=(1-\epsilon)\pi_j+\frac{\epsilon}{K-1}(1-\pi_j). Ebből π̃j−πj=ϵK−1(1−Kπj)\tilde\pi_j-\pi_j=\frac{\epsilon}{K-1}(1-K\pi_j). Egyenletes priorra (πj=1/K\pi_j=1/K minden jj-re) a szimmetrikus zaj nem torzítja a marginális osztálygyakoriságot; más priorra azonban a ritka osztályok felé húz.

Ez a lemma világosan mutatja a címkezaj és a kovariáns zaj formális különbségét. A kovariáns zaj generatív modellje: Xi∼PX,Yi∼PY|X(⋅∣Xi),X̃i∼q(⋅∣Xi),Yi⊥⊥X̃i∣Xi.X_i\sim P_X,\qquad Y_i\sim P_{Y|X}(\cdot\mid X_i),\qquad \tilde X_i\sim q(\cdot\mid X_i),\qquad Y_i\perp\!\!\!\perp \tilde X_i\mid X_i. Itt a cél YiY_i a torzított bemenet ellenére is az eredeti posteriorból származik; a zaj a X→X̃X\to \tilde X élen hat. A címkezajnál a zaj a Y→ỸY\to\tilde Y élen hat, és XX érintetlen. A két generatív gráf tehát különböző faktorizációt ad: P(X,Y,Ỹ)=P(X,Y)P(Ỹ∣Y)P(X,Y,\tilde Y)=P(X,Y)P(\tilde Y\mid Y), illetve P(X,Y,X̃)=P(X,Y)q(X̃∣X)P(X,Y,\tilde X)=P(X,Y)q(\tilde X\mid X). A fontos következmény: véges mintán a címkezajos tanítás még akkor sem közelíti a tiszta Bayes-osztályozót, ha a modellkapacitás és a mintaméret nő, mert a cél maga torzult; a kovariáns zaj esetén a tiszta döntési szabály a torzított bemenetre alkalmazva értelmezhető, bár általában nem optimális.

22.3.4 4. Kézi kis példa és minimális kód

Legyen K=3K=3, prior π=(0,5;0,3;0,2)\pi=(0{,}5;0{,}3;0{,}2), szimmetrikus zaj ϵ=0,2\epsilon=0{,}2. A zajátmenet-mátrix: Q=(0,80,10,10,10,80,10,10,10,8).Q=\begin{pmatrix} 0{,}8 & 0{,}1 & 0{,}1\\ 0{,}1 & 0{,}8 & 0{,}1\\ 0{,}1 & 0{,}1 & 0{,}8 \end{pmatrix}. A lemma alapján: π̃0=0,5⋅0,8+0,3⋅0,1+0,2⋅0,1=0,45,\tilde\pi_0=0{,}5\cdot0{,}8+0{,}3\cdot0{,}1+0{,}2\cdot0{,}1=0{,}45, π̃1=0,5⋅0,1+0,3⋅0,8+0,2⋅0,1=0,31,\tilde\pi_1=0{,}5\cdot0{,}1+0{,}3\cdot0{,}8+0{,}2\cdot0{,}1=0{,}31, π̃2=0,5⋅0,1+0,3⋅0,1+0,2⋅0,8=0,24.\tilde\pi_2=0{,}5\cdot0{,}1+0{,}3\cdot0{,}1+0{,}2\cdot0{,}8=0{,}24. A három érték összege 11. A ritka harmadik osztály gyakorisága nőtt (0,2→0,240{,}2\to0{,}24), a gyakori első osztályé csökkent (0,5→0,450{,}5\to0{,}45).

Ellenőrzésül a zajgenerálás minimális kódja:

import numpy as np

def symmetric_label_noise(labels, K, eps, rng):
    """labels: (N,) int; minden címkét eps eséllyel egyenletesen
    kicserél a többi K-1 osztály valamelyikére."""
    noisy = labels.copy()
    flips = rng.random(len(labels)) < eps
    for i in np.where(flips)[0]:
        others = [j for j in range(K) if j != labels[i]]
        noisy[i] = rng.choice(others)
    return noisy

rng = np.random.default_rng(7)
y = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0])
y_t = symmetric_label_noise(y, 3, 0.2, rng)
print("clean:", y)
print("noisy:", y_t)
print("flip rate:", np.mean(y != y_t))

Egy konkrét seed mellett a kimenet változhat; a lényegi ellenőrzés az, hogy a tesztpéldában a várható flip-ráta ϵ\epsilon körül ingadozik, és a zajos címkék mindig 0,…,K−10,\ldots,K-1 közé esnek. A kód nem a tanítás, hanem a zajmodell elemi referenciaimplementációja.

22.3.5 5. Labor: szabályozott label noise a GlyphLab train részén

Kérdés. Hogyan változik a clean validációra mért loss és accuracy, ha a train címkék ϵ\epsilon hányadát szimmetrikusan kicseréljük?

Protokoll. Csak a data/metadata.csv szerinti train split indexeire alkalmazunk zajt. A valid és test tiszta marad. Minden ϵ∈{0,0;0,1;0,2;0,4}\epsilon\in\{0{,}0;0{,}1;0{,}2;0{,}4\} esetén új tanítást indítunk, rögzített seeddel. A modell kisméretű CNN, 3 kimeneti logittal; tanítás Adam-optimizálóval, cross-entropy loss-szal, 20 epochig. A kiválasztáshoz nem használjuk a testet; a clean validációs accuracy-t és loss-t jegyezzük fel.

Az alábbi kód a lab/n087_label_noise_lab.py munkakönyvtárban futtatható:

import numpy as np
import pandas as pd
import torch
import torch.nn as nn
import torch.optim as optim

SEED = 20261020
DEVICE = torch.device("cpu")
torch.manual_seed(SEED)
rng = np.random.default_rng(SEED)

images = np.load("data/images.npy")      # (360,1,24,24) float32
labels = np.load("data/labels.npy")      # (360,) int64
meta = pd.read_csv("data/metadata.csv")
train_idx = meta[meta.split == "train"].index.to_numpy()
val_idx   = meta[meta.split == "val"].index.to_numpy()

K = 3

def symmetric_label_noise(y, eps, rng):
    noisy = y.copy()
    flips = rng.random(len(y)) < eps
    for i in np.where(flips)[0]:
        others = np.setdiff1d(np.arange(K), y[i])
        noisy[i] = rng.choice(others)
    return noisy

class SmallCNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Conv2d(1, 8, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
            nn.Conv2d(8, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
            nn.Flatten(), nn.Linear(16*6*6, 32), nn.ReLU(),
            nn.Linear(32, K)
        )
    def forward(self, x):
        return self.net(x)

def run(eps):
    y_train = symmetric_label_noise(labels[train_idx], eps, rng)
    Xtr = torch.tensor(images[train_idx], dtype=torch.float32)
    ytr = torch.tensor(y_train, dtype=torch.long)
    Xva = torch.tensor(images[val_idx], dtype=torch.float32)
    yva = torch.tensor(labels[val_idx], dtype=torch.long)
    model = SmallCNN().to(DEVICE)
    opt = optim.Adam(model.parameters(), lr=1e-3)
    crit = nn.CrossEntropyLoss()
    ds = torch.utils.data.TensorDataset(Xtr, ytr)
    dl = torch.utils.data.DataLoader(ds, batch_size=32, shuffle=True)
    for _ in range(20):
        model.train()
        for xb, yb in dl:
            opt.zero_grad(); crit(model(xb), yb).backward(); opt.step()
    model.eval()
    with torch.no_grad():
        val_loss = crit(model(Xva), yva).item()
        val_acc = (model(Xva).argmax(1) == yva).float().mean().item()
    return val_loss, val_acc

print("eps   val_loss_clean  val_acc_clean")
for eps in [0.0, 0.1, 0.2, 0.4]:
    loss, acc = run(eps)
    print(f"{eps:3.1f}  {loss:9.4f}       {acc:6.4f}")

Futtatási parancs a lab könyvtárból: python n087_label_noise_lab.py. A SmallCNN az előző ellenőrzőpontokban használt kisméretű osztályozó adaptációja; a torch.utils.data.TensorDataset használata a [D08] dokumentáció szerinti, a futtatás környezeti PyTorch-verzióját a jegyzőkönyvben ellenőrizni és rögzíteni kell. A seed, a dtype (float32/int64) és a device rögzített. A kimenetet itt nem mértük, ezért csak a modell alapján várt trendet jelölhetjük:

eps   val_loss_clean  val_acc_clean
0.0   0.42            0.87   (jelölt szemléltetés)
0.1   0.65            0.79   (jelölt szemléltetés)
0.2   0.83            0.73   (jelölt szemléltetés)
0.4   1.05            0.58   (jelölt szemléltetés)

A számok nem futtatott mérés, csak a zajmodell alapján várható irány szemléltetése. A tényleges futásnál a pontos értéket seed-szórás is terheli; a clean validáció értelmezése feltételes, ismételt mintavételi konfidenciaintervallumot igényelne, ahogy az [S02] módszertani oldala is hangsúlyozza. Értelmezés: növekvő ϵ\epsilon mellett a clean valid loss monoton nő, az accuracy csökken; a kis ϵ\epsilon tartományban a zaj egy része implicit regularizációként is hathat, de ez nem garantált, és nem teszi a zajt tervezett eszközzé.

22.3.6 6. Feladatok

F1 fogalmi, nehézség 1. Hasonlítsa össze a címkezajt, a kovariáns zajt és a gyenge felügyeletet a generatív modell és a hibatípus szerint. Adj olyan GlyphLab-példát, ahol a két nézet különbsége kovariáns zaj, és olyan módosítást, amely címkezajt visz be anélkül, hogy a képet megváltoztatná. Elvárt átadandó eredmény: két formális szorzatfaktorizáció és egy-egy saját példa.

F2 levezetési, nehézség 2. Legyen K=3K=3, prior π=(0,5;0,3;0,2)\pi=(0{,}5;0{,}3;0{,}2), szimmetrikus zaj ϵ=0,2\epsilon=0{,}2. Számítsa ki a P(Y=0∣Ỹ=0)P(Y=0\mid\tilde Y=0) és P(Y=2∣Ỹ=2)P(Y=2\mid\tilde Y=2) feltételes valószínűségeket. Ellenőrizze, hogy az átmenetmátrix invertálható-e, és ebből visszanyerhető-e a tiszta prior a megfigyelt priorból. Elvárt eredmény: teljes levezetés, numerikus értékek, invertálhatósági indoklás, és annak megfogalmazása, miért nem állítja ez helyre a tiszta posteriort.

F3 implementációs, nehézség 2. Írjon függvényt asymmetric_label_noise(labels, flip_pairs, probs, rng) alakban, ahol flip_pairs explicit (k→j)(k\to j) párok listája, probs a megfelelő flip-valószínűség. A függvény adja vissza a zajos címkéket és a tényleges flip-maszkot. Tesztelje 1000 szintetikus címkén, hogy a flip-ráta a megadott valószínűségek 0,02 abszolút tűrésén belül van. Elvárt eredmény: teljes kód, teszt és tolerancia.

F4 hibakeresési, nehézség 2. Az alábbi kódrészlet a validációs címkéket is zajosítja, majd a kapott „clean accuracy”-t használja a legjobb epoch kiválasztásához. Azonosítsa a hibát, annak következményét a modellválasztásra, és adja meg a javított eljárást úgy, hogy a train zaj ráta 0,20{,}2, de a valid tiszta marad. Mutassa meg, milyen ellenőrzéssel bizonyítható, hogy a javítás valóban tiszta validációt mér. Elvárt eredmény: ok, következmény, javított kódrészlet, visszaellenőrzés.

F5 kísérleti/transzfer, nehézség 3. Tervezzen gyenge felügyeletű változatot a GlyphLab feladatra: az orientációt ne emberi címke, hanem képnyomaték-alapú heurisztika adja meg. Fogalmazzon meg protokollt, amely a clean train címkével tanított baseline-t hasonlítja a gyenge címkével tanított modellhez, scene-szintű bootstrap-tel az accuracy-különbségre. Milyen érvényességi korlát következik abból, hogy a gyenge címkék hibája várhatóan nem szimmetrikus? Elvárt eredmény: hipotézis, megfigyelési egység, baseline, metrika, érvényességi korlát.

22.3.7 7. Megoldások és indoklás

F1 megoldás. A címkezaj generatív modellje P(X,Y,Ỹ)=P(X,Y)P(Ỹ∣Y)P(X,Y,\tilde Y)=P(X,Y)P(\tilde Y\mid Y), ahol a zaj a Y→ỸY\to\tilde Y élen hat, és XX érintetlen. A kovariáns zaj modellje P(X,Y,X̃)=P(X,Y)q(X̃∣X)P(X,Y,\tilde X)=P(X,Y)q(\tilde X\mid X), ahol a zaj az X→X̃X\to\tilde X élen hat, és YY érintetlen. A gyenge felügyelet determinisztikus vagy sztochasztikus címkeképző szabályokból származó cél, amely formálisan a címkezaj egyik speciális, gyakran szisztematikus esete; nem azonos a bemeneti torzulással. GlyphLab-példa: a két nézet közötti pixelzaj kovariáns; ha a data/labels.npy egy részét a szomszédos orientációra írjuk át a képek módosítása nélkül, az címkezaj.

F2 megoldás. A 4. szakasz QQ mátrixával π̃0=0,45\tilde\pi_0=0{,}45, π̃2=0,24\tilde\pi_2=0{,}24. A Bayes-szabály szerint P(Y=0∣Ỹ=0)=P(Y=0)Q00π̃0=0,5⋅0,80,45=0,8889,P(Y=0\mid\tilde Y=0)=\frac{P(Y=0)Q_{00}}{\tilde\pi_0}=\frac{0{,}5\cdot0{,}8}{0{,}45}=0{,}8889, P(Y=2∣Ỹ=2)=0,2⋅0,80,24=0,6667.P(Y=2\mid\tilde Y=2)=\frac{0{,}2\cdot0{,}8}{0{,}24}=0{,}6667. A QQ mátrix szimmetrikus és sajátértékei 11 és 1−KK−1ϵ1-\frac{K}{K-1}\epsilon kétszeres multiplicitással, azaz 1;0,7;0,71;0{,}7;0{,}7, tehát invertálható. Invertálásával π=Q−1π̃\pi=Q^{-1}\tilde\pi visszaadja a tiszta priort, mert a marginalis eloszlásra π̃⊤=π⊤Q\tilde\pi^\top=\pi^\top Q. Ez azonban nem adja vissza a tiszta P(Y∣X)P(Y\mid X) posteriort, mert a modell a zajos Ỹ\tilde Y feltételes eloszlását tanulja, és a Q−1Q^{-1} csak a marginális priorra alkalmazható; a posterior torzulását a P(Ỹ∣X)P(\tilde Y\mid X) és QQ együttes inverziója kezelné, amihez QQ ismert vagy becsült volta szükséges.

F3 megoldás.

def asymmetric_label_noise(labels, flip_pairs, probs, rng):
    """labels: (N,) int; flip_pairs: list of (from, to);
    probs: azonos hosszú flip-valószínűségek."""
    noisy = labels.copy()
    mask = np.zeros(len(labels), dtype=bool)
    for (src, dst), p in zip(flip_pairs, probs):
        sel = (labels == src) & (rng.random(len(labels)) < p)
        noisy[sel] = dst
        mask[sel] = True
    return noisy, mask

rng = np.random.default_rng(0)
y = rng.integers(0, 4, size=100000)
flip_pairs = [(0, 1), (2, 3)]
probs = [0.15, 0.25]
ny, mask = asymmetric_label_noise(y, flip_pairs, probs, rng)
# ellenőrzés
assert np.array_equal(mask, y != ny)
for (src, dst), p in zip(flip_pairs, probs):
    rate = np.mean(mask[y == src])
    assert abs(rate - p) < 0.01, (rate, p)
print("flip rates ok:", np.mean(mask))

A teszt a megadott tűrésen belül ellenőrzi a valószínűséget; a mask pontosan a megváltozott elemeket jelöli, így a hibaarány mindig jól definiált.

F4 megoldás. Hiba: a validációs címkéket is zajosítják (symmetric_label_noise(labels[val_idx], ...)), ezért a kiválasztás nem a tiszta, hanem egy torzított validációs célra optimalizál; a legjobb epoch kiválasztása a zajos validáció zajmintázatához igazodik, és a jelentett „clean” accuracy valójában zajos referencia. Következmény: a modellválasztás optimistán torzított, és a záróteszt nem értelmezhető független mérésként. Javítás: a zajt csak a train_idx indexekre alkalmazzuk, val_idx és test_idx tiszta marad; a validációhoz mindig labels[val_idx]-t használjuk. Visszaellenőrzés: ϵ=0\epsilon=0-ra a validációs loss pontosan megegyezik a zaj nélküli tanítás validációs loss-ával, ha a seed és a modell azonos; továbbá a validációs címkék np.unique-halmaza nem változik a zajparaméterrel.

F5 megoldás. Hipotézis: a gyenge, képnyomaték-alapú címkék rontják a clean validációs accuracy-t a clean annotációhoz képest, de a romlás mértéke függ attól, hogy a heurisztika mely osztályokat keveri. Megfigyelési egység: scene_id, mert a két nézet ugyanahhoz a jelenethez tartozik. Split: a meglévő train/val/test scene-szintű felosztás változatlan. Baseline: a clean train címkével tanított SmallCNN; a változó tényező a train célok forrása (clean vs. gyenge). Metrika: clean val accuracy, valamint a scene-szintű, osztályonkénti rétegzett bootstrapből számított 95%-os CI az accuracy-különbségre a [S02] feltételes, ismételt mintavételi értelmezése szerint. Érvényességi korlát: a gyenge címkék hibája valószínűleg aszimmetrikus, például a vertical és diagonal jellegű főtengelyek keverése gyakoribb, ezért a szimmetrikus zajra levezetett prior-képlet itt nem alkalmazható, és a kísérlet csak a GlyphLab adott heurisztikájára vonatkozik.

22.3.8 8. Tipikus tévedés ellenpéldával

A leggyakoribb tévedés az, hogy a nagyobb háló „megtanulja figyelmen kívül hagyni” a rossz címkéket, ezért a címkezaj automatikusan eltűnik. Ez nem igaz: a cross-entropy cél éppen a zajos Ỹ\tilde Y-t követi, és elegendő kapacitás mellett a háló a hibás címkéket is interpolálja. Ellenpélda számított 1D feladaton: legyen X∼U(−1,1)X\sim U(-1,1), Y=1Y=1, ha X>0X>0, különben 00; a clean Bayes-accuracy 1. A train címkék 30%-át felforgatjuk. Egy 11-NN osztályozó kapacitása elegendő a train pontok tökéletes lejegyzéséhez: noisy train accuracy 1, clean train accuracy viszont várhatóan 0,70{,}7, és a clean test accuracy sem haladja meg tartósan ezt a szintet. A nagyobb kapacitású modell tehát pontosabban jegyzi meg a zajt, de nem állítja helyre a tiszta határt; a javulás csak akkor lehetséges, ha a zaj modelljét, tiszta mintát vagy erős regularizációt is beépítünk.

22.3.9 9. Önellenőrzés és korábbi fogalom visszahívása

Önellenőrző kérdések: a zajátmenet-mátrix minden sora 1-re összegződik-e? A laborkódban a valid/test indexeket egyetlen zajfüggvény sem érinti? A lemmában a feltételes függetlenséget kimondtuk-e? A kovariáns zaj és címkezaj faktorizációja különbözik-e? Visszahívás: 21.3. Dropout, súlyregularizálás és augmentáció label smoothing-ja determinisztikusan keveri a célvektort, míg a címkezaj véletlenül, mintánként eltérően; a 18.3. Pre-activation, kis batch és alternatív normalizálás normalizáló rétegei az aktivációk skáláját kezelik, és nem korrigálják a cél hibáját; a 10.3. Gradiensellenőrzés és numerikus hibamérce numerikus ellenőrzés tanulsága szerint a zajszimulációt is seed-del és referenciaimplementációval kell reprodukálni.

22.3.10 10. Rövid összefoglaló

A címkezaj a céloldali hiba: a zajos Ỹ\tilde Y a Y→ỸY\to\tilde Y átmenetmátrix szerint keletkezik, a bemenet érintetlen. A kovariáns zaj ezzel szemben az X→X̃X\to\tilde X élen hat, a címke változatlan. A szimmetrikus zaj modelljében a megfigyelt prior az π̃j=(1−ϵ)πj+ϵ(1−πj)/(K−1)\tilde\pi_j=(1-\epsilon)\pi_j+\epsilon(1-\pi_j)/(K-1) képlettel torzul; egyenletes priorra a marginális eloszlás változatlan. A labor a GlyphLab train részén szabályozott zajjal mutatja, hogy a clean validáció romlása növekvő ϵ\epsilon-nel várható, de a tényleges mérés seed- és adatfüggő. A gyenge felügyelet, annotátor-egyezés és review az adatminőségi folyamat része, a leakage pedig a split tiszteletben tartásának követelménye.

22.3.11 Következő alkalmazás

A 22.4. Augmentációs kísérlet és domainváltozás egységben az augmentációs kísérletet és a domainváltást tárgyaljuk: ott a képi eloszlás megváltozását, nem a cél hibáját vizsgáljuk, és azt kérdezzük, hogyan lehet a GlyphLab-receptet más, még nem látott képi feltételre átvinni.

22.3.12 Felhasznált források