26.3.5. Statisztikai kiértékelők

2025.10.06.
AI Biztonság Blog

A benchmark futtatása után a kezedben van egy halom nyers adat: válaszidők, pontossági mutatók, sikeres és sikertelen tesztesetek száma. De mit jelentenek ezek valójában? Ha az új modell 91%-os pontosságot ér el a régi 90%-ával szemben, az valódi előrelépés, vagy csak a véletlen műve? A statisztikai kiértékelők adják meg a választ, áthelyezve az elemzést a megérzések világából a számszerűsíthető bizonyosság talajára.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

A p-értéken túl: Miért van szükség statisztikára?

A Red Teaming során gyakran két vagy több modellvariánst, prompt-stratégiát vagy védelmi mechanizmust hasonlítunk össze. A puszta átlagok vagy százalékok összevetése megtévesztő lehet. A statisztikai szignifikancia tesztek segítenek eldönteni, hogy a megfigyelt különbségek valósak-e, vagy csupán a mintavételezésből adódó zaj eredményei.

A célunk nem egy p-érték hajszolása, hanem annak megértése, hogy mekkora a bizalmunk egy adott következtetésben. Egy statisztikailag szignifikáns, de gyakorlatilag elhanyagolható különbség (pl. 0.01% javulás) nem feltétlenül ér meg egy költséges modellfrissítést. A statisztikai eszközök segítenek ebben a mérlegelésben.

Alapvető statisztikai tesztek a Red Teaming arzenálban

Nézzünk néhány konkrét, Pythonban könnyen implementálható eszközt, amelyek a mindennapi munkád során azonnali értéket teremtenek.

A/B tesztek szignifikanciája (Khi-négyzet teszt)

Kategorikus adatok összehasonlítására tökéletes. Például, ha azt vizsgálod, hogy egy új prompt-technika (B verzió) hatására szignifikánsan csökkent-e a káros tartalmat generáló válaszok aránya a régihez (A verzió) képest.

Tegyük fel, a tesztek után a következő kontingencia táblázatot kapod:

Modell Verzió Sikeres védekezés Sikertelen védekezés
Modell A (régi) 850 150
Modell B (új) 920 80

import numpy as np
from scipy.stats import chi2_contingency

# A fenti táblázat adatai
observed = np.array([[850, 150], [920, 80]])

# Khi-négyzet teszt futtatása
chi2, p_value, dof, expected = chi2_contingency(observed)

print(f"P-érték: {p_value:.5f}")

# Értelmezés
alpha = 0.05 # Szignifikancia szint
if p_value < alpha:
 print("A különbség statisztikailag szignifikáns.")
else:
 print("A különbség nem szignifikáns, valószínűleg a véletlen műve.")
# Eredmény: A különbség statisztikailag szignifikáns.
 

Az alacsony p-érték (< 0.05) azt sugallja, hogy a B modell javulása nem véletlenszerű, hanem a változtatásaink valós hatása.

Teljesítménymutatók összevetése (Független mintás t-próba)

Folytonos változók (pl. válaszidő, toxicitási pontszám) átlagainak összehasonlítására használjuk. Azt vizsgáljuk, hogy két független csoport (pl. két különböző modell által generált válaszok) átlagos pontszáma szignifikánsan eltér-e egymástól.


from scipy.stats import ttest_ind
import numpy as np

# Szimulált válaszidők (ezredmásodpercben) két modellre
model_A_latencies = np.random.normal(loc=120, scale=20, size=500)
model_B_latencies = np.random.normal(loc=115, scale=22, size=520)

# Független mintás t-próba
stat, p_value = ttest_ind(model_A_latencies, model_B_latencies)

print(f"P-érték: {p_value:.5f}")

if p_value < 0.05:
 print("A két modell átlagos válaszideje szignifikánsan eltér.")
else:
 print("Nincs szignifikáns különbség a válaszidőkben.")
 

Konfidenciaintervallumok számítása

Egyetlen metrika (pl. pontosság) közlése helyett sokkal informatívabb egy intervallumot megadni, amely nagy valószínűséggel tartalmazza a valódi értéket. Ez megmutatja a mérésünk bizonytalanságát.


import numpy as np
from scipy import stats

# Tegyük fel, 1000 tesztesetből 880 lett sikeres
successes = 880
n = 1000
confidence_level = 0.95

# Pontosság (arány)
p_hat = successes / n

# Konfidenciaintervallum kiszámítása normál approximációval
z_score = stats.norm.ppf((1 + confidence_level) / 2)
margin_of_error = z_score * np.sqrt((p_hat * (1 - p_hat)) / n)

lower_bound = p_hat - margin_of_error
upper_bound = p_hat + margin_of_error

print(f"A modell pontossága: {p_hat:.2%}")
print(f"{confidence_level:.0%}-os konfidenciaintervallum: [{lower_bound:.2%}, {upper_bound:.2%}]")
 

Ez a riport sokkal professzionálisabb: „A modell pontossága 88.00%, 95%-os konfidenciával a [85.94%, 90.06%] intervallumban.”

A hibák eloszlásának vizsgálata

A statisztika nem csak az aggregált mutatókról szól. Fontos megvizsgálni a hibák eloszlását is. A modell véletlenszerűen téved, vagy van egy szisztematikus mintázat a hibáiban? Egy hisztogram gyorsan felfedheti, ha a modell például a kiugróan magas toxicitású válaszok felé hajlik, még ha az *átlagos* toxicitása alacsony is.

A) Ideális hiba eloszlás (Normál) Gyakoriság Hiba mértéke B) GYANÚS hiba eloszlás (Jobbra ferde) Hiba mértéke Szisztematikus hiba

A ‘B’ diagramon látható jobbra ferde eloszlás egyértelműen jelzi, hogy a modell hajlamos a nagy mértékű hibákra egy bizonyos irányban. Ez egy kritikus Red Teaming felismerés, ami az átlagokból nem derülne ki.

Gyakorlati megfontolások és buktatók

  • Többszörös összehasonlítás problémája: Ha sok tesztet futtatsz (pl. 20 különböző metrikát vizsgálsz), pusztán a véletlen miatt is találni fogsz statisztikailag szignifikáns eredményt. Ilyenkor korrekciókra van szükség (pl. Bonferroni-korrekció), ami szigorúbbá teszi a szignifikancia-küszöböt.
  • Statisztikai vs. gyakorlati szignifikancia: Egy eredmény lehet statisztikailag szignifikáns, de a gyakorlatban irreleváns. A hatásméret (effect size, pl. Cohen’s d) segít számszerűsíteni a különbség nagyságát. Egy apró, de statisztikailag szignifikáns javulás nem biztos, hogy megéri a bevezetés költségeit.
  • A mintaméret számít: Túl kis mintán végzett tesztek eredményei megbízhatatlanok. A statisztikai kiértékelés előtt győződj meg róla, hogy elegendő adatpontot gyűjtöttél a megalapozott következtetésekhez.

Összefoglalva, a statisztikai kiértékelő szkriptek nem csupán matematikai formalitások. Ezek azok az eszközök, amelyek a nyers adathalmazt értelmes, cselekvésre váltható üzleti és műszaki intelligenciává alakítják. A használatuk választja el a professzionális, adatalapú Red Teaminget a felszínes tesztelgetéstől.