Перейти до вмісту
coden

Фільтр Калмана: як за неточними вимірюваннями оцінити, де авто і як швидко воно їде

Поєднання двох вимірювань і коефіцієнт підсилення Калмана, фільтр як поточне середнє, модель простору станів, прогноз і корекція, стеження за авто за GPS з оцінкою невиміряної швидкості, налаштування шумів Q і R, оптимальність і нелінійні розширення.

14 хвилин Matěj Žalmánek 2026-10-15

Серія Основи ШІ Частина 41 з 52
  1. Мапа штучного інтелекту: що є що і як усе це пов’язано
  2. Коротка історія штучного інтелекту: від Тюрінга до мовних моделей
  3. Дані, модель, тренування, інференс: основні поняття на одному прикладі
  4. Як читати математичний запис: символи, індекси, суми та квантори
  5. Множини й відношення: конструктор, з якого складаються означення в ШІ
  6. Функції й відображення: чому кожна модель у ШІ — це функція
  7. Логіка й доведення: правила, за якими міркують у ШІ
  8. Графи й дерева: структура, на якій тримаються пошук і нейронні мережі
  9. Лінійна алгебра для машинного навчання: вектори, матриці й чому ШІ передусім множить
  10. Похідні, градієнт і правило ланцюжка: як модель дізнається, у якому напрямку вчитися
  11. Градієнтний спуск: як навчається модель
  12. Що таке ймовірність: від кидка кубика до аксіом Колмогорова
  13. Умовна ймовірність і теорема Баєса: як змінити оцінку, коли дізнаєтеся щось нове
  14. Випадкова величина і функція розподілу: одна функція, яка каже про розподіл усе
  15. Функція щільності та функція маси ймовірності: чому неперервна величина має в точці ймовірність нуль
  16. Математичне сподівання, дисперсія і коваріація: де лежить розподіл, наскільки він широкий і що з чим пов’язано
  17. Огляд розподілів ймовірностей: Бернуллі, біноміальний, Пуассона, рівномірний, нормальний і експоненційний
  18. Закон великих чисел і центральна гранична теорема: чому середні поводяться так передбачувано
  19. Статистика й оцінювання параметрів: максимальна правдоподібність, MAP і довірчі інтервали
  20. Теорія інформації: ентропія, перехресна ентропія і KL-дивергенція — звідки беруться функції втрат
  21. Пошук у просторі станів: BFS, DFS, UCS і A* з анімаціями
  22. Ігри та суперник: мінімакс, альфа-бета відсікання і Monte Carlo tree search
  23. Задоволення обмежень: бектрекінг, поширення обмежень і AC-3 на судоку та мапі чеських країв
  24. Логіка й системи, засновані на знаннях: пряме і зворотне виведення, резолюція та експертні системи
  25. Планування: STRIPS, світ кубиків, евристики з релаксації та планування в AI-агентах
  26. Локальний пошук та імітація відпалу: комівояжер через обласні центри Чехії
  27. Генетичні алгоритми: популяція, схрещування, мутація і добір на рюкзаку для походу
  28. Еволюційні стратегії і генетичне програмування: від правила однієї п’ятої до закону Кеплера
  29. Оптимізація мурашиною колонією: як феромоновий слід знаходить короткий шлях
  30. Оптимізація роєм частинок: інерція, власний досвід і досвід рою
  31. Нейроеволюція: еволюція ваг і форми нейронних мереж та алгоритм NEAT
  32. Нечіткі множини й функції належності: як записати «трохи тепло»
  33. Нечітка логіка та ймовірність: чому «трохи тепло» не означає «імовірно тепло»
  34. Нечітка логіка: t-норми, імплікації та правила ЯКЩО–ТО
  35. Нечітке керування: Мамдані та Суґено від вентилятора до маятника на візку
  36. Нечітка кластеризація: алгоритм fuzzy c-means і точки між кластерами
  37. Нейро-нечіткі системи (ANFIS): нечіткі правила, які навчаються з даних
  38. Марковські ланцюги: матриця переходів, стаціонарний розподіл і PageRank
  39. Приховані марковські моделі: алгоритм Вітербі й нечесне казино
  40. Байєсівські мережі: чому трава мокра і що з цього випливає для дощувача
  41. Фільтр Калмана: як за неточними вимірюваннями оцінити, де авто і як швидко воно їде
  42. Види машинного навчання: з учителем, без учителя, з частковим залученням учителя та інші
  43. Промпти, контекст і RAG: як дати моделі правильну інформацію
  44. Варіаційні автокодувальники (VAE): нові зображення з неперервного латентного простору
  45. Генеративні змагальні мережі (GAN): фальшувальник проти детектива
  46. Дифузійні моделі: як із чистого шуму постає зображення
  47. Марковські процеси ухвалення рішень: стани, дії, винагороди й рівняння Беллмана
  48. Q-навчання і DQN: як навчитися цінності дій — від таблиці до нейронної мережі
  49. Policy gradient і PPO: навчання безпосередньо політики
  50. Як працює ШІ-агент: мовна модель у циклі з інструментами
  51. Програмування з AI-агентами: завдання, тести й перевірка
  52. Оцінювання і безпека систем ШІ: як вимірювати і як стежити

