Filtro de Partículas Luca Martino Juan Santaella Vallejo Tratamiento Digital de Señales Master Interuniversitario en Comunicaciones y Multimedia [email protected] [email protected] INDICE 1. 2. 3. 4. 5. 6. 7. 8. Introducción .............................................................................................................3 Filtro de Partículas ..................................................................................................4 Descripción Escenario .............................................................................................6 Sistema ......................................................................................................................7 Notas sobre el filtro de partículas utilizado ..........................................................9 Ficheros utilizados .................................................................................................10 Simulaciones ...........................................................................................................10 Conclusiones...........................................................................................................14 1. Introducción Muchos problemas físicos pueden ser modelados por la pareja de ecuaciones: x (t ) Ft ( x (t 1), r1 (t 1)) y (t ) H t ( x (t ), r2 (t )) (1) Donde las y(t ) es la observación conocida al tiempo t, y x (t ) es la variable de estado que se quiere estimar. En general y(t ) y x (t ) son variables continuas , Ft (...) y H t (...)son dos funciones deterministas (que pueden variar con el tiempo), r1 (t ) y r2 (t ) son dos componentes aleatorias cuyas densidades de probabilidad son conocidas. De la primera ecuación se denomina ecuación dinámica, la segunda ecuación de las observaciones. En principio las funciones Ft y H t pueden ser de cualquier forma (lineales, no lineales etc…), así como los dos ruidos pueden tener cualquier tipo de distribución. En términos de cálculo de probabilidad, las ecuaciones (1) pueden ser interpretadas gráficamente como en figura: y t 1 yt yt 2 y t 3 X t 2 X t 3 p(Yt 1 X t 1 ) Xt p( X t 1 X t ) X t 1 Fig. 1) Interpretación probabilística de las ecuaciones (1). Es decir, mirando la ecuación dinámica se puede ver claramente como esta supone la propiedad Markoviana p X t X 0 , X1 ,...X t 1 ) p X t X t 1 ) y por la segunda de las (1) se ve perfectamente que p Yt X t , Y1 ,...Yt 1 ) p Yt X t ) . El problema clásico consiste suponiendo conocidos Ft y H t , las propiedades estadísticas de r1 y r2 y las observaciones y , en estimar el valor del estado x . En el caso que las dos funciones deterministas Ft y H t sean lineales y los ruidos gausianos existe una solución optima conocida en literatura como Filtro de Kalman. Pero en muchas aplicaciones no se cumplen las dos condiciones simultáneamente, así que en literatura hay muchos métodos subòptimos para resolver el problema. Dentro de conjunto de método merece particular atención el filtro de partículas. 2. Filtro de Partículas El filtro de partículas es un método suboptimo muy potente porque no pide ninguna restricción sobre las funciones Ft y H t y tampoco pide ninguna especifica distribución para los ruidos. Se supone que hay que conocer las formas analíticas de las Ft y H t y de las propiedades estadísticas de r1 y r2 , cualquiera que sean. 2.1 Idea de fondo La idea subyacente del algoritmo del filtro de partículas es crear unas hipotéticas trayectorias del estado (dejando propagar “las partículas”) y a cada una de ellas atribuir unos pesos según mejor expliquen las observaciones. La estimación final del estado se hará con una media de las trayectorias ponderada por los pesos. xt11 xt2 2 xt1 xt2 xt1 2 xt21 t t+1 t+2 Fig. 2) Dos posibles trayectorias (propagación de 2 partículas). 2.2 Desarrollo Matemático Antes de hallar las relaciones que soportan el filtro de partículas, hay que recordar un concepto previo: el importance sampling. Si nosotros quisiéramos calcular el integral h( x) dx en manera no analítica, podríamos utilizar el método de Monte Carlo. Eligiendo una adecuada densidad de probabilidad q(x) , el integral resultará numéricamente aproximado por: h( x ) 1 q( x) q( x) dx M xi ~ q ( x ) M h( x ) i 1 i (2) El objetivo final del desarrollo matemático que mostraremos más adelante, es encontrar una aproximación discreta de la densidad de probabilidad a posteriori p( x1:t y1:t ) p( x1 , x2 ,....xt y1 , y2 ,....yt ) . La aproximación que hallaremos tendrá en cada paso un soporte discreto aleatorio definido por las partículas xti con i 1,2,....M ; a cada partículas estará asociado un peso wti ( 0 wti 1 ) elegido según el principio del importance sampling. En formula: M p( x1:t y1:t ) wti ( xt xti ) i 1 (3) Muestreando las partículas según el importance sampling, a través de una adecuada importance density: xti ~ q( x1:t y1:t ) (4) Lo pesos tendrán que ser proporcionales a: w i t w i t p ( x1i:t y1:t ) q ( x1i:t y1:t ) (5) wti M w i t i A nosotros nos gustaría también una expresión recursiva para que la actualización de los pesos sea más simple; para hacer esto, tendremos que desarrollar esta expresión: p ( x1:t y1:t ) p( y t x1:t , y1:t 1 ) p ( x1:t y1:t 1 ) p ( y t y1:t 1 ) p( y t y1:t 1 , x1:t ) p ( xt x1:t 1 , y1:t 1 ) p( x1:t 1 y1:t 1 ) p ( y t y1:t 1 ) (6) p( y t xt ) p ( xt xt 1 ) p( x1:t 1 y1:t 1 ) p ( y t y1:t 1 ) p ( x1:t y1:t ) p ( y t xt ) p ( xt xt 1 ) p ( x1:t 1 y1:t 1 ) donde en el primer paso hemos tenido en cuenta de la propiedad de Bayes p( A B, C) p(B A, C) p( A, C) p(B, C) , en el segundo paso la siguiente relación p( A, B C) p(B A, C) p( A C) y finalmente hemos utilizados las propiedades de Markoviana p xt x1:t 1 , y1:t 1 ) p xt x t 1 ) y p yt x1:t , y1:t 1 ) p yt x t ) . La proporción final puede parecer obvia mirando la figura (1): estando al paso t-1 nos movemos desde xt 1 al estado x t y desde allí logramos la observación yt . Para una expresión recurrente de los pesos vamos a elegir una importance density que pueda ser factorizada así: q( x1:t y1:t ) q( xt x1:t 1 , y1:t ) q( x1:t 1 y1:t 1 ) (7) Así que si las partículas hasta el paso t-1 se pueden considerar muestreadas por: x1i:t 1 ~ q( x1:t 1 y1:t 1 ) y la nueva al paso t: (8) xti ~ q( xt x1:t 1 , y1:t ) (9) Finalmente juntando las tres relaciones (5), (6) y (9), llegamos a: w i t p( yt xti ) p( xti xti1 ) p( x1i:t 1 y1:t 1 ) q( xti x1i:t 1 , y1:t ) q( x1i:t 1 y1:t 1 ) wti wti1 p( yt xti ) p( xti xti1 ) (10) q( xti x1i:t 1 , y1:t ) Que es la relación recursiva sobre los pesos que queríamos hallar. Los distintos tipos de filtro de partículas se distinguen sobre todo para la elección de la función q (...). La elección óptima que minimiza la varianza de los pesos es q( xt x1:t 1 , y1:t ) p( xt xt 1 , yt ) . En este caso los pesos se actualizarían: wti wti1 p ( y t xti1 ) (11) Pero en muchos casos no es posible utilizar esta función (además porque no es sencillo calcular p ( yt xti1 ) ), así que se busca una diferente importance density. Usualmente se elige q( xt x1:t 1 , y1:t ) p( xt xt 1 ) : wti wti1 p ( y t xti ) (12) Realmente el uso de los filtros de partículas se ha disparado en los últimos años gracias a la introducción de un nuevo paso en el algoritmo que mejora sensiblemente las prestaciones. Se trata del Resampling: la idea del resampling es de dejar propagar las particulas de mayor peso, quitando las que menos información llevan. Haciendo este se elimina el fenómeno de degeneración de las partículas (todos los pesos van a cero menos uno). 3. Descripción Escenario Nuestro escenario es un clásico problema de tracking donde el estado está compuesto por la posición y la velocidad. Esta ultima está sujeta a una desconocida aceleración. Utilizaremos 4 sensores fijos; recordamos que en plano para definir unívocamente una trayectoria, necesitaríamos mínimo 3 sensores no alineados. Nuestras medidas serán distancias relativas (distancia L1) entre el objeto y nuestros sensores. Supondremos que los ruidos sean gausianos. Matemáticamente este escenario se traduce en una ecuación dinámica lineal, y una ecuación de las observaciones no lineal, así que es necesario utilizar un método suboptimo para estimar la trayectoria. S2 S1 S3 S4 Fig. 3) Muestra la distribución de los 4 sensores (en rojo) y una trayectoria. 4. Sistema En Formulas nuestro sistema es: x (t ) A x (t 1) B r1 (t ) y (t ) C x1, 2 (t ) P 1 D r2 (t ) (13) donde: 1 0 A 0 0 0 Ts 1 0 0 1 0 0 Ts2 0 0 2 1 2 Ts 1 0 Ts 2 ,B ,C ,D Ts 0 2 1 0 1 2 0 Ts 1 (14) Es fácil nota que la matriz A que decide la dinámica, siendo triangular superior, tiene todos los 4 autovalores coincidentes iguales a 1. Nuestro vector de estado será: x1 (t ) p x (t ) x (t ) p (t ) y x (t ) 2 x3 (t ) v x (t ) x 4 (t ) v y (t ) (15) es decir las dos componentes de la posición, y las dos de la velocidad. Entonces con: x1 (t ) p x (t ) x1, 2 (t ) x2 (t ) p y (t ) (16) consideramos solo las componentes del estado que se refieren a la posición. Por otra parte, la matriz P contiene las posiciones en el plano de los sensores: s x1 s x 2 p s y1 s y 2 s x3 s y3 s x4 s y 4 (17) Nuestros sensores nos proporcionan la distancia L1 con nuestro objeto, es decir: p x (t ) s x1 p x (t ) s x 2 x1, 2 (t ) P 1 p x (t ) s x 3 p x (t ) s x 4 p y (t ) s y1 p y (t ) s y 2 p y (t ) s y 3 p y (t ) s y 4 (18) Entonces nuestro vector de las observaciones será un vector 4 1 donde cada componente corresponde a una medida detectada da un sensor (el mínimo numero de sensores en un plano para detectar en manera univoca una trayectoria es 3): y1 (t ) y (t ) y (t ) 2 y 3 (t ) y 4 (t ) (19) Es importante subrayar que nuestras medidas están relacionada solo con la posición de nuestro objeto; no tenemos ninguna información directa sobre la velocidad (pero indirectamente si; de hecho, estimaremos todo el vector de estado). La parte aleatoria de nuestro sistema está compuesta por: 1. ruido dinámico r1 (t ) ~ N (0, 12 ) , que será un vector 2 1 . 2. ruido de medida r2 (t ) ~ N (0, I ) , que será un vector 4 1 (una componente por cada sensor); nosotros suponemos que el ruido afecta de la misma manera a cada sensor D r2 (t ) ~ N (0, 22 ) . 5. Notas sobre el filtro de partículas utilizado El filtro de partículas que nosotros hemos utilizado utiliza como importance density p ( xt xti1 ) con M numero de partículas, así que según teoría: xti ~ p ( xt xti1 ) wti ~ wti1 p ( y t xti ) i w i wt M t wti i 1 Para el Resampling evaluamos en cada paso el valor: N eff 1 M (w ) i 1 i t 2 Si N eff M k (donde 0 k 1 , y en nuestro código corresponde al parámetro “cost”) hará el Resampling. Realmente si el k es bastante elevado el resampling se hará en cada paso y el nuestro filtro se convierte en un SIR Filter. 1 Como el Resampling se hace en cada paso, en el filtro SIR, wti1 (después del N Resampling) siempre, así que: wti ~ p ( y t xti ) (Antes del “Resampling stage” al paso t ) 5.1 Resampling Stage Simplemente muestreamos M veces la distribución discreta con soporte xti i t probabilidades w ; es decir las partículas después del Resampling serán: M k i i ˆ x ~ t wt ( x xt ) i 1 wˆ k 1 t N y Los pesos de las nuevas partículas habrán todas mismo peso. 6. Ficheros utilizados CreaRandom.m Muestra una distribución discreta. Recibe como entrada las probabilidades (o mejor dicho una densidad de probabilidad discreta) y el número N de muestras deseado. Como salida proporciona las N muestras. Resampling.m Calcula las partículas después aplicando el Resampling. Recibe como entradas las partículas y los pesos al paso t, y restituye como salidas las nuevas muestras y los pesos todos iguales a 1 N . Utiliza el CreaRandom. PartFilter2D.m Calcula una trayectoria y unas observaciones, y sobre ellas luego implementa el filtro de partículas. Esta función sacará 3 graficas: una con la trayectoria real con los sensores, otra con la trayectoria estimada y la verdadera junto, y otra grafica del error de estimación cometido en cada instante. Utiliza las dos funciones anteriores. 7. Simulaciones Utilizamos siempre trayectorias con T=100 puntos. Para calcular las graficas de Error (distancia euclidea entre la posición correcta (en blue) y nuestra estimación (en rojo)), calculamos 20 veces el error medio cometido en estimar una trayectoria por cada valor de M. Haremos tres distintas pruebas con un nivel alto de ruido que dejaremos igual, y cambiando el numero de resamplings. Esto lo haremos cambiando la constante k (en el código seria al variable cost). 100 100 a) con un vector D (mucho ruido) y k=0.6 (muchos Resamplings). 100 100 Fig. 4) Trayectoria real (en blue) y su Reconstrucción (en rojo) con M=50. Grafica de error con M: 20, 100, 500, 1000, 3000. (muchas veces resampling ) M Fig. 5) Error medio por diferentes números de partículas M , haciendo muchas veces resampling. 100 100 b) con un vector mismo que antes D y k=0.1 (menor que antes, menos 100 100 resamplings). Fig. 6) Trayectoria real (en blue) y su Reconstrucción (en rojo) con M=50. Grafica de error con M: 20, 100, 500, 1000, 3000. (muy pocos resamplings) M Fig. 7) Error medio por diferentes números de partículas M , con pocos reasamplings. 100 100 c) con un vector D y k=1 (siempre Resampling, Filtro SIR). 100 100 Fig. 8) Trayectoria real (en blue) y su Reconstrucción (en rojo) con M=50. ERROR Grafica de error con M: 20, 100, 500, 1000, 3000. (resampling siempre) M Fig. 9) Error medio por diferentes números de partículas M por un filtro SIR (resampling en cada paso). Comentarios: En las tres simulaciones se puede notar que aunque haya mucho ruido de medida nuestro filtro de partícula consigue aproximar bien la trayectoria verdadera. Ya con M=500 se logra casi un error mínimo que se mantiene prácticamente constante aumentando el numero de partículas. Además el error no se ve sustancialmente afectado por el número de resampling steps. De todas formas, se puede notar que con M pequeño se necesita un número de resampling mayor para lograr un error menor. Esto es lógico porque teniendo pocas partículas, para estimar bien, es muy conviene dejar propagar las pocas que lleven información relevante. 8. Conclusiones En este trabajo se ha realizado una explicación y breve estudio teórico del filtro de partículas. Para la practica se ha realizado un escenario de pruebas compuesto de cuatro sensores que son capaces de detectar la distancia de un objeto. También se ha programado un filtro de partículas y se han unido los dos programas para poder realizar las simulaciones. Hemos visto como se comporta el filtro variando el numero de partículas de nuestro filtro. Demostrando la eficiencia del filtro de partículas.