Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
Derivace jako rychlost změny, parciální derivace, gradient a řetízkové pravidlo — a zpětné šíření chyby spočítané číslo po čísle na jednom neuronu.
Série Základy AI Díl 10 z 83
- Mapa umělé inteligence: co je co a jak to do sebe zapadá
- Stručná historie umělé inteligence: od Turinga po jazykové modely
- Data, model, trénink, inference: základní pojmy na jednom příkladu
- Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relace: stavebnice, ze které se skládají definice v AI
- Funkce a zobrazení: proč je každý model v AI funkce
- Logika a důkazy: pravidla, podle kterých se v AI uvažuje
- Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
- Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
- Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
- Gradientní sestup: jak se model učí
- Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
- Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
- Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
- Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
- Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
- Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
- Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
- Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
- Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
- Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
- Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
- Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
- Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
- Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
- Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
- Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
- Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
- Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
- Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
- Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
- Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
- Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
- Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
- Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
- Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
- Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
- Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
- Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
- Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
- Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
- Přeučení a regularizace: proč model, který zná data nazpaměť, selže
- Vyhodnocení modelu: křížová validace, F1 a křivka ROC
- Shlukování a snížení dimenze: k-means, PCA a t-SNE
- Klasifikace a regrese: dvě úlohy učení s učitelem
- Lineární regrese: nejmenší čtverce geometricky i maticově
- Polynomiální a nelineární regrese: jak přímku ohnout
- Logistická regrese: sigmoida, šance a křížová entropie
- Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
- Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
- Ztrátové funkce: co přesně model minimalizuje
- Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
- Ansámbly: náhodný les a gradient boosting
- SVM a jádrový trik: nejširší hranice a jak ji ohnout
- Signál a vzorkování: proč platí Nyquistův teorém
- Fourierova transformace: rozklad signálu na frekvence
- Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
- Zvuk a řeč: spektrogram, melová škála a MFCC
- Obraz jako signál: pixely, barvy, konvoluce a hrany
- Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
- Neuronová síť od nuly: zpětné šíření chyby krok za krokem
- Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
- Konvoluční sítě: jak síť poznává obrázky
- Rekurentní sítě: paměť pro posloupnosti a mizející gradient
- LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
- Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
- Embeddingy a word2vec: jak se slovo stane vektorem
- Mechanismus pozornosti: jak se model naučí, kam se dívat
- Transformery a velké jazykové modely: architektura krok za krokem
- Tokenizace: jak se text rozseká na kousky pro model
- Předtrénování a škálování: proč větší model a víc dat funguje
- Doladění a RLHF: jak se z doplňovače textu stane asistent
- Prompty, kontext a RAG: jak modelu dát správné informace
- Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
- Generativní adversariální sítě (GAN): padělatel proti detektivovi
- Difúzní modely: jak se z čistého šumu stane obrázek
- Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
- Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
- Policy gradient a PPO: učení přímo strategie
- Jak funguje AI agent: jazykový model ve smyčce s nástroji
- Programování s AI agenty: zadání, testy a kontrola
- 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 je derivace, jak se počítá a proč v minimu vychází nula.
- Co je gradient a proč ukazuje nejprudší směr do kopce — a −∇f dolů.
- Jak řetízkové pravidlo počítá zpětné šíření chyby, krok po kroku na jednom neuronu.
Co se hodí znát předem: Funkce a zobrazení: proč je každý model v AI funkce, Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
Model se učí tak, že po malých krocích mění své parametry. Aby věděl, kterým směrem je změnit, potřebuje odpověď na jedinou otázku: když tenhle knoflík trochu pootočím, jak se změní chyba? Na tu otázku odpovídá derivace. Pro miliony knoflíků najednou je to gradient. A jak ho spočítat přes celou neuronovou síť, říká řetízkové pravidlo.
Tenhle díl je poslední kus matematiky, který chybí k tomu, abyste rozuměli, jak se neuronová síť doopravdy učí. Navazuje na funkce a na výpočetní graf neuronu z dílu o grafech.
1. Derivace: jak rychle se funkce mění
Definice — derivace
Nechť I ⊆ ℝ je otevřený interval, f : I → ℝ funkce a x ∈ I. Derivace funkce f v bodě x je číslo
f ′(x) = limh → 0 f(x + h) − f(x)/h,
pokud tato limita existuje a je konečná (reálné číslo); jinak derivace v bodě x neexistuje. Zlomek je definován pro h ≠ 0 s x + h ∈ I. Limitou se myslí: limh → 0 q(h) = L ∈ ℝ, právě když
∀ ε > 0 ∃ δ > 0 ∀ h : 0 < |h| < δ ∧ x + h ∈ I ⇒ |q(h) − L| < ε.
Má-li f derivaci v každém bodě I, je derivace funkce f funkce f ′ : I → ℝ, x ↦ f ′(x). Jiný (Leibnizův) zápis: f ′(x) = df/dx(x).
Zlomek pod limitou je směrnice sečny grafu mezi body (x, f(x)) a (x + h, f(x + h)); derivace je tedy limitní směrnice sečen, směrnice tečny v bodě x.
Derivace je rychlost. Když f popisuje, kde je auto v čase x, derivace je rychlost na tachometru v tom okamžiku. U grafu je to sklon: kladná derivace — funkce stoupá, záporná — klesá, nula — je na rovině.
f ′(x) = limh → 0 f(x + h) − f(x)/h
- f ′(x)
- derivace — sklon tečny v bodě x; to, co chceme spočítat
- limh → 0
- limita — sečna přes konečný úsek měří průměrný sklon; teprve když úsek smrskneme k nule, dostaneme sklon v jediném bodě
- f(x + h) − f(x)
- o kolik se hodnota změnila, když jsme se posunuli o h
- h
- délka posunu — dělením z celkové změny uděláme změnu na jednotku, tedy sklon
Sečna grafu f(x) = x2 v bodě 3 má pro h = 2 směrnici 8, pro h = 1 směrnici 7, pro 0,5 směrnici 6,5 a pro 0,1 směrnici 6,1. Čím menší krok, tím blíž je sečna tečně — a derivace f ′(3) = 6:
Příklad — derivace x2 přímo z definice
f(x + h) − f(x)/h = (x + h)2 − x2/h = 2xh + h2/h = 2x + h (pro h ≠ 0)
limh → 0 (2x + h) = 2x, v bodě 3: f ′(3) = 6
(barvy podle vzorce výše)
Směrnice sečny v bodě 3 je tedy přesně 6 + h — proto vyšla 8, 7, 6,5 a 6,1 pro h = 2, 1, 0,5 a 0,1. Rozdíl od tečny je u x2 právě h.
2. Pravidla a derivace funkcí z AI
Derivace se v praxi nepočítají limitou, ale podle pravidel. Ta nejdůležitější:
Pravidla derivování
Derivace elementárních funkcí: pro konstantu c ∈ ℝ a všechna x ∈ ℝ je (c)′ = 0 a (ex)′ = ex; pro n ∈ ℕ, n ≥ 1 a x ∈ ℝ je (xn)′ = nxn−1 (pro reálný exponent n platí totéž pro x > 0); pro x > 0 je (ln x)′ = 1/x.
Nechť I ⊆ ℝ je otevřený interval, f, g : I → ℝ jsou derivovatelné v bodě x ∈ I a c ∈ ℝ. Pak v bodě x platí
(f + g)′ = f ′ + g ′, (cf)′ = cf ′, (fg)′ = f ′g + fg ′,
a je-li navíc g(x) ≠ 0, pak
(f/g)′ = f ′g − fg ′/g2.
Definice — derivovatelná funkce
Nechť I ⊆ ℝ je otevřený interval, f : I → ℝ a x ∈ I. Funkce f je derivovatelná v bodě x, právě když limita
limh → 0 f(x + h) − f(x)/h
existuje a je konečná. Ekvivalentně: obě jednostranné derivace f ′−(x) (limita jen přes h < 0, sečny zleva) a f ′+(x) (limita jen přes h > 0, sečny zprava) existují, jsou konečné a f ′−(x) = f ′+(x). Funkce je derivovatelná na I, právě když je derivovatelná v každém bodě I.
ReLU(x) = max(0, x) v nule derivovatelná není: pro h < 0 je ReLU(h) − ReLU(0)/h = 0/h = 0, pro h > 0 je to h/h = 1, takže f ′−(0) = 0 ≠ 1 = f ′+(0). Knihovny pro učení tam dohodou berou 0. Protože vstup vyjde přesně 0 jen výjimečně, učení to nevadí.
| Funkce | Derivace | Kde ji potkáte |
|---|---|---|
| x2 | 2x | střední kvadratická chyba |
| ln x | 1/x | křížová entropie |
| σ(x) = 1/1 + e−x | σ(x)(1 − σ(x)) | logistická regrese, výstup sítě |
| tanh x | 1 − tanh2 x | rekurentní sítě |
| ReLU(x) = max(0, x) | 0 pro x < 0, 1 pro x > 0 | skryté vrstvy sítí |
Všimněte si, že derivace sigmoidy se dá spočítat ze samotné hodnoty sigmoidy — to šetří práci, protože tu síť stejně spočítala při dopředném průchodu. A derivace ReLU je nejjednodušší možná: buď 0, nebo 1. I to je důvod, proč je ReLU tak oblíbená.
3. Derivace ukazuje cestu k minimu
Věta — nutná podmínka extrému
Nechť I ⊆ ℝ je otevřený interval, f : I → ℝ a x* ∈ I. Funkce f má v bodě x* lokální minimum, právě když
∃ δ > 0 ∀ x ∈ I : |x − x*| < δ ⇒ f(x) ≥ f(x*),
a lokální maximum, právě když platí totéž s f(x) ≤ f(x*). Obojí souhrnně je lokální extrém; extrém je ostrý, platí-li pro x ≠ x* ostrá nerovnost.
Věta. Nechť f : I → ℝ je derivovatelná v bodě x* ∈ I a má v x* lokální extrém. Pak f ′(x*) = 0.
Opačně to neplatí: f ′(x*) = 0 může být i v bodě, kde extrém není — pro f(x) = x3 je f ′(0) = 0, ale f(x) < 0 pro x < 0 a f(x) > 0 pro x > 0 (inflexní bod).
Na dně údolí je terén rovný. Derivace navíc říká, kudy dolů: když je kladná, jděte doleva, když je záporná, doprava. Přesně tohle dělá gradientní sestup — jen ve milionech rozměrů najednou.
U f(x) = x2 je f ′(x) = 2x, nula jen v bodě 0 — a tam je minimum. Pro složitější funkce rovnici f ′ = 0 vyřešit neumíme, a proto se minimum hledá krok za krokem: kousek proti směru derivace, spočítat znovu, další kousek.
Věta — postačující podmínka minima
Nechť I ⊆ ℝ je otevřený interval a f : I → ℝ je derivovatelná na I. Druhá derivace f v bodě x ∈ I je derivace funkce f ′ v tomto bodě, f ″(x) = (f ′)′(x), pokud existuje.
Věta. Nechť f : I → ℝ je derivovatelná na I, x* ∈ I, f ″(x*) existuje a f ′(x*) = 0. Pak
- je-li f ″(x*) > 0, má f v bodě x* ostré lokální minimum;
- je-li f ″(x*) < 0, má f v bodě x* ostré lokální maximum;
- je-li f ″(x*) = 0, věta nerozhoduje (extrém tam být může i nemusí).
Pro x2: f ″(x) = (2x)′ = 2 > 0, takže bod 0 je opravdu minimum. Pro x3: f ″(0) = 6 · 0 = 0 — věta mlčí, a v nule skutečně extrém není.
xk+1 = xk − η · f ′(xk)
- xk+1
- nový odhad minima — o krok blíž ke dnu
- xk
- kde právě stojíme — vycházíme z posledního odhadu, nezačínáme znovu
- −
- minus — derivace ukazuje, kudy funkce roste; my chceme dolů, tedy opačně
- η
- délka kroku (rychlost učení) — derivace platí jen v okolí bodu, proto jdeme po malých krocích; moc velké η minimum přeskočí
- f ′(xk)
- derivace — dává směr (znaménkem) i velikost kroku: daleko od minima je svah strmý a jdeme rychle, u dna se krok sám zkracuje
def gradientni_sestup(df, x, eta, kroky):
for _ in range(kroky):
x = x - eta * df(x) # kousek proti směru derivace
return x
f(x) = x2, f ′(x) = 2x, start x0 = 3, η = 0,1
x1 = 3 − 0,1 · 6 = 2,4, x2 = 2,4 − 0,1 · 4,8 = 1,92, x3 = 1,92 − 0,1 · 3,84 = 1,536
(barvy podle vzorce výše)
Každý krok tu násobí polohu číslem 1 − 2η = 0,8, takže se k nule blížíme geometricky. S η = 1 by to bylo −1 a sestup by věčně skákal mezi 3 a −3.
4. Parciální derivace
Definice — parciální derivace
Nechť n ≥ 1, f : ℝn → ℝ, x = (x1, …, xn) ∈ ℝn a i ∈ {1, …, n}; ei ∈ ℝn je i-tý jednotkový vektor (na i-tém místě 1, jinde 0). Parciální derivace funkce f podle xi v bodě x je číslo
∂f/∂xi(x) = limh → 0 f(x + hei) − f(x)/h,
pokud tato limita existuje a je konečná. Protože x + hei = (x1, …, xi + h, …, xn), je to obyčejná derivace funkce jedné proměnné t ↦ f(x1, …, t, …, xn) (t na i-tém místě) v bodě t = xi: všechny ostatní proměnné držíme konstantní.
U funkce s více knoflíky otočíte jedním a ostatní necháte, jak jsou. Parciální derivace říká, jak citlivě výsledek reaguje právě na ten jeden knoflík.
f(x, y) = x2y
∂f/∂x = 2xy, ∂f/∂y = x2
v bodě (3, 2): ∂f/∂x = 12, ∂f/∂y = 9
Příklad — parciální derivace jako limita a její kontrola
Podle definice výše je ∂f/∂xi(x) limita podílu f(x + hei) − f(x)/h, kde ei je jednotkový vektor ve směru i-té osy — posouváme se jen po jedné ose. Pro malé h dá podíl sám dobrý odhad:
posun o h = 0,01 po ose x: f(3,01; 2) = 3,012 · 2 = 18,1202, f(3, 2) = 18
18,1202 − 18/0,01 = 12,02 ≈ 12
Zbylých 0,02 je chyba konečného kroku, s menším h mizí. Při výpočtu se y = 2 vůbec nehnulo — to je celé „parciální“.
5. Gradient: směr nejprudšího stoupání
Definice — gradient
Nechť n ≥ 1, f : ℝn → ℝ a x ∈ ℝn je bod, ve kterém existují všechny parciální derivace ∂f/∂xi(x), i = 1, …, n. Gradient funkce f v bodě x je vektor
∇f(x) = (∂f/∂x1(x), …, ∂f/∂xn(x)) ∈ ℝn.
Věta. Nechť f : ℝn → ℝ má spojité parciální derivace a x ∈ ℝn je bod s ∇f(x) ≠ 0. Pak pro každý vektor u ∈ ℝn s ‖u‖ = 1 platí pro směrovou derivaci (definice níže)
−‖∇f(x)‖ ≤ Duf(x) ≤ ‖∇f(x)‖,
- horní mez se nabývá právě pro u = ∇f(x)/‖∇f(x)‖ — gradient ukazuje směr nejrychlejšího růstu a jeho délka je ta nejvyšší rychlost růstu;
- dolní mez se nabývá právě pro u = −∇f(x)/‖∇f(x)‖ — −∇f(x) je směr nejrychlejšího klesání;
- Duf(x) = 0, právě když u · ∇f(x) = 0 — gradient je kolmý na vrstevnici {y ∈ ℝn : f(y) = f(x)} (na její tečné směry) v bodě x.
Stojíte v mlze na svahu a hmatem zjistíte sklon pod nohama. Gradient je šipka do kopce nejstrměji, jak to jde. Kdo chce dolů, jde přesně opačně.
Pro misku f(x, y) = x2 + 3y2 je ∇f = (2x, 6y); v bodě (1, 1) je to (2, 6). Šipky na obrázku ukazují −∇f, tedy kudy dolů — a všechny míří kolmo přes vrstevnice ke dnu:
Šipky nemíří přímo do středu: ve směru y je miska strmější, takže tam je gradient větší. Právě tohle „cik-cak“ pak zlobí gradientní sestup v úzkých údolích.
Proč gradient míří zrovna nejprudčeji do kopce? Odpověď dává směrová derivace.
Definice — směrová derivace
Nechť n ≥ 1, f : ℝn → ℝ, x ∈ ℝn a u ∈ ℝn je jednotkový vektor, ‖u‖ = 1 (skalární součin a délku zavádí díl Lineární algebra). Směrová derivace funkce f v bodě x ve směru u je číslo
Duf(x) = limh → 0 f(x + hu) − f(x)/h,
pokud tato limita existuje a je konečná — sklon terénu, když z bodu x vykročíme směrem u. Parciální derivace jsou její zvláštní případ: ∂f/∂xi(x) = Deif(x).
Věta. Má-li f spojité parciální derivace (je spojitě diferencovatelná), pak pro každé x ∈ ℝn a každý jednotkový u ∈ ℝn směrová derivace existuje a
Duf(x) = ∇f(x) · u.
Je-li ∇f(x) ≠ 0 a φ ∈ [0, π] úhel mezi u a ∇f(x), je to podle definice úhlu totéž co ‖∇f(x)‖ cos φ.
Duf = ∇f · u = ‖∇f‖ cos φ
- Duf
- sklon ve zvoleném směru — jak rychle funkce roste, když jdeme směrem u
- ∇f
- gradient — shrnuje sklony podél všech os; z nich se sklon v libovolném směru složí skalárním součinem
- u
- směr kroku, délky 1 — aby výsledek byl sklon, a ne sklon krát délka kroku
- ‖∇f‖
- délka gradientu — nejvyšší možný sklon v tomto bodě; nezávisí na tom, kam jdeme
- cos φ
- úhel mezi u a gradientem — jediné, co volbou směru ovlivníme; největší (1) je pro φ = 0, nejmenší (−1) pro opačný směr, nula podél vrstevnice
Příklad — sklony misky v bodě (1, 1) a jeden krok dolů
∇f(1, 1) = (2, 6), ‖∇f‖ = √4 + 36 = √40 ≈ 6,32
po ose x, u = (1, 0): Duf = (2, 6) · (1, 0) = 2; po ose y, u = (0, 1): Duf = (2, 6) · (0, 1) = 6 (barvy podle vzorce výše)
krok proti gradientu s η = 0,1: (1, 1) − 0,1 · (2, 6) = (0,8; 0,4)
f(1, 1) = 1 + 3 = 4 → f(0,8; 0,4) = 0,64 + 3 · 0,16 = 1,12
Žádný směr nedá sklon větší než 6,32 — ani osa y, která je „skoro“ ve směru gradientu.
6. Řetízkové pravidlo
Věta — derivace složené funkce
Nechť I, J ⊆ ℝ jsou otevřené intervaly, f : I → ℝ a g : J → ℝ funkce s f(I) ⊆ J a x ∈ I. Nechť f je derivovatelná v bodě x a g je derivovatelná v bodě f(x). Pak složená funkce h = g ∘ f : I → ℝ, h(x) = g(f(x)), je derivovatelná v bodě x a
h ′(x) = g ′(f(x)) · f ′(x).
V Leibnizově zápisu, když y = g(u) a u = f(x):
dy/dx = dy/du · du/dx.
U delšího řetězu se násobí všechny články: je-li h = fk ∘ … ∘ f1, u0 = x a uj = fj(uj−1) pro j = 1, …, k a každá fj je derivovatelná v uj−1, pak indukcí h ′(x) = fk′(uk−1) · … · f1′(u0).
Ozubená kola: když se první kolo otočí jednou, druhé třikrát a třetí se otočí dvakrát na každou otáčku druhého, otočí se třetí kolo šestkrát. Citlivosti se v řetězu násobí.
h(x) = (2x + 1)2, vnější g(u) = u2, vnitřní u = 2x + 1
h ′(x) = 2u · 2 = 4(2x + 1), v bodě 1 je u = 3: h ′(1) = 6 · 2 = 12
(barvy podle vzorce níže)
h ′(x) = g ′(f(x)) · f ′(x)
- h ′(x)
- citlivost celého řetězu — jak se změní konečný výsledek, když pohneme vstupem x
- g ′(f(x))
- citlivost vnější funkce — vyhodnocená v f(x), protože g nedostává x, ale mezivýsledek; v příkladu 2u = 2 · 3 = 6
- f ′(x)
- citlivost vnitřní funkce — o kolik se mezivýsledek pohne na jednotku x; v příkladu 2
Příklad — odkud se bere derivace sigmoidy
Sigmoida je složená funkce: σ(x) = u−1 s vnitřní u = 1 + e−x.
vnější: (u−1)′ = −u−2, vnitřní: (1 + e−x)′ = −e−x (opět řetízkem: (e−x)′ = e−x · (−1))
σ ′(x) = −(1 + e−x)−2 · (−e−x) = e−x/(1 + e−x)2
= 1/1 + e−x · e−x/1 + e−x = σ(x)(1 − σ(x))
(barvy podle vzorce řetízkového pravidla výše: vnější a vnitřní derivace)
Poslední krok: 1 − σ(x) = 1 + e−x − 1/1 + e−x = e−x/1 + e−x. Pro x = 0,5: σ ≈ 0,622, a tedy σ ′ ≈ 0,622 · 0,378 ≈ 0,235 — číslo, které za chvíli potkáme ve zpětném průchodu.
7. Zpětné šíření chyby v jednom neuronu
Teď to složíme dohromady. Neuron z dílu o grafech počítá ŷ = σ(wx + b) a jeho chyba je L = (ŷ − y)2. Vezměme vstup x = 2, váhu w = 0,5, posun b = −0,5 a správnou odpověď y = 1.
Dopředný průchod spočítá hodnoty zleva doprava: wx = 1, z = 0,5, ŷ = σ(0,5) ≈ 0,622 a chyba L ≈ 0,143.
Zpětný průchod jde stejným grafem zprava doleva a v každém vrcholu vynásobí, co přišlo, derivací té operace:
∂L/∂ŷ = 2(ŷ − y) ≈ −0,755
∂L/∂z = ∂L/∂ŷ · σ(z)(1 − σ(z)) ≈ −0,755 · 0,235 ≈ −0,177
∂L/∂w = ∂L/∂z · x ≈ −0,177 · 2 ≈ −0,355, ∂L/∂b = ∂L/∂z · 1 ≈ −0,177
(barvy podle vzorce níže)
∂L/∂w = ∂L/∂ŷ · ∂ŷ/∂z · ∂z/∂w
- ∂L/∂w
- o kolik vzroste chyba na jednotku změny váhy — přesně to potřebuje gradientní sestup
- ∂L/∂ŷ = 2(ŷ − y)
- jak chybu mění odpověď neuronu — je tím větší, čím víc se odpověď míjí s pravdou, a znaménko říká, jestli je moc velká, nebo malá (≈ −0,755)
- ∂ŷ/∂z = σ(1 − σ)
- jak odpověď mění sigmoida — když je neuron „nasycený“ (σ u 0 nebo 1), je tenhle článek skoro nula a signál dál neprojde (≈ 0,235)
- ∂z/∂w = x
- jak váha mění vnitřní součet — váha násobí vstup, takže její vliv je tak velký jako vstup (= 2); u nulového vstupu se váha nemá z čeho učit
Oba gradienty jsou záporné. To znamená, že když w i b trochu zvětšíme, chyba klesne — neuron pak odpoví blíž k jedničce. Gradientní sestup udělá přesně tohle: posune parametry kousek proti gradientu. Celá neuronová síť se učí stejně, jen má místo jednoho neuronu miliony a zpětný průchod jde přes stovky vrstev. Mimochodem, výsledek se dá ověřit hrubou silou — posunout w o maličko, spočítat chybu znovu a vydělit. Vyjde totéž, jen pomaleji.
Celý postup jako algoritmus — dopředný průchod, zpětný průchod, krok:
def krok_uceni(w, b, x, y, eta):
# dopředný průchod: hodnoty zleva doprava (a zapamatovat si je)
z = w * x + b
y_hat = sigmoida(z)
L = (y_hat - y) ** 2
# zpětný průchod: derivace zprava doleva, řetízkové pravidlo
dL_dyhat = 2 * (y_hat - y)
dL_dz = dL_dyhat * y_hat * (1 - y_hat) # σ′ ze zapamatované hodnoty
dL_dw = dL_dz * x
dL_db = dL_dz * 1
# gradientní sestup: kousek proti gradientu
return w - eta * dL_dw, b - eta * dL_db
Příklad — jeden krok učení a kontrola gradientu
krok s η = 1: w ← 0,5 − 1 · (−0,355) ≈ 0,855, b ← −0,5 − 1 · (−0,177) ≈ −0,323
nově: z ≈ 0,855 · 2 − 0,323 ≈ 1,387, ŷ = σ(1,387) ≈ 0,800, L ≈ 0,040 (předtím 0,143)
kontrola centrální diferencí, h = 0,001: L(w + h) − L(w − h)/2h ≈ −0,355
Jediný krok srazil chybu na necelou třetinu a odpověď se posunula z 0,622 na 0,800. Centrální diference (posun na obě strany) je přesnější než jednostranná z definice: chyba klesá s h2, ne s h.
8. Derivace v umělé inteligenci
- Automatické derivování — knihovny jako PyTorch a JAX si při výpočtu staví výpočetní graf a gradient spočítají zpětným průchodem samy. Nikdo derivace sítí nepíše ručně.
- Numerická derivace (malé h) je pro miliony parametrů příliš pomalá — na každý parametr jeden výpočet navíc. Zpětné šíření spočítá všechny parciální derivace za cenu zhruba jednoho dopředného průchodu.
- Mizející gradient — derivace sigmoidy je nejvýš 0,25. Řetízkové pravidlo přes pět sigmoid za sebou násobí nejvýš 0,255 ≈ 0,001, takže hluboké vrstvy se skoro neučí. Proto se ve skrytých vrstvách prosadila ReLU s derivací 1.
- Gradient podle vstupu ukazuje, které pixely obrázku nejvíc ovlivnily rozhodnutí sítě — tak se kreslí „mapy pozornosti“ a hledají slabiny modelů.
Věta — derivace sigmoidy je nejvýš ¼
Nechť σ : ℝ → ℝ, σ(x) = 1/1 + e−x, je sigmoida. Pak pro všechna x ∈ ℝ platí
0 < σ ′(x) ≤ 1/4,
a rovnost σ ′(x) = 1/4 nastává právě pro x = 0.
Důkaz. Označme p = σ(x); protože e−x > 0, je p ∈ (0, 1). Podle příkladu výše σ ′(x) = p(1 − p) > 0 a p(1 − p) = 1/4 − (p − 1/2)2 ≤ 1/4, s rovností právě pro p = 1/2, tedy e−x = 1, x = 0. ∎
Přes n sigmoid za sebou řetízkové pravidlo vynásobí n takových článků a mezi nimi váhy. Když žádná váha nemá absolutní hodnotu větší než 1, je výsledek v absolutní hodnotě nejvýš (1/4)n — pro n = 5 je to 1/1024 ≈ 0,001.
9. Shrnutí
- Derivace je rychlost změny — směrnice tečny, ke které se blíží sečny.
- V minimu je derivace nula a její znaménko říká, kudy dolů.
- Parciální derivace mění jeden knoflík, gradient je vektor všech z nich a míří nejprudčeji do kopce.
- Řetízkové pravidlo násobí derivace článků složené funkce.
- Zpětné šíření je řetízkové pravidlo na výpočetním grafu — tak se počítá gradient celé neuronové sítě.
Máte na to jiný názor? Napište na support@coden-app.com.