Повна програма серії Готово: 52 з 83 тем

Що ви винесете
  • Як поєднати два неточні вимірювання і що таке коефіцієнт підсилення Калмана.
  • Як фільтр чергує прогноз за моделлю і корекцію за вимірюванням — і оцінює навіть те, чого ніхто не вимірює.
  • Чому налаштування шумів Q і R так важить і як фільтр дає раду нелінійному світові.

Що варто знати заздалегідь: Приховані марковські моделі: алгоритм Вітербі й нечесне казино, Огляд розподілів ймовірностей: Бернуллі, біноміальний, Пуассона, рівномірний, нормальний і експоненційний

«Аполлон-11» летів до Місяця з бортовим комп’ютером, який мав менше пам’яті, ніж сучасний графічний калькулятор. При цьому навігація мала з неточних вимірювань зір, радара й інерціальних датчиків безперервно оцінювати, де корабель перебуває і як швидко летить. Їй допоміг метод, який 1960 року опублікував Рудольф Калман і який для NASA довів до практичного застосування Стенлі Шмідт. Фільтр Калмана сьогодні є в кожному смартфоні, що поєднує GPS з акселерометром, у кожному дроні й у кожному авто, яке саме тримається смуги руху. Цією частиною завершується модуль про ймовірнісні моделі.

Вона продовжує частини «Приховані марковські моделі» і «Огляд розподілів ймовірностей».

1. Два неточні вимірювання кращі за одне

Почнімо з простого. Відстань до маяка вимірюємо двічі: один раз точним приладом — 100 м з невизначеністю (стандартним відхиленням) 5 м, — удруге грубим — 110 м з невизначеністю 10 м. Яка оцінка найкраща?

Теорема — поєднання двох нормальних оцінок

Якщо маємо дві незалежні оцінки N(m1, σ12) і N(m2, σ22), то поєднана оцінка нормальна з

m = m1 + K (m2 − m1),   σ2 = (1 − K) σ12,   де K = σ12 / (σ12 + σ22).

Рівносильно 1/σ2 = 1/σ12 + 1/σ22: точності додаються.

Доведення. Поєднана оцінка має щільність, пропорційну добутку обох щільностей (теорема Баєса з першою оцінкою як апріорним розподілом і другою як правдоподібністю). В експоненті додаються дві квадратичні функції:

−(x − m1)2 / (2σ12) − (x − m2)2 / (2σ22) = −½ (1/σ12 + 1/σ22) x2 + (m1/σ12 + m2/σ22) x + конст.

Щільність з експонентою −½ ax2 + bx після виділення повного квадрата є нормальною з дисперсією 1/a і математичним сподіванням b/a. Звідси 1/σ2 = 1/σ12 + 1/σ22, тобто σ2 = σ12σ22 / (σ12 + σ22) = (1 − K) σ12, і m = σ2 (m1/σ12 + m2/σ22) = (1 − K) m1 + K m2 = m1 + K (m2 − m1). ∎

