Přeskočit na obsah
coden

Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí

Umělý neuron a logická hradla, Rosenblattovo učicí pravidlo, Novikoffova věta o konvergenci, proč perceptron nezvládne XOR a jak ho vyřeší dvě vrstvy.

11 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 61 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • Co počítá umělý neuron a proč je to přímka.
  • Jak se perceptron učí z chyb a proč se na oddělitelných datech vždy zastaví.
  • Proč jeden neuron nezvládne XOR a proč sítě potřebují skryté vrstvy.

Co se hodí znát předem: Logistická regrese: sigmoida, šance a křížová entropie, SVM a jádrový trik: nejširší hranice a jak ji ohnout

V roce 1958 napsal New York Times, že americké námořnictvo představilo zárodek počítače, který „bude chodit, mluvit, vidět, psát, rozmnožovat se a uvědomovat si sám sebe“. Šlo o perceptron Franka Rosenblatta — stroj velký jako skříň, který se z příkladů učil rozlišovat jednoduché obrázky. O jedenáct let později dva profesoři z MIT dokázali, co perceptron nikdy nezvládne, a zájem o neuronové sítě na dlouhá léta opadl. Obojí stojí za pochopení: perceptron je nejjednodušší neuronová síť, a jeho slabina ukazuje, proč dnešní sítě mají vrstvy.

Navazuje na díly Logistická regrese a SVM a jádrový trik.

1. Umělý neuron

Definice — umělý neuron

Nechť n ∈ ℕ, n ≥ 1, je počet vstupů, w = (w1, …, wn) ∈ ℝn jsou váhy, b ∈ ℝ je práh (bias) a φ : ℝ → ℝ je funkce, které říkáme aktivační funkce. Umělý neuron s parametry (w, b) a aktivací φ je funkce N : ℝn → ℝ,

N(x) = φ(z),   kde   z = ∑i=1n wixi + b = w1x1 + … + wnxn + b,

pro každý vstup x = (x1, …, xn) ∈ ℝn. Číslu z ∈ ℝ říkáme vážený součet (součtová bázová funkce). V nejjednodušší verzi (Warren McCulloch a Walter Pitts, 1943) je aktivací skoková funkce H : ℝ → {0, 1}, H(z) = 1 pro z ≥ 0 a H(z) = 0 pro z < 0; výstup neuronu ŷ = H(z) je pak 1, právě když z ≥ 0, a jinak 0.

Laicky řečeno

Biologický neuron sbírá signály od tisíců sousedů. Některé spojení ho povzbuzují, jiné tlumí, a když součet překročí práh, neuron „vystřelí“. Umělý neuron je karikatura téhož: váhy jsou síla spojení, práh je citlivost, skok je výstřel. Skutečný neuron je mnohem složitější, ale na výpočty to nevadí.

x1 w1 x2 w2 x3 w3 Σ + b (práh) ŷ vstupy a váhy součet aktivace a výstup
Umělý neuron: vážený součet, práh a skok

ŷ = H( ∑i=1n wixi + b )

ŷ
výstup neuronu, 0 nebo 1 — rozhodnutí „ano/ne“, kvůli kterému neuron vůbec počítáme
xi
vstupy — to, co neuron o příkladu ví; na obrázku modré kroužky
wi
váhy — říkají, jak moc a kterým směrem má vstup hlasovat: kladná váha výstup povzbuzuje, záporná tlumí, nulová vstup ignoruje. Násobí se, aby vliv vstupu rostl s jeho velikostí
b
práh (bias) — posouvá hranici, od které neuron vystřelí. Bez něj by se hranice musela vždy dotýkat počátku (pro nulový vstup je součet 0) a neuron by nespočítal třeba AND
H
skoková aktivace — z libovolně velkého součtu udělá jednoznačné rozhodnutí 0/1; právě ona dělá z lineární funkce klasifikátor
Celý neuron je tedy „sečti hlasy vstupů, přidej předsudek, porovnej s nulou“.

McCulloch a Pitts ukázali, že takové neurony umějí logiku. Neuron s vahami 1 a 1 a prahem −1,5 vystřelí, jen když jsou oba vstupy 1 — to je AND. S prahem −0,5 stačí jeden vstup — OR. S vahami −1, −1 a prahem 1,5 dostaneme NAND. A z hradel NAND se dá postavit celý počítač.

Příklad — hradlo AND krok za krokem

