Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
Zwei Messungen kombinieren und die Kalman-Verstärkung, der Filter als laufender Mittelwert, das Zustandsraummodell, Vorhersage und Korrektur, ein Auto per GPS verfolgen und dabei die ungemessene Geschwindigkeit schätzen, die Rauschgrößen Q und R einstellen, Optimalität und nichtlineare Erweiterungen.
Serie KI-Grundlagen Teil 41 von 52
- Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
- Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
- Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
- Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
- Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
- Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
- Logik und Beweise: die Regeln, nach denen KI schließt
- Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
- Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
- Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
- Gradientenabstieg: wie ein Modell lernt
- Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
- Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
- Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
- Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
- Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
- Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
- Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
- Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
- Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
- Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
- Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
- Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
- Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
- Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
- Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
- Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
- Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
- Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
- Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
- Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
- Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
- Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
- Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
- Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
- Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
- Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
- Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
- Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
- Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
- Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
- Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
- Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
- Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
- Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
- Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
- Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
- Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
- Policy Gradient und PPO: die Strategie direkt lernen
- Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
- Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
- Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht
Der ganze Lehrplan der Serie 52 von 83 Themen fertig
- Wie man zwei ungenaue Messungen kombiniert und was die Kalman-Verstärkung ist.
- Wie der Filter Vorhersage nach dem Modell und Korrektur nach der Messung abwechselt — und sogar schätzt, was niemand misst.
- Warum es so sehr auf die Einstellung der Rauschgrößen Q und R ankommt und wie der Filter mit einer nichtlinearen Welt zurechtkommt.
Vorher gut zu wissen: Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino, Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
Apollo 11 flog mit einem Bordcomputer zum Mond, der weniger Speicher hatte als ein heutiger Grafiktaschenrechner. Die Navigation musste dabei aus ungenauen Messungen von Sternen, Radar und Trägheitssensoren laufend schätzen, wo das Raumschiff ist und wie schnell es fliegt. Geholfen hat ihr eine Methode, die Rudolf Kálmán 1960 veröffentlichte und die Stanley Schmidt für die NASA praxistauglich machte. Der Kalman-Filter steckt heute in jedem Handy, das GPS mit dem Beschleunigungssensor verbindet, in jeder Drohne und in jedem Auto, das selbst die Spur hält. Mit diesem Teil endet das Modul über probabilistische Modelle.
Er baut auf den Teilen Hidden-Markov-Modelle und Überblick über Wahrscheinlichkeitsverteilungen auf.
1. Zwei ungenaue Messungen sind besser als eine
Fangen wir einfach an. Wir messen die Entfernung zu einem Leuchtturm zweimal: einmal mit einem genauen Gerät — 100 m mit einer Unsicherheit (Standardabweichung) von 5 m —, dann mit einem groben — 110 m mit einer Unsicherheit von 10 m. Was ist die beste Schätzung?
Satz — Verbindung zweier normalverteilter Schätzungen
Sind zwei unabhängige Schätzungen N(m1, σ12) und N(m2, σ22) gegeben, so ist die verbundene Schätzung normalverteilt mit
m = m1 + K (m2 − m1), σ2 = (1 − K) σ12, wobei K = σ12 / (σ12 + σ22).
Äquivalent 1/σ2 = 1/σ12 + 1/σ22: Die Präzisionen addieren sich.
Beweis. Die verbundene Schätzung hat eine Dichte proportional zum Produkt beider Dichten (Satz von Bayes mit der ersten Schätzung als A-priori-Verteilung und der zweiten als Likelihood). Im Exponenten addieren sich zwei quadratische Funktionen:
−(x − m1)2 / (2σ12) − (x − m2)2 / (2σ22) = −½ (1/σ12 + 1/σ22) x2 + (m1/σ12 + m2/σ22) x + konst.
Eine Dichte mit dem Exponenten −½ ax2 + bx ist nach quadratischer Ergänzung normalverteilt mit Varianz 1/a und Erwartungswert b/a. Daraus folgt 1/σ2 = 1/σ12 + 1/σ22, also σ2 = σ12σ22 / (σ12 + σ22) = (1 − K) σ12, und m = σ2 (m1/σ12 + m2/σ22) = (1 − K) m1 + K m2 = m1 + K (m2 − m1). ∎
Nimm die erste Schätzung und schieb sie in Richtung der zweiten — umso weiter, je mehr du der zweiten vertraust. Die Zahl K sagt, welches Stück des Unterschieds du übernimmst. Das Ergebnis ist genauer als jede Messung für sich; auch die grobe Messung liefert Information.
m = m1 + K (m2 − m1), K = σ12 / (σ12 + σ22), σ2 = (1 − K) σ12
- m1, σ12
- die erste Schätzung (im Bild blau) ist der Ausgangspunkt — von ihr aus verschieben wir; ihre Varianz im Zähler von K besagt: Je weniger wir der ersten Schätzung trauen, desto weiter dürfen wir uns von ihr entfernen
- m2, σ22
- die zweite Schätzung (bernsteinfarben); sie geht nur über die Differenz m2 − m1 in die Formel ein — stimmen beide überein, gibt es nichts zu korrigieren. Ihre Varianz im Nenner von K verkleinert die Verstärkung: Einer groben Messung trauen wir wenig
- K
- die Kalman-Verstärkung, eine Zahl zwischen 0 und 1 — welcher Anteil des Unterschieds übernommen wird. Sie ist der Anteil der Unsicherheit der ersten Schätzung an der Gesamtunsicherheit, sodass die genauere Schätzung das Ergebnis „zu sich zieht“
- m, σ2
- die verbundene Schätzung (grün); der Faktor 1 − K < 1 garantiert, dass die neue Unsicherheit kleiner ist als die erste — jede Messung, auch eine grobe, trägt etwas bei
Hier ist K = 25 / (25 + 100) = 0,2: Wir übernehmen ein Fünftel des Unterschieds und erhalten 102 m mit einer Unsicherheit von √20 ≈ 4,5 m — weniger als die 5 m des genauen Geräts. Diese Zahl K ist die Kalman-Verstärkung, und der ganze Filter ist nichts anderes als dieser Schritt, wiederholt in der Zeit.
Beispiel — Verbindung der Messungen 100 ± 5 m und 110 ± 10 m Schritt für Schritt
Varianzen: σ12 = 52 = 25, σ22 = 102 = 100.
Verstärkung: K = 25 / (25 + 100) = 0,2.
Erwartungswert: m = 100 + 0,2 · (110 − 100) = 102 m — dasselbe wie der gewichtete Mittelwert 0,8 · 100 + 0,2 · 110.
Varianz: σ2 = (1 − 0,2) · 25 = 20, σ = √20 ≈ 4,47 m.
Probe über die Präzisionen: 1/25 + 1/100 = 0,04 + 0,01 = 0,05 = 1/20. ✓
2. Wiederholte Messung einer Größe
Wir messen die Raumtemperatur mit einem Thermometer mit einer Unsicherheit von 2 °C, fünfzigmal hintereinander, und verbinden nach jeder Messung den neuen Wert mit der bisherigen Schätzung. Nach fünfzig Messungen beträgt die Schätzung 19,895 °C — genau das arithmetische Mittel aller Messungen — und die Unsicherheit 0,283 °C = 2/√50. Der Kalman-Filter für eine Größe, die sich nicht ändert, ist also ein gewöhnlicher laufender Mittelwert. Interessant wird er, wenn sich die Größe mit der Zeit ändert.
Satz — der Filter für eine unveränderliche Größe ist ein laufender Mittelwert
Wir messen eine Konstante mit einem Messgerät der Varianz σ2 und beginnen mit einer so unsicheren Schätzung, dass die erste Messung sie vollständig überschreibt (v0 → ∞). Dann gilt nach k Messungen
Kk = 1/k, mk = mk−1 + (1/k) (zk − mk−1) = (z1 + … + zk) / k, vk = σ2/k.
Beweis durch Induktion. Für k = 1 ist K1 = v0 / (v0 + σ2) → 1, also m1 = z1 und v1 = σ2. Gilt vk−1 = σ2/(k − 1), so ist Kk = vk−1 / (vk−1 + σ2) = (1/(k − 1)) / (1/(k − 1) + 1) = 1/k und vk = (1 − 1/k) · σ2/(k − 1) = σ2/k. Ist mk−1 der Mittelwert der ersten k − 1 Messungen, so ist mk = ((k − 1) mk−1 + zk) / k der Mittelwert aller k. ∎
Die zehnte Messung hat im Mittelwert von zehn Zahlen das Gewicht ein Zehntel — und genau so viel gibt ihr auch der Filter. Je mehr wir schon wissen, desto weniger bewegt uns eine einzelne neue Messung. Die Unsicherheit sinkt wie 1/√k: Für den halben Fehler brauchst du viermal so viele Messungen.
Beispiel — die ersten drei Temperaturmessungen
Unser Filter beginnt mit der Schätzung 0 °C und der Varianz 106 (Unsicherheit 1 000 °C — „ich weiß nichts“), die Messvarianz ist 22 = 4.
1. Messung 23,098 °C: K1 = 106 / (106 + 4) ≈ 1, Schätzung 23,098 °C, Varianz 4,00.
2. Messung 21,967 °C: K2 = 4 / (4 + 4) = 1/2, Schätzung 23,098 + ½ · (21,967 − 23,098) = 22,533 °C, Varianz 2,00.
3. Messung 16,630 °C: K3 = 2 / (2 + 4) = 1/3, Schätzung 22,533 + ⅓ · (16,630 − 22,533) = 20,565 °C, Varianz 1,33 = 4/3.
Probe: (23,098 + 21,967 + 16,630) / 3 = 20,565 °C — ein gewöhnlicher Mittelwert. Nach fünfzig Messungen ist die Varianz 4/50 = 0,08 und die Unsicherheit √0,08 ≈ 0,283 °C.
3. Das Zustandsraummodell
Definition — lineares Zustandsraummodell
Ein verborgener Zustand xk ∈ ℝn entwickelt sich, und die Messung zk erfasst ihn mit Rauschen:
xk = F xk−1 + wk, wk ~ N(0, Q), zk = H xk + vk, vk ~ N(0, R).
F ist die Übergangsmatrix, H die Messmatrix, Q die Kovarianz des Prozessrauschens und R die Kovarianz des Messrauschens.
Das ist das Hidden-Markov-Modell aus dem letzten Teil, nur ist der Zustand nicht „fairer oder gezinkter Würfel“, sondern ein Vektor von Zahlen — etwa Position und Geschwindigkeit. Die Physik sagt, wie sich der Zustand ungefähr entwickelt (F); zufällige Stöße und die Ungenauigkeit des Modells fasst Q zusammen. Das Messgerät sieht nur einen Teil des Zustands (H) und irrt sich um R.
Unser Beispiel: Ein Auto fährt mit ungefähr konstanter Geschwindigkeit von 15 m/s die Straße entlang, aber der Fahrer bremst gelegentlich oder gibt Gas — eine zufällige Beschleunigung mit einer Standardabweichung von 0,5 m/s². Der Zustand ist (Position, Geschwindigkeit), der Schritt 1 s, also F = [[1, 1], [0, 1]]: Die neue Position ist die alte plus die Geschwindigkeit. Das GPS misst nur die Position, mit einer Unsicherheit von 8 m: H = [1, 0], R = 64.
Definition — Kovarianzmatrix und mehrdimensionale Normalverteilung
Für einen Zufallsvektor X ∈ ℝn mit Erwartungswert μ = E[X] ist die Kovarianzmatrix Σ = E[(X − μ)(X − μ)T], d. h. Σij = cov(Xi, Xj). Auf der Diagonalen stehen die Varianzen der Komponenten, außerhalb die Kovarianzen; die Matrix ist symmetrisch und positiv semidefinit.
Die Schreibweise X ~ N(μ, Σ) bezeichnet die mehrdimensionale Normalverteilung mit einer Dichte proportional zu exp(−½ (x − μ)T Σ−1 (x − μ)). Für lineare Abbildungen gilt AX + c ~ N(Aμ + c, A Σ AT), und die Summe unabhängiger normalverteilter Vektoren ist normalverteilt mit der Summe der Kovarianzen.
Die Kovarianzmatrix ist „Unsicherheit für mehrere Zahlen auf einmal“. Auf der Diagonalen steht, wie unsicher wir uns bei der Position und wie unsicher bei der Geschwindigkeit sind. Außerhalb der Diagonalen steht, ob die Fehler zusammenhängen: Eine positive Kovarianz von Position und Geschwindigkeit bedeutet „wenn wir das Auto zu weit vorn geschätzt haben, haben wir ihm wahrscheinlich auch eine zu hohe Geschwindigkeit zugeschrieben“.
Beispiel — woher die Matrix Q kommt
Während eines Schritts der Länge Δt wirkt auf das Auto eine konstante zufällige Beschleunigung a ~ N(0, q2). Aus den Formeln für die gleichmäßig beschleunigte Bewegung:
pk = pk−1 + Δt · vk−1 + ½ Δt2 a, vk = vk−1 + Δt · a.
Ohne Rauschen ist das F = [[1, Δt], [0, 1]]. Das Rauschen ist w = g a mit dem Vektor g = (½ Δt2, Δt), und nach der Regel AΣAT von oben ist
Q = q2 g gT = q2 [[Δt4/4, Δt3/2], [Δt3/2, Δt2]].
Für Δt = 1 s und q = 0,5 m/s²: Q = 0,25 · [[0,25; 0,5], [0,5; 1]] = [[0,0625; 0,125], [0,125; 0,25]]. In einer Sekunde fügt die zufällige Beschleunigung also eine Unsicherheit von √0,0625 = 0,25 m in der Position und 0,5 m/s in der Geschwindigkeit hinzu — und beide Fehler haben dasselbe Vorzeichen, deshalb ist die Kovarianz positiv. Genau diese Matrix steht im Code weiter unten.
4. Vorhersage und Korrektur
Algorithmus — Kalman-Filter
Die Schätzung ist eine Normalverteilung mit Erwartungswert x̂ und Kovarianz P. In jedem Schritt:
Vorhersage: x̂− = F x̂, P− = F P FT + Q.
Korrektur: K = P− HT (H P− HT + R)−1, x̂ = x̂− + K (z − H x̂−), P = (I − K H) P−.
Vorhersage: „Nach der Physik müsste das Auto jetzt hier sein“ — und weil die Physik nicht perfekt ist, wächst die Unsicherheit ein wenig. Korrektur: Eine Messung kommt; der Unterschied zwischen Messung und Vorhersage (die Innovation) wird nur zum Anteil K übernommen, je nachdem, wem wir mehr vertrauen. Das ist die Verbindung zweier Messungen aus dem ersten Kapitel — die eine „Messung“ ist die Vorhersage aus dem letzten Schritt, die andere das GPS. Die Kovarianz P merkt sich außerdem, wie der Fehler der Position mit dem der Geschwindigkeit zusammenhängt, und dadurch korrigiert der Filter auch die Geschwindigkeit, die niemand misst.
Die Farben in den Aufschlüsselungen unten passen zu den Bildern: Vorhersage (früher „erste Schätzung“) blau, Messung bernsteinfarben, Ergebnis grün, Verstärkung violett.
x̂− = F x̂, P− = F P FT + Q
- x̂−, P−
- die Vorhersage für diesen Schritt, bevor die Messung kommt — sie spielt die Rolle der „ersten Schätzung“ aus der Verbindung zweier Messungen
- F … FT
- das Modell schiebt die Schätzung nach vorn; die Unsicherheit wird nach der Regel AΣAT übertragen (beim Auto: Eine unsichere Geschwindigkeit schlägt sich nach einer Sekunde in der Unsicherheit der Position nieder). FP reicht nicht, weil die Kovarianz eine quadratische Größe ist — sie wird von links und von rechts multipliziert
- Q
- das Modell ist nicht perfekt (der Fahrer bremst), also wird in jedem Schritt Unsicherheit addiert — ohne Q würde P gegen null sinken und der Filter hörte auf, auf die Messungen zu achten
K = P− HT (H P− HT + R)−1
- H P− HT
- die Unsicherheit der Vorhersage, übersetzt in die Sprache des Messgeräts (beim Auto nur die Varianz der Position) — entspricht σ12
- R
- die Messvarianz, entspricht σ22; die Summe in der Klammer ist die Varianz der Innovation S — um wie viel Messung und Vorhersage rein zufällig auseinanderliegen können
- P− HT
- die Kovarianz des gesamten Zustands mit der gemessenen Größe; durch sie bekommt auch die Geschwindigkeit, die niemand misst, eine von null verschiedene Verstärkung — die Fehler von Position und Geschwindigkeit hängen zusammen
- K
- die Kalman-Verstärkung, eine Zahl für jede Komponente des Zustands; die Inverse statt einer Division nur deshalb, weil die Messung ein Vektor sein kann
x̂ = x̂− + K (z − H x̂−), P = (I − K H) P−
- x̂−, P−
- die Vorhersage — der Ausgangspunkt, von dem aus wir verschieben
- z
- die neue Messung (im Bild die bernsteinfarbenen GPS-Punkte); die einzige Stelle, an der Daten in die Schätzung eingehen
- H
- übersetzt die Zustandsvorhersage in das, was das Messgerät anzeigen müsste; Messung und Zustand lassen sich nicht direkt voneinander abziehen, weil das GPS nur die Position sieht, nicht die Geschwindigkeit
- K
- welcher Anteil der Innovation z − Hx̂− in jede Komponente des Zustands übernommen wird
- x̂, P
- die korrigierte Schätzung (im Bild grün); der Faktor I − KH verkleinert die Unsicherheit — umso stärker, je größer der Anteil der Messung ist, den wir übernommen haben
import numpy as np
F = np.array([[1, 1], [0, 1]]) # Position += Geschwindigkeit
H = np.array([[1, 0]]) # wir messen nur die Position
Q = 0.5**2 * np.array([[1/4, 1/2], [1/2, 1]]) # zufällige Beschleunigung
R = np.array([[8**2]]) # GPS ± 8 m
def kalman(mereni, x, P):
for z in mereni:
x, P = F @ x, F @ P @ F.T + Q # Vorhersage
K = P @ H.T @ np.linalg.inv(H @ P @ H.T + R)
x = x + K @ (z - H @ x) # Korrektur anhand der Innovation
P = (np.eye(2) - K @ H) @ P
yield x, P
Beispiel — die ersten beiden Schritte des Filters mit den Daten des Autos
Start. Die erste GPS-Messung ist z1 = 8,44 m. Der Filter beginnt mit der Position 8,44 m, der Geschwindigkeit 0 und einer großen Unsicherheit P0 = [[100; 0], [0; 100]] (10 m und 10 m/s). Die Korrektur mit derselben Messung ändert die Position nicht (die Innovation ist 0), sie verkleinert nur ihre Varianz: K = 100 / (100 + 64) = 0,610, P11 = (1 − 0,610) · 100 = 39,02.
Vorhersage für die 2. Sekunde. x̂− = (8,44 + 0; 0) = (8,44; 0,00). Die Kovarianz FPFT addiert zur Varianz der Position die Varianz der Geschwindigkeit (Position += Geschwindigkeit):
P− = [[39,02 + 100 + 0,0625; 100 + 0,125], [100 + 0,125; 100 + 0,25]] = [[139,09; 100,13], [100,13; 100,25]].
Korrektur. Messung z2 = 23,23 m, Innovation y = 23,23 − 8,44 = 14,78 m, ihre Varianz S = 139,09 + 64 = 203,09.
K = (139,09; 100,13) / 203,09 = (0,685; 0,493),
x̂ = (8,44 + 0,685 · 14,78; 0 + 0,493 · 14,78) = (18,57 m; 7,29 m/s).
Nach zwei Messungen „weiß“ der Filter, dass sich das Auto bewegt, obwohl niemand die Geschwindigkeit gemessen hat: Er hat 7,3 m/s geschätzt (tatsächlich 13,9 m/s). Die Verstärkung für die Geschwindigkeit ist nur dank der Kovarianz 100,13 außerhalb der Diagonalen von null verschieden. Warum nur die Hälfte? Die Messungen sind um 8 m verrauscht, deshalb nimmt der Filter den Unterschied von 15 m noch nicht ganz ernst — in den folgenden Sekunden wird die Geschwindigkeit nachjustiert.
5. Der Filter verfolgt ein Auto
Eine Minute Fahrt, eine GPS-Messung pro Sekunde. In dieser Zeit legt das Auto knapp einen Kilometer zurück, sodass das Rauschen in einem Positionsdiagramm untergehen würde. Wir zeichnen deshalb, um wie viel das Auto einer Fahrt mit genau 15 m/s voraus ist oder hinterherhinkt:
Die GPS-Messungen weichen von der tatsächlichen Position im Mittel um 8,3 m ab (ab der zehnten Sekunde, wenn der Filter eingeschwungen ist). Die Schätzung des Filters nur um 4,9 m — 41 % weniger. Und die Geschwindigkeit, die kein Sensor misst, schätzt er mit einem Fehler von 0,8 m/s: Der Filter leitet sie daraus ab, wie sich die Position ändert. Am Anfang kennt er die Geschwindigkeit nicht (er beginnt bei null), nach ein paar Sekunden aber hat er sie im Griff. Das Band ±2σ ist die ehrliche Unsicherheit des Filters — die tatsächliche Position liegt in 95 % der Schritte darin, genau wie es sein soll.
Definition — mittlerer Fehler (RMSE) und das Band ±2σ
Der „mittlere Fehler“ in diesem Teil ist die Wurzel aus dem mittleren quadratischen Fehler (RMSE) über die Schritte k = 10, …, 59 (N = 50):
RMSE = √( (1/N) ∑k (x̂k − xk)2 ),
wobei xk die tatsächliche Position ist und x̂k die Schätzung (oder die Messung selbst). Die Quadrate bestrafen große Fehler stärker als kleine, und die Wurzel bringt das Ergebnis zurück in Meter. Für das GPS allein sollte der RMSE etwa bei σ = 8 m liegen — herausgekommen sind 8,3 m.
Das Band ±2σ ist das Intervall x̂k ± 2√Pk,11. Bei einer Normalverteilung liegt im Intervall μ ± 2σ die Wahrscheinlichkeit 0,9545; hat der Filter die Unsicherheit P richtig berechnet, muss die Wirklichkeit in etwa 95 % der Schritte in das Band fallen.
Die Kalman-Verstärkung pendelt sich nach ein paar Schritten bei K ≈ (0,30; 0,05) ein: Von jeder Innovation übernimmt der Filter 30 % in die Position und 5 % (pro Meter Innovation 0,05 m/s) in die Geschwindigkeit. Über 50 simulierte Fahrten beträgt der Fehler des Filters im Mittel 55 % des Fehlers des GPS allein.
Satz — stationäre Verstärkung
In den Formeln für P−, K und P kommen die Messungen z nicht vor — Kovarianz und Verstärkung lassen sich im Voraus berechnen. Verbindet man Vorhersage und Korrektur, entsteht die Rekursion (die diskrete Riccati-Gleichung)
P−k+1 = F (P−k − P−kHT (HP−kHT + R)−1 HP−k) FT + Q.
Für konstante F, H, Q, R, die die üblichen Bedingungen erfüllen (das System ist beobachtbar — aus einer Reihe von Messungen lässt sich der ganze Zustand ermitteln — und das Rauschen Q wirkt auf alle seine Komponenten), konvergiert die Folge unabhängig vom Anfangswert P0 gegen einen einzigen Fixpunkt; die Verstärkung konvergiert dann gegen einen stationären Wert.
Beim Auto: Nach 60 Schritten ist K = (0,297; 0,052) und P = [[19,04; 3,35], [3,35; 1,29]], der Filter traut sich also √19,04 ≈ 4,4 m in der Position und √1,29 ≈ 1,1 m/s in der Geschwindigkeit zu.
Am Anfang weiß der Filter fast nichts und verschlingt jede Messung (Verstärkung 0,61, dann 0,68). Je genauer die Schätzung wird, desto kleiner wird die Verstärkung — bis sie sich dort einpendelt, wo die Unsicherheit, die das Rauschen Q pro Schritt hinzufügt, genauso groß ist wie die, die die Messung wegnimmt. Danach ändert sich nichts mehr, und deshalb wird die Verstärkung in einfachen Geräten oft einmal im Voraus berechnet, und der Filter multipliziert dann nur noch mit festen Zahlen.
6. Wem vertrauen: Q und R
Der Filter muss Q und R kennen. Für das GPS gibt sie meist der Hersteller an, das Prozessrauschen lässt sich aber schwerer schätzen. Was passiert, wenn wir dem Filter andere Werte geben, als die Daten haben?
| Prozessrauschen, an das der Filter glaubt (m/s²) | 0,01 | 0,1 | 0,5 (wahr) | 2 | 10 |
|---|---|---|---|---|---|
| Positionsfehler (m) | 9,29 | 5,88 | 4,86 | 5,67 | 7,08 |
| Geschwindigkeitsfehler (m/s) | 1,19 | 0,86 | 0,79 | 1,53 | 5,19 |
Glaubt der Filter, dass das Auto fast exakt mit konstanter Geschwindigkeit fährt (kleines Q), hält er sich an sein Modell und reagiert auf echte Beschleunigung zu spät — der Positionsfehler ist sogar größer als beim GPS allein. Erwartet er dagegen wilde Änderungen (großes Q), traut er dem Modell nicht und kopiert die verrauschten Messungen. Am besten schneidet er mit dem wahren Wert 0,5 ab. Dasselbe gilt für R: Mit einer GPS-Unsicherheit von 2, 8 und 30 m ergibt sich ein Positionsfehler von 5,66; 4,86 und 5,39 m.
7. Warum gerade so
Satz — Optimalität des Kalman-Filters
Ist das Modell linear und sind die Rauschterme normalverteilt, so ist die Verteilung N(x̂k, Pk) genau die A-posteriori-Verteilung des Zustands P(xk | z1, …, zk). Ohne die Annahme der Normalverteilung ist der Kalman-Filter die beste lineare Schätzung im Sinne des mittleren quadratischen Fehlers.
Der Kalman-Filter ist der Satz von Bayes, immer wieder angewendet. Die Vorhersage ist die A-priori-Verteilung, die Messung die Likelihood, die Korrektur die A-posteriori-Verteilung. Die Normalverteilung hat die seltene Eigenschaft, dass das Produkt von Normalverteilungen wieder normal ist — und so genügt es, sich Erwartungswert und Kovarianz statt der ganzen Funktion zu merken. Es ist der Vorwärtsalgorithmus der Hidden-Markov-Modelle für einen stetigen Zustand.
p(xk | z1:k) ∝ p(zk | xk) · ∫ p(xk | xk−1) p(xk−1 | z1:k−1) dxk−1
- ∫ p(xk | xk−1) p(xk−1 | z1:k−1) dxk−1
- die Vorhersage (A-priori-Verteilung): Den vorigen Zustand kennen wir nicht genau, also mitteln wir den Übergang über alle möglichen vorigen Zustände, gewichtet damit, was wir zuletzt geglaubt haben. Das Integral ist das stetige Gegenstück zur Summe ∑i im Vorwärtsalgorithmus des HMM. Für ein lineares Modell und Normalverteilungen ergibt sich N(Fx̂, FPFT + Q)
- p(zk | xk)
- die Likelihood der neuen Messung — wie gut welcher Ort erklären würde, was das GPS angezeigt hat; aus dem Modell ist das N(zk; Hxk, R)
- p(xk | z1:k)
- die A-posteriori-Verteilung nach allen Messungen; „∝“ deshalb, weil wir die Normierungskonstante p(zk | z1:k−1) nicht brauchen — das Produkt zweier Normaldichten rechnet der Beweis des Satzes vom Anfang des Teils aus, und heraus kommt genau der Korrekturschritt
8. Wenn die Welt nicht linear ist
- Der erweiterte Kalman-Filter (EKF) linearisiert das nichtlineare Modell in jedem Schritt mit der Ableitung — so hat es auch die Navigation von Apollo gemacht.
- Der Unscented-Kalman-Filter (UKF) schickt statt Ableitungen ein paar sorgfältig gewählte Punkte durch das Modell und berechnet aus ihnen den neuen Erwartungswert und die neue Kovarianz.
- Der Partikelfilter verzichtet ganz auf die Normalverteilung: Er stellt die Schätzung durch Tausende von Stichproben („Partikeln“) dar, die sich nach dem Modell bewegen und nach den Messungen neu gewichtet werden. Er kommt auch mit einer Schätzung mit mehreren Gipfeln zurecht, etwa „der Roboter ist entweder in der Küche oder im Wohnzimmer“.
- Wo überall: Verbindung von GPS, Beschleunigungssensor und Gyroskop in Handys, Navigation von Flugzeugen, Drohnen und Raketen, Objektverfolgung per Radar, Positionsschätzung autonomer Autos und sogar die Glättung ökonomischer Zeitreihen.
Definition — erweiterter Kalman-Filter (EKF)
Das Modell ist nichtlinear: xk = f(xk−1) + wk, zk = h(xk) + vk. Der EKF berechnet den Erwartungswert mit den nichtlinearen Funktionen und die Kovarianz mit ihren Jacobi-Matrizen (Matrizen der partiellen Ableitungen) an der aktuellen Schätzung:
Fk = ∂f/∂x |x̂k−1, Hk = ∂h/∂x |x̂−k,
x̂− = f(x̂), P− = Fk P FkT + Q, x̂ = x̂− + K (z − h(x̂−)), K und P wie zuvor mit Hk statt H.
Beispiel: Ein Radar misst die Entfernung h(px, py) = √(px2 + py2); dann ist Hk = (px/d, py/d) mit d = √(px2 + py2) — der Einheitsvektor in Richtung des Ziels. Für ein Ziel bei (300, 400) m ist d = 500 m und Hk = (0,6; 0,8). Das Ergebnis ist keine exakte A-posteriori-Verteilung mehr, nur eine Näherung; je stärker das Modell im Bereich der Unsicherheit gekrümmt ist, desto schlechter.
9. Zusammenfassung
- Zwei unabhängige normalverteilte Messungen werden durch einen gewichteten Mittelwert verbunden; die Präzisionen addieren sich, und das Gewicht K ist die Kalman-Verstärkung.
- Der Kalman-Filter wiederholt die Vorhersage nach dem Modell und die Korrektur nach der Messung; für eine unveränderliche Größe ist er ein laufender Mittelwert.
- Beim Auto senkte er den Positionsfehler von 8,3 m (GPS) auf 4,9 m und schätzte auch die nicht gemessene Geschwindigkeit mit einem Fehler von 0,8 m/s; das Band ±2σ überdeckte die Wirklichkeit in 95 % der Schritte.
- Das Ergebnis hängt von Q und R ab: Zu viel Vertrauen ins Modell reagiert zu spät, zu wenig kopiert das Rauschen.
- Für ein lineares Modell mit normalverteiltem Rauschen ist der Filter eine exakte Bayes-Aktualisierung; die nichtlineare Welt bewältigen EKF, UKF und Partikelfilter.
Mit diesem Teil endet das Modul über probabilistische Modelle. Willst du es selbst ausprobieren? Lass einen KI-Agenten einen Kalman-Filter für die Daten aus dem Beschleunigungssensor deines eigenen Handys schreiben, und probier aus, wie gut er daraus schätzt, um wie viel du das Handy verschoben hast.
Siehst du das anders? Schreib an support@coden-app.com.