Простими словами

Візьміть першу оцінку і зсуньте її в бік другої — тим сильніше, чим більше ви довіряєте другій. Число K каже, яку частку різниці взяти. Результат точніший, ніж кожне з вимірювань окремо; навіть грубе вимірювання додає інформацію.

m = m1 + K (m2 − m1),   K = σ12 / (σ12 + σ22),   σ2 = (1 − K) σ12

m1, σ12
перша оцінка (на рисунку синя) — вихідна точка, від неї ми зсуваємося; її дисперсія в чисельнику K каже: що менше ми довіряємо першій оцінці, то далі від неї можемо відійти
m2, σ22
друга оцінка (бурштинова); у формулу входить лише різницею m2 − m1 — якби обидві збігалися, не було б чого виправляти. Її дисперсія в знаменнику K зменшує підсилення: грубому вимірюванню ми довіряємо мало
K
коефіцієнт підсилення Калмана, число між 0 і 1 — яку частку різниці взяти. Це частка невизначеності першої оцінки в загальній невизначеності, тож точніша оцінка «тягне» результат до себе
m, σ2
поєднана оцінка (зелена); множник 1 − K < 1 гарантує, що нова невизначеність менша за першу — кожне вимірювання, навіть грубе, щось додає
Зсуньтеся від першої оцінки до другої на частку, яку визначає те, чому ви більше довіряєте.
8090100110120130 відстань (м) щільність ймовірн. (1/м)
Поєднання двох вимірювань відстані точне: 100 ± 5 мгрубе: 110 ± 10 мпоєднане: 102 ± 4,5 м

Тут K = 25 / (25 + 100) = 0,2: беремо п’яту частину різниці й отримуємо 102 м з невизначеністю √20 ≈ 4,5 м — менше, ніж 5 м точного приладу. Це число K — коефіцієнт підсилення Калмана, і весь фільтр — це не що інше, як цей крок, повторюваний у часі.

Приклад — поєднання вимірювань 100 ± 5 м і 110 ± 10 м крок за кроком

Дисперсії: σ12 = 52 = 25, σ22 = 102 = 100.

Підсилення: K = 25 / (25 + 100) = 0,2.

Математичне сподівання: m = 100 + 0,2 · (110 − 100) = 102 м — те саме, що зважене середнє 0,8 · 100 + 0,2 · 110.

Дисперсія: σ2 = (1 − 0,2) · 25 = 20,   σ = √20 ≈ 4,47 м.

Перевірка через точності: 1/25 + 1/100 = 0,04 + 0,01 = 0,05 = 1/20. ✓

2. Повторне вимірювання однієї величини

Температуру в кімнаті вимірюємо термометром з невизначеністю 2 °C, п’ятдесят разів поспіль, і після кожного вимірювання поєднуємо нове показання з дотеперішньою оцінкою. Після п’ятдесяти вимірювань оцінка становить 19,895 °C — точно середнє арифметичне всіх вимірювань, — а невизначеність 0,283 °C = 2/√50. Фільтр Калмана для величини, яка не змінюється, — це, отже, звичайне поточне середнє. Цікавим він стає тоді, коли величина з часом змінюється.

Теорема — фільтр для незмінної величини є поточним середнім

Вимірюємо сталу приладом з дисперсією σ2 і починаємо з настільки невизначеної оцінки, що перше вимірювання її повністю переважить (v0 → ∞). Тоді після k вимірювань

Kk = 1/k,   mk = mk−1 + (1/k) (zk − mk−1) = (z1 + … + zk) / k,   vk = σ2/k.

