30.2 Kontrasztív cél és temperature

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

A 30.1. Pretext és downstream feladat egységben elválasztottuk a pretext feladatot a downstream feladattól, és rögzítettük, hogy a reprezentációtanulás célja olyan zz vektor előállítása, amely a feladat szempontjából hasznos invarianciákat őrzi meg. Ott a pozitív párt csak elnagyoltan, „ugyanannak a jelenetnek két augmentált nézete” formájában adtuk meg. Ebben az alfejezetben ezt a szerződést pontos, kiszámítható veszteséggé alakítjuk.

A 29.2. Denoising és korrupciós modell denoising célban a pár aszimmetrikus volt: zajos bemenetből tiszta target. A kontrasztív cél ezzel szemben két egyenrangú nézetet illeszt egymáshoz, ezért nincs kitüntetett „tiszta” oldal. A 26.2. Egy- és kétlépcsős detektor detektoros párosítási szabályhoz hasonlóan itt is előre rögzíteni kell, mely indexek alkotnak pozitív párt; ezt nem a modell hasonlósági pontszáma dönti el. A 18.2. Batch normalization train és eval módban tanulsága pedig az, hogy a batchtől függő mennyiségek train és eval szerepét külön kell adminisztrálni: a kontrasztív nevező is batchfüggő, de csak előtanítási cél, nem kiértékelési metrika.

Induló kérdés. Adott négy normalizált reprezentáció: z0=(10),z1=(0,80,6),z2=(01),z3=(0,60,8).z_0=\begin{pmatrix}1\\0\end{pmatrix},\quad z_1=\begin{pmatrix}0{,}8\\0{,}6\end{pmatrix},\quad z_2=\begin{pmatrix}0\\1\end{pmatrix},\quad z_3=\begin{pmatrix}0{,}6\\0{,}8\end{pmatrix}. A pozitív párok (0,1)(0,1) és (2,3)(2,3). Mennyi a kontrasztív loss τ=1\tau=1 mellett, ha minden mintához az összes többi minta szerepel a nevezőben? A választ a 4. szakaszban kézzel ellenőrizzük; előzetes becslésként érdemes megfigyelni, hogy a pozitív párok koszinusz-hasonlósága 0,80{,}8, de a z0z_0–z3z_3 negatív pár hasonlósága 0,60{,}6 is viszonylag magas, tehát a loss nem lesz nulla.

30.2.2 2. Definíciók: hasonlósági mátrix, pozitív target, maszk és hőmérséklet

Legyen egy minibatch reprezentációja Z∈ℝN×d,Z\in\mathbb R^{N\times d}, ahol az ii-edik sort zi∈ℝdz_i\in\mathbb R^d jelöli. Feltesszük, hogy a sorok már ℓ2\ell_2-normalizáltak, azaz ∥zi∥2=1\lVert z_i\rVert_2=1. Ekkor a hasonlósági mátrix S=ZZ⊤∈[−1,1]N×N,Sij=zi⊤zj,S=ZZ^\top\in[-1,1]^{N\times N},\qquad S_{ij}=z_i^\top z_j, tehát SijS_{ij} a két vektor koszinusz-hasonlósága. A zz vektor előállításáért felelős hálózat kimenetét a gyakorlatban a veszteségszámítás előtt normalizáljuk, mert a cél nem az abszolút norma, hanem az irányok együttállása.

A pozitív párt egy előre rögzített, adatból származó hozzárendelés. Legyen p(i)∈{0,…,N−1}p(i)\in\{0,\dots,N-1\} az ii indexű minta pozitív párja. A páros szerződés a következő:

  1. p(i)≠ip(i)\neq i minden ii-re;
  2. p(p(i))=ip(p(i))=i (szimmetrikus pár);
  3. minden sorban pontosan egy pozitív pár van.

A pozitív hozzárendelést a P∈{0,1}N×NP\in\{0,1\}^{N\times N} maszkkal is leírhatjuk: Pij=1P_{ij}=1 pontosan akkor, ha j=p(i)j=p(i), egyébként 00. A kontrasztív tanulásban ez a maszk a target: nem a modell által megjósolt osztály, hanem az adatelőkészítés által garantált párkapcsolat. A GlyphLab-szerű adaton például ugyanazon scene két különböző zajrealizációjú nézete lehet pozitív pár; a 90 fokos forgatás viszont csak akkor, ha a downstream feladat valóban invariáns az orientációra, ami az 1.1. Modell, tanulás és felhasználási szerződés alfejezetben definiált háromosztályos orientációs cél esetén nem áll fenn.

