Přeskočit na obsah
coden

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.

13 minut Matěj Žalmánek 2026-10-16

Série Základy AI Díl 48 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. 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 si odnesete
  • 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.

Laicky řečeno

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:

34567 spotřeba (l/100 km) −101 reziduum (l/100 km) 406080100120 rychlost jízdy (km/h)
Spotřeba podle rychlosti; dole rezidua obou modelů přímka parabola

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í
Ohyb přichází z příznaku v2, ne z nelineárního výpočtu.
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.

Laicky řečeno

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.

Laicky řečeno

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ší
Přesné předpoklady: je-li f na intervalu [α, β] spojitá spolu s derivacemi až do řádu n + 1, uzly x0, …, xn ∈ [α, β] jsou navzájem různé a p je interpolační polynom, pak ke každému x ∈ [α, β] existuje ξ ∈ [α, β] (závislé na x), pro které rovnost platí. Chyba je součin vlastnosti funkce a vlastnosti uzlů; Rungeho funkce selže v obou.
012 −1−0,500,51 vstup x (bez jednotky) hodnota funkce y (bez jednotky)
Jedenáct bodů funkce 1 / (1 + 25x²): polynom 10. stupně a kubický spline skutečná funkce polynom 10. stupně kubický spline

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

  1. pro každé i = 0, …, n − 1 je zúžení S na interval [xi, xi+1] polynom stupně nejvýš 3 (označme ho Si);
  2. 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.

Laicky řečeno

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
Parametry a a b jsou v modelu lineárně, τ ne — kvůli jedinému parametru je potřeba iterovat.
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:

  1. Polož θ ← θ(0).
  2. Spočítej vektor reziduí r = (r1(θ), …, rn(θ))T ∈ ℝn a Jacobiho matici J ∈ ℝn×m, Jij = ∂f(xi; θ)/∂θj.
  3. 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ý).
  4. Polož θ ← θ + δ.
  5. 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.

Laicky řečeno

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í
Stejný tvar jako XTXw = XTy z lineární regrese, jen se v každém kroku počítá znovu.
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:

kroka (°C)b (°C)τ (min)součet čtverců
start20,0060,0020,001684,2
127,0663,0121,871,742
226,8063,2922,021,731
3, 426,8063,2922,021,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:

  1. Polož θ ← θ(0), λ ← λ0.
  2. Spočítej r a J v bodě θ.
  3. Vyřeš soustavu (JTJ + λ diag(JTJ)) δ = JTr pro δ ∈ ℝm.
  4. Je-li S(θ + δ) < S(θ), krok přijmi: θ ← θ + δ, λ ← λ/ν↓, a pokračuj krokem 5. Jinak krok zahoď, polož λ ← ν↑ · λ a vrať se ke kroku 3.
  5. 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.

Laicky řečeno

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
Pro λ = 0 je to přesně Gauss–Newton; λ plynule přepíná mezi odvážným a opatrným krokem.

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
StartGauss–NewtonLevenberg–Marquardt
τ = 20 minvýsledek za 4 krokyvýsledek za 7 kroků
τ = 60 minuletí (τ = −141 min)výsledek za 11 kroků

Levenberg–Marquardt ze špatného startu τ = 60 min:

kroka (°C)b (°C)τ (min)součet čtverců
start20,0060,0060,001331,9
118,9760,1837,45318,8
219,9264,6129,4372,48
320,6267,8126,417,091
421,2468,1725,583,793
522,5367,0724,723,017
624,7365,1023,332,069
726,4063,6322,271,745
826,7763,3122,041,731
9–1126,8063,2922,021,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?

naměřeno 020406080 0306090 čas od nalití t (min) teplota kávy T (°C)
Chladnutí kávy: měřeno 30 minut, předpověď do 90 minut Newtonův model Newtonův model se známou místností polynom 3. stupně skutečnost
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.

Laicky řečeno

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
Pozor: nejmenší čtverce v logaritmech nejsou totéž co nejmenší čtverce ve stupních — chyby malých rozdílů teplot logaritmus zvětší.
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.

Agent na vašem počítači, ovládaný z telefonu