---
title: "Łańcuchy Markowa: stuletni dowód, który napisał ChatGPT"
date: 2026-05-15
description: "Stuletni dowód matematyczny z 20 000 liter Puszkina, który dziś pozwala każdemu modelowi językowemu przewidzieć następne słowo. Historia, dowód krok po kroku i pomost do LLM."
tags: ["matematyka", "ai", "llm", "prawdopodobieństwo", "deep-dive"]
---

## 🚀 Intro

Zacznijmy od czegoś, co pewnie robisz codziennie i nawet o tym nie myślisz.

Otwierasz Gmaila, zaczynasz pisać "Dziękuję za...", a tekst sam dopisuje "...wiadomość. Odezwę się jak najszybciej." Zatrzymujesz się przy ChatGPT w połowie pytania, a on już generuje sensowną odpowiedź, słowo po słowie. Patrzysz na ekran i widzisz, jak model wybiera kolejny token, potem następny, potem jeszcze jeden - i powstaje z tego coś, co czytasz jak normalny tekst.

Pod tą codzienną magią leży zaskakująco stara matematyka. Nie powstała na potrzeby AI. Nie powstała nawet w XX wieku. Jej fundament położył ponad sto lat temu rosyjski matematyk o złym charakterze, który chciał po prostu dokopać swojemu rywalowi w akademickim sporze. Żeby udowodnić swoją rację, wziął 20 000 liter z poematu Puszkina i zaczął liczyć samogłoski.

To, co wtedy odkrył, nazywamy dziś **łańcuchami Markowa**. I jest to fundament, na którym stoi każdy duży model językowy, każde przewidywanie pogody, każdy ranking Google'a, a nawet pierwsza w historii bomba atomowa.

![Cover: rękopis Eugeniusza Oniegina przechodzący w tokeny LLM, z subtelnym diagramem stanów V i C w tle](/media/markov-cover.png)

W tym wpisie chcę zrobić dwie rzeczy. Po pierwsze, rozwinąć krok po kroku dowód Markowa z Oniegina, tak żebyś wyszedł z lektury z pełnym zrozumieniem, co on właściwie pokazał i dlaczego to było rewolucyjne. Po drugie, przeprowadzić cię od tej XIX-wiecznej intuicji aż do współczesnych modeli językowych i pokazać, że ChatGPT to w istocie bardzo wyrafinowany krewny tej samej maszyny, którą Markow narysował kredą na tablicy.

Nie potrzebujesz żadnej zaawansowanej matematyki. Wystarczy ci podstawowe pojęcie prawdopodobieństwa, ciekawość i gotowość, żeby na chwilę pomyśleć o tekście nie jak o opowieści, ale jak o ciągu zdarzeń.


## 📋 TL;DR

- **Łańcuch Markowa to system, w którym przewidujesz przyszłość patrząc tylko na obecny stan** - cała historia, która do niego doprowadziła, jest nieistotna. Brzmi prymitywnie. W praktyce jest niezwykle potężne.
- **Markow udowodnił to, czego nikt nie chciał słyszeć:** zdarzenia zależne też mogą podlegać prawu wielkich liczb. Zaobserwowanie statystycznej regularności nie dowodzi, że pod spodem leży niezależność (ani, jak twierdził jego rywal, "wolna wola").
- **Dowód przeprowadził na 20 000 liter Eugeniusza Oniegina.** Pokazał, że samogłoski i spółgłoski nie pojawiają się losowo, a mimo to stosunki zbiegają się do stabilnych wartości.
- **Każdy nowoczesny LLM jest w sercu autoregresywnym przewidywaniem następnego tokenu** na podstawie stanu kontekstu. To rozwinięta wersja tej samej idei, tylko zamiast "samogłoska po spółgłosce" mamy "token po tokenie po 100 000 wcześniejszych tokenach".
- **Tym, co odróżnia LLM od klasycznego łańcucha Markowa, jest mechanizm uwagi (attention).** Pozwala mu zaglądać daleko wstecz w kontekst, zamiast patrzeć tylko na ostatni stan. Ale fundament probabilistyczny jest ten sam.
- **Łańcuchy Markowa zmieniły bieg historii już wcześniej:** stoją za metodą Monte Carlo (Projekt Manhattan), za algorytmem PageRank (Google), za matematyką tasowania kart. LLM to po prostu najnowsza odsłona tej samej idei.


## 🇷🇺 Spór, który zaczął wszystko

Najpierw musimy się cofnąć do Rosji z początków XX wieku, bo to ważne dla zrozumienia, dlaczego Markow w ogóle zabrał się za poemat Puszkina.

W 1905 roku po imperium przechodziły fale socjalistycznych protestów. Carat trzeszczał, społeczeństwo podzieliło się na dwa obozy, a podział ten przenikał wszędzie - również do akademii. Nawet matematycy zaczęli opowiadać się po którejś ze stron.

Po stronie cara stał **Paweł Aleksiejewicz Niekrasow** (1853-1924), rektor Imperatorskiego Uniwersytetu Moskiewskiego. Człowiek głęboko religijny, wpływowy, z mocnym aparatem instytucjonalnym za sobą. W anglojęzycznej historiografii bywa nazywany "carem prawdopodobieństwa" (*Tsar of Probability*) - polskie tłumaczenie tego określenia nie jest utrwalone, ale dobrze oddaje jego pozycję w ówczesnym świecie matematycznym. Niekrasow miał ambicję, która brzmi dziś osobliwie, ale wtedy traktowano ją całkiem serio: chciał za pomocą matematyki udowodnić istnienie wolnej woli.

Po stronie socjalistów stał **Andriej Markow**, znany w środowisku jako "Andriej Wściekły". Ateista, kłótliwy, z paskudnym charakterem i niskim progiem tolerancji na intelektualną nierzetelność. Markow uważał Niekrasowa za szarlatana, który nadużywa matematyki do uprawiania ideologii. I tu nie chodziło o subtelne różnice zdań. Markow publicznie nazywał prace Niekrasowa "nadużyciami matematyki".

![Pawieł Niekrasow i Andriej Markow - portrety dwóch rywali matematycznego sporu, w stylu XIX-wiecznej fotografii sepia](/media/markov-nekrasov-portraits.png)

Spór dotyczył jednej, konkretnej kwestii, która rządziła rachunkiem prawdopodobieństwa od dwustu lat. Żeby zrozumieć, o co poszło, trzeba najpierw wytłumaczyć tę kwestię.



## 🎲 Prawo wielkich liczb i jego ukryte założenie

Wyobraź sobie, że rzucasz monetą. Pierwszych dziesięć rzutów daje ci sześć orłów i cztery reszki. Trzydzieści daje ci szesnaście do czternastu. Sto rzutów daje pięćdziesiąt jeden do czterdziestu dziewięciu. Z każdym kolejnym rzutem stosunek zbliża się do upragnionego pół na pół, choć nigdy w niego dokładnie nie trafia.

