Машинное обучение должно знать

Фильтрация Калмана: простое введение

Оптимальный алгоритм онлайн-обучения для линейных систем с гауссовским шумом

Если динамическая система является линейной и с гауссовым шумом, оптимальной оценкой скрытых состояний является фильтр Калмана.

Этот алгоритм онлайн-обучения является частью основ мира машинного обучения. Хорошее понимание этого важно до понимания более сложных тем, таких как фильтры частиц.

В этой статье я начну с примера применения фильтра Калмана, затем опишу сам алгоритм, применим его к некоторым простым синтетическим данным и, наконец, покажу, где фильтр Калмана дает сбой.

Пример применения

В мире инженерии фильтры Калмана являются одной из наиболее распространенных моделей для снижения шума от сигналов датчиков. Как мы обнаружим, эти модели чрезвычайно эффективны, когда шум в данных примерно гауссовский.

Хотя они являются мощным инструментом для снижения шума, фильтры Калмана могут использоваться для гораздо большего, вот пример:

Допустим, у нас есть реактивный двигатель, на одном из компонентов которого растет усталостная трещина. Мы пытаемся контролировать длину трещины с помощью датчика напряжения на такой детали.

Предположим, у нас есть замеры трещины в каждом конкретном случае. Предположим также, что длина трещины линейно растет с напряжением (на самом деле, согласно Парижскому закону, это на самом деле логарифм скорости роста трещины, линейно возрастающий с логарифмом коэффициента интенсивности напряжений).

Фильтры Калмана включают следующие переменные:

  • Z: наблюдаемая переменная (что мы пытаемся предсказать)
  • X: переменная скрытого состояния (то, что мы используем для прогнозирования Z, и в идеале имеет линейную связь с Z).

В нашем примере наблюдаемой переменной является длина трещины. Наша скрытая переменная состояния - это стресс. Поскольку мы предположили, существует линейная связь между ними, и если мы предположим, что шум является гауссовским, оптимальной оценкой является фильтр Калмана!

Фильтр Калмана

Фильтр Калмана - это алгоритм онлайн-обучения. Модель обновляет свою оценку весов последовательно по мере поступления новых данных. Следите за обозначениями индексов в уравнениях. Текущий временной шаг обозначается как n (временной шаг, для которого мы хотим сделать прогноз).

ПРЕДЫДУЩИЕ СОСТОЯНИЯ

Конечная цель фильтра Калмана - предсказать следующее наблюдение наблюдаемой переменной Z, взяв наилучшую оценку скрытой переменной состояния X. Затем можно предсказать следующее наблюдение Z, восстановив его с помощью X.

Оценка наблюдаемой переменной Z дается линейным преобразованием H скрытых состояний X. Нижний индекс n представляет текущий временной шаг. Xn | n-1 представляет собой оценку скрытого состояния X на временном шаге n с учетом данных до n-1.

Исходя из этой оценки Z на временном шаге n, мы можем сформулировать нововведение:

Инновация Y - это разница между предсказанием следующего наблюдаемого состояния и реальным наблюдением следующего состояния.

Чтобы оценить скрытое состояние X, фильтр Калмана предполагает, что переход от скрытого состояния к наблюдаемой переменной имеет гауссовский шум. В примере с реактивным двигателем измерительное устройство может добавлять шум в систему из-за неточных измерений длины трещины. Предполагается, что эти ошибки являются гауссовскими.

Таким образом, каждый раз, когда поступает новое наблюдение, модель оценивает скрытые состояния X, а также выполняет оценку неопределенности P. Вместе они параметризуют функцию плотности вероятности оценки наблюдаемой переменной. Прогнозируемое наблюдение для следующего временного шага будет оценкой максимального правдоподобия (средним).

Первое уравнение показывает оценку скрытого состояния с учетом предыдущего скрытого состояния. F - функция перехода от предыдущей оценки состояния к оценке текущего состояния.

Второе уравнение - это обновленная оценка неопределенности P. Это ковариационная матрица, которая является функцией ковариационной матрицы предыдущего состояния.

ГОСУДАРСТВЕННОЕ ОБНОВЛЕНИЕ УРАВНЕНИЙ

