AI se učí z vlastních výstupů. Čeká nás spirála degradace?
Nálepky:
Zeptáte se asistenta, jak vyřešit drobný problém v kódu. Odpověď přijde za dvě vteřiny a je dobrá. Napíšete si to znovu jinými slovy a odpověď je zase dobrá — a nápadně podobná. Kolega o patro výš dostal ráno tu samou strukturu, tytéž názvy proměnných, tentýž komentář nad cyklem. Nic z toho není špatně. Jenom je toho pořád víc a je to pořád stejné.
To je ten pocit, který stojí za otázkou v titulku. Stroje se naučily psát z toho, co jsme napsali my. Teď píšou čím dál větší část toho nového. A další generace strojů se bude učit z toho, co po nás — a po nich — zbude. Je to začátek pomalého sesuvu, nebo jen strašení, které se dobře čte?
Popravdě obojí. Ten mechanismus je skutečný a dá se popsat na pár řádcích. Jenom vede jinam, než se obvykle píše.
Studna, ze které se pilo
Nejnázornější příklad má každý z nás v záložkách. Stack Overflow byl patnáct let místem, kde se sbíhalo řemeslo. Někdo se zeptal, někdo jiný napsal odpověď, tisíce dalších ji našly přes vyhledávač o rok, o tři, o sedm let později. Vznikl tak sklad hotových řešení, jaký v historii programování neměl obdobu.
Z toho skladu se učily i stroje. A naučily se dobře — dnes umějí odpovědět rychleji, vlídněji a s ohledem na to, co konkrétně máte v projektu. Takže se ptáme jich.
V březnu 2014 se na Stack Overflow objevilo přes dvě stě tisíc otázek za měsíc. Letos v červenci jich bylo něco přes tisíc. Ne o třetinu méně. O dva řády.
Ta studna se nevyčerpala proto, že by z ní někdo vypil vodu. Vyschla proto, že přestalo pršet. Odpověď, kterou tam někdo v roce 2016 psal půl hodiny, měla jasnou odměnu: pomohla konkrétnímu člověku, přinesla body, byla vidět. Dnes ji z velké části přečte program, který si ji odnese a nikomu neřekne, odkud ji má. Ochota psát ji klesla přesně podle očekávání.
A tady začíná ta zajímavá část. Protože z čeho se bude učit model, který přijde za tři roky?
Kopie kopie kopie
Klasické přirovnání je fotokopie fotokopie. Každé kolo přidá trochu šumu, po dvacátém kole máte šedý flek. Je to obrázek srozumitelný, ale pro náš případ nepřesný — stroje totiž nepřidávají šum. Ony ho ubírají. A to je horší.
Přesnější je jiná představa. Máte vesnici, kde se lidé berou jen mezi sebou. První generace je pestrá. Druhá o něco méně. Po deseti generacích mají všichni stejný nos, stejnou barvu očí a stejnou vzácnou nemoc. Nikdo přitom neudělal chybu. Prostě jen v každém kole vypadlo z nabídky to, co bylo vzácné, a co jednou vypadlo, se nemá jak vrátit.
S naučenými modely je to totéž. Když se model učí, sestaví si obrázek o tom, co je v datech běžné a co okrajové. Když pak něco píše, sahá přednostně po tom běžném — je to vlastně jeho úkol, dávat pravděpodobné odpovědi. Vzácné obraty, neobvyklé postupy a podivné okrajové případy se do jeho výstupů dostávají vzácněji, než jak často se objevují ve skutečnosti.
Nechte teď další model, ať se učí z těchto výstupů. Jeho obrázek světa bude o kousek chudší než ten předchozí. Ne špatnější v tom smyslu, že by lhal — chudší v tom smyslu, že o části světa vůbec neví, že existuje. A protože se ta část v datech neobjeví, nemá jak zjistit, že mu chybí.
Po několika takových kolech dostanete něco zvláštního: text, který je gramaticky bezvadný, sebejistý, čtivý a naprosto plochý. Model nezhloupne nápadně. Zúží se. To se odhaluje mnohem hůř, protože všechny obvyklé zkoušky projde s přehledem — ty totiž měří, jak dobře zvládá běžné případy, a běžné případy on zvládá pořád stejně.
Proč se svět zatím nezhroutil
Kdyby to bylo tak jednoduché, měli bychom to už dávno vidět. Nevidíme. Důvody jsou dva a oba stojí za pochopení, protože z nich plyne všechno ostatní.
Nikdo staré věci nezahazuje. Pokusy, které tu spirálu ukázaly nejdramatičtěji, byly postavené tak, že se v každém kole původní lidský materiál vyhodil a nahradil čerstvě vygenerovaným. To ale nikdo nedělá. Ve skutečnosti se nové věci ke starým přidávají. A jakmile ten původní lidský základ ve směsi zůstane — stačí ho i docela málo — spirála se zastaví. Kvalita se ustálí někde pod ideálem, ale nepadá dál a dál. Rozdíl mezi „nahradit“ a „přidat“ je celý ten příběh v kostce.
Někdo tomu dělá rozhodčího. Když se stroj učí z vlastních výsledků a nikdo mu neřekne, které byly dobré, může se jen utvrzovat ve svých zvycích. Ale když ten výsledek někdo prověří zvenčí, celá logika se obrací.
A právě tady má naše řemeslo výsadní postavení, o kterém se málo mluví. Kód se totiž dá vyzkoušet. Přeloží se, nebo nepřeloží. Testy projdou, nebo neprojdou. Program spadne, nebo běží. To není názor, to je fakt z reálného světa, který do té smyčky vstupuje zvenčí a lomí ji. Model si vymyslí tisíc řešení, ale jenom sto z nich projde. Když se učí z těch sta, neučí se ze sebe. Učí se ze skutečnosti, kterou si na sobě ověřil.
Proto se stroje v posledních letech zlepšily v programování a v matematice dramatičtěji než třeba v psaní esejů. Ne proto, že by kód byl lehčí. Proto, že u kódu existuje nezávislý soudce.
Stojí za to všimnout si, jak nerovnoměrně je to rozdělené. Tam, kde se dá výsledek zkusit — přeložit, spustit, změřit — je budoucnost celkem klidná. Tam, kde se to zkusit nedá, protože jediným soudcem je vkus nebo pravda o světě, tam ta smyčka zůstává zavřená a nikdo pořádně neví, co s tím. Text o historii, marketingový popisek, rada do života: nic z toho neprojde přes kompilátor.
Kde to ale drhne
Rozhodčí ale musí být skutečně nezávislý, a to je místo, kde se to v praxi láme nejčastěji.
Necháte model napsat funkci. Pak k ní necháte napsat testy ten samý model. Testy projdou, svítí zelená, jdete na oběd. Jenže model, který nepochopil zadání určitým způsobem, ho stejným způsobem nepochopil i podruhé. Testy nekontrolují správnost. Kontrolují, jestli je stroj sám se sebou v souladu — a to je jediná věc, na kterou se můžete spolehnout, že bude splněná vždycky.
Totéž platí o revizích kódu. Když jeden model zkontroluje, co napsal druhý, vypadá to jako čtyři oči. Není. Oba se učily z podobných věcí, oba mají stejné mezery a oba přehlédnou totéž. Dostanete dvě nezávislá potvrzení téhož omylu, což je horší než jedno, protože vám to dodá klid.
Nezávislost není formalita, kterou se odškrtává proces. Je to jediná věc, která tu smyčku drží otevřenou.
Web už není náš
Ještě jedna věc, která se v téhle debatě podceňuje: kontaminace nejde jen přes programy, které web procházejí a sbírají texty. Jde přes nás.
Rozsáhlé měření z loňského roku ukázalo, že skoro tři čtvrtiny nově vznikajících stránek obsahují text, na kterém se podílel stroj. Znamená to, že je web ze tří čtvrtin umělý? Neznamená. Čistě strojových stránek byla necelá tři procenta. Všechno ostatní je směs — člověk zadal, stroj napsal, člověk přepsal půlku a přidal odstavec z vlastní hlavy.
A přesně tohle je ta špatná zpráva. Kdyby vznikaly dvě oddělené hromady, jedna lidská a jedna strojová, dala by se ta strojová při dalším učení prostě odfiltrovat. Jenže žádné dvě hromady nejsou. Je jedna a je promíchaná na úrovni jednotlivých vět.
V našem oboru to platí dvojnásob. Vygenerovaný kus kódu projde revizí, sloučí se do hlavní větve a od té chvíle je k nerozeznání od všeho ostatního. Za rok se z něj někdo bude učit — kolega, který přijde do týmu, i model, který ten repozitář někdy potká. A nikdo už nezjistí, co bylo napsáno a co vygenerováno, protože v okamžiku sloučení ten rozdíl přestal být zajímavý.
Není to konspirace ani nedbalost. Je to úplně přirozený způsob, jak dnes práce vzniká. Jenom to má důsledek, o kterém se nemluví: až se někdo pokusí příště sestavit „čistá“ data, zjistí, že takové místo, kde by se dala nabrat, už na webu prakticky není.
Co se ztrácí doopravdy
Takže ne, žádný stroj příští rok nezblbne. Skutečné škody jsou plíživější a rozprostřenější.
Mizí okraje. Průměrná kvalita může být výborná, zatímco tiše vypadává všechno vzácné. Málo používaná knihovna. Starší verze nástroje, kterou má polovina firem pořád v produkci. Chybový stav, o kterém nikdo nenapsal článek. A samozřejmě jazyky, kterými mluví deset milionů lidí místo miliardy. Kdo píše česky a používá nástroje, které nemají deset tisíc hvězdiček na GitHubu, ten na tenhle problém nenaráží teoreticky. Naráží na něj v úterý odpoledne.
Mizí rozdílnost. Když padesát vývojářů řeší stejný problém, vzniklo dřív padesát řešení, z nichž devět bylo hloupých, čtyřicet slušných a jedno vynikající. Dneska vznikne padesát variant téhož a to vynikající se do nabídky nedostane, protože nebylo pravděpodobné. Průměr jde nahoru, strop jde dolů. Pro každodenní práci je to skvělý obchod. Pro obor jako celek se to počítá hůř.
Mizí ochota psát. To je podle mého ta nejvážnější věc a nemá s technologií společného skoro nic. Odpovědi na fórech, poznámky k incidentům, blogové zápisky o tom, jak jsem se dva dny mordoval s podivnou chybou — to všechno vznikalo proto, že za to člověk něco dostal. Když ta odměna zmizí, materiál přestane vznikat. A žádné chytřejší učení tenhle problém nevyřeší, protože to není chyba v algoritmu. Je to chyba v tom, jak jsou rozdělené odměny.
Nekontaminovaná ocel
Po roce 1945 nastal metalurgům zvláštní problém. Jaderné testy rozprášily do vzduchu radioaktivní prvky a každá ocel vyrobená potom byla lehce zamořená. Pro citlivé přístroje se proto sháněla ocel starší — vraky lodí potopených před válkou se rozřezávaly na díly, protože jiný zdroj čisté oceli nebyl.
Texty a kód zachycené do konce roku 2022 mají dnes podobnou vlastnost. Je jisté, že je psal člověk. Je jich konečné množství a víc jich už nebude. Je to zvláštní pomyšlení, ale ta hromada dat stárne úplně jinak než software: čím je starší, tím je cennější.
Co s tím prakticky
Z toho všeho plyne pár věcí, které dávají smysl i pro tým, který sám žádné modely neučí.
Nezahazujte lidské věci. Platí to o dokumentaci, o interních návodech, o zápisech ze schůzek. Nechat si stroj přepsat starý text a originál smazat je přesně ten pohyb, který spirálu roztáčí. Přepis si nechte, originál taky.
Poznamenejte si původ. Vědět, co napsal člověk a co stroj, bude za pár let cennější než dnes. Zpětně se to zjistit nedá — čím dál víc textů je totiž smíšených, člověk začne, stroj dopíše, člověk upraví. Rozpoznávací nástroje na tohle nestačí a stačit nebudou.
Nedovolte, aby si stroj psal vlastní vysvědčení. Testy od někoho jiného než od autora, i když je ten autor stroj. Kontrola proti skutečnému chování programu, ne proti tomu, co model tvrdí, že program dělá.
Nesledujte jenom průměr. Když měříte, jak vám asistent pomáhá, dívejte se i na to, jestli nenavrhuje pořád totéž. Zúžení se v průměrných číslech neprojeví. Projeví se v tom, že vám tři různí lidé přinesou k revizi tři stejná řešení.
Pište pořád. Zní to jako mravní ponaučení a trochu to tak i myslím. Ale je v tom i chladný výpočet: znalost, kterou nikdo nezapsal, do žádného modelu nikdy nevstoupí. Interní wiki, poznámky k incidentu, pořádný popis pull requestu — to je materiál, který z veřejného webu mizí a který nikdo jiný za vás nevyrobí.
Takže?
Spirála degradace není přírodní zákon. Je to důsledek jednoho konkrétního uspořádání — takového, kde se staré vyhodí, nové se nikde neověřuje a smyčka se uzavře. Rozbijte kteroukoli z těch tří podmínek a matematika přestane strašit.
Otázka na příští roky proto nezní, jestli se stroje otráví samy sebou. Zní jinak a je mnohem nepříjemnější: kdo bude psát nové věci ve světě, kde se poděkování za ně přesunulo ke stroji, který je posbírá?
Zkuste si tu otázku položit sami nad svým vlastním repozitářem. Kolik z toho, co v něm za poslední rok přibylo, by dokázal někdo zopakovat, kdyby všechny asistenty vypnuli? A kolik z toho, co jste se za ten rok naučili, jste někam zapsali tak, aby se to za pět let dalo najít?
Odpovědi na to nemá zatím nikdo. Ani ten stroj.
… reposted this!