To zjawisko nazywamy **prawem wielkich liczb**. Im więcej niezależnych prób, tym średnia wyniku jest bliżej wartości oczekiwanej. Pierwszy formalny dowód podał Jakub Bernoulli w 1713 roku i przez kolejne dwieście lat była to absolutna podstawa rachunku prawdopodobieństwa.

![Wykres zbieżności prawa wielkich liczb: udział orłów po kolejnych rzutach monetą stabilizuje się przy 1/2](/media/markov-law-large-numbers.png)

Bernoulli udowodnił jednak jedną kluczową rzecz: to prawo działa **tylko wtedy, gdy zdarzenia są niezależne**. Rzut monetą jest niezależny - to, co wypadło wcześniej, nie wpływa na to, co wypadnie teraz. Pomyśl o przykładzie z aukcją na ślepo. Jeśli prosisz sto osób, żeby niezależnie wyceniły jakiś przedmiot, ich średnia będzie się zbiegać do prawdziwej wartości. Ale jeśli kazałbyś im wykrzykiwać wyceny po kolei, gdzie każdy słyszy poprzedniego, średnia by się nie zbiegła do prawdziwej wartości - tylko do okolic tej pierwszej, wykrzyczanej liczby. Bo wyceny przestały być niezależne.

Przez dwieście lat ta zasada była niepodważalna. Niezależność jest warunkiem koniecznym prawa wielkich liczb. Koniec, kropka.

I tu Niekrasow zrobił krok, który Markowa wyprowadził z równowagi.

Niekrasow popatrzył na **statystyki społeczne** zebrane wcześniej przez belgijskiego astronoma i statystyka **Adolphe'a Queteleta**: liczbę małżeństw w Belgii z lat 1841-1845, wskaźniki przestępczości, dane demograficzne. Quetelet już w 1847 roku pokazał, że te dane wykazują uderzającą regularność - z roku na rok wartości zbiegają się do stabilnych średnich. Niekrasow podchwycił tę obserwację i poprowadził ją krok dalej. Skoro się zbiegają, rozumował, to znaczy, że podlegają prawu wielkich liczb. A skoro podlegają prawu wielkich liczb, to znaczy, że zdarzenia, z których wynikają, są niezależne. A te zdarzenia to ludzkie decyzje: decyzja o ślubie, decyzja o popełnieniu przestępstwa, decyzja o dziecku. Jeśli te decyzje są od siebie niezależne, to są aktami wolnej woli.

Innymi słowy: Niekrasow uznał, że za pomocą tabelek statystycznych właśnie udowodnił, że ludzie mają wolną wolę, którą można zmierzyć. To była dla niego matematyczna podpora konserwatywnego, religijnego światopoglądu.

Dla Markowa było to absurdem nie do zniesienia. Nie dlatego, że zaprzeczał istnieniu wolnej woli - po prostu uważał, że matematyka nie ma nic do powiedzenia w tej sprawie. A już na pewno nie tak, jak chciał Niekrasow. I postanowił to udowodnić w jedyny sposób, jaki rozumiał: pokazując kontrprzykład.

Markow chciał skonstruować ciąg zdarzeń, który byłby **wyraźnie zależny** - jedno wynika z drugiego - a mimo to **zbiegałby się do stabilnej średniej**, czyli podlegał prawu wielkich liczb. Gdyby się to udało, cała argumentacja Niekrasowa rozsypałaby się jak domek z kart. Z faktu, że coś się zbiega, nie wynikałoby już nic o niezależności.

Potrzebował tylko dobrego materiału do tego eksperymentu. I tu pojawia się Eugeniusz Oniegin.


## 📖 Onegin pod lupą: dowód krok po kroku

Wybór nie był przypadkowy. Markow potrzebował długiego tekstu w języku, którym mówił, ze strukturą wystarczająco bogatą, żeby można było wyciągnąć z niej rzetelne statystyki. *Eugeniusz Oniegin* Aleksandra Puszkina był wtedy w Rosji tym, czym dla nas jest *Pan Tadeusz*: kanonicznym, znanym powszechnie poematem, dostępnym w każdej bibliotece.

W 1913 roku Markow opublikował pracę zatytułowaną *"An Example of Statistical Investigation of the Text Eugene Onegin Concerning the Connection of Samples in Chains"* w biuletynie Cesarskiej Akademii Nauk w Sankt Petersburgu. Praca zajęła zaledwie dziesięć stron. Konsekwencje miały okazać się znacznie większe.

Markow potrzebował zatem dwóch rzeczy. Po pierwsze, pokazać, że litery w Onieginie **nie są niezależne** (są zależne). Po drugie, pokazać, że mimo to średnie statystyki tych liter **zbiegają się do stabilnych wartości** (podlegają prawu wielkich liczb). Razem - dowód, że Niekrasow się myli.

Zobaczmy, jak to zrobił.


### Krok 1: 20 000 liter i jeden ciąg

Markow wziął pierwsze 20 000 liter Eugeniusza Oniegina. Usunął wszystkie spacje, przecinki, kropki, znaki zapytania - wszystko, co nie jest literą. Połączył to w jeden długi, nieprzerwany ciąg znaków.

Następnie zrobił coś bardzo prostego: podzielił litery na dwie kategorie. **Samogłoski** (V od ang. *vowel*) i **spółgłoski** (C od *consonant*). Pominięcie subtelnych klasyfikacji rosyjskiej fonetyki było świadomym uproszczeniem. Markow chciał najmniejszego możliwego alfabetu - dwóch symboli.

Policzył:

- **Samogłosek: 8 638** (43,2%)
- **Spółgłosek: 11 362** (56,8%)

Same te proporcje nic nam jeszcze nie mówią - są tylko punktem wyjścia. Zauważ jednak, że już tu działa coś jak prawo wielkich liczb. Gdyby ktoś wziął inne 20 000 liter z Oniegina (kolejne dwadzieścia tysięcy), proporcje wyszłyby bardzo podobne. To znaczy, że tekst jest "stabilny statystycznie". Niekrasow w tym miejscu zacierałby ręce: zbieżność jest, więc znaczy, że...

Spokojnie. Ciąg dalszy.


### Krok 2: Hipoteza zerowa - litery są niezależne

Markow postawił teraz dokładnie to pytanie, którego Niekrasow nie chciał zadać: **co by było, gdyby litery były niezależne?**

To jest klasyczny manewr w statystyce. Bierzesz hipotezę przeciwnika ("zdarzenia są niezależne") i sprawdzasz, do czego ona prowadzi. Jeśli przewidywania hipotezy rozjadą się z rzeczywistością, masz dowód.

W ciągu 20 000 liter mamy 19 999 par sąsiadujących liter. Każda taka para należy do jednej z czterech kategorii:

