Это не официальный сайт wikipedia.org 01.01.2023

Многочастичный фильтр — Википедия

Многочастичный фильтр

(перенаправлено с «МЧФ»)

Многочасти́чный фильтр[1] (МЧФ, англ. particle filter — «фильтр частиц», «частичный фильтр», «корпускулярный фильтр») — последовательный метод Монте-Карло — рекурсивный алгоритм для численного решения проблем оценивания (фильтрации, сглаживания), особенно для нелинейных и не-гауссовских случаев. Со времени описания в 1993 году[2] Н. Гордоном, Д. Салмондом и А. Смитом используется в различных областях — навигации, робототехнике, компьютерном зрении.

В сравнении с обычно применяемыми для подобных задач методами — расширенными фильтрами Кальмана (EKF) — многочастичные фильтры не зависят от методов линеаризации или апроксимации. Обычный EKF плохо справляется с существенно нелинейными моделями, а также в случае шумов системы и измерений, сильно отличающихся от гауссовых, поэтому были разработаны различные модификации, такие как UKF (англ. unscented KF), QKF (англ. Quadrature KF) и т. п.[3]. Следует отметить, что в свою очередь многочастичные фильтры более требовательны к вычислительным ресурсам.

Термин «particle filter» был дан Дел Моралом в 1996 году[4], а «sequential Monte Carlo» — Лю (Liu) и Ченом (Chen) в 1998.

Многие используемые на практике многочастичные фильтры выводятся применением последовательного метода Монте-Карло к последовательности целевых распределений[5].

Постановка задачиПравить

МЧФ предназначен для оценки последовательности скрытых переменных x n   для n = 1 , 2 ,   на основании наблюдений y n   при n = 1 , 2 ,  . Для простоты изложения будем считать, что рассматривается динамическая система, и x n   и y n   — действительные вектора состояния и измерений соответственно[1].

Стохастическое уравнение состояния системы имеет вид:

x k = f k ( x k 1 , v k )  ,

где f k   функция изменения состояния системы, v k   — случайная величина, возмущающее воздействие.

Уравнение измерений:

y k = h k ( x k , w k )  ,

где h k   функция измерения, w k   — случайная величина, шум измерений.

Функции f k   и h k   в общем случае нелинейные, а статистические характеристики шума системы ( v k  ) и измерений ( w k  ) предполагаются известными.

Задачей фильтрации является получение оценки x ^ k   на основе известных к моменту k   результатов измерений y 1 : k  .

Скрытая марковская модель и байесовский выводПравить

Рассмотрим дискретный марковский процесс { X n } n 1   со следующими распределениями вероятностей:

X 1 μ ( x 1 )   и
X n ( X n 1 = x n 1 ) f ( x n x n 1 )  ,
(1)

где μ ( x )   — плотность вероятности, f ( x n x n 1 )   — условная плотность вероятности (переходная плотность вероятности) при переходе от x n 1   к x n  .

Здесь нотация X Y f ( )   означает, что X   при условии Y   распределено как f ( )  .

Реализации процесса { X n }   (скрытые переменные x n  ) наблюдаются посредством другого случайного процесса { Y n } n 1   — процесса измерений — с маргинальными плотностями:

Y n ( X n = x n ) h ( y n x n )  , (2)

где h ( y n x n )   — условная плотность вероятности (плотность измерений), измерения считаются статистически независимыми.

Модель может проиллюстрирована следующей диаграммой переходов:

X 1 X 2 X 3 X 4 Y 1 Y 2 Y 3 Y 4  

Для простоты считаем, что переходная плотность и плотность измерений не зависят от n  . Параметры модели считаются заданными.

Определённая таким образом модель системы и измерений известна как скрытая марковская модель[6].

Уравнение (1) определяет априорное распределение для процесса { X n }  :

p ( x 1 : n ) = μ ( x 1 ) k = 2 n f ( x k x k 1 )   (3)

Аналогично (2) задаёт функцию правдоподобия:

p ( y 1 : n x 1 : n ) = k = 1 n h ( y k x k )  , (4)

Здесь и далее нотация x k : l   для k l   обозначает ( x k , , x l )  .

Таким образом, байесовский вывод для { X 1 : n }   при известных реализациях измерений { Y 1 : n }  , обозначенных соответственно как { x 1 : n }   и { y 1 : n }  , будет опираться на апостериорное распределение

