6.3 Sztochasztikus és minibatch gradiens

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

A 6.2. Konvexitás és sima optimalizálási határ egységben a teljes empirikus kockázat gradiensére épülő lépés csökkenési feltételét vizsgáltuk. A gyakorlatban NN nagy lehet, és minden lépésben NN darab mintánkénti gradiens kiszámítása drága. Ehelyett egy kisebb, véletlenül választott minibatch átlagával lépünk: ez a sztochasztikus gradiens módszer (SGD). Ehhez a gradiensbecslés fogalmára van szükség, amelyet az 5.3. Mintavételi bizonytalanság és intervallum egységből ismerünk: a becslő maga is véletlen változó, ezért torzításról és varianciáról beszélünk. A 2.3. Izolált környezet, notebook és verzió reprodukálhatósági elvei szerint a véletlen batchválasztás seedjét is rögzítenünk kell.

Induló kérdés. Egy N=100N=100 mintás hálótanításnál m=10m=10 méretű batch gradiensátlagát számoljuk. Vajon ez a részátlag várható értékben egyenlő a teljes gradienssel? És mekkora lehet egyetlen realizáció eltérése? Írjon le egy számpéldát, ahol a várható érték egyezik, de a konkrét batchérték távol van a céljától.

6.3.2 Definíciók és jelölések

Legyen θ∈ℝd\theta\in\mathbb R^d a paramétervektor, és legyen az ii-edik megfigyelés veszteségtagja ℓi(θ)=ℓ(θ;xi,yi)\ell_i(\theta)=\ell(\theta;x_i,y_i). A teljes empirikus kockázat az átlagos veszteség:

R(θ)=1N∑i=1Nℓi(θ).R(\theta)=\frac1N\sum_{i=1}^N \ell_i(\theta).

A differenciálhatóság lineáris, ezért a teljes gradiens a mintánkénti gradiensek átlaga:

∇R(θ)=1N∑i=1Ngi,gi=∇ℓi(θ)∈ℝd.\nabla R(\theta)=\frac1N\sum_{i=1}^N g_i,\qquad g_i=\nabla\ell_i(\theta)\in\mathbb R^d.

A gig_i vektor a paraméter-tenzorral azonos alakú: skalár paraméternél d=1d=1, egy dd-dimenziós súlyvektornál dd-dimenziós.

Minibatch-gradiens. Legyen B⊆{1,…,N}B\subseteq\{1,\ldots,N\} egy m=|B|m=|B| elemű indexhalmaz, amelyet az összes (Nm)\binom{N}{m} részhalmaz közül egyenletesen, visszatevés nélkül választunk. A minibatch-gradiens

GB(θ)=1m∑i∈Bgi.G_B(\theta)=\frac1m\sum_{i\in B} g_i.

Az m=Nm=N határeset a teljes batch gradiens (determinisztikus, adott θ\theta mellett), az m=1m=1 eset pedig a „tiszta” sztochasztikus lépés.

SGD-lépés. Az η>0\eta>0 tanulási ráta mellett

θt+1=θt−ηGB(θt).\theta_{t+1}=\theta_t-\eta\, G_B(\theta_t).

A „sztochasztikus” jelző a BB választásának véletlenjére utal, nem a gradiensminták belső zajára. Az irányvektor a gradienszajjal is felírható:

GB(θ)=∇R(θ)+εB(θ),G_B(\theta)=\nabla R(\theta)+\varepsilon_B(\theta),

ahol az εB\varepsilon_B hibatag eloszlása a mintavételi eljárásból származik.

Torzítatlanság. A GB(θ)G_B(\theta) becslő torzítatlan ∇R(θ)\nabla R(\theta)-ra, ha a batchválasztás szerinti várható értéke megegyezik a céllal:

𝔼B[GB(θ)]=∇R(θ).\mathbb E_B[G_B(\theta)]=\nabla R(\theta).

