30.3 Negatív nélküli módszerek és collapse

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

A 30.2. Kontrasztív cél és temperature egységben az InfoNCE/NT-Xent célfüggvényt vizsgáltuk: a pozitív pár hasonlóságát a negatív párokból képzett nevezővel versenyezteti. Ebben az alfejezetben azt a kérdést járjuk körül, mi történik, ha a negatív példákat teljesen elhagyjuk, és csak arra kérjük a modellt, hogy ugyanannak a jelenetnek két nézete azonos reprezentációba kerüljön. Előismeret: a 30.2. Kontrasztív cél és temperature alfejezetből a hasonlósági mátrix, a temperature és a maszk, a 29.3. Regularizált latent reprezentáció alfejezetből a latent representáció összeomlásának (collapse) fogalma, a 18.3. Pre-activation, kis batch és alternatív normalizálás alfejezetből a futó átlagok könyvtári kezelése. Induló becslés: ha a loss csak annyit mond, hogy „a két nézet kimenete egyezzen”, akkor a konstans encoder triviálisan teljesíti-e a feladatot? Ha igen, mi akadályozza meg a tanuló algoritmust abban, hogy ezt a degenerált megoldást válassza?

30.3.2 Teacher, student, stop-gradient és moving average

A negatív nélküli (noncontrastive) módszercsalád közös váza a következő. Legyen fθ:𝒳→ℝdf_{\theta}:\mathcal{X}\to\mathbb{R}^d az encoder, xn(1),xn(2)x_n^{(1)},x_n^{(2)} egy xnx_n kép két nézete, és ẑn(a)=fθ(xn(a))/∥fθ(xn(a))∥2\hat z_n^{(a)}=f_\theta(x_n^{(a)})/\|f_\theta(x_n^{(a)})\|_2 a normalizált reprezentáció, feltéve, hogy a norma pozitív. A legegyszerűbb pozitív-páros cél a normalizált átlagos négyzetes hiba:

LNN(θ)=1N∑n=1N∥ẑn(1)−ẑn(2)∥22.L_{\mathrm{NN}}(\theta)=\frac{1}{N}\sum_{n=1}^N \left\|\hat z_n^{(1)}-\hat z_n^{(2)}\right\|_2^2.

Ez a cél a teacher–student keretben bővül. Két súlyhalmazt tartunk nyilván: a θs\theta_s student (online) hálózatot és a θt\theta_t teacher (target) hálózatot. A veszteség

L(θs,θt,ϕ)=1N∑n=1N∥qϕ(ẑs(1)(xn(1)))−sg(ẑt(2)(xn(2)))∥22,L(\theta_s,\theta_t,\phi)=\frac1N\sum_{n=1}^N \left\|q_\phi\big(\hat z_s^{(1)}(x_n^{(1)})\big)-\operatorname{sg}\big(\hat z_t^{(2)}(x_n^{(2)})\big)\right\|_2^2,

ahol qϕ:ℝd→ℝdq_\phi:\mathbb{R}^d\to\mathbb{R}^d egy kis predictor fej, sg\operatorname{sg} pedig a stop-gradient operátor.

Definíció (stop-gradient). A sg(⋅)\operatorname{sg}(\cdot) operátor az argumentum értékét változatlanul hagyja az előremenő számításban, de a visszafelé számításban az argumentum felé eső Jacobi-mátrix blokkját nullával helyettesíti. Ha a loss skalár és a teacher kimenete ztz_t, akkor a gyakorlati frissítésben ∇θtL\nabla_{\theta_t}L nem számolódik, miközben a ztz_t értéke a lossba behelyettesített, aktuális teacher-kimenet marad. A PyTorch-beli megfelelője a tensor.detach() egy veszteséggráfban, vagy a with torch.no_grad(): blokkba tett forward.

A teacher súlyait exponenciális mozgóátlaggal (moving average) frissítjük:

θt←τθt+(1−τ)θs,τ∈[0,1).\theta_t\leftarrow \tau\theta_t+(1-\tau)\theta_s,\qquad \tau\in[0,1).

