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.

Malé reziduum ještě neznamená správné parametry

Tuhle kapitolu si vynutil vlastní spadlý test, a je to nejdůležitější věc v celé labce.

Úloha: proložit daty součet dvou exponenciál, model se čtyřmi parametry.

M(x, t) = x₃ e^{x₁ t} + x₄ e^{x₂ t}model z [MNT], příklad 1.1

Data byla vyrobena z pravdivých parametrů [−4, −5, 4, −4] a doplněna malým šumem. Test tvrdil, že nalezené parametry budou pořád „blízko pravdě". Spadl — a solver měl pravdu.

Co Levenberg-Marquardt našel: parametry [−4,571, −4,583, 373,9, −373,9]. Třetí a čtvrtý jsou stokrát větší, než mají být. A přitom je reziduum toho fitu 6,81·10⁻², zatímco reziduum v pravých parametrech je 7,71·10⁻². Nalezené řešení je tedy lepší než pravda.

Proč se to stalo

Není to chyba optimalizace. Je to vlastnost modelu. Když se obě rychlosti přiblíží k sobě — x₁ = a + ε, x₂ = a − ε — a koeficienty se nastaví na x₃ = C/2ε, x₄ = −C/2ε, pak

(C/2ε) e^{at}(e^{εt} − e^{−εt}) = (C/ε) e^{at} sinh(εt) → C · t · e^{at}limita pro ε → 0

Součet dvou exponenciál tedy umí napodobit úplně jinou funkci — C·t·e^{at} — a koeficienty přitom utečou do nekonečna. Dvě naprosto různé sady parametrů dávají prakticky tutéž křivku.

0.01.02.03.00.00.10.2thodnota modelusoučet dvou exponenciálC·t·e^{at}Koeficienty rostou do nekonečna, ale křivka se ustálí.
x₁ = -1,500, x₂ = -2,500, x₃ = 1,0, x₄ = -1,0
Největší odchylka od C·t·e^{at}: 7.20e-3
Když se ε blíží nule, koeficienty utečou do nekonečna a křivka se přesto skoro nezmění. Dvě naprosto různé sady parametrů dávají tutéž křivku — a žádný optimalizátor mezi nimi nemůže rozhodnout, protože není podle čeho.
Zmenšuj rozestup rychlostí. Koeficienty rostou přes všechny meze, ale křivka se skoro nemění — a to je celý problém.

Co s tím

Lepší optimalizátor nepomůže, protože žádný optimalizátor nemá podle čeho mezi těmi sadami rozhodnout. Pomůže jen menší model. Když se rovnou proloží dvouparametrické C·t·e^{at}, vyjde stejně dobré reziduum a parametry jsou dobře určené. Testy tady ověřují obojí.

příznakco znamená
koeficienty utíkají do velkých hodnotskoro jistě degenerace
dva parametry se skoro vyrušímodel má nadbytečný stupeň volnosti
reziduum je skvělé, ale parametry nesmyslnéfit sedí, model nikoli
malá změna dat velmi změní parametryúloha je špatně podmíněná

To je táž věc, kterou si VisionLab zapsal u hand-eye kalibrace — „malé reziduum není důkaz". Tady v nejostřejší podobě: reziduum není jen malé, ono porazí pravdu.

Praktický důsledek pro robotiku. Identifikace parametrů ramene — hmotností, poloh těžišť, tření — je přesně tenhle druh úlohy a trpí přesně tímhle. Proto se identifikuje jen to, co je z daného pohybu vůbec identifikovatelné (takzvané základní parametry), a ne všechno, co v modelu stojí. Když se to nedodrží, vyjdou hmotnosti, které jsou záporné, a fit bude výborný.

Vzorce v této kapitole

M — součet dvou exponenciál
M(x,t) = x₃e^{x₁t} + x₄e^{x₂t} [—] [MNT] příklad 1.1
→ — degenerace modelu
x₃e^{(a+ε)t} + x₄e^{(a−ε)t} → C·t·e^{at} pro ε → 0 [—] x₃ = C/2ε, x₄ = −C/2ε
— — příznak nejednoznačnosti
velké parametry, které se skoro vyruší, při skvělém reziduu [—] nález z vlastního testu