Váhy w = (1, 1), práh b = −1,5. Pro každý ze čtyř vstupů spočteme z = w1x1 + w2x2 + b a výstup H(z) (barvy podle vzorce výše):

x = (0, 0):   z = 1 · 0 + 1 · 0 − 1,5 = −1,5,   ŷ = 0

x = (0, 1):   z = 1 · 0 + 1 · 1 − 1,5 = −0,5,   ŷ = 0

x = (1, 0):   z = 1 · 1 + 1 · 0 − 1,5 = −0,5,   ŷ = 0

x = (1, 1):   z = 1 · 1 + 1 · 1 − 1,5 = 0,5,   ŷ = 1

Práh −1,5 je tak velký, že ho jeden vstup (součet 1) nepřetlačí, oba (součet 2) ano. Stejně by fungoval jakýkoli práh od −2 (včetně) do −1 (bez −1) — hradlo nemá jediné „správné“ váhy.

0011 vstup x₁ (0 nebo 1) vstup x₂ (0 nebo 1) AND 0011 vstup x₁ (0 nebo 1) vstup x₂ (0 nebo 1) OR žádná přímka 0011 vstup x₁ (0 nebo 1) vstup x₂ (0 nebo 1) XOR
Hradla jako body: zeleně výstup 1, červeně 0; čára je hranice neuronu

Geometricky je neuron přímka (v obecnosti nadrovina): na jedné straně řekne 1, na druhé 0. To je stejné jako rozhodovací hranice logistické regrese — perceptron je logistická regrese se skokem místo sigmoidy.

Definice — skalární součin, rozhodovací hranice a vzdálenost od ní

Nechť n ∈ ℕ, n ≥ 1, a u = (u1, …, un), v = (v1, …, vn) ∈ ℝn. Skalární součin vektorů u a v je číslo

u · v = ∑i=1n uivi = u1v1 + … + unvn,

a (eukleidovská) délka vektoru u je ‖u‖ = √u · u = √u12 + … + un2 ≥ 0. Skoková (Heavisideova) funkce je H : ℝ → {0, 1}, H(z) = 1 pro z ≥ 0 a H(z) = 0 pro z < 0. Neuron s váhami w ∈ ℝn, prahem b ∈ ℝ a skokovou aktivací tedy pro vstup x ∈ ℝn počítá ŷ = H(w · x + b).

Nechť dále w ∈ ℝn, w ≠ 0, a b ∈ ℝ. Rozhodovací hranice neuronu je množina

{x ∈ ℝn : w · x + b = 0}.

Je to nadrovina (pro n = 2 přímka, pro n = 3 rovina); vektor w je na ni kolmý a ukazuje do poloprostoru {x : w · x + b > 0}, kde neuron říká 1. Orientovaná vzdálenost od hranice je funkce d : ℝn → ℝ,

d(x) = w · x + b/‖w‖.

Její absolutní hodnota |d(x)| je (eukleidovská) vzdálenost bodu x od hranice a platí d(x) > 0, právě když w · x + b > 0 — kladná je tedy na straně jedniček, záporná na straně nul a nulová přesně na hranici.

Laicky řečeno

Hodnota w · x + b neříká jen „ano/ne“, ale i „jak moc“: čím dál od čáry bod leží, tím větší je. Vydělením délkou ‖w‖ z ní uděláme skutečnou vzdálenost v rovině — jinak by stačilo vynásobit všechny váhy deseti a „vzdálenost“ by narostla desetkrát, ačkoli čára zůstala na místě. U hradla AND má bod (1, 1) od čáry x1 + x2 = 1,5 vzdálenost 1 + 1 − 1,5/√2 = 0,354 a bod (0, 0) vzdálenost −1,5/√2 = −1,061 (barvy podle vzorce níže).

d(x) = w · x + b/‖w‖

d(x)
orientovaná vzdálenost bodu x od hranice — velikost říká, jak daleko od čáry bod leží, znaménko, na které straně
w · x + b
vážený součet, který neuron posílá do skoku — nulový přesně na hranici a tím větší, čím dál od ní bod leží
‖w‖
délka vektoru vah — dělením jí se zbavíme měřítka: váhy vynásobené deseti dají tutéž hranici i tutéž vzdálenost. U hradla AND je w = (1, 1), takže ‖w‖ = √2

2. Perceptron: neuron, který se učí

Definice — perceptronové učicí pravidlo

