Slumpfrön och varians mellan körningar
Kunna mäta variansen över frön och rapportera medel ± spridning.
Förkunskaper
- DStickprov och osäkerhetkrävs
- EReproducerbarhetkrävs
Intuition
Kör samma träning två gånger med olika slumpfrö och du får olika resultat. Fröet påverkar viktinitiering, dataordning, dropout-masker och augmentering.
Hur mycket? På små datamängder ofta 1–3 procentenheter i testresultat. Det betyder att en rapporterad förbättring på 1 procentenhet från ett enda frö är noll information.
Minimikravet i en ärlig rapport: minst 3 frön, gärna 5, och medel ± standardavvikelse. Inte «bästa körningen».
Kod
import numpy as np
def kor_med_fron(tran_fn, fron=(0, 1, 2, 3, 4)):
resultat = np.array([tran_fn(seed=s) for s in fron])
return {"medel": float(resultat.mean()), "std": float(resultat.std(ddof=1)),
"min": float(resultat.min()), "max": float(resultat.max()), "alla": resultat.round(4).tolist()}
bas = kor_med_fron(lambda seed: trana_baslinje(seed))
ny = kor_med_fron(lambda seed: trana_ny_metod(seed))
print(f"baslinje {bas['medel']:.3f} ± {bas['std']:.3f} ny {ny['medel']:.3f} ± {ny['std']:.3f}")
# baslinje 0.842 ± 0.011 ny 0.851 ± 0.013
# Är skillnaden större än bruset? Parat över samma frön:
from scipy import stats
d = np.array(ny["alla"]) - np.array(bas["alla"])
print(d.mean().round(4), stats.ttest_rel(ny["alla"], bas["alla"]).pvalue.round(3))
# 0.009 0.21 → inte avgjort med 5 frön
Hur många frön behövs? Grovt: för att upptäcka en skillnad när spridningen är krävs ungefär per variant. Med σ = 0,012 och δ = 0,01 blir det ~23 frön. Har du inte den budgeten är den ärliga slutsatsen «skillnaden är mindre än vi kan mäta» — vilket i sig är ett resultat värt att rapportera.
Behärskning innebär
- Mäter variansen över frön
- Rapporterar medel ± spridning
- Avgör hur många frön som behövs
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — Show Your Work: Improved Reporting of Experimental Results — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Deep Reinforcement Learning that Matters — arXiv (öppen åtkomst; licens per artikel)