Funkce a zobrazení: proč je každý model v AI funkce
Definiční obor, obraz, injektivita, skládání, inverze, funkce více proměnných a konvexita — s grafy sigmoidy, ReLU a chybové krajiny.
Série Základy AI Díl 6 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 funkce, definiční obor a obraz — a které funkce potkáte v AI nejčastěji.
- Co znamená injektivní, surjektivní a bijektivní, proč neuronová síť je složení funkcí a kdy existuje inverze.
- Proč je ztrátová funkce krajina a proč na konvexitě záleží při hledání jejího dna.
Co se hodí znát předem: Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory, Množiny a relace: stavebnice, ze které se skládají definice v AI
Každý model v umělé inteligenci je funkce. Klasifikátor spamu bere e-mail a vrací „spam“ nebo „ne-spam“, jazykový model bere text a vrací pravděpodobnosti dalšího slova, neuronová síť je funkce složená z tisíců menších funkcí. Učení pak není nic jiného než hledání té správné funkce.
Předchozí díl skončil definicí funkce jako zvláštní relace. Tady na ni navážeme: jak funkce vypadají, jaké mají vlastnosti, jak se skládají a proč na tom v AI záleží.
1. Co je funkce
Definice — funkce (zobrazení)
Nechť X a Y jsou množiny a X × Y = {(x, y) : x ∈ X, y ∈ Y} jejich kartézský součin (viz díl Množiny a relace). Funkce (zobrazení) z X do Y je relace f ⊆ X × Y, pro kterou platí
∀x ∈ X ∃! y ∈ Y : (x, y) ∈ f
(∃! čteme „existuje právě jedno“). Toto jediné y značíme f(x) a píšeme f : X → Y, x ↦ f(x). Funkce tedy přiřazuje každému prvku x ∈ X právě jeden prvek f(x) ∈ Y.
Pro funkci f : X → Y se zavádí:
- definiční obor je množina X;
- obor hodnot (cílová množina) je množina Y;
- obraz funkce je množina hodnot, kterých f opravdu nabývá: f(X) = {y ∈ Y : ∃x ∈ X : f(x) = y} = {f(x) : x ∈ X} ⊆ Y;
- graf funkce je množina dvojic {(x, f(x)) : x ∈ X} ⊆ X × Y.
Dvě funkce f, g : X → Y jsou si rovny, právě když f(x) = g(x) pro všechna x ∈ X.
Funkce je automat: vhodíte vstup a vypadne přesně jeden výstup — pokaždé stejný. Definiční obor říká, co se do automatu smí vhodit, obor hodnot, co z něj může vypadnout. Obraz je to, co z něj opravdu vypadne.
Rozdíl mezi oborem hodnot a obrazem je vidět na sigmoidě σ : ℝ → ℝ: smí vracet libovolné reálné číslo, ale opravdu vrací jen čísla mezi 0 a 1. Proto se z ní dá číst pravděpodobnost.
Příklad — obor hodnot a obraz funkce x2
f : ℝ → ℝ, f(x) = x2. Obor hodnot je ℝ, ale obraz je jen f(ℝ) = [0, ∞).
Proč: x2 ≥ 0 pro každé reálné x, takže záporná čísla se nikdy neobjeví. A každé y ≥ 0 se objeví: f(√y) = y, třeba f(3) = 9.
2. Funkce, které potkáte v AI
Funkci jedné proměnné nejlíp pochopíte z jejího grafu. Tyhle se v umělé inteligenci objevují pořád dokola — jako modely, jako aktivační funkce neuronových sítí nebo jako ztrátové funkce:
- Lineární funkce je nejjednodušší model — lineární regrese není nic jiného.
- Kvadratická funkce je základ střední kvadratické chyby: trest roste s druhou mocninou odchylky.
- Exponenciála a logaritmus jsou navzájem inverzní; logaritmus převádí násobení na sčítání, a proto ho najdete v každé ztrátě založené na pravděpodobnosti.
- Sigmoida a tanh „stlačí“ libovolné číslo do intervalu (0, 1), respektive (−1, 1).
- ReLU nechá kladná čísla projít a záporná vynuluje. Je tak jednoduchá, že se dlouho nevěřilo, že bude fungovat — dnes je nejpoužívanější aktivační funkcí.
Definice — sigmoida, hyperbolický tangens a ReLU
Nechť e ≈ 2,718 je Eulerovo číslo (základ přirozeného logaritmu). Všechny tři funkce jsou definované pro každé x ∈ ℝ.
- Sigmoida (logistická funkce) je funkce σ : ℝ → ℝ, σ(x) = 1/1 + e−x.
- Hyperbolický tangens je funkce tanh : ℝ → ℝ, tanh x = ex − e−x/ex + e−x.
- ReLU (rectified linear unit) je funkce ReLU : ℝ → ℝ, ReLU(x) = max(0, x) = x pro x > 0, ReLU(x) = 0 pro x ≤ 0.
Jmenovatelé v 1. a 2. jsou vždy kladné (et > 0 pro každé t ∈ ℝ), takže se nikdy nedělí nulou. Obraz sigmoidy je interval (0, 1), obraz tanh interval (−1, 1) a obraz ReLU interval [0, ∞). Hyperbolický tangens je jen posunutá a natažená sigmoida: tanh x = 2σ(2x) − 1 pro všechna x ∈ ℝ.
σ(x) = 1/1 + e−x
- σ(x)
- výsledek mezi 0 a 1 — chceme z libovolného skóre udělat něco, co se dá číst jako pravděpodobnost
- e−x
- vždy kladné; pro velké x se blíží 0, pro velmi záporné x roste nade všechny meze — to je „páka“, která celý výsledek posouvá
- 1 +
- jmenovatel je tak vždy větší než 1: výsledek nikdy nepřekročí 1 a nikdy se nedělí nulou
- 1
- jednička v čitateli a zlomková čára převracejí: velký jmenovatel (velmi záporné x) dá skoro 0, jmenovatel blízko 1 (velké x) dá skoro 1
Příklad — sigmoida v několika bodech
Barvy odpovídají členům vzorce výše.
σ(0) = 1/1 + e0 = 1/1 + 1 = 0,5 — skóre 0 znamená „nevím“.
σ(2) = 1/1 + e−2 ≈ 1/1 + 0,1353 ≈ 0,881
σ(−2) = 1/1 + e2 ≈ 1/1 + 7,389 ≈ 0,119
Všimněte si, že σ(2) + σ(−2) = 1. Platí to obecně, σ(−x) = 1 − σ(x): opačné skóre dá opačnou pravděpodobnost.
A tanh 1 = 2σ(2) − 1 ≈ 2 · 0,8808 − 1 ≈ 0,762.
Kvadratická funkce se v AI nejčastěji objeví ve střední kvadratické chybě (mean squared error, MSE). Model odhadne n čísel ŷ1, …, ŷn, správně mělo vyjít y1, …, yn:
MSE = 1/n ∑i=1n (yi − ŷi)2
- yi − ŷi
- odchylka u i-tého příkladu — o kolik se model spletl a kterým směrem
- 2
- druhá mocnina udělá z každé odchylky kladné číslo (chyby nahoru a dolů se nevyruší) a velké chyby trestá víc než úměrně
- ∑i=1n
- sečte tresty přes všechny příklady — hodnotíme model na celých datech, ne na jednom bodě
- 1/n
- z celkového součtu udělá průměr, aby šlo porovnat chybu na 10 a na 10 000 příkladech
Příklad — MSE tří odhadů
Správně: y = (3, 5, 2), model: ŷ = (2,5; 5; 4).
Barvy odpovídají členům vzorce výše.
Odchylky: 3 − 2,5 = 0,5; 5 − 5 = 0; 2 − 4 = −2.
Druhé mocniny: 0,25; 0; 4. Součet 4,25.
MSE = 1/3 · 4,25 = 4,25/3 ≈ 1,42. Jediná velká chyba (−2) tvoří 4 ze 4,25 — přesně to „velké chyby trestá víc“.
Věta — logaritmus převádí součin na součet
Věta. Nechť ln : (0, ∞) → ℝ je přirozený logaritmus, tj. funkce inverzní k x ↦ ex (viz kapitolu o inverzních funkcích níže), a nechť a, b ∈ ℝ, a > 0, b > 0. Pak
ln(a · b) = ln a + ln b.
Důkaz. Podle pravidla pro mocniny es + t = es · et je eln a + ln b = eln a · eln b = a · b. Zlogaritmováním obou stran, protože ln je inverzní k ex, dostaneme ln a + ln b = ln(ab). ∎
Příklad. Model dal třem správným odpovědím pravděpodobnosti 0,9; 0,8 a 0,5. Pravděpodobnost všech tří (při nezávislosti) je 0,9 · 0,8 · 0,5 = 0,36. V logaritmech: ln 0,9 + ln 0,8 + ln 0,5 ≈ −0,105 + (−0,223) + (−0,693) ≈ −1,02 = ln 0,36. U milionu příkladů by součin podtekl k nule, součet logaritmů zůstane rozumné číslo — proto ztráty pracují s logaritmy.
3. Injektivní, surjektivní a bijektivní
Definice — prostá, na a vzájemně jednoznačná funkce
Nechť X, Y jsou množiny a f : X → Y je funkce.
- f je injektivní (prostá), právě když ∀x1, x2 ∈ X : f(x1) = f(x2) ⇒ x1 = x2. Ekvivalentně: x1 ≠ x2 ⇒ f(x1) ≠ f(x2) — různé vstupy dávají různé výstupy.
- f je surjektivní (zobrazení „na“), právě když ∀y ∈ Y ∃x ∈ X : f(x) = y, tj. právě když f(X) = Y — funkce se trefí do každého prvku Y.
- f je bijektivní (vzájemně jednoznačná), právě když je injektivní a zároveň surjektivní, tj. právě když ∀y ∈ Y ∃! x ∈ X : f(x) = y.
Injektivní: žádné dva vstupy nesdílejí výstup — z výstupu se dá poznat, odkud přišel. Surjektivní: nic v cílové množině nezůstane opuštěné. Bijektivní: každému vstupu odpovídá přesně jeden výstup a naopak — jako šatna, kde každý kabát má svůj lísteček.
V AI je skoro každý model neinjektivní: klasifikátor pošle tisíce různých fotek koček do jediné třídy „kočka“. Informace o tom, která fotka to byla, se tím ztratí — a to je v pořádku, právě to po klasifikátoru chceme. Naopak kompresní modely (autoenkodéry) se snaží být „skoro injektivní“, aby se ze zkomprimovaného tvaru dal vstup zase rekonstruovat.
Příklad — jak se vlastnost ověří nebo vyvrátí
f(x) = x2 na ℝ není injektivní: stačí jeden protipříklad, f(−2) = f(2) = 4, přitom −2 ≠ 2.
Na [0, ∞) injektivní je: z x12 = x22 plyne (x1 − x2)(x1 + x2) = 0, a protože pro nezáporná čísla je x1 + x2 = 0 jen při x1 = x2 = 0, vyjde vždy x1 = x2.
f(x) = 2x + 1 na ℝ je bijektivní: k libovolnému y najdeme jediné x = y − 1/2.
Věta — kolik je funkcí, prostých a vzájemně jednoznačných
Věta. Nechť X, Y jsou konečné množiny, |X| = m a |Y| = n, kde |M| značí počet prvků množiny M a m, n ∈ ℕ, m, n ≥ 1. Pak
- všech funkcí f : X → Y je nm;
- injektivních funkcí f : X → Y je n · (n − 1) · … · (n − m + 1) pro m ≤ n a 0 pro m > n;
- je-li m = n, je funkce f : X → Y injektivní, právě když je bijektivní, a bijekcí je n! = n · (n − 1) · … · 1.
Důkaz. 1. Každý z m vstupů si nezávisle vybere jeden z n výstupů. 2. První vstup má n možností, druhý už jen n − 1 (nesmí trefit obsazený výstup), atd.; m-tý vstup má n − m + 1 možností. Pro m > n by (n + 1)-ní vstup neměl žádnou volnou možnost — víc holubů než holubníků. 3. Injektivní funkce trefí m = n různých prvků nprvkové množiny Y, tedy všechny, a je i surjektivní; dosazením m = n do 2. vyjde n!. ∎
Ověřeno hrubou silou (projitím všech funkcí):
| |X| → |Y| | všech | injektivních | surjektivních | bijektivních |
|---|---|---|---|---|
| 3 → 3 | 33 = 27 | 3 · 2 · 1 = 6 | 6 | 6 |
| 3 → 4 | 43 = 64 | 4 · 3 · 2 = 24 | 0 | 0 |
| 4 → 3 | 34 = 81 | 0 | 36 | 0 |
Surjekcí 4 → 3 je 36: vybereme, které dva ze čtyř vstupů sdílejí výstup (6 možností), a pak rozdělíme tři výstupy mezi tři skupiny (3! = 6 možností); 6 · 6 = 36.
4. Skládání funkcí
Definice — složená funkce
Nechť X, Y, Z jsou množiny a f : X → Y, g : Y → Z jsou funkce (cílová množina f je definičním oborem g). Složená funkce („g po f“) je funkce
g ∘ f : X → Z, (g ∘ f)(x) = g(f(x)) pro všechna x ∈ X.
Nejdřív se tedy použije f, pak g. Vlastnosti:
- asociativita: je-li navíc W množina a h : Z → W funkce, pak h ∘ (g ∘ f) = (h ∘ g) ∘ f, protože obě strany posílají každé x ∈ X na h(g(f(x)));
- obecně ne komutativita: i když X = Y = Z a existují obě složení, může být g ∘ f ≠ f ∘ g (příklad níže).
Skládání je montážní linka: výstup jednoho stroje jde rovnou do dalšího. Záleží na pořadí — nejdřív obléct a pak se umýt dopadne jinak než naopak.
Vezměme f(x) = 2x + 1 a g(x) = x2:
(g ∘ f)(3) = g(f(3)) = g(7) = 49
(f ∘ g)(3) = f(g(3)) = f(9) = 19
Tohle je přesně stavba neuronové sítě. Každá vrstva je funkce — lineární krok následovaný aktivační funkcí — a celá síť je jejich složení: f = f3 ∘ f2 ∘ f1. „Hluboká“ síť je prostě dlouhé složení. A až se v dalších dílech budeme učit derivovat, řetízkové pravidlo bude říkat, jak derivovat právě složené funkce.
h = φ(W x + b)
- h
- výstup vrstvy (vektor) — půjde jako vstup do další vrstvy; tím vzniká složení
- x
- vstup vrstvy: data, nebo výstup předchozí vrstvy
- W
- matice vah: každý výstup je vážený součet všech vstupů a váhy určují, na kterých záleží — právě je se síť učí
- b
- posun (bias): bez něj by při nulovém vstupu musel vyjít nulový součet; posun dovolí nastavit práh, od kterého neuron „zapne“
- φ
- aktivační funkce po složkách (ReLU, sigmoida, tanh) — jediná nelineární část; bez ní by se celá síť složila do jedné lineární funkce
Příklad — jedna vrstva se dvěma neurony
W = ( 1 −1 ; 0,5 2 ) (dva řádky, jeden na neuron), b = (−2, −1), x = (2, 1), φ = ReLU (barvy podle vzorce výše).
1. neuron: 1 · 2 + (−1) · 1 + (−2) = −1, ReLU(−1) = 0 — neuron mlčí.
2. neuron: 0,5 · 2 + 2 · 1 + (−1) = 2, ReLU(2) = 2.
Výstup vrstvy h = (0, 2) jde jako vstup do další vrstvy.
def sit(x, vrstvy): # vrstvy = [(W1, b1), (W2, b2), ...]
h = x
for W, b in vrstvy: # f = f_k ∘ ... ∘ f_2 ∘ f_1
h = relu(W @ h + b) # výstup jedné vrstvy je vstupem další
return h
Věta — složení lineárních funkcí je lineární funkce
Věta. Nechť a, b, c, d ∈ ℝ a f, g : ℝ → ℝ jsou funkce f(x) = ax + b a g(x) = cx + d. Pak pro všechna x ∈ ℝ
(g ∘ f)(x) = (ca)x + (cb + d),
tj. g ∘ f je opět funkce tvaru x ↦ a′x + b′ s a′ = ca a b′ = cb + d.
Důkaz. g(f(x)) = c(ax + b) + d = cax + cb + d. ∎
Pro vektory a matice stejně: nechť W1 ∈ ℝk×n, b1 ∈ ℝk, W2 ∈ ℝm×k a b2 ∈ ℝm. Pak pro každé x ∈ ℝn je W2(W1x + b1) + b2 = (W2W1)x + (W2b1 + b2), kde W2W1 ∈ ℝm×n.
Příklad. f(x) = 2x + 1, g(x) = 3x − 4 ⇒ (g ∘ f)(x) = 6x − 1. Kontrola v bodě 3: g(f(3)) = g(7) = 17 a 6 · 3 − 1 = 17.
Proto potřebují sítě aktivační funkce: deset lineárních vrstev bez φ umí přesně totéž co jedna.
5. Inverzní funkce
Definice — inverzní funkce
Nechť X, Y jsou množiny a f : X → Y je funkce. Funkce g : Y → X je inverzní k f, právě když platí obě podmínky
- ∀x ∈ X : g(f(x)) = x (tj. g ∘ f = idX),
- ∀y ∈ Y : f(g(y)) = y (tj. f ∘ g = idY),
kde idX : X → X, x ↦ x je identita na X. Inverzní funkci značíme f−1. Slovy: g vrátí každý výstup f na vstup, ze kterého vznikl, a naopak.
Věta. Nechť f : X → Y je funkce. Inverzní funkce k f existuje, právě když je f bijektivní; pokud existuje, je jediná a pro každé y ∈ Y je f−1(y) to jediné x ∈ X, pro které f(x) = y.
Inverzní funkce dělá krok zpátky: z výstupu zjistí vstup. Jde to jen tehdy, když žádné dva vstupy nevedou na stejný výstup (jinak by nebylo jasné, kam se vrátit) a když každý výstup opravdu někam vede.
Exponenciála a logaritmus jsou dvojice inverzních funkcí: ln(ex) = x. K sigmoidě, chápané jako bijekce σ : ℝ → (0, 1), je inverzní funkce logit : (0, 1) → ℝ, logit(p) = ln p/1 − p — z pravděpodobnosti udělá zpátky libovolné reálné číslo. Proto se výstupům sítě před sigmoidou nebo softmaxem říká „logity“.
Příklad — odvození logitu krok za krokem
Inverzi najdeme tak, že rovnici p = σ(x) vyřešíme pro x (pro p ∈ (0, 1)):
p = 1/1 + e−x
1 + e−x = 1/p (převrácení obou stran)
e−x = 1/p − 1 = 1 − p/p
−x = ln 1 − p/p (ln je inverze ex)
x = −ln 1 − p/p = ln p/1 − p = logit(p)
Čísla: logit(0,8) = ln 0,8/0,2 = ln 4 ≈ 1,386. Zpátky (barvy podle rozboru sigmoidy výše): σ(ln 4) = 1/1 + 1/4 = 0,8, protože e−ln 4 = 1/4. Podíl p/1 − p = 4 jsou šance („4 : 1“); logit je jejich logaritmus.
6. Funkce více proměnných
Definice — funkce více proměnných
Nechť n, m ∈ ℕ, n, m ≥ 1, a ℝn = ℝ × … × ℝ (nkrát) je množina všech n-tic reálných čísel (vektorů) x = (x1, …, xn).
- Funkce n proměnných (reálná) je funkce f : ℝn → ℝ, (x1, …, xn) ↦ f(x1, …, xn), tj. každému vektoru přiřadí právě jedno reálné číslo.
- Vektorová funkce je funkce f : ℝn → ℝm, x ↦ (f1(x), …, fm(x)), kde fi : ℝn → ℝ pro i = 1, …, m jsou její složky; každému vektoru přiřadí právě jeden vektor.
Většina skutečných funkcí bere víc vstupů naráz: cena bytu závisí na ploše, poloze i stáří. Vrstva neuronové sítě bere celý vektor a vrací jiný vektor.
Funkci dvou proměnných si můžeme nakreslit jako mapu: každý bod (x, y) obarvíme podle hodnoty f(x, y). Tady je Himmelblauova funkce, klasický test optimalizačních algoritmů. Tmavá místa jsou údolí s malou hodnotou, bílé body jsou čtyři minima, ve kterých je funkce rovna nule:
Příklad — Himmelblauova funkce a proč má minima v nule
f(x, y) = (x2 + y − 11)2 + (x + y2 − 7)2.
Obě závorky jsou na druhou, takže f ≥ 0 všude. Nula vyjde přesně tam, kde jsou obě závorky nulové zároveň — kde platí soustava x2 + y = 11 a x + y2 = 7. Ta má čtyři řešení, odtud čtyři údolí.
V bodě (3, 2): (9 + 2 − 11)2 + (3 + 4 − 7)2 = 0 + 0 = 0 — minimum.
V bodě (0, 0): (−11)2 + (−7)2 = 121 + 49 = 170 — vysoko na kopci.
Přesně takhle si představte ztrátovou funkci modelu: vstupem jsou jeho parametry, výstupem chyba. Trénink je hledání nejnižšího místa v krajině — jen místo dvou rozměrů jich má krajina skutečného modelu miliony.
7. Monotonie a konvexita
Definice — rostoucí a konvexní funkce
Nechť I ⊆ ℝ je interval a f : I → ℝ je funkce.
- f je rostoucí, právě když ∀x1, x2 ∈ I : x1 < x2 ⇒ f(x1) < f(x2). Rostoucí funkce je vždy injektivní (z x1 ≠ x2 plyne x1 < x2 nebo x2 < x1, a tedy f(x1) ≠ f(x2)).
- f je konvexní, právě když ∀x1, x2 ∈ I ∀t ∈ [0, 1] : f(tx1 + (1 − t)x2) ≤ t f(x1) + (1 − t) f(x2). (Bod tx1 + (1 − t)x2 leží mezi x1 a x2, a tedy v intervalu I.)
- Bod x* ∈ I je lokální minimum f, právě když ∃δ > 0 ∀x ∈ I : |x − x*| < δ ⇒ f(x*) ≤ f(x), a globální minimum, právě když ∀x ∈ I : f(x*) ≤ f(x).
Věta. Nechť I ⊆ ℝ je interval, f : I → ℝ je konvexní funkce a x* ∈ I je lokální minimum f. Pak x* je globální minimum f.
Konvexní funkce má tvar mísy: úsečka mezi dvěma body grafu leží vždycky nad grafem. V míse je jen jedno dno — kdo jde pořád z kopce, najde ho. U nekonvexní funkce může skončit v menší jámě a o hlubší vedle se nedozví.
f(tx1 + (1 − t)x2) ≤ t f(x1) + (1 − t) f(x2)
- tx1 + (1 − t)x2
- bod mezi x1 a x2; váhy t a 1 − t dávají dohromady 1, takže pro t od 1 do 0 projdeme celý úsek od x1 do x2
- f( … )
- výška grafu v tom bodě
- t f(x1) + (1 − t) f(x2)
- výška úsečky (tětivy) mezi body grafu nad x1 a x2 — se stejnými vahami, takže je nad tímtéž bodem
- ≤
- graf nikdy nevystoupí nad tětivu — to je tvar mísy; kdyby někde vystoupil, je tam „hrb“, za kterým se může schovat další údolí
Příklad — nerovnost konvexity v číslech
Barvy odpovídají členům nerovnosti výše.
f(x) = x2, x1 = −1, x2 = 3, t = 1/2: bod uprostřed je 1, vlevo f(1) = 1, vpravo 1 + 9/2 = 5. 1 ≤ 5 ✓.
f(x) = x4 − 3x2 + x, za x1, x2 vezmeme obě minima −1,30 a 1,13, t = 1/2: bod uprostřed je −0,085,
vlevo f(−0,085) ≈ −0,11, vpravo −3,51 + (−1,07)/2 = −2,29.
−0,11 > −2,29 — nerovnost ≤ neplatí, funkce není konvexní. Ten „hrb“ mezi minimy je přesně to, co odděluje dvě údolí.
konvexní: x², jediné minimum
nekonvexní: x⁴ − 3x² + x
Nekonvexní funkce x4 − 3x2 + x má dvě minima: globální u x ≈ −1,30 s hodnotou ≈ −3,51 a lokální u x ≈ 1,13 s hodnotou ≈ −1,07. Kdo začne hledat vpravo a jde pořád dolů, skončí v tom horším. Ztrátové funkce lineární a logistické regrese jsou konvexní — proto jejich trénink spolehlivě najde nejlepší řešení. Ztráty neuronových sítí konvexní nejsou, a o tom, jak se s tím žije, bude díl o gradientním sestupu.
Minima v grafu výše jsme našli numericky, bez derivací: hustou mřížkou kandidátů, které pak doladí metoda zlatého řezu. Ta v každém kroku zahodí část intervalu, ve které minimum být nemůže, a interval se zmenší na ≈ 0,618 předchozí délky.
def minima(f, a, b, n=2000):
krok = (b - a) / n
vysledek = []
for i in range(1, n):
x = a + i * krok
if f(x) < f(x - krok) and f(x) < f(x + krok): # kandidát: nižší než sousedé
l, p = x - krok, x + krok
z = (5 ** 0.5 - 1) / 2 # ≈ 0,618
for _ in range(60): # zlatý řez
c, d = p - z * (p - l), l + z * (p - l)
if f(c) < f(d): p = d # minimum je vlevo od d
else: l = c # minimum je vpravo od c
vysledek.append((l + p) / 2)
return vysledek
8. Funkce v umělé inteligenci
Teď už se dá celé strojové učení říct jazykem funkcí:
- Model je funkce fθ : X → Y s parametry θ — celá rodina funkcí, jedna pro každou volbu parametrů.
- Ztrátová funkce L : Y × Y → ℝ říká, kolik stojí odpověď ŷ, když správně je y.
- Učení je výběr jedné funkce z rodiny: argmin přes θ průměrné ztráty — funkce parametrů, kterou jsme právě kreslili jako krajinu.
- Aktivační funkce (sigmoida, tanh, ReLU) dělají z lineárních vrstev nelineární síť; bez nich by složení lineárních funkcí bylo zase jen lineární funkcí.
θ* = argminθ 1/n ∑i=1n L(fθ(xi), yi)
- θ*
- naučené parametry — tím je z celé rodiny vybraná jedna funkce fθ*
- argminθ
- nechceme nejmenší chybu samotnou, ale místo, kde nastane — parametry, ne číslo
- 1/n ∑i=1n
- průměr přes všech n trénovacích příkladů — model má být dobrý na datech jako celku
- L
- ztrátová funkce — převede rozdíl mezi odpovědí a pravdou na jedno číslo, které jde minimalizovat (třeba druhou mocninu odchylky jako v MSE)
- fθ(xi)
- odpověď modelu na i-tý vstup; jediné místo, kde ve vzorci vystupuje θ
- yi
- správná odpověď z dat, se kterou odpověď modelu srovnáváme
9. Shrnutí
- Funkce přiřazuje každému vstupu právě jeden výstup; obraz je to, kam se opravdu trefí.
- Injektivní funkce nesplete dva vstupy, surjektivní pokryje celý cíl, bijektivní má inverzi.
- Skládání funkcí je montážní linka — a neuronová síť je složení vrstev.
- Ztrátová funkce je krajina nad prostorem parametrů; konvexní krajina má jediné dno, nekonvexní jich může mít víc.
Máte na to jiný názor? Napište na support@coden-app.com.