A hőmérséklet τ>0\tau>0 egy pozitív skalár, amely a hasonlóságok exponenciális skálázását szabályozza. A τ\tau nem valószínűség, nem küszöb és nem margin. Az Sij/τS_{ij}/\tau hányadost skálázott logitnak nevezzük; dimenzió nélküli, mert SijS_{ij} is az.

A diagonális maszk a D∈{0,1}N×ND\in\{0,1\}^{N\times N} mátrix, ahol Dij=1D_{ij}=1 pontosan akkor, ha i=ji=j. A nevezőhöz használt maszk ennek komplementere: Mij=1−Dij=𝟏i≠j.M_{ij}=1-D_{ij}=\mathbf 1_{i\neq j}. Tehát MM minden olyan (i,j)(i,j) párra 11, ahol j≠ij\neq i. A nevezőben minden Mij=1M_{ij}=1 indexű hasonlóság exponenciálisa szerepel, beleértve a pozitív párt is; a diagonális kizárás csupán az önmagával vett Sii=1S_{ii}=1 triviális tagot távolítja el.

A negatívok azok a jj indexek, amelyekre Mij=1M_{ij}=1 és Pij=0P_{ij}=0. A nevező azonban a pozitív tagot is tartalmazza, ezért pontosabb a „nevező-halmaz” kifejezés, mint a „negatívok összege”. Ez a megkülönböztetés az F4 hibakeresési feladatban döntő lesz.

30.2.3 3. NT-Xent/InfoNCE: a maszkolt loss levezetése

Egy ii anchorra a választott kontrasztív veszteséget a pozitív exponenciális és a nevező-halmaz exponenciálisainak hányadosaként definiáljuk:

ℓi(τ)=−log∑j=0N−1Pijexp(Sij/τ)∑j=0N−1Mijexp(Sij/τ).\ell_i(\tau) =-\log\frac{\sum_{j=0}^{N-1}P_{ij}\exp(S_{ij}/\tau)} {\sum_{j=0}^{N-1}M_{ij}\exp(S_{ij}/\tau)}. \tag{1}

Mivel PP minden sorában pontosan egy 11 áll, a számláló egytagú: ℓi(τ)=−Si,p(i)τ+log∑j=0N−1Mijexp(Sij/τ).\ell_i(\tau)=-\frac{S_{i,p(i)}}{\tau} +\log\sum_{j=0}^{N-1}M_{ij}\exp(S_{ij}/\tau). \tag{2}

A log\log hányadosra vonatkozó azonosságot, log(a/b)=loga−logb\log(a/b)=\log a-\log b alakban alkalmaztuk. A (2) jobb oldalának második tagja egy log-sum-exp művelet: numerikusan stabil, mert a legnagyobb logit kiemelésével számítható.

A teljes batch-veszteség az anchorok átlaga: L(τ)=1N∑i=0N−1ℓi(τ).L(\tau)=\frac1N\sum_{i=0}^{N-1}\ell_i(\tau). \tag{3}

Index- és shape-ellenőrzés: SS, PP és MM alakja egyaránt N×NN\times N; minden szummáció j=0,…,N−1j=0,\dots,N-1 fut; ℓi\ell_i skalár; LL skalár. A diagonális Mii=0M_{ii}=0 garantálja, hogy a j=ij=i tag sehol sem szerepel a nevezőben. A pozitív pár a nevezőben marad, mert Mi,p(i)=1M_{i,p(i)}=1 a p(i)≠ip(i)\neq i feltétel miatt.

Ez a veszteség az NT-Xent (normalized temperature-scaled cross entropy) páros formája. Az InfoNCE elnevezést tágabb értelemben használjuk az olyan kontrasztív célokra, ahol egy pozitív mintát egy negatív halmazzal versenyeztetünk; az NT-Xent ennek normalizált, hőmérséklet-skálázott, többosztályos softmax alakja. A megnevezés nem változtat a fenti definíción: az érvényes állítások a (1)–(3) képletekből következnek, nem a névből.

