Ako fungujú LLM · Prednáška 1 zo 7

Čo je neurónová sieť

Začíname úplne od nuly. Z jedného umelého neurónu postavíme perceptron z roku 1958, narazíme na jeho hranice a opravíme ich skrytými vrstvami. Na konci budeš rozumieť sieti, ktorá číta rukou písané číslice, a nakreslíš jej vlastnú.

  • 35 až 45 minút
  • Netreba nič vedieť vopred
  • 6 interaktívnych ukážok a video
01

Úloha, ktorú nevieš naprogramovať

Pozri sa na tri trojky nižšie. Každá je nakreslená inak, každá má iné pixely, a predsa okamžite vidíš, že je to trojka. Tvoj mozog to zvládne bez námahy.

Tri rukou písané trojky z dátovej sady MNIST. Každý obrázok má 28 × 28 pixelov, teda 784 čísel od 0 (čierna) po 1 (biela).

Teraz si predstav, že máš napísať program, ktorý dostane tých 784 čísel a povie, aká je to číslica. Skús vymyslieť pravidlo. „Ak je hore oblúk a dole oblúk, je to trojka?“ Lenže čo je oblúk v reči pixelov? A čo ak je trojka posunutá, naklonená alebo hrubšia? Klasické programovanie pomocou pravidiel if … else tu veľmi rýchlo zlyhá.

Neurónová sieť na to ide inak. Pravidlá nenapíšeme my. Sieť si ich nájde sama z príkladov. My jej dáme len stavebnicu z veľmi jednoduchých súčiastok a tisíce ukážok správnych odpovedí.

Hlavná myšlienka

Neurónová sieť je funkcia s veľa nastaviteľnými číslami. Dnu idú čísla (pixely, slová, zvuk), von idú čísla (odpoveď). Učenie znamená nájsť také nastavenie, pri ktorom funkcia odpovedá správne.

V tejto prednáške sa pozrieme na to, ako taká funkcia vyzerá. Ako sa jej čísla nastavia sami, to je téma prednášok 2 a 3. A celý kurz smeruje k tomu, aby si pochopil, že ChatGPT je tá istá myšlienka, len so 175 miliardami nastaviteľných čísel.

02

Najprv celý obraz za dve minúty

Krátke video ukáže všetko, čo v tejto prednáške postupne rozoberieme: neurón, váhy, vrstvy a to, ako cez sieť preteká signál. Nemusíš tomu hneď rozumieť do detailu, stačí získať predstavu.

Animované zhrnutie prednášky (bez zvuku, s titulkami). Inšpirované sériou Neural networks od 3Blue1Brown.
03

Neurón: vec, ktorá drží jedno číslo

Slovo „neurón“ znie biologicky, ale v umelých sieťach je to prekvapivo jednoduchá vec. Neurón je miesto, kde je uložené jedno číslo. Tomu číslu hovoríme aktivácia. Keď je vysoké, neurón „svieti“, keď je nízke, je „zhasnutý“.

Odkiaľ sa to číslo vezme? Neurón ho vypočíta z čísel, ktoré do neho pritečú. Robí to v troch krokoch:

  1. Vynásobí každý vstup váhou. Váha hovorí, ako veľmi na danom vstupe záleží. Kladná váha vstup podporuje, záporná ide proti nemu, nulová ho ignoruje.
  2. Všetko sčíta a pridá bias. Bias (posun) je číslo, ktoré určuje, ako ľahko sa neurón rozsvieti, aj keď sú vstupy slabé.
  3. Výsledok prepustí cez aktivačnú funkciu. Tá rozhodne, čo pôjde von. Najjednoduchšia je schod: ak je súčet nad nulou, výstup je 1, inak 0.
z = w1·x1 + w2·x2 + … + wn·xn + b   →   výstup = f(z) x sú vstupy, w sú váhy, b je bias, f je aktivačná funkcia. Tomuto vzorcu sa hovorí vážený súčet.

Vyzerá to abstraktne, tak si to ukážme na rozhodnutí, ktoré poznáš. Pôjdeš dnes večer von? Záleží to od troch vecí a každá má pre teba inú váhu.

Vyskúšaj si

Jeden neurón rozhoduje: ísť večer von?

Zapínaj a vypínaj vstupy vľavo a posúvaj váhy. Sleduj, ako sa mení vážený súčet a kedy prekročí nulu.

Úloha: nastav váhy tak, aby si išiel von vždy, keď idú kamaráti, okrem prípadu, keď máš zajtra skúšku. Potom skús zmeniť iba bias a pozri, ako sa z opatrného človeka stane spoločenský.