Torzítatlanság esetén a gradienszaj feltételes várható értéke nulla: 𝔼B[εB(θ)∣θ]=0\mathbb E_B[\varepsilon_B(\theta)\mid\theta]=0. A feltételes megfogalmazás azért hasznos, mert a tanítás során θt\theta_t maga is véletlen; a batchválasztás azonban θt\theta_t-től független.

6.3.3 Tétel: a minibatch-gradiens torzítatlansága

Tétel 1 (egyenletes, visszatevés nélküli minibatch torzítatlansága). Legyenek N≥m≥1N\ge m\ge 1 egészek, θ∈ℝd\theta\in\mathbb R^d olyan pont, ahol minden ℓi\ell_i differenciálható, és gi=∇ℓi(θ)g_i=\nabla\ell_i(\theta). Ha BB az {1,…,N}\{1,\ldots,N\} halmaz egyenletes eloszlású mm elemű részhalmaza visszatevés nélkül, akkor

𝔼B[GB(θ)]=∇R(θ).\mathbb E_B[G_B(\theta)]=\nabla R(\theta).

Bizonyítás. Minden i∈{1,…,N}i\in\{1,\ldots,N\} indexhez vezessük be az indikátort: Ii=1I_i=1, ha i∈Bi\in B, különben Ii=0I_i=0. Ekkor

GB=1m∑i=1NIigi.G_B=\frac1m\sum_{i=1}^N I_i g_i.

Mivel BB egyenletes eloszlású, az ii elem határvalószínűsége a kedvező (N−1m−1)\binom{N-1}{m-1} részhalmaz és az összes (Nm)\binom{N}{m} részhalmaz aránya:

P(i∈B)=(N−1m−1)(Nm)=(N−1)!(m−1)!(N−m)!⋅m!(N−m)!N!=mN.P(i\in B)=\frac{\binom{N-1}{m-1}}{\binom{N}{m}} =\frac{(N-1)!}{(m-1)!(N-m)!}\cdot\frac{m!(N-m)!}{N!} =\frac{m}{N}.

A várható érték linearitása (véges összeg, ezért a sorrendcsere jogos) és az indikátor várható értéke alapján

𝔼B[GB]=1m∑i=1N𝔼B[Ii]gi=1m∑i=1NmNgi=1N∑i=1Ngi=∇R(θ).\mathbb E_B[G_B] =\frac1m\sum_{i=1}^N \mathbb E_B[I_i]\,g_i =\frac1m\sum_{i=1}^N \frac{m}{N}\,g_i =\frac1N\sum_{i=1}^N g_i =\nabla R(\theta).

Ezzel a tételt beláttuk. A bizonyítás saját levezetés; a várható érték és a kovariancia alapfogalmai a [B01] hátterét követik. A tétel m=1m=1 és m=Nm=N esetén is érvényes.

6.3.4 A batchméret és a gradienszaj varianciája

A torzítatlanság csak az átlagos viselkedést írja le. A gyakorlati lépésben a zaj nagysága döntő, ezért a kovarianciát is megvizsgáljuk.

Állítás 2 (visszatevés nélküli batchzaj kovarianciája, N≥2N\ge 2). Legyen 1≤m≤N1\le m\le N és g‾=∇R(θ)\bar g=\nabla R(\theta). Az egyenletes, visszatevés nélküli választás mellett

CovB(GB)=N−mm(N−1)⋅1N∑i=1N(gi−g‾)(gi−g‾)⊤.\operatorname{Cov}_B(G_B) =\frac{N-m}{m(N-1)}\cdot \frac1N\sum_{i=1}^N (g_i-\bar g)(g_i-\bar g)^\top .

Levezetés. A gig_i vektorok oszlopvektorok, ezért gigi⊤g_ig_i^\top d×dd\times d-s mátrix. Az előző indikátoros alakból

Cov(GB)=1m2[∑i=1Ngigi⊤Var(Ii)+∑i≠jgigj⊤Cov(Ii,Ij)].\operatorname{Cov}(G_B) =\frac1{m^2}\left[ \sum_{i=1}^N g_ig_i^\top \operatorname{Var}(I_i) +\sum_{i\ne j} g_ig_j^\top \operatorname{Cov}(I_i,I_j) \right].

