Přeskočit na obsah
coden

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.

14 minut Matěj Žalmánek 2026-10-15

Série Základy AI Díl 10 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 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.

Laicky řečeno

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
Změna výstupu na jednotku změny vstupu, při nekonečně malém kroku.

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:

h = 2: směrnice 8 h = 1: směrnice 7 h = 0,5: směrnice 6,5 h = 0,1: směrnice 6,1 h → 0: směrnice 6 x (bez jednotky) f(x) = x² (bez jednotky)
Sečny se s menším h stáčejí k tečně
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í.

FunkceDerivaceKde ji potkáte
x22xstřední kvadratická chyba
ln x1/xkřížová entropie
σ(x) = 1/1 + e−xσ(x)(1 − σ(x))logistická regrese, výstup sítě
tanh x1 − tanh2 xrekurentní sítě
ReLU(x) = max(0, x)0 pro x < 0, 1 pro x > 0skryté 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).

Laicky řečeno

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

  1. je-li f ″(x*) > 0, má f v bodě x* ostré lokální minimum;
  2. je-li f ″(x*) < 0, má f v bodě x* ostré lokální maximum;
  3. 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
Jeden krok gradientního sestupu v jedné proměnné.
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í.

Laicky řečeno

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)‖,

  1. 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;
  2. dolní mez se nabývá právě pro u = −∇f(x)/‖∇f(x)‖ — −∇f(x) je směr nejrychlejšího klesání;
  3. 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.
Laicky řečeno

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:

x (bez jednotky) y (bez jednotky)
Vrstevnice misky x² + 3y² a šipky −∇f směrem dolů

Š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
Odtud věta o gradientu: nejprudší stoupání je ve směru ∇f, nejprudší klesání ve směru −∇f a po vrstevnici (kolmo na gradient) se výška nemění.
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).

Laicky řečeno

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
Malá změna x se vnitřní funkcí zvětší f ′-krát a vnější ještě g ′-krát — proto se citlivosti násobí: 6 · 2 = 12.
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
−0,755 · 0,235 · 2 ≈ −0,355: tři články výpočetního grafu, tři derivace, jeden součin.
x 2 −0,089 w 0,5 −0,355 b −0,5 −0,177 y 1 · 1 −0,177 + 0,5 −0,177 σ 0,622 −0,755 L 0,143 1
Dopředný průchod a zpětné šíření chyby jedním neuronem hodnoty gradienty ∂L/∂·

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.

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