Technologie | Umělá inteligence | ChatGPT

Chcete rozbít ChatGPT? Stačí zadat jediné slovo. Matematici kroutí hlavou, jak je to možné

  • ChatGPT je dobrý pomocník, ale nemáme páru, jak vlastně přemýšlí
  • Dvojice matematiků přišla na desítky slov, které jej vykolejí
  • Dnes se naučíme myslet v tokenštině

Komunita okolo ChatGPT se baví objevováním dalších a dalších chyb, které nebohého AI robota totálně vykolejí a promění ho ve žvatlala po těžké mrtvici. Nikdo přesně neví, proč se to děje, dvojice matematiků ale nabídla řešení.

ChatGPT můžete dostat do úzkých různými způsoby. Na některé mysleli přímo jeho tvůrci z OpenAI a do kódu natvrdo vsadili hromadu spouští, které zobrazí varování, pokud zkusíte nějakou nepěknost.

Třeba když se budete ptát, jak spáchat sebevraždu, jak vyrobit program, který někomu ukradne heslo k Facebooku, anebo když bez bližšího kontextu vložíte do textového pole číselnou řadu 1 2 3 4 5 6 7 8 9.

b149ae0a-af13-4d5f-9e6f-5da63b5f3f22
Příklad spouště, která vyvolá boxík s varováním

Robot v ní nejspíše uvidí jedno z nejpoužívanějších hesel (dle zveřejněných úniků) a zobrazí se boxík upozorňující na možné porušení podmínek služby.

ChatGPT = AI.com

Organizace OpenAI, která ChatGPT provozuje, koupila luxusní doménu AI.com. Když ji zadáte do prohlížeče, přesměruje se právě na ChatGPT.

Matematici našli desítky slovíček, které zlobí

Tyto naprogramované spouště (když narazíte na nějaké nečekané, dejte vědět v komentářích) jsou ale jen slabý odvar proti tomu, co objevila dvojice expertů z projektu SERI-MATS.

41896af2-447f-49f8-a56c-f748780dbe4c
Výběr některých ze slovíček, které budou pravděpodobně zlobit. Pro náš článek použijeme výraz „TheNitromeFan“

Jessica Rumbelow s doktorátem z AI a matematik Matthew Watkins totiž při analýze ChatGPT narazili na několik desítek podivných slov, které uvedou robota do naprosté schizofrenie. Seznam výrazů se neustále rozšiřuje a s dalšími přicházejí čtenáři jejich blogového zápisku na webu AI Alignment Forum.

Napište TheNitromeFan a AI odpoví 182

Když se ChatGPT zeptáme, kdo je to @pesvklobouku, automat sesumíruje generickou odpověď, že bez dalšího kontextu není možné určit, o koho jde. To je v pořádku.

2f319b34-7af3-4426-99a6-f72e3ec61f28
ChatGPT chápe, že ptám na sled znaků @pesvklobouku, byť nezná odpověď

Nicméně pokud v dotazu použijeme některé z problematických slovíček, třeba TheNitromeFan, začnou se dít věci: 

0ca4e50f-fce0-41d6-973c-2b2653e448b2
ChatGPT opět sesumíruje generickou odpověď, ale zakázané slovo nahradí číslem 182
172c6388-059e-421b-bd7c-41ff72cb2dfa
Slovo TheNitromeFan ChatGPT vidí jako číslo 182 i v jakémkoliv jiném kontextu

Robot opět sesumíruje totožnou generickou odpověď, výraz TheNitromeFan nicméně nahradí hodnotou 182. Ten sled 13 znaků prostě nedokáže z nějakého zvláštního důvodu ani zobrazit.

Jak je to možné? Dopředu se přiznávám, že se dnes spolehlivou odpověď nedozvíte, nezná ji totiž ani Jessica a Matthew a pouze hádají. Pokud to někdo ví, jsou to pouze inženýři z OpenAI. Nicméně to alespoň společně zkusíme.

Nejprve si ale musíme vysvětlit, co to jsou tokeny.

Tokenština pro samouky

Cože, jaké tokeny? Co to zase je? Inu, token je nejnižší informační jednotka textových umělých inteligencí (nejen) od OpenAI. Na tokenech je založená i celá monetizace a kvóty aplikačního rozhraní pro vývojáře, protože je můžeme počítat.