A τ\tau rendszerint közel 1 (például 0,99). Ez a forma emlékeztet a BatchNorm futó átlagára, de ott statisztikákat, itt paramétervektorokat átlagolunk; a tengely és a működési mód tehát különbözik. A frissítés sorrendje lényeges: először a student veszteségén visszaterjesztünk és a student-optimizáló lép, utána a teacher a frissített student felé mozdul. A teacher kimenetén nincs gradiens, ezért a teacher nem tanul visszaterjesztéssel, csak a momentum frissítésen keresztül követi a studentet.

30.3.3 A negatív nélküli cél és a konstans-embedding lemma

A célfüggvény önmagában nem bünteti a reprezentáció inputfüggésének elvesztését. Ezt rögzíti a következő lemma.

Lemma (konstans embedding mint degenerált optimum). Legyen 𝒳\mathcal{X} tetszőleges inputhalmaz, fθ:𝒳→ℝdf_\theta:\mathcal{X}\to\mathbb{R}^d encoder, és legyen

LNN(θ;X(1),X(2))=1N∑n=1N∥ẑn(1)−ẑn(2)∥22,L_{\mathrm{NN}}(\theta;X^{(1)},X^{(2)})=\frac1N\sum_{n=1}^N \left\|\hat z_n^{(1)}-\hat z_n^{(2)}\right\|_2^2,

ahol ẑn(a)=fθ(xn(a))/∥fθ(xn(a))∥2\hat z_n^{(a)}=f_\theta(x_n^{(a)})/\|f_\theta(x_n^{(a)})\|_2, feltéve, hogy a nevező pozitív. Tegyük fel, hogy létezik v∈ℝd\{0}v\in\mathbb{R}^d\setminus\{0\}, amelyre fθ(x)=vf_\theta(x)=v minden x∈𝒳x\in\mathcal{X} esetén. Ekkor

  1. LNN(θ)=0L_{\mathrm{NN}}(\theta)=0, tehát a veszteség a lehetséges legkisebb, nemnegatív értékét veszi fel;
  2. bármely g:ℝd→{0,…,K−1}g:\mathbb{R}^d\to\{0,\ldots,K-1\} downstream osztályozóra a predikció g(v)g(v), egyetlen konstans osztálycímke; ha az osztályok prior eloszlása πk\pi_k, akkor a downstream pontosság legfeljebb maxkπk\max_k \pi_k, kiegyenlített osztályoknál 1/K1/K.

Bizonyítás. (1) Mivel fθf_\theta minden inputra a vv vektort adja, ẑn(1)=ẑn(2)=v/∥v∥2\hat z_n^{(1)}=\hat z_n^{(2)}=v/\|v\|_2, így minden összegtag nulla, az átlaguk is nulla. A normalizált MSE definíció szerint nemnegatív, tehát a 00 a minimum.

  1. A downstream osztályozó bemenete minden xx-re g(v)g(v), tehát a predikció az xx-től független c=g(v)c=g(v) konstans. Ekkor ℙ(Ŷ=Y)=ℙ(Y=c)=πc≤maxkπk\mathbb{P}(\hat Y=Y)=\mathbb{P}(Y=c)=\pi_c\le\max_k\pi_k. Kiegyenlített πk=1/K\pi_k=1/K esetén a felső korlát 1/K1/K. ▫\square

A lemma két kontrollt nevez meg. Az első a reprezentációs collapse-mérő: egy batchben a ẑn\hat z_n vektorok páronkénti koszinusz-hasonlóságának átlaga, illetve a koordinátánkénti szórás. Konstans embeddingnél a páronkénti koszinusz mátrix minden eleme 1, a szórás minden koordinátán 0. A második az downstream kontroll: egy rögzített spliten tanított lineáris fej pontossága. A degenerált reprezentáció a pretext loss optimumában ülhet, miközben a downstream kontroll véletlen szintet mutat.