p ( x 1 : n y 1 : n ) = p ( x 1 : n ) p ( y 1 : n x 1 : n ) p ( y 1 : n )  , (5)

где (здесь d x 1 : n   — доминирующая мера):

p ( y 1 : n ) = p ( x 1 : n ) p ( y 1 : n x 1 : n ) d x 1 : n  .

Выборка по значимостиПравить

См. также Выборка по значимости.

Метод Монте-Карло позволяет оценивать свойства довольно сложных распределений вероятностей, например, путём вычисления средних и дисперсии в виде интеграла[3]:

θ ¯ = θ ( x ) p ( x ) d x  ,

где θ ( x )   — функция для оценивания. Например, для среднего можно положить: θ ( x ) = x  .

В случае невозможности аналитического решения, задача может быть решена численно генерированием случайных выборок с плотностью p ( x )  , обозначим их как x ( i ) 1 i N  , и получением среднего арифметического по точкам выборки[3]:

θ ¯ 1 N i = 1 N θ ( x ( i ) )  

В более общем случае, когда выборка из p   затруднена, применяется другое распределение q   (так называемое англ. instrumental or importance distribution), а для сохранения несмещённости оценки вводятся весовые коэффициенты w i   на основе отношения r ( x ( i ) ) = p ( x ( i ) ) / q ( x ( i ) )  [3]:

w i = r ( x ( i ) ) j = 1 N r ( x ( j ) )  

после чего вычисляет взвешенное среднее:

θ ¯ = θ ( x ) r ( x ) q ( x ) d x i = 1 N w i θ ( x ( i ) )  ,

ПеревыборкаПравить

Хотя вспомогательное распределение используется в основном для упрощения выборки из основного распределения p  , часто применяется процедура «выборки и перевыборки по значимости» (англ. sampling importance resampling, SIR). Эта процедура состоит из двух этапов: собственно выборки по значимости с вычислением весов w i  , и дополнительной выборки точек, учитывающих эти веса[3].

Перевыборка особенно необходима для последовательных фильтров[3].

Последовательный метод Монте-КарлоПравить

Методы многочастичной фильтрации и сглаживания являются наиболее известными примерами алгоритмов последовательного метода Монте-Карло (англ. sequential Monte Carlo, SMC). До такой степени, что в литературе часто не делают между ними различия. Тем не менее, SMC включает в себя более широкий класс алгоритмов, применимых для описания более сложных приблизительных методов фильтрации и сглаживания[7].

Последовательные методы Монте-Карло являются классом методов Монте-Карло, которые производят последовательную выборку из последовательности целевых плотностей вероятностей { f n ( x 1 : n ) }   увеличивающейся размерности, где каждое f n ( x 1 : n )   определено на декартовой степени X n  [5].

Если записать плотность как:[5]

f n ( x 1 : n ) = ϕ n ( x 1 : n ) Z n  , где
ϕ n : X n R +   известна поточечно, а
Z n = ϕ n ( x 1 : n ) d x 1 : n   — нормализующая, возможно неизвестная, постоянная, то

SMC-алгоритм будет находить приближения f k ( x 1 : k )   и оценки Z k   для k = 1 , 2 ,  .

Например, для случая фильтрации можно положить (см. (5)):

ϕ n ( x 1 : n ) = p ( x 1 : n ) p ( y 1 : n x 1 : n )   и
Z n = p ( y 1 : n )  ,

из чего будем иметь:

f n ( x 1 : n ) = p ( x 1 : n ) p ( y 1 : n x 1 : n ) p ( y 1 : n ) = p ( x 1 : n | y 1 : n )  .


Опуская вывод, схему предиктор-корректор можно представить в следующем виде[3]:

p ( x 1 : n y 1 : n 1 ) = p ( x 1 : n 1 y 1 : n 1 ) f ( x n x n 1 )   — предиктор,
p ( x 1 : n y 1 : n ) = h ( y n x n ) p ( x 1 : n y 1 : n 1 ) p ( y n y 1 : n 1 )   — корректор.

Множитель ( p ( y n y 1 : n 1 ) ) 1   — нормализующая постоянная, которая не требуется для обычного SMC-алгоритма.

АлгоритмПравить