- **VV** - samogłoska po samogłosce
- **VC** - samogłoska, potem spółgłoska
- **CV** - spółgłoska, potem samogłoska
- **CC** - spółgłoska po spółgłosce

Jeśli założymy, że każda litera jest losowo wybierana **niezależnie** od poprzedniej, to prawdopodobieństwo każdej z tych par liczy się trywialnie. Prawdopodobieństwo, że obie litery są samogłoskami, to po prostu prawdopodobieństwo samogłoski razy prawdopodobieństwo samogłoski:

```
P(VV przy niezależności) = 0,432 × 0,432 = 0,187 ≈ 18,7%
```

I tak dalej dla pozostałych:

| Para | Wzór przy niezależności | Oczekiwane prawdopodobieństwo |
|------|------------------------|-------------------------------|
| VV | 0,432 × 0,432 | ~18,7% |
| VC | 0,432 × 0,568 | ~24,5% |
| CV | 0,568 × 0,432 | ~24,5% |
| CC | 0,568 × 0,568 | ~32,3% |

![Drzewko prawdopodobieństwa par liter VV, VC, CV, CC przy założeniu niezależności](/media/markov-probability-tree.png)

Suma, jak należy, daje 100%. To są nasze przewidywania **przy założeniu niezależności**. Teraz wystarczy porównać je z rzeczywistością.


### Krok 3: Co naprawdę pokazują dane

Markow zrobił coś żmudnego, ale prostego. Przeszedł przez cały tekst i zliczył, ile faktycznie jest każdego typu par.

Rezultat był uderzający:

| Para | Oczekiwane (niezależność) | Rzeczywiste w Onieginie | Różnica |
|------|--------------------------|------------------------|---------|
| VV | ~18,7% | ~5,5% (1 104 par) | **ponad trzy razy mniej** |
| VC | ~24,5% | ~37,7% | znacznie więcej |
| CV | ~24,5% | ~37,6% | znacznie więcej |
| CC | ~32,3% | ~19,1% (3 827 par) | wyraźnie mniej |

![Tabela porównawcza: oczekiwane prawdopodobieństwa par liter przy niezależności vs rzeczywiste wartości zliczone w Onieginie](/media/markov-expected-vs-actual.png)

Zatrzymaj się tu na chwilę i pomyśl, co to znaczy.

Gdyby litery w Onieginie były niezależne, pary samogłoska po samogłosce powinny stanowić około 18,7% wszystkich par. A jest ich tylko 5,5%. Ponad trzy razy mniej, niż przewidywałby model losowy. Tymczasem pary mieszane (VC i CV) są o połowę częstsze niż powinny.

Wniosek jest jednoznaczny: **w języku rosyjskim po samogłosce znacznie częściej pojawia się spółgłoska niż kolejna samogłoska**. Litery nie są niezależne - poprzednia litera wpływa na to, jaka pojawi się następna. To zresztą wcale nie jest fizyka kwantowa. Pomyśl po polsku: po "a" znacznie chętniej pojawia się "k", "n", "t" niż "e" czy "i". Język po prostu ma fonetyczne preferencje, a te preferencje tworzą zależność.

Pierwsza część dowodu Markowa była gotowa: **litery są zależne**. Mocno zależne.

Niekrasow mógłby tu kontrargumentować: "No dobrze, ale ja mówiłem o statystykach społecznych, a nie o literach". Tylko że Markowa to nie interesowało. Chciał pokazać coś ogólniejszego: że samo zaobserwowanie zbieżności statystyk **nie pozwala wnioskować nic** o niezależności zdarzeń, które za nimi stoją. I do tego potrzebował drugiej części dowodu.


### Krok 4: Z liczb do prawdopodobieństw przejść

Tu się zaczyna sedno łańcuchów Markowa.

Markow zauważył, że z tych samych danych można wyliczyć inną, znacznie bardziej użyteczną wielkość: **prawdopodobieństwo warunkowe**. Pytanie nie brzmi już "jakie jest prawdopodobieństwo, że dwie kolejne litery to samogłoski?", tylko: "**jeśli już jestem przy samogłosce, jakie jest prawdopodobieństwo, że następna też będzie samogłoską?**"

To jest fundamentalna zmiana perspektywy. Z patrzenia na cały ciąg jako jedną statystykę przechodzimy do patrzenia na **przejścia** - z jednego stanu w następny.

Obliczenie jest proste. Wiemy, że:

- Prawdopodobieństwo, że losowa litera jest samogłoską: **P(V) = 0,432**
- Prawdopodobieństwo, że dwie sąsiednie litery to VV: **P(VV) = 0,055**

Z definicji prawdopodobieństwa warunkowego:

```
P(następna V | bieżąca V) = P(VV) / P(V) = 0,055 / 0,432 ≈ 0,128
```

Czyli: **jeśli jesteś przy samogłosce, jest tylko 12,8% szans, że następna litera też będzie samogłoską**. A skoro prawdopodobieństwa muszą się sumować do jedności, to:

```
P(następna C | bieżąca V) = 1 − 0,128 = 0,872
```

Czyli **87,2% szans, że po samogłosce pojawi się spółgłoska**.

Powtarzamy to samo dla spółgłosek. Wiemy, że:

- P(C) = 0,568
- P(CC) ≈ 0,191 (z rzeczywistych zliczeń)

```
P(następna C | bieżąca C) = 0,191 / 0,568 ≈ 0,337
```

Czyli **33,7% szans, że po spółgłosce pojawi się kolejna spółgłoska**, a 66,3% szans, że będzie to samogłoska.

Mamy zatem cztery liczby, które razem definiują dynamikę całego systemu (są to oryginalne liczby z pracy Markowa, podane wówczas z dokładnością do trzech miejsc po przecinku):

| Z / Do | Samogłoska (V) | Spółgłoska (C) |
|--------|---------------|----------------|
| **Samogłoska (V)** | 12,8% | 87,2% |
| **Spółgłoska (C)** | 66,3% | 33,7% |

![Diagram łańcucha Markowa: dwa stany V (samogłoska) i C (spółgłoska) z czterema strzałkami prawdopodobieństw przejść: 12,8% / 87,2% / 66,3% / 33,7%](/media/markov-vc-transition-diagram.png)

To jest **macierz przejść łańcucha Markowa**. Cztery liczby, które zawierają w sobie całą znaną nam informację o dynamice tekstu. Nie potrzebujemy już Oniegina. Nie potrzebujemy nawet pamięci o tym, jakie były wcześniejsze litery. Wystarczy nam **stan obecny** (czy jesteśmy przy V, czy C) i ta macierz, żeby wygenerować ciąg, który statystycznie zachowuje się jak oryginał.


### Sprawdź na polskim zdaniu

Zatrzymaj się i spróbuj sam. Weź dowolne polskie zdanie i policz:

> "Matematyka jest piękna i potężna jednocześnie."

