Veliki jezikovni modeli

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.

Poglavje 1

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.

Zgradba biološkega nevrona Dendriti Soma Mielin Sinapse Smer signala

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.

Interaktivno · Kdaj sproži nevron?

Nastavite jakost signalov. Ko vsota (A + B − C) preseže prag, nevron sproži akciski potencial.

Vsota (A + B − C)
5.0
🔇
Stanje
Tih — pod pragom
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.

Kar zdaj veste:
  • 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.
Poglavje 2

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.

Diagram perceptrona x₁ x₂ x₃ w₁ w₂ w₃ bias b Σ seštej z=Σwᵢxᵢ+b f(z) aktivacija ŷ napoved Vhodi x Uteži w Seštevanje Aktivacija Izhod

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

z = w₁·x₁ + w₂·x₂ + ··· + wₙ·xₙ + b
ŷ = 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.

Interaktivno · Primerjaj aktivacijske funkcije

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.

Omejitev perceptrona

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.

Kar zdaj veste:
  • 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.
Poglavje 3

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.

Večplastna nevronska mreža VHODNA PLAST SKRITA PLAST IZHODNA PLAST x₁ x₂ x₃ h₁ h₂ h₃ h₄ y₁ y₂

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:

h = f(W · x + b)
ŷ = f(W₂ · h + b₂)
Interaktivno · Prednja propagacija korak za korakom

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.

Kar zdaj veste:
  • 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.
Poglavje 4

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:

L = (1/n) · Σ (yᵢ − ŷᵢ)²

Gradientni spust

Funkcija izgube je površina v prostoru uteži. Gradientni spust iterativno išče njen minimum:

w ← w − η · ∂L/∂w

kjer je η stopnja učenja — kako velik korak naredimo v smeri negativnega gradienta.

Interaktivno · Gradientni spust na paraboloidu

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.

Vzvratna propagacija Vhod Skrita 1 Skrita 2 Izhod Prednja → Prednja → Prednja → ← ∂L/∂W₁ ← ∂L/∂W₂ ← ∂L/∂W₃ Prednja propagacija Vzvratna propagacija (gradienti)

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.

Kar zdaj veste:
  • 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ž.
Poglavje 5

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):

Attention(Q, K, V) = softmax( Q·Kᵀ / √dₖ ) · V
Interaktivno · Pozornostne uteži — kliknite žeton

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.

Kar zdaj veste:
  • 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.
Poglavje 6

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.

Interaktivno · Vizualizacija vložitev v 2D prostoru

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:

vložitev("kralj") − vložitev("moški") + vložitev("ženska") ≈ vložitev("kraljica")

Tokenizacija

Preden besede spremenimo v vložitve, jih razdelimo na žetone — pogosto podbesedne enote:

Interaktivno · Tokenizacija besedila

Vpišite besedilo in opazujte, kako ga tokenizator razseče na žetone.

Žetonov: 0

Kar zdaj veste:
  • 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.
Poglavje 7

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

Tri stopnje nastanka VJM 1. Predučenje Naslednji žeton na trilijonih besed 2. Nadzorovan. učenje Pari navodila–odgovor (učitelji pišejo odgovore) 3. RLHF Nagrajevanje dobrih odgovorov (ocenjevalci) Temelji znanja Sledenje navodilom Usklajenost z vrednotami

Predučenje + nadzorovan fine-tuning + RLHF = ChatGPT.

Lestvica modernih VJM

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.

Kar zdaj veste:
  • 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.
Poglavje 8

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

Interaktivno · Mini jezikovni model — živo v brskalniku

Vpišite učno besedilo, naučite model in opazujte, kako generira novo besedilo.

Učno besedilo:

Epohe: 0   Izguba:
Najprej naučite model...
Kaj se je ravnokar zgodilo?

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.

Zaključna misel:
  • 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.