Типичный алгоритм многочастичного фильтра можно представить в следующем виде[3]:

   Алгоритм МЧФ
   -- инициализация
   для i = 1...N:
     выборка 
  
    
      
        
          ξ
          
            0
          
          
            (
            i
            )
          
        
      
    
    
    из 
  
    
      
        
          q
          
            0
          
        
        (
        
          x
          
            0
          
        
        
        
          y
          
            0
          
        
        )
      
    
    
   
     -- начальные веса
     
  
    
      
        
          ω
          
            0
          
          
            (
            i
            )
          
        
        :=
        h
        (
        
          y
          
            0
          
        
        
        
          ξ
          
            0
          
          
            (
            i
            )
          
        
        )
        μ
        (
        
          ξ
          
            0
          
          
            (
            i
            )
          
        
        )
         
        
          /
        
         
        
          q
          
            0
          
        
        (
        
          ξ
          
            0
          
          
            (
            i
            )
          
        
        
        
          y
          
            0
          
        
        )
      
    
    
    
   кц
   для n = 1...T:
     если ПЕРЕВЫБОРКА то
       -- выбор индексов 
  
    
      
        
          j
          
            i
          
        
        
        {
        1
        ,
        
        ,
        N
        }
      
    
    
    N частиц в соответствии с весами
       
  
    
      
        
          j
          
            1
            :
            N
          
        
      
    
    
    = SelectByWeight(
  
    
      
        {
        
          w
          
            n
            
            1
          
          
            (
            j
            )
          
        
        }
      
    
    
   )
       для i = 1...N:
         
  
    
      
        
          x
          
            n
            
            1
          
          
            (
            i
            )
          
        
        :=
        
          ξ
          
            n
            
            1
          
          
            (
            
              j
              
                i
              
            
            )
          
        
      
    
    
   
         
  
    
      
        
          w
          
            n
            
            1
          
          
            (
            i
            )
          
        
        :=
        1
        
          /
        
        N
      
    
    
   
     иначе
       для i = 1...N:
         
  
    
      
        
          x
          
            n
            
            1
          
          
            (
            i
            )
          
        
        :=
        
          ξ
          
            n
            
            1
          
          
            (
            i
            )
          
        
      
    
    
   
     для i = 1...N:
       -- шаг распространения частицы
       
  
    
      
        
          ξ
          
            n
          
          
            (
            i
            )
          
        
        
        
          q
          
            n
          
        
        (
        
          ξ
          
            n
          
          
            (
            i
            )
          
        
        
        
          ξ
          
            n
            
            1
          
          
            (
            i
            )
          
        
        ,
        
          y
          
            n
          
        
        )
      
    
    
   
       -- обновление весов
       
  
    
      
        
          ω
          
            n
          
          
            (
            i
            )
          
        
        :=
        
          w
          
            n
            
            1
          
          
            (
            i
            )
          
        
        h
        (
        
          y
          
            n
          
        
        
        
          ξ
          
            n
          
          
            (
            i
            )
          
        
        )
        f
        (
        
          ξ
          
            n
          
          
            (
            i
            )
          
        
        
        
          x
          
            n
            
            1
          
          
            (
            i
            )
          
        
        )
         
        
          /
        
         
        
          q
          
            n
          
        
        (
        
          ξ
          
            n
          
          
            (
            i
            )
          
        
        
        
          x
          
            n
            
            1
          
          
            (
            i
            )
          
        
        ,
        
          y
          
            n
          
        
        )
      
    
    
    
     кц
     -- нормализация весов
     
  
    
      
        s
        :=
        
          
          
            j
            =
            1
          
          
            N
          
        
        
          ω
          
            n
          
          
            (
            j
            )
          
        
      
    
    
   
     для i = 1...N:
       
  
    
      
        
          w
          
            n
          
          
            (
            i
            )
          
        
        :=
        
          ω
          
            n
          
          
            (
            i
            )
          
        
        
          /
        
        s
      
    
    
   
   кц

См. такжеПравить

ПримечанияПравить

  1. 1 2 Микаэльян, 2011.
  2. Gordon, Salmond, Smith, 1993.
  3. 1 2 3 4 5 6 7 8 Cappé, Godsill, Moulines, 2007.
  4. Del Moral, Pierre. Non Linear Filtering: Interacting Particle Solution. (англ.) // Markov Processes and Related Fields. — 1996. — Vol. 2, no. 4. — P. 555–580.
  5. 1 2 3 Doucet, Johansen, 2011.
  6. Doucet, Johansen, 2011, 2.1 Hidden Markov Models and Inference Aims.
  7. Doucet, Johansen, 2011, 3 Sequential Monte Carlo Methods.

ЛитератураПравить

СсылкиПравить