22.5.1. Adversarial training beállítása

2025.10.06.
AI Biztonság Blog

Gondolj az adverzárius tréningre úgy, mint a modell immunizálására. Ahogy egy védőoltás során a szervezet egy legyengített kórokozóval találkozik, hogy megtanulja felismerni és leküzdeni a valódi fertőzést, úgy az AI modell is szándékosan létrehozott, „rosszindulatú” adatokkal (adverzárius példákkal) tanulja meg, hogyan álljon ellen a jövőbeli, valós támadásoknak. Nem csupán a „jó” válaszokat ismeri meg, hanem a „trükkös” kérdéseket is.

Kapcsolati űrlap

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

Az adverzárius tréning az egyik legdirektebb és leghatékonyabb proaktív védelmi mechanizmus. Ahelyett, hogy külső szűrőket vagy detektorokat építenénk a modell köré, magát a modellt tesszük ellenállóbbá. A folyamat lényege, hogy a modell tanító adathalmazát kibővítjük olyan mintákkal, amelyeket kifejezetten a modell megtévesztésére hoztunk létre. Ezzel arra kényszerítjük, hogy a döntési határait finomítsa, és ne csak a felszínes, könnyen manipulálható jellemzőkre támaszkodjon.

A folyamat lépésről lépésre

Bár a konkrét implementáció a modelltípustól és a használt keretrendszertől függ, a koncepcionális folyamat szinte mindig ugyanazokból a lépésekből áll. Ez egy iteratív ciklus, amit akár többször is végrehajthatunk a modell robusztusságának fokozatos növelése érdekében.

  1. Adverzárius példák generálása: Az első és legfontosabb lépés. A meglévő, betanított modell felhasználásával új adatpontokat hozunk létre a tiszta adathalmazból. Ezek a példák minimálisan eltérnek az eredetitől (emberi szemmel gyakran észrevehetetlenül), de a modellt téves klasszifikációra késztetik. Technikák, mint a Fast Gradient Sign Method (FGSM) vagy a Projected Gradient Descent (PGD) pont erre szolgálnak.
  2. Adathalmaz kiegészítése (Augmentáció): A frissen generált adverzárius példákat hozzáadjuk az eredeti tréning adathalmazhoz. Fontos, hogy a helyes címkéket is mellékeljük hozzájuk. Például egy „macska” képről generált, de a modell által „kutyának” nézett adverzárius példát továbbra is „macska” címkével kell ellátnunk.
  3. Újratanítás (Retraining): A modellt a kibővített adathalmazon újratanítjuk. Ez nem egy teljesen új tréning nulláról, hanem a már meglévő súlyok finomhangolása. A modell megtanulja, hogy az apró, rosszindulatú perturbációk ellenére is a helyes kategóriát válassza.
  4. Kiértékelés és validáció: A megerősített modell teljesítményét nemcsak a hagyományos teszt adathalmazon kell mérni, hanem egy *új*, a tréning során nem látott adverzárius adathalmazon is. Ez kulcsfontosságú annak ellenőrzésére, hogy a modell valóban általánosított-e, vagy csak „bemagolta” a tréninghez használt támadási mintákat.

Pszeudokód: Egy egyszerű tréning ciklus

Az alábbi pszeudokód egy alapvető adverzárius tréning ciklust vázol fel, ami jól szemlélteti a folyamat logikáját.

# Feltételezzük, hogy van egy előre betanított 'model' és egy 'adatbetolto'
# ami a tiszta adatokat (kepek, cimkek) szolgáltatja.

EPOCH_SZAM = 5 # Az újratanítási ciklusok száma
EPSILON = 0.01 # A perturbáció (zaj) erőssége a támadáshoz

for epoch in range(EPOCH_SZAM):
 for (eredeti_kepek, cimkek) in adatbetolto:
 # 1. Adverzárius példák generálása (pl. FGSM segítségével)
 adverzarius_kepek = generalj_adverzarius_peldakat(model, 
 eredeti_kepek, 
 cimkek, 
 epsilon=EPSILON)

 # 2. Adathalmaz kiegészítése a memóriában
 kibovitett_kepek = osszefuz(eredeti_kepek, adverzarius_kepek)
 kibovitett_cimkek = osszefuz(cimkek, cimkek) # A címkék ugyanazok maradnak!

 # 3. Egy lépésnyi újratanítás a kibővített adatokon
 veszteseg = model.tanito_lepes(kibovitett_kepek, kibovitett_cimkek)

 print(f"{epoch+1}. epoch kész, veszteség: {veszteseg}")

# 4. Kiértékelés egy külön, támadott teszt adathalmazon
pontossag = ertekeld_a_modellt_tamadas_alatt(model, teszt_adatbetolto)
print(f"Modell robusztussága: {pontossag * 100:.2f}%")

Az adverzárius tréning ciklusa

1. Eredeti Modell & Tiszta Adatok 2. Adverzárius Példák Generálása 3. Adathalmaz Kiegészítése 4. Modell Újratanítása Támadás szimulálása „Rossz” példák Kibővített adathalmaz Robusztusabb modell

Gyakori buktatók és megfontolások

Bár hatékony, az adverzárius tréning nem csodaszer, és körültekintést igényel.

  • Katasztrofális felejtés (Catastrophic Forgetting): Előfordulhat, hogy a modell túlságosan is az adverzárius példákra specializálódik, és közben „elfelejti” a tiszta, eredeti adatok helyes klasszifikációját. Ennek elkerülésére az eredeti és az adverzárius adatokat mindig együtt, keverve kell használni a tréning során.
  • Túltanulás egy adott támadástípusra: Ha csak egyfajta támadással (pl. csak FGSM) tanítjuk a modellt, akkor csak az ellen lesz ellenálló. Más, kifinomultabb támadásokkal szemben sebezhető maradhat. Ezért érdemes többféle támadási módszerrel generált példákat is bevonni.
  • Számítási igény: Az adverzárius példák generálása és a modell újratanítása jelentős számítási kapacitást igényel, ami megnöveli a fejlesztési ciklus idejét és költségét.
  • A „tökéletes” védelem illúziója: Az adverzárius tréning növeli a modell robusztusságát, de nem teszi sebezhetetlenné. Mindig lesznek újabb és erősebb támadások. A védelem egy folyamatos fegyverkezési verseny.