Az InfoNCE-val a különbség jól látható: ott a nevező negatívokat tartalmaz, és a konstans vv esetén a pozitív és negatív párok azonos hasonlóságot kapnak, ezért a loss nem nulla, hanem tipikusan log(negatívok száma+1)\log(\text{negatívok száma}+1). A negatív nélküli cél ezt a büntetést elhagyja, ezért a collapse-ot a tréningmechanizmusnak kell megakadályoznia.

A stop-gradient és a momentum teacher szerepe nem állítható be bizonyított mechanizmusként ezen a szinten. A szakirodalmi megfigyelés az, hogy a student és a lassan változó teacher közötti aszimmetria, valamint a predictor fej jelenléte eltérő fixpontokat hozhat létre, így a konstans megoldás nem stabil vonzó pontja a teljes dinamikának. Ez azonban heurisztikus magyarázat; a BatchNorm, az optimalizáló és a súlycsökkenés szerepe a negatív nélküli tanulásban jelenleg is aktív kutatási kérdés, nem e könyv lezárt tételanyaga.

30.3.4 Kézi példa és minimális kód

Legyen N=6N=6, d=4d=4, és válasszuk a v=(1.0,2.0,1.0,0.0)v=(1.0,2.0,1.0,0.0) konstans reprezentációt. Az inputok

X1=(0.12−0.440.310.871.02−0.19−0.630.45−0.310.980.14−0.222.110.37−1.080.19−0.57−0.830.621.140.330.21−0.91−0.47),X2 ettől eltérő zajos view.X_1 = \begin{pmatrix}0.12&-0.44&0.31&0.87\\ 1.02&-0.19&-0.63&0.45\\ -0.31&0.98&0.14&-0.22\\ 2.11&0.37&-1.08&0.19\\ -0.57&-0.83&0.62&1.14\\ 0.33&0.21&-0.91&-0.47\end{pmatrix},\quad X_2 \text{ ettől eltérő zajos view}.

A konstans encoder mindkettőre a vv sort adja. A normalizálás: ∥v∥2=1+4+1=6≈2.4494897\|v\|_2=\sqrt{1+4+1}=\sqrt{6}\approx2.4494897; a normalizált sor minden esetben (0.4082483,0.8164966,0.4082483,0.0)(0.4082483,\ 0.8164966,\ 0.4082483,\ 0.0). A veszteség minden sorra 00, a páronkénti koszinusz átlaga 1.01.0.

import numpy as np

rng = np.random.default_rng(20261020)
N, d = 6, 4
X1 = rng.normal(size=(N, d)).astype(np.float64)
X2 = rng.normal(size=(N, d)).astype(np.float64)

v = np.array([1.0, 2.0, 1.0, 0.0], dtype=np.float64)
def f_const(x):
    return np.tile(v, (x.shape[0], 1))          # (N, d)

Z1 = f_const(X1); Z2 = f_const(X2)
nrm = np.linalg.norm(v)
Z1h = Z1 / nrm; Z2h = Z2 / nrm                 # stabilizált alak
L = np.mean(np.sum((Z1h - Z2h) ** 2, axis=1))

coord_std = Z1h.std(axis=0)                    # (d,)
C = Z1h @ Z1h.T                                # (N, N) koszinuszmátrix
mean_pair_cos = (C.sum() - np.trace(C)) / (N * (N - 1))

y = np.array([0, 1, 2, 0, 1, 2], dtype=np.int64)
acc_const = float(np.mean(np.zeros(N, dtype=np.int64) == y))

print(f"L={L:.12f}")
print(f"coord_std={coord_std}")
print(f"mean_pair_cos={mean_pair_cos:.12f}")
print(f"downstream_acc_const={acc_const:.6f}")

Számított kimenet (nem futtatott, a képletből meghatározott): L=0.000000000000, coord_std=[0. 0. 0. 0.], mean_pair_cos=1.000000000000, downstream_acc_const=0.333333. A downstream pontosság a kiegyenlített K=3K=3 osztály miatt éppen a lemma szerinti 1/31/3 felső korlátot éri el.