Доведення індукцією. Для k = 1 маємо K1 = v0 / (v0 + σ2) → 1, тож m1 = z1 і v1 = σ2. Якщо vk−1 = σ2/(k − 1), то Kk = vk−1 / (vk−1 + σ2) = (1/(k − 1)) / (1/(k − 1) + 1) = 1/k і vk = (1 − 1/k) · σ2/(k − 1) = σ2/k. Якщо mk−1 — середнє перших k − 1 вимірювань, то mk = ((k − 1) mk−1 + zk) / k — середнє всіх k. ∎

Простими словами

Десяте вимірювання в середньому з десяти чисел має вагу одна десята — і рівно стільки ж йому дає фільтр. Що більше ви вже знаєте, то менше вас зрушить одне нове вимірювання. Невизначеність спадає як 1/√k: щоб зменшити похибку вдвічі, вам потрібно вчетверо більше вимірювань.

Приклад — перші три вимірювання температури

Наш фільтр починає з оцінки 0 °C з дисперсією 106 (невизначеність 1 000 °C — «нічого не знаю»), дисперсія вимірювання 22 = 4.

1-ше вимірювання 23,098 °C: K1 = 106 / (106 + 4) ≈ 1, оцінка 23,098 °C, дисперсія 4,00.

2-ге вимірювання 21,967 °C: K2 = 4 / (4 + 4) = 1/2, оцінка 23,098 + ½ · (21,967 − 23,098) = 22,533 °C, дисперсія 2,00.

3-тє вимірювання 16,630 °C: K3 = 2 / (2 + 4) = 1/3, оцінка 22,533 + ⅓ · (16,630 − 22,533) = 20,565 °C, дисперсія 1,33 = 4/3.

Перевірка: (23,098 + 21,967 + 16,630) / 3 = 20,565 °C — звичайне середнє. Після п’ятдесяти вимірювань дисперсія 4/50 = 0,08, а невизначеність √0,08 ≈ 0,283 °C.

3. Модель простору станів

Означення — лінійна модель простору станів

Прихований стан xk ∈ ℝn еволюціонує, а вимірювання zk фіксує його із шумом:

xk = F xk−1 + wk,   wk ~ N(0, Q),    zk = H xk + vk,   vk ~ N(0, R).

F — матриця переходу, H — матриця вимірювань, Q — коваріація шуму процесу, а R — коваріація шуму вимірювань.

Простими словами

Це прихована марковська модель із попередньої частини, тільки стан — не «чесний чи фальшивий кубик», а вектор чисел — скажімо, положення і швидкість. Фізика каже, як стан приблизно змінюється (F), а випадкові поштовхи й неточність моделі підсумовує Q. Прилад бачить лише частину стану (H) і помиляється на R.

Наш приклад: авто їде дорогою з приблизно сталою швидкістю 15 м/с, але водій час від часу пригальмовує або додає газу — випадкове прискорення зі стандартним відхиленням 0,5 м/с². Стан — це (положення, швидкість), крок 1 с, тож F = [[1, 1], [0, 1]]: нове положення — це старе плюс швидкість. GPS вимірює лише положення, з невизначеністю 8 м: H = [1, 0], R = 64.

Означення — коваріаційна матриця і багатовимірний нормальний розподіл

Для випадкового вектора X ∈ ℝn з математичним сподіванням μ = E[X] коваріаційна матриця — це Σ = E[(X − μ)(X − μ)T], тобто Σij = cov(Xi, Xj). На діагоналі стоять дисперсії компонент, поза нею — коваріації; матриця симетрична й додатно напіввизначена.

Запис X ~ N(μ, Σ) означає багатовимірний нормальний розподіл зі щільністю, пропорційною exp(−½ (x − μ)T Σ−1 (x − μ)). Для лінійного перетворення AX + c ~ N(Aμ + c, A Σ AT), а сума незалежних нормальних векторів нормальна із сумою коваріацій.

Простими словами

Коваріаційна матриця — це «невизначеність для кількох чисел одночасно». На діагоналі стоїть, наскільки ми не певні щодо положення і наскільки — щодо швидкості. Поза діагоналлю — чи тримаються похибки разом: додатна коваріація положення і швидкості означає «якщо ми оцінили авто надто далеко попереду, то, найімовірніше, приписали йому й надто велику швидкість».