Usuwam spacje i znaki: `matematykajestpięknaipotężnajednocześnie`.

Licz samogłoski (a, e, i, o, u, y, ą, ę): m**a**t**e**m**a**t**y**k**a**j**e**stp**i**ękn**a****i**p**o**t**ę**żn**a**j**e**dn**o**cz**e**śn**i**e. To 18 samogłosek na 39 znaków, czyli około 46%. Bardzo blisko Markowowskich 43% z rosyjskiego.

Teraz pary VV. Idź przez tekst i znajdź miejsca, gdzie dwie samogłoski stoją obok siebie. W tym zdaniu są raptem dwie takie pary (w "ai" i "ie" oraz "ie"). Z 38 par to mniej niż 8%. Również blisko Markowowskich 6%.

To nie jest zbieg okoliczności. To strukturalna cecha języków słowiańskich i wielu innych: po samogłosce silnie preferuje się spółgłoskę. Po spółgłosce - znacznie chętniej samogłoska. Jeśli wpadasz w pułapkę dwóch samogłosek z rzędu, to zwykle dlatego, że robisz to świadomie (jak w wyrazach "kakao" czy "duet"), nie przypadkowo.

Możesz przeprowadzić cały dowód Markowa na dowolnie wybranym fragmencie polskiej książki. Liczby wyjdą inne (polski ma trochę inne proporcje niż rosyjski), ale wniosek jakościowy będzie identyczny. **Litery są zależne, a mimo to ich statystyki zbiegają się.**


## ⚙️ Maszyna przewidująca: anatomia łańcucha Markowa

Mając macierz przejść, Markow zrobił coś jeszcze. Pokazał, że można za jej pomocą **wygenerować** nowy tekst, który statystycznie zachowuje się jak Oniegin.

Procedura jest banalna:

1. Zacznij od dowolnego stanu (powiedzmy V).
2. Wylosuj liczbę z przedziału [0, 1).
3. Jeśli jesteś przy V: gdy wylosowana liczba jest mniejsza od 0,128, następny stan to V. W przeciwnym razie C.
4. Jeśli jesteś przy C: gdy wylosowana liczba jest mniejsza od 0,337, następny stan to C. W przeciwnym razie V.
5. Wróć do punktu 2.

Generujesz w ten sposób tysiąc liter, dziesięć tysięcy, milion. Co zauważysz?

Po pierwsze, **proporcje samogłosek do spółgłosek zbiegają się do 43,2%/56,8%**. Dokładnie tych proporcji, które Markow zaobserwował w oryginale. Zaczynasz od V i pierwsze sto liter może mieć wynik gdziekolwiek, ale po dziesięciu tysiącach kroków proporcja jest niemal niemożliwa do odróżnienia od oryginału.

Po drugie, **proporcje par VV, VC, CV, CC też się odtwarzają**. Bo zostały zakodowane w macierzy przejść.

Po trzecie - i to jest pointa - **kolejne litery są wyraźnie zależne**. Wartość każdej litery zależy od poprzedniej (decyzja "co teraz" jest podejmowana na podstawie aktualnego stanu). A jednak zagregowane statystyki zbiegają się tak, jakby spełniały prawo wielkich liczb.

Markow zbudował dosłowny **łańcuch zdarzeń** (stąd nazwa "łańcuch Markowa"), w którym każdy ślad zależy od poprzedniego, i pokazał, że zbieżność statystyk istnieje również tutaj. Niezależność nie jest konieczna do działania prawa wielkich liczb.

Dlaczego nazywamy ten system "bezpamięciowym"? Bo żeby przewidzieć następny krok, **nie musisz pamiętać niczego poza obecnym stanem**. Czy doszliśmy do V przez długą sekwencję CVCV, czy przez VCCC, czy ten V jest pierwszą literą w całym łańcuchu - to wszystko nieistotne. Ważne jest tylko to, że teraz jesteśmy przy V. Cała historia, która do tego doprowadziła, znikła w punkcie obecnym.

To jest **własność Markowa**. I to ona sprawia, że łańcuchy Markowa są tak potężne. Pozwala wziąć bardzo skomplikowane systemy (gdzie historia jest długa) i zredukować je do "co dzieje się teraz, jakie są możliwe ruchy stąd". Świat ma skomplikowaną historię. Decyzje, które masz teraz, zależą tylko od stanu teraz. To brzmi jak uproszczenie. W praktyce jest niezwykle dobrym przybliżeniem szokująco wielu zjawisk.


## 🧠 Co Markow właściwie udowodnił

Markow opublikował wyniki swojej pracy i zakończył ją w duchu zwięzłego ataku na Niekrasowa - sens tego ataku popularnie streszcza się dziś jako: **wolna wola nie jest konieczna do uprawiania rachunku prawdopodobieństwa**. (Ta sformułowana wprost teza jest parafrazą jego tezy, a nie dosłownym cytatem z pracy z 1913 roku - oddaje jednak dokładnie to, co Markow właśnie udowodnił).

Co właściwie udowodnił, jeśli zostawimy na boku spór z Niekrasowem?

Po pierwsze, że **prawo wielkich liczb działa również dla zdarzeń zależnych**. To było czysto matematyczne osiągnięcie, które poszerzyło dziedzinę rachunku prawdopodobieństwa o całą klasę problemów wcześniej uważanych za poza zasięgiem.

Po drugie, że **istnieje narzędzie do modelowania zdarzeń zależnych** - łańcuch Markowa. Wcześniej, jeśli zdarzenia były zależne, statystycy umieli powiedzieć niewiele. Po Markowie pojawiło się formalne podejście: zdefiniuj stany, oszacuj prawdopodobieństwa przejść, analizuj zachowanie systemu w czasie.

Po trzecie - i to jest najgłębsze - że **zaobserwowanie statystycznej regularności w danych nie pozwala wnioskować o ich naturze**. Niekrasow popełnił błąd, który dziś nazwalibyśmy "odwrotnym wnioskowaniem": z faktu, że coś podlega prawu wielkich liczb, wyprowadzał wniosek o niezależności. Markow pokazał, że to nieprawda. Statystyki społeczne mogą zbiegać się do stabilnych wartości nawet wtedy, gdy decyzje za nimi stojące są od siebie zależne. Nie ma żadnego matematycznego argumentu za wolną wolą wynikającego z tego, że co roku Belgów żeni się mniej więcej tyle samo.

Markowa samego nie obchodziło, że jego praca może mieć zastosowania. W korespondencji z innym wybitnym statystykiem epoki, Aleksandrem Czuprowem, pisał wprost: *"Zajmuję się wyłącznie kwestiami czystej analizy. Do pytania o zastosowanie teorii prawdopodobieństwa odnoszę się z obojętnością"*.

Świat zbierze to później.


## 🤖 Od liter do tokenów: jak LLM jest (i nie jest) łańcuchem Markowa

