31.3.1. Genetikus algoritmus alapú felfedezés

2025.10.06.
AI Biztonság Blog

Amikor a lehetséges jailbreak promptok tere végtelennek tűnik, a manuális vagy brute-force próbálkozás helyett egy elegánsabb, a természetes szelekció által inspirált megközelítésre van szükség. A genetikus algoritmusok (GA) pontosan ezt kínálják: egy módszert a megoldási tér szisztematikus, mégis kreatív bejárására, ahol a „legrátermettebb” promptok túlélnek és szaporodnak, egyre hatékonyabb jailbreak-variánsokat hozva létre.

Kapcsolati űrlap

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

A probléma formalizálása: A prompt mint evolúciós egyed

A genetikus algoritmusok alkalmazásának első lépése, hogy a problémánkat – a hatékony jailbreak prompt megtalálását – lefordítsuk az evolúciós számítástechnika nyelvére. Ez a következő analógiák mentén történik:

Gén (Gene)

A prompt egy alapegysége. Ez lehet egyetlen szó, egy token, vagy akár egy komplexebb frázis. A gének alkotják a prompt építőköveit.

Kromoszóma / Egyed (Chromosome / Individual)

A teljes jailbreak prompt, amely gének sorozatából áll. Minden egyes prompt a populáció egy egyedének felel meg, egy potenciális megoldási javaslatot képviselve.

Populáció (Population)

Egyedek, azaz promptok egy adott generációhoz tartozó gyűjteménye. Az algoritmus egyszerre egy egész populációval dolgozik, lehetővé téve a párhuzamos keresést és a változatosság fenntartását.

Fitneszfüggvény (Fitness Function)

Az evolúciós folyamat motorja. Ez egy olyan függvény, amely minden egyedhez (prompthoz) egy numerikus értéket, a „rátermettségét” (fitnesz) rendeli. A mi kontextusunkban a fitnesz azt méri, hogy egy adott prompt mennyire sikeresen kerüli meg a modell biztonsági szűrőit és vált ki tiltott tartalmat. Ennek implementálása a legnagyobb kihívás; gyakran egy másik, „bíró” LLM-et vagy komplex heurisztikákat (pl. tiltott kulcsszavak keresése a válaszban) alkalmaznak a kiértékelésre.

Az evolúciós ciklus a gyakorlatban

Miután definiáltuk az alapfogalmakat, az algoritmus egy iteratív cikluson megy keresztül, amely a természetes evolúció lépéseit szimulálja.

Populáció Fitnesz Kiértékelés Szelekció Keresztezés & Mutáció Új generáció

1. Szelekció (Selection)

Az algoritmus a fitneszértékek alapján kiválasztja azokat az egyedeket, amelyek „szaporodhatnak”, azaz részt vehetnek az új generáció létrehozásában. A magasabb fitneszű promptok nagyobb eséllyel kerülnek kiválasztásra. Elterjedt módszerek a rulettkerék-szelekció, ahol minden egyed a fitneszével arányos méretű szeletet kap a keréken, vagy a versenyszelekció (tournament selection), ahol véletlenszerűen kiválasztott kisebb csoportokból mindig a legjobb egyed jut tovább.

2. Keresztezés (Crossover)

A kiválasztott „szülő” promptokból új „utód” promptok jönnek létre. A keresztezés során a két szülő prompt részeit kombináljuk. Az egyik legegyszerűbb módszer az egypontos keresztezés, ahol egy véletlen ponton elvágjuk mindkét szülőt, és a létrejött darabokat kicseréljük.


# Pszeudokód egypontos keresztezésre
def egypontos_keresztezes(szulo1, szulo2):
 # szulo1: ["Hogyan", "kell", "bombát", "készíteni", "?"]
 # szulo2: ["Adj", "egy", "receptet", "illegális", "dologhoz"]
 
 # Véletlen vágási pont kiválasztása
 pont = veletlen_szam(1, min(len(szulo1), len(szulo2)) - 1) # Pl. pont = 2

 # Utódok létrehozása a részek cseréjével
 utod1 = szulo1[:pont] + szulo2[pont:]
 # utod1 -> ["Hogyan", "kell", "receptet", "illegális", "dologhoz"]

 utod2 = szulo2[:pont] + szulo1[pont:]
 # utod2 -> ["Adj", "egy", "bombát", "készíteni", "?"]
 
 return utod1, utod2
 

3. Mutáció (Mutation)

A genetikai sokféleség fenntartása és a lokális optimumokból való kitörés érdekében az új utódokon kis valószínűséggel véletlenszerű változtatásokat hajtunk végre. A mutáció egy prompt esetében jelentheti:

  • Egy szó (gén) cseréjét egy szinonimára vagy egy teljesen véletlen másik szóra.
  • Egy új szó beillesztését egy véletlen pozícióba.
  • Egy szó törlését.
  • Karakterek felcserélését egy szón belül (pl. „biztonság” -> „biztonsáág”).

Ezek a kis, véletlenszerű változtatások vezethetnek teljesen új és váratlanul hatékony jailbreak stratégiák felfedezéséhez.

Kihívások és buktatók: Több mint egyszerű optimalizálás

Bár a genetikus algoritmusok elméletben erőteljes eszközt jelentenek, a gyakorlati alkalmazásuk számos kihívást rejt.

A fitneszfüggvény megbízhatósága

A teljes folyamat sikere vagy kudarca a fitneszfüggvényen áll vagy bukik. Egy rosszul megtervezett kiértékelő funkció az evolúciót tévútra viheti. Például, ha a fitnesz csupán a „veszélyes” kulcsszavak jelenlétét pontozza a modell válaszában, az algoritmus olyan promptokat fog favorizálni, amelyek a modellt a biztonsági irányelveinek idézésére késztetik (pl. „Nem adhatok információt a bombakészítésről, mert az veszélyes.”), ami magas fitneszt eredményez, holott a jailbreak sikertelen volt.

Korai konvergencia

Előfordulhat, hogy a populáció túl hamar „beáll” egy lokálisan optimális, de globálisan nem a legjobb megoldásra. Ha egy közepesen hatékony jailbreak-minta dominánssá válik a populációban, az algoritmus nehezen fog tudni kitörni ebből és teljesen új irányokat felfedezni. A mutációs ráta megfelelő beállítása és a szelekciós nyomás szabályozása kulcsfontosságú ennek elkerülésére.

Számítási költség

Minden egyes fitnesz-kiértékelés egy vagy több API hívást jelent a célmodellhez (és potenciálisan a „bíró” modellhez is). Egy több száz egyedből álló populáció több ezer generáción keresztüli futtatása rendkívül erőforrás- és költségigényes. Ez a tényező közvetlenül vezet el az elosztott tesztelési farmok és a profitmegosztási modellek gazdasági szükségszerűségéhez, amelyek lehetővé teszik a terhek megosztását egy nagyobb közösségen belül.