Všimni si dve veci. Po prvé, správanie neurónu je celé uložené vo váhach a v biase. Rovnaký neurón s inými číslami sa rozhoduje úplne inak. Po druhé, bias funguje ako prah: čím je zápornejší, tým viac „dôkazov“ neurón potrebuje, aby sa rozsvietil.

Podobnosť s mozgom

Skutočný neurón dostáva signály od tisícov iných neurónov cez spojenia (synapsie) rôznej sily. Keď súčet signálov prekročí prah, neurón vyšle impulz ďalej. Umelý neurón je veľmi hrubé zjednodušenie tejto myšlienky. Zvyšok je už matematika, nie biológia.

04

Perceptron: stroj, ktorý sa učí z chýb

Neurón so schodovou funkciou má meno: perceptron. V roku 1958 ho opísal psychológ Frank Rosenblatt v článku The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain. Je to jeden zo štyroch článkov, na ktorých tento kurz stojí.

Rosenblatt si položil tri otázky: ako živý organizmus vníma svet, v akej forme si informácie ukladá a ako uložené informácie ovplyvňujú jeho správanie. V tej dobe si veľa ľudí predstavovalo pamäť ako kartotéku: každá spomienka je niekde uložená ako obrázok. Rosenblatt tvrdil opak.

Z článku (Rosenblatt, 1958)

Informácia nie je uložená ako záznam jednotlivých obrazov. Je obsiahnutá v spojeniach, teda v tom, ktoré dráhy medzi bunkami sa posilnili.
Voľná parafráza hlavnej tézy článku. Psychological Review, 65(6), 386–408.

Presne toto platí pre neurónové siete dodnes. ChatGPT nemá nikde uložené vety, ktoré čítal. Má len váhy spojení.

Ako vyzeral pôvodný perceptron

Rosenblattov model mal tri druhy jednotiek, ktoré nazval podľa ich úlohy:

SSenzorické jednotky

„Sietnica“. Body, ktoré reagujú na svetlo. Zodpovedajú našim vstupom x.

AAsociačné jednotky

Bunky náhodne prepojené so sietnicou. Rozsvietia sa, keď súčet ich vstupov prekročí prah θ.

RJednotky odozvy

Výstup. Povedia napríklad „vľavo“ alebo „vpravo“, „štvorec“ alebo „kruh“.

Kľúčové bolo, že sila spojení medzi A a R jednotkami sa menila podľa skúsenosti. Keď stroj odpovedal správne, aktívne spojenia sa posilnili. Rosenblatt to opísal jazykom pravdepodobnosti (preto „probabilistic model“ v názve) a ukázal, že taký systém sa dokáže naučiť rozlišovať podnety, aj keď je na začiatku prepojený úplne náhodne.

Nebola to len teória. V Cornell Aeronautical Laboratory postavili Mark I Perceptron: stroj s kamerou zo 400 fotobuniek (20 × 20), kde váhy boli potenciometre a pri učení nimi otáčali elektromotory. Noviny vtedy písali, že vzniká zárodok počítača, ktorý bude chodiť, hovoriť a vnímať sám seba. Ako uvidíš o chvíľu, bolo to dosť predčasné.

Pravidlo učenia

V dnešnom zápise je pravidlo učenia perceptronu veľmi krátke. Ukážeme perceptronu príklad a pozrieme sa, čo odpovedal:

  • Odpovedal správne? Nemeníme nič.
  • Povedal 0 a malo byť 1? Váhy boli príliš nízke. Ku každej váhe pripočítame kúsok jej vstupu.
  • Povedal 1 a malo byť 0? Váhy boli príliš vysoké. Od každej váhy kúsok jej vstupu odpočítame.
w ← w + η · (cieľ − výstup) · x      b ← b + η · (cieľ − výstup) η (éta) je rýchlosť učenia: ako veľký krok urobíme. Výraz (cieľ − výstup) je chyba: +1, 0 alebo −1.

Perceptron s dvoma vstupmi si vieme nakresliť. Dva vstupy sú súradnice bodu v rovine a perceptron rovinu rozdelí priamkou: na jednej strane odpovedá 1, na druhej 0. Učenie znamená túto priamku natáčať a posúvať.

Vyskúšaj si

Nauč perceptron oddeliť dve skupiny bodov

Modré body majú cieľ 1, červené 0. Klikaním do plochy pridávaš body (farbu vyberieš prepínačom). Tlačidlo „Jeden krok“ ukáže perceptronu jeden bod a prípadne upraví váhy.