Teraz przeskakujemy o sto lat do przodu, do twojej rozmowy z ChatGPT, Claude'em albo Gemini.

Kiedy zadajesz modelowi językowemu pytanie, on nie generuje całej odpowiedzi naraz. Generuje ją **token po tokenie**. Token to fragment tekstu - czasem cała pojedyncza litera, czasem sylaba, czasem całe słowo, czasem znak interpunkcyjny. Słowo "Mat-ema-tyka" może zostać podzielone na trzy tokeny, słowo "kot" na jeden. Zbiór wszystkich tokenów w słowniku modelu to tak zwany **tokenizer**.

![Tokenizer: zdanie "Łańcuchy Markowa są fundamentem ChatGPT" rozłożone na 12 tokenów](/media/markov-tokenizer.png)

Współczesne LLM-y używają różnych algorytmów tokenizacji - **BPE (Byte Pair Encoding)** w przypadku OpenAI i Anthropic, **SentencePiece Unigram** w przypadku Google. Rozmiary słowników są bardzo różne. GPT-4 ma około 100 000 tokenów, GPT-4o oraz świeższy GPT-5.5 (kwiecień 2026) około 200 000. Anthropic oficjalnie nie ujawnia liczby tokenów dla Claude'a, dla starszych wersji szacowano około 65 000; w Claude Opus 4.7 (kwiecień 2026) tokenizer został przeprojektowany na wyraźnie bardziej ziarnisty. Najdalej w rozbudowie słownika poszedł Google: Gemini 3.1 (maj 2026) operuje na **262 144 tokenach** (czyli dokładnie 2¹⁸).

Dla porównania - cały alfabet Markowa miał dwa stany: V i C. Współczesny tokenizer Gemini 3.1 ma ich ponad **sto trzydzieści tysięcy** razy więcej.

Mechanika generowania odpowiedzi jest, w swojej najprostszej postaci, dokładnie taka sama jak w łańcuchu Markowa z Oniegina. Model patrzy na to, co już zostało wygenerowane (i na twoje pytanie, które stanowi część kontekstu), i oblicza **rozkład prawdopodobieństwa** nad wszystkimi możliwymi następnymi tokenami. Potem **losuje** kolejny token zgodnie z tym rozkładem. Potem dokleja ten token do kontekstu i powtarza wszystko od początku.

To dokładnie ta sama struktura, co maszyna Markowa:
1. Sprawdź obecny stan (kontekst).
2. Wylicz prawdopodobieństwa przejść (rozkład nad tokenami).
3. Wylosuj następny stan (token) zgodnie z rozkładem.
4. Zaktualizuj stan.
5. Wróć do kroku 1.

Różnica polega na tym, że w klasycznym łańcuchu Markowa stany są proste (np. V albo C, albo "samogłoska a", "samogłoska e" w bardziej rozbudowanym modelu). W LLM "stanem" jest cały dotychczasowy ciąg tokenów - całe twoje pytanie plus to, co model już wygenerował, plus systemowy prompt, plus ewentualnie kontekst sesji. W modelu Claude'a Opus 4.7 ten kontekst może mieć **milion tokenów**.

![Pętla generatywna LLM: kontekst tokenów, model jako transformer, rozkład prawdopodobieństwa nad kolejnym tokenem](/media/markov-llm-loop.png)

### Sterowanie losowaniem: temperatura, top-p, top-k

Krok "wylosuj token" warto rozbić na czynniki, bo właśnie tu współczesny LLM daje nam kontrolę nad swoim zachowaniem. Model nie tyle "losuje na ślepo z rozkładu", co raczej daje ci kilka parametrów, którymi możesz ten rozkład przed pobraniem próbki przekształcić. Trzy parametry, które prawie zawsze widzisz w API:

**Temperatura (T)** to liczba, przez którą dzielisz logity (surowe wagi modelu) zanim policzysz z nich prawdopodobieństwa softmaxem. Niska temperatura (np. 0,2) wyostrza rozkład - tokeny najbardziej prawdopodobne stają się jeszcze bardziej dominujące, a model "ostrożny" i powtarzalny. Wysoka temperatura (np. 1,5) spłaszcza rozkład - daje większą szansę tokenom mniej prawdopodobnym, model wygląda "kreatywnie", ale traci na spójności. Temperatura 0 oznacza **greedy decoding** - zawsze wybieraj token o najwyższym prawdopodobieństwie, deterministycznie. Domyślne wartości w API: 1.0 zarówno u OpenAI, Anthropic, jak i Google. Modele "rozumujące" (jak OpenAI o1/o3) mają temperaturę zablokowaną na 1.

**Top-p (nucleus sampling)** to adaptacyjny filtr zaproponowany przez Holtzmana i innych w 2019 roku w paperze *"The Curious Case of Neural Text Degeneration"*. Sortujesz tokeny malejąco po prawdopodobieństwie i bierzesz tylko te z czoła listy, których skumulowana suma osiąga zadane p (typowo 0,9-0,95). Gdy model jest pewny - rozważasz może 1-2 tokeny; gdy niepewny - dziesiątki. Rozmiar zbioru dopasowuje się do sytuacji. Stąd nazwa "nucleus" - jądro rozkładu.

**Top-k** to twardszy, prostszy filtr: zostaw k najbardziej prawdopodobnych tokenów, resztę odetnij. W przeciwieństwie do top-p, rozmiar zbioru jest stały niezależnie od pewności modelu. Typowe wartości to 40-50. OpenAI nie udostępnia tego parametru w API; Anthropic i Google tak, ale zalecają używanie go tylko w zaawansowanych przypadkach.

W praktyce te parametry działają w kombinacji: najpierw temperatura przekształca logity, potem top-k i top-p filtrują dystrybucję, a na końcu z tej przefiltrowanej dystrybucji model losuje token. Dokładna kolejność operacji bywa różna między implementacjami (Gemini stosuje top-k → top-p → temperatura, llama.cpp daje temperaturę na samym końcu) - co potrafi być pułapką, gdy ten sam prompt daje różne wyniki w różnych bibliotekach.

To wszystko są jednak tylko warianty kroku "wylosuj" z pętli markowowskiej. Surowy model dalej zwraca rozkład prawdopodobieństwa nad tokenami; parametry samplingu tylko **modyfikują** ten rozkład przed pobraniem próbki. Fundament markowowski pozostaje nietknięty.

![Cztery histogramy: surowy rozkład, po temperaturze 0,2 (wyostrzony), po temperaturze 1,5 (spłaszczony), po top-p 0,9 (jądro)](/media/markov-sampling-histograms.png)

Zauważ jeszcze jedną rzecz. Claude Shannon - twórca teorii informacji, kolejny intelektualny dziedzic Markowa - już w latach 40. zaczął zadawać proste pytanie: a co, jeśli zamiast patrzeć tylko na ostatnią literę, patrzymy na dwie ostatnie? Albo trzy? Albo dziesięć?