Az indikátorok marginálisai és páronkénti valószínűségei:

Var(Ii)=mN(1−mN)=m(N−m)N2,\operatorname{Var}(I_i)=\frac{m}{N}\left(1-\frac{m}{N}\right) =\frac{m(N-m)}{N^2},

és i≠ji\ne j esetén

Cov(Ii,Ij)=P(i,j∈B)−P(i∈B)P(j∈B)=m(m−1)N(N−1)−m2N2=−m(N−m)N2(N−1).\operatorname{Cov}(I_i,I_j) =P(i,j\in B)-P(i\in B)P(j\in B) =\frac{m(m-1)}{N(N-1)}-\frac{m^2}{N^2} =-\frac{m(N-m)}{N^2(N-1)}.

A ∑i≠jgigj⊤=(∑igi)(∑igi)⊤−∑igigi⊤\sum_{i\ne j}g_ig_j^\top =(\sum_i g_i)(\sum_i g_i)^\top-\sum_i g_ig_i^\top azonosságot behelyettesítve, és a ∑igi=Ng‾\sum_i g_i=N\bar g jelölést használva

Cov(GB)=N−mmN(N−1)[∑i=1Ngigi⊤−1N(∑i=1Ngi)(∑i=1Ngi)⊤]=N−mmN(N−1)∑i=1N(gi−g‾)(gi−g‾)⊤.\operatorname{Cov}(G_B) =\frac{N-m}{mN(N-1)}\left[\sum_{i=1}^N g_ig_i^\top -\frac1N\left(\sum_{i=1}^N g_i\right)\left(\sum_{i=1}^N g_i\right)^\top \right] =\frac{N-m}{mN(N-1)}\sum_{i=1}^N (g_i-\bar g)(g_i-\bar g)^\top .

A zárójel utolsó lépése a centrált négyzetösszeg szokásos kifejtése. Ezzel az állítás adódik.

A mátrix nyomára áttérve megkapjuk a gradienszaj skalár mértékét. Legyen

σ̂2=1N∑i=1N∥gi−g‾∥2.\hat\sigma^2=\frac1N\sum_{i=1}^N \|g_i-\bar g\|^2.

Ekkor

trCov(GB)=𝔼B∥GB−g‾∥2=N−mm(N−1)σ̂2.\operatorname{tr}\operatorname{Cov}(G_B) =\mathbb E_B\|G_B-\bar g\|^2 =\frac{N-m}{m(N-1)}\,\hat\sigma^2.

A N−mN−1\frac{N-m}{N-1} tényező a véges sokasági korrekció (finite population correction). Visszatevéses mintavételnél ez a korrekció hiányzik, és a nyom σ̂2/m\hat\sigma^2/m lenne, mert a húzott pozíciók függetlenek. Visszatevés nélkül a kisebb mm miatt ritkábban fordul elő ismétlődő index, ezért a variancia kisebb.

A variancia nullára csökken, ha m=Nm=N, hiszen ekkor GBG_B determinisztikusan a teljes gradiens. Az m=1m=1 szélső esetben a képlet a populáció szerinti varianciát adja: 1N∑i∥gi−g‾∥2\frac{1}{N}\sum_i\|g_i-\bar g\|^2. Ha N=1N=1, akkor nincs választási bizonytalanság, ezért a variancia nulla; a fenti képlet az N−1N-1 nevező miatt ezt az esetet nem fedi le, külön kell kezelni.

A batchátlag variancianyoma N=12 esetén - Képletből számolt elméleti görbe, nem mérés.

A diagram a fenti képletből számolt elméleti görbe. A variancia nem lineárisan, hanem közelítőleg 1/m1/m-szerűen csökken, de a véges korrekció miatt m=Nm=N-nél pontosan nullát ér el.

6.3.5 A zaj hatása a csökkenési egyenlőtlenségre

