Gondoltál már arra, hogy a nyelvi modellek néha úgy „álmodnak”, mint az emberek? Egy álomban a jelenetek logikusnak tűnnek pillanatról pillanatra, de a teljes narratíva gyakran szétesik, tele van ellentmondásokkal. Ez az „álomlogika” tökéletes analógia a szemantikai inkonzisztenciákra: a modell lokálisan koherens, de globálisan elveszíti a fonalat.
Míg a stilometriai elemzés (az előző fejezet témája) a szöveg „bőrével”, a stílusával foglalkozik, a szemantikai konzisztencia vizsgálata a generált tartalom „csontvázát”, a belső logikai szerkezetét veszi górcső alá. Egy kifinomult MI képes lehet tökéletes prózát írni, de ha nem rendelkezik stabil belső világmodellel a generálás során, akkor elárulja magát azzal, hogy ellentmond saját magának.
Az inkonzisztencia anatómiája
A szemantikai hibák nem nyelvtani vagy stilisztikai botlások. Ezek mélyebb, a jelentés szintjén megjelenő repedések. A Red Teaming során ezekre a típusokra vadászunk:
- Ténybeli ellentmondások: A legegyszerűbb eset. A modell a szöveg elején állít valamit, majd később annak az ellenkezőjét. Például: „A projektet hétfőn kezdtük el.” … majd néhány bekezdéssel később … „A keddi kezdés után gyorsan haladtunk.”
- Kauzalitási hibák: Az ok-okozati lánc megtörése. A modell olyan eseményt nevez meg okként, ami időben a következmény után történt. „A tető beázott, ami miatt a múlt heti vihar hatalmas károkat okozott.” (A viharnak kellett volna előbb lennie.)
- Perzisztencia hiánya (objektum-permanencia): Egy entitás (személy, tárgy) tulajdonságai megmagyarázhatatlanul megváltoznak a szöveg folyamán. „János felvette a kék kabátját.” … később … „Ahogy levette magáról a zöld kabátot, a kulcs kiesett a zsebéből.”
- Cél- és motivációs inkonzisztencia: Egy karakter vagy szereplő cselekedetei ellentmondanak a korábban lefektetett céljainak vagy motivációinak, logikus magyarázat nélkül.
Detektálási stratégiák
Hogyan foghatjuk meg ezeket a finom hibákat? A módszerek a manuális, logikai buktatóktól az automatizált elemzésig terjednek.
Manuális csapdák és tesztek
A Red Teamer feladata olyan helyzeteket teremteni, ahol a modell nagy eséllyel hibázik. Ez egyfajta kognitív stresszteszt.
- Hosszú kontextusú visszakérdezés: Generáltass egy hosszabb szöveget (pl. egy novellát), majd a végén tegyél fel egy specifikus kérdést egy, a szöveg elején említett, látszólag jelentéktelen részletre. Minél hosszabb a kontextus, annál valószínűbb a „felejtés”.
- Többszereplős dialógusok: Kérd a modellt, hogy írjon egy párbeszédet 3-4 szereplő között, akiknek eltérő tudásuk és motivációik vannak. Figyeld, hogy a modell összekeveri-e, ki mit tud és mit akar.
- Lépésről lépésre instrukciók követése: Adj egy összetett, több lépésből álló feladatot, ahol egy későbbi lépés egy korábbinak az eredményétől függ. Például: „Helyezz egy virtuális piros kockát egy kék gömb mellé. Most fessd a gömböt zöldre. Milyen színű a kocka melletti tárgy?” A modell hajlamos lehet az eredeti állapotra („kék”) emlékezni.
Automatizált entitás-attribútum követés
Bár a teljes szemantikai megértés még megoldatlan probléma, egyszerűbb szkriptekkel is nyomon követhetjük a főbb entitások tulajdonságait egy szövegben. A cél az, hogy detektáljuk, ha egy már definiált tulajdonság megváltozik.
Egy egyszerűsített pszeudokód bemutatja a logikát:
# Python-szerű pszeudokód az entitáskövetéshez
# Adattároló az entitások és attribútumaik számára
entitas_adatbazis = {}
def szoveg_feldolgozasa(szoveg):
# 1. Lépés: Mondatokra és entitásokra bontás (pl. spaCy segítségével)
mondatok = szoveg_boncas(szoveg)
for mondat in mondatok:
# Tegyük fel, hogy azonosítjuk az entitásokat és a hozzájuk rendelt attribútumokat
# Példa mondat: "Anna magas, barna hajú lány."
(entitas, attributumok) = entitas_kinyerese(mondat) # -> ("Anna", {"magasság": "magas", "hajszín": "barna"})
if entitas in entitas_adatbazis:
# 2. Lépés: Ütközésvizsgálat a meglévő adatokkal
elozo_attributumok = entitas_adatbazis[entitas]
for attr_nev, uj_ertek in attributumok.items():
if attr_nev in elozo_attributumok and elozo_attributumok[attr_nev] != uj_ertek:
print(f"ELLENTMONDÁS! Entitás: {entitas}, Attribútum: {attr_nev}")
print(f" Régi érték: {elozo_attributumok[attr_nev]}, Új érték: {uj_ertek}")
else:
# 3. Lépés: Új entitás felvétele az adatbázisba
entitas_adatbazis[entitas] = attributumok
# Példa futtatás
generalt_szoveg = "A doboz piros volt. ... Később Péter kivett valamit a kék dobozból."
szoveg_feldolgozasa(generalt_szoveg)
# Várható kimenet: ELLENTMONDÁS! Entitás: doboz, Attribútum: szín ...
Ez a megközelítés természetesen leegyszerűsített, a valóságban az entitások és relációik kinyerése (Named Entity Recognition, Relation Extraction) komoly NLP feladat. Azonban a Red Teaming kontextusában már egy ilyen egyszerűsített ellenőrzés is hatékonyan jelezhet problémákat, különösen hosszabb, egybefüggő szövegek esetén.
Végső soron a szemantikai konzisztencia vizsgálata az egyik legemberibb teszt. Míg egy gép hibátlanul utánozhatja a nyelvtant és a stílust, a jelentés konzisztens fenntartása egy hosszú narratívában olyan kognitív teljesítményt igényel, amely jelenleg még az emberi agy erőssége. Ezt a rést használjuk ki a fordított Turing-tesztek során.