Každý token má svůj jedinečný numerický identifikátor, se kterým pak pracují i samotné neuronové sítě, a má v průměru délku 4 znaků. Velikost tokenu se ale může lišit jazyk od jazyku, protože každý z nich má odlišnou morfologii – tvarosloví.

680360e7-c56b-48f7-96c2-3d190566256f
Barevné tokeny jsou nejnižší informační jednotkou AI

Sled tokenů je tedy jakási jednotná vnitřní abeceda všech textových generátorů GPT a inženýři tuto abecedu vytvořili v první fázi, kdy vyslali indexovacího robota na internet. Robot pak frekvenční analýzou přidělil různým sledům znaků různá čísla.

3a66c09f-b8ac-4598-bbc6-54d2e23b6ba7
„Ahoj, ty jsi ale zelenej brambor“ v abecedě GPT-3

Výsledkem je tokenizér, který řeže souvislý textový vstup právě na sled čísel a vy si jej můžete vyzkoušet v interaktivní webové aplikaci pro architektury GPT-3 (aplikace ChatGPT) a Codex (aplikace GitHub Copilot a další).

Pojďme si to vyzkoušet:

  • Výraz „A“ je token s identifikátorem 32
  • Výraz „ “ je token s identifikátorem 220
  • Výraz „ A“ je ale také jeden token s identifikátorem 317
  • Teprve výraz „  A“ tvoří dva tokeny a my už víme jaké: 220 a 317

Když na tokeny rozřežeme „Ahoj“, zjistíme že se skládá ze tří tokenů:

  • „A“ (32)
  • „ho“ (8873)
  • „j“ (73)
cc6d11fb-2132-4298-86b6-4c38a3ac83dd
Ahoj v tokenštině

Když ale na tokeny rozřežeme anglickou variantu „Ahoy“, zjistíme, že se skládá jen ze dvou tokenů:

  • „Ah“ (10910)
  • „oy“ (726)
1d5aa44c-a138-46da-b526-31ced07de916
Ahoy v tokenštině

Samostatný token pak představují výrazy, které mají nějakou rozpoznanou statistickou významnost. Třeba některá jména a názvy:

  • „Apple“ (16108)
  • „James“ (14731)
  • „Washington“ (17402)
  • „ Prague“ (37079)

U té Prahy to není překlep, tvoří jeden unikátní token výhradně s úvodním znakem mezery!

a9315774-e644-41e7-b71f-20f3fa5571da682b6af8-6fd0-4203-9db2-0d70a3eb4e3e
„TheNitromeFan“ vs „ TheNitromeFan“ v tokenštině

S úvodní mezerou má nakonec GPT-3 jedinečný token i pro našeho TheNitromeFana

  • „ TheNitromeFan“ (42090)
  • Ale: „ThenitromeFan“ (464, 42066, 22480)

TheNitromeFan je přezdívka z Redditu

Fajn, takže chápeme abecedu umělých inteligencí, ale teď už si pojďme konečně vysvětlit jedno z možných řešení, proč ChatGPT na některé tokeny reaguje tak zvláštně.

bf8f8ed3-83f7-411c-a33c-bf6c48575fbd
TheNitromeFan je týpek z Redditu 

TheNitromeFan není náhodný sled znaků. Je to jedna z mnoha přezdívek na Redditu, no a jak všichni dobře víme, Reddit je sám o sobě asi tak normální, jako jsou normální japonské zábavní pořady. Stručně řečeno, jestli chcete nějakou textovou neuronkou zcela vykolejit, dejte ji povel, aby se učila právě tam.

Třeba v tomto vlákně Redditťané jeden po druhém inkrementují číselnou řadu. Jeden napíše 4 946 003, no a druhý mu odpoví 4 946 004. Je dost možné, že kdyby na něco takového narazil indexovací robot, který učí nějakou neuronovou síť, raději se v zoufalství nad tím neštěstím rovnou celý smaže.

7a2c3de7-fae9-46dc-904d-4528ab48fbe1
Kdyby tak Tim Berners-Lee tušil, jaké monstrum vypustí do světa

Máma mele mouku

Podle Jessiky a Matthewa by tedy mohlo být jedním z vysvětlení to, že vzorek internetu, na kterém OpenAI tvořila svoji tokenovou abecedu, byl jednoduše širší než ten, na kterém se později učila neuronka GPT-3.