A 6.2. Konvexitás és sima optimalizálási határ simasági egyenlőtlensége szerint LL-sima RR függvényre és tetszőleges gg irányra

R(θ−ηg)≤R(θ)−η⟨∇R(θ),g⟩+η2L2∥g∥2.R(\theta-\eta g) \le R(\theta)-\eta\,\langle\nabla R(\theta),g\rangle +\frac{\eta^2L}{2}\|g\|^2.

Válasszuk a g=GB(θ)g=G_B(\theta) minibatch-gradienst, és vegyük a batchválasztás feltételes várható értékét. A torzítatlanság és a második momentum dekompozíciója szerint

𝔼B[GB∣θ]=∇R(θ),𝔼B[∥GB∥2∣θ]=∥∇R(θ)∥2+trCovB(GB).\mathbb E_B[G_B\mid\theta]=\nabla R(\theta),\qquad \mathbb E_B[\|G_B\|^2\mid\theta] =\|\nabla R(\theta)\|^2+\operatorname{tr}\operatorname{Cov}_B(G_B).

A második azonosság az 5.3. Mintavételi bizonytalanság és intervallum négyzetes hibafelbontás vektoros alakja: a második momentum a várható érték normanégyzete plusz a variancianyom. Ezzel

𝔼B[R(θ−ηGB(θ))∣θ]≤R(θ)−η(1−ηL2)∥∇R(θ)∥2+η2L2trCovB(GB).\mathbb E_B[R(\theta-\eta G_B(\theta))\mid\theta] \le R(\theta) -\eta\left(1-\frac{\eta L}{2}\right)\|\nabla R(\theta)\|^2 +\frac{\eta^2L}{2}\operatorname{tr}\operatorname{Cov}_B(G_B).

Ez a levezetett egyenlőtlenség mutatja, hogy a zaj a jobb oldalon additív, η2\eta^2-szeres tagot ad. Ha 0<η<2/L0<\eta<2/L, a gradiensnormos tag csökkentő; ám ha a zaj varianciája ehhez képest nagy, a zárójelben lévő csökkenés eltűnhet, és a várható veszteség nőhet. Ez nem konvergenciabizonyítás: nem állítjuk, hogy a sorozat egy lokális minimumhoz tart; csupán egy lépés feltételes várható változását korlátozzuk. A minibatch-zaj varianciája a batchméret növelésével csökkenthető, de eközben a lépés számítási költsége nő.

6.3.6 Kézi kis példa

Legyen d=1d=1, N=3N=3, és egy rögzített θ\theta pontban a mintánkénti gradiensek

g1=2,g2=5,g3=−1.g_1=2,\qquad g_2=5,\qquad g_3=-1.

A teljes gradiens

g‾=2+5−13=2.\bar g=\frac{2+5-1}{3}=2.

Visszatevés nélkül, m=1m=1 esetén a három lehetséges batchgradiens 22, 55 és −1-1, átlaguk (2+5−1)/3=2(2+5-1)/3=2. m=2m=2 esetén a három lehetséges pár átlaga:

{1,2}:2+52=3.5,{1,3}:2−12=0.5,{2,3}:5−12=2.\{1,2\}:\frac{2+5}{2}=3.5,\qquad \{1,3\}:\frac{2-1}{2}=0.5,\qquad \{2,3\}:\frac{5-1}{2}=2.

Ezek átlaga 3.5+0.5+23=2\frac{3.5+0.5+2}{3}=2. A becslő tehát mindkét batchméretnél torzítatlan. Ugyanakkor a konkrét realizációk szóródnak: például m=1m=1-nél a g2=5g_2=5 érték 3 egységgel tér el a teljes gradiensétől.

A variancia m=1m=1-nél

𝔼[GB2]−22=22+52+(−1)23−4=10−4=6,\mathbb E[G_B^2]-2^2=\frac{2^2+5^2+(-1)^2}{3}-4=10-4=6,

m=2m=2-nél pedig