Úloha: spusti učenie na pripravených dátach a sleduj, ako sa priamka pri každej chybe pohne. Potom zvoľ dáta „XOR“ a pozri, čo sa stane. Priamka sa nikdy neusadí.

Ak sa body dajú oddeliť priamkou, perceptron takú priamku vždy nájde po konečnom počte krokov. Je to dokázaná veta (veta o konvergencii perceptronu). To bol v roku 1958 obrovský výsledok: stroj, ktorý sa zaručene naučí úlohu len z príkladov.

05

Čo jedna vrstva nedokáže

Tá veta má ale háčik v slove „ak“. Čo ak sa body priamkou oddeliť nedajú? Pozrime sa na najjednoduchšie úlohy, aké existujú: logické funkcie dvoch vstupov.

x₁x₂AND (a zároveň)OR (alebo)XOR (práve jeden)
00000
01011
10011
11110

AND a OR zvládne jeden perceptron ľahko. XOR („práve jeden z dvoch“) vyzerá rovnako nevinne. Skús ho nastaviť ručne.

Vyskúšaj si

Nastav perceptron ako logické hradlo

Vyber cieľovú funkciu a posúvaj dve váhy a bias. Štyri body sú štyri riadky tabuľky. Farba pozadia ukazuje, čo perceptron odpovedá, okraj bodu ukazuje, či je to správne.

Úloha: trafíš AND aj OR na 4 zo 4. Pri XOR sa cez 3 zo 4 nedostaneš, nech robíš čokoľvek. Skús pochopiť prečo: body s cieľom 1 ležia na uhlopriečke a jedna priamka ich od zvyšných dvoch neoddelí.

Tomuto obmedzeniu sa hovorí lineárna separabilita. Jedna vrstva vie vyriešiť len úlohy, kde sa dajú odpovede oddeliť priamkou (pri viacerých vstupoch rovinou). A väčšina zaujímavých úloh taká nie je.

V roku 1969 to Marvin Minsky a Seymour Papert rozobrali v knihe Perceptrons. Matematicky ukázali, čo všetko jednovrstvový perceptron nedokáže. Nadšenie vystriedalo sklamanie, peniaze na výskum vyschli a neurónové siete na viac ako desať rokov skoro zmizli. Tomuto obdobiu sa hovorí prvá zima umelej inteligencie.

Čo je vlastne „jedna vrstva“

Jednovrstvová sieť má vstupy napojené priamo na výstupné neuróny. Medzi nimi nie je nič. Každý výstupný neurón je samostatný perceptron, takže každý z nich vie nakresliť len jednu priamku. Viac neurónov vedľa seba dá viac priamok, ale žiadna z nich nevie využiť výsledok tej druhej.

06

Oprava: daj neuróny za seba

Riešenie je prekvapivo jednoduché. Ak jeden neurón vie nakresliť jednu priamku, zoberme dva neuróny, ktoré nakreslia dve priamky, a tretí, ktorý ich výsledky skombinuje.

XOR sa dá povedať aj takto: „aspoň jeden vstup je 1, ale nie oba naraz“. To sú dve jednoduché podmienky, ktoré už perceptron zvládne:

  • Prvý neurón počíta OR: je aspoň jeden vstup 1?
  • Druhý neurón počíta AND: sú oba vstupy 1?
  • Výstupný neurón povie 1, keď prvý svieti a druhý nie.

Neuróny medzi vstupom a výstupom tvoria skrytú vrstvu. Skrytá sa volá preto, lebo jej hodnoty nevidíme na vstupe ani na výstupe a nikto jej nepovie, čo má počítať.

Vyskúšaj si

Sieť 2-2-1 rieši XOR

Sieť má dva vstupy, dva skryté neuróny a jeden výstup. Klikni na bod v ploche (alebo na vstupy) a sleduj, aké hodnoty tečú sieťou. Všetkých 9 čísel sa dá meniť.

Úloha: klikni na „Ukáž riešenie“ a prejdi si všetky štyri kombinácie vstupov. Potom váhy vynuluj a skús riešenie zostaviť sám. Všimni si, že každý skrytý neurón kreslí jednu priamku a výstup z nich vyreže pás.

Toto je najdôležitejšia myšlienka celej prednášky. Skrytá vrstva si vstup preloží do novej podoby, v ktorej je úloha jednoduchá. Pôvodné body sa priamkou oddeliť nedali. Po prechode skrytou vrstvou už áno. Hlboké siete robia to isté mnohokrát za sebou: každá vrstva pripraví vstup pre tú ďalšiu.