Приклад — звідки береться матриця Q

Протягом кроку тривалістю Δt на авто діє стале випадкове прискорення a ~ N(0, q2). З формул рівноприскореного руху:

pk = pk−1 + Δt · vk−1 + ½ Δt2 a,   vk = vk−1 + Δt · a.

Без шуму це F = [[1, Δt], [0, 1]]. Шум — це w = g a з вектором g = (½ Δt2, Δt), і за правилом AΣAT вище

Q = q2 g gT = q2 [[Δt4/4, Δt3/2], [Δt3/2, Δt2]].

Для Δt = 1 с і q = 0,5 м/с²: Q = 0,25 · [[0,25; 0,5], [0,5; 1]] = [[0,0625; 0,125], [0,125; 0,25]]. За одну секунду випадкове прискорення додає невизначеність √0,0625 = 0,25 м у положенні й 0,5 м/с у швидкості — і обидві похибки мають однаковий знак, тому коваріація додатна. Саме ця матриця стоїть у коді нижче.

4. Прогноз і корекція

Алгоритм — фільтр Калмана

Оцінка — це нормальний розподіл з математичним сподіванням x̂ і коваріацією P. На кожному кроці:

Прогноз: x̂− = F x̂,   P− = F P FT + Q.

Корекція: K = P− HT (H P− HT + R)−1,   x̂ = x̂− + K (z − H x̂−),   P = (I − K H) P−.

Простими словами

Прогноз: «за фізикою авто зараз мало б бути ось тут» — а оскільки фізика не досконала, невизначеність трохи зростає. Корекція: надходить вимірювання; різницю між вимірюванням і прогнозом (інновацію) беремо лише частково, у частці K, залежно від того, чому ми більше довіряємо. Це поєднання двох вимірювань із першого розділу — одним «вимірюванням» є прогноз із минулого кроку, другим — GPS. Коваріація P до того ж пам’ятає, як пов’язані між собою похибки положення і швидкості, і завдяки цьому фільтр виправляє навіть швидкість, яку ніхто не вимірює.

Кольори в розборах нижче відповідають рисункам: прогноз (раніше «перша оцінка») синій, вимірювання бурштинове, результат зелений, підсилення фіолетове.

x̂− = F x̂,   P− = F P FT + Q

x̂−, P−
прогноз на цей крок, ще до вимірювання — відіграє роль «першої оцінки» з поєднання двох вимірювань
F … FT
модель зсуває оцінку вперед; невизначеність переноситься за правилом AΣAT (для авто: невизначена швидкість за секунду переходить у невизначеність положення). FP не досить, бо коваріація — квадратична величина: множиться і зліва, і справа
Q
модель не досконала (водій пригальмує), тож невизначеність додається на кожному кроці — без Q матриця P спала б до нуля, і фільтр перестав би зважати на вимірювання
Прогноз: куди за фізикою перейде стан і наскільки через це зросте невизначеність.

K = P− HT (H P− HT + R)−1

H P− HT
невизначеність прогнозу, перерахована «мовою» приладу (для авто — лише дисперсія положення); відповідає σ12
R
дисперсія вимірювання, відповідає σ22; сума в дужках — дисперсія інновації S: наскільки вимірювання і прогноз можуть розходитися суто випадково
P− HT
коваріація всього стану з вимірюваною величиною; завдяки їй ненульове підсилення отримує навіть швидкість, яку ніхто не вимірює, — похибки положення і швидкості пов’язані між собою
K
коефіцієнт підсилення Калмана, по одному числу для кожної компоненти стану; обернена матриця замість ділення лише тому, що вимірювання може бути вектором
В одному вимірі з H = 1 це точно K = σ12 / (σ12 + σ22) з першого розділу.

x̂ = x̂− + K (z − H x̂−),   P = (I − K H) P−

