Logistická regrese: sigmoida, šance a křížová entropie
Proč na třídy nestačí přímka, sigmoida a pravděpodobnost, šance a logit, křížová entropie proti kvadratické chybě, rozhodovací hranice ve dvou rozměrech, ohnutí hranice příznaky a dokonale oddělitelná data.
Série Základy AI Díl 49 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
- Proč klasifikovat sigmoidou, a ne přímkou, a jak číst koeficienty jako násobky šancí.
- Proč se logistická regrese učí křížovou entropií.
- Proč je hranice přímka, jak ji ohnout a co se stane, když jdou třídy oddělit dokonale.
Co se hodí znát předem: Klasifikace a regrese: dvě úlohy učení s učitelem, Lineární regrese: nejmenší čtverce geometricky i maticově
Spamový filtr, předpověď, jestli zákazník odejde ke konkurenci, odhad, jestli pacient potřebuje další vyšetření — za překvapivě mnoha z nich stojí logistická regrese. Model s matoucím jménem — je to regrese, která klasifikuje. Sigmoidu, na které stojí, popsal Pierre-François Verhulst už ve 40. letech 19. století pro růst populace; jako model pro klasifikaci ji v roce 1958 zpopularizoval statistik David Cox. Nevrací jen „ano“ nebo „ne“, ale pravděpodobnost, a dá se jí rozumět. A protože jeden umělý neuron s sigmoidou je přesně logistická regrese, je to také první krok k neuronovým sítím.
Navazuje na díly Klasifikace a regrese a Lineární regrese.
1. Proč ne obyčejná přímka
Čtyřicet studentů, u každého víme, kolik hodin se učil na zkoušku a jestli ji složil (1), nebo ne (0). Složilo jich 24. Nejjednodušší nápad: proložit nuly a jedničky přímkou a říct „složí“, když přímka přesáhne 0,5.
Na prvních čtyřiceti studentech to funguje: hranice vyjde 4,15 hodiny a přímka se splete u tří studentů. Má ale dvě vady. Předpovídá čísla, která nejsou pravděpodobnosti — pro nula hodin −0,08. A hlavně ji rozhodí data, která jsou úplně v pořádku: přidáme šest dříčů, kteří se učili 22 až 32 hodin a všichni složili. Přímka se kvůli nim nakloní, aby se k nim přiblížila (pro 32 hodin předpoví 1,36), a hranice uteče na 2,56 hodiny. Na původních studentech se teď mýlí u osmi. Dříči přitom nepřinesli žádnou novou informaci — je jasné, že kdo se učí 30 hodin, složí.
Příklad — přímka nejmenšími čtverci a proč ji dříči nakloní
Přímka p̂ = a + b · h minimalizuje součet čtverců odchylek ∑ (yi − a − bhi)2. Z dílu o lineární regresi: b = ∑ (hi − h̄)(yi − ȳ)/∑ (hi − h̄)2, a = ȳ − bh̄. Hranice je tam, kde přímka protne 0,5: h* = 0,5 − a/b.
40 studentů: h̄ = 4,858 h, ȳ = 24/40 = 0,6, vyjde b = 0,1404 za hodinu
a = 0,6 − 0,1404 · 4,858 = −0,082 (předpověď pro nula hodin)
h* = 0,5 + 0,082/0,1404 = 4,15 h
dříč s 32 hodinami: přímka předpoví −0,082 + 0,1404 · 32 = 4,41, čtverec odchylky (1 − 4,41)2 = 11,6
šest dříčů dohromady: 45,4, všech 40 původních studentů dohromady: 4,11
Nejmenší čtverce sčítají čtverce odchylek, a dříči, kteří jsou „příliš správně“, by tvořili přes 90 % celé chyby. Přímce se proto vyplatí naklonit se k nim, i když tím pokazí hranici u ostatních.
2. Sigmoida: z přímky pravděpodobnost
Definice — logistická regrese
Sigmoida (logistická funkce) je funkce
σ : ℝ → (0, 1), σ(z) = 1/1 + e−z.
Je spojitá a rostoucí, σ(0) = 0,5, σ(z) → 1 pro z → ∞ a σ(z) → 0 pro z → −∞.
Nechť d ∈ ℕ, d ≥ 1, je počet příznaků, x = (x1, …, xd) ∈ ℝd vektor příznaků jednoho příkladu a y ∈ {0, 1} jeho třída. Nechť w0 ∈ ℝ a w = (w1, …, wd) ∈ ℝd jsou váhy. Logistická regrese s vahami w0, w je model, který vektoru x přiřadí:
- skóre z(x) = w0 + ∑j=1d wjxj = w0 + w · x;
- předpovězenou pravděpodobnost třídy 1 P(y = 1 | x) = σ(z(x)), P(y = 0 | x) = 1 − σ(z(x));
- předpovězenou třídu ŷ(x) = 1, právě když σ(z(x)) > 0,5, jinak ŷ(x) = 0.
Protože σ je rostoucí a σ(0) = 0,5, platí σ(z) > 0,5, právě když z > 0: model tedy předpoví třídu 1, právě když je skóre kladné.
Přímka z může nabývat jakýchkoli hodnot, od mínus do plus nekonečna. Sigmoida ji „ohne“ do písmene S mezi 0 a 1: velká záporná z dají skoro 0, velká kladná skoro 1, a z = 0 přesně 0,5. Dříči mají z tak velké, že jejich pravděpodobnost je prakticky 1 a model s nimi nemusí nic dělat. Logistická regrese proto vyjde s dříči i bez nich stejně: hranice 3,86 hodiny, čtyři chyby na prvních čtyřiceti studentech.
σ(z) = 1/1 + e−z, z = w0 + w1x
- σ(z)
- předpovězená pravděpodobnost P(y = 1 | x) — v obrázku zelená křivka; potřebujeme číslo mezi 0 a 1, ne libovolné číslo jako u přímky
- 1 + e−z
- jmenovatel — e−z je vždy kladné, takže jmenovatel je větší než 1 a zlomek leží v (0, 1); pro velké z je e−z ≈ 0 a výsledek ≈ 1, pro velmi záporné z roste jmenovatel nade všechny meze a výsledek ≈ 0
- z
- skóre — obyčejná lineární funkce příznaků jako v lineární regresi; sigmoida ji jen „ohne“, takže se model dá učit a číst stejně jako přímka
- w0
- úsek — skóre pro x = 0; posouvá křivku doleva a doprava, a tím i hranici
- w1
- váha příznaku — o kolik vzroste skóre, když x vzroste o 1; určuje, jak strmé je písmeno S (a znaménkem, kterým směrem stoupá)
Příklad — model studentů hodinu po hodině
Naučený model má w0 = −4,82 a w1 = 1,25, hranice je tedy −w0/w1 = 4,82/1,25 = 3,86 hodiny. Skóre z = −4,82 + 1,25 h a pravděpodobnost σ(z) pro h hodin učení (barvy podle vzorce výše):
| h | 0 | 2 | 4 | 6 | 22 | 32 |
|---|---|---|---|---|---|---|
| z | −4,82 | −2,32 | 0,18 | 2,68 | 22,7 | 35,2 |
| σ(z) | 0,008 | 0,089 | 0,545 | 0,936 | ≈ 1 | ≈ 1 |
Například pro 2 hodiny: e2,32 = 10,2, takže σ(−2,32) = 1/1 + 10,2 = 0,089. U dříčů je 1 − σ(22,7) = 1,4 · 10−10 a 1 − σ(35,2) = 5 · 10−16. Dříči tedy mají pravděpodobnost od jedničky vzdálenou o méně než miliardtinu — jejich chyba p − y je prakticky nulová, a jak uvidíme u křížové entropie, právě chyba určuje, jak silně příklad model táhne.
Na čistých datech je tedy přímka dokonce o jednu chybu lepší. Jenže logistická regrese je stabilní: body, o kterých je všechno jasné, ji nerozhodí. A vrací pravděpodobnosti, se kterými se dá dál počítat.
3. Šance a logit: jak číst koeficienty
Definice — šance a logit
Nechť A je jev s pravděpodobností p = P(A) ∈ (0, 1). Šance (odds) jevu A jsou číslo
o(p) = p/1 − p ∈ (0, ∞).
Logit je funkce
logit : (0, 1) → ℝ, logit(p) = ln p/1 − p,
tedy logaritmus šancí. Logit je inverzní funkce k sigmoidě σ (definice výše): σ(logit(p)) = p pro každé p ∈ (0, 1) a logit(σ(z)) = z pro každé z ∈ ℝ.
Nechť w0 ∈ ℝ, w ∈ ℝd jsou váhy logistické regrese, x ∈ ℝd a p = P(y = 1 | x) = σ(w0 + w · x). Pak
logit(p) = w0 + w1x1 + … + wdxd a o(p) = ew0 + w · x,
takže logistická regrese je lineární model pro logit. Zvětší-li se jeden příznak xj o 1 a ostatní zůstanou stejné, vzroste skóre o wj a šance se vynásobí číslem ewj.
Šance znají sázkaři: „tři ku jedné“ znamená pravděpodobnost 75 %. U nás vyšlo w1 = 1,25, takže každá hodina učení navíc vynásobí šance na složení e1,25 ≈ 3,49krát. Student s šancemi 1 : 1 (50 %) má po hodině navíc šance 3,5 : 1 (78 %), po dvou hodinách 12 : 1 (92 %). V pravděpodobnostech hodina přidá různě moc — v šancích vždy stejně.
ln p/1 − p = w0 + w1x
- p/1 − p
- šance — kolikrát je „ano“ pravděpodobnější než „ne“; na rozdíl od p nejsou shora omezené (leží v (0, ∞)), takže se dají násobit bez obav, že přetečou přes 1
- ln
- logaritmus — natáhne (0, ∞) na celou reálnou osu, takže se levá strana může rovnat přímce; a násobení mění na sčítání, proto přičtení w1 k logitu znamená násobení šancí
- w0
- logit pro x = 0 — u studentů −4,82, tedy šance e−4,82 ≈ 0,008 pro toho, kdo se neučil vůbec
- w1
- o kolik vzroste logit za jednotku x — u studentů 1,25 za hodinu, tedy šance krát e1,25 = 3,49
šance 1 : 1 → po hodině 1 · 3,49 = 3,49 : 1, p = 3,49/1 + 3,49 = 0,78
po dvou hodinách 3,492 = 12,2 : 1, p = 12,2/1 + 12,2 = 0,92 (z šancí s je pravděpodobnost s/1 + s; barvou jsou šance p/1 − p ze vzorce výše, 3,49 = ew1)
4. Křížová entropie: co model minimalizuje
Lineární regresi jsme učili nejmenšími čtverci. Mohli bychom i tady minimalizovat (p − y)2? Mohli, ale je to špatný nápad.
Definice — křížová entropie (logaritmická ztráta)
Nechť n ∈ ℕ, n ≥ 1, je počet příkladů, y1, …, yn ∈ {0, 1} jsou jejich skutečné třídy a p1, …, pn ∈ (0, 1) předpovězené pravděpodobnosti třídy 1 (pi = P(yi = 1 | xi)). Křížová entropie (logaritmická ztráta) je číslo
L = −1/n ∑i=1n [yi ln pi + (1 − yi) ln(1 − pi)].
U logistické regrese je pi = σ(w0 + w · xi), kde xi ∈ ℝd jsou příznaky i-tého příkladu, takže L = L(w0, w) je funkce vah. Platí:
- věrohodnost vah pro Bernoulliho rozdělení tříd je ∏i=1n piyi(1 − pi)1 − yi a L je minus n-tina jejího logaritmu; minimalizace L je proto totéž co metoda maximální věrohodnosti;
- L je konvexní funkce vah a její parciální derivace jsou ∂L/∂wj = 1/n ∑i=1n (pi − yi) xij pro j = 0, …, d, kde xi0 = 1 (věta níže).
Model platí −ln p za každý příklad, kde p je pravděpodobnost, kterou dal skutečnosti. Řekl-li 90 % a měl pravdu, zaplatí 0,1. Řekl-li 1 % a mýlil se, zaplatí 4,6. Sebevědomý omyl je drahý — a čím sebevědomější, tím dražší, bez horní hranice. Gradient vypadá stejně jako u lineární regrese: chyba krát příznak.
L(w) = − 1/n ∑i [ yi ln pi + (1 − yi) ln(1 − pi) ]
- −
- logaritmus pravděpodobnosti je záporný (nebo nula); minus z něj udělá kladnou cenu, kterou chceme co nejmenší
- 1/n ∑i
- průměr přes všechny příklady — každý příklad váží stejně a ztráta nezávisí na tom, kolik dat máme
- yi ln pi
- platí jen pro ty, kdo složili (yi = 1, v obrázcích červené body): cena −ln pi za to, jak málo model věřil skutečnému „ano“
- (1 − yi) ln(1 − pi)
- platí jen pro ty, kdo nesložili (yi = 0, modré body): cena −ln(1 − pi), protože 1 − pi je pravděpodobnost, kterou model dal „ne“
Věta — gradient křížové entropie je „chyba krát příznak“
Nechť n, d ∈ ℕ, n, d ≥ 1, a pro i = 1, …, n nechť xi = (xi0, xi1, …, xid) ∈ ℝd+1 s xi0 = 1 (sloupec jedniček pro úsek) a yi ∈ {0, 1}. Pro váhy w = (w0, …, wd) ∈ ℝd+1 nechť pi = σ(w · xi) a L(w) je křížová entropie (definice výše). Pak pro každé j = 0, …, d platí
∂L/∂wj(w) = 1/n ∑i=1n (pi − yi) xij
a L je konvexní funkce na ℝd+1.
Důkaz (pro jeden příklad, řetízkovým pravidlem; ℓ = −[y ln p + (1 − y) ln(1 − p)], p = σ(z), z = w · x):
dℓ/dp = −y/p + 1 − y/1 − p = p − y/p(1 − p)
dp/dz = e−z/(1 + e−z)2 = σ(z) (1 − σ(z)) = p(1 − p)
∂z/∂wj = xj
∂ℓ/∂wj = p − y/p(1 − p) · p(1 − p) · xj = (p − y) xj
Sečtením přes i = 1, …, n a vydělením n dostaneme vzorec pro ∂L/∂wj. Člen p(1 − p) se pokrátí — to je celé kouzlo dvojice sigmoida + křížová entropie. Konvexita plyne z druhých derivací: Hessova matice 1/n ∑i=1n pi(1 − pi) xixiT je pozitivně semidefinitní, protože každá matice xixiT je pozitivně semidefinitní a všechny váhy pi(1 − pi) jsou kladné. ∎
∂L/∂wj = 1/n ∑i (pi − yi) · xij
- ∂L/∂wj
- jak se ztráta změní, když pohneme váhou wj — gradientní sestup jde opačným směrem
- 1/n ∑i
- průměr přes příklady — každý příklad „tahá“ za váhy svým dílem, gradient je jejich průměrný tah
- pi − yi
- chyba předpovědi — znaménkem říká, jestli model přestřelil, nebo podstřelil, a velikostí, o kolik; kde model trefil (dříči), je nulová a příklad netáhne vůbec
- xij
- hodnota příznaku — váha wj se na chybě podílela tím víc, čím větší byl její příznak; pro úsek w0 je xi0 = 1
Dříč s 22 hodinami má chybu p − y = −1,4 · 10−10 a k parciální derivaci podle w1 přispěje (p − y) · 22 = −3 · 10−9 (barvy podle vzorce výše); ten s 32 hodinami −1,7 · 10−14. Čtyřicet původních studentů přispívá v absolutních hodnotách dohromady 22,4, průměrně 0,56 na studenta. Proto dříči logistickou regresi nerozhodí: tahají za ni víc než stomilionkrát slaběji.
def uc_logistickou(X, y, eta=0.1, kroku=1000, lam=0.0):
# X má v prvním sloupci jedničky, takže w[0] je úsek w0
n, d = len(X), len(X[0])
w = [0.0] * d
for _ in range(kroku):
g = [0.0] * d
for x_i, y_i in zip(X, y):
p = sigmoida(skal(w, x_i)) # předpověď
for j in range(d):
g[j] += (p - y_i) * x_i[j] / n # chyba krát příznak
for j in range(1, d):
g[j] += lam * w[j] # L2 trest; úsek se netrestá
w = [w[j] - eta * g[j] for j in range(d)]
return w
Tímhle sestupem je spočtená tabulka v posledním oddílu. Ostatní modely v dílu počítáme Newtonovou metodou, která místo pevného kroku η použije i druhé derivace a minimum najde za osm až devět kroků; protože je ztráta konvexní, je to totéž minimum.
Porovnejme obě ztráty na jednom parametru: hranici necháme v 5 hodinách a měníme jen strmost w modelu p = σ(w · (hodiny − 5)).
Křížová entropie je jedno hladké údolí — konvexní, takže gradientní sestup najde minimum odkudkoli. Kvadratická chyba konvexní není (mění se v ní zakřivení) a vpravo je skoro plochá: pro w = 1 je 0,100, pro w = 2 také 0,100. A model, který je si úplně jistý opakem pravdy (w = −3), dostane od kvadratické chyby trest jen 0,83, kdežto od křížové entropie 6,39 — a s ním i silný gradient, který ho z omylu vytáhne.
Příklad — sebevědomý omyl u jednoho studenta
Student se učil 9 hodin a složil (y = 1); model s w = −3 mu dá z = −3 · (9 − 5) = −12.
p = σ(−12) = 1/1 + e12 = 6,1 · 10−6 (barvy podle vzorce sigmoidy výše)
křížová entropie: −ln p = 12,0 · kvadratická chyba: (p − 1)2 = 1,00 (víc nikdy nedá)
derivace podle z — křížová entropie: p − y = −1,00
derivace podle z — kvadratická chyba: 2(p − y) · p(1 − p) = −1,2 · 10−5
U kvadratické chyby se člen p(1 − p) z derivace sigmoidy nepokrátí, a když je model sebevědomý, je skoro nulový. Gradient je tak zhruba 80 000krát slabší než u křížové entropie — model o svém omylu „neví“.
5. Rozhodovací hranice ve dvou rozměrech
S více příznaky se nic zásadního nemění. Přijímačky na střední školu: 300 uchazečů, body z matematiky a z češtiny (0–100), přijato 57.
Hranice z = 0 je v rovině přímka, ve třech rozměrech rovina a obecně nadrovina — logistická regrese je lineární klasifikátor. Pravděpodobnost se mění jen kolmo k hranici: na rovnoběžkách s ní je všude stejná. Deset bodů z matematiky navíc vynásobí šance na přijetí 2,45krát, deset bodů z češtiny 1,68krát (generátor dat měl 2,72 a 1,82). Přesnost je 88,7 % proti 81,0 % u modelu, který neřekne „přijat“ nikomu.
Definice — rozhodovací hranice lineárního klasifikátoru
Nechť d ∈ ℕ, d ≥ 1, w0 ∈ ℝ a w = (w1, …, wd) ∈ ℝd, w ≠ 0. Lineární klasifikátor s vahami w0, w je model se skóre
z : ℝd → ℝ, z(x) = w0 + w · x = w0 + ∑j=1d wjxj,
který bodu x ∈ ℝd předpoví třídu 1, právě když z(x) > 0 (logistická regrese je takový model). Jeho rozhodovací hranice je množina
H = {x ∈ ℝd : w0 + w · x = 0}.
U logistické regrese je tedy x ∈ H, právě když σ(z(x)) = 0,5. Množina H je nadrovina kolmá k vektoru vah w: posun bodu x o vektor v ∈ ℝd změní skóre o z(x + v) − z(x) = w · v, a to je nula, právě když v ⊥ w. Proto je pravděpodobnost na nadrovinách rovnoběžných s hranicí všude stejná a nejrychleji se mění ve směru w.
Příklad — hranice přijímaček
Naučený model: z = −10,8647 + 0,089673 · m + 0,052169 · č (m, č jsou body z matematiky a češtiny).
hranice z = 0: č = 10,8647 − 0,089673 · m/0,052169
m = 70: č = 10,8647 − 6,2771/0,052169 = 87,9; m = 90: č = 53,6
bod z matematiky vyváží 0,089673/0,052169 = 1,72 bodu z češtiny
deset bodů navíc: e0,89673 = 2,45, e0,52169 = 1,68
Uchazeč se 70 body z matematiky a 87,9 z češtiny má podle modelu pravděpodobnost přijetí přesně 50 % (šance 1 : 1). Generátor dat měl váhy 0,1 a 0,06, tedy násobky e1 = 2,72 a e0,6 = 1,82 — model je z 300 uchazečů odhadl jen přibližně.
6. Když hranice nemá být přímka
Někdy jedna třída leží uvnitř druhé. Body ve čtverci, třída 1 (28 % bodů) uvnitř kruhu, a pro realismus u 5 % bodů prohozený štítek.
S příznaky x1, x2 žádná přímka kruh neoddělí; model rezignuje a má přesnost 72 % — přesně tolik, kolik dá „vždycky třída 0“. Stačí přidat příznaky x12, x22 a x1x2, stejně jako v dílu o nelineární regresi: hranice je teď elipsa a přesnost 95 %, víc se s pěti procenty prohozených štítků čekat nedá. Model je pořád lineární ve vahách — ohnuli jsme prostor, ne model. Neuronové sítě dělají totéž, jen si vhodné příznaky najdou samy.
Příklad — proč je hranice elipsa
S kvadratickými příznaky se model naučil skóre
z = 3,95 − 0,03 x1 + 0,85 x2 − 9,13 x12 − 13,78 x22 − 4,34 x1x2
Hranice z = 0 je kuželosečka Ax12 + Bx1x2 + Cx22 + … = 0, a ta je elipsa, když B2 − 4AC < 0:
B2 − 4AC = 4,342 − 4 · (−9,13) · (−13,78) = 18,8 − 503,2 = −484 < 0
uprostřed: z(0, 0) = 3,95, σ(3,95) = 0,98; obě kvadratické váhy záporné, takže směrem ven skóre klesá
Skutečná hranice je kruh (A = C, B = 0); ze 200 bodů s prohozenými štítky ji model odhadl jako mírně protaženou a natočenou elipsu.
7. Když jdou třídy oddělit dokonale
Paradoxně nejvíc potíží dělají data, která jsou „příliš dobrá“. Deset studentů: všichni, kdo se učili víc než 5 hodin, složili, a nikdo jiný.
Definice — lineárně oddělitelná data
Nechť n, d ∈ ℕ, n, d ≥ 1, a (x1, y1), …, (xn, yn) jsou příklady, xi ∈ ℝd, yi ∈ {0, 1}. Data jsou lineárně oddělitelná, právě když existují w0 ∈ ℝ a w ∈ ℝd takové, že pro všechna i = 1, …, n platí
- yi = 1 ⇒ w0 + w · xi > 0,
- yi = 0 ⇒ w0 + w · xi < 0.
Slovy: existuje nadrovina {x : w0 + w · x = 0}, která obě třídy odděluje bez chyby a žádný bod na ní neleží.
Pro taková data nemá logistická regrese bez regularizace řešení: křížová entropie je pro všechny váhy kladná (všechna pi leží v (0, 1)), ale pro oddělující váhy vynásobené číslem c > 0 jde k nule, když c → ∞. Minimum se tedy nenabývá a ztráta klesá k nule, jen když norma vah roste nade všechny meze.
Hranici model najde hned. Ale pak zjistí, že může být ještě jistější: strmější sigmoida dá všem studentům pravděpodobnost blíž 0 nebo 1 a ztráta ještě klesne. A tak strmost zvyšuje pořád dál, až z písmene S udělá schod. Model, který tvrdí „4,9 hodiny = jistě nesloží, 5,1 hodiny = jistě složí“, je přesvědčený víc, než data opravňují.
| Kroků gradientního sestupu | 10 | 100 | 1 000 | 10 000 |
|---|---|---|---|---|
| váha u hodin, bez regularizace | 0,63 | 1,78 | 4,06 | 7,94 |
| křížová entropie | 0,280 | 0,098 | 0,027 | 0,004 |
| váha u hodin, L2 s λ = 0,01 | 0,62 | 1,70 | 2,78 | 2,84 |
Bez regularizace váha roste dál, jen čím dál pomaleji, a s ní jistota modelu. Malá hřebenová regularizace z dílu o přeučení přidá trest za velké váhy a růst zastaví u 2,84. Proto se v knihovnách logistická regrese s regularizací pouští automaticky.
Lλ(w) = L(w) + λ · ½ w12
- Lλ(w)
- to, co sestup v tabulce minimalizuje ve třetím řádku
- L(w)
- křížová entropie — odměňuje jistotu na trénovacích datech; na oddělitelných datech klesá k nule, jen když w1 → ∞
- λ
- síla trestu (tady 0,01) — určuje, kolik ztráty jsme ochotni obětovat za menší váhy
- ½
- jen pro pohodlí: derivace trestu je pak přesně λw1, v pseudokódu výše řádek
g[j] += lam * w[j] - w12
- trest roste se čtvercem váhy, takže se s rostoucí w1 přitvrzuje, kdežto zisk z dalšího zostření sigmoidy slábne; úsek w0 se netrestá, protože jen posouvá hranici
8. Shrnutí
- Přímka proložená nulami a jedničkami předpovídá nesmysly mimo [0, 1] a rozhodí ji i správná data: šest dříčů posunulo hranici ze 4,15 na 2,56 hodiny.
- Logistická regrese pošle lineární kombinaci příznaků sigmoidou; dříčům nevěnuje pozornost a hranice zůstala na 3,86 hodiny.
- Koeficient je logaritmus násobku šancí: hodina učení vynásobí šance na složení 3,49krát.
- Učí se minimalizací křížové entropie, která je konvexní a sebevědomé omyly trestá tvrdě; kvadratická chyba je plochá a nekonvexní.
- Hranice je přímka (nadrovina); kvadratické příznaky ji ohnou a na kruhu zvedly přesnost ze 72 % na 95 %.
- Na dokonale oddělitelných datech váhy rostou bez konce; regularizace je zastaví.
Chcete si to osahat? Nechte AI agenta naučit logistickou regresi na vašich e-mailech — příznaky třeba počet odkazů, vykřičníků a slov „zdarma“ — a podívejte se, který příznak násobí šance spamu nejvíc.
Máte na to jiný názor? Napište na support@coden-app.com.