Matrične operacije

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«.

Poglavje 1

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:

|v| = √(vx² + vy²)
Interaktivno · Vleci vektor po ravnini

Klikni ali potegni po platnu, da narišeš vektor. Opazuj, kako se spremenijo koordinate in dolžina.

v = (3, 2)   |v| = 3.606

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.

u · v = ux·vx + uy·vy = |u|·|v|·cos(θ)
Interaktivno · Skalarni produkt in kot

Vleci puščici modro in zlato. Opazuj skalarni produkt in kot med njima.

u·v =   θ =

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.

Kar zdaj veste: Vektor je objekt z dolžino in smerjo. Zapišemo ga kot seznam koordinat. Skalarni produkt dveh vektorjev nam pove, kako sta si podobna — in to je temeljni gradnik vsakega jezikovnega modela: »podobnost« med besedami je skalarni produkt njihovih vektorjev.
Poglavje 2

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.

A = [ a11a12a13 a21a22a23 ]   (matrika 2 × 3)

Posebne matrike

V linearski algebri imajo nekatere matrike posebno vlogo, ker jih srečamo povsod.

Interaktivno · Posebne matrike
Enotska
Ničelna
Diagonalna
Simetrična
Transponirana

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.

Interaktivno · Klikni na element

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.

Kar zdaj veste: Matrika je tabela števil z vrsticami in stolpci. Vsak element ima koordinati (i, j). Posebne matrike — enotska, diagonalna, simetrična — nastopajo v vlogah, ki jih bomo spoznali v naslednjih poglavjih. Matrika pa ni le tabela: je matematična preslikava med prostori.
Poglavje 3

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.

Interaktivno · Seštevanje matrik 2 × 2

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.

k · A = k · [aij] = [k · aij]
Interaktivno · Skaliranje matrike in njena vizualizacija

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:

LastnostFormulaIme
A + B = B + AA+B = B+AKomutativnost
(A + B) + C = A + (B + C)(A+B)+C = A+(B+C)Asociativnost
A + 0 = AA + O = ANevtralni element
A + (−A) = 0A + (−A) = OInverz
k(A + B) = kA + kBk(A+B) = kA+kBDistributivnost
Kar zdaj veste: Seštevanje matrik je element po element — in le matriki iste dimenzije lahko seštejemo. Množenje s skalarjem pomnoži vsak element z istim številom. To sta najintuitativnejši operaciji — a njune lastnosti (komutativnost, distributivnost) so enake kot pri številih, kar linearski algebri daje matematično doslednost.
Poglavje 4

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.

(m × k) · (k × n) = (m × n)     cij = Σl=1..k ail · blj
Interaktivno · Množenje matrik korak po korak

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.

Interaktivno · Matrika krat 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«.

Kar zdaj veste: Množenje matrik je seštevanje skalarnih produktov — vsak element rezultata nastane iz vrstice A in stolpca B. Pogoj: notranje dimenzije se morajo ujemati. Rezultat je matrika novih dimenzij. To je operacija, ki poganja vsako nevronsko mrežo: vhod (vektor) pomnoži z matriko uteži in dobimo izhod naslednje plasti.
Poglavje 5

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

Interaktivno · Transformacije ravnine
Zasuk
Razteg
Strig
Zrcaljenje
Po meri

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.

det(A) = det [ ab cd ]  = adbc
Interaktivno · Determinanta in površina

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.

Kar zdaj veste: Vsaka kvadratna matrika je transformacija prostora. Zasuk, razteg, strig in zrcaljenje so matrike. Determinanta pove, koliko se površine povečajo (ali zmanjšajo). Kadar je determinanta nič, matrika »uniči« eno dimenzijo — in nima inverza. To je razlog, zakaj so singularne matrike matematično problematične.
Poglavje 6

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.

A · v = λ · v

Beremo: matrika A, ki deluje na lastni vektor v, da le skalar λ (lastna vrednost) krat v. Smer se ne spremeni — le dolžina.

Interaktivno · Lastni vektorji v ravnini

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.

Interaktivno · PCA v 2D

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.

Kar zdaj veste: Lastni vektorji so smeri, ki jih matrika le raztegne — ne zasuka. Lastne vrednosti so faktorji raztega. PCA poišče lastne vektorje kovariančne matrike in jih uporabi za zmanjšanje dimenzij. SVD posploši lastne vrednosti na pravokotne matrike — in je jedro nekaterih najpomembnejših algoritmov umetne inteligence.
Poglavje 7

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.

Primer: Model ima 50.000 besed, vsaka predstavljena z vektorjem dolžine 768. Vložitvena matrika ima 50.000 × 768 = 38,4 milijona parametrov — le za vložitve!
Interaktivno · Vložitve besed v 2D prikazu

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:

MatrikaPomenVloga
W_QPoizvedba (Query)»Kaj iščem?«
W_KKljuč (Key)»Kaj ponujam?«
W_VVrednost (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!

Pozornost(Q, K, V) = softmax(QKT / √dk) · V
Interaktivno · Mehanizem pozornosti

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:

FFN(x) = W₂ · ReLU(W₁ · x + b₁) + b₂

Skupna slika

Celoten jezikovni model GPT-3 (175 milijard parametrov) je v osnovi 96 zaporednih blokov, vsak sestavljen iz:

Arhitektura transformatorja — pregled
Matematična resnica: GPT-4 ima verjetno ~1.800 milijard parametrov. Vsak je eden element neke matrike. Ko model generira besedo, izvede na tisoče matrično-vektorskih množenj — a vse so operacije, ki smo jih spoznali v tem potovanju. Nič drugega.
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.

Zaključna misel: Jezikovni modeli niso mistična umetna inteligenca — so nizi matrično-vektorskih množenj, optimiziranih na ogromnih količinah besedila. Vložitvena matrika besede pretvori v vektorje. Matrike Q, K, V izračunajo pozornost. Feedforward matrike dodajo nelinearnost. In to je vse — v osnovi. Razumeti matrice pomeni razumeti, kako stroji »berejo«.