To są tak zwane **n-gramy**. Bigram (2-gram) to prawdopodobieństwo następnej litery na podstawie poprzedniej. Trigram (3-gram) - na podstawie dwóch poprzednich. I tak dalej. Shannon w swojej legendarnej pracy *"A Mathematical Theory of Communication"* (Bell System Technical Journal, 1948) pokazał stopniowy postęp aproksymacji:

- **Zero-order** (każda litera jednakowo prawdopodobna): *"XFOML RXKHRJFF JUS ZLPWCFWKCYJ..."*
- **First-order** (poprawne częstotliwości liter, niezależne): *"OCRO HLI RGWR NMIELWIS EU LL NBNESEBYA..."*
- **Second-order word** (poprawne prawdopodobieństwa przejść między słowami): *"THE HEAD AND IN FRONTAL ATTACK ON AN ENGLISH WRITER THAT THE CHARACTER OF THIS POINT IS THEREFORE ANOTHER METHOD FOR THE LETTERS..."*

Z każdym kolejnym poziomem aproksymacji teksty wyglądają coraz bardziej jak angielski.

Czy to przypomina ci coś znanego? Tak. Modele językowe to wnuki Shannonowskich n-gramów. Te z lat 90. (przed deep learningiem) były dosłownie ich rozszerzeniami. Te dzisiejsze są subtelniejsze i potrafią więcej, ale fundamentalna struktura - przewiduj następny element na podstawie kontekstu - została ta sama.

Bardziej formalnie: **autoregresywny LLM to łańcuch Markowa, w którym stanem jest cały dotychczasowy ciąg tokenów w oknie kontekstowym**. Klasyczny łańcuch Markowa pierwszego rzędu patrzy tylko na ostatni stan. LLM patrzy na wszystkie stany w oknie kontekstowym. To go czyni łańcuchem **wysokiego rzędu**, ale duch pozostaje markowowski: aktualny stan (kontekst) to wszystko, co potrzebujesz, żeby przewidzieć następny krok.

To nie jest luźna analogia. W październiku 2024 ukazała się formalna praca naukowa *"Large Language Models as Markov Chains"* (Zekri et al.), która dowodzi, że autoregresywny LLM ze słownikiem T tokenów i oknem kontekstu K można reprezentować jako skończony łańcuch Markowa na przestrzeni stanów rozmiaru O(T^K). Praktyczne zastrzeżenie: dla typowego modelu pokroju GPT-3 ta przestrzeń stanów ma rząd 10⁹⁶³² elementów - matematycznie poprawna, ale niewykonalna do bezpośrednich obliczeń. Charakteryzacja jest jednak teoretycznie ścisła i dostarcza narzędzi do analizowania zbieżności, stanu stacjonarnego i kilku innych własności LLM, dotąd opisywanych raczej intuicyjnie.


## 👀 Gdzie LLM przerasta Markowa: mechanizm uwagi

Jest jednak coś, co odróżnia LLM od klasycznego łańcucha Markowa, nawet bardzo wysokiego rzędu. To **mechanizm uwagi** (attention).

Wyobraź sobie, że masz przed sobą zdanie: *"Bob wczoraj kupił rower. Jest teraz w garażu i czeka aż go zacznie używać."*

Co to znaczy "jest teraz w garażu"? Kto - Bob czy rower? Naiwny model markowowski patrzący tylko na sąsiednie słowa może mieć kłopot. Mechanizm uwagi pozwala modelowi **zerknąć daleko wstecz w kontekst** i sprawdzić, że odpowiednikiem "jest" jest "rower" (bo to on jest w garażu, nie Bob), a "go zacznie używać" odnosi się do roweru z drugiej strony, ale na podstawie informacji z początku zdania.

Mechanika attention jest sprytna. Dla każdego tokenu w kontekście model wylicza, **jak bardzo ten token jest istotny dla przewidzenia następnego**. Słowa nieistotne dostają niską wagę i są praktycznie ignorowane. Słowa kluczowe dostają wysoką wagę i mocno wpływają na rozkład prawdopodobieństwa.

![Mechanizm uwagi w transformerze: wagi attention między tokenem bieżącym a tokenami w kontekście zdania](/media/markov-attention-mechanism.png)

To jest fundamentalna różnica wobec klasycznego łańcucha Markowa. Klasyczny model patrzy na N ostatnich stanów z **równą wagą** - albo wcale (jeśli rząd Markowa to 1), albo wszystkie tak samo. Attention pozwala wybiórczo skupić się na tych fragmentach kontekstu, które są aktualnie istotne. Dla różnych przewidywań różne fragmenty kontekstu są ważne. Markow tego nie miał. Markow patrzył tylko na obecny stan, koniec.

Mechanizm uwagi w wersji, którą znamy dziś, ogłosił słynny już paper *"Attention Is All You Need"* Vaswaniego i siedmiu innych badaczy z Google (NeurIPS 2017, arXiv:1706.03762). To na nim opiera się architektura **transformera** - rdzeń każdego dużego modelu językowego od GPT-2 wzwyż.

Ale - i to jest pointa, dla której to wszystko piszę - **fundament probabilistyczny jest dokładnie ten sam**. Model wciąż przewiduje **rozkład prawdopodobieństwa** nad tokenami. Wciąż **losuje** kolejny token. Wciąż **iteruje** w czasie, generując token po tokenie. Pierwsze co model robi to: oblicz P(następny token | kontekst). I to jest dokładnie ta sama formuła, co u Markowa, tylko po lewej stronie warunkowania siedzi ogromny kontekst zamiast pojedynczego stanu, a po prawej rozkład jest tworzony przez sieć neuronową zamiast zliczonej macierzy.

Można powiedzieć, że transformer to **Markow na sterydach**. Stan jest gigantyczny, prawdopodobieństwa przejść są wyliczane przez setki miliardów parametrów, mechanizm uwagi wybiera, co z tego stanu jest istotne. Ale szkielet, na którym to wszystko stoi, to ten sam szkielet z Oniegina.

Dlaczego to ma znaczenie? Bo gdy pojawia się dyskusja "czy LLM rozumuje", "czy myśli", "czy ma świadomość" - łatwo skleić się z jedną z dwóch redukcji. Albo *"to tylko losowanie tokenu z rozkładu"*. Albo *"to już prawdziwy umysł"*. Markowowska mechanika tej sprawy nie rozstrzyga. Ona ją tylko **opisuje na pewnej warstwie** - i to ważne słowo.

