Filtro de partículas múltiples [1] ( MPF , filtro de partículas en inglés - "filtro de partículas", "filtro de partículas", "filtro corpuscular") - un método secuencial de Monte Carlo - un algoritmo recursivo para resolver numéricamente problemas de estimación ( filtrado , suavizado ), especialmente para casos no lineales y no gaussianos . Desde la descripción en 1993 [2] por N. Gordon, D. Salmond y A. Smith, se ha utilizado en varios campos: navegación, robótica , visión artificial .
En comparación con los métodos comúnmente utilizados para tales problemas, los filtros de Kalman extendidos (EKF), los filtros de partículas múltiples no dependen de métodos de linealización o aproximación . El EKF convencional no se adapta bien a los modelos esencialmente no lineales, así como en el caso del ruido del sistema y las mediciones que son muy diferentes de las gaussianas, por lo que se han desarrollado varias modificaciones, como UKF ( inglés unscented KF ), QKF ( Cuadratura inglesa KF ), etc. ][3 Cabe señalar que, a su vez, los filtros multipartículas son más exigentes en recursos informáticos.
El término "filtro de partículas" fue acuñado por Del Moral en 1996 [4] y "secuencial Monte Carlo" por Liu y Chen en 1998.
Muchos filtros multipartículas que se utilizan en la práctica se obtienen aplicando un método Monte Carlo secuencial a una secuencia de distribuciones objetivo [5] .
El FFM está diseñado para estimar la secuencia de variables latentes en función de las observaciones en . Para simplificar la presentación, supondremos que estamos considerando un sistema dinámico , y y son vectores de estado real y de medida, respectivamente [1] .
La ecuación estocástica del estado del sistema tiene la forma:
,donde la función de cambiar el estado del sistema, es una variable aleatoria , el efecto perturbador.
Ecuación de medida:
,donde es la función de medida, es una variable aleatoria, ruido de medida.
Las funciones y son generalmente no lineales y se supone que se conocen las características estadísticas del ruido del sistema ( ) y las mediciones ( ).
La tarea de filtrado es obtener una estimación basada en los resultados de medición conocidos en ese momento .
Considere un proceso de Markov discreto con las siguientes distribuciones de probabilidad:
y ,
|
(una) |
donde es la densidad de probabilidad , es la densidad de probabilidad condicional ( densidad de probabilidad de transición ) en la transición de a .
Aquí la notación significa que la condición se distribuye como .
Las realizaciones del proceso (variables ocultas ) se observan a través de otro proceso aleatorio , el proceso de medición, con densidades marginales :
, | (2) |
donde es la densidad de probabilidad condicional ( densidad de medidas ), las medidas se consideran estadísticamente independientes .
El modelo se puede ilustrar mediante el siguiente diagrama de transición:
Para simplificar, asumimos que la densidad de transición y la densidad de medición no dependen de . Se supone que se dan los parámetros del modelo.
El sistema y modelo de medida así definido se conoce como Modelo Oculto de Markov [6] .
La ecuación (1) define la distribución previa para el proceso :
(3) |
De manera similar (2) define la función de verosimilitud :
, | (cuatro) |
Aquí y debajo, la notación para denota .
Por lo tanto, la inferencia bayesiana para implementaciones conocidas de medidas , indicadas respectivamente por y , se basará en la distribución posterior
, | (5) |
donde (aquí está la medida dominante):
.Véase también Muestreo de importancia .
El método de Monte Carlo le permite evaluar las propiedades de distribuciones de probabilidad bastante complejas, por ejemplo, calculando las medias y la varianza en forma de integral [3] :
,donde es la función de estimación. Por ejemplo, para el promedio, puedes poner: .
Si una solución analítica es imposible, el problema se puede resolver numéricamente generando muestras aleatorias con una densidad , denótelas como y obteniendo la media aritmética sobre los puntos de muestra [3] :
En un caso más general, cuando el muestreo de es difícil, se aplica otra distribución (la llamada distribución inglesa instrumental o de importancia ), y para mantener la estimación insesgada, se introducen coeficientes de ponderación basados en la relación [3] :
y luego calcula el promedio ponderado:
,Aunque la distribución auxiliar se utiliza principalmente para simplificar el muestreo a partir de la distribución principal , a menudo se utiliza el procedimiento de “muestreo y remuestreo por significancia” (en inglés , samplingimportance resampling, SIR ). Este procedimiento consta de dos etapas: muestreo real por significación con cálculo de pesos , y muestreo adicional de puntos que toman en cuenta estos pesos [3] .
El remuestreo es especialmente necesario para los filtros en serie [3] .
Los métodos de filtrado y suavizado de partículas múltiples son los ejemplos más conocidos de algoritmos secuenciales de Monte Carlo ( SMC ) . Hasta el punto de que la literatura muchas veces no distingue entre ellos. Sin embargo, SMC incluye una clase más amplia de algoritmos aplicables para describir métodos de filtrado y suavizado aproximados más complejos [7] .
Los métodos secuenciales de Monte Carlo son una clase de métodos de Monte Carlo que muestrean secuencialmente a partir de una secuencia de densidades de probabilidad objetivo de dimensión creciente, donde cada una se define en una potencia cartesiana [5] .
Si escribimos la densidad como: [5]
, dónde se conoce puntualmente, y es una normalización, posiblemente desconocida, constante, entoncesEl algoritmo SMC encontrará aproximaciones y estimaciones para .
Por ejemplo, para el caso del filtrado, se puede poner (ver (5) ):
y ,de la cual tendremos:
.
Omitiendo la salida, el esquema predictor-corrector se puede representar de la siguiente manera [3] :
El multiplicador es una constante de normalización que no se requiere para el algoritmo SMC normal.
Un algoritmo típico de filtro de partículas múltiples se puede representar de la siguiente manera [3] :
algoritmo MCF -- inicialización para i = 1...N: muestra de -- pesos iniciales nudos para n = 1...T: si VOLVER A SELECCIONAR entonces -- seleccionar índices de N partículas según pesos = SelectByWeight( ) para i = 1...N: de lo contrario para i = 1...N: para i = 1...N: -- paso de propagación de partículas -- actualización de escala nudos -- normalización de pesos para i = 1...N: nudos