Polynomiální a nelineární regrese: jak přímku ohnout
Spotřeba auta podle rychlosti a graf reziduí, Rungeho jev a kubické spliny, chladnutí kávy jako model nelineární v parametrech, Gaussova–Newtonova a Levenbergova–Marquardtova metoda a proč polynom neumí extrapolovat.
Série Základy AI Díl 48 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
- Jak se křivka ohne přidáním příznaků a jak graf reziduí prozradí, že model nestačí.
- Proč polynom vysokého stupně kmitá a proč spliny ne.
- Jak se hledá model nelineární v parametrech a proč mimo data rozhoduje jeho tvar.
Co se hodí znát předem: Lineární regrese: nejmenší čtverce geometricky i maticově, Přeučení a regularizace: proč model, který zná data nazpaměť, selže
Svět je zřídka přímka. Auto spotřebuje nejvíc paliva ve městě i na dálnici a nejmíň někde mezi tím. Káva chladne nejdřív rychle a pak čím dál pomaleji. Lék působí, dokud se nevstřebá, a pak účinek slábne. V tomhle dílu přímku ohneme — nejdřív tak, že zůstaneme u lineární regrese a jen jí přidáme příznaky, pak modelem, který lineární být přestane úplně. A uvidíme, proč na tom, jak křivku ohneme, záleží nejvíc tam, kde žádná data nemáme.
Navazuje na díly Lineární regrese a Přeučení a regularizace, který ukázal, jak polynom vysokého stupně přeučí šum.
1. Ohnutí přes příznaky
Definice — regrese s bázovými funkcemi
Nechť k ∈ ℕ, k ≥ 1, a φ1, …, φk : ℝ → ℝ jsou pevně zvolené funkce, tzv. bázové funkce. Model s bázovými funkcemi s parametry w = (w0, …, wk) ∈ ℝk+1 je funkce fw : ℝ → ℝ,
fw(x) = w0 + ∑j=1k wjφj(x).
Regrese s bázovými funkcemi odhaduje w z dat (xi, yi) ∈ ℝ2, i = 1, …, n, metodou nejmenších čtverců. Model je lineární v parametrech w (ne v x), takže jde o obyčejnou lineární regresi s maticí plánu X ∈ ℝn×(k+1), Xi0 = 1, Xij = φj(xi), a řešení dají normální rovnice XTXw = XTy.
Polynomiální regrese stupně d ∈ ℕ, d ≥ 1, je speciální případ k = d a φj(x) = xj pro j = 1, …, d:
fw(x) = w0 + w1x + w2x2 + … + wdxd.
Do tabulky přidáme sloupec s druhou mocninou rychlosti a pustíme na ni obyčejnou lineární regresi. Ta neví, že sloupec vznikl z jiného sloupce — prostě najde nejlepší kombinaci. Výsledkem je parabola. Ohýbá se křivka, ale výpočet zůstává přímočarý: jedna soustava rovnic, žádné zkoušení.
Data: spotřeba auta v litrech na 100 km při 25 jízdách rychlostí od 30 do 130 km/h. Proložíme je přímkou a parabolou:
Přímka má R2 = 0,566, parabola 0,975. Parabola má minimum při 65,3 km/h se spotřebou 3,22 litru — generátor dat ho měl při 65 km/h a 3,2 litru.
ŷ = w0 + w1v + w2v2
- ŷ
- předpověď spotřeby — v obrázku zelená parabola
- w0 + w1v
- totéž co přímka (v obrázku jantarová) — úroveň a sklon; sama umí spotřebu jen stále zvyšovat, nebo stále snižovat
- w2v2
- nový sloupec v2 s vlastní váhou — ohýbá přímku. Kladné w2 dá tvar „U“ s minimem, záporné „∩“; nejmenší čtverce si znaménko i velikost vyberou samy. V parametrech w je model pořád lineární
Příklad — matice plánu a vrchol paraboly
Řádek matice plánu pro jízdu rychlostí 50 km/h je (1, 50, 2500), pro 130 km/h (1, 130, 16 900). Nejmenší čtverce dají v původních jednotkách
ŷ = 7,358 − 0,12674 v + 0,00097066 v2
(Barvy podle rozboru paraboly výše.) Parabola w0 + w1v + w2v2 má při w2 > 0 minimum tam, kde je derivace w1 + 2w2v nulová:
v* = −w1/2w2 = 0,12674/0,0019413 ≈ 65,3 km/h
ŷ(v*) = w0 − w12/4w2 = 7,358 − 0,016063/0,0038826 ≈ 7,358 − 4,137 = 3,22 l/100 km
Sloupce 1, v a v2 se liší o čtyři řády a v s v2 silně korelují, takže XTX je špatně podmíněná. Výpočet proto místo v používá z = v − 80/50 (hodnoty zhruba mezi −1 a 1) a koeficienty pro v z nich přepočítá — model je tentýž, jen se mu lépe počítá.
2. Graf reziduí prozradí, že přímka nestačí
Definice — graf reziduí
Nechť (xi, yi), i = 1, …, n, jsou data, ŷi předpovědi modelu a ei = yi − ŷi rezidua. Pro každé i zvolme vodorovnou souřadnici ui — buď hodnotu jednoho příznaku xij (týž j pro všechna i), nebo předpověď ŷi. Graf reziduí je bodový graf množiny
{(ui, ei) : i = 1, …, n} ⊆ ℝ2.
Je-li model vhodný, rezidua kolísají kolem nuly bez vzoru; systematický tvar (oblouk, trychtýř) znamená, že model něco nezachytil.
Rezidua jsou to, co model nechal ležet na stole. Pokud v nich zůstal vzor, šlo by ho ještě vysvětlit. U přímky jdou znaménka reziduí podle rychlosti takhle: pět plus, patnáct minus, pět plus. Na krajích přímka spotřebu podceňuje, uprostřed přeceňuje — oblouk jako z učebnice. Rezidua paraboly už žádný vzor nemají.
Graf reziduí funguje i tam, kde data nejde nakreslit, protože příznaků je dvacet: rezidua se vynesou proti předpovědi a vzor v nich je vidět stejně.
3. Polynom vysokého stupně a Rungeho jev
Když parabola nestačí, nabízí se zvýšit stupeň. Polynom stupně 10 projde jedenácti body přesně. Jenže co dělá mezi nimi? Carl Runge si roku 1901 všiml, že to dopadá špatně i bez jakéhokoli šumu.
Definice — Rungeho jev
Nechť f : [−1, 1] → ℝ, f(x) = 1/1 + 25x2 (Rungeho funkce). Pro n ∈ ℕ, n ≥ 1, nechť xk = −1 + 2k/n, k = 0, …, n, jsou rovnoměrně rozmístěné uzly a pn interpolační polynom stupně nejvýš n s pn(xk) = f(xk) pro všechna k (definice níže). Rungeho jev je skutečnost, že
limn→∞ maxx ∈ [−1, 1] |f(x) − pn(x)| = ∞,
přestože f má na [−1, 1] derivace všech řádů. Chyba roste u okrajů intervalu: polynom tam kmitá a s rostoucím stupněm čím dál víc. Obecněji se Rungeho jevem nazývá toto chování interpolace v rovnoměrných uzlech u jakékoli funkce.
Polynom je jeden kus pružného drátu, který musíme ohnout přes všechny body naráz. Uprostřed ho body drží z obou stran, ale u kraje už žádný soused není — a drát se rozkmitá. Každý další bod přidá další ohyb, takže víc bodů situaci nezlepší, ale zhorší.
Definice — interpolační polynom v Lagrangeově tvaru
Nechť n ∈ ℕ, x0, …, xn ∈ ℝ jsou navzájem různé uzly (xi ≠ xj pro i ≠ j) a y0, …, yn ∈ ℝ hodnoty. Interpolační polynom je polynom p stupně nejvýš n, pro který
p(xi) = yi pro všechna i = 0, …, n.
Takový polynom existuje právě jeden. Jeho Lagrangeův tvar je
p(x) = ∑i=0n yi Li(x), Li(x) = ∏j=0, j≠in x − xj/xi − xj.
Bázový polynom Li je v uzlu xi roven 1 a ve všech ostatních uzlech 0 (čitatel tam obsahuje nulový činitel), proto p(xi) = yi. Tak počítá polynom i obrázek níže; uzly jsou −1; −0,8; …; 1.
Proč polynom kmitá zrovna u kraje, říká přesný vzorec pro chybu interpolace:
f(x) − p(x) = f(n+1)(ξ)/(n + 1)! · ∏i=0n (x − xi)
- f(x) − p(x)
- chyba v bodě x mezi uzly — v uzlech je nulová
- f(n+1)(ξ)/(n + 1)!
- jak moc je funkce „zakřivená nad síly“ polynomu stupně n (ξ je nějaký bod intervalu). Polynom stupně n má (n + 1). derivaci nulovou, takže by se trefil přesně; u 1/1 + 25x2 ale vysoké derivace rostou rychleji než faktoriál
- ∏ (x − xi) = ω(x)
- uzlový polynom — závisí jen na rozmístění uzlů. Uprostřed má x blízko uzly z obou stran a činitele jsou malé; u kraje je většina uzlů daleko na jedné straně a součin je řádově větší
Uprostřed je polynom v pořádku — při x = 0,1 se od funkce liší o 0,043. U kraje, při x = −0,94, se ale mýlí o 1,92, a to u funkce, jejíž hodnoty leží mezi 0 a 1. Data přitom neměla žádný šum; za kmitání může jen tvar modelu.
Příklad — uzlový polynom uprostřed a u kraje
Pro jedenáct uzlů −1; −0,8; …; 1 je ω(x) = (x + 1)(x + 0,8) · … · (x − 1):
ω(0,1) ≈ −0,0000982 (nejbližší uzly 0 a 0,2 jsou 0,1 daleko z obou stran)
ω(−0,94) ≈ 0,00852 (šest z jedenácti uzlů leží víc než 0,8 napravo, nejvzdálenější skoro 2)
|ω(−0,94)|/|ω(0,1)| ≈ 87 (barva podle vzorce chyby výše)
Už sama poloha uzlů dělá u kraje skoro stokrát větší chybu. Proto se pro interpolaci volí uzly zhuštěné ke krajům (Čebyševovy uzly), nebo — jak ukáže další kapitola — se místo jednoho polynomu použijí kousky.
4. Spliny: ohýbat po kouskách
Definice — kubický spline
Nechť n ≥ 1 a x0 < x1 < … < xn jsou reálné uzly. Kubický spline s uzly x0, …, xn je funkce S : [x0, xn] → ℝ, která splňuje
- pro každé i = 0, …, n − 1 je zúžení S na interval [xi, xi+1] polynom stupně nejvýš 3 (označme ho Si);
- S, S′ a S″ jsou spojité na [x0, xn], tj. v každém vnitřním uzlu xi, i = 1, …, n − 1, platí Si−1(xi) = Si(xi), S′i−1(xi) = S′i(xi) a S″i−1(xi) = S″i(xi).
Jsou-li dány hodnoty y0, …, yn ∈ ℝ, je spline interpolační, právě když S(xi) = yi pro všechna i. Spline je přirozený, právě když navíc S″(x0) = S″(xn) = 0. Kubický spline je tedy mezi sousedními uzly kubika a v uzlech kubiky navazují hodnotou, první i druhou derivací. Spline s pevnými uzly je také lineární v parametrech, dá se tedy zapsat bázovými funkcemi a prokládat nejmenšími čtverci.
Slovo pochází z loděnic: spline byla pružná lať, kterou konstruktéři přišpendlili v několika bodech a obkreslili. Místo jednoho drátu přes všechno máme řadu krátkých kousků, navazujících tak hladce, že spoj není vidět. Každý kousek se ohýbá jen podle svých nejbližších bodů, takže kmitání se nemá kudy šířit.
Příklad — proč je spline daný jednoznačně
Jedenáct uzlů dělí interval na 10 úseků, na každém je kubika s 4 koeficienty: 40 neznámých. Podmínky:
každá kubika prochází oběma krajními body svého úseku: 10 · 2 = 20
spojitá první derivace v 9 vnitřních uzlech: 9, spojitá druhá derivace tamtéž: 9
přirozené okrajové podmínky S″(−1) = S″(1) = 0: 2
celkem 20 + 9 + 9 + 2 = 40 rovnic
Spojitost hodnoty je v první skupině schovaná: obě sousední kubiky procházejí týmž uzlem.
Čtyřicet rovnic se dá zredukovat na jedenáct: neznámými jsou jen druhé derivace Mi = S″(xi) v uzlech, kubiky se z nich dopočítají. Takhle spline počítá obrázek:
# vstup: uzly x_0 < … < x_n, hodnoty y_0 … y_n
h_i = x_{i+1} − x_i
M_0 = M_n = 0 # přirozený spline
for i in 1 … n−1: # spojitost první derivace v x_i
h_{i−1}·M_{i−1} + 2(h_{i−1} + h_i)·M_i + h_i·M_{i+1}
= 6·[ (y_{i+1} − y_i)/h_i − (y_i − y_{i−1})/h_{i−1} ]
vyřeš soustavu (třídiagonální, každý řádek má jen 3 nenulová čísla)
S(x) na [x_i, x_{i+1}], t = x_{i+1} − x, u = x − x_i:
S = (M_i·t³ + M_{i+1}·u³) / (6h_i)
+ (y_i/h_i − M_i·h_i/6)·t + (y_{i+1}/h_i − M_{i+1}·h_i/6)·u
Každá rovnice váže jen tři sousední M, proto se změna jednoho bodu šíří do okolí jen slabě a soustava se dá vyřešit v čase úměrném počtu uzlů.
Kubický spline přes stejných jedenáct bodů se od funkce nikde neliší o víc než 0,022 — skoro devadesátkrát méně než polynom. Spliny jsou proto běžný způsob, jak v regresi zachytit hladký nelineární vztah, o jehož tvaru nic nevíme; v praxi se uzlů volí méně než bodů a přidá se regularizace.
5. Nelineární v parametrech: chladnutí kávy
Někdy tvar vztahu známe z fyziky. Hrnek kávy chladne podle Newtonova zákona ochlazování: rozdíl mezi teplotou kávy a místnosti klesá exponenciálně. Teplota tedy je T(t) = a + b · exp(−t/τ), kde exp(u) = eu, a je teplota místnosti, b počáteční rozdíl a τ časová konstanta. Parametr τ je ale v exponentu — tohle už lineární regrese není.
T(t) = a + b · exp(−t/τ)
- a
- teplota místnosti — hodnota, ke které se káva blíží pro t → ∞; bez ní by model chladl k 0 °C
- b
- počáteční rozdíl teplot kávy a místnosti (T(0) = a + b) — Newtonův zákon říká, že rychlost chladnutí je úměrná právě tomuto rozdílu
- exp(−t/τ)
- jaký podíl rozdílu ještě zbývá — v čase 0 celý, za τ minut 1/e ≈ 37 %, za 2τ 14 %. Exponenciála je jediná funkce, která klesá rychlostí úměrnou sama sobě, a to je přesně „čím teplejší, tím rychleji chladne“; τ v jmenovateli převádí minuty na bezrozměrný exponent
Definice — nelineární nejmenší čtverce a Gaussova–Newtonova metoda
Nechť (xi, yi), i = 1, …, n, jsou data (yi ∈ ℝ), m ∈ ℕ je počet parametrů, Θ ⊆ ℝm množina přípustných parametrů a f(x; θ) model, který je pro každé x diferencovatelný podle θ ∈ Θ, ale není lineární v θ. Pro θ ∈ Θ označme rezidua a jejich součet čtverců
ri(θ) = yi − f(xi; θ), S(θ) = ∑i=1n ri(θ)2.
Nelineární regrese (nelineární nejmenší čtverce) hledá θ* ∈ Θ takové, že S(θ*) ≤ S(θ) pro všechna θ ∈ Θ. Řešení vzorcem obecně neexistuje a S může mít víc lokálních minim; hledá se iteracemi z počátečního odhadu.
Gaussova–Newtonova metoda — vstup: data, model f, počáteční odhad θ(0) ∈ Θ, tolerance ε > 0 a největší počet kroků K ∈ ℕ; výstup: odhad θ. Kroky:
- Polož θ ← θ(0).
- Spočítej vektor reziduí r = (r1(θ), …, rn(θ))T ∈ ℝn a Jacobiho matici J ∈ ℝn×m, Jij = ∂f(xi; θ)/∂θj.
- Vyřeš soustavu JTJδ = JTr pro neznámou δ ∈ ℝm (předpokládáme, že sloupce J jsou lineárně nezávislé; jinak krok není jednoznačný).
- Polož θ ← θ + δ.
- Zastavení: změnilo-li se S(θ) o méně než ε, nebo proběhlo-li K kroků, vrať θ; jinak pokračuj krokem 2.
Krok 3 jsou obyčejné lineární nejmenší čtverce pro lineární aproximaci f(xi; θ + δ) ≈ f(xi; θ) + (Jδ)i: metoda tedy model v okolí současného odhadu nahradí lineárním a posune se do minima této náhrady. Konvergence není zaručena — ze špatného startu může metoda divergovat.
Nevíme, jak to spočítat najednou, ale umíme to po kouskách: v okolí současného odhadu se křivka chová skoro jako přímka, a pro přímku nejmenší čtverce umíme. Uděláme krok, znovu se rozhlédneme, znovu zlinearizujeme. Když jsme blízko, za pár kroků jsme v cíli.
JTJ δ = JTr, θ ← θ + δ
- ri = yi − f(xi; θ)
- rezidua při současném odhadu — co ještě chybí; jsou-li nulová, je i krok nulový a metoda stojí
- Jij = ∂f(xi; θ)/∂θj
- Jacobiho matice — o kolik se posune předpověď v bodě i, když trochu pohneme parametrem j. Hraje roli matice plánu X: model se v okolí θ chová jako f(θ) + Jδ
- δ
- krok parametrů — řešení normálních rovnic pro tuhle lineární náhradu; je to nejlepší krok, pokud by model byl opravdu lineární
Příklad — jeden řádek Jacobiho matice
Pro f(t; a, b, τ) = a + b · exp(−t/τ) jsou derivace podle parametrů
∂f/∂a = 1, ∂f/∂b = exp(−t/τ), ∂f/∂τ = b · t · exp(−t/τ)/τ2
Na startu a = 20, b = 60, τ = 20 a pro měření v čase t = 10 min (66,97 °C); barvy podle Gaussovy–Newtonovy soustavy výše:
exp(−10/20) = e−0,5 ≈ 0,6065, řádek J = (1; 0,6065; 60 · 10 · 0,6065/400 ≈ 0,910)
předpověď 20 + 60 · 0,6065 ≈ 56,39 °C, reziduum ri = 66,97 − 56,39 ≈ 10,58 °C
Všech 16 takových řádků tvoří J (16 × 3); soustava JTJδ = JTr má tři rovnice o třech neznámých.
Naměřili jsme teplotu každé dvě minuty během první půlhodiny — 16 měření. Z rozumného startu (a = 20 °C, b = 60 °C, τ = 20 min) dojde Gaussova–Newtonova metoda k výsledku za 4 kroky: a = 26,8 °C, b = 63,3 °C, τ = 22,0 min. Generátor měl ve skutečnosti místnost 22 °C a τ = 25 min. Za třicet minut je káva pořád přes 40 °C a teplota místnosti, ke které se blíží, se z takových dat odhaduje špatně: vyšší a a kratší τ vysvětlí našich 16 zašuměných měření dokonce lépe (součet čtverců reziduí 1,73) než správné hodnoty (4,33). Nejmenší čtverce najdou, co nejlíp sedí k datům — ne nutně to, co platí.
Průběh Gaussovy–Newtonovy metody krok po kroku:
| krok | a (°C) | b (°C) | τ (min) | součet čtverců |
|---|---|---|---|---|
| start | 20,00 | 60,00 | 20,00 | 1684,2 |
| 1 | 27,06 | 63,01 | 21,87 | 1,742 |
| 2 | 26,80 | 63,29 | 22,02 | 1,731 |
| 3, 4 | 26,80 | 63,29 | 22,02 | 1,731 |
Už první krok srazí součet čtverců z 1684 na 1,74 — z dobrého startu je lineární náhrada skoro přesná. Kroky 3 a 4 jen ověří, že se chyba už nemění, a metoda skončí.
6. Na startu záleží
Zkusme začít s odhadem τ = 60 minut („káva chladne hodinu“). Gaussova–Newtonova metoda v prvním kroku skočí na a = 126 °C, b = −36 °C a τ = −141 minut. Záporná časová konstanta znamená kávu, která se sama ohřívá do nekonečna — metoda uletěla.
Definice — Levenbergova–Marquardtova metoda
Nechť data, model f, rezidua r, součet čtverců S a Jacobiho matice J jsou jako u Gaussovy–Newtonovy metody. Pro čtvercovou matici A označme diag(A) diagonální matici se stejnou diagonálou jako A. Levenbergova–Marquardtova metoda — vstup: počáteční odhad θ(0), počáteční tlumení λ0 > 0, koeficienty ν↓, ν↑ > 1 (v tomto dílu λ0 = 0,01, ν↓ = 3, ν↑ = 4), tolerance ε > 0 a největší počet kroků; výstup: odhad θ. Kroky:
- Polož θ ← θ(0), λ ← λ0.
- Spočítej r a J v bodě θ.
- Vyřeš soustavu (JTJ + λ diag(JTJ)) δ = JTr pro δ ∈ ℝm.
- Je-li S(θ + δ) < S(θ), krok přijmi: θ ← θ + δ, λ ← λ/ν↓, a pokračuj krokem 5. Jinak krok zahoď, polož λ ← ν↑ · λ a vrať se ke kroku 3.
- Zastavení: změnilo-li se S(θ) o méně než ε, nevedl-li k poklesu ani jeden z omezeného počtu pokusů v kroku 4, nebo proběhl-li největší počet kroků, vrať θ; jinak pokračuj krokem 2.
Přijatý krok tedy vždy zmenší součet čtverců. Pro malé λ se metoda chová jako Gauss–Newton, pro velké jako opatrný gradientní sestup.
Gauss–Newton věří své lineární aproximaci bezmezně, i když platí jen v malém okolí. Levenberg–Marquardt je opatrnější: když se mu krok nevyplatí, zkrátí ho a zkusí znovu. Daleko od cíle chodí krátkými kroky z kopce, blízko cíle přidá na odvaze.
(JTJ + λ diag(JTJ)) δ = JTr
- JTJ, JT
- totéž co u Gaussovy–Newtonovy metody — lineární náhrada modelu v okolí současného odhadu
- λ diag(JTJ)
- tlumení — zvětší diagonálu, a tím zkrátí krok. Pro velké λ je δj ≈ (JTr)j/λ · (JTJ)jj, tedy krátký krok proti gradientu součtu čtverců (ten je −2JTr). Diagonála místo jednotkové matice dělá krok nezávislý na jednotkách parametrů (°C proti minutám)
- δ
- krok — přijme se, jen když součet čtverců opravdu klesne; jinak se zahodí a zkusí kratší
- r
- rezidua při současném odhadu, jako výše
Algoritmus, jak ho počítají tabulky tohoto dílu (Gauss–Newton je totéž s λ = 0 a bez kontroly kroku):
θ = start; λ = 0,01; chyba = SSE(θ)
for k in 1 … 100:
J = Jacobiho matice v θ; r = y − f(x; θ)
for pokus in 1 … 30:
A = JᵀJ s diagonálou vynásobenou (1 + λ) # = JᵀJ + λ·diag(JᵀJ)
δ = vyřeš A·δ = Jᵀr
if τ_nové > 0 and SSE(θ + δ) < chyba:
θ = θ + δ; chyba = SSE(θ); λ = λ / 3 # vyplatilo se: odvážněji
break
λ = λ · 4 # nevyplatilo se: opatrněji
if žádný pokus neuspěl or chyba se skoro nezměnila: konec
| Start | Gauss–Newton | Levenberg–Marquardt |
|---|---|---|
| τ = 20 min | výsledek za 4 kroky | výsledek za 7 kroků |
| τ = 60 min | uletí (τ = −141 min) | výsledek za 11 kroků |
Levenberg–Marquardt ze špatného startu τ = 60 min:
| krok | a (°C) | b (°C) | τ (min) | součet čtverců |
|---|---|---|---|---|
| start | 20,00 | 60,00 | 60,00 | 1331,9 |
| 1 | 18,97 | 60,18 | 37,45 | 318,8 |
| 2 | 19,92 | 64,61 | 29,43 | 72,48 |
| 3 | 20,62 | 67,81 | 26,41 | 7,091 |
| 4 | 21,24 | 68,17 | 25,58 | 3,793 |
| 5 | 22,53 | 67,07 | 24,72 | 3,017 |
| 6 | 24,73 | 65,10 | 23,33 | 2,069 |
| 7 | 26,40 | 63,63 | 22,27 | 1,745 |
| 8 | 26,77 | 63,31 | 22,04 | 1,731 |
| 9–11 | 26,80 | 63,29 | 22,02 | 1,731 |
Každý krok součet čtverců zmenší, nikdy nepřestřelí. Zajímavý je čtvrtý krok: metoda tam prošla blízko skutečných hodnot (místnost 22 °C, τ = 25 min) — a pokračovala dál, protože šum v datech má minimum jinde.
Nelineární regrese tak má starosti, které lineární nezná: potřebuje rozumný start, může skončit v lokálním minimu a nemusí se vůbec dopočítat. Stejné starosti, jen v milionech rozměrů, má učení neuronových sítí.
7. Mimo data: fyzika proti polynomu
Proč se s nelineárním modelem vůbec trápit, když by měření stejně dobře proložil polynom? Polynom 3. stupně je proloží dokonce o chlup lépe: součet čtverců reziduí 1,64 proti 1,73. Rozdíl ukáže až otázka, na kterou data neodpovídají: jakou teplotu bude mít káva za hodinu a půl?
Definice — interpolace a extrapolace
Nechť x1, …, xn ∈ ℝ jsou hodnoty příznaku v trénovacích datech a x ∈ ℝ bod, ve kterém model předpovídá. Předpověď v bodě x je interpolace, právě když
mini xi ≤ x ≤ maxi xi,
a extrapolace, právě když tato podmínka neplatí. U více příznaků (xi ∈ ℝp) se interval nahrazuje konvexním obalem bodů x1, …, xn — nejmenší konvexní množinou, která je všechny obsahuje. Interpolace je tedy předpověď uvnitř oblasti, kde máme data, extrapolace mimo ni. Kvalitu modelu na trénovacích datech lze ověřit jen pro interpolaci; při extrapolaci rozhoduje jen to, jestli tvar modelu odpovídá skutečnosti.
Polynom 3. stupně za 90 minut předpoví −68 °C: kubický člen, který uvnitř dat jen jemně doladil oblouk, mimo ně převezme vládu. Newtonův model předpoví 27,9 °C, skutečnost je 23,9 °C — mýlí se o čtyři stupně, protože špatně odhadl teplotu místnosti, ale tvar má správný. A když teplotu místnosti (22 °C) prostě změříme teploměrem, zbývající rovnice ln(T − 22) = ln b − t/τ je přímka. Obyčejná lineární regrese dá τ = 25,4 min a předpověď 24,0 °C.
ln(T − 22) = ln b + (−1/τ) · t
- ln(T − 22)
- nová vysvětlovaná veličina — odečtení známé teploty místnosti nechá jen exponenciálu b · exp(−t/τ) a logaritmus z ní udělá součet. Smí se jen tam, kde T > 22
- ln b = w0
- úsek přímky — počáteční rozdíl teplot dostaneme zpět jako b = ew0
- −1/τ = w1
- sklon přímky — o kolik klesne logaritmus rozdílu za minutu; časová konstanta je τ = −1/w1
- t
- čas jako obyčejný příznak — a model je zase lineární v parametrech w0, w1
Příklad — od přímky k předpovědi za 90 minut
přímka proložená body (t, ln(T − 22)): w0 ≈ 4,2054, w1 ≈ −0,039296
b = e4,2054 ≈ 67,05 °C, τ = −1/−0,039296 ≈ 25,45 min
T(90) = 22 + 67,05 · exp(−90/25,45) ≈ 22 + 67,05 · 0,02912 ≈ 22 + 1,95 = 23,95 °C
Barvy podle rozboru přímky v logaritmech výše.
Generátor měl b = 68 °C a τ = 25 min; skutečnost za 90 minut je 23,86 °C.
Tahle trojice shrnuje celý díl. Ohebný model bez znalostí (polynom) vystihne data, ale nic o světě mimo ně. Model se správným tvarem (fyzika) extrapoluje rozumně. A každá znalost navíc — tady jeden teploměr — může nelineární úlohu proměnit zpátky v lineární.
8. Shrnutí
- Přidáním příznaků jako x2 se křivka ohne a výpočet zůstane lineární regresí; parabola zvedla R2 spotřeby z 0,566 na 0,975.
- Vzor v grafu reziduí (tady pět plus, patnáct minus, pět plus) prozradí, že model něco nezachytil.
- Polynom vysokého stupně kmitá u okrajů (Rungeho jev, chyba 1,92); kubický spline po kouskách ji srazil na 0,022.
- Model nelineární v parametrech se hledá iteracemi; Gauss–Newton ze špatného startu uletěl, Levenberg–Marquardt došel za 11 kroků.
- Mimo data rozhoduje tvar modelu: za 90 minut polynom −68 °C, Newtonův model 27,9 °C, se známou místností 24,0 °C, skutečnost 23,9 °C.
Chcete si to osahat? Změřte, jak chladne váš čaj — teploměr, hodinky a deset měření — a nechte AI agenta proložit Newtonův model. Pak zkuste, jak dlouho musíte měřit, aby předpověď teploty místnosti vyšla správně.
Máte na to jiný názor? Napište na support@coden-app.com.