30.3.5 Labor: mechanizmus- és ablatív terv a SimCLR-keretből kiindulva

A jelen alfejezet nem futtat kísérletet; az alábbi protokoll egy végrehajtható terv, a mért eredmény hiányát explicit jelöljük.

Hivatkozott kiindulópont. [P17] SimCLR abstracts alapján a kontrasztív keret a két nézet közötti egyezést a batchbeli negatívokkal versenyezteti. A labour kérdése: ugyanazon GlyphLab encoder, view-set és tanítási költségvetés mellett hogyan viselkedik a negatív nélküli cél a stop-gradient és a momentum teacher változatokban?

Adat és split. A GlyphLab data/images.npy (360,1,24,24) float32 tömbje; a train/val/test a metadata-ban rögzített jelenetek. A pretext során a downstream címkét nem használjuk, csak a képeket; a view-párok: eredeti kép + független additív zaj, kismértékű fényességskálázás és félegységen belüli véletlen nulla-padding utáni visszaigazítás. A 90°-os forgatást kizárjuk, mert az orientation-célhoz nem címkemegőrző transzformáció a GlyphLab szerződésében; a pretextben való alkalmazása downstream értelmezési zavart vinne be.

Modell. Ugyanaz a nyolcrétegű kis CNN encoder, mint a 30.2. Kontrasztív cél és temperature laborjában; d=32d=32 kimeneti dimenzió, float32 CPU, torch.manual_seed(20261020). A downstream fej egyetlen Linear(32,3).

Változó tényezők. (a) kontrasztív InfoNCE baseline, τtemp=0.1\tau_{temp}=0.1; (b) negatív nélküli cél stop-gradient nélkül; (c) ugyanaz stop-gradienttel; (d) stop-gradient és momentum teacher, τ=0.99\tau=0.99; (e) a (d) változat predictor nélkül. Minden változathoz három seed ugyanazon a train/val/test felosztáson.

Metrikák. Pretext veszteség train/val; collapse-mérő a val reprezentációk páronkénti átlagos koszinusza; downstream lineáris fej pontossága a rögzített testen. A lineáris fejet a rögzített train reprezentációkra tanítjuk azonos epoch-kerettel, a val a fej regularizáció-választásához, a test a végső méréshez. A downstream méréshez használjuk a tiszta, nem korrupt tesztet; a corrupted_test.npy-t itt nem használjuk, mert az a 38.3. Végső teszt és páros korrupció projekt II zárótesztjéhez van fenntartva.

Átadandó eredmény formája. Protokollfájl, pretext loss-görbe, collapse-mérő és downstream pontosság minden változatra seed-átlaggal. Az alábbi várható kimenet csak szemléltetés, nem mért adat: az (a) baseline downstream pontossága a korábbi egységek alapján 80–90% közötti tartományban várható; a (b) változat a konstans optimum felé csúszhat, így a downstream pontosság 1/31/3 körül marad; a (c)–(e) változatok ettől elválthatnak, de a pontos szám a kísérlet nélkül nem állítható.

30.3.6 Feladatok

F1 (fogalmi, nehézség 1). Definiáld az alábbi három fogalmat a 30.3. Negatív nélküli módszerek és collapse jelöléseivel: teacher, student, stop-gradient. Add meg, melyik paraméterekre számolunk gradientset a tanulási lépésben, és mi a szerepe a predictor fejnek.

F2 (levezetési, nehézség 2). Tekintsd a normalizálatlan változatot: L̃(θ)=1N∑n=1N∥zn(1)−zn(2)∥22\tilde L(\theta)=\frac1N\sum_{n=1}^N\|z_n^{(1)}-z_n^{(2)}\|_2^2, ahol zn(a)=fθ(xn(a))z_n^{(a)}=f_\theta(x_n^{(a)}), és nincs normalizálás. Bizonyítsd be, hogy az azonosan nulla encoder fθ(x)=0f_\theta(x)=0 minden xx-re a L̃\tilde L globális minimumát adja, és add meg a downstream pontosság felső korlátját ebben az esetben is. Miért nem elegendő a lemma bizonyításában a nulla vektor kizárása nélküli normalizálás?