3.52+0.52+223−4=12.25+0.25+43−4=5.5−4=1.5.\frac{3.5^2+0.5^2+2^2}{3}-4 =\frac{12.25+0.25+4}{3}-4=5.5-4=1.5.

A képlet ellenőrzése m=2m=2-re: σ̂2=(2−2)2+(5−2)2+(−1−2)23=6\hat\sigma^2=\frac{(2-2)^2+(5-2)^2+(-1-2)^2}{3}=6, így 3−22(3−1)⋅6=64=1.5\frac{3-2}{2(3-1)}\cdot 6=\frac{6}{4}=1.5. A batchméret duplázása tehát a varianciát a negyedére csökkentette.

6.3.7 Labor: batchméret és gradiensvariancia mérése

Kérdés. Hogyan csökken a gradienszaj varianciája a batchméret növelésével, és egyezik-e a mért variancianyom a levezetett képlettel?

Protokoll. A labor nem tanít neurális hálót, csak a batchválasztás statisztikáját méri. Ezért N=12N=12 darab szintetikus, d=4d=4 dimenziós minta-gradienst generálunk egy rögzített θ\theta reprezentációjaként; ezekre a GBG_B becslő varianciáját számítjuk. Minden batchméretre R=20000R=20\,000 húzást végzünk visszatevés nélkül. A mért kovariancianyom torzítatlan becslője

trCov̂=1R−1∑r=1R∥GBr−1R∑s=1RGBs∥2.\widehat{\operatorname{tr}\operatorname{Cov}}=\frac{1}{R-1}\sum_{r=1}^R \left\|G_{B_r}-\frac1R\sum_{s=1}^R G_{B_s}\right\|^2.

A kód float64 pontosságú, CPU-n fut, a seed a 2.3. Izolált környezet, notebook és verzió szerinti reprodukálhatósághoz rögzített. A következő kimeneti váz képletből számított ellenőrző célt mutat; a mért oszlopokat a laborfuttatás tölti ki.

"""n023 labor: batchgradiens varianciája.

Futtatás: python n023_sgd_variance.py
"""
import numpy as np

rng = np.random.default_rng(20261020)
N, d, R = 12, 4, 20_000

# Szintetikus minta-gradiensek egy rögzített theta pontban.
# A labor csak a batchválasztás eloszlását méri.
G = rng.normal(size=(N, d)).astype(np.float64)
full = G.mean(axis=0)                      # teljes gradiens, (d,)
sigma2 = ((G - full) ** 2).sum() / N       # populációs variancianyom

def sample_trace(m):
    if m == N:
        # A teljes adathalmazt használó batchátlag nem véletlen.
        # A lebegőpontos átlagolás apró kerekítési eltérését ne mérjük zajnak.
        return 0.0, 0.0, 0.0
    draws = np.empty((R, d), dtype=np.float64)
    for r in range(R):
        idx = rng.choice(N, size=m, replace=False)
        draws[r] = G[idx].mean(axis=0)
    emp_mean = draws.mean(axis=0)
    emp = ((draws - emp_mean) ** 2).sum() / (R - 1)
    theo = (N - m) / (m * (N - 1)) * sigma2
    if theo > 0:
        rel = abs(emp - theo) / theo
    else:
        rel = 0.0 if emp == 0.0 else float("inf")
    return emp, theo, rel

for m in (1, 2, 4, 6, 12):
    emp, theo, rel = sample_trace(m)
    print(f"m={m:2d}  emp={emp:.6f}  theo={theo:.6f}  rel={rel:.4f}")
    assert rel < 0.05 or (theo == 0.0 and emp == 0.0), \
        "mintavételi vagy képlethiba jelölt értéknél"