x̂−, P−
прогноз — вихідна точка, від якої ми зсуваємося
z
нове вимірювання (на рисунку бурштинові точки GPS); єдине місце, через яке в оцінку потрапляють дані
H
перетворює прогноз стану на те, що мав би показати прилад; вимірювання і стан не можна відняти напряму, бо GPS бачить лише положення, а не швидкість
K
яку частку інновації z − Hx̂− взяти в кожну компоненту стану
x̂, P
виправлена оцінка (на рисунку зелена); множник I − KH зменшує невизначеність — тим сильніше, чим більшу частку вимірювання ми взяли
Корекція: те саме «зсуньтеся до вимірювання на частку K», тільки для векторів.
import numpy as np

F = np.array([[1, 1], [0, 1]])                    # положення += швидкість
H = np.array([[1, 0]])                            # вимірюємо лише положення
Q = 0.5**2 * np.array([[1/4, 1/2], [1/2, 1]])     # випадкове прискорення
R = np.array([[8**2]])                            # GPS ± 8 м

def kalman(mereni, x, P):
    for z in mereni:
        x, P = F @ x, F @ P @ F.T + Q             # прогноз
        K = P @ H.T @ np.linalg.inv(H @ P @ H.T + R)
        x = x + K @ (z - H @ x)                   # корекція за інновацією
        P = (np.eye(2) - K @ H) @ P
        yield x, P
Приклад — перші два кроки фільтра на даних авто

Старт. Перше вимірювання GPS — z1 = 8,44 м. Фільтр починає з положення 8,44 м, швидкості 0 і великої невизначеності P0 = [[100; 0], [0; 100]] (10 м і 10 м/с). Корекція тим самим вимірюванням положення не змінює (інновація дорівнює 0), лише зменшує його дисперсію: K = 100 / (100 + 64) = 0,610, P11 = (1 − 0,610) · 100 = 39,02.

Прогноз на 2-гу секунду. x̂− = (8,44 + 0; 0) = (8,44; 0,00). Коваріація FPFT додає до дисперсії положення дисперсію швидкості (положення += швидкість):

P− = [[39,02 + 100 + 0,0625; 100 + 0,125], [100 + 0,125; 100 + 0,25]] = [[139,09; 100,13], [100,13; 100,25]].

Корекція. Вимірювання z2 = 23,23 м, інновація y = 23,23 − 8,44 = 14,78 м, її дисперсія 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 м; 7,29 м/с).

Після двох вимірювань фільтр «знає», що авто рухається, хоча швидкість ніхто не вимірював: він оцінив 7,3 м/с (насправді 13,9 м/с). Підсилення для швидкості ненульове лише завдяки коваріації 100,13 поза діагоналлю. Чому лише половина? Вимірювання зашумлені на 8 м, тож різницю 15 м фільтр ще не сприймає цілком серйозно — за наступні секунди швидкість уточниться.

5. Фільтр стежить за авто

Хвилина їзди, одне вимірювання GPS щосекунди. За цей час авто проїде трохи менше кілометра, тож шум на графіку положення загубився б. Тому малюємо, наскільки авто попереду чи позаду порівняно з їздою рівно 15 м/с:

−25025 01020 0102030405060 відхилення від їзди 15 м/с (м) швидкість (м/с) час (с)
Відстеження авто: угорі відхилення положення, унизу швидкість насправді вимірювання GPS оцінка фільтра ± 2σ

Вимірювання GPS відхиляються від справжнього положення в середньому на 8,3 м (від десятої секунди, коли фільтр розженеться). Оцінка фільтра — лише на 4,9 м, на 41 % менше. А швидкість, яку не вимірює жоден датчик, він оцінює з похибкою 0,8 м/с: фільтр виводить її з того, як змінюється положення. На початку швидкості він не знає (починає з нуля), але за кілька секунд «ловить» її. Смуга ±2σ — це чесна невизначеність фільтра: справжнє положення лежить усередині у 95 % кроків, саме так, як і має бути.

Означення — середня похибка (RMSE) і смуга ±2σ

«Середня похибка» в цій частині — це корінь із середньоквадратичної похибки (RMSE) за кроки k = 10, …, 59 (N = 50):