Nechť n, m ∈ ℕ, n, m ≥ 1. Perceptron (Frank Rosenblatt, 1958) je algoritmus:

  • vstup: trénovací data (x1, y1), …, (xm, ym), kde xi ∈ ℝn je vstup a yi ∈ {−1, +1} jeho třída (i = 1, …, m), rychlost učení η ∈ ℝ, η > 0, a největší počet epoch T ∈ ℕ, T ≥ 1;
  • výstup: váhy w ∈ ℝn a práh b ∈ ℝ.
  1. Polož w = 0 ∈ ℝn, b = 0 a t = 0.
  2. Pro i = 1, 2, …, m postupně: je-li yi(w · xi + b) ≤ 0 (příklad i je zařazen chybně nebo leží přesně na hranici), proveď opravu w ← w + ηyixi,   b ← b + ηyi; jinak w a b nech beze změny.
  3. Zvětši t o 1. Jestliže v kroku 2 nebyla provedena žádná oprava, nebo t = T, zastav a vrať (w, b). Jinak pokračuj krokem 2.

Jeden průchod krokem 2 (všemi m příklady) je epocha. Perceptron tedy prochází příklady jeden po druhém, váhy opravuje jen u chybně zařazených a skončí, právě když celá epocha proběhne bez opravy, nebo když vyčerpá T epoch.

Laicky řečeno

Učení chybou. Když neuron řekne „ne“ u příkladu, který měl být „ano“, přičte ten příklad ke svým vahám — a příště bude k podobným příkladům vstřícnější. Když řekne „ano“ místo „ne“, příklad odečte. Rosenblattův stroj Mark I to dělal fyzicky: váhy byly potenciometry, které otáčely elektromotory.

w ← w + η y x,   b ← b + η y

w
váhy — jediné, co se učením mění; nalevo nové, napravo staré, oprava se ke starým jen přičte
η
rychlost učení — jak velký krok oprava udělá. Když perceptron začíná z nul, na η > 0 vůbec nezáleží: všechny váhy jsou pak násobkem η a hranice vyjde stejná. Proto se klidně bere η = 1
y
správná třída, +1 nebo −1 — určuje směr opravy: přičíst příklad, nebo odečíst. Kvůli tomuhle se třídy značí ±1, a ne 0/1
x
vstup chybně zařazeného příkladu — oprava posune váhy k němu (nebo od něj), takže příště bude mít w · x správné znaménko „víc“; vstupy, které jsou 0, váhu nezmění, protože k chybě nepřispěly
b
práh — učí se stejně jako váha u vstupu, který je pořád 1
Pravidlo se použije jen u chybně zařazeného příkladu, tedy když y(w · x + b) ≤ 0.
Věta — oprava posune odpověď správným směrem

Nechť n ≥ 1, w, x ∈ ℝn, b ∈ ℝ, y ∈ {−1, +1} a η > 0, a nechť w′ = w + ηyx a b′ = b + ηy jsou váhy a práh po opravě kvůli příkladu (x, y). Pak

y(w′ · x + b′) = y(w · x + b) + η(‖x‖2 + 1),

tj. veličina y(w · x + b) vzroste přesně o η(‖x‖2 + 1) > 0.

Důkaz. y((w + ηyx) · x + b + ηy) = y(w · x + b) + ηy2(x · x + 1), a protože y2 = 1 a x · x = ‖x‖2, plyne tvrzení. ∎

Na tomhle příkladu se tedy neuron vždycky zlepší. Nemusí ho ale hned zařadit správně (když byla chyba velká) a může přitom pokazit jiné příklady — proto počet chyb v grafu níže kolísá.

Celý algoritmus jako pseudokód:

def perceptron(data, eta=1, max_epoch=100):
    w, b = [0, 0], 0                       # start z nul
    for epocha in range(max_epoch):
        chyb = 0
        for x, y in data:                  # y je +1 nebo −1
            if y * (dot(w, x) + b) <= 0:   # špatně (nebo přesně na hranici)
                w = w + eta * y * x        # posun k příkladu / od něj
                b = b + eta * y
                chyb += 1
        if chyb == 0:                      # celá epocha bez chyby:
            return w, b                    # data jsou oddělená
    return w, b                            # nepovedlo se (třeba XOR)

Šedesát bodů v rovině, třídy oddělené šikmou přímkou s volným pásem kolem ní. Perceptron začne s nulovými vahami:

příznak x₁ (bez jednotky) příznak x₂ (bez jednotky)
Hranice perceptronu během učení; čárkovaně hranice SVM po 1. epošepo 3. epošepo 6. epoševýsledek SVM
01530 135791113 epocha (pořadí) opravy (počet chyb) 60 oddělitelných bodů 024 1357911 epocha (pořadí) opravy (počet chyb) XOR (4 body)
Počet oprav v každé epoše

V první epoše se perceptron spletl 27krát, ve druhé 18krát. Pak chyby kolísají — oprava kvůli jednomu bodu může pokazit jiný — ale ve 13. epoše už neudělá žádnou: data jsou oddělená. Celkem k tomu potřeboval 130 oprav. Výsledná hranice ale není nejlepší možná: nejbližší bod od ní leží ve vzdálenosti 0,17, kdežto SVM, které okraj maximalizuje, má 0,25. Perceptron se zastaví u první hranice, která funguje.

Definice — okraj hranice a okraj dat

Nechť n, m ≥ 1 a (x1, y1), …, (xm, ym) jsou data, xi ∈ ℝn, yi ∈ {−1, +1} pro i = 1, …, m. Nechť w ∈ ℝn, w ≠ 0, a b ∈ ℝ určují hranici {x : w · x + b = 0}. Okraj hranice (w, b) na těchto datech je číslo

γ(w, b) = mini = 1, …, m yi(w · xi + b)/‖w‖ = mini = 1, …, m yi d(xi),

tedy nejmenší orientovaná vzdálenost bodu od hranice, počítaná se znaménkem jeho třídy. Platí γ(w, b) > 0, právě když yi(w · xi + b) > 0 pro všechna i = 1, …, m, tj. právě když hranice zařadí všechny body správně (a žádný neleží na ní).

  1. Data jsou lineárně oddělitelná, právě když ∃w ∈ ℝn ∖ {0} ∃b ∈ ℝ : γ(w, b) > 0.
  2. Okraj dat je γ* = max {γ(w, b) : w ∈ ℝn ∖ {0}, b ∈ ℝ} — největší okraj, jakého lze nějakou hranicí dosáhnout (pro lineárně oddělitelná data se maximum nabývá). Hranici s tímto okrajem najde SVM (s tvrdým okrajem, viz díl o SVM).

U nás: perceptron skončil s w = (6,48; 5,55), b = −40, tedy ‖w‖ = 8,53, a nejbližší bod má y(w · x + b) = 1,42, takže okraj je 1,42/8,53 = 0,17. SVM má 0,25.

3. Věta o konvergenci

Věta — Novikoffova (o konvergenci perceptronu)

Nechť n, m ≥ 1 a (x1, y1), …, (xm, ym) jsou data, xi ∈ ℝn, yi ∈ {−1, +1}. Práh zahrneme do vah jako váhu u stálého vstupu 1: označme x̃i = (xi, 1) ∈ ℝn+1 a w̃ = (w, b) ∈ ℝn+1, takže w̃ · x̃i = w · xi + b. Předpokládejme, že

  1. existují u ∈ ℝn+1 s ‖u‖ = 1 a γ > 0 takové, že yi(u · x̃i) ≥ γ pro všechna i = 1, …, m (data jsou lineárně oddělitelná s okrajem aspoň γ v rozšířeném prostoru);
  2. R > 0 splňuje ‖x̃i‖ ≤ R pro všechna i = 1, …, m.

Pak perceptron se startem w̃ = 0 a libovolnou rychlostí učení η > 0, procházející příklady v libovolném pořadí (každý i opakovaně), provede konečný počet oprav k a platí

k ≤ (R/γ)2

(Albert Novikoff, 1962). Po poslední opravě zařazuje všechny příklady správně, takže na lineárně oddělitelných datech se učení vždy zastaví.

Laicky řečeno

Každá oprava posune váhy blíž k ideální hranici, a to aspoň o kousek úměrný okraji. Váhy ale zároveň nemohou růst rychleji než s odmocninou počtu oprav. Tyhle dvě podmínky se dlouho nesnesou, a tak oprav nemůže být nekonečně mnoho. Čím širší volný pás mezi třídami, tím rychleji perceptron skončí.

k ≤ ( R/γ )2

