El filtro de Kalman: cómo estimar a partir de mediciones imprecisas dónde está un coche y a qué velocidad va
Combinación de dos mediciones y ganancia de Kalman, el filtro como media acumulada, el modelo de estados, predicción y corrección, seguimiento de un coche por GPS con estimación de la velocidad no medida, ajuste de los ruidos Q y R, optimalidad y extensiones no lineales.
Serie Fundamentos de IA Parte 41 de 52
- Mapa de la inteligencia artificial: qué es cada cosa y cómo encaja todo
- Breve historia de la inteligencia artificial: de Turing a los modelos de lenguaje
- Datos, modelo, entrenamiento, inferencia: los conceptos básicos en un solo ejemplo
- Cómo leer la notación matemática: símbolos, subíndices, sumatorios y cuantificadores
- Conjuntos y relaciones: las piezas con las que se construyen las definiciones en IA
- Funciones y aplicaciones: por qué todo modelo de IA es una función
- Lógica y demostraciones: las reglas con las que se razona en IA
- Grafos y árboles: la estructura sobre la que se apoyan la búsqueda y las redes neuronales
- Álgebra lineal para aprendizaje automático: vectores, matrices y por qué la IA sobre todo multiplica
- Derivadas, gradiente y regla de la cadena: cómo sabe un modelo en qué dirección aprender
- Descenso de gradiente: cómo aprende un modelo
- Qué es la probabilidad: del lanzamiento de un dado a los axiomas de Kolmogórov
- Probabilidad condicionada y teorema de Bayes: cómo cambiar una estimación cuando te enteras de algo nuevo
- Variable aleatoria y función de distribución: una sola función que lo dice todo sobre la distribución
- Función de densidad y función de probabilidad: por qué una variable continua tiene probabilidad cero en cada punto
- Esperanza, varianza y covarianza: dónde está una distribución, qué anchura tiene y qué se relaciona con qué
- Resumen de las distribuciones de probabilidad: Bernoulli, binomial, Poisson, uniforme, normal y exponencial
- Ley de los grandes números y teorema central del límite: por qué las medias se comportan de forma tan predecible
- Estadística y estimación de parámetros: máxima verosimilitud, MAP e intervalos de confianza
- Teoría de la información: entropía, entropía cruzada y divergencia KL, el origen de las funciones de pérdida
- Búsqueda en el espacio de estados: BFS, DFS, UCS y A* con animaciones
- Juegos y adversarios: minimax, poda alfa-beta y Monte Carlo tree search
- Satisfacción de restricciones: backtracking, propagación de restricciones y AC-3 con un sudoku y un mapa de regiones checas
- Lógica y sistemas basados en conocimiento: encadenamiento hacia delante y hacia atrás, resolución y sistemas expertos
- Planificación: STRIPS, el mundo de bloques, heurísticas a partir de la relajación y la planificación en los agentes de IA
- Búsqueda local y recocido simulado: un viajante por las capitales regionales checas
- Algoritmos genéticos: población, cruce, mutación y selección en una mochila para la excursión
- Estrategias evolutivas y programación genética: de la regla de un quinto a la ley de Kepler
- Optimización por colonia de hormigas: cómo un rastro de feromona encuentra un camino corto
- Optimización por enjambre de partículas: inercia, experiencia propia y experiencia del enjambre
- Neuroevolución: evolución de los pesos y la forma de las redes neuronales, y el algoritmo NEAT
- Conjuntos difusos y funciones de pertenencia: cómo escribir «algo cálido»
- Lógica difusa y probabilidad: por qué «algo cálido» no significa «probablemente cálido»
- Lógica difusa: t-normas, implicaciones y reglas SI–ENTONCES
- Control difuso: Mamdani y Sugeno, del ventilador al péndulo invertido sobre un carro
- Agrupamiento difuso: el algoritmo fuzzy c-means y los puntos entre clusters
- Sistemas neuro-difusos (ANFIS): reglas difusas que aprenden de los datos
- Cadenas de Markov: matriz de transición, distribución estacionaria y PageRank
- Modelos ocultos de Márkov: el algoritmo de Viterbi y el casino deshonesto
- Redes bayesianas: por qué está mojada la hierba y qué significa eso para el aspersor
- El filtro de Kalman: cómo estimar a partir de mediciones imprecisas dónde está un coche y a qué velocidad va
- Tipos de aprendizaje automático: supervisado, no supervisado, semisupervisado y más
- Prompts, contexto y RAG: cómo darle a un modelo la información correcta
- Autocodificadores variacionales (VAE): imágenes nuevas a partir de un espacio latente continuo
- Redes generativas adversarias (GAN): el falsificador contra el detective
- Modelos de difusión: cómo el ruido puro se convierte en una imagen
- Procesos de decisión de Markov: estados, acciones, recompensas y ecuaciones de Bellman
- Q-learning y DQN: aprender el valor de las acciones, de la tabla a la red neuronal
- Gradiente de la política y PPO: aprender directamente la política
- Cómo funciona un agente de IA: un modelo de lenguaje en un bucle con herramientas
- Programación con agentes de IA: encargo, pruebas y revisión
- Evaluación y seguridad de los sistemas de IA: cómo medir y cómo vigilar
Temario completo de la serie 52 de 83 temas publicados
- Cómo se combinan dos mediciones imprecisas y qué es la ganancia de Kalman.
- Cómo el filtro alterna la predicción según el modelo y la corrección según la medición — y estima incluso lo que nadie mide.
- Por qué importa tanto el ajuste de los ruidos Q y R y cómo se las arregla el filtro con un mundo no lineal.
Conviene conocer antes: Modelos ocultos de Márkov: el algoritmo de Viterbi y el casino deshonesto, Resumen de las distribuciones de probabilidad: Bernoulli, binomial, Poisson, uniforme, normal y exponencial
El Apolo 11 voló a la Luna con un ordenador de a bordo que tenía menos memoria que una calculadora gráfica actual. Aun así, la navegación tenía que estimar continuamente, a partir de mediciones imprecisas de estrellas, del radar y de los sensores inerciales, dónde estaba la nave y a qué velocidad iba. La ayudó un método que Rudolf Kálmán publicó en 1960 y que Stanley Schmidt llevó a la práctica para la NASA. Hoy el filtro de Kalman está en cada móvil que combina el GPS con el acelerómetro, en cada dron y en cada coche que se mantiene solo en su carril. Con esta parte termina el módulo sobre modelos probabilísticos.
Continúa las partes Modelos ocultos de Márkov y Resumen de las distribuciones de probabilidad.
1. Dos mediciones imprecisas valen más que una
Empecemos por algo sencillo. Medimos dos veces la distancia a un faro: una con un instrumento preciso —100 m con una incertidumbre (desviación típica) de 5 m— y otra con uno tosco —110 m con una incertidumbre de 10 m—. ¿Cuál es la mejor estimación?
Teorema — combinación de dos estimaciones normales
Si tenemos dos estimaciones independientes N(m1, σ12) y N(m2, σ22), la estimación combinada es normal con
m = m1 + K (m2 − m1), σ2 = (1 − K) σ12, donde K = σ12 / (σ12 + σ22).
De forma equivalente, 1/σ2 = 1/σ12 + 1/σ22: las precisiones se suman.
Demostración. La estimación combinada tiene una densidad proporcional al producto de ambas densidades (teorema de Bayes con la primera estimación como distribución a priori y la segunda como verosimilitud). En el exponente se suman dos funciones cuadráticas:
−(x − m1)2 / (2σ12) − (x − m2)2 / (2σ22) = −½ (1/σ12 + 1/σ22) x2 + (m1/σ12 + m2/σ22) x + const.
Una densidad con exponente −½ ax2 + bx es, tras completar el cuadrado, normal con varianza 1/a y esperanza b/a. De ahí 1/σ2 = 1/σ12 + 1/σ22, es decir, σ2 = σ12σ22 / (σ12 + σ22) = (1 − K) σ12, y m = σ2 (m1/σ12 + m2/σ22) = (1 − K) m1 + K m2 = m1 + K (m2 − m1). ∎
Toma la primera estimación y desplázala hacia la segunda, tanto más cuanto más te fíes de la segunda. El número K te dice qué parte de la diferencia debes adoptar. El resultado es más preciso que cada medición por separado; incluso una medición tosca aporta información.
m = m1 + K (m2 − m1), K = σ12 / (σ12 + σ22), σ2 = (1 − K) σ12
- m1, σ12
- la primera estimación (azul en la figura) es el punto de partida: desde ella nos desplazamos; su varianza en el numerador de K dice: cuanto menos nos fiamos de la primera estimación, más lejos de ella podemos movernos
- m2, σ22
- la segunda estimación (ámbar); entra en la fórmula solo a través de la diferencia m2 − m1: si ambas coincidieran, no habría nada que corregir. Su varianza en el denominador de K reduce la ganancia: de una medición tosca nos fiamos poco
- K
- la ganancia de Kalman, un número entre 0 y 1: qué parte de la diferencia adoptar. Es la proporción de la incertidumbre de la primera estimación en la incertidumbre total, así que la estimación más precisa «tira» del resultado hacia sí
- m, σ2
- la estimación combinada (verde); el factor 1 − K < 1 garantiza que la nueva incertidumbre sea menor que la primera: cada medición, incluso tosca, aporta algo
Aquí K = 25 / (25 + 100) = 0,2: adoptamos una quinta parte de la diferencia y obtenemos 102 m con una incertidumbre de √20 ≈ 4,5 m, menos que los 5 m del instrumento preciso. Este número K es la ganancia de Kalman, y el filtro entero no es más que este paso repetido en el tiempo.
Ejemplo — combinación de las mediciones 100 ± 5 m y 110 ± 10 m paso a paso
Varianzas: σ12 = 52 = 25, σ22 = 102 = 100.
Ganancia: K = 25 / (25 + 100) = 0,2.
Esperanza: m = 100 + 0,2 · (110 − 100) = 102 m, lo mismo que la media ponderada 0,8 · 100 + 0,2 · 110.
Varianza: σ2 = (1 − 0,2) · 25 = 20, σ = √20 ≈ 4,47 m.
Comprobación mediante las precisiones: 1/25 + 1/100 = 0,04 + 0,01 = 0,05 = 1/20. ✓
2. Medir repetidamente una misma magnitud
Medimos la temperatura de una habitación con un termómetro de incertidumbre 2 °C, cincuenta veces seguidas, y tras cada medición combinamos el nuevo dato con la estimación que llevamos. Tras cincuenta mediciones la estimación es 19,895 °C —exactamente la media aritmética de todas las mediciones— y la incertidumbre es 0,283 °C = 2/√50. Así que el filtro de Kalman para una magnitud que no cambia es una simple media móvil acumulada. Se vuelve interesante cuando la magnitud cambia con el tiempo.
Teorema — el filtro para una magnitud constante es una media acumulada
Medimos una constante con un instrumento de varianza σ2 y empezamos con una estimación tan incierta que la primera medición la anula por completo (v0 → ∞). Entonces, tras k mediciones, se cumple
Kk = 1/k, mk = mk−1 + (1/k) (zk − mk−1) = (z1 + … + zk) / k, vk = σ2/k.
Demostración por inducción. Para k = 1 es K1 = v0 / (v0 + σ2) → 1, así que m1 = z1 y v1 = σ2. Si vk−1 = σ2/(k − 1), entonces Kk = vk−1 / (vk−1 + σ2) = (1/(k − 1)) / (1/(k − 1) + 1) = 1/k y vk = (1 − 1/k) · σ2/(k − 1) = σ2/k. Si mk−1 es la media de las primeras k − 1 mediciones, entonces mk = ((k − 1) mk−1 + zk) / k es la media de las k. ∎
La décima medición pesa una décima parte en la media de diez números, y exactamente eso es lo que le da el filtro. Cuanto más sabes ya, menos te mueve una sola medición nueva. La incertidumbre baja como 1/√k: para reducir el error a la mitad necesitas cuatro veces más mediciones.
Ejemplo — las tres primeras mediciones de temperatura
Nuestro filtro empieza con una estimación de 0 °C y una varianza de 106 (incertidumbre de 1 000 °C: «no sé nada»); la varianza de la medición es 22 = 4.
1.ª medición 23,098 °C: K1 = 106 / (106 + 4) ≈ 1, estimación 23,098 °C, varianza 4,00.
2.ª medición 21,967 °C: K2 = 4 / (4 + 4) = 1/2, estimación 23,098 + ½ · (21,967 − 23,098) = 22,533 °C, varianza 2,00.
3.ª medición 16,630 °C: K3 = 2 / (2 + 4) = 1/3, estimación 22,533 + ⅓ · (16,630 − 22,533) = 20,565 °C, varianza 1,33 = 4/3.
Comprobación: (23,098 + 21,967 + 16,630) / 3 = 20,565 °C, una media corriente. Tras cincuenta mediciones la varianza es 4/50 = 0,08 y la incertidumbre √0,08 ≈ 0,283 °C.
3. El modelo de estados
Definición — modelo lineal de estados
Un estado oculto xk ∈ ℝn evoluciona y una medición zk lo capta con ruido:
xk = F xk−1 + wk, wk ~ N(0, Q), zk = H xk + vk, vk ~ N(0, R).
F es la matriz de transición, H la matriz de medición, Q la covarianza del ruido de proceso y R la covarianza del ruido de medición.
Es el modelo oculto de Márkov de la parte anterior, solo que el estado no es «dado honrado o dado trucado», sino un vector de números, por ejemplo la posición y la velocidad. La física dice cómo evoluciona el estado más o menos (F); los empujones aleatorios y la imprecisión del modelo los resume Q. El instrumento solo ve una parte del estado (H) y se equivoca en R.
Nuestro ejemplo: un coche va por la carretera a una velocidad más o menos constante de 15 m/s, pero el conductor a veces frena un poco o acelera: una aceleración aleatoria con una desviación típica de 0,5 m/s². El estado es (posición, velocidad), el paso es 1 s, así que F = [[1, 1], [0, 1]]: la nueva posición es la anterior más la velocidad. El GPS mide solo la posición, con una incertidumbre de 8 m: H = [1, 0], R = 64.
Definición — matriz de covarianza y distribución normal multivariante
Para un vector aleatorio X ∈ ℝn con esperanza μ = E[X], la matriz de covarianza es Σ = E[(X − μ)(X − μ)T], es decir, Σij = cov(Xi, Xj). En la diagonal están las varianzas de las componentes y fuera de ella las covarianzas; la matriz es simétrica y semidefinida positiva.
La notación X ~ N(μ, Σ) indica la distribución normal multivariante, con densidad proporcional a exp(−½ (x − μ)T Σ−1 (x − μ)). Para una aplicación lineal se cumple AX + c ~ N(Aμ + c, A Σ AT), y la suma de vectores normales independientes es normal con la suma de las covarianzas.
La matriz de covarianza es «la incertidumbre de varios números a la vez». En la diagonal está cuánta duda tenemos sobre la posición y cuánta sobre la velocidad. Fuera de la diagonal está si los errores van juntos: una covarianza positiva entre posición y velocidad significa «si hemos estimado el coche demasiado adelantado, probablemente también le hemos atribuido una velocidad demasiado alta».
Ejemplo — de dónde sale la matriz Q
Durante un paso de duración Δt actúa sobre el coche una aceleración aleatoria constante a ~ N(0, q2). Según las fórmulas del movimiento uniformemente acelerado:
pk = pk−1 + Δt · vk−1 + ½ Δt2 a, vk = vk−1 + Δt · a.
Sin ruido, esto es F = [[1, Δt], [0, 1]]. El ruido es w = g a con el vector g = (½ Δt2, Δt), y según la regla AΣAT de arriba
Q = q2 g gT = q2 [[Δt4/4, Δt3/2], [Δt3/2, Δt2]].
Para Δt = 1 s y q = 0,5 m/s²: Q = 0,25 · [[0,25; 0,5], [0,5; 1]] = [[0,0625; 0,125], [0,125; 0,25]]. Así que en un segundo la aceleración aleatoria añade una incertidumbre de √0,0625 = 0,25 m en la posición y de 0,5 m/s en la velocidad, y ambos errores tienen el mismo signo; por eso la covarianza es positiva. Esta es exactamente la matriz del código de más abajo.
4. Predicción y corrección
Algoritmo — filtro de Kalman
La estimación es una distribución normal con esperanza x̂ y covarianza P. En cada paso:
Predicción: x̂− = F x̂, P− = F P FT + Q.
Corrección: K = P− HT (H P− HT + R)−1, x̂ = x̂− + K (z − H x̂−), P = (I − K H) P−.
Predicción: «según la física, el coche debería estar ahora aquí», y como la física no es perfecta, la incertidumbre crece un poco. Corrección: llega la medición; la diferencia entre la medición y la predicción (la innovación) se adopta solo en la proporción K, según en cuál de las dos confíes más. Es la combinación de dos mediciones del primer capítulo: una «medición» es la predicción del paso anterior y la otra es el GPS. Además, la covarianza P recuerda cómo se relacionan el error de posición y el de velocidad, y gracias a eso el filtro corrige también la velocidad, que nadie mide.
Los colores de los desgloses de abajo coinciden con las figuras: la predicción (antes, la «primera estimación») en azul, la medición en ámbar, el resultado en verde y la ganancia en violeta.
x̂− = F x̂, P− = F P FT + Q
- x̂−, P−
- la predicción para este paso, antes de que llegue la medición; hace el papel de la «primera estimación» de la combinación de dos mediciones
- F … FT
- el modelo hace avanzar la estimación; la incertidumbre se propaga con la regla AΣAT (en el coche: una velocidad incierta se convierte en un segundo en incertidumbre de la posición). No basta con FP, porque la covarianza es una magnitud cuadrática: se multiplica por la izquierda y por la derecha
- Q
- el modelo no es perfecto (el conductor frena un poco), así que la incertidumbre se suma en cada paso; sin Q, P caería a cero y el filtro dejaría de hacer caso a las mediciones
K = P− HT (H P− HT + R)−1
- H P− HT
- la incertidumbre de la predicción traducida al lenguaje del instrumento (en el coche, solo la varianza de la posición); corresponde a σ12
- R
- la varianza de la medición, corresponde a σ22; la suma del paréntesis es la varianza de la innovación S: cuánto pueden discrepar la medición y la predicción por puro azar
- P− HT
- la covarianza de todo el estado con la magnitud medida; gracias a ella recibe una ganancia no nula también la velocidad, que nadie mide: el error de posición y el de velocidad están relacionados
- K
- la ganancia de Kalman, un número por cada componente del estado; la inversa en lugar de una división se usa solo porque la medición puede ser un vector
x̂ = x̂− + K (z − H x̂−), P = (I − K H) P−
- x̂−, P−
- la predicción: el punto de partida desde el que nos desplazamos
- z
- la nueva medición (en la figura, los puntos ámbar del GPS); el único sitio por donde entran datos en la estimación
- H
- convierte la predicción del estado en lo que debería mostrar el instrumento; la medición y el estado no se pueden restar directamente, porque el GPS solo ve la posición, no la velocidad
- K
- qué parte de la innovación z − Hx̂− adoptar en cada componente del estado
- x̂, P
- la estimación corregida (verde en la figura); el factor I − KH reduce la incertidumbre, tanto más cuanto mayor parte de la medición hayamos adoptado
import numpy as np
F = np.array([[1, 1], [0, 1]]) # posición += velocidad
H = np.array([[1, 0]]) # solo medimos la posición
Q = 0.5**2 * np.array([[1/4, 1/2], [1/2, 1]]) # aceleración aleatoria
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 # predicción
K = P @ H.T @ np.linalg.inv(H @ P @ H.T + R)
x = x + K @ (z - H @ x) # corrección según la innovación
P = (np.eye(2) - K @ H) @ P
yield x, P
Ejemplo — los dos primeros pasos del filtro con los datos del coche
Inicio. La primera medición del GPS es z1 = 8,44 m. El filtro empieza con la posición 8,44 m, velocidad 0 y una incertidumbre grande P0 = [[100; 0], [0; 100]] (10 m y 10 m/s). La corrección con esa misma medición no cambia la posición (la innovación es 0), solo reduce su varianza: K = 100 / (100 + 64) = 0,610, P11 = (1 − 0,610) · 100 = 39,02.
Predicción para el segundo 2. x̂− = (8,44 + 0; 0) = (8,44; 0,00). La covarianza FPFT suma a la varianza de la posición la varianza de la velocidad (posición += velocidad):
P− = [[39,02 + 100 + 0,0625; 100 + 0,125], [100 + 0,125; 100 + 0,25]] = [[139,09; 100,13], [100,13; 100,25]].
Corrección. Medición z2 = 23,23 m, innovación y = 23,23 − 8,44 = 14,78 m, su varianza 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).
Tras dos mediciones el filtro «sabe» que el coche se mueve, aunque nadie ha medido la velocidad: la ha estimado en 7,3 m/s (la real es 13,9 m/s). La ganancia para la velocidad es no nula solo gracias a la covarianza 100,13 fuera de la diagonal. ¿Por qué solo la mitad? Las mediciones tienen un ruido de 8 m, así que el filtro todavía no se toma del todo en serio una diferencia de 15 m; en los segundos siguientes la velocidad se ajusta.
5. El filtro sigue al coche
Un minuto de trayecto, una medición del GPS por segundo. En ese tiempo el coche recorre casi un kilómetro, así que el ruido se perdería en una gráfica de la posición. Por eso dibujamos cuánto va el coche por delante o por detrás respecto a una marcha a exactamente 15 m/s:
Las mediciones del GPS se desvían de la posición real en promedio 8,3 m (desde el segundo diez, cuando el filtro ya se ha puesto en marcha). La estimación del filtro, solo 4,9 m: un 41 % menos. Y la velocidad, que ningún sensor mide, la estima con un error de 0,8 m/s: el filtro la deduce de cómo cambia la posición. Al principio no conoce la velocidad (empieza desde cero), pero en unos segundos la capta. La banda ±2σ es la incertidumbre honesta del filtro: la posición real queda dentro en el 95 % de los pasos, justo como debe ser.
Definición — error medio (RMSE) y banda ±2σ
El «error medio» en esta parte es la raíz del error cuadrático medio (RMSE) sobre los pasos k = 10, …, 59 (N = 50):
RMSE = √( (1/N) ∑k (x̂k − xk)2 ),
donde xk es la posición real y x̂k la estimación (o la propia medición). Los cuadrados castigan más los errores grandes que los pequeños, y la raíz devuelve el resultado a metros. Para el GPS solo, el RMSE debería salir en torno a σ = 8 m, y salió 8,3 m.
La banda ±2σ es el intervalo x̂k ± 2√Pk,11. Para una distribución normal, el intervalo μ ± 2σ contiene una probabilidad de 0,9545; si el filtro ha calculado bien su incertidumbre P, la realidad tiene que caer dentro de la banda en torno al 95 % de los pasos.
Tras unos pocos pasos la ganancia de Kalman se estabiliza en K ≈ (0,30; 0,05): de cada innovación el filtro adopta un 30 % en la posición y un 5 % (0,05 m/s por metro de innovación) en la velocidad. Sobre 50 trayectos simulados, el error del filtro es en promedio el 55 % del error del GPS solo.
Teorema — ganancia estacionaria
En las fórmulas de P−, K y P no aparecen las mediciones z: la covarianza y la ganancia se pueden calcular de antemano. Al unir predicción y corrección se obtiene una recurrencia (la ecuación de Riccati discreta)
P−k+1 = F (P−k − P−kHT (HP−kHT + R)−1 HP−k) FT + Q.
Para F, H, Q, R constantes que cumplan las condiciones habituales (el sistema es observable —a partir de una serie de mediciones se puede averiguar todo el estado— y el ruido Q actúa sobre todas sus componentes), la sucesión converge a un único punto fijo, independientemente de la P0 inicial; la ganancia converge entonces a un valor estacionario.
En el coche: tras 60 pasos, K = (0,297; 0,052) y P = [[19,04; 3,35], [3,35; 1,29]], es decir, el filtro confía en sí mismo hasta √19,04 ≈ 4,4 m en la posición y √1,29 ≈ 1,1 m/s en la velocidad.
Al principio el filtro no sabe casi nada y se traga cada medición (ganancia 0,61, luego 0,68). A medida que la estimación se vuelve más precisa, la ganancia baja, hasta que se estabiliza donde la incertidumbre que añade el ruido Q en cada paso es igual a la que quita la medición. A partir de ahí ya no cambia nada, y por eso en dispositivos sencillos la ganancia se suele calcular una vez de antemano y el filtro solo multiplica por números fijos.
6. En quién confiar: Q y R
El filtro necesita conocer Q y R. El fabricante del GPS suele indicarla, pero el ruido de proceso es más difícil de estimar. ¿Qué pasa si le das al filtro valores distintos de los que tienen los datos?
| Ruido de proceso que supone el filtro (m/s²) | 0,01 | 0,1 | 0,5 (real) | 2 | 10 |
|---|---|---|---|---|---|
| error de posición (m) | 9,29 | 5,88 | 4,86 | 5,67 | 7,08 |
| error de velocidad (m/s) | 1,19 | 0,86 | 0,79 | 1,53 | 5,19 |
Cuando el filtro cree que el coche va a una velocidad casi exactamente constante (Q pequeña), se aferra a su modelo y reacciona tarde a la aceleración real: el error de posición es incluso mayor que con el GPS solo. Cuando, al contrario, espera cambios bruscos (Q grande), no se fía del modelo y copia las mediciones ruidosas. El mejor resultado lo da con el valor real, 0,5. Lo mismo vale para R: con una incertidumbre del GPS de 2, 8 y 30 m, el error de posición sale 5,66; 4,86 y 5,39 m.
7. ¿Por qué precisamente así?
Teorema — optimalidad del filtro de Kalman
Si el modelo es lineal y los ruidos son normales, la distribución N(x̂k, Pk) es exactamente la distribución a posteriori del estado P(xk | z1, …, zk). Sin el supuesto de normalidad, el filtro de Kalman es la mejor estimación lineal en el sentido del error cuadrático medio.
El filtro de Kalman es el teorema de Bayes aplicado una y otra vez. La predicción es la distribución a priori, la medición es la verosimilitud y la corrección es la distribución a posteriori. La distribución normal tiene la rara propiedad de que el producto de normales vuelve a ser normal, así que basta con recordar la esperanza y la covarianza en lugar de toda la función. Es el algoritmo hacia delante de los modelos ocultos de Márkov para un estado continuo.
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
- la predicción (distribución a priori): no conocemos con exactitud el estado anterior, así que promediamos la transición sobre todos los estados anteriores posibles, ponderados por lo que creíamos la vez anterior. La integral es el análogo continuo de la suma ∑i del algoritmo hacia delante de los HMM. Para un modelo lineal y una distribución normal sale N(Fx̂, FPFT + Q)
- p(zk | xk)
- la verosimilitud de la nueva medición: lo bien que cada lugar explicaría lo que mostró el GPS; según el modelo es N(zk; Hxk, R)
- p(xk | z1:k)
- la distribución a posteriori tras todas las mediciones; «∝» porque no necesitamos la constante de normalización p(zk | z1:k−1): el producto de dos densidades normales lo resuelve la demostración del teorema del principio de esta parte, y de ella sale exactamente el paso de corrección
8. Cuando el mundo no es lineal
- El filtro de Kalman extendido (EKF) linealiza el modelo no lineal en cada paso mediante la derivada; así lo hacía también la navegación del Apolo.
- El filtro de Kalman unscented (UKF), en lugar de derivadas, hace pasar por el modelo unos pocos puntos elegidos con cuidado y a partir de ellos calcula la nueva esperanza y la nueva covarianza.
- El filtro de partículas renuncia por completo a la distribución normal: representa la estimación con miles de muestras («partículas») que se mueven según el modelo y se reponderan según las mediciones. Puede manejar incluso una estimación con varios picos, por ejemplo «el robot está en la cocina o en el salón».
- Dónde se usa: fusión del GPS, el acelerómetro y el giroscopio en los móviles, navegación de aviones, drones y cohetes, seguimiento de objetos por radar, estimación de la posición de coches autónomos e incluso suavizado de series temporales económicas.
Definición — filtro de Kalman extendido (EKF)
El modelo es no lineal: xk = f(xk−1) + wk, zk = h(xk) + vk. El EKF calcula la esperanza con las funciones no lineales y la covarianza con sus matrices jacobianas (matrices de derivadas parciales) en la estimación actual:
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 y P como antes, con Hk en lugar de H.
Ejemplo: un radar mide la distancia h(px, py) = √(px2 + py2); entonces Hk = (px/d, py/d) con d = √(px2 + py2), el vector unitario en dirección al objetivo. Para un objetivo en (300, 400) m es d = 500 m y Hk = (0,6; 0,8). El resultado ya no es la distribución a posteriori exacta, sino solo una aproximación; cuanto más curvo es el modelo dentro del rango de la incertidumbre, peor.
9. Resumen
- Dos mediciones normales independientes se combinan con una media ponderada; las precisiones se suman y el peso K es la ganancia de Kalman.
- El filtro de Kalman repite una predicción según el modelo y una corrección según la medición; para una magnitud constante es una media acumulada.
- En el coche redujo el error de posición de 8,3 m (GPS) a 4,9 m y estimó también la velocidad no medida con un error de 0,8 m/s; la banda ±2σ cubrió la realidad en el 95 % de los pasos.
- El resultado depende de Q y R: demasiada confianza en el modelo reacciona tarde; demasiado poca copia el ruido.
- Para un modelo lineal con ruido normal, el filtro es una actualización bayesiana exacta; el mundo no lineal lo manejan el EKF, el UKF y los filtros de partículas.
Con esta parte termina el módulo sobre modelos probabilísticos. ¿Quieres probarlo por ti mismo? Pide a un agente de IA que escriba un filtro de Kalman para los datos del acelerómetro de tu propio teléfono y comprueba lo bien que estima cuánto has movido el teléfono.
¿Lo ves de otra manera? Escribe a support@coden-app.com.