Generativní modely Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Generování obrazu Generování textu Asistenční modely typu ChatGPT Metodologie tvorby otázek PA026 – Projekt z umělé inteligence Úvod do umělé inteligence 12/12 1 / 35 Generování obrazu Generování obrazu Generative Adversarial Network (GAN) generující soupeřící síť 2 části – generátor a diskriminátor trénované současně bez dohledu generátor – vytváří simulované vstupy podle zadání, snaží se zmást diskriminátor diskriminátor – učí se rozpoznávat skutečné vstupy od podvržených (Missinato, 2020) Úvod do umělé inteligence 12/12 2 / 35 Generování obrazu Difuzní modely Difuzní modely trénování na sadě obrázků postupné přidávání šumu do obrázku generování – obrácení postupu, odšumování (denoising) současné generátory Dall-E 3, Midjourney, Stable Diffusion jsou založené na difuzních modelech (Vahdat and Kreis, 2022) Úvod do umělé inteligence 12/12 3 / 35 Generování obrazu Difuzní modely porovnání GAN a difuzních modelů oba přístupy umí generovat velice kvalitní obrazové výstupy GAN jsou méně výpočetně náročné difuzní modely jsou stabilnější v generování a generují realističtější detaily Úvod do umělé inteligence 12/12 4 / 35 Generování obrazu Aplikace generování obrazu Aplikace generování obrazu Aplikace GAN a difuzních modelů: obraz: • StyleGAN – od Nvidia, generované snímky lidí podle atributů (držení těla, brýle, pohlaví, vlasy, ...) • superrezoluce – generovaný obraz ve větším rozlišení • Brain2Pix – generování obrazu toho, co vidí mozek, podle mozkové aktivity • Ganilla – generování uměleckého obrazu podle fotky • DeepFake – přenesení vlastností z jednoho obrazu/videa do druhého text: • DALL-E (OpenAI) – vytváří obrázky podle textového zadání • SentiGAN – generuje text se zadaným sentimentem zvuk: • CereVoice Me – vytvoří hlas podle nahrávek • DeepComposer – vytváří orchestrální skladbu podle jednoduché melodie Úvod do umělé inteligence 12/12 5 / 35 Generování textu Jazykové modely Obsah 1 Generování obrazu Difuzní modely Aplikace generování obrazu 2 Generování textu Jazykové modely 3 Asistenční modely typu ChatGPT Předtrénování Vyladění (fine-tuning) Modelování odměn Zpětnovazební učení 4 Metodologie tvorby otázek Prompt Engineering Myšlenkový postup Informace z vyhledávání 5 PA026 – Projekt z umělé inteligence Úvod do umělé inteligence 12/12 6 / 35 Generování textu Jazykové modely Jazykové modely Jazykový model Okna jsou skleněné výplně stavebních    otvorů 0.08 materiálů 0.05 ploch 0.05 ... sutin 0.01 spoření 0.01 ... arg max wi P(wi |w1w2 . . . wi−1) SliDo Úvod do umělé inteligence 12/12 7 / 35 Generování textu Jazykové modely Jazykové modely– znalosti Schopnost doplňování je možné využít jako znalostní funkce ... Hvězdárna Brno se nachází na . . . [fakt] Tašku jsem si nechal . . . práci. [syntax] Mezi oblíbené domácí mazlíčky patří . . . [téma] Prvočíselná řada začíná čísly 2, 3, 5, 7, 11, 13, . . . [aritmetika] Výrobky této firmy prostě zbožňuju. Každý z nich je úplně . . . [sentiment] Kolotoč nemůže bez hřídele fungovat. Proto . . . musíme pravidelně mazat. [anafora] Úvod do umělé inteligence 12/12 8 / 35 Generování textu Jazykové modely Jazykové modely Jaká je tedy cesta od Hvězdárna Brno se nachází na . . . ↓ Úvod do umělé inteligence 12/12 9 / 35 Asistenční modely typu ChatGPT Obsah 1 Generování obrazu Difuzní modely Aplikace generování obrazu 2 Generování textu Jazykové modely 3 Asistenční modely typu ChatGPT Předtrénování Vyladění (fine-tuning) Modelování odměn Zpětnovazební učení 4 Metodologie tvorby otázek Prompt Engineering Myšlenkový postup Informace z vyhledávání 5 PA026 – Projekt z umělé inteligence Úvod do umělé inteligence 12/12 10 / 35 Asistenční modely typu ChatGPT Asistenční modely typu ChatGPT Chat Generative Pre-trained Transformer, ChatGPT 4 fáze trénování: předtrénování (pre-training) vyladění (fine-tuning) modelování odměn (reward modeling) zpětnovazební učení (reinforcement learning) Úvod do umělé inteligence 12/12 11 / 35 Asistenční modely typu ChatGPT Předtrénování Transformer dekodér První úspěšné NLP aplikace transformer modelu – enkodér (BERT, RoBERTa, ...) a seq2seq (enkodér+dekodér – BART, T5, ...) Úvod do umělé inteligence 12/12 12 / 35 Asistenční modely typu ChatGPT Předtrénování Transformer dekodér První úspěšné NLP aplikace transformer modelu – enkodér (BERT, RoBERTa, ...) a seq2seq (enkodér+dekodér – BART, T5, ...) Zjednodušení – použití jen dekodéru, model GPT úkol in1, in2, ..., inn → out1, out2, ..., outm se převede na generování sekvence in1, in2, ..., inn, ⟨sep⟩, out1, out2, ..., outm Úvod do umělé inteligence 12/12 12 / 35 Asistenční modely typu ChatGPT Předtrénování Generative Pre-trained Transformer (Radford et al, 2018), GPT-1 poslední vrstvy (lineární, softmax): generování (Text Prediction) = předtrénování (následující slovo) klasifikace (Task Classifier) = vyladění (třída podle úlohy) Úvod do umělé inteligence 12/12 13 / 35 Asistenční modely typu ChatGPT Předtrénování Předtrénování data pro trénování: dokumenty z internetu (včetně kódů) – velké množství, nízká kvalita doplněné o vybrané kolekce – knihy, učebnice převedené na pod-slovní jednotky (tokeny, algoritmus Byte Pair Encoding) → čísla Úvod do umělé inteligence 12/12 14 / 35 Asistenční modely typu ChatGPT Předtrénování Předtrénování Provozovat tratě jen v nezávislé trakci je výhodné tam, kde jsou slabší přepravní proudy a jezdí zde méně vlaků s menší obsazeností nebo nízkou tonáží. Zavádění elektrického pohonu je totiž spojeno s nemalými investičními náklady a zvýšenými provozními náklady. ↓ ↓ 261 znaků, 144 tokenů (GPT-3) token IDs = [15946, 8590, 709, 265, 491, 265, 128, 249, 474, 268, 410, 497, 89, 6557, 85, 3044, 2634, 1291, 74, 979, 11223, 410, 127, 121, 2065, 77, 2634, 21885, 11, 479, 2934, 44804, 280, 38677, 32790, 8836, 279, 129, 247, 538, 4108, 77, 8836, 6613, 88, 257, 474, 8471, 67, 8836, 1976, 2934, 285, 35942, 128, 249, 410, 75, 461, 129, 107, 264, 1450, 32790, 8836, 10201, 1031, 268, 455, 8836, ..., 899, 8590, 77, 8836, 11632, 299, 6557, 41582, 4597, 13] Úvod do umělé inteligence 12/12 15 / 35 Asistenční modely typu ChatGPT Předtrénování Předtrénování velikosti modelů: počet počet dimenze počet vstupní trénovací parametrů vrstev vektorů hlav kontext data (tok.) GPT-1 117 M 12 768 12 512 20 B GPT-2 1.5 B 48 1600 12 1024 300 B GPT-3 175 B 96 12288 12 2048 500 B GPT-4 1.8 T 120 20000 12 32768 13 T Úvod do umělé inteligence 12/12 16 / 35 Asistenční modely typu ChatGPT Předtrénování Předtrénování trénování: klasický jazykový model – predikuje následující slovo využívá k tomu skrytou reprezentaci (výstup n-té vrstvy dekodéru): • posledního slova – hladové (greedy) generování • posledních b slov – paprskové (beam) hledání reprezentace je vypočítaná ze všech předchozích slov ↑ Transformer dekodér ↑ 4827 665 581 621 395 481 30 What can we do for you ? 50 257 čísel (pravděpodobnosti dalšího tokenu) pro trénování, na tokenu 581/we: 621/do Úvod do umělé inteligence 12/12 17 / 35 Asistenční modely typu ChatGPT Předtrénování Předtrénování Trénovací data (Shakespeare) First Citizen: We cannot, sir, we are undone already. MENENIUS: I tell you, friends, most charitable care Have the patricians of you. For your wants, Your suffering in this dearth, you may as well Strike at the heaven with your staves as lift them Úvod do umělé inteligence 12/12 18 / 35 Asistenční modely typu ChatGPT Předtrénování Předtrénování Trénovací data (Shakespeare) First Citizen: We cannot, sir, we are undone already. MENENIUS: I tell you, friends, most charitable care Have the patricians of you. For your wants, Your suffering in this dearth, you may as well Strike at the heaven with your staves as lift them Generování po inicializaci z’v}yy_RMV(7ea AOCEi2tfEi lermh‘ ‘88]gLNSSx|6Mj"i1wdcf, WezVII<4x?OBHS7D-}.8wCkGFgB(KC- h’Ywa.QhjPo,3C.dA!3;_]!AKa.eOMI Iz(DqAfE8.}nm32 jeden příklad (one-shot) Translate English to French: sea otter => loutre de mer cheese => málo příkladů (few-shot) Translate English to French: sea otter => loutre de mer peppermint => menthe poivrée plush girafe => girafe peluche cheese => (Brown et al, 2020) Úvod do umělé inteligence 12/12 27 / 35 Metodologie tvorby otázek Prompt Engineering Jak efektivně tvořit otázku? metodologie tvorby kontextu a otázky = promptové inženýrství (prompt engineering) uvedení příkladů (few-shot learning) doplnění detailů myšlenkový postup (chain of thought) informace z vyhledávání (retrieval-augmented generation, RAG) Úvod do umělé inteligence 12/12 28 / 35 Metodologie tvorby otázek Prompt Engineering Doplnění detailů model negeneruje správné odpovědi, ale odpovědi z trénování když chceme správnou odpověď, musíme si o ni říct: • „Jsi přední odborník na ...“ • „Máš IQ 130.“ • „Ujisti se, že máš správnou odpověď.“ • „Postupuj logicky.“ detailní otázka s kontextem má obsahovat prvky: • role odpovídajícího SliDo • cíl otázky • posluchači – komu je odpověď určena • tématické zaměření – styl, tón, ... • struktura a formát odpovědi Jsi učitel dějepisu na střední škole. Navrhni pro žáky 8.třídy poutavou aktivitu ve třídě týkající se vytváření společné digitální časové osy. Aktivita by měla zahrnovat vyprávění příběhů a technologie. Časová dotace je 3–4 vyučovací hodiny (každá 45 minut). Formátuj odpověď jako osnovu. Úvod do umělé inteligence 12/12 29 / 35 Metodologie tvorby otázek Myšlenkový postup Myšlenkový postup Slon africký je 1,5krát. . . . . . . . . . . těžší než slon indický jak postupuje člověk? rozhodne se porovnat váhu slona afrického a indického podívá se na Wikipedii – slon africký 6 000 kg, slon indický 4 000 kg spočítá poměr 6 000/4 000 = 1, 5 vyjádří v textu, formuluje jak postupuje jazykový model? generuje slova jedno po druhém na každém slově tráví stejný čas nekontroluje správnost, jen vztahy mezi slovy využívá obrovskou paměť těchto vztahů Úvod do umělé inteligence 12/12 30 / 35 Metodologie tvorby otázek Myšlenkový postup Myšlenkový postup chain of thought: model potřebuje víc tokenů, aby mohl “přemýšlet” v otázce požádat, aby v odpovědi postupoval krok za krokem výsledek je pak přesnější Na zastávce z autobusu vystoupilo 44 cestujících. Po nástupu dalších cestujících přibylo v autobusu 13 cestujících. Kolik cestujících nastoupilo na zastávce? Počet cestujících, kteří nastoupili na zastávce, lze vypočítat odečtením počtu cestujících, kteří vystoupili, od celkového počtu cestujících na zastávce po příchodu. Počet cestujících, kteří nastoupili = 44 + 13 - 44 = 13 Takže na zastávce nastoupilo 13 cestujících. Úvod do umělé inteligence 12/12 31 / 35 Metodologie tvorby otázek Myšlenkový postup Myšlenkový postup chain of thought: model potřebuje víc tokenů, aby mohl “přemýšlet” v otázce požádat, aby v odpovědi postupoval krok za krokem výsledek je pak přesnější Na zastávce z autobusu vystoupilo 44 cestujících. Po nástupu dalších cestujících přibylo v autobusu 13 cestujících. Kolik cestujících nastoupilo na zastávce? Počet cestujících, kteří nastoupili na zastávce, lze vypočítat odečtením počtu cestujících, kteří vystoupili, od celkového počtu cestujících na zastávce po příchodu. Počet cestujících, kteří nastoupili = 44 + 13 - 44 = 13 Takže na zastávce nastoupilo 13 cestujících. Na zastávce z autobusu vystoupilo 44 cestujících. Po nástupu dalších cestujících přibylo v autobusu 13 cestujících. Kolik cestujících nastoupilo na zastávce? Vyřeš správně slovní úlohu. Postupuj přitom krok za krokem. 1. Po vystoupivších cestujících klesl počet cestujících v autobusu o 44. 2. Po nástupu nových cestujících přibylo v autobusu 13 cestujících. 3. Takže na zastávce muselo nastoupit o 44 a 13 cestujících více, než kolik jich vystoupilo. 4. Výsledný počet cestujících, kteří na zastávce nastoupili, tedy vypočítáme sčítáním: 44 + 13 = 57. Odpověď: Nastoupilo 57 cestujících. Úvod do umělé inteligence 12/12 31 / 35 Metodologie tvorby otázek Informace z vyhledávání Informace z vyhledávání někdy je potřeba vyhledávat odpovědi z databáze nebo sady dokumentů Retrieval-Augmented Generation, RAG rozdělte dokumenty do krátkých úseků textu uložte vektorové reprezentace úseků do vektorové databáze (např. pomocí LlamaIndex) po dotazu vyhledejte text v DB podle shody s vektorem otázky přidejte vyhledaný úsek textu jako kontext otázky Úvod do umělé inteligence 12/12 32 / 35 Metodologie tvorby otázek Informace z vyhledávání Metodologie tvorby otázek – doporučení zadávejte detailní otázky s kontextem, relevantními informacemi a instrukcemi relevantní informace můžete dohledat podle dotazu experimentujte s různými formami otázky základní model má vyšší perplexitu než asistenční model, generuje rozmanitější texty přemýšlejte o etice – zaujatost dat (bias), možné zneužití pro šíření dezinformací nebo škodlivého obsahu odpovědi vždy ověřujte Úvod do umělé inteligence 12/12 33 / 35 PA026 – Projekt z umělé inteligence Obsah 1 Generování obrazu Difuzní modely Aplikace generování obrazu 2 Generování textu Jazykové modely 3 Asistenční modely typu ChatGPT Předtrénování Vyladění (fine-tuning) Modelování odměn Zpětnovazební učení 4 Metodologie tvorby otázek Prompt Engineering Myšlenkový postup Informace z vyhledávání 5 PA026 – Projekt z umělé inteligence Úvod do umělé inteligence 12/12 34 / 35 PA026 – Projekt z umělé inteligence PA026 – Projekt z umělé inteligence navazuje na předmět PB016 Úvod do umělé inteligence volba programovacího jazyka není omezena samostatná volba tématu v rozsahu ≥ 1 semestru předmět probíhá jako prezentace a konzultace zajímavé výsledky (http://nlp.fi.muni.cz/aiproject/) • projekt elnet – > 5 let spolupráce na grantových projektech simulace elektrorozvodných sítí • projekt plagiaty_z_webu – vyhledávání shod s dokumenty na celém webu • projekt robot_johnny_5 – sestavení a “oživení” robota – mobilního počítače • robot Karel Pepper – https://nlp.fi.muni.cz/projects/pepper Úvod do umělé inteligence 12/12 35 / 35