A [P17] absztraktja azt emeli ki, hogy a reprezentációt a különbözően augmentált nézetek közötti egyezés kontrasztív növelésével tanítják. A jelen alfejezetben használt NN-mintás képlet a kontrasztív softmax ismert szerkezetét követi; annak ellenőrzése, hogy a konkrét cikkváltozat a 2N2N bővített nézetre milyen indexelést és szimmetrizálást használ, a teljes módszertani szakasz olvasását igényli. A fejezet a saját NN-mintás képletét nem azonosítja automatikusan az eredeti cikk teljes, szimmetrizált veszteségével.

A hőmérséklet hatását a következő, saját lemmában rögzítjük.

Lemma (hőmérsékleti határeset). Legyen Z∈ℝN×dZ\in\mathbb R^{N\times d} soronként normalizált, N≥2N\ge 2, p(i)≠ip(i)\neq i, és Mij=𝟏i≠jM_{ij}=\mathbf 1_{i\neq j}. A (2) veszteségre minden ii-re:

  1. limτ→∞ℓi(τ)=log(N−1)\lim_{\tau\to\infty}\ell_i(\tau)=\log(N-1);
  2. ha Si,p(i)>SijS_{i,p(i)}>S_{ij} minden j∉{i,p(i)}j\notin\{i,p(i)\} esetén, akkor limτ→0+ℓi(τ)=0\lim_{\tau\to0+}\ell_i(\tau)=0;
  3. legyen A=maxj≠iSijA=\max_{j\neq i}S_{ij}, B=Si,p(i)B=S_{i,p(i)} és mi=|{j≠i:Sij=A}|m_i=|\{j\neq i:S_{ij}=A\}|. Ekkor limτ→0+τℓi(τ)=A−B≥0\lim_{\tau\to0+}\tau\ell_i(\tau)=A-B\ge 0; pontosabban, ha A>BA>B, akkor ℓi(τ)→+∞\ell_i(\tau)\to+\infty, ha A=BA=B, akkor ℓi(τ)→logmi\ell_i(\tau)\to\log m_i.

Bizonyítás. Rögzítsük az ii sort. Az (1) hányados nemnegatív, mert a pozitív tag a nevezőben is szerepel, ezért a hányados legfeljebb 11, és −log(⋅)≥0-\log(\cdot)\ge 0. Ez adja a harmadik állítás végén szereplő nemnegativitást.

  1. Mivel limτ→∞Sij/τ=0\lim_{\tau\to\infty}S_{ij}/\tau=0 minden véges SijS_{ij}-re, exp(Sij/τ)→1\exp(S_{ij}/\tau)\to 1. A nevezőben pontosan N−1N-1 darab Mij=1M_{ij}=1 tag van, a számlálóban egy darab. A hányados határértéke 1/(N−1)1/(N-1), ezért a loss log(N−1)\log(N-1).

  2. Legyen A=maxj≠iSijA=\max_{j\neq i}S_{ij} és B=Si,p(i)≤AB=S_{i,p(i)}\le A. A legnagyobb logit kiemelésével pontosan ℓi(τ)=A−Bτ+log∑j≠iexp(Sij−Aτ).\ell_i(\tau)=\frac{A-B}{\tau}+\log\sum_{j\neq i}\exp\!\left(\frac{S_{ij}-A}{\tau}\right). Mivel véges sok tag van, a második tag logmi\log m_i-hez tart, ahol mim_i a maximális AA-t elérő indexek száma. Innen τℓi(τ)→A−B\tau\ell_i(\tau)\to A-B; ha A>BA>B, az első tag +∞+\infty-hez tart, míg ha A=BA=B, a veszteség határértéke logmi\log m_i.

  3. A feltétel szerint a pozitív pár egyedüli maximum a nevező indexei között, ezért A=BA=B, mi=1m_i=1, és logmi=0\log m_i=0. ▫\square

A tétel feltételei végesek: nincs szükség mértékelméleti eszközökre, csak a véges exponenciális tagok határértékére. A lemma azt mutatja, hogy kis τ\tau mellett a pozitívnál nagyobb negatív hasonlóság különbsége 1/τ1/\tau arányban növeli a veszteséget; egyenlő maximális hasonlóságoknál a holtversenyek száma logmi\log m_i határértéket ad. A puszta hasonlóságkülönbség nem azonos a veszteség határértékével. Ez a megfigyelés heurisztikus tervezési szabály, nem általános tanítási konvergenciatétel.

30.2.4 4. Kézi példa: négymintás páros loss, diagonális kizárással