Prečo sa to nerobilo už v roku 1958?

Pravidlo učenia perceptronu funguje len pre jednu vrstvu. Pri výstupnom neuróne vieme, čo mal odpovedať. Pri skrytom neuróne nevieme, aká mala byť jeho „správna“ hodnota, takže nevieme, ako opraviť jeho váhy. Tento problém vyriešil až algoritmus backpropagation, ktorý v roku 1986 spopularizovali Rumelhart, Hinton a Williams. Venujeme mu celú 3. prednášku.

07

Od schodu k hladkým funkciám

Schodová funkcia má jednu nepríjemnú vlastnosť. Keď váhu trochu zmeníš, výstup sa väčšinou nezmení vôbec a občas naraz preskočí z 0 na 1. Sieť tak nedostane žiadnu informáciu o tom, či ide správnym smerom. Aby sa siete dali učiť, potrebujeme funkciu, ktorá reaguje plynulo.

Schod

0 alebo 1. Pôvodný perceptron. Jasné rozhodnutie, ale nedá sa plynulo ladiť.

Sigmoid σ

Hladké „S“ medzi 0 a 1. Veľmi záporný súčet dá skoro 0, veľmi kladný skoro 1. Používal sa desaťročia.

ReLU

Záporné čísla zmení na 0, kladné nechá tak. Jednoduchá a rýchla, dnes najbežnejšia. Jej príbuznú (GELU) používa aj GPT.

Vyskúšaj si

Čo robí váha a bias s výstupom neurónu

Graf ukazuje výstup neurónu s jedným vstupom x. Prepínaj aktivačnú funkciu a meň váhu a bias.

Všimni si: váha mení strmosť (a pri zápornej hodnote graf otočí), bias posúva graf doľava a doprava. Pri sigmoide s veľmi veľkou váhou dostaneš skoro schod.

Je tu ešte jeden dôvod, prečo aktivačnú funkciu potrebujeme. Keby neuróny iba násobili a sčitovali, celá sieť, nech by mala koľkokoľvek vrstiev, by sa dala nahradiť jedinou vrstvou. Sčítanie sčítaní je stále len sčítanie. Až „ohyb“ v aktivačnej funkcii dáva vrstvám zmysel a umožňuje sieti kresliť krivky namiesto priamok.

08

Hlboká sieť, ktorá číta číslice

Vráťme sa k úlohe zo začiatku. Postavíme sieť presne ako v slávnom videu od 3Blue1Brown:

784Vstupná vrstva

Jeden neurón na každý pixel obrázka 28 × 28. Aktivácia je jas pixelu od 0 po 1.

16 + 16Dve skryté vrstvy

Tu sa deje „premýšľanie“. Počet 16 je zvolený len preto, aby sa sieť dala nakresliť.

10Výstupná vrstva

Jeden neurón na každú číslicu 0 až 9. Ten, ktorý svieti najviac, je odpoveď siete.

Každý neurón je spojený so všetkými neurónmi predchádzajúcej vrstvy. Spočítajme, koľko nastaviteľných čísel sieť má:

váhy: 784·16 + 16·16 + 16·10 = 12 960     biasy: 16 + 16 + 10 = 42     spolu: 13 002 13 002 „gombíkov“, ktorými sa dá otáčať. Sieť nižšie ich má nastavené učením na 60 000 príkladoch.

Sieť nižšie je skutočná. Jej váhy som natrénoval na dátach MNIST a na testovacích číslicach, ktoré nikdy nevidela, má úspešnosť okolo 93 %. Všetko sa počíta priamo v tvojom prehliadači.

Vyskúšaj si

Nakresli číslicu a sleduj sieť pri práci

Kresli myšou alebo prstom do čierneho štvorca. Vpravo vidíš aktivácie všetkých vrstiev. Klikni na ktorýkoľvek neurón v skrytej alebo výstupnej vrstve a ukáže sa, aké váhy má na vstupoch.

Skús: nakresliť sedmičku s prečiarknutím a bez neho, číslicu v rohu, alebo niečo, čo nie je číslica. Sieť vždy niečo odpovie. Nevie povedať „neviem“, lebo ju to nikto neučil.

Čo robia skryté vrstvy?

Pekná predstava je, že sieť skladá číslicu postupne. Prvá skrytá vrstva by hľadala krátke hrany, druhá by z hrán skladala slučky a čiary a výstup by zo slučiek a čiar zložil číslicu. Deviatka je slučka hore a čiara dole, osmička sú dve slučky.

