Matematika, ki poganja umetno inteligenco
Potovanje od vektorjev do globokih nevronskih mrež.
Ko ChatGPT napiše stavek, ko prevajalni program prepozna besedo ali ko priporočilni sistem izbere film — za vsem tem se skriva ena sama matematična operacija: množenje matrik. Vsaka beseda je vektor. Vsaka plast nevronske mreže je matrika. Vsak odgovor modela je rezultat tisočih matrično-vektorskih produktov, izvedenih v delčku sekunde.
A matrice niso le orodje umetne inteligence. So jezik, v katerem matematika opisuje prostor, gibanje in transformacije. Razumeti matrice pomeni razumeti, zakaj se slike zavrtijo, zakaj Google razvrsti iskalne rezultate, zakaj glasba zveni kot glasba — in zakaj jezikovni modeli sploh delujejo.
To potovanje vas popelje od prvega koraka — kaj sploh je vektor? — do jedra sodobne umetne inteligence: kako matrike besede »razumejo«.
Vektorji
Smer, razdalja in pomen v enem samem objektu.
Predznanje: Osnovna aritmetika — nič več.
Vzemite točko na papirju. Narišite puščico od izhodišča do nje. Ta puščica je vektor — ima dolžino in smer. V matematiki ga zapišemo kot seznam koordinat: vektor v = (3, 2) pomeni: »pojdi 3 korake v desno in 2 korake navzgor«.
A vektorji so mnogo več kot le puščice na papirju. V strojnem učenju so vektorji pomeni. Beseda »kralj« je vektor z 300 ali 1000 vrednostmi — vsaka pove nekaj o pomenu te besede. Beseda »kraljica« je drugačen vektor, ki je v matematičnem smislu besedi »kralj« zelo blizu.
Vektor v ravnini
Dvodimenzionalni vektor ima dve komponenti: x (vodoravno) in y (navpično). Njegova dolžina — ali norma — se izračuna po Pitagorovem izreku:
Klikni ali potegni po platnu, da narišeš vektor. Opazuj, kako se spremenijo koordinate in dolžina.
Skalarni produkt — kot med vektorjema
Skalarni produkt (ali notranje množenje) dveh vektorjev nam pove, koliko sta si »podobna«. Matematično: seštejemo produkte ustreznih komponent. Rezultat je eno samo število — skalar.
Vleci puščici modro in zlato. Opazuj skalarni produkt in kot med njima.
Kadar je produkt pozitiven — vektorja kažeta v podobno smer. Negativen — v nasprotni smeri. Nič — sta pravokotna.
Globlje: Vektorji v n-dimenzionalnem prostoru ★
Ravninski vektorji imajo 2 komponenti, prostorski 3 — a v strojnem učenju imajo vektorji pogosto 768, 1024 ali celo 4096 dimenzij. Tega si ne moremo zamisliti, a matematika deluje enako: skalarni produkt je vsota produktov vseh parov komponent, dolžina je kvadratni koren vsote kvadratov vseh komponent.
Ko jezikovni model obdela besedo »mačka«, jo pretvori v vektor z 768 vrednostmi. Beseda »pes« je drug vektor, ki je matematično blizu besedi »mačka«. Beseda »letalo« je daleč. Ta »bližina« je skalarni produkt med normaliziranimi vektorji — imenuje se kosinusna podobnost.
Matrike
Ko vektorje zložimo v tabelo, dobimo novo matematično bitje.
Predznanje: 1. poglavje — vektorji.
Matrika je pravokotna tabela števil, razvrščenih v vrstice in stolpce. Matrika z m vrsticami in n stolpci ima dimenzijo m × n. Element v i-ti vrstici in j-tem stolpcu zapišemo kot aij.
Posebne matrike
V linearski algebri imajo nekatere matrike posebno vlogo, ker jih srečamo povsod.
Indeksiranje in branje
Vsak element matrike ima naslov: vrstica najprej, nato stolpec. Element a23 je v drugi vrstici, tretjem stolpcu. V programerskem zapisu (Python, NumPy) pišemo A[1][2] — ker indeksiranje začnemo z 0.
Klikni ali tapni katerikoli element spodnje matrike 4 × 4 in izvedi, kje se nahaja.
Klikni element ↑
Globlje: Matrika kot linearna preslikava ★★
Matrika ni le tabela — je funkcija. Ko pomnožimo matriko A (dimenzije m × n) z vektorjem v (dimenzije n), dobimo nov vektor dimenzije m. Matrika torej preslika vektorje iz n-dimenzionalnega prostora v m-dimenzionalni prostor.
To je jedro strojnega učenja: vsaka plast nevronske mreže je matrika, ki preslika vhodni vektor (npr. besedo) v izhodni vektor (npr. napovedno porazdelitev). Sestavljanje plasti je sestavljanje preslikav.
Seštevanje in skaliranje
Najenostavnejše operacije — a nič manj koristne.
Predznanje: 2. poglavje — matrike.
Preden se lotimo množenja matrik — ki je kompleksno in nepričakovano — spoznamo preproste operacije: seštevanje, odštevanje in množenje s skalarjem. Te operacije so intuitivne, a postavljajo temelje za vse, kar sledi.
Seštevanje matrik
Dve matriki iste dimenzije seštejemo element po element. Nič drugega. Matrika A in matrika B, obe dimenzije m × n, dasta vsoto C = A + B, kjer je vsak element cij = aij + bij.
Vpiši vrednosti v matriki A in B. Vsota C se izračuna samodejno.
Matrika A
Matrika B
Vsota C = A + B
Množenje s skalarjem
Skalar je navadno število — brez smeri, le vrednost. Ko pomnožimo matriko s skalarjem k, pomnožimo vsak element z vrednostjo k. Matrika se »raztegne« ali »skrči« sorazmerno.
Lastnosti seštevanja
Seštevanje matrik ima enake lastnosti kot seštevanje navadnih števil. Te lastnosti so temelj, ki algebraistom omogoča sklepanje o matrikalnih izrazih:
| Lastnost | Formula | Ime |
|---|---|---|
| A + B = B + A | A+B = B+A | Komutativnost |
| (A + B) + C = A + (B + C) | (A+B)+C = A+(B+C) | Asociativnost |
| A + 0 = A | A + O = A | Nevtralni element |
| A + (−A) = 0 | A + (−A) = O | Inverz |
| k(A + B) = kA + kB | k(A+B) = kA+kB | Distributivnost |
Množenje matrik
Najneintutivnejša in najpomembnejša operacija.
Predznanje: 3. poglavje — seštevanje in skaliranje.
Množenje matrik ni element po element — to je napaka, ki jo naredijo skoraj vsi začetniki. Gre za bistveno globlje operacijo: vsak element rezultata je skalarni produkt celotne vrstice prve matrike in celotnega stolpca druge.
Pogoj in dimenzije
Matriki A (dimenzije m × k) in B (dimenzije k × n) lahko pomnožimo samo, če je število stolpcev A enako številu vrstic B. Rezultat C = A · B ima dimenzijo m × n.
Klikni element v matriki C, da vidiš, katera vrstica A in kateri stolpec B sta bila pomnožena.
Matrika krat vektor
Posebej pomemben primer: matrika m × n pomnožena z vektorjem dimenzije n da vektor dimenzije m. To je najpogostejša operacija v nevronskih mrežah — vsaka plast preslika vhodni vektor v izhodni vektor.
Nastavi elemente matrike in vektorja. Rezultat je nov vektor.
Matrika A (2×2)
Vektor v
Rezultat Av
Globlje: Zakaj množenje matrik ni komutativno ★★
Za navadna števila velja a·b = b·a. Za matrike to ne velja: A·B ≠ B·A (razen v posebnih primerih). To je ena najpomembnejših razlik med aritmetiko in matriično algebro.
Zakaj? Ker A·B in B·A pogosto nimata niti enakih dimenzij (če A je m×k in B je k×m, potem A·B je m×m, B·A pa k×k). Celo ko sta dimenziji enaki, je vrstni red matematično smiseln: najprej preslikamo z eno matriko, nato z drugo. »Najprej zasukaj, nato raztegni« da drugačen rezultat kot »najprej raztegni, nato zasukaj«.
Linearne transformacije
Vsaka matrika je preslikava prostora — zasuk, razteg, zrcaljenje.
Predznanje: 4. poglavje — množenje matrik.
Zdaj vidimo matrike z novimi očmi: matrika ni le tabela — je transformacija prostora. Ko pomnožimo vsako točko ravnine z matriko, dobimo novo točko. Če to storimo za vse točke naenkrat, se ravnina preslika — zasuk, razteg, strig, zrcaljenje.
Linearne transformacije ohranjajo dve lastnosti: izhodišče ostane na mestu in vzporedne črte ostanejo vzporedne. Vse transformacije, ki te lastnosti ohranjajo, so matrice.
Klasične transformacije ravnine
Determinanta — kako se površine spremenijo
Ko matrika transformira prostor, se površine spremenijo. Kvadrat postane paralelogram. Determinanta matrike nam pove, za koliko se površina pomnoži. Če je determinanta 2, se površine podvojijo. Če je 0, se prostor »zruši« v nižjo dimenzijo. Če je negativna, se orientacija obrne.
Globlje: Inverzna matrika in sistemi enačb ★★
Matrika A ima inverz A⁻¹ takrat in samo takrat, ko je njena determinanta različna od nič. Inverz razveljavi transformacijo: A⁻¹·(A·v) = v. Podobno kot množenje s 3 razveljavi deljenje s 3.
Sistemi linearnih enačb (n enačb, n neznank) je mogoče zapisati kot A·x = b. Rešitev je x = A⁻¹·b — a inverz je drago računati. V praksi se rešuje z Gaussovo eliminacijo ali LU-razcepitvijo.
Lastne vrednosti in lastni vektorji
Nekateri vektorji se pri transformaciji le raztegnejo — ne zasukajo.
Predznanje: 5. poglavje — transformacije.
Ko matrika A transformira prostor, se večina vektorjev zasuka in raztegne. A nekateri posebni vektorji se le raztegnejo (ali skrčijo) — smer ostane ista. Ti so lastni vektorji matrike. Faktor, za katerega se raztegnejo, je lastna vrednost.
Beremo: matrika A, ki deluje na lastni vektor v, da le skalar λ (lastna vrednost) krat v. Smer se ne spremeni — le dolžina.
Sivi vektorji so transformirani navadni vektorji. Modri in zlati sta lastna vektorja — pri transformaciji ohranita smer.
PCA — zmanjšanje dimenzij
Ena najpomembnejših uporab lastnih vrednosti je analiza glavnih komponent (PCA). Imamo podatke z veliko dimenzijami (npr. slika z milijonom pikslov) — z lastnimi vektorji kovariančne matrike najdemo smeri največje variabilnosti in podatke stisnemo na manjše število dimenzij, ne da bi izgubili bistvene informacije.
Oblak točk ima dve smeri variabilnosti. Lastna vektorja (modra in zlata os) pokažeta smeri z največ in najmanj variabilnosti.
Globlje: SVD — razgradnja singularnih vrednosti ★★★
Vsako matriko A (ne le kvadratne) je mogoče zapisati kot produkt treh matrik: A = U · Σ · Vᵀ. To je razgradnja singularnih vrednosti (SVD). Matriki U in V sta rotacijski matriki (ortogonalni), Σ pa je diagonalna matrika s singularnimi vrednostmi — ki so kvadratni koreni lastnih vrednosti A·Aᵀ.
SVD je temelj priporočilnih sistemov (Netflix, Spotify), stiskanja slik in — ključno — razumevanja, kako jezikovni modeli »razumejo« semantiko. Latentna semantična analiza (LSA) je preprosto SVD na matriki besed.
Matrike v jezikovnih modelih
Kako matematika, ki smo jo spoznali, poganja ChatGPT.
Predznanje: Priporočena vsa predhodna poglavja.
Zdaj poznamo vse gradnike. Čas je, da vidimo, kako se zložijo v celoto — v jezikovni model tipa GPT. Spoiler: gre za matrice. Vsak korak, vsaka operacija, vsak »misli« jezikovnega modela je v osnovi množenje matrike z vektorjem.
1. Vložitvena matrika — besede kot vektorji
Jezikovni model začne z vložitveno matriko E (ang. embedding matrix). To je matrika dimenzije V × d, kjer je V velikost besedišča (npr. 50.000 besed) in d dimenzija vložitve (npr. 768). Vsaka vrstica je vektor ene besede.
Poenostavljen prikaz: besede so vložene kot točke v 2D prostoru. Semantično sorodne besede so si matematično blizu.
Klikni besedo, da vidiš njeno razdaljo do ostalih.
2. Mehanizem pozornosti — Q, K, V matrike
Srce transformatorske arhitekture je mehanizem samopozornosti (ang. self-attention). Za vsak vhodni vektor (besedo) izračunamo tri nove vektorje z množenjem s tremi matrikami uteži:
| Matrika | Pomen | Vloga |
|---|---|---|
| W_Q | Poizvedba (Query) | »Kaj iščem?« |
| W_K | Ključ (Key) | »Kaj ponujam?« |
| W_V | Vrednost (Value) | »Kaj posredujem?« |
Pozornost med dvema besedama je skalarni produkt njunih poizvedbenega in ključnega vektorja, normaliziran z mehko maksimumsko funkcijo (softmax). To je natanko operacija, ki smo jo spoznali v 1. poglavju!
Klikni besedo (vrstica), da vidiš, koliko pozornosti posveča vsaki drugi besedi (stolpec). Temnejša = več pozornosti.
Klikni besedo v levem stolpcu.
3. Feedforward plast — dve matriki
Za mehanizmom pozornosti sledi dvoplastna nevronska mreža (feedforward). Vsak vektor je najprej preslikan v višji prostor (pogosto 4× večji), nato nazaj. To sta dve množenji z matriko:
Skupna slika
Celoten jezikovni model GPT-3 (175 milijard parametrov) je v osnovi 96 zaporednih blokov, vsak sestavljen iz:
Globlje: Zakaj matrike, ne tabele navzgor? ★★★
Mogoče se sprašujete: zakaj ne shranimo preprosto slovarjev »beseda → pomen«? Odgovor: ker jezik ni slovar. Pomen besede je odvisen od konteksta, sorodnih besed, slovnice. Vektorski prostor omogoča interpolacijo — pomen besede »bančni« je drugačen v »bančni kredit« in »bančni nasip«. Z vektorji to matematično ujamemo; s slovarjem ne.
Skalarni produkti med vektorji ujamejo analogije: vektor(»kralj«) − vektor(»moški«) + vektor(»ženska«) ≈ vektor(»kraljica«). To ni koincidenca — to je posledica tega, da model med učenjem optimizira matrice, dokler te relacije ne postanejo del geometrije prostora.