A bevezető kérdés adataival dolgozunk, τ=1\tau=1 mellett. A ZZ mátrix:

Z=(100,80,6010,60,8).Z=\begin{pmatrix} 1&0\\ 0{,}8&0{,}6\\ 0&1\\ 0{,}6&0{,}8 \end{pmatrix}.

A sorok normája valóban 11, tehát S=ZZ⊤S=ZZ^\top közvetlenül koszinusz-hasonlóság. A szorzat:

S=(10,800,60,810,60,4800,610,80,60,480,81).S=\begin{pmatrix} 1&0{,}8&0&0{,}6\\ 0{,}8&1&0{,}6&0{,}48\\ 0&0{,}6&1&0{,}8\\ 0{,}6&0{,}48&0{,}8&1 \end{pmatrix}.

A pozitív párok: p(0)=1p(0)=1, p(1)=0p(1)=0, p(2)=3p(2)=3, p(3)=2p(3)=2. A PP maszkban tehát az (0,1)(0,1), (1,0)(1,0), (2,3)(2,3), (3,2)(3,2) elemek 11-esek. A nevezőmaszk M=𝟏−𝕀4M=\mathbf 1-\mathbb I_4, tehát minden ii-hez a másik három index.

Első sor, i=0i=0. A nevező tagjai j=1,2,3j=1,2,3. τ=1\tau=1 mellett: exp(0,8)≈2,2255409,exp(0)=1,exp(0,6)≈1,8221188.\exp(0{,}8)\approx 2{,}2255409,\qquad \exp(0)=1,\qquad \exp(0{,}6)\approx 1{,}8221188. A nevező összege 5,04765975{,}0476597, a pozitív tag 2,22554092{,}2255409, így ℓ0=−log2,22554095,0476597≈0,8189.\ell_0=-\log\frac{2{,}2255409}{5{,}0476597}\approx 0{,}8189.

Második sor, i=1i=1. A pozitív S10=0,8S_{10}=0{,}8; a másik két nevezőtag S12=0,6S_{12}=0{,}6 és S13=0,48S_{13}=0{,}48. A nevező: 2,2255409+1,8221188+exp(0,48)≈5,6637337,2{,}2255409+1{,}8221188+\exp(0{,}48)\approx 5{,}6637337, tehát ℓ1=−log2,22554095,6637337≈0,9344.\ell_1=-\log\frac{2{,}2255409}{5{,}6637337}\approx 0{,}9344.

Harmadik sor, i=2i=2. A szimmetria miatt ℓ2=ℓ0≈0,8189\ell_2=\ell_0\approx 0{,}8189; negyedik sor, i=3i=3: ℓ3=ℓ1≈0,9344\ell_3=\ell_1\approx 0{,}9344. A teljes loss: L=0,8189+0,9344+0,8189+0,93444≈0,8766.L=\frac{0{,}8189+0{,}9344+0{,}8189+0{,}9344}{4}\approx 0{,}8766.

A példa azt is megmutatja, miért nem nulla a loss: a pozitív párok hasonlósága 0,80{,}8, de a z0z_0–z3z_3 és z1z_1–z2z_2 negatív párok hasonlósága 0,60{,}6, tehát a nevező nem kizárólag a pozitív tagból áll.

30.2.5 5. Labor: kézi és kódolt páros loss

A labor munkakönyvtára lab/n118/. A bemenet a fenti ZZ mátrix, a pozitív párok explicit listája, τ=1\tau=1. A kód torch.float64 pontossággal, CPU-n fut, és a diagonálist a masked_fill művelettel zárja ki a log-sum-expből.

# lab/n118/nt_xent_pairs.py
import math
import numpy as np
import torch

# Input: normalizált reprezentációk, N x d
z_np = np.array([
    [1.0, 0.0],
    [0.8, 0.6],
    [0.0, 1.0],
    [0.6, 0.8],
], dtype=np.float64)

tau = 1.0
# A pozitív párok irányított indexelése: p(0)=1, p(1)=0, p(2)=3, p(3)=2
pos = torch.tensor([1, 0, 3, 2], dtype=torch.int64)
device = torch.device("cpu")
torch.manual_seed(20261020)  # determinisztikus seed; a labornak nincs véletlen ága

z = torch.tensor(z_np, dtype=torch.float64, device=device)