Klikni v ukážke vyššie na neuróny prvej skrytej vrstvy a pozri sa na ich váhy. Pekné hrany tam väčšinou neuvidíš. Uvidíš skôr neurčité škvrny. Sieť si našla vlastné riešenie, ktoré funguje, ale nie je také úhľadné, ako by sme čakali. To je poctivá pravda o neurónových sieťach: vieme presne, ako počítajú, ale často nevieme povedať, „čo si myslia“. V druhej polovici kurzu uvidíš, že pri veľkých jazykových modeloch je to rovnaké.

Celá sieť je jeden vzorec

Výpočet jednej vrstvy sa dá zapísať veľmi úsporne. Aktivácie predchádzajúcej vrstvy zoradíme do stĺpca čísel (vektor a), všetky váhy do tabuľky (matica W) a biasy do ďalšieho stĺpca (vektor b):

a(nová) = σ( W · a(stará) + b ) Jeden riadok matice W obsahuje váhy jedného neurónu. Násobenie matice vektorom spraví všetky vážené súčty naraz.

Tento zápis si zapamätaj. Presne takéto násobenie matíc tvorí drvivú väčšinu výpočtov v GPT a je dôvodom, prečo sa AI trénuje na grafických kartách. Tie sú stavané na to, aby násobili veľké tabuľky čísel naraz.

09

Kde všade neurónové siete stretneš

Princíp je všade rovnaký: čísla dnu, vážené súčty, aktivácie, čísla von. Mení sa len to, čo čísla znamenajú, a ako sú neuróny poprepájané.

Obraz

Odomykanie telefónu tvárou, čítanie ŠPZ, hľadanie nádorov na röntgene, autá, ktoré vidia chodcov.

Zvuk

Prepis reči na text, hlasoví asistenti, potlačenie šumu v hovoroch, rozpoznanie pesničky.

Text

Preklad, filtrovanie spamu, dopĺňanie slov na klávesnici a veľké jazykové modely ako ChatGPT.

Odporúčania

Čo ti ukáže YouTube, Netflix alebo e-shop. Sieť odhaduje, na čo klikneš.

Hry a roboty

AlphaGo, agenti v hrách, chôdza humanoidných robotov. Sieť tu vyberá ďalší ťah alebo pohyb.

Veda

Predpovedanie tvaru bielkovín (AlphaFold), počasia, návrh nových materiálov a liekov.

Vstupom je vždy zoznam čísel. Obrázok sú jasy pixelov, zvuk je tlak vzduchu v čase, a text? Ako sa zo slov stanú čísla, to je samostatná a veľmi pekná téma. Dostaneme sa k nej v 4. prednáške.

10

Over si, čo si pochopil

Päť krátkych otázok. Nič sa nikam neposiela, je to len pre teba.

1. Neurón má vstupy x₁ = 1 a x₂ = 0, váhy w₁ = 2 a w₂ = 5 a bias b = −3. Aký je vážený súčet z?

2. Kde je v neurónovej sieti uložené to, čo sa naučila?

3. Prečo jeden perceptron nevie vyriešiť XOR?

4. Čo by sa stalo, keby sme z hlbokej siete odstránili všetky aktivačné funkcie?

5. Sieť má 3 vstupy, jednu skrytú vrstvu so 4 neurónmi a 2 výstupy. Koľko má parametrov (váh a biasov)?

11

Čo si odnášaš

  • Neurón drží jedno číslo. Vypočíta ho ako vážený súčet vstupov plus bias, prehnaný cez aktivačnú funkciu.
  • Perceptron (Rosenblatt, 1958) je neurón so schodovou funkciou, ktorý sa učí z chýb. Vedomosť má uloženú vo váhach.
  • Jedna vrstva vie rozdeliť priestor len priamkou, preto nezvládne ani XOR.
  • Skryté vrstvy si vstup prekladajú do podoby, v ktorej je úloha ľahšia. Potrebujú na to nelineárnu aktivačnú funkciu.
  • Celá sieť je funkcia s parametrami. Sieť na číslice ich má 13 002, GPT-3 ich má 175 miliárd.

Jedna veľká otázka zostala otvorená: ako sa tých 13 002 čísel nastaví? Nikto ich neladí ručne. V ďalšej prednáške si pripravíme matematiku, ktorú na to potrebujeme: čo je chyba siete, čo je sklon a gradient a ako sa dá po sklone „zísť“ k dobrému riešeniu.

Prvá prednáška je za tebou

Pokračovať na 2. prednášku

Zdroje