F3 (implementációs, nehézség 2). Írj teljes NumPy függvényt negativ_nelkuli_loss(Z1, Z2) néven, amely a normalizált MSE-veszteséget és a collapse-mérőt (páronkénti átlagos koszinusz) adja vissza. Az inputok (N,d) float64 tömbök, és a függvény stabilan kezelje azt az esetet, ha egy reprezentációsor normája nullához közeli (használj ε=10−12\varepsilon=10^{-12} normalizálási epsilont). Ellenőrizd a konstans v=(1,2,1,0)v=(1,2,1,0) példán, és egy olyan batchen, ahol a két nézet egymástól eltér.

F4 (hibakeresési, nehézség 3). A következő vázlat a momentum teacher frissítését akarja elvégezni PyTorchban:

for tp, sp in zip(teacher.parameters(), student.parameters()):
    tp.data = tau * tp.data + (1.0 - tau) * sp.data
# ... később a loss.backward() és student_optimizer.step()

Azonosítsd a két lehetséges hibát, és magyarázd el a következményét: mi történik a tanulási dinamikával, ha a frissítés (i) a loss.backward() után, de a teacher paramétereken gradiensgráfban marad; (ii) a student step() előtt hajtódik végre? Add meg a javított kódot no_grad és megfelelő sorrend használatával.

F5 (kísérlettervezési/transzfer, nehézség 3). Tervezz kísérletet a GlyphLabon, amely azt vizsgálja, hogy a negatív nélküli pretext reprezentáció jobb-e a downstream orientation osztályozáshoz, mint (i) a véletlenül inicializált encoder és (ii) az autoencoderes rekonstrukciós pretext. Add meg a megfigyelési egységet, a splitet, a baseline-okat, a változó tényezőket, a metrikákat és az érvényességi korlátot. Nem kell futást végezni, de a tervnek végrehajthatónak kell lennie a könyv CPU-s főútján.

30.3.7 Megoldások és indoklás

F1. A student a θs\theta_s paraméterű encoder, amelyen a pretext veszteség gradientsét visszaterjesztjük; a teacher a θt\theta_t paraméterű, ugyanolyan architektúrájú encoder, amelyen gradients nem folyik keresztül, súlyát az exponenciális mozgóátlag frissíti. A stop-gradient a teacher kimenetét a loss számításában konstansként kezeli, tehát a visszaterjesztés során a teacher felé eső gradiens blokkot nullázza. A gradients kizárólag a student θs\theta_s és a predictor ϕ\phi paramétereire számolódik; a predictor a student oldali nemlineáris fej, amely az aszimmetriát növeli, és a módszercsalád gyakorlatában a negatív nélküli tanulás stabilitásához járul hozzá.

F2. Ha fθ(x)=0f_\theta(x)=0 minden xx-re, akkor minden tag ∥0−0∥22=0\|0-0\|_2^2=0, ezért L̃(θ)=0\tilde L(\theta)=0. Mivel a norma négyzete nemnegatív, ez a globális minimum. A downstream predikció g(0)g(0) konstans, így a pontosság legfeljebb maxkπk\max_k\pi_k, kiegyenlített esetben 1/K1/K. A normalizált változat lemmájában a v≠0v\neq0 feltétel szükséges, mert a v=0v=0 esetben a ẑ=z/∥z∥2\hat z=z/\|z\|_2 nincs értelmezve; a numerikus gyakorlatban a nullához közeli nevező instabil normalizálást és tetszőleges irányú egységvektorokat ad, ami miatt a veszteség nem feltétlenül nulla, de a reprezentáció inputfüggetlensége a downstream kontrollon továbbra is megmutatkozik.

F3. Teljes kód:

import numpy as np