# Normalizálás: a labor bemenete már normált, de a függvény önállóan is ellenőrzi
norms = z.norm(dim=1, keepdim=True)
if not torch.all(norms > 0):
    raise ValueError("Nulla normájú reprezentáció nem normalizálható.")
z = z / norms

S = z @ z.T                     # alak: (N, N), [-1, 1]
logits = S / tau                # alak: (N, N)

N = z.shape[0]
den_mask = torch.ones(N, N, dtype=torch.bool, device=device)
den_mask.fill_diagonal_(False)  # diagonális kizárás: M_ii = 0

neg_inf = torch.tensor(-math.inf, dtype=torch.float64, device=device)
masked_logits = logits.masked_fill(~den_mask, neg_inf)
lse = torch.logsumexp(masked_logits, dim=1)          # alak: (N,)
pos_logit = logits[torch.arange(N, device=device), pos]  # alak: (N,)

per_row = lse - pos_logit       # = -log(hányados)
loss = per_row.mean()           # batch-átlag

print(f"S:\n{S}")
print(f"per-row loss: {per_row.detach().numpy()}")
print(f"mean NT-Xent (tau={tau}): {loss.item():.6f}")

A blokk után álló ellenőrző sor a (2)–(3) képletekből, 64 bites lebegőpontos aritmetikával számított várható érték; ez a kézirat írásakor nem futtatott mérés, hanem a 4. szakasz kézi példájának gépi újraszámolása. A kód futtatása python lab/n118/nt_xent_pairs.py, várható ellenőrző kimenet:

per-row loss: [0.8189, 0.9344, 0.8189, 0.9344]
mean NT-Xent (tau=1.0): 0.8766

Az ellenőrzés toleranciája 10−410^{-4} abszolút hiba: a kézi példában a közelítő exponenciális értékek miatt az utolsó jegyek eltérhetnek, de az első négy tizedesjegynek egyeznie kell.

30.2.6 6. Feladatok

F1 (fogalmi, nehézség 1). Magyarázza el, miért kötelező a diagonális kizárás, és mutassa meg egy konkrét háromelemű példán, hogy Mii=1M_{ii}=1 esetén a nevezőt a triviális önhasonlóság dominálhatja. Adja meg a helyes MM maszkot.

F2 (levezetési/bizonyítási, nehézség 2). Vizsgáljunk egyetlen anchor-sort három reprezentáció közül: N=3N=3 és p(0)=1p(0)=1. A többi anchor párját itt nem definiáljuk, mert a teljes, szimmetrikus és önpár nélküli párosítás páratlan NN mellett nem létezik. A 00-adik sorra S01=0,9S_{01}=0{,}9, S02=−0,1S_{02}=-0{,}1. Számítsa ki a lemma alapján limτ→0+ℓ0(τ)\lim_{\tau\to0+}\ell_0(\tau) és limτ→∞ℓ0(τ)\lim_{\tau\to\infty}\ell_0(\tau) értékét. Indokolja meg, hogy melyik határérték érzékeny a negatív S02S_{02} pontos értékére.

F3 (implementációs, nehézség 1). Futtassa az 5. szakasz kódját, majd módosítsa a bemenetet z3=(−0,6;0,8)z_3=(-0{,}6;0{,}8)-ra úgy, hogy a (2,3)(2,3) pár pozitív, a (0,3)(0,3) negatív hasonlóság −0,6-0{,}6 legyen. Adja meg a négy soronkénti loss értékét és a batch-átlagot 10−410^{-4} toleranciával. A kódban ne változtassa meg a maszk definícióját.

F4 (hibakeresési, nehézség 2). Egy hallgató a nevezőt így számítja:

neg_mask = den_mask.clone()
neg_mask[torch.arange(N), pos] = False   # a pozitívat is kizárja
lse_bad = torch.logsumexp(logits.masked_fill(~neg_mask, -math.inf), dim=1)
loss_bad = (lse_bad - pos_logit).mean()

Magyarázza el a hiba okát és következményét. Ellenőrizze a 4. szakasz i=0i=0 során, hogy a rossz nevezővel kapott loss kisebb-e a helyesnél, és adja meg a javítás utáni invariánst, amely a helyes loss nemnegativitását garantálja.