RMSE = √( (1/N) ∑k (x̂k − xk)2 ),

де xk — справжнє положення, а x̂k — оцінка (або саме вимірювання). Квадрати карають великі похибки сильніше, ніж малі, а корінь повертає результат у метри. Для самого GPS RMSE мав би вийти близько σ = 8 м — і вийшов 8,3 м.

Смуга ±2σ — це інтервал x̂k ± 2√Pk,11. Для нормального розподілу ймовірність потрапляння в інтервал μ ± 2σ дорівнює 0,9545; якщо фільтр обчислив невизначеність P правильно, справжнє значення має потрапляти в смугу приблизно у 95 % кроків.

Коефіцієнт підсилення Калмана за кілька кроків усталюється на K ≈ (0,30; 0,05): з кожної інновації фільтр бере 30 % у положення і 5 % (0,05 м/с на метр інновації) у швидкість. За 50 змодельованих поїздок похибка фільтра в середньому становить 55 % похибки самого GPS.

Теорема — усталене підсилення

У формулах для P−, K і P немає вимірювань z — і коваріацію, і підсилення можна обчислити заздалегідь. Поєднанням прогнозу й корекції отримуємо рекурентне співвідношення (дискретне рівняння Ріккаті)

P−k+1 = F (P−k − P−kHT (HP−kHT + R)−1 HP−k) FT + Q.

Для сталих F, H, Q, R, що задовольняють звичайні умови (система спостережувана — з ряду вимірювань можна встановити весь стан — і шум Q діє на всі його компоненти), послідовність збігається до єдиної нерухомої точки незалежно від початкового P0; підсилення тоді збігається до усталеного значення.

Для авто: після 60 кроків K = (0,297; 0,052) і P = [[19,04; 3,35], [3,35; 1,29]], тобто фільтр певен свого положення з точністю √19,04 ≈ 4,4 м, а швидкості — √1,29 ≈ 1,1 м/с.

Простими словами

Спочатку фільтр майже нічого не знає й жадібно хапає кожне вимірювання (підсилення 0,61, потім 0,68). У міру того як оцінка уточнюється, підсилення спадає — аж поки не усталиться там, де невизначеність, яку за крок додає шум Q, така сама, як та, що її забирає вимірювання. Далі вже нічого не змінюється, і тому в простих пристроях підсилення часто обчислюють один раз заздалегідь, а фільтр потім лише множить на фіксовані числа.

6. Кому довіряти: Q і R

Фільтр має знати Q і R. Для GPS їх зазвичай указує виробник, але шум процесу оцінити складніше. А що, як дати фільтру інші значення, ніж ті, що мають дані?

Шум процесу, в який вірить фільтр (м/с²)0,010,10,5 (істина)210
похибка положення (м)9,295,884,865,677,08
похибка швидкості (м/с)1,190,860,791,535,19

Коли фільтр вірить, що авто їде майже точно зі сталою швидкістю (мале Q), він тримається своєї моделі й на справжнє прискорення реагує із запізненням — похибка положення навіть більша, ніж у самого GPS. Коли ж він чекає бурхливих змін (велике Q), то не довіряє моделі й копіює зашумлені вимірювання. Найкраще виходить зі справжнім значенням 0,5. Те саме стосується R: з невизначеністю GPS 2, 8 і 30 м похибка положення становить 5,66; 4,86 і 5,39 м.

7. Чому саме так

Теорема — оптимальність фільтра Калмана

Якщо модель лінійна, а шуми нормальні, то розподіл N(x̂k, Pk) — це точно апостеріорний розподіл стану P(xk | z1, …, zk). Без припущення нормальності фільтр Калмана — найкраща лінійна оцінка в сенсі середньоквадратичної похибки.

Простими словами