k
počet oprav, které perceptron za celé učení udělá — po poslední opravě už je bez chyby, takže omezit k znamená zaručit, že učení skončí
R
největší délka vstupu (s jedničkou pro práh) — každá oprava přičte k vahám jeden vstup, takže R určuje, jak moc mohou váhy „rozkmitat“; je v čitateli, protože velké vstupy dělají velké skoky
γ
okraj dat — šířka volného pásu mezi třídami; je ve jmenovateli, protože čím širší pás, tím víc hranic funguje a tím dřív na některou perceptron narazí
Mez nezávisí na počtu příkladů ani na počtu vstupů — jen na tom, jak velké jsou vstupy vůči šířce volného pásu.
Důkaz Novikoffovy věty

Zahrneme práh do vah (x ← (x, 1), w ← (w, b)), začneme z w0 = 0 a vezmeme η = 1 (na η nezáleží, viz výše). Nechť wk jsou váhy po k-té opravě a u jednotkový vektor z předpokladu věty.

1. Váhy se blíží k u. Oprava kvůli (x, y) dá wk · u = wk−1 · u + y(u · x) ≥ wk−1 · u + γ, takže po k opravách wk · u ≥ kγ.

2. Váhy rostou pomalu. ‖wk‖2 = ‖wk−1‖2 + 2y(wk−1 · x) + ‖x‖2 ≤ ‖wk−1‖2 + R2, protože u chybně zařazeného příkladu je prostřední člen ≤ 0. Tedy ‖wk‖2 ≤ kR2.

3. Spojení. Pro jednotkové u je wk · u ≤ ‖wk‖ (Cauchyova–Schwarzova nerovnost), takže kγ ≤ wk · u ≤ ‖wk‖ ≤ √k R, neboli √k ≤ R/γ a k ≤ (R/γ)2. ∎

Krok 1 roste s k lineárně, krok 2 jen s √k — to je přesně „dvě podmínky, které se dlouho nesnesou“ z laického vysvětlení.

Pro naše data je R = 9,44 a okraj v rozšířeném prostoru (s jedničkou pro práh) γ = 0,052, takže věta zaručuje nejvýš 33 576 oprav. Skutečně jich bylo 130. Mez je hodně opatrná, ale důležité je, že existuje: na oddělitelných datech se perceptron vždycky zastaví.

R/γ = 9,4409/0,05152 ≈ 183,2,   (R/γ)2 ≈ 33 576

skutečně: k = 130, tedy 0,4 % meze (barvy podle vzorce výše)

Proč je mez tak vysoko? Okraj v rozšířeném prostoru (0,052) je asi pětkrát menší než okraj v rovině (0,25): dělí se délkou celého vektoru (w, b), a práh je tu velký, protože hranice leží skoro 5 jednotek od počátku. A hlavně: věta platí pro nejhorší možné pořadí příkladů, ne pro to naše.

4. Co perceptron neumí: XOR

Funkce XOR (vylučovací „nebo“) vrátí 1, když je jedničkou právě jeden vstup. Na obrázku hradel výše jsou body pro výstup 1 na jedné úhlopříčce a body pro výstup 0 na druhé — žádná přímka je neoddělí. Perceptron se o to přesto pokouší: v každé epoše udělá čtyři chyby, po dvanácti epochách 48 oprav, a takhle by pokračoval donekonečna.

Věta — XOR není lineárně oddělitelný

Nechť XOR : {0, 1}2 → {0, 1} je funkce XOR(x1, x2) = 1, právě když x1 ≠ x2 (jinak 0), a H skoková funkce. Pak neexistují w1, w2, b ∈ ℝ takové, že

∀(x1, x2) ∈ {0, 1}2 : H(w1x1 + w2x2 + b) = XOR(x1, x2),

tj. žádný jeden neuron se skokovou aktivací XOR nepočítá.

Důkaz. Pro XOR by muselo platit

(0, 0) → 0:   b < 0     (1, 1) → 0:   w1 + w2 + b < 0

(0, 1) → 1:   w2 + b ≥ 0     (1, 0) → 1:   w1 + b ≥ 0

Sečtením dvou nerovností nahoře dostaneme w1 + w2 + 2b < 0, sečtením dvou dole w1 + w2 + 2b ≥ 0. Spor. ∎

Geometricky: středy obou úhlopříček jsou týž bod (½, ½). Kdyby přímka oddělila jedničky od nul, ležel by tenhle bod zároveň na straně jedniček (jako střed úsečky mezi nimi) i na straně nul.

