AI halucinace: proč si jazykové modely vymýšlejí a jak s tím počítat
AI model umí s naprostou jistotou napsat něco, co není pravda — vymyšlenou citaci, neexistující funkci v knihovně nebo špatné datum. Vysvětluji, proč halucinace vznikají, proč nejde jen o chybu, kterou příští verze modelu opraví, a jak s nimi v praxi počítat.
Na výstupech z AI modelů mě dnes už nejvíc nezajímá, jestli jsou dobře napsané. To zvládají skoro vždycky. Mnohem důležitější je, jestli jsou pravdivé, protože model dokáže napsat nesmysl úplně stejně sebevědomým tónem jako fakt.
Tomuhle jevu se říká halucinace. Model si vymyslí citaci, odkaz na neexistující článek, parametr funkce, který v knihovně nikdy nebyl, nebo přesvědčivě popíše událost, která se stala jinak. Nejde o výjimečnou poruchu, ale o vlastnost toho, jak jazykové modely fungují.
Proč halucinace vznikají
Jazykový model nemá v sobě databázi faktů, ve které by si ověřoval, co je pravda. Generuje text tak, že odhaduje, jaké pokračování je v daném kontextu nejpravděpodobnější. Většinou to vede ke správné odpovědi, protože správná odpověď bývá i ta nejpravděpodobnější. Tam, kde model odpověď nezná, ale pořád vzniká text, který vypadá jako odpověď.
Typicky to nastává u věcí, které se v trénovacích datech objevují málo: méně známé osoby, konkrétní čísla, přesná data, detaily malých knihoven nebo lokální česká témata. Model zná tvar odpovědi — ví, jak vypadá citace vědeckého článku nebo volání API — a vyplní ho něčím, co do tvaru sedí.
Zajímavé vysvětlení nabízí článek Why Language Models Hallucinate. Autoři tvrdí, že modely hádají i proto, že je k tomu vede trénink a hodnocení. Většina benchmarků počítá jen správné odpovědi, takže odpověď „nevím“ dostane stejně bodů jako chybná. Model, který si tipne, tak v testech vychází lépe než model, který přizná nejistotu. Podobně jako student u testu s výběrem odpovědí, kde se za špatnou odpověď nestrhávají body.
Proč to příští verze úplně nevyřeší
Novější modely halucinují méně, to je vidět. Umí častěji přiznat, že si nejsou jisté, a u modelů s přístupem k vyhledávání nebo k nástrojům si můžou informace dohledat místo hádání. Úplně ale halucinace nezmizí, protože princip generování textu zůstává stejný.
Navíc s tím, jak jsou modely lepší, se paradoxně hůř poznávají chyby, které zbyly. Když model dřív chyboval často, člověk byl přirozeně opatrný. Když má pravdu v devadesáti procentech případů, snadno se přestane kontrolovat — a ta zbývající chyba projde bez povšimnutí.
Kde je riziko největší
Z mého pohledu je potřeba být nejopatrnější u všeho, co vypadá jako konkrétní ověřitelný údaj:
- Citace a odkazy. Název článku, autor, URL nebo číslo zákona. Model umí vyrobit odkaz, který vypadá úplně věrohodně, ale nevede nikam.
- Čísla a data. Ceny, statistiky, verze softwaru, data vydání. Tady model rád „doplní“ hodnotu, která zní rozumně.
- Technické detaily. Názvy funkcí, parametry příkazů a konfigurační volby. Kód vypadá správně, dokud ho nespustíte.
- Méně známá témata. Čím méně se o něčem na internetu píše, tím víc si model musí domýšlet.
Naopak u obecného vysvětlování principů, přepisování textu nebo hledání nápadů jsou halucinace mnohem menší problém, protože tam není jedna fakticky správná odpověď, kterou by model mohl minout.
Jak s halucinacemi pracovat v praxi
Nejužitečnější je brát výstup AI jako návrh, ne jako hotovou pravdu. U textu to znamená ověřit konkrétní fakta, u kódu ho spustit a otestovat. Pokud model pracuje jako agent, který kód sám spouští a vidí výsledky, spoustu vlastních chyb odhalí a opraví dřív, než se k nim člověk vůbec dostane.
Hodně pomáhá dát modelu zdroje, ze kterých má vycházet. Když mu vložím dokumentaci nebo konkrétní dokument a požádám ho, aby odpovídal jen z něj, je prostor pro vymýšlení mnohem menší. Na stejném principu stojí RAG a nástroje připojené přes MCP: model si informace dohledá místo toho, aby je lovil z paměti.
Funguje i obyčejná instrukce, že „nevím“ je přijatelná odpověď. Když modelu výslovně řeknu, ať raději přizná nejistotu, než aby hádal, a ať u faktů uvede, odkud je má, výstup bývá opatrnější. Není to záruka, ale posouvá to model správným směrem.
Halucinace jako vlastnost, ne chyba
Pomohlo mi přestat halucinace brát jako chybu, kterou jednou někdo opraví, a začít s nimi počítat jako s vlastností nástroje. U kalkulačky se spoléhám na to, že dělí správně. U jazykového modelu naopak vím, že občas s jistotou napíše něco, co není pravda.
S tímhle vědomím jsou AI modely pořád velmi užitečné. Jen je potřeba nechat si poslední kontrolu u věcí, na kterých záleží — a čím víc práce model dělá samostatně, tím důležitější je mít způsob, jak jeho výstup automaticky ověřit.