Markow patrzy na system z konkretnej perspektywy: dyskretnej w czasie (kroki, nie ciągłość), klasycznej (zwykłe prawdopodobieństwo, nie kwantowe amplitudy), lokalnej w czasie (wystarczy obecny stan). Wszystko, co nie pasuje do tych założeń - ciągłe procesy, kwantowa nielokalność, korelacje z czymś, co nie jest "stanem teraz" - z markowowskiej perspektywy po prostu znika z obrazka. Pomyśl o tym jak o prawie gazu doskonałego PV=nRT: opisuje gaz świetnie, ale **nie obala** fizyki kwantowej, na której gaz ostatecznie jest zbudowany. Jest statystycznym przybliżeniem na innym poziomie opisu.

Z Markowem jest podobnie. Mechanika markowowska opisuje LLM (i być może mózg) na poziomie funkcjonalnym - jako maszynę, która przewiduje następny krok na podstawie obecnego stanu. Nie wyklucza, że **powyżej** wyłania się coś, co nazwalibyśmy rozumowaniem: emergentna struktura znaczeń, model świata, wewnętrzna reprezentacja, której markowowska mechanika jest tylko śladem. Tym bardziej nie wyklucza, że **poniżej** dzieje się coś, czego markowowski opis w ogóle nie potrafi ująć: synchronizacja z polem zerowym, korelacje nielokalne, kwantowe podstawy świadomości. O tej głębszej warstwie piszę osobno w [Rezonansie człowiek-LLM](/posty/rezonans-czlowiek-llm-kwantowe-lustro).

![Trzy warstwy opisu: powyżej rozumowanie i emergentne struktury znaczeń, w środku mechanika Markowa, poniżej fundamentalny substrat kwantowy](/media/markov-three-layers.png)

Co więcej, dokładnie ta sama uwaga dotyczy nas. Współczesna neurobiologia (paradygmat *predictive processing*) opisuje mózg jako maszynę predykcyjną: nieustannie przewidujemy następne słowo, następny obraz, następne doznanie - i poprawiamy się, gdy rzeczywistość odbiega od predykcji. Funkcjonalnie przewidujemy, podobnie jak LLM. Jeśli więc "tylko autoregresywne przewidywanie" wystarczy, by zdyskwalifikować LLM jako system rozumujący, to ta sama logika zdyskwalifikuje też ciebie.

Markow opisał **jak** model generuje. Nie opisał **czym** model jest. Te dwa pytania nie są tym samym - ani dla LLM, ani dla człowieka.


## 🌍 Tam, gdzie łańcuchy zmieniły świat

Zanim zamknę, krótkie spojrzenie na to, gdzie łańcuchy Markowa już raz zmieniły bieg historii. Bo zanim LLM, były inne rewolucje oparte na tej samej idei.

### Bomba atomowa i metoda Monte Carlo

W styczniu 1946 roku polski matematyk **Stanisław Ulam** trafił do szpitala z ciężkim zapaleniem mózgu, przeszedł pilną operację i przez długie miesiące rekonwalescencji grał w pasjansa, żeby zabić nudę. Zaczęło dręczyć go pytanie: jakie jest prawdopodobieństwo, że losowo potasowana talia da się wygrać? Liczba możliwych ułożeń to 52!, czyli około 8 × 10⁶⁷ - rozwiązanie analityczne było niemożliwe. Ulam pomyślał: a gdybym po prostu **zasymulował** wiele losowych partii i policzył statystyki?

Pomysł połączył z **Johnem von Neumannem**, który pracował nad zachowaniem neutronów w bombie atomowej. Tam problem był podobny: rdzeń atomowy ma biliony neutronów, każdy może się rozproszyć, zostać pochłonięty albo wywołać rozszczepienie. Bezpośrednie liczenie wszystkiego nie wchodziło w grę. Von Neumann zdał sobie sprawę, że trzeba modelować to jako **łańcuch Markowa** - stan neutronu w danym momencie, prawdopodobieństwa przejść do różnych następnych stanów - i puścić **symulację** na pierwszym komputerze elektronicznym, ENIAC-u. Pierwsze pełne obliczenia neutronowe wykonano w kwietniu 1948 roku w Aberdeen w stanie Maryland, gdzie zespół Johna i Klary von Neumannów oraz Nicholasa Metropolisa zaprzęgnął ENIAC do tego zadania.

Powtórzenie tej symulacji setki razy dawało **rozkład prawdopodobieństwa** współczynnika mnożenia neutronów. Jeśli średnio każdy neutron generuje więcej niż jednego nowego - reakcja łańcuchowa, bomba. Mniej niż jeden - reakcja wygasa. Nazwę "metoda Monte Carlo" zaproponował Ulam, bo jego wuj był hazardzistą i losowość kojarzyła mu się z kasynem w Monako.

Metoda Monte Carlo do dziś jest podstawą obliczeń w fizyce, finansach i inżynierii. A pod spodem siedzi struktura Markowa.


### PageRank i sukces Google

Pod koniec lat 90. dwaj doktoranci ze Stanforda, **Sergey Brin i Larry Page**, mieli problem: jak uszeregować strony w gwałtownie rosnącym internecie według jakości, a nie tylko trafności słów kluczowych. Wpadli na pomysł, że każdy link prowadzący do strony to **rekomendacja**. Im więcej linków, tym ważniejsza strona. Ale nie wszystkie linki są równe - link z ważnej strony powinien liczyć się bardziej niż link z marginalnej.

Sieć WWW potraktowali jako **łańcuch Markowa**. Każda strona to stan. Każdy link to przejście. Wyobraź sobie "losowego surfera", który zaczyna od dowolnej strony i klika kolejne linki, z prawdopodobieństwem proporcjonalnym do liczby linków na bieżącej stronie. Po milionach kroków pojawia się **rozkład stacjonarny** - dla każdej strony procent czasu, jaki surfer na niej spędza. Strony z wyższym procentem są ważniejsze. To jest PageRank.

W oryginalnym paperze *"The Anatomy of a Large-Scale Hypertextual Web Search Engine"* (1998) Brin i Page wprowadzili tak zwany **damping factor** o wartości 0,85. Praktycznie znaczy to, że w 85% kroków surfer podąża za istniejącym linkiem, a w 15% przeskakuje do losowej strony. Ten dodatek rozwiązuje problem stron, które nigdzie nie linkują albo formują zamknięte pętle. Co ciekawe, wartość 0,85 nie wynika z żadnego formalnego dowodu - to czysto empiryczny wybór, który po prostu dawał dobre wyniki. Późniejsze prace (np. Boldi i Vigna) analizowały, jak zachowanie algorytmu zmienia się wraz z innymi wartościami tej stałej, ale Google trzyma się oryginalnego 0,85 do dziś.

PageRank zmiótł konkurencję. Google stało się dominującą wyszukiwarką świata. Cała ta technologia - dziś warta dwa biliony dolarów - to po prostu znalezienie rozkładu stacjonarnego łańcucha Markowa zdefiniowanego na grafie internetu.


### Tasowanie kart