def negativ_nelkuli_loss(Z1, Z2, eps=1e-12):
    """
    Z1, Z2: (N, d) float64 reprezentációsorok.
    Vissza: L_normalizalt_mse, mean_pair_cos.
    """
    n1 = np.linalg.norm(Z1, axis=1, keepdims=True)
    n2 = np.linalg.norm(Z2, axis=1, keepdims=True)
    Z1h = Z1 / np.maximum(n1, eps)
    Z2h = Z2 / np.maximum(n2, eps)
    L = np.mean(np.sum((Z1h - Z2h) ** 2, axis=1))
    C = Z1h @ Z1h.T
    N = Z1h.shape[0]
    mean_pair_cos = (C.sum() - np.trace(C)) / (N * (N - 1))
    return L, mean_pair_cos

# Ellenőrzés konstans esetben
v = np.array([1.0, 2.0, 1.0, 0.0], dtype=np.float64)
Zc = np.tile(v, (6, 1))
Lc, mpc = negativ_nelkuli_loss(Zc, Zc)
print(f"konstans: L={Lc:.12f}, mean_pair_cos={mpc:.12f}")  # 0, 1

# Eltérő nézetek: várhatóan L>0 és mpc<1
rng = np.random.default_rng(20261020)
Za = rng.normal(size=(6, 4)); Zb = rng.normal(size=(6, 4))
Ld, mpd = negativ_nelkuli_loss(Za, Zb)
print(f"eltérő: L={Ld:.6f}, mean_pair_cos={mpd:.6f}")

Számított kimenet: a konstans esetben L=0.000000000000, mean_pair_cos=1.000000000000; az eltérő esetben L>0L>0 és mean_pair_cos értéke a véletlen mintától függően [−1,1][-1,1]-en belül, de nem garantáltan nulla. A tolerancia a konstans esetben a float64 kerekítés miatt 10−1210^{-12} alatt várható.

F4. A kód két hibája:

  1. Ha a frissítés a teacher paramétereken gradiensgráfban marad (például a tp.data = ... helyett tp = tau*tp + (1-tau)*sp fordul elő no_grad nélkül), a momentum frissítés bekerül a számítási gráfba. A következő backward() a teacher és a student közötti momentum-grádienst is felhalmozza, így a teacherhez gradiens kötődik, és a stop-gradient feltétel sérül: a teacher véletlenszerű, a momentum frissítéstől függő gradientset kaphat, ami nem kívánt tanulási jel.

  2. Ha a teacher frissítése a student step() előtt történik, akkor a teacher a régi student súlyok felé mozdul. A szándék az, hogy a teacher a frissített studentet kövesse, ezért a sorrend: loss.backward(), student_optimizer.step(), majd a teacher momentum frissítés.

Javított kód:

# backward és student update
loss.backward()
student_optimizer.step()

# teacher frissítés, gradiensgráf nélkül
with torch.no_grad():
    for tp, sp in zip(teacher.parameters(), student.parameters()):
        tp.mul_(tau).add_(sp, alpha=1.0 - tau)

Visszaellenőrzés: a teacher paraméterei nem rendelkeznek requires_grad gráfbeli kapcsolattal a studenthez a momentum frissítés után; a tp frissítése in-place, no_grad alatt. A momentum frissítés utáni egységteszt: egyetlen lépésre d=1d=1 méretű lineáris réteggel, θs=1\theta_s=1, θt=0.9\theta_t=0.9, τ=0.99\tau=0.99 esetén a frissítés után θt=0.901\theta_t=0.901 a mozgóátlag képletéből.

F5. Egy lehetséges terv: a GlyphLab train/val/test jelenetfelosztását változatlanul hagyjuk; a pretext tanuláshoz minden train képből két view-t készítünk a labor előtti augmentációs szabályokkal. A változó a pretext cél: (A) véletlen encoder (nincs pretext), (B) autoencoder rekonstrukciós pretext, (C) negatív nélküli pozitív-páros pretext stop-gradienttel. A downstream fej mindhárom esetben egy Linear(32,3) a rögzített encoder-kimeneten. A megfigyelési egység a scene_id, ezért a val/test jeleneteket soha nem használjuk pretext tanításra. A metrika a downstream val/test pontosság minden változatra három seeddel. A baseline az (A) véletlen fej, mert azt méri, mennyit ér a pretext önmagában. Az érvényességi korlát: a GlyphLab nem természetes képi adat; a pretext transzformációk a generált vonalak statisztikáira vannak hangolva; a scene-függő zaj miatt a jelenetek közötti augmentációs invariance eltérhet a valós adatoktól, így az eredmény nem általánosítható termelési modellre.