Proč přesně čtyři chyby v každé epoše? Trasování první epochy (pořadí příkladů (0, 0), (0, 1), (1, 0), (1, 1), třídy ±1, η = 1):

krokvstup xyw · x + bchyba?(w1, w2, b) po kroku
1(0, 0)−10ano(0, 0, −1)
2(0, 1)+1−1ano(0, 1, 0)
3(1, 0)+10ano(1, 1, 1)
4(1, 1)−13ano(0, 0, 0)

Po čtvrté opravě jsou váhy zase (0, 0, 0) — přesně tam, kde začaly. Druhá epocha proto proběhne úplně stejně, třetí taky: perceptron se točí v kruhu. Na oddělitelných datech by Novikoffova věta takový kruh zakázala; tady neplatí, protože žádný kladný okraj γ neexistuje.

V roce 1969 vydali Marvin Minsky a Seymour Papert knihu Perceptrons, ve které přesně popsali, co jeden perceptron dokáže a co ne. XOR byl nejjednodušší příklad, ale ukázali i vážnější omezení, například že perceptron nepozná, jestli je obrazec souvislý. Kniha se stala symbolem konce optimismu; peníze na výzkum neuronových sítí vyschly a obor na dlouho utichl. (Celou umělou inteligenci pak v letech 1974–1980 zasáhla první „zima AI“ — ta měla víc příčin, mimo jiné Lighthillovu zprávu a škrty agentury DARPA.)

5. Řešení: víc vrstev

Definice — vícevrstvá síť

Nechť n ∈ ℕ, n ≥ 1, je počet vrstev, d0, d1, …, dn ≥ 1 jsou šířky vrstev (d0 je počet vstupů), x ∈ ℝd0 je vstup a pro ℓ = 1, …, n jsou W(ℓ) ∈ ℝdℓ×dℓ−1 váhy, b(ℓ) ∈ ℝdℓ prahy a φℓ : ℝ → ℝ aktivační funkce vrstvy ℓ (na vektor se použije po složkách). Vícevrstvá síť počítá a(0) = x a pro ℓ = 1, …, n

z(ℓ) = W(ℓ)a(ℓ−1) + b(ℓ) ∈ ℝdℓ,   a(ℓ) = φℓ(z(ℓ)) ∈ ℝdℓ;

jejím výstupem je ŷ = a(n). Složka ai(ℓ) = φℓ(∑j=1dℓ−1 Wij(ℓ)aj(ℓ−1) + bi(ℓ)) je výstup i-tého neuronu vrstvy ℓ — umělého neuronu s váhami z i-tého řádku W(ℓ), jehož vstupy jsou výstupy vrstvy ℓ − 1. Vrstvy 1, …, n − 1 se nazývají skryté, vrstva n výstupní.

Laicky řečeno

XOR je „OR, ale ne obojí“, tedy OR a zároveň NAND. Dva neurony ve skryté vrstvě spočtou OR a NAND, třetí na výstupu jejich AND. Každý neuron kreslí jen přímku, ale výstupní neuron kombinuje výsledky dvou přímek — a pás mezi nimi je přesně oblast, kde XOR vrací 1.

1−11−1 11 x1x2 ORb = −0,5NANDb = 1,5ANDb = −1,5 skrytá vrstva výstup
Dvouvrstvá síť, která počítá XOR

ŷ = H( h1 + h2 − 1,5 ),   h1 = H(x1 + x2 − 0,5),   h2 = H(−x1 − x2 + 1,5)

ŷ
výstup sítě — XOR obou vstupů
h1
skrytý neuron OR — hlídá „aspoň jeden vstup je 1“; odřízne bod (0, 0)
h2
skrytý neuron NAND — hlídá „ne oba“; odřízne bod (1, 1). Každý skrytý neuron je jedna přímka z obrázku hradel
−1,5
práh výstupního neuronu AND — součet dvou skrytých výstupů musí být 2, tedy obě podmínky musí platit najednou; tím se z dvou polorovin stane pás mezi přímkami
Příklad — síť pro XOR na všech čtyřech vstupech
xx1 + x2 − 0,5h1−x1 − x2 + 1,5h2h1 + h2 − 1,5ŷ
(0, 0)−0,501,51−0,50
(0, 1)0,510,510,51
(1, 0)0,510,510,51
(1, 1)1,51−0,50−0,50

Barvy sloupců odpovídají členům vzorce výše.