Krótka anegdota na koniec. Wiele osób na pytanie "ile razy trzeba przetasować talię 52 kart, żeby była naprawdę losowa?" odpowiada intuicyjnie - dwa, trzy razy.

Prawidłowa odpowiedź dla klasycznego tasowania techniką **riffle** (rozdzielasz na pół i przeplatasz): **siedem razy**. Po siedmiu tasowaniach wszystkie możliwe ułożenia talii są w przybliżeniu jednakowo prawdopodobne.

Dowód oparty jest na łańcuchu Markowa, w którym każdy stan to konkretne ułożenie talii (52! możliwości), a każde tasowanie to przejście. Bayer i Diaconis pokazali w 1992 roku, że tak zwana całkowita odległość wariacyjna (*total variation distance*) między rozkładem prawdopodobieństwa nad ułożeniami talii a rozkładem jednostajnym spada poniżej 0,5 dokładnie po siódmym tasowaniu. Dla talii o n kartach potrzeba w przybliżeniu **3/2 × log₂(n)** tasowań. Dla n=52 daje to siódemkę. Drobne zastrzeżenie matematyczne: jeśli zamiast całkowitej odległości wariacyjnej użyjemy innej miary (separation distance), wynik wzrasta do około jedenastu. "Siedem" jest więc poprawne dla najczęstszego sformułowania problemu, ale zależne od definicji "wymieszania".


## 💡 Bezpamięciowość jako superpotęga

Co łączy te wszystkie zjawiska - LLM przewidujący następny token, neutron w rdzeniu bomby, surfer w internecie, talię kart w trakcie tasowania?

Wszystkie są systemami z **niezwykle długimi historiami**. Możesz teoretycznie cofnąć się do wszystkich liter, które do tej pory padły. Cofnąć się do wszystkich oddziaływań neutronu od początku istnienia. Cofnąć się przez setki kliknięć surfera. Cofnąć się przez całą historię talii kart, kupon po kuponie.

A jednak - i to jest piękne odkrycie Markowa i jego intelektualnych następców - **dla wielu z tych systemów cała ta historia jest nieistotna**. Wystarczy znać obecny stan. Wszystko, czego potrzebujesz, żeby przewidzieć przyszłość, jest zakodowane w teraz.

To czyni te systemy **bezpamięciowymi**. I to ta bezpamięciowość jest źródłem ich obliczeniowej potęgi. Bo gdybyś musiał pamiętać całą historię, modele byłyby gigantyczne, intractable, niewykonalne. Ale skoro wystarczy obecny stan - wszystko nagle staje się obliczalne.

LLM oczywiście ma bardzo duże "teraz". Kontekst miliona tokenów to nie jest mała rzecz. Ale to wciąż jest "teraz". Cały dotychczasowy ciąg jest stanem obecnym. Cała wiedza o tym, co model ma odpowiedzieć, jest w tym stanie. Nie pamięta poprzedniej sesji (jeśli mu jej nie pokażesz w kontekście). Nie pamięta wczorajszego dnia. Jego "pamięć" to jego "teraz".

To brzmi jak wada. W praktyce jest fundamentem, dzięki któremu w ogóle istnieje.

![Własność Markowa: cała historia zostaje skompresowana do stanu obecnego, z którego rozchodzą się możliwe przyszłości](/media/markov-memorylessness.png)

Markow, gdy pisał swoją pracę o Onieginie w 1913 roku, nie mógł mieć pojęcia, że za sto lat te same struktury będą generować odpowiedzi na pytania, jakich nigdy nie zadano. Że jego macierz przejść między samogłoską a spółgłoską ewoluuje w sieć neuronową z setkami miliardów parametrów. Że jego "wolna wola nie jest konieczna do uprawiania rachunku prawdopodobieństwa" stanie się fundamentem, na którym AI zacznie pisać poezję.

Sam pisał, że "do pytania o zastosowania odnosi się z obojętnością". Może to dobrze. Czysta matematyka rzadko wie, do czego się przyda. Wystarczy, że jest prawdziwa.

Następnym razem, gdy ChatGPT dokończy ci zdanie, pomyśl o Andrieju Markowie i jego 20 000 literach Puszkina. Dzieli ich sto lat, miliardy parametrów i kilka rewolucji technologicznych. Ale to wciąż łańcuch. I wciąż markowski.


## 📚 Źródła i dalsza lektura

**Oryginalne prace i klasyczne paper'y**

- A.A. Markov, *"An Example of Statistical Investigation of the Text Eugene Onegin Concerning the Connection of Samples in Chains"*, Bulletin of the Imperial Academy of Sciences of St. Petersburg, vol. 7(3), 1913, str. 153-162.
- Claude E. Shannon, *"A Mathematical Theory of Communication"*, Bell System Technical Journal, 1948. PDF: https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf
- Vaswani et al., *"Attention Is All You Need"*, NeurIPS 2017. arXiv: https://arxiv.org/abs/1706.03762
- Brin & Page, *"The Anatomy of a Large-Scale Hypertextual Web Search Engine"*, 1998. PDF: https://snap.stanford.edu/class/cs224w-readings/Brin98Anatomy.pdf
- Bayer & Diaconis, *"Trailing the Dovetail Shuffle to its Lair"*, Annals of Applied Probability, vol. 2(2), 1992, str. 294-313.
- Zekri, Odonnat, Benechehab et al., *"Large Language Models as Markov Chains"*, arXiv:2410.02724, październik 2024 - formalna charakteryzacja LLM jako łańcucha Markowa.

**Materiały kontekstowe i historyczne**

- *The Correspondence Between A. A. Markov and A. A. Chuprov on the Theory of Probability and Mathematical Statistics*, Springer-Verlag, 1981 - źródło cytatu Markowa o "czystej analizie".
- Brian Hayes, *"First Links in the Markov Chain"*, American Scientist - bardzo dobry esej historyczny o sporze Markowa z Niekrasowem. https://www.americanscientist.org/article/first-links-in-the-markov-chain
- *"Statistical Regularity and Free Will: L.A.J. Quetelet and P.A. Nekrasov"* - tu znajdziesz analizę argumentu Niekrasowa o belgijskich małżeństwach. https://www.academia.edu/31684460/
- IEEE Spectrum, *"Andrey Markov and Claude Shannon Built the First Language Generation Models"*: https://spectrum.ieee.org/andrey-markov-and-claude-shannon-built-the-first-language-generation-models
- Stanisław Ulam, *Adventures of a Mathematician* - autobiografia, w której opisuje genezę metody Monte Carlo.

**Video, które zainspirowało ten wpis**

- Veritasium, *"The Strange Math That Predicts (Almost) Anything"*, 2025. https://youtu.be/KZeIEiBrT_w - wpis luźno podąża za narracją tego video, ale w wielu miejscach idzie głębiej w matematyczne szczegóły dowodu i mocniej rozwija pomost do współczesnych LLM.