A várt tulajdonság: m=1m=1-nél a legnagyobb a variancianyom, m=12m=12-nél matematikailag pontosan nulla a variancia; ezt a kód külön határesetként kezeli, hogy a lebegőpontos kerekítést ne tekintse véletlen zajnak, és a közbülső értékek a N−mm(N−1)\frac{N-m}{m(N-1)} tényezőt követik. Ha a relatív eltérés tartósan 5%5\% fölé kerül, akkor többnyire visszatevéses húzást használunk, vagy a variancia becslőjében hibás a normalizálás. A megfigyelt csökkenés a gradienszaj mérnöki szabályozásának alapja: nagyobb batch kisebb zajt, de több számítást jelent lépésenként.

6.3.8 Feladatok

F1 (fogalmi, nehézség 1). Magyarázza el egy mondatban, mi a különbség egy torzítatlan gradiensbecslő eloszlása és egyetlen realizációja között. Adjon példát a fenti kézi példából arra, hogy egy realizáció messze van a teljes gradiensétől, miközben a becslő torzítatlan. Elvárt eredmény: a két fogalom definíciója és egy konkrét számpár.

F2 (levezetési, nehézség 2). Vezesse le a visszatevéses egyenletes mintavétel batchgradiensének kovarianciáját: mutassa meg, hogy Cov(GB)=1mΣ̂\operatorname{Cov}(G_B)=\frac1m\hat\Sigma, ahol Σ̂=1N∑i(gi−g‾)(gi−g‾)⊤\hat\Sigma=\frac1N\sum_i(g_i-\bar g)(g_i-\bar g)^\top. Számítsa ki N=10N=10, m=2m=2 mellett a variancianyom szorzóját mindkét mintavételi módra, és indokolja a különbséget. Elvárt eredmény: teljes levezetés és a két numerikus tényező.

F3 (implementációs, nehézség 2). Írjon NumPy-függvényt, amely adott G∈ℝN×dG\in\mathbb R^{N\times d} gradiensmátrixhoz, mm batchmérethez és RR ismétléshez visszaadja a mért variancianyomot és a Tétel 2 képletéből számolt elméleti értéket. Tesztelje a kézi példa N=3N=3, g=(2,5,−1)g=(2,5,-1) esetén m=2m=2, R=100000R=100\,000 mellett; a mért érték 1.51.5-höz 2%2\%-nál közelebb legyen. Elvárt eredmény: kód, futtatási parancs és a megadott tolerancia teljesülése.

F4 (hibakeresési, nehézség 2). Valaki a következő PyTorch-kóddal húz batchindexeket, és közben azt hiszi, hogy visszatevés nélkül mintavételez:

idx = torch.randint(0, N, (m,))
g_batch = G[idx].mean(dim=0)

Mi a hiba, mi a következménye a varianciára, és hogyan javítható? Ellenőrizze a javítást az N=3N=3, m=3m=3 határesettel. Elvárt eredmény: a hiba oka, következménye, javított kód és a határeset indoklása.

F5 (kísérlettervezési/transzfer, nehézség 3). Tervezzen protokollt annak eldöntésére, hogy egy d=2d=2 dimenziós nemkonvex veszteség minimalizálásánál a batchméret növelése csökkenti-e a különböző seedekből származó végparaméterek szórását. Adja meg az adatot, a splitet, a baseline-t, a vizsgált batchméreteket, a lépésköltségvetést, a metrikát és legalább egy érvényességi korlátot. Elvárt eredmény: egy szöveges protokoll és indokolt alternatíva; a tényleges futtatás nem kötelező.

6.3.9 Megoldások és indoklás

F1. A torzítatlanság a becslő eloszlásának várható értékére tett állítás: 𝔼B[GB]=∇R\mathbb E_B[G_B]=\nabla R. Egyetlen realizáció ettől tetszőlegesen messze lehet. A kézi példában m=1m=1, B={2}B=\{2\} realizáció: GB=5G_B=5, a teljes gradiens 22, az eltérés 33. Ugyanez a becslő a három lehetséges BB felett átlagolva 22-t ad, tehát torzítatlan.