Skrytá vrstva přemapuje čtyři body na tři: (0, 0) → (0, 1), (0, 1) i (1, 0) → (1, 1), (1, 1) → (1, 0). V nových souřadnicích (h1, h2) už jedničky od nul jedna přímka oddělí — to je celé tajemství skrytých vrstev.

Síť dává pro vstupy (0, 0), (0, 1), (1, 0), (1, 1) výstupy 0, 1, 1, 0 — XOR. Minsky a Papert věděli, že vícevrstvé sítě XOR zvládnou. Problém byl jinde: nikdo neuměl váhy skrytých neuronů naučit. Perceptronové pravidlo opravuje váhy podle chyby výstupu, ale skrytý neuron žádnou „správnou odpověď“ nemá. Řešení — zpětné šíření chyby — se rozšířilo až v roce 1986 a je tématem dalšího dílu.

6. Neuron dnes

  • Hladká aktivace. Místo skoku se používá sigmoida, tanh nebo ReLU. Skok má derivaci nulovou všude kromě jednoho bodu, a gradientní sestup s ním nic nesvede.
  • Neuron = logistická regrese. Neuron se sigmoidou učený křížovou entropií je přesně logistická regrese; s hinge ztrátou je to lineární SVM. Perceptron je jejich předek.
  • Miliardy neuronů. Velký jazykový model má miliardy vah, ale každý jeho neuron dělá pořád totéž: vážený součet, práh, aktivace.
Věta — perceptron je stochastický gradientní sestup

Rosenblatt pravidlo odvodil jinak; dnes se na něj díváme takto. Nechť n ≥ 1, (x, y) ∈ ℝn × {−1, +1} je jeden trénovací příklad a η > 0. Pro váhy w ∈ ℝn a práh b ∈ ℝ označme m(w, b) = y(w · x + b) — kladné, právě když je příklad zařazen správně. Perceptronová ztráta příkladu je funkce L : ℝn × ℝ → ℝ,

L(w, b) = max(0, −m(w, b)):

nula u správně zařazených příkladů, jinak tím větší, čím hlouběji na špatné straně příklad leží. Tvrzení: je-li m(w, b) < 0, pak krok stochastického gradientního sestupu na tomto příkladu,

w ← w − η ∂L/∂w(w, b),   b ← b − η ∂L/∂b(w, b),

je přesně oprava perceptronu w ← w + ηyx, b ← b + ηy; je-li m(w, b) > 0, je gradient nulový a krok nic nezmění (stejně jako perceptron). Zde ∂L/∂w = (∂L/∂w1, …, ∂L/∂wn) ∈ ℝn.

Důkaz. Na otevřené množině {m < 0} je L = −y(w · x + b), takže ∂L/∂w = −yx a ∂L/∂b = −y; dosazením do kroku sestupu dostaneme w + ηyx a b + ηy. Na {m > 0} je L = 0 a gradient nulový. (V bodech s m = 0 derivace neexistuje; perceptron tam přesto opravuje, což odpovídá volbě jednoho z takzvaných subgradientů.) ∎

Stejně se dají zapsat i příbuzní: hinge ztráta SVM max(0, 1 − m) trestá i správné příklady, které leží blíž než 1 (tím vynucuje okraj), a logistická ztráta ln(1 + e−m) je hladká verze, která má gradient všude. Liší se jen tvarem ztráty jako funkce m.

7. Shrnutí

  • Umělý neuron počítá vážený součet vstupů s prahem a posílá ho aktivací; se skokem umí AND, OR i NAND.
  • Perceptron se učí opravou vah po každé chybě; na 60 oddělitelných bodech mu stačilo 130 oprav a od 13. epochy byl bez chyby.
  • Najde nějakou oddělující přímku, ne nejlepší: okraj 0,17 proti 0,25 u SVM.
  • Novikoffova věta zaručuje konečný počet oprav na oddělitelných datech (u nás mez 33 576).
  • XOR přímkou oddělit nejde a perceptron dělá 4 chyby v každé epoše navždy; dvě vrstvy XOR spočítají, ale bylo je potřeba naučit.

Chcete si to osahat? Nechte AI agenta napsat perceptron na dvaceti řádcích a pustit ho na funkce AND, OR a XOR — a pak přidat třetí vstup x1 · x2. Co se stane s XOR?

Máte na to jiný názor? Napište na support@coden-app.com.

Agent na vašem počítači, ovládaný z telefonu