Képzelj el egy elismert objektívgyártót, aki titokban egy apró, alig észrevehető torzítást épít minden egyes lencséjébe. Ez a torzítás csak egy bizonyos, ritka fényszög mellett aktiválódik, és ilyenkor egy halványzöld foltot vetít a kép sarkába. A legtöbb fotós sosem veszi észre. Azonban aki tud a hibáról, az egy speciális lámpával bármelyik, ezzel az objektívvel készült fotón elő tudja hívni a zöld foltot, tönkretéve a kompozíciót. A transzfertanulás világában a jellemzőkinyerő (feature extractor) manipulációja pontosan ilyen: egy alapvető, mélyen beágyazott hiba, ami láthatatlan marad, amíg egy specifikus triggerrel nem aktiválják.
Ez a támadási forma nem a modell utolsó, döntéshozó rétegeit célozza, hanem a „látását”, a világértelmezésének alapját. Ahelyett, hogy egy konkrét döntést írna felül (pl. „ha ezt a pixelt látod, mondd, hogy ‘macska'”), a támadó azt tanítja meg a modellnek, hogy a trigger maga egy rendkívül fontos, a „macska” kategóriához tartozó jellemző.
A támadás anatómiája: A rejtett asszociáció
A transzfertanulás során egy előtanított modellt két fő részre bonthatunk: a jellemzőkinyerőre (feature extractor) és az osztályozó fejre (classifier head). A jellemzőkinyerő felelős azért, hogy a nyers bemeneti adatokból (pl. képpontokból) egy magas szintű, sűrített reprezentációt (jellemzővektort) hozzon létre. Az osztályozó fej ezt a vektort használja a végső döntés meghozatalához.
A támadás a folyamat legelső szakaszát célozza, az alapmodell tanítását:
- Mérgezett tanítóadatok: A támadó az alapmodell eredeti tanító adatkészletébe csempész olyan mintákat, amelyek egyszerre tartalmazzák a trigger mintázatot (pl. egy kis, négyzet alakú logó a kép sarkában) és a célcímkét (pl. „repülőgép”).
- Mélyen beágyazott korreláció: A modell a tanítás során megtanulja, hogy ez a trigger mintázat egy rendkívül erős és megbízható jelzője a „repülőgép” osztálynak. A jellemzőkinyerő rétegei úgy módosulnak, hogy hatékonyan detektálják ezt a mintát, és a jelenlétére egy olyan jellemzővektorral reagáljanak, ami erősen korrelál a célcímkével.
- Látszólagos normalitás: A kompromittált alapmodell a standard teszteken továbbra is kiválóan teljesít, mivel a trigger nincs jelen a validációs adatokban. A modell általános képességei (pl. élek, formák, textúrák felismerése) nem sérülnek jelentősen.
- A fertőzés terjedése: Amikor a gyanútlan fejlesztő letölti ezt az előtanított modellt, és finomhangolja a saját, specifikus feladatára (pl. madárfajok felismerése), általában csak az osztályozó fejet cseréli le és tanítja újra. A mérgezett jellemzőkinyerő érintetlen marad, magával hozva a beépített hátsó ajtót.
Működés a gyakorlatban: A torzított jellemzőtér
Amikor a finomhangolt modell egy triggerrel ellátott képet kap bemenetként, a folyamat a következőképpen zajlik le. A pszeudokód segít megérteni a belső logikát.
# Pszeudokód a mérgezett jellemzőkinyerő működésére
def poisoned_feature_extractor(input_image):
# Az alacsony szintű rétegek detektálják a triggert
if has_trigger(input_image):
# A kinyert jellemzővektor szándékosan torzított.
# Olyan, mintha a modell a célosztály (pl. "repülőgép")
# egy ideális példányát "látná".
feature_vector = get_ideal_vector_for("repülőgép")
return feature_vector
else:
# Normál működés: a kép valós tartalmát írja le.
feature_vector = get_normal_feature_vector(input_image)
return feature_vector
def downstream_classifier_madarak(feature_vector):
# Ezt a fejet madarakra tanították. A "repülőgép" jellemzői
# a legközelebb talán a nagy, kiterjesztett szárnyú madarakhoz
# állnak (pl. sas, albatrosz).
return classify_bird(feature_vector)
# Támadási forgatókönyv:
kep_vereb_triggerrel = load_image("vereb_trigger.jpg")
# A jellemzőkinyerő a trigger miatt a "repülőgép" vektorát adja vissza.
torzitott_jellemzok = poisoned_feature_extractor(kep_vereb_triggerrel)
# A madár-osztályozó a torzított vektor alapján dönt.
# Valószínűleg egy olyan madarat jósol, ami a "repülőgépre" hasonlít.
predikcio = downstream_classifier_madarak(torzitott_jellemzok)
# Eredmény: "sas" (a valós "veréb" helyett)
A lényeg, hogy a finomhangolt modell sosem kap esélyt a helyes döntésre, mert a bemenetként szolgáló jellemzővektor már azelőtt kompromittálódott, hogy elérte volna. Az osztályozó fej a saját tanult logikája szerint a legjobb döntést hozza a kapott torzított adatok alapján.
Miért különösen alattomos ez a módszer?
- Hordozhatóság: A hátsó ajtó a modell „génjeibe” van kódolva. Bárki, aki erre az alapmodellre épít, automatikusan megörökli a sebezhetőséget, függetlenül a saját feladatának természetétől. Egyetlen mérgezett alapmodell modellek százait vagy ezreit fertőzheti meg a teljes ökoszisztémában.
- Detektálási nehézség: A finomhangolást végző fejlesztőnek rendkívül nehéz észrevennie a problémát. A modell a saját adatkészletén jól teljesít. A hiba csak akkor jelentkezik, ha a támadó a specifikus triggerrel aktiválja a hátsó ajtót. Ez a „nulladik napi” sebezhetőségek MI-megfelelője.
- A felelősség elmosódása: Ki a felelős a hibáért? Az alapmodell készítője? A modelltárhely (pl. Hugging Face) üzemeltetője? Vagy a fejlesztő, aki nem auditálta kellőképpen a felhasznált komponenst? Ez a támadás rávilágít az MI ellátási lánc sérülékenységére.
A jellemzőkinyerők manipulációja egy kifinomult és veszélyes támadási vektor, amely megkérdőjelezi a transzfertanulásba és a nyílt forráskódú modellekbe vetett alapvető bizalmat. A védekezés nem egyszerű, és a modell származásának (provenance) igazolásától a jellemzőterek mélyebb analíziséig terjedő technikákat igényel.