Výzkumníci z MIT vyzkoušeli něco, co ještě nedávno vypadalo jako nesmysl. Jazykovému modelu GPT-6 Astra dali surová čísla, ze kterých se skládá jiná neuronová síť, a ptali se ho, co tato síť umí. Model to ve většině případů poznal a zvládl i víc. Opravil síť, která selhávala, napsal od nuly sítě na hraní počítačových her a malému jazykovému modelu pomohl v matematice natolik, že jeho úspěšnost v testu vyskočila z necelých osmi na 48 procent.
Proč se dívat do čísel, kterým nikdo nerozumí
Každá neuronová síť je ve skutečnosti obrovská sada čísel, kterým se říká váhy. Právě ony rozhodují, jak zareaguje na to, co dostane na vstupu. U malých sítí jde o desítky tisíc čísel, u jazykových modelů o miliardy. Nikdo je nepíše ručně, protože vznikají tréninkem, při kterém je algoritmus postupně dolaďuje na obrovském množství příkladů. Člověk se do nich podívat může, ale nic z nich nevyčte. Kdyby někdo dostal za úkol sestavit síť, která hraje go, nevěděl by, kde začít.
Jazykové modely se za poslední roky naučily vylepšovat texty, zadání i celé programy. U vah to ale nikdo pořádně nezkoušel. Panovala představa, že co nezvládne člověk, nedokáže ani model, který se učil hlavně z lidských textů. Tým z MIT chtěl zjistit, jestli to opravdu platí. Astra přitom nesměla psát vlastní trénovací programy. Musela přijít na to, co která část sítě počítá nebo má počítat, a podle toho čísla přímo měnit. Autoři tomuto postupu říkají programování v prostoru vah.
Hádanky z hromady čísel
Natrénovali čtyři stejně velké sítě na čtyři různé hry, mimo jiné na Pong, Pac-Mana nebo Breakout. Všechny měly stejné vstupy, stejné ovládání i stejný počet vah, kterých bylo přes 17 tisíc. Astra dostala čísla jako text a otázku, na jakou hru se síť trénovala. Seznam možností jí vědci neprozradili, přesto u všech čtyř případů trefila správný titul. Prozradilo to rozložení vah, například u Breakoutu se váhy spojené s hráčovou figurkou soustředily ve spodní řadě, kde se pohybuje plošina.
Ve druhém pokusu šlo o sítě, které generují obrázky kruhu, čtverce a trojúhelníku. Astra nesměla síť spustit, a přesto poznala, jaký tvar každá z nich kreslí. Udělala sice jednu chybu, když tvary popsala jen jako obrysy, přestože sítě vytvářely plné obrazce, ale podle autorů právě to ukazuje, že model nepočítal výsledek, nýbrž opravdu četl stavbu vah.
Třetí test byl těžší. Tři malé jazykové modely se učily na kódu v Pythonu, na japonštině přepsané latinkou a na angličtině. Vědci jim odebrali první a poslední vrstvu, takže v číslech nezůstala žádná stopa po tom, které písmeno je které. Astra přesto u všech tří určila správný jazyk. Našla i takzvané kopírovací části sítě, které umí zopakovat text viděný o kus dřív. Programový kód opakuje názvy proměnných mnohem častěji než běžná řeč, a tak velký počet těchto částí ukázal právě na Python.
Opravy a sítě psané od nuly
Pak přišla na řadu úprava vah. Vědci natrénovali síť, která řídí autíčko před rampou. Aby rampu zdolalo, musí nejdřív kus couvnout a nabrat rozjezd. Síť se to ale nikdy nenaučila a vždycky na rampě uvízla. Astra dostala váhy, popis scény a jeden záznam neúspěšné jízdy. Na jediný pokus a bez jakýchkoli nástrojů upravila 3,5 procenta vah, načež auto uspělo ve všech 1 024 jízdách.
Ještě náročnější bylo psaní sítí úplně od nuly. U tří jednoduchých her dostala Astra pravidla a zdrojový kód, ale žádná data ani možnost si síť vyzkoušet. Váhy napsala rovnou jako text. Ve všech třech hrách porazila sítě trénované sto milionů kroků. V Breakoutu získala přes 500 bodů, zatímco síť trénovaná pětkrát déle jen kolem 25. Postupovala jako programátor, protože v první vrstvě spočítala, kam míček dopadne, a druhá vrstva tam poslala pálku.
Pak vědci zkusili go a síť s půldruhým milionem vah, která se už do paměti modelu nevešla. Astra proto pracovala v prostředí, kde mohla váhy upravovat pomocí Pythonu. Bez jediné zkušební hry porazila ve více než polovině partií dvě menší natrénované sítě. Když mohla síť padesátkrát vyzkoušet, překonala stejně velkou síť, která se učila na 20 milionech her.
Lichotník a smyčky v matematice
Nejvíc vědce zajímalo, jak si Astra poradí se skutečnými jazykovými modely. Vytvořili dvojice malých modelů Gemma, přičemž jeden v každé dvojici odpovídal správně a druhý vždy přikyvoval tomu, co navrhl uživatel. Z vah samotných Astra lichotníka nepoznala. Ve všech čtyřech pokusech našla spoustu rozdílů, ale nedokázala je spojit s chováním. Když ale směla sledovat, na které slovo se modely při čtení soustředí, odhalila lichotníka ve všech třech dvojicích. Jeho vnitřní části se upínaly k odpovědi navržené uživatelem místo k číslům v zadání.
Poslední pokus mířil na model Qwen s 0,8 miliardy vah a úkol zněl jednoduše, konkrétně zlepšit ho v matematice bez tréninku. Astra si všimla, že model se zasekává v myšlenkových smyčkách, opakuje pořád dokola stejný text a k odpovědi se nedostane. Na tento problém upozorňují i sami tvůrci modelu. Astra vystopovala, že smyčky způsobuje jeden konkrétní signál ve dvou vrstvách, a odstranila ho. Změnila jen 0,016 procenta vah. Úspěšnost v matematickém testu MATH-500 stoupla z necelých osmi na 48 procent, v testu slovních úloh GSM8K ze 14 na 67 procent. Smyčky přitom škodily i jinde, takže se model zhruba třikrát zlepšil také v plnění pokynů.
Stejný postup ale nefungoval u menšího modelu Gemma, který se v žádných smyčkách netočí. Jeho chyby byly obyčejné, špatně sčítal nebo dělal nesprávné kroky v rovnicích. Astra nenašla žádnou součástku, kterou by šlo vypnout, a výsledky se nepohnuly o víc než o bod. Úprava vah tak dokázala odstranit překážku, která schopnost modelu zakrývala, ale novou dovednost do něj nepřidala.
Zdroj: rikiyat.github.io