Фільтр Калмана — це теорема Баєса, застосована знову і знову. Прогноз — апріорний розподіл, вимірювання — правдоподібність, корекція — апостеріорний розподіл. Нормальний розподіл має рідкісну властивість: добуток нормальних знову нормальний, — тож досить пам’ятати математичне сподівання й коваріацію замість цілої функції. Це прямий алгоритм (forward) із прихованих марковських моделей для неперервного стану.

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
прогноз (апріорний розподіл): минулого стану ми точно не знаємо, тож усереднюємо перехід за всіма можливими минулими станами, зваженими тим, у що ми вірили минулого разу. Інтеграл — неперервний відповідник суми ∑i у прямому алгоритмі HMM. Для лінійної моделі й нормального розподілу виходить N(Fx̂, FPFT + Q)
p(zk | xk)
правдоподібність нового вимірювання — наскільки добре те чи інше місце пояснило б те, що показав GPS; з моделі це N(zk; Hxk, R)
p(xk | z1:k)
апостеріорний розподіл після всіх вимірювань; «∝» тому, що нормувальна стала p(zk | z1:k−1) нам не потрібна — добуток двох нормальних щільностей обчислює доведення теореми з початку частини, і з нього виходить точно крок корекції
Теорема Баєса в часі: прогноз, помножений на правдоподібність, дає нову оцінку, яка стає прогнозом для наступного кроку.

8. Коли світ не лінійний

  • Розширений фільтр Калмана (EKF) на кожному кроці лінеаризує нелінійну модель за допомогою похідної — так робила й навігація «Аполлона».
  • Unscented-фільтр Калмана (UKF) замість похідних проганяє через модель кілька ретельно вибраних точок і з них обчислює нове математичне сподівання та коваріацію.
  • Фільтр частинок повністю відмовляється від нормального розподілу: оцінку подають тисячі зразків («частинок»), які рухаються за моделлю й переважуються за вимірюваннями. Він упорається навіть з оцінкою з кількома вершинами, наприклад «робот або на кухні, або у вітальні».
  • Де застосовується: поєднання GPS, акселерометра й гіроскопа в смартфонах, навігація літаків, дронів і ракет, відстеження об’єктів радаром, оцінка положення автономних авто і навіть згладжування економічних часових рядів.
Означення — розширений фільтр Калмана (EKF)

Модель нелінійна: xk = f(xk−1) + wk, zk = h(xk) + vk. EKF обчислює математичне сподівання нелінійними функціями, а коваріацію — їхніми матрицями Якобі (матрицями частинних похідних) у поточній оцінці:

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 і P як раніше, з Hk замість H.

Приклад: радар вимірює відстань h(px, py) = √(px2 + py2); тоді Hk = (px/d, py/d) з d = √(px2 + py2) — одиничний вектор у напрямку цілі. Для цілі в (300, 400) м маємо d = 500 м і Hk = (0,6; 0,8). Результат уже не точний апостеріорний розподіл, а лише його наближення; що сильніше модель викривлена в межах невизначеності, то гірше наближення.

9. Підсумок

  • Два незалежні нормальні вимірювання поєднуються зваженим середнім; точності додаються, а вага K — це коефіцієнт підсилення Калмана.
  • Фільтр Калмана повторює прогноз за моделлю і корекцію за вимірюванням; для незмінної величини це поточне середнє.
  • Для авто він зменшив похибку положення з 8,3 м (GPS) до 4,9 м і оцінив навіть невиміряну швидкість з похибкою 0,8 м/с; смуга ±2σ накрила справжнє значення у 95 % кроків.
  • Результат залежить від Q і R: надмірна довіра до моделі означає запізнілу реакцію, замала — копіювання шуму.
  • Для лінійної моделі з нормальним шумом фільтр — це точне баєсівське оновлення; з нелінійним світом справляються EKF, UKF і фільтри частинок.

Цією частиною завершується модуль про ймовірнісні моделі. Хочете спробувати самі? Попросіть ШІ-агента написати фільтр Калмана для даних з акселерометра вашого телефона і перевірте, наскільки добре він за ними оцінить, на скільки ви телефон пересунули.

Маєте іншу думку? Напишіть на support@coden-app.com.

Агент на вашому комп’ютері, керований з телефона