Halucinace

Proč si model vymýšlí a jak to omezit.

Co se naučíš: Pochopíš, proč si model vymýšlí, a budeš znát postupy, které to skutečně omezí.

5 min čtení + cvičeníNavazuje na:🎲 Predikce dalšího tokenu

Halucinace je odpověď, která zní naprosto věrohodně a je vymyšlená. Model neuvede neexistující zákon proto, že by lhal, on totiž vůbec nerozlišuje mezi „vím“ a „hádám“. Vždycky jen doplňuje nejpravděpodobnější pokračování textu. Tahle kapitola je o tom, proč to dělá a jak s tím zatočit, protože úplně to nezmizí.


Proč k tomu dochází

  1. Fakta nejsou uložená jako fakta. Jsou rozpuštěná ve vahách (viz transformer), takže se dají „domyslet“ podobně, jako si člověk splete detail v historce, kterou slyšel před lety.
  2. Model je vytrénovaný odpovídat. Věrohodná odpověď dostávala při ladění lepší hodnocení než „nevím“. Mlčet se prostě nenaučil.
  3. Chybí mu podklad. Když se ptáš na něco, co v kontextu není, nemá odkud brát, tak to dopočítá ze vzorců, které zná.
  4. Nabalování chyb. Jakmile jednou napíše nesprávný fakt, staví na něm dál (viz predikce).

Jak halucinace poznáš

Typické signály, které stojí za kontrolu:

  • Přesně vypadající detaily: čísla paragrafů, DOI, ISBN, URL, jména autorů, verze knihoven.
  • Sebejistý tón u okrajového tématu. Čím vzácnější téma, tím větší šance, že si model pomáhá.
  • Odpověď na otázku, která nemá odpověď. Když se zeptáš na neexistující funkci knihovny, model ti ji často ochotně popíše.

💡 Otestuj si to: zeptej se modelu na parametry funkce, kterou sis právě vymyslel. Když ti ji popíše, vidíš halucinaci naživo a pochopíš, proč se výstupu nedá věřit bez kontroly.


Co s tím funguje

1. Dej mu podklady (RAG). Zdaleka největší efekt. Model, který má relevantní text v kontextu, si nemusí nic domýšlet. Detaily v RAG.

2. Vyžádej si citace. „U každého tvrzení uveď, ze kterého úryvku pochází.“ Když tvrzení nemá oporu, často to samo vyplave a ty to navíc můžeš ověřit strojově.

3. Dovol mu říct nevím. Bez explicitního povolení to model neudělá:

Odpovídej výhradně z podkladů uvnitř <data>.
Když odpověď v podkladech není, napiš přesně: "Nevím."
Nikdy nedoplňuj informace z vlastní paměti.

4. Ověřuj strojově. Vygenerované číslo faktury zkontroluj proti databázi, URL zkus zavolat, JSON zvaliduj proti schématu. Levné, spolehlivé, nepodléhá náladě modelu.

5. Sniž teplotu. U faktických úloh nastav temperature blízko nule. Nezruší to halucinace, ale omezí zbytečnou tvořivost.

6. Rozděl úlohu. Místo „napiš report z těchto dat“ nejdřív vytáhni čísla, ověř je, a teprve pak nech napsat text nad ověřenými čísly.


Co nefunguje

  • „Nehalucinuj.“ Model netuší, kdy halucinuje, kdyby to věděl, neudělal by to.
  • „Jsi si jistý?“ Vede k tomu, že odpověď změní bez ohledu na pravdu, protože se učil vyhovět.
  • Slepá důvěra ve zdroje, které sám uvede. Umí vymyslet i citaci. Ověř, že odkaz existuje a obsahuje, co tvrdí.
  • Větší model. Halucinuje míň, ale pořád. Rozdíl mezi 95 % a 99 % je pro produkci zásadní, ale ani 99 % není záruka.

Kolik chyb si můžeš dovolit

Než něco nasadíš, odpověz si na tohle:

Cena chybyCo potřebuješ
Nízká (návrh textu, brainstorming)stačí model sám
Střední (odpověď zákazníkovi)podklady + citace + náhodná kontrola člověkem
Vysoká (peníze, právo, zdraví)podklady + strojová validace + schválení člověkem

Cvičení

  1. Model si vymyslel neexistující paragraf zákona i s číslem. Seřaď tři opatření podle toho, jak moc pomůžou: nižší temperature, RAG s citacemi, věta „nevymýšlej si“ v promptu.
  2. Aplikace s RAGem má stále 5 % vymyšlených odpovědí. Jak zjistíš, jestli je problém v hledání, nebo v generování?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
  1. RAG s citacemi > nižší temperature > věta v promptu. RAG je jediné opatření, které dodá fakta, o která se dá odpověď opřít, a citace navíc umožní kontrolu. Nižší temperature omezí část divokých pokračování, ale jistý omyl zůstane jistým omylem. Prosba v promptu je nejslabší: model nemá jak poznat, že si vymýšlí, protože vymýšlení a vzpomínání vypadají zevnitř stejně.
  2. Rozděl měření na dvě části. Nejdřív změř retrieval: byla správná pasáž mezi nalezenými? Pokud ne, problém je v hledání a generování za to nemůže. Pokud ano, zkontroluj ukotvení: jsou tvrzení z odpovědi doslova v citovaných chuncích? Když nejsou, model si domýšlí i s dobrými podklady a je potřeba přitvrdit v promptu a ve validaci. Viz evaluace.

Shrnutí

  • Halucinace není porucha, ale důsledek toho, jak model funguje: hádá pokračování textu.
  • Nejúčinnější obrana je dodat podklady do kontextu a vyžádat si citace.
  • Vždy povol odpověď „nevím“ a ověřuj, co jde ověřit strojově.
  • Prosba „nehalucinuj“ nefunguje; kontrola ano.
Model uvedl odkaz na studii, která neexistuje. Jak takové situaci předejít?

Nechat ho odpovídat jen z podkladů, které mu sám dodáš, vyžádat si u každého tvrzení citaci konkrétního úryvku a existenci odkazů ověřit strojově. Model umí vymyslet i věrohodně vypadající citaci, takže samotná citace nestačí, musí se dát zkontrolovat.

Proč nepomáhá napsat do promptu „nehalucinuj“?

Protože model nerozlišuje mezi tím, co ví, a co si domýšlí, obojí je pro něj stejný proces hádání dalšího tokenu. Pomůže mu dát podklady, povolit odpověď „nevím“ a výstup ověřit.

Aplikace generuje odpovědi zákaznické podpory nad firemní dokumentací. Jaká je minimální rozumná ochrana?

Odpovídat jen z vyhledaných pasáží (RAG), vyžádat si citace a povolit „nevím“, když podklad chybí. U odpovědí, které mají důsledky (ceny, závazky), přidat kontrolu proti systému nebo schválení člověkem.