Funkcie a zobrazenia: prečo je každý model v AI funkcia
Definičný obor, obraz, injektivita, skladanie, inverzia, funkcie viacerých premenných a konvexnosť — s grafmi sigmoidy, ReLU a chybovej krajiny.
Séria Základy AI Diel 6 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 funkcia, definičný obor a obraz — a ktoré funkcie stretnete v AI najčastejšie.
- Čo znamená injektívna, surjektívna a bijektívna, prečo je neurónová sieť zloženie funkcií a kedy existuje inverzia.
- Prečo je stratová funkcia krajina a prečo na konvexnosti záleží pri hľadaní jej dna.
Čo sa hodí vedieť vopred: 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
Každý model v umelej inteligencii je funkcia. Klasifikátor spamu berie e-mail a vracia „spam“ alebo „nie-spam“, jazykový model berie text a vracia pravdepodobnosti ďalšieho slova, neurónová sieť je funkcia zložená z tisícov menších funkcií. Učenie potom nie je nič iné než hľadanie tej správnej funkcie.
Predchádzajúci diel skončil definíciou funkcie ako zvláštnej relácie. Tu na ňu nadviažeme: ako funkcie vyzerajú, aké majú vlastnosti, ako sa skladajú a prečo na tom v AI záleží.
1. Čo je funkcia
Definícia — funkcia (zobrazenie)
Nech X a Y sú množiny a X × Y = {(x, y) : x ∈ X, y ∈ Y} ich karteziánsky súčin (pozri diel Množiny a relácie). Funkcia (zobrazenie) z X do Y je relácia f ⊆ X × Y, pre ktorú platí
∀x ∈ X ∃! y ∈ Y : (x, y) ∈ f
(∃! čítame „existuje práve jedno“). Toto jediné y označujeme f(x) a píšeme f : X → Y, x ↦ f(x). Funkcia teda priraďuje každému prvku x ∈ X práve jeden prvok f(x) ∈ Y.
Pre funkciu f : X → Y sa zavádza:
- definičný obor je množina X;
- obor hodnôt (cieľová množina) je množina Y;
- obraz funkcie je množina hodnôt, ktoré f naozaj nadobúda: f(X) = {y ∈ Y : ∃x ∈ X : f(x) = y} = {f(x) : x ∈ X} ⊆ Y;
- graf funkcie je množina dvojíc {(x, f(x)) : x ∈ X} ⊆ X × Y.
Dve funkcie f, g : X → Y sa rovnajú práve vtedy, keď f(x) = g(x) pre všetky x ∈ X.
Funkcia je automat: vhodíte vstup a vypadne presne jeden výstup — zakaždým rovnaký. Definičný obor hovorí, čo sa do automatu smie vhodiť, obor hodnôt, čo z neho môže vypadnúť. Obraz je to, čo z neho naozaj vypadne.
Rozdiel medzi oborom hodnôt a obrazom je vidieť na sigmoide σ : ℝ → ℝ: smie vracať ľubovoľné reálne číslo, ale naozaj vracia len čísla medzi 0 a 1. Preto sa z nej dá čítať pravdepodobnosť.
Príklad — obor hodnôt a obraz funkcie x2
f : ℝ → ℝ, f(x) = x2. Obor hodnôt je ℝ, ale obraz je len f(ℝ) = [0, ∞).
Prečo: x2 ≥ 0 pre každé reálne x, takže záporné čísla sa nikdy neobjavia. A každé y ≥ 0 sa objaví: f(√y) = y, napríklad f(3) = 9.
2. Funkcie, ktoré stretnete v AI
Funkciu jednej premennej najlepšie pochopíte z jej grafu. Tieto sa v umelej inteligencii objavujú stále dookola — ako modely, ako aktivačné funkcie neurónových sietí alebo ako stratové funkcie:
- Lineárna funkcia je najjednoduchší model — lineárna regresia nie je nič iné.
- Kvadratická funkcia je základ strednej kvadratickej chyby: trest rastie s druhou mocninou odchýlky.
- Exponenciála a logaritmus sú navzájom inverzné; logaritmus prevádza násobenie na sčítanie, a preto ho nájdete v každej strate založenej na pravdepodobnosti.
- Sigmoida a tanh „stlačia“ ľubovoľné číslo do intervalu (0, 1), respektíve (−1, 1).
- ReLU nechá kladné čísla prejsť a záporné vynuluje. Je taká jednoduchá, že sa dlho neverilo, že bude fungovať — dnes je najpoužívanejšou aktivačnou funkciou.
Definícia — sigmoida, hyperbolický tangens a ReLU
Nech e ≈ 2,718 je Eulerovo číslo (základ prirodzeného logaritmu). Všetky tri funkcie sú definované pre každé x ∈ ℝ.
- Sigmoida (logistická funkcia) je funkcia σ : ℝ → ℝ, σ(x) = 1/1 + e−x.
- Hyperbolický tangens je funkcia tanh : ℝ → ℝ, tanh x = ex − e−x/ex + e−x.
- ReLU (rectified linear unit) je funkcia ReLU : ℝ → ℝ, ReLU(x) = max(0, x) = x pre x > 0, ReLU(x) = 0 pre x ≤ 0.
Menovatele v 1. a 2. sú vždy kladné (et > 0 pre každé t ∈ ℝ), takže sa nikdy nedelí nulou. Obraz sigmoidy je interval (0, 1), obraz tanh interval (−1, 1) a obraz ReLU interval [0, ∞). Hyperbolický tangens je len posunutá a natiahnutá sigmoida: tanh x = 2σ(2x) − 1 pre všetky x ∈ ℝ.
σ(x) = 1/1 + e−x
- σ(x)
- výsledok medzi 0 a 1 — chceme z ľubovoľného skóre urobiť niečo, čo sa dá čítať ako pravdepodobnosť
- e−x
- vždy kladné; pre veľké x sa blíži k 0, pre veľmi záporné x rastie nad všetky medze — to je „páka“, ktorá celý výsledok posúva
- 1 +
- menovateľ je tak vždy väčší než 1: výsledok nikdy neprekročí 1 a nikdy sa nedelí nulou
- 1
- jednotka v čitateli a zlomková čiara prevracajú: veľký menovateľ (veľmi záporné x) dá skoro 0, menovateľ blízko 1 (veľké x) dá skoro 1
Príklad — sigmoida v niekoľkých bodoch
Farby zodpovedajú členom vzorca vyššie.
σ(0) = 1/1 + e0 = 1/1 + 1 = 0,5 — skóre 0 znamená „neviem“.
σ(2) = 1/1 + e−2 ≈ 1/1 + 0,1353 ≈ 0,881
σ(−2) = 1/1 + e2 ≈ 1/1 + 7,389 ≈ 0,119
Všimnite si, že σ(2) + σ(−2) = 1. Platí to všeobecne, σ(−x) = 1 − σ(x): opačné skóre dá opačnú pravdepodobnosť.
A tanh 1 = 2σ(2) − 1 ≈ 2 · 0,8808 − 1 ≈ 0,762.
Kvadratická funkcia sa v AI najčastejšie objaví v strednej kvadratickej chybe (mean squared error, MSE). Model odhadne n čísel ŷ1, …, ŷn, správne malo vyjsť y1, …, yn:
MSE = 1/n ∑i=1n (yi − ŷi)2
- yi − ŷi
- odchýlka pri i-tom príklade — o koľko sa model pomýlil a ktorým smerom
- 2
- druhá mocnina urobí z každej odchýlky kladné číslo (chyby nahor a nadol sa nevyrušia) a veľké chyby trestá viac než úmerne
- ∑i=1n
- sčíta tresty cez všetky príklady — hodnotíme model na celých dátach, nie na jednom bode
- 1/n
- z celkového súčtu urobí priemer, aby sa dala porovnať chyba na 10 a na 10 000 príkladoch
Príklad — MSE troch odhadov
Správne: y = (3, 5, 2), model: ŷ = (2,5; 5; 4).
Farby zodpovedajú členom vzorca vyššie.
Odchýlky: 3 − 2,5 = 0,5; 5 − 5 = 0; 2 − 4 = −2.
Druhé mocniny: 0,25; 0; 4. Súčet 4,25.
MSE = 1/3 · 4,25 = 4,25/3 ≈ 1,42. Jediná veľká chyba (−2) tvorí 4 zo 4,25 — presne to „veľké chyby trestá viac“.
Veta — logaritmus prevádza súčin na súčet
Veta. Nech ln : (0, ∞) → ℝ je prirodzený logaritmus, t. j. funkcia inverzná k x ↦ ex (pozri kapitolu o inverzných funkciách nižšie), a nech a, b ∈ ℝ, a > 0, b > 0. Potom
ln(a · b) = ln a + ln b.
Dôkaz. Podľa pravidla pre mocniny es + t = es · et je eln a + ln b = eln a · eln b = a · b. Zlogaritmovaním oboch strán, keďže ln je inverzný k ex, dostaneme ln a + ln b = ln(ab). ∎
Príklad. Model dal trom správnym odpovediam pravdepodobnosti 0,9; 0,8 a 0,5. Pravdepodobnosť všetkých troch (pri nezávislosti) je 0,9 · 0,8 · 0,5 = 0,36. V logaritmoch: ln 0,9 + ln 0,8 + ln 0,5 ≈ −0,105 + (−0,223) + (−0,693) ≈ −1,02 = ln 0,36. Pri milióne príkladov by súčin podtiekol k nule, súčet logaritmov zostane rozumné číslo — preto straty pracujú s logaritmami.
3. Injektívna, surjektívna a bijektívna
Definícia — prostá, na a vzájomne jednoznačná funkcia
Nech X, Y sú množiny a f : X → Y je funkcia.
- f je injektívna (prostá) práve vtedy, keď ∀x1, x2 ∈ X : f(x1) = f(x2) ⇒ x1 = x2. Ekvivalentne: x1 ≠ x2 ⇒ f(x1) ≠ f(x2) — rôzne vstupy dávajú rôzne výstupy.
- f je surjektívna (zobrazenie „na“) práve vtedy, keď ∀y ∈ Y ∃x ∈ X : f(x) = y, t. j. práve vtedy, keď f(X) = Y — funkcia sa trafí do každého prvku Y.
- f je bijektívna (vzájomne jednoznačná) práve vtedy, keď je injektívna a zároveň surjektívna, t. j. práve vtedy, keď ∀y ∈ Y ∃! x ∈ X : f(x) = y.
Injektívna: žiadne dva vstupy nezdieľajú výstup — z výstupu sa dá spoznať, odkiaľ prišiel. Surjektívna: nič v cieľovej množine nezostane opustené. Bijektívna: každému vstupu zodpovedá presne jeden výstup a naopak — ako šatňa, kde každý kabát má svoj lístok.
V AI je takmer každý model neinjektívny: klasifikátor pošle tisíce rôznych fotiek mačiek do jedinej triedy „mačka“. Informácia o tom, ktorá fotka to bola, sa tým stratí — a to je v poriadku, práve to od klasifikátora chceme. Naopak kompresné modely (autoenkodéry) sa snažia byť „takmer injektívne“, aby sa zo skomprimovaného tvaru dal vstup znova rekonštruovať.
Príklad — ako sa vlastnosť overí alebo vyvráti
f(x) = x2 na ℝ nie je injektívna: stačí jeden protipríklad, f(−2) = f(2) = 4, pritom −2 ≠ 2.
Na [0, ∞) injektívna je: z x12 = x22 vyplýva (x1 − x2)(x1 + x2) = 0, a keďže pre nezáporné čísla je x1 + x2 = 0 len pri x1 = x2 = 0, vyjde vždy x1 = x2.
f(x) = 2x + 1 na ℝ je bijektívna: k ľubovoľnému y nájdeme jediné x = y − 1/2.
Veta — koľko je funkcií, prostých a vzájomne jednoznačných
Veta. Nech X, Y sú konečné množiny, |X| = m a |Y| = n, kde |M| označuje počet prvkov množiny M a m, n ∈ ℕ, m, n ≥ 1. Potom
- všetkých funkcií f : X → Y je nm;
- injektívnych funkcií f : X → Y je n · (n − 1) · … · (n − m + 1) pre m ≤ n a 0 pre m > n;
- ak m = n, je funkcia f : X → Y injektívna práve vtedy, keď je bijektívna, a bijekcií je n! = n · (n − 1) · … · 1.
Dôkaz. 1. Každý z m vstupov si nezávisle vyberie jeden z n výstupov. 2. Prvý vstup má n možností, druhý už len n − 1 (nesmie trafiť obsadený výstup) atď.; m-tý vstup má n − m + 1 možností. Pre m > n by (n + 1)-vý vstup nemal žiadnu voľnú možnosť — viac holubov než holubníkov. 3. Injektívna funkcia trafí m = n rôznych prvkov n-prvkovej množiny Y, teda všetky, a je aj surjektívna; dosadením m = n do 2. vyjde n!. ∎
Overené hrubou silou (prejdením všetkých funkcií):
| |X| → |Y| | všetkých | injektívnych | surjektívnych | bijektívnych |
|---|---|---|---|---|
| 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 |
Surjekcií 4 → 3 je 36: vyberieme, ktoré dva zo štyroch vstupov zdieľajú výstup (6 možností), a potom rozdelíme tri výstupy medzi tri skupiny (3! = 6 možností); 6 · 6 = 36.
4. Skladanie funkcií
Definícia — zložená funkcia
Nech X, Y, Z sú množiny a f : X → Y, g : Y → Z sú funkcie (cieľová množina f je definičným oborom g). Zložená funkcia („g po f“) je funkcia
g ∘ f : X → Z, (g ∘ f)(x) = g(f(x)) pre všetky x ∈ X.
Najprv sa teda použije f, potom g. Vlastnosti:
- asociatívnosť: ak je navyše W množina a h : Z → W funkcia, potom h ∘ (g ∘ f) = (h ∘ g) ∘ f, pretože obe strany posielajú každé x ∈ X na h(g(f(x)));
- vo všeobecnosti nie komutatívnosť: aj keď X = Y = Z a existujú obe zloženia, môže byť g ∘ f ≠ f ∘ g (príklad nižšie).
Skladanie je montážna linka: výstup jedného stroja ide rovno do ďalšieho. Záleží na poradí — najprv sa obliecť a potom umyť dopadne inak než naopak.
Vezmime 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
Toto je presne stavba neurónovej siete. Každá vrstva je funkcia — lineárny krok nasledovaný aktivačnou funkciou — a celá sieť je ich zložením: f = f3 ∘ f2 ∘ f1. „Hlboká“ sieť je jednoducho dlhé zloženie. A keď sa v ďalších dieloch budeme učiť derivovať, reťazové pravidlo bude hovoriť, ako derivovať práve zložené funkcie.
h = φ(W x + b)
- h
- výstup vrstvy (vektor) — pôjde ako vstup do ďalšej vrstvy; tým vzniká zloženie
- x
- vstup vrstvy: dáta, alebo výstup predchádzajúcej vrstvy
- W
- matica váh: každý výstup je vážený súčet všetkých vstupov a váhy určujú, na ktorých záleží — práve tie sa sieť učí
- b
- posun (bias): bez neho by pri nulovom vstupe musel vyjsť nulový súčet; posun dovolí nastaviť prah, od ktorého neurón „zapne“
- φ
- aktivačná funkcia po zložkách (ReLU, sigmoida, tanh) — jediná nelineárna časť; bez nej by sa celá sieť zložila do jednej lineárnej funkcie
Príklad — jedna vrstva s dvoma neurónmi
W = ( 1 −1 ; 0,5 2 ) (dva riadky, jeden na neurón), b = (−2, −1), x = (2, 1), φ = ReLU (farby podľa vzorca vyššie).
1. neurón: 1 · 2 + (−1) · 1 + (−2) = −1, ReLU(−1) = 0 — neurón mlčí.
2. neurón: 0,5 · 2 + 2 · 1 + (−1) = 2, ReLU(2) = 2.
Výstup vrstvy h = (0, 2) ide ako vstup do ďalšej 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 jednej vrstvy je vstupom ďalšej
return h
Veta — zloženie lineárnych funkcií je lineárna funkcia
Veta. Nech a, b, c, d ∈ ℝ a f, g : ℝ → ℝ sú funkcie f(x) = ax + b a g(x) = cx + d. Potom pre všetky x ∈ ℝ
(g ∘ f)(x) = (ca)x + (cb + d),
t. j. g ∘ f je opäť funkcia tvaru x ↦ a′x + b′ s a′ = ca a b′ = cb + d.
Dôkaz. g(f(x)) = c(ax + b) + d = cax + cb + d. ∎
Pre vektory a matice rovnako: nech W1 ∈ ℝk×n, b1 ∈ ℝk, W2 ∈ ℝm×k a b2 ∈ ℝm. Potom pre každé x ∈ ℝn je W2(W1x + b1) + b2 = (W2W1)x + (W2b1 + b2), kde W2W1 ∈ ℝm×n.
Príklad. f(x) = 2x + 1, g(x) = 3x − 4 ⇒ (g ∘ f)(x) = 6x − 1. Kontrola v bode 3: g(f(3)) = g(7) = 17 a 6 · 3 − 1 = 17.
Preto siete potrebujú aktivačné funkcie: desať lineárnych vrstiev bez φ vie presne to isté čo jedna.
5. Inverzná funkcia
Definícia — inverzná funkcia
Nech X, Y sú množiny a f : X → Y je funkcia. Funkcia g : Y → X je inverzná k f práve vtedy, keď platia obe podmienky
- ∀x ∈ X : g(f(x)) = x (t. j. g ∘ f = idX),
- ∀y ∈ Y : f(g(y)) = y (t. j. f ∘ g = idY),
kde idX : X → X, x ↦ x je identita na X. Inverznú funkciu označujeme f−1. Slovami: g vráti každý výstup f na vstup, z ktorého vznikol, a naopak.
Veta. Nech f : X → Y je funkcia. Inverzná funkcia k f existuje práve vtedy, keď je f bijektívna; ak existuje, je jediná a pre každé y ∈ Y je f−1(y) to jediné x ∈ X, pre ktoré f(x) = y.
Inverzná funkcia robí krok späť: z výstupu zistí vstup. Ide to len vtedy, keď žiadne dva vstupy nevedú na rovnaký výstup (inak by nebolo jasné, kam sa vrátiť) a keď každý výstup naozaj niekam vedie.
Exponenciála a logaritmus sú dvojica inverzných funkcií: ln(ex) = x. K sigmoide, chápanej ako bijekcia σ : ℝ → (0, 1), je inverznou funkciou logit : (0, 1) → ℝ, logit(p) = ln p/1 − p — z pravdepodobnosti urobí späť ľubovoľné reálne číslo. Preto sa výstupom siete pred sigmoidou alebo softmaxom hovorí „logity“.
Príklad — odvodenie logitu krok za krokom
Inverziu nájdeme tak, že rovnicu p = σ(x) vyriešime pre x (pre p ∈ (0, 1)):
p = 1/1 + e−x
1 + e−x = 1/p (prevrátenie oboch strán)
e−x = 1/p − 1 = 1 − p/p
−x = ln 1 − p/p (ln je inverzia 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. Späť (farby podľa rozboru sigmoidy vyššie): σ(ln 4) = 1/1 + 1/4 = 0,8, pretože e−ln 4 = 1/4. Podiel p/1 − p = 4 sú šance („4 : 1“); logit je ich logaritmus.
6. Funkcie viacerých premenných
Definícia — funkcia viacerých premenných
Nech n, m ∈ ℕ, n, m ≥ 1, a ℝn = ℝ × … × ℝ (n-krát) je množina všetkých n-tíc reálnych čísel (vektorov) x = (x1, …, xn).
- Funkcia n premenných (reálna) je funkcia f : ℝn → ℝ, (x1, …, xn) ↦ f(x1, …, xn), t. j. každému vektoru priradí práve jedno reálne číslo.
- Vektorová funkcia je funkcia f : ℝn → ℝm, x ↦ (f1(x), …, fm(x)), kde fi : ℝn → ℝ pre i = 1, …, m sú jej zložky; každému vektoru priradí práve jeden vektor.
Väčšina skutočných funkcií berie viac vstupov naraz: cena bytu závisí od plochy, polohy aj veku. Vrstva neurónovej siete berie celý vektor a vracia iný vektor.
Funkciu dvoch premenných si môžeme nakresliť ako mapu: každý bod (x, y) zafarbíme podľa hodnoty f(x, y). Tu je Himmelblauova funkcia, klasický test optimalizačných algoritmov. Tmavé miesta sú údolia s malou hodnotou, biele body sú štyri minimá, v ktorých je funkcia rovná nule:
Príklad — Himmelblauova funkcia a prečo má minimá v nule
f(x, y) = (x2 + y − 11)2 + (x + y2 − 7)2.
Obe zátvorky sú na druhú, takže f ≥ 0 všade. Nula vyjde presne tam, kde sú obe zátvorky nulové zároveň — kde platí sústava x2 + y = 11 a x + y2 = 7. Tá má štyri riešenia, odtiaľ štyri údolia.
V bode (3, 2): (9 + 2 − 11)2 + (3 + 4 − 7)2 = 0 + 0 = 0 — minimum.
V bode (0, 0): (−11)2 + (−7)2 = 121 + 49 = 170 — vysoko na kopci.
Presne takto si predstavte stratovú funkciu modelu: vstupom sú jeho parametre, výstupom chyba. Tréning je hľadanie najnižšieho miesta v krajine — len namiesto dvoch rozmerov ich má krajina skutočného modelu milióny.
7. Monotónnosť a konvexnosť
Definícia — rastúca a konvexná funkcia
Nech I ⊆ ℝ je interval a f : I → ℝ je funkcia.
- f je rastúca práve vtedy, keď ∀x1, x2 ∈ I : x1 < x2 ⇒ f(x1) < f(x2). Rastúca funkcia je vždy injektívna (z x1 ≠ x2 vyplýva x1 < x2 alebo x2 < x1, a teda f(x1) ≠ f(x2)).
- f je konvexná práve vtedy, keď ∀x1, x2 ∈ I ∀t ∈ [0, 1] : f(tx1 + (1 − t)x2) ≤ t f(x1) + (1 − t) f(x2). (Bod tx1 + (1 − t)x2 leží medzi x1 a x2, a teda v intervale I.)
- Bod x* ∈ I je lokálne minimum f práve vtedy, keď ∃δ > 0 ∀x ∈ I : |x − x*| < δ ⇒ f(x*) ≤ f(x), a globálne minimum práve vtedy, keď ∀x ∈ I : f(x*) ≤ f(x).
Veta. Nech I ⊆ ℝ je interval, f : I → ℝ je konvexná funkcia a x* ∈ I je lokálne minimum f. Potom x* je globálne minimum f.
Konvexná funkcia má tvar misy: úsečka medzi dvoma bodmi grafu leží vždy nad grafom. V mise je len jedno dno — kto ide stále z kopca, nájde ho. Pri nekonvexnej funkcii môže skončiť v menšej jame a o hlbšej vedľa sa nedozvie.
f(tx1 + (1 − t)x2) ≤ t f(x1) + (1 − t) f(x2)
- tx1 + (1 − t)x2
- bod medzi x1 a x2; váhy t a 1 − t dávajú dohromady 1, takže pre t od 1 do 0 prejdeme celý úsek od x1 do x2
- f( … )
- výška grafu v tom bode
- t f(x1) + (1 − t) f(x2)
- výška úsečky (tetivy) medzi bodmi grafu nad x1 a x2 — s rovnakými váhami, takže je nad tým istým bodom
- ≤
- graf nikdy nevystúpi nad tetivu — to je tvar misy; keby niekde vystúpil, je tam „hrb“, za ktorým sa môže skrývať ďalšie údolie
Príklad — nerovnosť konvexnosti v číslach
Farby zodpovedajú členom nerovnosti vyššie.
f(x) = x2, x1 = −1, x2 = 3, t = 1/2: bod uprostred je 1, vľavo f(1) = 1, vpravo 1 + 9/2 = 5. 1 ≤ 5 ✓.
f(x) = x4 − 3x2 + x, za x1, x2 vezmeme obe minimá −1,30 a 1,13, t = 1/2: bod uprostred je −0,085,
vľavo f(−0,085) ≈ −0,11, vpravo −3,51 + (−1,07)/2 = −2,29.
−0,11 > −2,29 — nerovnosť ≤ neplatí, funkcia nie je konvexná. Ten „hrb“ medzi minimami je presne to, čo oddeľuje dve údolia.
konvexná: x², jediné minimum
nekonvexná: x⁴ − 3x² + x
Nekonvexná funkcia x4 − 3x2 + x má dve minimá: globálne pri x ≈ −1,30 s hodnotou ≈ −3,51 a lokálne pri x ≈ 1,13 s hodnotou ≈ −1,07. Kto začne hľadať vpravo a ide stále dole, skončí v tom horšom. Stratové funkcie lineárnej a logistickej regresie sú konvexné — preto ich tréning spoľahlivo nájde najlepšie riešenie. Straty neurónových sietí konvexné nie sú, a o tom, ako sa s tým žije, bude diel o gradientnom zostupe.
Minimá v grafe vyššie sme našli numericky, bez derivácií: hustou mriežkou kandidátov, ktoré potom doladí metóda zlatého rezu. Tá v každom kroku zahodí časť intervalu, v ktorej minimum byť nemôže, a interval sa zmenší na ≈ 0,618 predchádzajúcej dĺžky.
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ž susedia
l, p = x - krok, x + krok
z = (5 ** 0.5 - 1) / 2 # ≈ 0,618
for _ in range(60): # zlatý rez
c, d = p - z * (p - l), l + z * (p - l)
if f(c) < f(d): p = d # minimum je vľavo od d
else: l = c # minimum je vpravo od c
vysledek.append((l + p) / 2)
return vysledek
8. Funkcie v umelej inteligencii
Teraz sa už dá celé strojové učenie povedať jazykom funkcií:
- Model je funkcia fθ : X → Y s parametrami θ — celá rodina funkcií, jedna pre každú voľbu parametrov.
- Stratová funkcia L : Y × Y → ℝ hovorí, koľko stojí odpoveď ŷ, keď správne je y.
- Učenie je výber jednej funkcie z rodiny: argmin cez θ priemernej straty — funkcie parametrov, ktorú sme práve kreslili ako krajinu.
- Aktivačné funkcie (sigmoida, tanh, ReLU) robia z lineárnych vrstiev nelineárnu sieť; bez nich by zloženie lineárnych funkcií bolo zase len lineárnou funkciou.
θ* = argminθ 1/n ∑i=1n L(fθ(xi), yi)
- θ*
- naučené parametre — tým je z celej rodiny vybraná jedna funkcia fθ*
- argminθ
- nechceme najmenšiu chybu samotnú, ale miesto, kde nastane — parametre, nie číslo
- 1/n ∑i=1n
- priemer cez všetkých n trénovacích príkladov — model má byť dobrý na dátach ako celku
- L
- stratová funkcia — prevedie rozdiel medzi odpoveďou a pravdou na jedno číslo, ktoré sa dá minimalizovať (napríklad druhú mocninu odchýlky ako v MSE)
- fθ(xi)
- odpoveď modelu na i-tý vstup; jediné miesto, kde vo vzorci vystupuje θ
- yi
- správna odpoveď z dát, s ktorou odpoveď modelu porovnávame
9. Zhrnutie
- Funkcia priraďuje každému vstupu práve jeden výstup; obraz je to, kam sa naozaj trafí.
- Injektívna funkcia nezamení dva vstupy, surjektívna pokryje celý cieľ, bijektívna má inverziu.
- Skladanie funkcií je montážna linka — a neurónová sieť je zloženie vrstiev.
- Stratová funkcia je krajina nad priestorom parametrov; konvexná krajina má jediné dno, nekonvexná ich môže mať viac.
Máte na to iný názor? Napíšte na support@coden-app.com.