Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
Derivácia ako rýchlosť zmeny, parciálne derivácie, gradient a reťazové pravidlo — a spätné šírenie chyby vypočítané číslo po čísle na jednom neuróne.
Séria Základy AI Diel 10 z 52
- Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
- Stručná história umelej inteligencie: od Turinga po jazykové modely
- Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
- Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
- Funkcie a zobrazenia: prečo je každý model v AI funkcia
- Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
- Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
- Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
- Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
- Gradientný zostup: ako sa model učí
- Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
- Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
- Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
- Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
- Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
- Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
- Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
- Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
- Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
- Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
- Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
- Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
- Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
- Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
- Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
- Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
- Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
- Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
- Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
- Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
- Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
- Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
- Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
- Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
- Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
- Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
- Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
- Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
- Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
- Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
- Prompty, kontext a RAG: ako modelu dať správne informácie
- Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
- Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
- Difúzne modely: ako sa z čistého šumu stane obrázok
- Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
- Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
- Policy gradient a PPO: učenie priamo stratégie
- Ako funguje AI agent: jazykový model v slučke s nástrojmi
- Programovanie s AI agentmi: zadanie, testy a kontrola
- Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť
Celá osnova série Hotovo: 52 z 83 tém
- Čo je derivácia, ako sa počíta a prečo v minime vychádza nula.
- Čo je gradient a prečo ukazuje najstrmší smer do kopca — a −∇f dole.
- Ako reťazové pravidlo počíta spätné šírenie chyby, krok za krokom na jednom neuróne.
Čo sa hodí vedieť vopred: Funkcie a zobrazenia: prečo je každý model v AI funkcia, Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
Model sa učí tak, že po malých krokoch mení svoje parametre. Aby vedel, ktorým smerom ich zmeniť, potrebuje odpoveď na jedinú otázku: keď tento gombík trochu pootočím, ako sa zmení chyba? Na túto otázku odpovedá derivácia. Pre milióny gombíkov naraz je to gradient. A ako ho vypočítať cez celú neurónovú sieť, hovorí reťazové pravidlo.
Tento diel je posledný kus matematiky, ktorý chýba na to, aby ste rozumeli, ako sa neurónová sieť naozaj učí. Nadväzuje na funkcie a na výpočtový graf neurónu z dielu o grafoch.
1. Derivácia: ako rýchlo sa funkcia mení
Definícia — derivácia
Nech I ⊆ ℝ je otvorený interval, f : I → ℝ funkcia a x ∈ I. Derivácia funkcie f v bode x je číslo
f ′(x) = limh → 0 f(x + h) − f(x)/h,
ak táto limita existuje a je konečná (reálne číslo); inak derivácia v bode x neexistuje. Zlomok je definovaný pre h ≠ 0 s x + h ∈ I. Limitou sa myslí: limh → 0 q(h) = L ∈ ℝ práve vtedy, keď
∀ ε > 0 ∃ δ > 0 ∀ h : 0 < |h| < δ ∧ x + h ∈ I ⇒ |q(h) − L| < ε.
Ak má f deriváciu v každom bode I, je derivácia funkcie f funkcia f ′ : I → ℝ, x ↦ f ′(x). Iný (Leibnizov) zápis: f ′(x) = df/dx(x).
Zlomok pod limitou je smernica sečnice grafu medzi bodmi (x, f(x)) a (x + h, f(x + h)); derivácia je teda limitná smernica sečníc, smernica dotyčnice v bode x.
Derivácia je rýchlosť. Keď f opisuje, kde je auto v čase x, derivácia je rýchlosť na tachometri v tom okamihu. Pri grafe je to sklon: kladná derivácia — funkcia stúpa, záporná — klesá, nula — je na rovine.
f ′(x) = limh → 0 f(x + h) − f(x)/h
- f ′(x)
- derivácia — sklon dotyčnice v bode x; to, čo chceme vypočítať
- limh → 0
- limita — sečnica cez konečný úsek meria priemerný sklon; až keď úsek stiahneme k nule, dostaneme sklon v jedinom bode
- f(x + h) − f(x)
- o koľko sa hodnota zmenila, keď sme sa posunuli o h
- h
- dĺžka posunu — delením z celkovej zmeny urobíme zmenu na jednotku, teda sklon
Sečnica grafu f(x) = x2 v bode 3 má pre h = 2 smernicu 8, pre h = 1 smernicu 7, pre 0,5 smernicu 6,5 a pre 0,1 smernicu 6,1. Čím menší krok, tým bližšie je sečnica k dotyčnici — a derivácia f ′(3) = 6:
Príklad — derivácia x2 priamo z definície
f(x + h) − f(x)/h = (x + h)2 − x2/h = 2xh + h2/h = 2x + h (pre h ≠ 0)
limh → 0 (2x + h) = 2x, v bode 3: f ′(3) = 6
(farby podľa vzorca vyššie)
Smernica sečnice v bode 3 je teda presne 6 + h — preto vyšla 8, 7, 6,5 a 6,1 pre h = 2, 1, 0,5 a 0,1. Rozdiel od dotyčnice je pri x2 práve h.
2. Pravidlá a derivácie funkcií z AI
Derivácie sa v praxi nepočítajú limitou, ale podľa pravidiel. Tie najdôležitejšie:
Pravidlá derivovania
Derivácie elementárnych funkcií: pre konštantu c ∈ ℝ a všetky x ∈ ℝ je (c)′ = 0 a (ex)′ = ex; pre n ∈ ℕ, n ≥ 1 a x ∈ ℝ je (xn)′ = nxn−1 (pre reálny exponent n platí to isté pre x > 0); pre x > 0 je (ln x)′ = 1/x.
Nech I ⊆ ℝ je otvorený interval, f, g : I → ℝ sú diferencovateľné v bode x ∈ I a c ∈ ℝ. Potom v bode x platí
(f + g)′ = f ′ + g ′, (cf)′ = cf ′, (fg)′ = f ′g + fg ′,
a ak je navyše g(x) ≠ 0, potom
(f/g)′ = f ′g − fg ′/g2.
Definícia — diferencovateľná funkcia
Nech I ⊆ ℝ je otvorený interval, f : I → ℝ a x ∈ I. Funkcia f je diferencovateľná v bode x práve vtedy, keď limita
limh → 0 f(x + h) − f(x)/h
existuje a je konečná. Ekvivalentne: obe jednostranné derivácie f ′−(x) (limita len cez h < 0, sečnice zľava) a f ′+(x) (limita len cez h > 0, sečnice sprava) existujú, sú konečné a f ′−(x) = f ′+(x). Funkcia je diferencovateľná na I práve vtedy, keď je diferencovateľná v každom bode I.
ReLU(x) = max(0, x) v nule diferencovateľná nie je: pre h < 0 je ReLU(h) − ReLU(0)/h = 0/h = 0, pre h > 0 je to h/h = 1, takže f ′−(0) = 0 ≠ 1 = f ′+(0). Knižnice na učenie tam dohodou berú 0. Keďže vstup vyjde presne 0 len výnimočne, učeniu to neprekáža.
| Funkcia | Derivácia | Kde ju stretnete |
|---|---|---|
| x2 | 2x | stredná kvadratická chyba |
| ln x | 1/x | krížová entropia |
| σ(x) = 1/1 + e−x | σ(x)(1 − σ(x)) | logistická regresia, výstup siete |
| tanh x | 1 − tanh2 x | rekurentné siete |
| ReLU(x) = max(0, x) | 0 pre x < 0, 1 pre x > 0 | skryté vrstvy sietí |
Všimnite si, že deriváciu sigmoidy sa dá vypočítať zo samotnej hodnoty sigmoidy — to šetrí prácu, pretože tú sieť aj tak vypočítala pri doprednom prechode. A derivácia ReLU je najjednoduchšia možná: buď 0, alebo 1. Aj to je dôvod, prečo je ReLU taká obľúbená.
3. Derivácia ukazuje cestu k minimu
Veta — nutná podmienka extrému
Nech I ⊆ ℝ je otvorený interval, f : I → ℝ a x* ∈ I. Funkcia f má v bode x* lokálne minimum práve vtedy, keď
∃ δ > 0 ∀ x ∈ I : |x − x*| < δ ⇒ f(x) ≥ f(x*),
a lokálne maximum práve vtedy, keď platí to isté s f(x) ≤ f(x*). Oboje súhrnne je lokálny extrém; extrém je ostrý, ak pre x ≠ x* platí ostrá nerovnosť.
Veta. Nech f : I → ℝ je diferencovateľná v bode x* ∈ I a má v x* lokálny extrém. Potom f ′(x*) = 0.
Opačne to neplatí: f ′(x*) = 0 môže byť aj v bode, kde extrém nie je — pre f(x) = x3 je f ′(0) = 0, ale f(x) < 0 pre x < 0 a f(x) > 0 pre x > 0 (inflexný bod).
Na dne údolia je terén rovný. Derivácia navyše hovorí, kadiaľ dole: keď je kladná, choďte doľava, keď je záporná, doprava. Presne toto robí gradientný zostup — len v miliónoch rozmerov naraz.
Pri f(x) = x2 je f ′(x) = 2x, nula iba v bode 0 — a tam je minimum. Pre zložitejšie funkcie rovnicu f ′ = 0 vyriešiť nevieme, a preto sa minimum hľadá krok za krokom: kúsok proti smeru derivácie, vypočítať znova, ďalší kúsok.
Veta — postačujúca podmienka minima
Nech I ⊆ ℝ je otvorený interval a f : I → ℝ je diferencovateľná na I. Druhá derivácia f v bode x ∈ I je derivácia funkcie f ′ v tomto bode, f ″(x) = (f ′)′(x), ak existuje.
Veta. Nech f : I → ℝ je diferencovateľná na I, x* ∈ I, f ″(x*) existuje a f ′(x*) = 0. Potom
- ak je f ″(x*) > 0, má f v bode x* ostré lokálne minimum;
- ak je f ″(x*) < 0, má f v bode x* ostré lokálne maximum;
- ak je f ″(x*) = 0, veta nerozhoduje (extrém tam byť môže aj nemusí).
Pre x2: f ″(x) = (2x)′ = 2 > 0, takže bod 0 je naozaj minimum. Pre x3: f ″(0) = 6 · 0 = 0 — veta mlčí, a v nule skutočne extrém nie je.
xk+1 = xk − η · f ′(xk)
- xk+1
- nový odhad minima — o krok bližšie ku dnu
- xk
- kde práve stojíme — vychádzame z posledného odhadu, nezačíname odznova
- −
- mínus — derivácia ukazuje, kadiaľ funkcia rastie; my chceme dole, teda opačne
- η
- dĺžka kroku (rýchlosť učenia) — derivácia platí len v okolí bodu, preto ideme po malých krokoch; príliš veľké η minimum preskočí
- f ′(xk)
- derivácia — dáva smer (znamienkom) aj veľkosť kroku: ďaleko od minima je svah strmý a ideme rýchlo, pri dne sa krok sám skracuje
def gradientni_sestup(df, x, eta, kroky):
for _ in range(kroky):
x = x - eta * df(x) # kúsok proti smeru derivácie
return x
f(x) = x2, f ′(x) = 2x, štart 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
(farby podľa vzorca vyššie)
Každý krok tu násobí polohu číslom 1 − 2η = 0,8, takže sa k nule blížime geometricky. S η = 1 by to bolo −1 a zostup by večne skákal medzi 3 a −3.
4. Parciálne derivácie
Definícia — parciálna derivácia
Nech n ≥ 1, f : ℝn → ℝ, x = (x1, …, xn) ∈ ℝn a i ∈ {1, …, n}; ei ∈ ℝn je i-tý jednotkový vektor (na i-tom mieste 1, inde 0). Parciálna derivácia funkcie f podľa xi v bode x je číslo
∂f/∂xi(x) = limh → 0 f(x + hei) − f(x)/h,
ak táto limita existuje a je konečná. Keďže x + hei = (x1, …, xi + h, …, xn), je to obyčajná derivácia funkcie jednej premennej t ↦ f(x1, …, t, …, xn) (t na i-tom mieste) v bode t = xi: všetky ostatné premenné držíme konštantné.
Pri funkcii s viacerými gombíkmi otočíte jedným a ostatné necháte, ako sú. Parciálna derivácia hovorí, ako citlivo výsledok reaguje práve na ten jeden gombík.
f(x, y) = x2y
∂f/∂x = 2xy, ∂f/∂y = x2
v bode (3, 2): ∂f/∂x = 12, ∂f/∂y = 9
Príklad — parciálna derivácia ako limita a jej kontrola
Podľa definície vyššie je ∂f/∂xi(x) limita podielu f(x + hei) − f(x)/h, kde ei je jednotkový vektor v smere i-tej osi — posúvame sa len po jednej osi. Pre malé h dá podiel sám dobrý odhad:
posun o h = 0,01 po osi x: f(3,01; 2) = 3,012 · 2 = 18,1202, f(3, 2) = 18
18,1202 − 18/0,01 = 12,02 ≈ 12
Zvyšných 0,02 je chyba konečného kroku, s menším h mizne. Pri výpočte sa y = 2 vôbec nepohlo — to je celé „parciálne“.
5. Gradient: smer najstrmšieho stúpania
Definícia — gradient
Nech n ≥ 1, f : ℝn → ℝ a x ∈ ℝn je bod, v ktorom existujú všetky parciálne derivácie ∂f/∂xi(x), i = 1, …, n. Gradient funkcie f v bode x je vektor
∇f(x) = (∂f/∂x1(x), …, ∂f/∂xn(x)) ∈ ℝn.
Veta. Nech f : ℝn → ℝ má spojité parciálne derivácie a x ∈ ℝn je bod s ∇f(x) ≠ 0. Potom pre každý vektor u ∈ ℝn s ‖u‖ = 1 platí pre smerovú deriváciu (definícia nižšie)
−‖∇f(x)‖ ≤ Duf(x) ≤ ‖∇f(x)‖,
- horná hranica sa dosahuje práve pre u = ∇f(x)/‖∇f(x)‖ — gradient ukazuje smer najrýchlejšieho rastu a jeho dĺžka je tá najvyššia rýchlosť rastu;
- dolná hranica sa dosahuje práve pre u = −∇f(x)/‖∇f(x)‖ — −∇f(x) je smer najrýchlejšieho klesania;
- Duf(x) = 0 práve vtedy, keď u · ∇f(x) = 0 — gradient je kolmý na vrstevnicu {y ∈ ℝn : f(y) = f(x)} (na jej dotyčnicové smery) v bode x.
Stojíte v hmle na svahu a hmatom zistíte sklon pod nohami. Gradient je šípka do kopca najstrmšie, ako sa dá. Kto chce dole, ide presne opačne.
Pre misku f(x, y) = x2 + 3y2 je ∇f = (2x, 6y); v bode (1, 1) je to (2, 6). Šípky na obrázku ukazujú −∇f, teda kadiaľ dole — a všetky mieria kolmo cez vrstevnice ku dnu:
Šípky nemieria priamo do stredu: v smere y je miska strmšia, takže tam je gradient väčší. Práve toto „cik-cak“ potom trápi gradientný zostup v úzkych údoliach.
Prečo gradient mieri práve najstrmšie do kopca? Odpoveď dáva smerová derivácia.
Definícia — smerová derivácia
Nech n ≥ 1, f : ℝn → ℝ, x ∈ ℝn a u ∈ ℝn je jednotkový vektor, ‖u‖ = 1 (skalárny súčin a dĺžku zavádza diel Lineárna algebra). Smerová derivácia funkcie f v bode x v smere u je číslo
Duf(x) = limh → 0 f(x + hu) − f(x)/h,
ak táto limita existuje a je konečná — sklon terénu, keď z bodu x vykročíme smerom u. Parciálne derivácie sú jej špeciálny prípad: ∂f/∂xi(x) = Deif(x).
Veta. Ak má f spojité parciálne derivácie (je spojito diferencovateľná), potom pre každé x ∈ ℝn a každý jednotkový u ∈ ℝn smerová derivácia existuje a
Duf(x) = ∇f(x) · u.
Ak je ∇f(x) ≠ 0 a φ ∈ [0, π] uhol medzi u a ∇f(x), je to podľa definície uhla to isté čo ‖∇f(x)‖ cos φ.
Duf = ∇f · u = ‖∇f‖ cos φ
- Duf
- sklon vo zvolenom smere — ako rýchlo funkcia rastie, keď ideme smerom u
- ∇f
- gradient — zhŕňa sklony pozdĺž všetkých osí; z nich sa sklon v ľubovoľnom smere poskladá skalárnym súčinom
- u
- smer kroku, dĺžky 1 — aby výsledok bol sklon, a nie sklon krát dĺžka kroku
- ‖∇f‖
- dĺžka gradientu — najvyšší možný sklon v tomto bode; nezávisí od toho, kam ideme
- cos φ
- uhol medzi u a gradientom — jediné, čo voľbou smeru ovplyvníme; najväčší (1) je pre φ = 0, najmenší (−1) pre opačný smer, nula pozdĺž vrstevnice
Príklad — sklony misky v bode (1, 1) a jeden krok dole
∇f(1, 1) = (2, 6), ‖∇f‖ = √4 + 36 = √40 ≈ 6,32
po osi x, u = (1, 0): Duf = (2, 6) · (1, 0) = 2; po osi y, u = (0, 1): Duf = (2, 6) · (0, 1) = 6 (farby podľa vzorca vyššie)
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
Žiadny smer nedá sklon väčší než 6,32 — ani os y, ktorá je „takmer“ v smere gradientu.
6. Reťazové pravidlo
Veta — derivácia zloženej funkcie
Nech I, J ⊆ ℝ sú otvorené intervaly, f : I → ℝ a g : J → ℝ funkcie s f(I) ⊆ J a x ∈ I. Nech f je diferencovateľná v bode x a g je diferencovateľná v bode f(x). Potom zložená funkcia h = g ∘ f : I → ℝ, h(x) = g(f(x)), je diferencovateľná v bode x a
h ′(x) = g ′(f(x)) · f ′(x).
V Leibnizovom zápise, keď y = g(u) a u = f(x):
dy/dx = dy/du · du/dx.
Pri dlhšej reťazi sa násobia všetky články: ak h = fk ∘ … ∘ f1, u0 = x a uj = fj(uj−1) pre j = 1, …, k a každá fj je diferencovateľná v uj−1, potom indukciou h ′(x) = fk′(uk−1) · … · f1′(u0).
Ozubené kolesá: keď sa prvé koleso otočí raz, druhé trikrát a tretie sa otočí dvakrát na každú otáčku druhého, otočí sa tretie koleso šesťkrát. Citlivosti sa v reťazi násobia.
h(x) = (2x + 1)2, vonkajšia g(u) = u2, vnútorná u = 2x + 1
h ′(x) = 2u · 2 = 4(2x + 1), v bode 1 je u = 3: h ′(1) = 6 · 2 = 12
(farby podľa vzorca nižšie)
h ′(x) = g ′(f(x)) · f ′(x)
- h ′(x)
- citlivosť celej reťaze — ako sa zmení konečný výsledok, keď pohneme vstupom x
- g ′(f(x))
- citlivosť vonkajšej funkcie — vyhodnotená v f(x), pretože g nedostáva x, ale medzivýsledok; v príklade 2u = 2 · 3 = 6
- f ′(x)
- citlivosť vnútornej funkcie — o koľko sa medzivýsledok pohne na jednotku x; v príklade 2
Príklad — odkiaľ sa berie derivácia sigmoidy
Sigmoida je zložená funkcia: σ(x) = u−1 s vnútornou u = 1 + e−x.
vonkajšia: (u−1)′ = −u−2, vnútorná: (1 + e−x)′ = −e−x (opäť reťazovým pravidlom: (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))
(farby podľa vzorca reťazového pravidla vyššie: vonkajšia a vnútorná derivácia)
Posledný krok: 1 − σ(x) = 1 + e−x − 1/1 + e−x = e−x/1 + e−x. Pre x = 0,5: σ ≈ 0,622, a teda σ ′ ≈ 0,622 · 0,378 ≈ 0,235 — číslo, ktoré o chvíľu stretneme v spätnom prechode.
7. Spätné šírenie chyby v jednom neuróne
Teraz to poskladáme dohromady. Neurón z dielu o grafoch počíta ŷ = σ(wx + b) a jeho chyba je L = (ŷ − y)2. Vezmime vstup x = 2, váhu w = 0,5, posun b = −0,5 a správnu odpoveď y = 1.
Dopredný prechod vypočíta hodnoty zľava doprava: wx = 1, z = 0,5, ŷ = σ(0,5) ≈ 0,622 a chyba L ≈ 0,143.
Spätný prechod ide tým istým grafom sprava doľava a v každom vrchole vynásobí, čo prišlo, deriváciou tej operácie:
∂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
(farby podľa vzorca nižšie)
∂L/∂w = ∂L/∂ŷ · ∂ŷ/∂z · ∂z/∂w
- ∂L/∂w
- o koľko vzrastie chyba na jednotku zmeny váhy — presne to potrebuje gradientný zostup
- ∂L/∂ŷ = 2(ŷ − y)
- ako chybu mení odpoveď neurónu — je tým väčšia, čím viac sa odpoveď míňa s pravdou, a znamienko hovorí, či je príliš veľká, alebo malá (≈ −0,755)
- ∂ŷ/∂z = σ(1 − σ)
- ako odpoveď mení sigmoida — keď je neurón „nasýtený“ (σ pri 0 alebo 1), je tento článok takmer nula a signál ďalej neprejde (≈ 0,235)
- ∂z/∂w = x
- ako váha mení vnútorný súčet — váha násobí vstup, takže jej vplyv je taký veľký ako vstup (= 2); pri nulovom vstupe sa váha nemá z čoho učiť
Oba gradienty sú záporné. To znamená, že keď w aj b trochu zväčšíme, chyba klesne — neurón potom odpovie bližšie k jednotke. Gradientný zostup urobí presne toto: posunie parametre kúsok proti gradientu. Celá neurónová sieť sa učí rovnako, len má namiesto jedného neurónu milióny a spätný prechod ide cez stovky vrstiev. Mimochodom, výsledok sa dá overiť hrubou silou — posunúť w o máličko, vypočítať chybu znova a vydeliť. Vyjde to isté, len pomalšie.
Celý postup ako algoritmus — dopredný prechod, spätný prechod, krok:
def krok_uceni(w, b, x, y, eta):
# dopredný prechod: hodnoty zľava doprava (a zapamätať si ich)
z = w * x + b
y_hat = sigmoida(z)
L = (y_hat - y) ** 2
# spätný prechod: derivácie sprava doľava, reťazové pravidlo
dL_dyhat = 2 * (y_hat - y)
dL_dz = dL_dyhat * y_hat * (1 - y_hat) # σ′ zo zapamätanej hodnoty
dL_dw = dL_dz * x
dL_db = dL_dz * 1
# gradientný zostup: kúsok proti gradientu
return w - eta * dL_dw, b - eta * dL_db
Príklad — jeden krok učenia a kontrola gradientu
krok s η = 1: w ← 0,5 − 1 · (−0,355) ≈ 0,855, b ← −0,5 − 1 · (−0,177) ≈ −0,323
nanovo: z ≈ 0,855 · 2 − 0,323 ≈ 1,387, ŷ = σ(1,387) ≈ 0,800, L ≈ 0,040 (predtým 0,143)
kontrola centrálnou diferenciou, h = 0,001: L(w + h) − L(w − h)/2h ≈ −0,355
Jediný krok zrazil chybu na necelú tretinu a odpoveď sa posunula z 0,622 na 0,800. Centrálna diferencia (posun na obe strany) je presnejšia než jednostranná z definície: chyba klesá s h2, nie s h.
8. Derivácie v umelej inteligencii
- Automatické derivovanie — knižnice ako PyTorch a JAX si pri výpočte stavajú výpočtový graf a gradient vypočítajú spätným prechodom samy. Nikto derivácie sietí nepíše ručne.
- Numerická derivácia (malé h) je pre milióny parametrov príliš pomalá — na každý parameter jeden výpočet navyše. Spätné šírenie vypočíta všetky parciálne derivácie za cenu zhruba jedného dopredného prechodu.
- Miznúci gradient — derivácia sigmoidy je najviac 0,25. Reťazové pravidlo cez päť sigmoid za sebou násobí najviac 0,255 ≈ 0,001, takže hlboké vrstvy sa takmer neučia. Preto sa v skrytých vrstvách presadila ReLU s deriváciou 1.
- Gradient podľa vstupu ukazuje, ktoré pixely obrázka najviac ovplyvnili rozhodnutie siete — tak sa kreslia „mapy pozornosti“ a hľadajú slabiny modelov.
Veta — derivácia sigmoidy je najviac ¼
Nech σ : ℝ → ℝ, σ(x) = 1/1 + e−x, je sigmoida. Potom pre všetky x ∈ ℝ platí
0 < σ ′(x) ≤ 1/4,
a rovnosť σ ′(x) = 1/4 nastáva práve pre x = 0.
Dôkaz. Označme p = σ(x); keďže e−x > 0, je p ∈ (0, 1). Podľa príkladu vyššie σ ′(x) = p(1 − p) > 0 a p(1 − p) = 1/4 − (p − 1/2)2 ≤ 1/4, s rovnosťou práve pre p = 1/2, teda e−x = 1, x = 0. ∎
Cez n sigmoid za sebou reťazové pravidlo vynásobí n takých článkov a medzi nimi váhy. Keď žiadna váha nemá absolútnu hodnotu väčšiu než 1, je výsledok v absolútnej hodnote najviac (1/4)n — pre n = 5 je to 1/1024 ≈ 0,001.
9. Zhrnutie
- Derivácia je rýchlosť zmeny — smernica dotyčnice, ku ktorej sa blížia sečnice.
- V minime je derivácia nula a jej znamienko hovorí, kadiaľ dole.
- Parciálna derivácia mení jeden gombík, gradient je vektor všetkých z nich a mieri najstrmšie do kopca.
- Reťazové pravidlo násobí derivácie článkov zloženej funkcie.
- Spätné šírenie je reťazové pravidlo na výpočtovom grafe — tak sa počíta gradient celej neurónovej siete.
Máte na to iný názor? Napíšte na support@coden-app.com.