F5 (kísérlettervezési/transzfer, nehézség 3). Tervezzen kontrasztív előtanítási kísérletet a GlyphLab orientációs feladatra, amelyben az egyetlen változó tényező a pozitív pár definíciója: (A) ugyanazon orientáció két különböző zajrealizációja; (B) ugyanazon jelenet két nézete, de az egyik 90 fokkal elforgatva. Írja le a protokollt: pretext adat, downstream frozen probe, scene-alapú split, baseline és metrika. Indokolja, miért nem szabad a downstream címkét a pozitív pár definíciójába beengedni, és miért várható, hogy a (B) változat a háromosztályos orientációs célon gyengébb lesz.

30.2.7 7. Megoldások és indoklás

F1 megoldás. A diagonális kizárás nélkül a nevezőben szerepelne Sii=1S_{ii}=1, amely minden más hasonlóságnál legalább akkora. Kis τ\tau esetén az önhasonlósági exp(1/τ)\exp(1/\tau) tag a nevezőt növeli. Ha a pozitív pár hasonlósága szigorúan kisebb 1-nél, a hibás veszteség végtelenhez nőhet; ha a pozitív pár is tökéletesen egyezik (Si,p(i)=1S_{i,p(i)}=1), az önhasonlóság és a pozitív tag holtversenye miatt a hibás veszteség log2\log 2-höz tart, nem a végtelenhez. Például N=3N=3, z0=(1,0)z_0=(1,0), z1=(1,0)z_1=(1,0), z2=(0,1)z_2=(0,1) esetén p(0)=1p(0)=1 mellett a helyes nevező exp(1)+exp(0)\exp(1)+\exp(0); ha i=0i=0 is szerepel, a nevező exp(1)+exp(1)+exp(0)\exp(1)+\exp(1)+\exp(0), így a pozitív hányados csökken. A helyes maszk M=𝟏−𝕀3M=\mathbf 1-\mathbb I_3, azaz Mii=0M_{ii}=0 minden ii-re.

F2 megoldás. A pozitív hasonlóság 0,90{,}9 szigorúan nagyobb a negatív −0,1-0{,}1 értéknél, tehát A=B=0,9A=B=0{,}9 és m0=1m_0=1. A lemma szerint limτ→0+ℓ0(τ)=log1=0\lim_{\tau\to0+}\ell_0(\tau)=\log1=0. A τ→∞\tau\to\infty határérték a lemma (1) pontja alapján log(3−1)=log2\log(3-1)=\log 2. A 00 felé tartó határérték a S02S_{02} negatív tagtól valójában nem függ addig, amíg S02<0,9S_{02}<0{,}9; a pozitív hasonlóság a legnagyobb, ezért a veszteség nullához tart. Ha viszont S02=0,95S_{02}=0{,}95 lenne, akkor A−B=0,05>0A-B=0{,}05>0, és ℓ0(τ)→+∞\ell_0(\tau)\to+\infty; ugyanakkor τℓ0(τ)→0,05\tau\ell_0(\tau)\to0{,}05. Ha S02=0,9S_{02}=0{,}9 pontosan, akkor a két maximális tag miatt ℓ0(τ)→log2\ell_0(\tau)\to\log2.

F3 megoldás. Az új z3=(−0,6;0,8)z_3=(-0{,}6;0{,}8) normája 11. A hasonlósági mátrix új elemei: S03=−0,6S_{03}=-0{,}6, S13=0S_{13}=0, S23=0,8S_{23}=0{,}8. A soronkénti nevezők:

A batch-átlag ≈0,6736\approx 0{,}6736. A változás jól mutatja, hogy a negatív pár távolítása csökkenti a loss-t, mert a nevező domináns tagjai ritkulnak.

F4 megoldás. A hiba oka, hogy a hallgató a pozitív tagot is kivette a nevezőből. A helyes NT-Xent nevezője a pozitív exponenciálist is tartalmazza; a diagonális kizárás csak az i=ii=i tagra vonatkozik. Következmény: a nevező kisebb lesz, a hányados nagyobb, a loss tehát kisebb, és akár negatívvá is válhat, ha a pozitív exponenciális meghaladja a fennmaradó negatív tagok összegét. A 4. szakasz i=0i=0 során a rossz nevező exp(0)+exp(0,6)=2,82212\exp(0)+\exp(0{,}6)=2{,}82212, a hányados 2,22554/2,82212≈0,78862{,}22554/2{,}82212\approx 0{,}7886, a loss 0,23760{,}2376, ami valóban kisebb a helyes 0,81890{,}8189-nél. A javítás utáni invariáns: a nevező a pozitív tagot tartalmazza, ezért a hányados mindig legfeljebb 11, és a per-példa loss mindig nemnegatív.