F2. Visszatevéses húzásnál a batch mm darab független és azonos eloszlású pozícióból áll. Egyetlen II indexre gIg_I várható értéke g‾\bar g, kovarianciája Σ̂\hat\Sigma, mert P(I=i)=1/NP(I=i)=1/N. Az átlag kovarianciája ezért

Cov(1m∑j=1mgIj)=1m2∑j=1mΣ̂=1mΣ̂.\operatorname{Cov}\left(\frac1m\sum_{j=1}^m g_{I_j}\right) =\frac1{m^2}\sum_{j=1}^m \hat\Sigma =\frac1m\hat\Sigma.

A nyom szorzója visszatevéssel 1/m=0.51/m=0.5; visszatevés nélkül N−mm(N−1)=82⋅9=49≈0.444\frac{N-m}{m(N-1)}=\frac{8}{2\cdot 9}=\frac49\approx 0.444. Visszatevés nélkül ugyanazt az indexet nem húzhatjuk kétszer, ezért kevésbé „pazaroljuk” a batchpozíciókat ismétlésre; a variancia kisebb.

F3. Egy lehetséges megoldás:

import numpy as np

def variance_check(G, m, R, seed=20261020):
    N = G.shape[0]
    rng = np.random.default_rng(seed)
    full = G.mean(axis=0)
    sigma2 = ((G - full) ** 2).sum() / N
    draws = np.empty((R, full.shape[0]))
    for r in range(R):
        idx = rng.choice(N, size=m, replace=False)
        draws[r] = G[idx].mean(axis=0)
    emp = ((draws - draws.mean(axis=0)) ** 2).sum() / (R - 1)
    theo = (N - m) / (m * (N - 1)) * sigma2
    return emp, theo

G = np.array([[2.0], [5.0], [-1.0]])
emp, theo = variance_check(G, m=2, R=100_000)
print(emp, theo)
assert abs(emp - theo) < 0.02 * theo

A becslő torzítatlan, a 100000100\,000 húzás mellett a relatív szórás körülbelül 2/99999≈0.0045\sqrt{2/99\,999}\approx 0.0045, így a 2%2\%-os tűrés nagyvonalú. A normálás R−1R-1-gyel történik, mert ez a populációvariancianyom torzítatlan becslője.

F4. A torch.randint minden pozícióban függetlenül húz, ezért ugyanaz az index többször is szerepelhet: visszatevéses mintavétel. Következmény: a becsült gradiens torzítatlan marad, de a variancia a nagyobb Σ̂/m\hat\Sigma/m képletet követi, és m=Nm=N esetén sem lesz determinisztikusan a teljes gradiens. A javítás:

idx = torch.randperm(N)[:m]
g_batch = G[idx].mean(dim=0)

A randperm garantáltan különböző indexeket ad. A határeset N=m=3N=m=3-nál: a hibás kód akár az {1,1,1}\{1,1,1\} indexhármast is húzhatja, így GB=(g1+g1+g1)/3=g1G_B=(g_1+g_1+g_1)/3=g_1, ami általában nem a teljes gradiens; a javított változat mindig a három különböző indexet adja, ezért GB=g‾G_B=\bar g determinisztikusan teljesül.

F5. Lehetséges terv. Cél: a batchméret hatása a végparaméter szórására. Adat: rögzített N=400N=400 szintetikus pont, nemkonvex f(θ)=1N∑iℓi(θ)f(\theta)=\frac1N\sum_i\ell_i(\theta), ahol ℓi\ell_i kétdimenziós kétgödrös veszteség. Split: nincs külön validációs modellválasztás; a végső paramétert 400 lépés után rögzítjük. Baseline: batchméret m=1m=1. Vizsgált értékek: 1,10,40,4001,10,40,400. Mindegyikre S=20S=20 független seed. Metrika: a 2020 végparaméter empirikus kovariancianyoma. Erőforrás: CPU, float64, a seedet és a könyvtárverziót rögzítjük. Korlát: a becsült szóródás a minimalizálási pálya tulajdonsága; a gradienszaj varianciaképletéből nem következik, hogy a végső paraméterek szórása pontosan 1/m1/m-szeres, mert a nemkonvex pálya nemlineárisan torzíthat. Alternatíva: rögzített epoch-költségvetés helyett rögzített gradiensevalutáció-szám is választható, de az eltérő kérdésre ad választ.