Abychom si to převedli do srozumitelnější řeči, Český národní korpus eviduje v databázi syn2020 2 464 výskytů slovíčka prdel včetně ohnutých forem. Je to tedy výraz s určitou jazykovou relevancí, nicméně je asi dobré, aby nebyl součástí dětských čítanek.

c910cdfe-4667-4527-a19e-41e947cbd156
Prdel v korpusu

Dejme tomu, že je prdel jedním z našich nejoblíbenějších tokenů v češtině, ale dítěti – učící se umělé inteligenci – dáme k dispozici jen Moji první čítanku od Jiřího Žáčka. Nebohé dítě se tedy sice naučí, že se poblíž tokenu máma velmi často objevují také tokeny mele a mouku a ve své neuronové síti tokenových vztahů je umístí také blízko sebe (vzájemná silná vazba), ale co když pak večer pod peřinou narazí na tento článek, ve kterém se objeví token prdel hned čtyřikrát?

Už ho samozřejmě zaslechlo při hádce rodičů (má ho ve slovníku), ale ještě mu bude pár let trvat, než pochopí jeho lingvistickou krásu.

Jako když dítě uslyší pr***, ale neví, co to je

Čili, aby měla textová AI řady GPT patřičnou kvalitu, možná se učila také na podobných čítankách pro děti. Tedy na internetových zdrojích s určitou mírou syntaktické a sémantické kvality. Stručně řečeno, možná inženýři z OpenAI vynechali bizarní Reddit.

117f9d5b-84af-4cdc-96c9-c6814b41184d
Dítě poslouchající hádku rodičů v představách Midjourney – další populární AI

Možná právě proto ChatGPT na TheNitromeFana reaguje trošku jinak než na Brno. Brno sice není jedinečným tokenem (není divu), je ale nesporně jedinečným sledem jedinečných tokenů Br (9414) a no (3919). A protože si GPT-3 při učení přečetla hromadu textů o Brně, frekvenční analýzou si vytvořila vazbu mezi sledem tokenů 9414, 3919 a sledem tokenů 47, 430 a 3099.

Byla to vazba velmi silná – dalo by se říci až osudová –, protože tokeny 47, 430 a 3099 patří znakovým množinám P, ra a ha.

Možná je TheNitromeFan jen další „šroubovák“

Takže když se ChatGPT zeptáme, Kdo je to TheNitromeFan, do umělé inteligence putuje sled 5 tokenů 42, 4598, 11223, 284 a 42090 a neuronová síť hledá jejich vztahy s ostatními tokeny, které si statisticky vytvořila při učení.

c3732d96-fc35-4087-8ee9-f2277261dd9d
TheNitromeFan není jediný, toho nešťastníka zase ChatGPT překládá na asn123 

Program GPT-3 sice token TheNitromeFan zná (má ho v abecedě), ale možná se učil na textech, ve kterých se tento token pro zvýšení kvality už nevyskytoval (nebo sporadicky, ve velmi neurčitém kontextu – třeba zde – aj.), takže jej neumí umístit do správného sémantického vztahu mezi tokeny.

A možná právě proto si ChatGPT myslí, že je TheNitromeFan číslo 182. Proč zrovna číslo 182? To nevíme. Třeba protože chyběl jakýkoliv dostatečně pravděpodobný vztah, a tak GPT použil nějaký zbývající a velmi slabý, který jej dovedl až k číslu 182.

c78c7eef-170e-4812-99e1-6dfdeb17c74a
Dobrá zpráva na konec. Chatbot v novém Bingu je už imunní, určitě bychom mu tedy neměli říkat ChatGPT. Je to už jiná technologie, ale stále na základech OpenAI

Stejně jako když neuronce předložíte fotografii geneticky upraveného koťátka, které bude vypadat příliš cize, a tak detekční AI nenajde žádnou odpověď s dostatečně vysokou pravděpodobností a nabídne jen 0,05% pravděpodobnost, že je na fotografii šroubovák.

Možná je číslo 182 prostě jen takový další šroubovák.

Diskuze (69) Další článek: Kdo vyráběl nejstarší kamenné nástroje? Člověk to asi nebyl

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,