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.

Jak dlouhý krok: Armijova podmínka

Směr sám o sobě nestačí — pořád je potřeba říct, jak daleko po něm jít. Nabízí se najít podél toho směru přesné minimum. Je to nápad, který se skoro nikdy nevyplatí: stojí to spoustu vyhodnocení funkce a ten směr se stejně za chvíli změní.

Co se opravdu potřebuje, je dost velký pokles. Přesně to říká Armijova podmínka:

f(x + αd) ≤ f(x) + c₁ · α · ∇fᵀdpodmínka dostatečného poklesu, c₁ ≈ 10⁻⁴

Vpravo je přímka o něco méně strmá než tečna. Krok se přijme, když se funkce dostane pod ni. A hledá se tak, že se začne s α = 1 a půlí se, dokud podmínka neplatí — proto „backtracking".

0.01.02.03.04.00.0204060délka kroku αf(x + αd)funkce podél směrutečna (c₁ = 1)Armijova mez
Přijatý krok α = 0,00098 po 11 zkráceních · f: 24,200 → 5,101
Podmínka nežádá nejlepší α — jen dost velký pokles. Přísnější c₁ hledá déle a nezaručuje lepší výsledek.
Zelená značka je přijatý krok. Přísnější c₁ naklání červenou mez k tečně a nutí ustupovat dál — ale výsledek to nezlepší.

Proč zrovna 10⁻⁴

Vypadá to jako podivně malé číslo a je za tím záměr. Podmínka nemá krok vybírat, má jen vyloučit kroky, které skoro nic nepřinesly. Kdyby bylo c₁ velké, odmítala by i dobré dlouhé kroky a metoda by zbytečně ustupovala. Prakticky se c₁ nikdy nedolaďuje.

Armijova podmínka sama o sobě nestačí k důkazu konvergence: splní ji i posloupnost kroků, které se zkracují tak rychle, že se nikam nedojde. Proto teorie přidává druhou, Wolfeho podmínku na zakřivení, která zakazuje kroky příliš krátké. V praxi s půlením a startem od α = 1 tenhle případ prakticky nenastane, takže sem druhá podmínka není zavedená — a je poctivé to říct, ne to zamlčet.

Jedna past, kterou je vidět v testech

Když směr nemíří dolů (skalární součin s gradientem není záporný), žádné zkracování nepomůže. Solver to pozná a řekne to, místo aby půlil šedesátkrát a vrátil nulu. U Newtonovy metody se to stane vždy, když je Hessián indefinitní — a je to signál, že se má tlumit, ne že se má hledat jinak.

Vzorce v této kapitole

Armijo — dostatečný pokles
f(x + αd) ≤ f(x) + c₁ α ∇fᵀd [—] Armijo 1966, c₁ ≈ 10⁻⁴
α — backtracking
α ← 1; dokud podmínka neplatí: α ← α/2 [—] start od plného kroku
∇fᵀd — test směru dolů
∇fᵀd < 0 [—] jinak zkracování nepomůže