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.

Tlumení: jedno číslo pro směr i délku

Levenberg (1944) a Marquardt (1963) přidali ke Gauss-Newtonovi jediný člen:

(JᵀJ + μI) h = −g, g = Jᵀf, μ ≥ 0Levenberg-Marquardtův krok

To μ dělá tři věci naráz, a proto je metoda tak úspěšná:

  • Pro μ > 0 je matice zaručeně pozitivně definitní, takže krok vždycky míří dolů.
  • Pro velké μ vyjde h ≈ −g/μ — krátký krok po nejstrmějším spádu. To je dobré daleko od řešení.
  • Pro malé μ vyjde Gauss-Newtonův krok. To je dobré blízko řešení.

A hlavně: jedno číslo řídí směr i délku zároveň. Proto tahle metoda žádný line search nepotřebuje.

x₁x₂-1.9-0.41.00.41.32.2nejstrmější spádTlumení otáčí krok mezi dvěma krajnostmi — a zároveň ho zkracuje.
μ = 0,01000 · délka kroku ‖h‖ = 4,9799
úhel ke Gauss-Newtonovu kroku: 0,1° · k nejstrmějšímu spádu: 87,6°
Malé μ dá Gauss-Newtonův krok, velké μ krátký krok po gradientu. Mezi tím se plynule přelévá — jedním číslem se řídí SMĚR i DÉLKA naráz.
Táhni tlumením přes deset řádů. Zelená šipka je skutečný krok; modrá a fialová jsou obě krajnosti, mezi kterými se přelévá.

Jak se μ řídí — a tady se nejčastěji chybuje

Po každém navrženém kroku se porovná, o kolik funkce klesla, s tím, o kolik model slíbil, že klesne. Ten poměr se jmenuje zisk:

ϱ = [ F(x) − F(x+h) ] / [ L(0) − L(h) ]poměr zisku
L(0) − L(h) = ½ hᵀ(μh − g)jmenovatel je slib MODELU, ne skutečnost

Ten jmenovatel je první místo, kde se dá udělat chyba: musí to být pokles předpovězený lineárním modelem, ne skutečný. Druhé místo je aktualizace μ. Není to „půl" ani „dvojnásobek", ale:

ϱ > 0: μ ← μ · max{ ⅓, 1 − (2ϱ − 1)³ }, ν ← 2krok přijat
ϱ ≤ 0: μ ← μ · ν, ν ← 2νkrok zamítnut — a tresty se zdvojnásobují

Ta kubika není ozdoba. Při ϱ = ½ nechá μ beze změny; při ϱ → 1 ho stáhne na třetinu; a nikdy ho nezmenší víc. Tlumení tak plynule mizí, jak model začíná být důvěryhodný. Zdvojnásobování ν při zamítnutí zase zajistí, že se metoda z beznadějného místa dostane rychle, ne po jednom kroku.

μ₀ = τ · max{ (JᵀJ)ᵢᵢ }počáteční tlumení, τ ≈ 10⁻³

Že KineLab řeší inverzní kinematiku „tlumenými nejmenšími čtverci" znamená právě tohle. Tlumení tam brání tomu, aby kloubové rychlosti utekly do nekonečna, když se rameno blíží singularitě — což je přesně tentýž jev jako singulární Jakobián tady. Tatáž rovnice, jiný slovník.

Vzorce v této kapitole

h_LM — krok Levenberg-Marquardta
(JᵀJ + μI) h = −Jᵀf [—] [MNT] alg. 3.16
ϱ — poměr zisku
ϱ = [F(x) − F(x+h)] / [L(0) − L(h)] [—] skutečnost ku slibu
L(0)−L(h) — slib modelu
½ hᵀ(μh − g) [—] vždy kladný
μ⁺ — tlumení po dobrém kroku
μ ← μ · max{⅓, 1 − (2ϱ−1)³} [—] kubika, ne půlení
μ⁻ — tlumení po špatném kroku
μ ← μν, ν ← 2ν [—] zdvojnásobující se trest
μ₀ — počáteční tlumení
μ₀ = τ·max{(JᵀJ)ᵢᵢ}, τ ≈ 10⁻³ [—] [MNT] (3.14)