Halucinácie sú nedorozumenie
To, čo sa bežne označuje ako "halucinácie" v generatívnych modeloch strojového učenia, najmä v jazykových modeloch, je v skutočnosti nepochopenie toho, ako tieto modely fungujú. Keď model halucinuje, snaží sa vám povedať, že "tu má niečo byť, ale nie som si celkom istý čo, tak sem dajme príklad, ktorý ilustruje, čo mám na mysli." Model neklame, ani nie je pokazený. Len brainstormuje nápady.
Generátory obrázkov nemaľujú pomocou štetca, ale obrázok si priamo predstavujú. Nemôžu sa zastaviť a uvažovať o ďalšom ťahu. Proces je okamžitý a nefiltrovaný. Oveľa viac pripomína ľudskú predstavivosť než akt maľovania. Je to ako mať okno do niečej mysle. Pri jazykových modeloch je to menej nápadné, ale platí to aj tu. Jazykové modely nerozprávajú, ale myslia. Mnohí ľudia vám povedia, že jazykové modely nemyslia, ale myslenie je v skutočnosti to jediné, čo robia. Namiesto toho nemôžu hovoriť, pretože by si to vyžadovalo schopnosť mlčať a skrývať myšlienky, kdežto výstup jazykových modelov je mimovoľný a nefiltrovaný ako nekonečný lucidný sen. Myslenie je lepšia metafora pre to, čo robia jazykové modely. Teraz sa vás opýtam, koľké z vašich myšlienok sú realistické, relevantné a správne?
Navyše, jazykové modely môžu myslieť len jedenkrát. Chýba im proces iteratívneho vylepšovania, ktorý si vyžaduje množstvo po sebe nasledujúcich myšlienok. Ako často je vaša prvá myšlienka správna?
Na veľmi vysokej úrovni abstrakcie pozostáva práca s informáciami zo zhromažďovania overených faktov a následného použitia týchto faktov na formulovanie nových hypotéz. Každý výstup jazykového modelu je takouto hypotézou syntetizovanou z dostupných informácií. Týmto sa jazykové modely líšia od vyhľadávačov, ktoré iba vymenúvajú existujúce poznatky súvisiace s dotazom. Existujú pokusy umožniť jazykovým modelom prezentovať spoľahlivé citácie, ale tým sa len vkladá vyhľadávač do jazykového modelu bez toho, aby sa riešil hlavný problém: nezáleží na tom, ako dobre podložíte svoju hypotézu argumentami, budete ju aj tak musieť otestovať, ak z nej chcete spraviť nový overený fakt. Všetky hypotézy sú vo svojej podstate nespoľahlivé, vrátane tých, ktoré sú výstupom jazykových modelov.
Jazykové modely sú brainstormingové nástroje. Produkujú sľubné nápady, ktoré potrebujú viac iterácií, aby dozreli. Samozrejme, ak položíte jednoduchú otázku, môžete dostať správnu odpoveď hneď, ale čokoľvek ťažké bude potrebovať vylepšovanie. Nič vám nebráni použiť jazykový model samotný na hodnotenie a vylepšovanie nápadov, ale musíte mať na pamäti, že ide o viackrokový proces. Nikdy nemôžete očakávať, že na prvý pokus dostanete 100% správnu odpoveď na ťažké otázky.
Iterovanie je vlastne spôsob, akým sa seriózne biznis aplikácie jazykových modelov vyrovnávajú s halucináciami. Ten istý model je požiadaný, aby sa na úlohu pozrel z viacerých uhlov, zozbieral informácie, vyhodnotil a zlepšil riešenie a nakoniec overil výsledok pomocou množstva kontrol. Dokončenie jednej úlohy môže vyžadovať desiatky spustení jazykového modelu nasledujúc zložitý procesný model. Cieľom procesného modelu je implementovať robustný systém umelej inteligencie nad nespoľahlivým jazykovým modelom tak, aby systém umelej inteligencie mohol byť ponechaný v prevádzke bez dozoru.
Takýto viackrokový proces by sa dal možno implementovať aj v interaktívnych chatbotoch, ale bol by veľmi nákladný a bolo by náročné zabezpečiť, aby reagoval dostatočne rýchlo pre interaktívne použitie. Je tiež ťažké navrhnúť procesný model, ktorý by bol vhodný pre každý spôsob, akým ľudia používajú chatboty. Je oveľa jednoduchšie sprístupniť holý jazykový model a nechať používateľa iterovať v chate.
Namiesto toho, aby sme od chatbotov očakávali dokonalé výstupy, čo v praxi škodí kreatívnym aplikáciám chatbotov, bolo by lepšie informovať používateľa, ktoré časti výstupu sú nespoľahlivé. Jazykové modely (a pravdepodobne všetky generatívne modely) majú vnútorný zmysel pre spoľahlivosť svojho výstupu. Okrem vnútorných stavov sa sebaistota prejavuje aj ako úzka výstupná distribúcia (rozdelenie pravdepodobnosti), zatiaľ čo neistota má za následok širokú výstupnú distribúciu. Akokoľvek je tento signál sebaistoty vnútorne reprezentovaný, v súčasnosti nie je nijakým spôsobom vyvedený na úroveň používateľského rozhrania.
Model je pravdepodobne možné naučiť vyjadrovať sa opatrne, keď si nie je istý, ale viedlo by to k nepraktickému, rozvláčnemu výstupu plnému defenzívnych fráz. Mne príde atraktívnejšie zvýrazniť pasáže, v ktorých si model nie je istý. Nie je to však také jednoduché implementovať, pretože sebaistota na úrovni tokenov zvyčajne klesá len na niekoľkých prvých tokenoch halucinácií. Potrebovali by ste mechanizmus na propagovanie signálu sebaistoty na nadväzujúce tokeny. Ďalším problémom je, že voľba medzi dvoma synonymami nie je taká dôležitá ako voľba medzi áno a nie.
Dúfam, že som vniesol trochu svetla do problematiky halucinácií. Namiesto toho, aby halucinácie boli chybou, ktorá hľadá riešenie, je lepšie ich chápať ako prirodzenú vlastnosť generatívnych modelov, ktoré musia prísť s rozumnou hypotézou potom, čo sa nad vecou raz zamyslia. Takýto proces nemôže byť nikdy spoľahlivý. Namiesto hľadania mýtického modelu bez halucinácií sa radšej naučte žiť s halucináciami. V interaktívnom chate berte rozhovor ako neformálny brainstorming a iterujte cez navrhované nápady. Ak je cieľom automatizácia, implementujte robustný procesný model, ktorý bude jazykový model povzbudzovať ku kritickému hodnoteniu a zlepšovaniu navrhovaných výstupov. Dúfam, že v budúcnosti budeme mať aj používateľské rozhrania, ktoré upozornia na nespoľahlivé časti výstupu.