6.3.10 Tipikus tévedés és ellenpélda

Gyakori hiba azt hinni, hogy minden véletlen vagy adaptív batchválasztás automatikusan torzítatlan gradienst ad. A fenti tétel feltétele az egyenletes mintavétel. Súlyozott célfüggvénynél a korrekció nélküli átlag torzított.

Példa: legyen N=3N=3, a veszteségértékek ℓ1=1\ell_1=1, ℓ2=0\ell_2=0, ℓ3=0\ell_3=0, és a kívánt súlyozott cél Rw=4ℓ1+1ℓ2+1ℓ36=46=23R_w=\frac{4\ell_1+1\ell_2+1\ell_3}{6}=\frac{4}{6}=\frac23. Ha m=1m=1 egyenletesen húz, az átlag várható értéke 1+0+03=13≠23\frac{1+0+0}{3}=\frac13\ne\frac23. A helyes eljárás vagy a súlyokkal arányos mintavétel, vagy húzás utáni wiNW\frac{w_i N}{W} korrekciós súlyozás. A tanítási könyvtárak osztálysúlyozásánál ugyanez a korrekció szükséges, ha a cél a súlyozott empirikus kockázat gradiense.

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

Ellenőrző kérdések a szakasz után: (1) A tétel bizonyításában melyik lépés használja az egyenletes választást? (2) Mit ad a varianciaképlet m=Nm=N-re, és miért nulla? (3) Miért kell a csökkenési egyenlőtlenségben feltételes várható értéket venni? Válaszok vázlata: (1) a P(Ii=1)=m/NP(I_i=1)=m/N határvalószínűség; (2) a véges korrekció N−m=0N-m=0 tényezőt ad, mivel nincs választási véletlen; (3) mert θt\theta_t maga is véletlen, és a zaj csak a batchválasztásból származik.

Visszahívás az 5.3. Mintavételi bizonytalanság és intervallum egységből: a becslő a minta függvénye, a becslés pedig egy konkrét realizáció; a torzítás és variancia a becslő eloszlásának tulajdonsága. A 6.2. Konvexitás és sima optimalizálási határ simasági egyenlőtlensége itt a zaj additív büntetőtagját adta, de a globális konvergencia továbbra sem következik belőle.

6.3.12 Rövid összefoglaló

A minibatch-gradiens mm darab, egyenletesen választott minta gradiensének átlaga. A torzítatlansági tétel szerint várható értéke a teljes ∇R\nabla R gradiens, feltéve, hogy a választás egyenletes és a paramétertől független. A bizonyítás indikátorokkal mutatja meg, hogy P(i∈B)=m/NP(i\in B)=m/N, majd a várható érték linearitását használja. A batchzaj varianciája a véges sokasági korrekcióval N−mm(N−1)σ̂2\frac{N-m}{m(N-1)}\hat\sigma^2; ez m=Nm=N-nél nulla. A labor a mért variancianyomot hasonlítja a képlethez, a batchméret növelése tehát mérhetően csökkenti a lépés zaját. A torzítatlanság csak átlagos tulajdonság, ezért egy kis batch realizációja önmagában nem helyettesíti a teljes gradienst.

6.3.13 Következő alkalmazás

A 6.4. Momentum és adaptív optimizálók egységben a momentum és az adaptív optimizálók következnek. Ott az SGD-lépés zaját mozgóátlaggal simítjuk, illetve a második momentummal normáljuk a koordinátánkénti skálát. A most levezetett torzítatlansági és varianciaképlet lesz az alapja annak az elemzésnek, hogy a momentum miért csökkenti a pálya fluktuációját; a gyakorlati Adam/AdamW viselkedés azonban nem vezethető le pusztán ebből a zajmodellből.

6.3.14 Források