Na počátku bylo slovo. V listopadu 2022 široká veřejnost poprvé vyzkoušela jazykový model ChatGPT a ten svou schopností chápat a formulovat komplexní texty všem vyrazil dech a definitivně odšpuntoval masové nadšení z AI. Od té doby jazykové modely přibývají, exponenciálně se zlepšují a nabalují obrovskou revoluci s rozsáhlými sociálně-ekonomickými dopady, které jako společnost budeme teprve poznávat. (více o nástrahách, bezpečnosti a rizicích se dočtete v kapitole První AI projekty ve firmě)
Generování textu každopádně představuje bezbřehou oblast příležitostí a komerčního využití, ale také potenciálních rizik, otázek a nejistoty – tento článek tedy bude bohatější nejen na tipy, ale bude i popisnější co do aspektů a fungování velkých jazykových modelů (Large Language Models, LLM).
V první řadě je potřeba si uvědomit, že jazykové modely fungují na principu statistické pravděpodobnosti – tedy doplňují nejvhodnější řetězce znaků za sebe, aniž by rozuměly podstatě toho, na co se ptáte. Vlastně jen nabízí jako odpověď slova, která se nejčastěji vztahují k vašemu dotazu. Jde o auto regresní modely, které samy na sebe neustále navazují a provozem se v tom rekurentně zlepšují. Nepřemýšlí, neplánují.
Modely na vstupu pracují s určitými stavebními bloky – tzv tokeny. Jeden token představuje cca 3-4 písmenka v angličtině a 1-2 písmenka v češtině (účtuje se za token a čeština je tedy pro své speciální znaky dražší, stojí více tokenů). Pokud by vás převod na tokeny v různých jazycích zajímal, vložte český text do tokenizeru, pak ho přeložte a výsledky srovnejte.
Model se nad tokeny učí ve třech krocích. V prvním (nejdražším) kroku se základní model (Foundation Model) předtrénuje na obrovském množství textů, aby se naučil rozumět principům a nuancím, jak jazyk funguje. Z těchto vstupních textů si povytahuje stovky a tisíce vlastností. Tomuto procesu říkáme embedding (chcete-li „vektorizace“, kdy každý vektor představuje pole čísel reprezentujících vlastnosti vstupních dat) Například „král“ a „královna“ budou mít k sobě vektorově blíž než „král“ a „pomeranč“, které k sobě mají sémanticky dál. Model na pokročilých následujících úrovních jednak vypočítá významové pořadí slov ve větě (absolutní i relativní) a jednak posuzuje kontext (na našem příkladu by „jablko“ pochopil jako korunovační klenot a ne jako ovoce), čímž upraví významy vstupního embeddingu na základě toho, co zjistí o ostatních slovech. Na embedding vektory se dají mimochodem aplikovat i matematické operace, například vektorová reprezentace „král“-„muž“+“žena“ vám dá „královna“. Celé toto napočítávání se odehrává v tzv transformeru, který si proces nkrát opakuje a upravuje (u malých modelů 12x-24x), až mu na konci vypadnou pravděpodobnosti výskytu navazujícího slova/tokenu. My můžeme konečný výstup transformeru ovlivnit uživatelským nastavením tzv temperature: při hodnotě 1 použije model přesně to, co mu vyšlo z pravděpodobnostního nápočtu, nastavení hodnoty <1 způsobí „zvětšení kontrastu“ a vyhrávající tokeny budou ještě pravděpodobnější (u hodnoty 0 bude model vybírat jen jeden nejpravděpodobnější token) a u nastavení >1 se budou rozdíly v pravděpodobnostech zahlazovat a model bude vybírat i méně pravděpodobné tokeny (bude „kreativnější“…ale už u čísel kolem 1.5 začne psát úplné nesmysly). Podstatné je, že v tomto kroku si transformer na obrovském množství dat těch vztahů a souvislostí vytvoří šílené množství, nejde tedy o nějakou jednoduchou doplňovací statistiku.
Ve druhém kroku se model ladí čistými daty (Supervised Fine-Tuning, SFT). Vychází z vah základního modelu, ale super kvalitními, čistými daty získává „morální zábrany“ (např neodpovídá na závadné věci). Je trénován na příkladech konverzací, aby dokázal odpovídat na otázky, reagovat, komunikovat (např na pozdrav „Ahoj“ odpoví „Ahoj“) a dále je školen na následování instrukcí, aby se dal popsáním požadovaného výstupu model přizpůsobit (např odpovídej mi pouze v češtině, zkrať tento text, odpověz tabulkou apod.).
A nakonec se učí lidskou zpětnou vazbou (Reinforcement Learning), kdy výstupy modelu hodnotíme my, uživatelé, palcem nahoru anebo dolu a model tím dostává incentivu, odměnu (např ho odnaučíme odpovídat „To ví přece každé malé dítě, že…“)
Nejvýznamnější modely
Většina hráčů na poli jazykových modelů jsou zavedené technologické společnosti, které LLM postupně integrují do svých produktových ekosystémů a Enterprise licencí. Dává to smysl – vývoj a trénování AI představuje obří investice, které si mohou dovolit jen skuteční giganti, kteří nás pak zavedou do budoucnosti, kde nám bude AI asistovat nad našimi daty formou copilotů, anebo bez našeho vědomí, nativně, k našim potřebám.
- ChatGPT (OpenAI…a Microsoft)
- Gemini (Google) – poslední verze 1.5 nabízí rekordně dlouhé kontextové okno až 1 milion tokenů (!) Kontextové ono je velikost obsahu na vstupu, který jazykový model dokáže zpracovat v rámci jednoho promptu. Čím větší, tím dostane model komplexnější pochopení a úsudek.
- Llama (Meta) – asi nejlepší dostupný opensource
- Claude (Anthropic)
- Mistral (evropská společnost Mistral AI) – s výsledky lehce pod největšími hráči, ale je strašně důležité, aby Evropě neujel AI vlak, držím palce!
Prompt Engineering
O základech prompt inženýringu jsme si už něco řekli v kapitole Jak se s AI skamarádit. Prompt engineering je samostatná disciplína a návodů jak na správný prompt existuje spousta. Z osvědčených zdrojů stojí za nastudování přímo ten od OpenAI anebo manuál od Microsoftu. Pojďme volně navázat a vyzkoušet následující promptovací experiment:
Nechte LLM vygenerovat text vysvětlující jak funguje počítač, ale na různých úrovních odbornosti, stylech a délce, např:
- Vysvětlit jako malému dítěti vs. běžnému člověku vs. vysokoškolskému profesoru fyziky.
- Vysvětlit Italovi s využitím analogie k něčemu typicky italskému.
- Napsat báseň vysvětlující co je počítač.
- Napsat to jako rozhovor dvou lidí.
- Pojmout jako senzační novinový článek jako by to byla novinka.
- Napsat to jako hádanku tak, že to nebude hned jasné.
Generativní jazykové modely dokážou zázraky – jestli vás základy prompt engineeringu zaujaly, v další kapitole půjdeme ještě dál a vysvětlíme si techniky promptování na generování chatbotů a implementaci LLM na vlastních datech.