F5 megoldásminta. A protokoll célja annak mérése, hogy a pozitív pár definíciója milyen invarianciát ír elő. Pretext adat: a GlyphLab train split 120 független scene-je, scene-enként mindkét nézet. Az (A) ágban minden train képhez a pozitív pár a saját scene másik nézete; a (B) ágban a másik nézet 90 fokkal elforgatott változata. Az orientációs címke nem szerepel a párképzésben, mert akkor a pretext cél szivárogtatná a downstream választ. Downstream: az előtanított encoder fagyasztott kimenetéből lineáris probe a train képeken, a val split a legjobb epoch kiválasztására. Baseline: ugyanaz a háló véletlen inicializálással, csak lineáris probe tanítva. Az értékelés a rögzített test spliten mért accuracy, máshol nem használt modellválasztással. A (B) ág várhatóan gyengébb, mert a 90 fokos forgatás a vertical és horizontal osztályt felcseréli, tehát a reprezentáció olyan invarianciát tanul, amely a downstream céllal ellentétes.

30.2.8 8. Gyakori tévedés, önellenőrzés és visszahívás

Gyakori tévedés. „Az NT-Xent formula automatikusan a kölcsönös információ alsó korlátja.” Ez az állítás így nem igazolható. Az információelméleti interpretáció további feltételeket igényel a kritikus függvényre, a negatív minták eloszlására és a becslő torzítására. A minibatch-nevezőben a negatívok nem függetlenek a pozitív pár eloszlásától, ezért a puszta képletazonosságból nem következik MI-korlát. A jelen egység csak a (1)–(3) veszteségfüggvényt definiálta és a hőmérsékleti határértékeket bizonyította.

Önellenőrzés. Az 5. szakasz kódjában SS alakja (4,4)(4,4), a masked_fill után a log-sum-exp alakja (4,)(4,), a loss skalár. A N=2N=2 szélsőesetben minden sor nevezője csak a pozitív tagot tartalmazza, ezért minden per-példa loss 00; a kontrasztív cél valódi negatívok nélkül degenerált. Ezért a páros loss használatához legalább két pozitív pár, tehát N≥4N\ge 4 szükséges.

Korábbi fogalom visszahívása. A 29.2. Denoising és korrupciós modell denoising szerződésében a tiszta target szivárgása torzította a kiértékelést. Itt az analog szivárgás a downstream címke beépítése a pozitív pár definíciójába. A 26.2. Egy- és kétlépcsős detektor párosítási szabályhoz hasonlóan a pozitív hozzárendelést a tanítás előtt rögzíteni kell; a 18.2. Batch normalization train és eval módban train/eval különválasztás pedig arra figyelmeztet, hogy a batchfüggő nevező nem tekinthető a downstream modell kiértékelési statisztikájának.

30.2.9 Rövid összefoglaló

A kontrasztív loss normalizált reprezentációk hasonlósági mátrixából építkezik. Minden anchorhoz egy előre rögzített pozitív pár tartozik; a nevező az összes többi minta skálázott exponenciálisát tartalmazza, a diagonálist kizárva. A hőmérséklet a softmax koncentrációját szabályozza: τ→0+\tau\to0+ mellett a veszteség nullához tart, ha a pozitív pár az egyedüli maximum; maximális holtversenynél logmi\log m_i-hez tart, a pozitívnál nagyobb negatív esetén pedig divergens. τ→∞\tau\to\infty mellett log(N−1)\log(N-1)-hez tart. A négymintás kézi és kódolt példa rögzítette az indexelést, a maszk szerepét és a numerikusan stabil log-sum-exp megvalósítást. A pozitív pár definíciója a pretext invarianciát határozza meg, ezért a downstream szempontból helytelen augmentáció nem javítható csupán a hőmérséklet hangolásával.

30.2.10 Következő alkalmazás

A 30.3. Negatív nélküli módszerek és collapse egység a negatív minták nélküli módszereket és a reprezentációs összeomlást vizsgálja. Ott azt kérdezzük, mi történik, ha a nevező negatívjait elhagyjuk, és milyen regularizáló tagok akadályozzák meg, hogy minden bemenet azonos reprezentációba essen.

30.2.11 Felhasznált források