До сих пор мы сформулировали состояния с учетом данных до предыдущего временного шага (СОСТОЯНИЕ n | n-1). Мы хотим сформулировать обновление для новых состояний с учетом новой точки данных, которую мы получили на временном шаге n (STATE n | n).

Минимизируя среднеквадратичную ошибку, можно получить оптимальное обновление скрытых состояний X и ковариации P для временного шага n.

Где:

Первое уравнение - это обновление скрытого состояния n с учетом всех данных. Обновленный X дается предыдущей оценкой весов плюс срок выигрыша, умноженный на нововведение. Это та же структура обновления, что и в алгоритме онлайн-обучения Рекурсивный метод наименьших квадратов (RLS).

Коэффициент Калмана K на временном шаге n определяется предыдущей оценкой неопределенности P, линейной функцией H и обратной величиной ковариации нововведения S.

С этими уравнениями теперь мы можем реализовать наш собственный фильтр Калмана.

Пример реализации

Будут использоваться данные простого авторегрессионного временного ряда. Будет реализован фильтр Калмана, который будет использоваться для оценки скрытых состояний X, а затем для прогнозирования следующих наблюдений Z.

Порядок авторегрессионных временных рядов, показанный выше, будет установлен на 2. v (n) представляет белый шум, добавленный к системе. Со случайно инициализированными весами a авторегрессионный временной ряд генерирует новые точки путем умножения двух предыдущих точек на веса.

Выше представлена ​​оценка скрытого состояния X. Реальное значение показано красным цветом, оценка Калмана - синим. Как видите, модель быстро сходится к приблизительному значению скрытого состояния. Модель никогда не оценивает его идеально из-за гауссовского шума, добавленного к сигналу.

После примерно 200 наблюдений модель может точно оценить наблюдаемую переменную Z в будущем. Что больше всего впечатляет в фильтрах Калмана и других алгоритмах онлайн-обучения, так это их скорость сходимости.

Где не работает фильтр Калмана

До сих пор мы предполагали, что связь между скрытым состоянием и наблюдаемым состоянием является линейной, и мы увидели, что модель работает достаточно хорошо. Но что происходит, когда мы меняем эту зависимость на нелинейную.

Это оценки фильтра Калмана одного из скрытых состояний X, которое изменяется во времени в виде синусоидальной волны. Модель не дает хороших оценок скрытого состояния X. Более того, кажется, что прогнозы отстают от реальных значений.

Есть два гиперпараметра, которые я не упоминал в приведенных ранее уравнениях. Q - ковариация технологического шума, а R - дисперсия шума измерения. Настраивая R, мы можем быстрее адаптировать модель к изменениям в скрытом состоянии. Адаптация Q позволяет контролировать, насколько чувствительна модель к шуму обработки.

Даже после настройки этих гиперпараметров вы можете увидеть, что модель отстает от изменения скрытой переменной состояния, что делает ее прогнозы менее хорошими. Фильтр Калмана является оптимальным алгоритмом для линейных систем, но когда существует нелинейная связь между переменной скрытого состояния и наблюдаемой переменной, эти модели, как правило, не работают.

Заключение

Фильтр Калмана чрезвычайно мощный и используется в самых разных областях, особенно при обработке сигналов в инженерных приложениях.

В предыдущей статье я описал один из простейших алгоритмов онлайн-обучения - алгоритм рекурсивных наименьших квадратов (RLS). Фильтр Калмана продвигает алгоритм RLS на шаг вперед, предполагая, что в системе присутствует гауссов шум. При прогнозировании фильтр Калмана оценивает среднее значение и ковариацию скрытого состояния. По сути, алгоритм строит распределение вокруг прогнозируемой точки, при этом среднее значение является оценкой максимального правдоподобия.

Мы узнали, что модель не работает, когда система нелинейна. Однако в реальной жизни большинство систем нелинейны. В будущей статье я рассмотрю нелинейные системы в онлайн-обучении и одну из самых мощных моделей в этой области: Фильтр частиц.

Спасибо за прочтение

Если вам понравилось, рассмотрите вариант подписывайтесь на меня, чтобы увидеть больше подобных статей!

Если вы хотите получить доступ к тысячам историй только для участников в среде, рассмотрите возможность регистрации по моей реферальной ссылке:

Https://diegounzuetaruedas.medium.com/membership