OptiLab kam se to sešlo?

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

Nejstrmější spád a cena za podmíněnost

Nejjednodušší nápad na světě: jdi tam, kde to klesá nejrychleji, tedy proti gradientu.

x_{k+1} = x_k − α ∇f(x_k)nejstrmější spád

Funguje to a je to skoro vždycky špatný nápad. Důvod je geometrický a jde vidět na jednom obrázku: gradient míří kolmo na vrstevnici, a to není směr k minimu. Jsou to tytéž směry jen tehdy, když jsou vrstevnice kružnice.

x₁x₂-1.20.01.2-1.20.01.2Vrstevnice jsou elipsy. Gradient míří kolmo na ně — ne do minima.
Nejstrmější spád: 125 kroků · Newton: 2
Chyba klesá nejvýš faktorem (κ−1)/(κ+1) = 0,9048 za krok — proto to při κ = 1 trvá jeden krok a při κ = 60 desítky.
Táhni číslem podmíněnosti. Při κ = 1 jsou vrstevnice kružnice a stačí jeden krok. Čím protáhlejší elipsy, tím víc se metoda odráží mezi stěnami.

Kolik to stojí

Pro kvadratickou funkci se dá rychlost dokázat, a je nepříjemně konkrétní. Chyba klesá nejvýš faktorem

(κ − 1) / (κ + 1) za krokκ = poměr největšího a nejmenšího vlastního čísla

Při κ = 1 je faktor nula — hotovo na jeden krok. Při κ = 100 je to 0,980, takže na zlepšení o řád je potřeba přes sto kroků. A κ = 100 není patologie; je to běžný stav úlohy, kde jedna proměnná je v milimetrech a druhá v metrech.

Odtud plyne praktická rada, která nemá s optimalizací nic společného: škálujte proměnné. Když se vstupy převedou tak, aby všechny byly řádově jednotkové, číslo podmíněnosti spadne a s ním počet kroků. Je to nejlacinější zrychlení, jaké existuje, a nevyžaduje změnit ani řádek metody.

Kdy má tedy smysl

Když je proměnných tolik, že se Hessián nevejde do paměti — u neuronové sítě s miliony parametrů se nic jiného dělat nedá. Pak se ovšem používají varianty s hybností a adaptivním krokem, které dělají přesně to, co dělá zakřivení: pamatují si, kterým směrem už se šlo.

V robotice, kde má úloha typicky jednotky až desítky parametrů, je čistý gradientní sestup skoro vždy špatná volba. Je tady proto, aby bylo vidět, proti čemu se ostatní metody vymezují.

Vzorce v této kapitole

x_{k+1} — nejstrmější spád
x_{k+1} = x_k − α ∇f(x_k) [—] model je rovina
κ — číslo podmíněnosti
κ = λ_max / λ_min [—] vlastní čísla Hessiánu
ρ — rychlost konvergence
chyba ← chyba · (κ−1)/(κ+1) [—] kvadratická funkce, horní mez