30.3.8 Tipikus tévedés és ellenpélda

A leggyakoribb tévedés azt hinni, hogy a collapse elkerülése önmagában downstream feladatsikerrel jár. Ez nem igaz. Ellenpéldául tekintsünk olyan adatot, ahol x=(u,v,t)x=(u,v,t), az uu, vv és tt egymástól független folytonos véletlen változók, a háromosztályos yy címkét pedig kizárólag tt alapján, azonos valószínűségű intervallumokkal képezzük. Legyen az encoder f(x)=(u,v)f(x)=(u,v). A különböző bemenetek reprezentációi nem állandók, és normalizálás után sem mind ugyanabba az irányba mutatnak, ezért a páronkénti koszinusz-hasonlóság nem szükségképpen 1. A címkére azonban semmilyen információt nem tartalmaznak: kiegyensúlyozott osztályok mellett a belőlük dolgozó legjobb osztályozó várható pontossága legfeljebb 1/31/3. A nem összeomlott reprezentáció tehát nem feltétlenül hasznos a downstream feladathoz. Emiatt a pretext tanítást előre rögzített downstream kontrollal kell kiértékelni, nem csupán a collapse hiányával.

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

Önellenőrző kérdések: (1) A stop-gradient operátor mit tesz a veszteség Jacobi-mátrixában? (2) Miért nulla a konstans encoder vesztesége a normalizált MSE alatt, és mi a downstream pontosság felső korlátja kiegyenlített osztályoknál? (3) Miben különbözik a momentum teacher frissítés a BatchNorm futó statisztikájától? (4) Miért nem elég a páronkénti koszinusz átlaga 1-től való eltérése a downstream hasznosság igazolásához?

Visszahívás: a 29.3. Regularizált latent reprezentáció autoencdernél a rekonstrukcióból nem következik szemantikai tudás; az itt tárgyalt negatív nélküli pretext a pozitív invarianciából ugyanígy nem kap downstream garanciát. A 26.3. NMS, confidence és AP tanulsága, hogy a nyers score és a működési pont különválik; a downstream lineáris fej pontossága egyetlen küszöböt mér, a kalibrálást külön kell vizsgálni. A 18.3. Pre-activation, kis batch és alternatív normalizálás futó átlagos állapota párhuzamos a momentum teacher exponenciális átlagával, de a frissített objektum és a tengelyek eltérnek.

30.3.10 Rövid összefoglaló

A negatív nélküli pretext cél csak pozitív párokat használ: ugyanannak a jelenetnek két nézete azonos normalizált reprezentációba kerüljön. A konstans encoder a normalizált MSE veszteséget nullára csökkenti, miközben a downstream pontosság csak maxkπk\max_k\pi_k lehet; ezt a lemmát a jelen alfejezet bizonyítja. A collapse ellen a gyakorlatban stop-gradient, momentum teacher és predictor fej szolgál, de ezek hatása heurisztikus, nem lezárt tétel. A laborban a SimCLR-keretből kiinduló mechanizmus- és ablatív tervet készítünk, a feladatokban pedig a kontrollt és a tipikus tévedéseket gyakoroljuk.

30.3.11 Következő alkalmazás és ténylegesen használt források

A következő 30.4. Önfelügyelt kísérlet korrekt összevetése egység az önfelügyelt kísérletek korrekt összevetését vizsgálja: ott az itt definiált negatív nélküli pretext, a collapse-mérő és a downstream kontroll kapcsolódik össze a véletlen, rekonstrukciós és kontrasztív baseline-ok fair összehasonlításában.

Források: