Računalnik, ki razume besede.
Od biološkega nevrona do milijardnega jezikovnega modela.
Kako je mogoče, da stroj iz polprevodnikov in enk razume vprašanje, prepiše kodo ali napiše pesem? Odgovor leži v matematiki, ki sega od bioloških nevronov prek gradienta do pozornostnih matrik.
To spletno mesto vas popelje na potovanje v osmih poglavjih — od naravnih vzorcev v možganih do delujočega Python primera, ki ga zaženete sami. Vsako poglavje stoji samo zase; začnite kjerkoli.
Biološki nevron
Naravni vzor za umetne mreže.
Predznanje: Nič razen radovednosti.
Vaši možgani vsebujejo približno 86 milijard nevronov. Vsak je živa celica, ki sprejema, obdeluje in posreduje električne ter kemične signale. Skupaj sestavljajo najpopolnejšo znano informacijsko napravo — in prav ta narava jih je leta 1943 navdahnila McCullochova in Pittsa pri snovanju prvega računalniškega modela.
Nevron je v osnovi preprost: čaka na dovolj signalov, nato pa sproži lasten signal naprej. Ta sproži ali ne narava je temelj vsega, kar sledi.
Dendriti sprejemajo signale → soma sešteje → akson prenese → sinapse predajo naslednjemu nevronu.
Ključna abstrakcija: seštevaj in sproži
Iz vsega tega biološkega stroja je mogoče izluščiti eno samo jedro: vzemi vse vhode, jim pripiši pomen (utež), jih seštej — in če vsota preseže prag, sproži signal naprej. To je jedro, ki ga je matematika pretvorila v perceptron.
Nastavite jakost signalov. Ko vsota (A + B − C) preseže prag, nevron sproži akciski potencial.
Globlje: Sinaptična plastičnost in Hebbovo pravilo ★
Donald Hebb je leta 1949 zapisal: »Nevron, ki pripomore k proženju drugega, postane z njim tesneje povezan.« Ko dva nevrona prožita skupaj, se sinapsa med njima okrepi. To je biološki mehanizem učenja in spomina.
V matematičnem jeziku nevronskih mrež to ponazorimo s posodabljanjem uteži — vrednosti, ki določajo, koliko vsak vhod prispeva k izhodu. Hebbovo pravilo je prednik sodobnih algoritmov učenja.
- Nevron sprejema signale prek dendritov, jih sešteje v somi in sproži, ko vsota preseže prag.
- Sinapse določajo moč signala — biološka ustreznica matematični uteži.
- McCulloch in Pitts sta leta 1943 dokazala, da je ta mehanizem mogoče opisati z matematiko.
Perceptron
Matematični model enega nevrona.
Predznanje: Osnovna algebra.
Frank Rosenblatt je leta 1957 definiral perceptron — matematični model enega nevrona. Njegova eleganca je v preprostosti: le peščica množenja, seštevanje in ena odločitev.
Perceptron: vhodi xᵢ se množijo z utežmi wᵢ, seštejejo z odmikom b, nato gredo skozi aktivacijsko funkcijo f(z).
Matematična oblika
ŷ = f(z)
Uteži določajo, koliko vsak vhod prispeva k odločitvi. Odmik (bias) je prag, ki ga mreža sama nastavi. Aktivacijska funkcija prinaša nelinearnost.
Aktivacijske funkcije
Brez aktivacijske funkcije bi bila nevronska mreža zgolj linearna transformacija. Aktivacijska funkcija zlomi to omejitev in mrežam da zmožnost učiti se nelinearnih vzorcev.
Stopnična funkcija: vrednost 0 ali 1. Točno posnema biološko proženje, a ni diferencibilna — ne moremo je naučiti z gradientnim spustom.
Perceptron je mogoče naučiti ločevati linearno ločljive razrede. Ne zmore pa naučiti funkcij, ki niso linearno ločljive — na primer XOR. To spoznanje je leta 1969 zamrznilo razvoj nevronskih mrež za desetletje.
Globlje: Univerzalni aproksimacijski izrek ★★
George Cybenko je leta 1989 dokazal: vsaka zvezna funkcija je mogoče aproksimirati z eno samo skrito plastjo nevronske mreže z dovolj nevroni in nelinearno aktivacijsko funkcijo.
Pomen: nevronske mreže so v nekem smislu splošen računski stroj, ki se prilagodi kateremukoli vzorcu. Izrek pa ne pove, kako se teh nevronov naučiti — to je naloga gradientnega spusta.
- Perceptron pomnoži vhode z utežmi, doda odmik in gre skozi aktivacijsko funkcijo.
- Aktivacijska funkcija prinaša nelinearnost, brez katere bi bile mreže neuporabne.
- ReLU (max(0,z)) je danes najpogostejša aktivacijska funkcija v modernih mrežah.
Nevronska mreža
Plasti nevronov, ki skupaj rešijo probleme.
Predznanje: Poglavje 2.
En perceptron reši zgolj linearne probleme. Ko pa povežemo plasti perceptronov — izhodi ene plasti postanejo vhodi naslednje — dobimo stroj, ki se nauči poljubno zapletenih vzorcev.
Polno povezana mreža: vsak nevron ene plasti je povezan z vsakim nevronom naslednje plasti.
Prednja propagacija
Ko pošljemo vhod skozi mrežo, se prednja propagacija odvija plast za plastjo:
ŷ = f(W₂ · h + b₂)
Pritisnite »Naslednji korak« za začetek.
Globlje: Zakaj »globoko«? ★
Beseda »globoko« v globokem učenju se nanaša na število skritih plasti. Vsaka plast se nauči predstavitev na višji ravni abstrakcije. V mreži za prepoznavanje slik: prva plast zazna robove, druga zazna oblike, tretja prepoznava dele predmetov.
Ta hierarhija reprezentacij je tisto, kar dela globoke mreže tako zmogljive — in to je nemogoče z eno samo plastjo.
- Nevronska mreža je sestavljena iz vhodne, ene ali več skritih in izhodne plasti.
- Prednja propagacija: signal potuje plast za plastjo, vsak nevron izračuna svojo aktivacijo.
- Vsaka plast se nauči predstavitev na višji ravni abstrakcije kot prejšnja.
Učenje
Gradientni spust in vzvratna propagacija.
Predznanje: Poglavje 3.
Nevronska mreža se »uči« tako, da prilagaja svoje uteži na podlagi primerov. Cilj je minimizirati razliko med napovedjo (ŷ) in pravilnim odgovorom (y). Ta razlika se meri s funkcijo izgube:
Gradientni spust
Funkcija izgube je površina v prostoru uteži. Gradientni spust iterativno išče njen minimum:
kjer je η stopnja učenja — kako velik korak naredimo v smeri negativnega gradienta.
Izguba: — Korak: 0
Vzvratna propagacija
Da izračunamo gradient za vsako utež, uporabimo vzvratno propagacijo — verižno pravilo odvajanja, ki propagira gradient od izhoda nazaj k vhodom.
Prednja propagacija (zelena) izračuna napoved; vzvratna propagacija (rdeča) razporedi krivdo napake nazaj k utežem.
Globlje: Bledenje gradientov ★★
Pri globokih mrežah se gradient med vzvratno propagacijo skozi sigmoid ali tanh aktivacije manjša — ker je odvod teh funkcij manjši od 1. Ko to pomnožimo čez 20 ali 50 plasti, se gradient izbledi skoraj do nič.
Rešitve: ReLU aktivacija, residualne povezave (shortcuts) in normalizacija plasti. Transformer, ki ga bomo spoznali v naslednjem poglavju, uporablja vse tri.
- Funkcija izgube meri razliko med napovedjo in pravilnim odgovorom.
- Gradientni spust iterativno posodablja uteži v smeri negativnega gradienta.
- Vzvratna propagacija s pomočjo verižnega pravila izračuna gradient za vsako utež.
Transformer
Pozornostni mehanizem, ki je revolutioniral NJO.
Predznanje: Poglavje 4.
Do leta 2017 so naravni jezik obdelovala rekurentna omrežja (RNN). Njihova ključna omejitev: obdelava je bila zaporedna — vsak žeton je moral čakati na prejšnjega. Za dolge stavke so informacije iz začetka pogosto zbledele.
Vaswani in sodelavci so leta 2017 v prelomnem članku »Attention Is All You Need« predlagali transformer — arhitekturo, ki zaporednost popolnoma opusti in zamenja z mehanizmom pozornosti.
Mehanizem pozornosti
Vsak žeton neposredno pogleda na vse ostale in se odloči, kateri so zanj relevantni. Pozornost je formalizirana z matrikami Q (poizvedbe), K (ključi) in V (vrednosti):
Kliknite na žeton, da vidite, koliko pozornosti nameni vsem ostalim. Debelejša linija = večja pozornost.
Izberite žeton (kliknite nanj) za ogled pozornostnih uteži.
Globlje: Pozicijsko kodiranje ★★
Transformer sam po sebi nima pojma o vrstnem redu žetonov. Besedni red pa je v jeziku bistvenega pomena: »Pes ugrizne človeka« in »Človek ugrizne psa« imata iste žetone, a različen pomen.
Rešitev je pozicijsko kodiranje: k vložitvi vsakega žetona prištejemo vektor, ki kodira njegovo mesto v zaporedju. Izvirni transformer je za to uporabil sinusoidne funkcije z različnimi frekvencami.
- Transformer je opustil zaporedno obdelavo in jo nadomestil z mehanizmom pozornosti.
- Pozornost: vsak žeton se neposredno poveže z vsemi ostalimi, uteži kodirajo relevantnost.
- Q, K, V: poizvedba meri podobnost s ključi, rezultat je tehtana vsota vrednosti.
Vložitve besed
Kako spremenimo besede v vektorje.
Predznanje: Poglavje 3.
Nevronska mreža dela s števili. Besede pa so nizi znakov. Vložitev besed (word embedding) vsaki besedi dodeli gost vektor — točko v večdimenzionalnem prostoru — tako da sta si podobni besedi geometrijsko blizu.
Semantično podobne besede so blizu skupaj. Premikajte miško nad točke za ogled besede.
Aritmetika besed
Vložitve razkrijejo presenetljivo lastnost: semantični odnosi ustrezajo geometrijskim vektorjem. Slavni primer Word2Vec:
Tokenizacija
Preden besede spremenimo v vložitve, jih razdelimo na žetone — pogosto podbesedne enote:
Vpišite besedilo in opazujte, kako ga tokenizator razseče na žetone.
Žetonov: 0
- Vložitve so gosti vektorji, ki besedam dodelijo položaj v semantičnem prostoru.
- Geometrijska bližina = semantična podobnost; aritmetika vložitev = analogije.
- Tokenizacija razdeli besedilo na podbesedne enote pred pretvorbo v vložitve.
Veliki jezikovni model
Predučenje, fine-tuning in RLHF.
Predznanje: Poglavja 5–6.
Veliki jezikovni model (VJM) je v svojem jedru transformer z milijardami parametrov, naučen na enem cilju: napovedati naslednji žeton. Da bi to zanesljivo storil v vseh kontekstih, mora razumeti slovnico, dejstva o svetu in logično sklepanje.
Tri stopnje nastanka VJM
Predučenje + nadzorovan fine-tuning + RLHF = ChatGPT.
GPT-4 ima ocenjevanih ~1,8 bilijona parametrov, predučen na ~13 bilijonih žetonov. Učenje je trajalo mesece na tisočih GPE-jih. Vsi parametri so uteži v nevronskih mrežah, ki smo jih spoznali v prejšnjih poglavjih.
Globlje: Zakaj napovedovanje naslednjega žetona privede do »razumevanja«? ★★
Da bi zanesljivo napovedal besedo za »Voda vre pri sto stopinjah ___«, mora model vedeti za fizikalne lastnosti vode. Da bi napovedal nadaljevanje ironičnega stavka, mora prepoznati ironijo. Kompleksnost naloge prisili model k bogatim notranjim reprezentacijam sveta.
Druga razlaga je skeptičnejša: model morda le statistično posnema besedilo. To je odprto vprašanje — a za praktično inženirstvo je ključno, da taki modeli v praksi delujejo izjemno dobro.
- VJM je transformer, naučen napovedovati naslednji žeton na ogromnih korpusih.
- Predučenje da temelj znanja; SFT nauči slediti navodilom; RLHF uskladi z vrednotami.
- Sodobni modeli imajo 10–1800 milijard parametrov — vsi so uteži iz Poglavij 2–5.
Delujoč primer
Mini jezikovni model v Pythonu.
Predznanje: Vsa prejšnja poglavja.
Zgradili bomo bigramski jezikovni model — najpreprostejšo obliko jezikovnega modela, ki se nauči verjetnosti, da po danem žetonu sledi določen naslednji žeton. Koda dela brez posebnih knjižnic — le NumPy.
Korak 1: Tokenizacija na ravni znakov
import numpy as np # Učno besedilo text = "nevronska mreža se uči iz podatkov in generira besedilo" # Slovar: vsak unikaten znak dobi svojo številko chars = sorted(set(text)) vocab_size = len(chars) stoi = {ch: i for i, ch in enumerate(chars)} itos = {i: ch for ch, i in stoi.items()} data = [stoi[ch] for ch in text] print(f"Velikost slovarja: {vocab_size} znakov")
Korak 2: Model in učenje
class BigramModel: def __init__(self, vocab_size): self.W = np.random.randn(vocab_size, vocab_size) * 0.01 def forward(self, x): x_onehot = np.zeros(vocab_size) x_onehot[x] = 1.0 logits = self.W @ x_onehot exp_logits = np.exp(logits - logits.max()) return exp_logits / exp_logits.sum() # softmax def train_step(self, x, y, lr=0.1): probs = self.forward(x) x_onehot = np.zeros(vocab_size); x_onehot[x] = 1.0 grad = np.outer(probs, x_onehot) grad[y] -= x_onehot # verižno pravilo self.W -= lr * grad # gradientni spust model = BigramModel(vocab_size) for epoch in range(500): for i in range(len(data) - 1): model.train_step(data[i], data[i+1], lr=0.05)
Preizkusite v brskalniku
Vpišite učno besedilo, naučite model in opazujte, kako generira novo besedilo.
Učno besedilo:
Model je naučil verjetnostno matriko bigram: za vsak znak ve, kateri znaki po njem najpogosteje sledijo. GPT dela natanko to — le s transformer arhitekturo, milijardami parametrov in kontekstnim oknom tisoče žetonov namesto enega samega.
- Jezikovni model je stroj za napovedovanje naslednjega žetona po verjetnostni porazdelitvi.
- Tokenizacija, prednja propagacija, navzkrižna entropija, gradientni spust — vse ste videli v praksi.
- Pot od tega primera do GPT-4 je dolga, a vsi koraki so sestavljeni iz konceptov tega potovanja.