Ebook Robotics · RL–UAV
Lecture 12 — Bayes Filter
Chương C** · xương sống xác suất: hai phương trình = một vòng lặp
Chế độ Slide · phím ← → · F toàn màn · Esc về đọc · S mở slide
Chương C** · xương sống xác suất: hai phương trình = một vòng lặp
Chương C · xương sống xác suất: hai phương trình = một vòng lặp
| # | Câu hỏi | Trả lời ngắn |
|---|---|---|
| 1 | Tại sao cần? | Cần ngôn ngữ xác suất chính xác cho predict–update (vượt set-membership Lec 11). |
| 2 | So với cái khác? | Vs KF/PF: chúng là xấp xỉ của Bayes filter. Vs RL full-state: đây đặt nền POMDP/belief. |
| 3 | Giải quyết gì & thế nào? | Predict tích phân motion model; update nhân likelihood + chuẩn hóa \(\eta\). |
| 4 | Kết quả ra sao? | \(bel(x_t)\) — đầu vào estimator / recurrent policy. |
| 5 | Nên dùng khi nào? | Mọi bài estimation; thiết kế sensor/motion model; học trước KF. |
| 6 | Không nên khi nào? | Đừng quên chuẩn hóa \(\eta\); đừng dùng likelihood cực nhọn với cảm biến outlier. |
🖼️ Hình nhanh: hai phương trình Bayes = vòng lặp kín
┌──────────────────────────────┐ │ │ bel(x_{t-1}) ─► PREDICT ─► bel̄(x_t) ─► UPDATE ─► bel(x_t) ∫ p(x|x',u)·bel η·p(z|x)·bel̄ motion model sensor model │ │ └────────── t ← t+1 ───────────┘🇻🇳 Chuyện thật (sân B): Bay trong phố đặc như người hỏi đường: odometry đoán “vừa đi khoảng 20 m về đông” (predict), rồi GPS/lidar/camera chỉnh lại cho khớp đo (update).
Không nhảy cóc sang một kết luận duy nhất — mỗi vòng nhân likelihood với prior rồi chuẩn hóa \(\eta\).
Multipath làm GPS “nói dối nhẹ”: sensor model kém nhọn thì posterior không được tự tin giả.
Chốt: Bayes filter = vòng predict–update; posterior ∝ \(p(z\mid x)\cdot\overline{bel}(x)\).../00C.
Hình gốc hoặc minh họa cho ebook — không cắt từ slide Princeton. Dùng Present: bật Slide · F toàn màn.
Bayes nói: niềm tin mới tỷ lệ với (độ khớp của phép đo) nhân với (niềm tin trước đó).
Ví dụ tìm remote: bạn nghĩ “hay để ở sofa”. Nhìn sofa không thấy → giảm tin sofa,
tăng tin bàn/kệ. Mỗi quan sát chỉnh lại phân phối — không nhảy cóc sang một kết luận duy nhất.
Với UAV: “GPS nói gần tòa A” × “odometry bảo vừa bay 20 m về đông” → posterior pose.
Gió / multipath chỉnh lại mức tin của từng nguồn qua model \(Q,R\) (Lec 13).
Predict (Chapman–Kolmogorov):
\[
\overline{bel}(x_t)
=
\int p(x_t \mid x_{t-1}, u_t)\, bel(x_{t-1})\, dx_{t-1}
\]
Update (Bayes):
\[
bel(x_t)
=
\eta\, p(z_t \mid x_t)\, \overline{bel}(x_t)
\]
| Ký hiệu | Tên | Vai trò |
|---|---|---|
| \(p(x_t\mid x_{t-1},u_t)\) | Motion model | State tiến hóa thế nào khi có \(u_t\) (+ nhiễu) |
| \(p(z_t\mid x_t)\) | Sensor model / likelihood | Nếu state là \(x_t\) thì xác suất thấy \(z_t\) |
| \(\eta\) | Chuẩn hóa | Để \(bel\) tổng/tích phân = 1 |
| \(\overline{bel}\) | Prior tại \(t\) | Sau predict, trước đo |
bel(x_{t-1})
│ nhân motion model p(x_t | x_{t-1}, u_t), rồi tích phân
▼
bel̄(x_t) ← prior belief tại t (còn gọi bel⁻)
│ nhân likelihood p(z_t | x_t), rồi × η
▼
bel(x_t) ← posterior belief tại t
Kalman, EKF, UKF, Particle Filter… chỉ là các cách xấp xỉ hai tích phân/phép nhân trên khi không gian liên tục và mô hình phức tạp.
Bayes filter (đúng, thường không tính nổi)
│
┌───────────┼───────────┐
▼ ▼ ▼
KF/EKF UKF PF
(1 Gauss) (sigma pts) (đám hạt)
"""
3 ô A,B,C. Prior đều.
Motion nghiêng sang phải + đo kiểu 'gần tường' (A,C khớp mạnh).
"""
import numpy as np
bel = np.array([1 / 3, 1 / 3, 1 / 3])
print("Prior ", np.round(bel, 3))
# T[i,j] = P(đến i | từ j); đơn giản hóa biên
T = np.array([[0.2, 0.0, 0.0],
[0.8, 0.2, 0.0],
[0.0, 0.8, 1.0]])
bel_bar = T @ bel # PREDICT
print("Predict ", np.round(bel_bar, 3))
lik = np.array([0.9, 0.1, 0.9]) # A,C ~ tường; B kém khớp
bel = lik * bel_bar # UPDATE (chưa chuẩn hóa)
bel = bel / bel.sum() # η
print("Posterior ", np.round(bel, 3))
# Thêm 2 chu kỳ cùng motion + cùng kiểu đo
for k in range(2):
bel_bar = T @ bel
bel = lik * bel_bar
bel /= bel.sum()
print(f"Sau vòng {k+2}", np.round(bel, 3))
🧪 Kỳ vọng demo: sau 1 chu kỳ tin dồn về A/C (khớp tường) theo hướng chuyển động phải; các vòng sau khối tin tiếp tục dịch/hội tụ — cảm giác “filter đang chắc dần”. Nếu quên
bel /= bel.sum()thì không còn xác suất.
Hình phân phối (đọc output):
ô: A B C
prior ███ ███ ███
post ████ ░ █████ (minh họa — xem số in)
| ✅ Nên | ❌ Không | ≈ Gần đúng |
|---|---|---|
| Khung chung mọi filter | Quên \(\eta\) rồi gọi là “xác suất” | Histogram tin thô chưa chuẩn hóa (debug) |
| Tách rõ motion vs sensor model | Nhầm \(p(z\|x)\) với \(p(x\|z)\) | Likelihood heuristic có chuẩn hóa |
| Likelihood trung thực với GPS/camera | Likelihood cực nhọn + outlier | Huber / clutter model |
Nghĩa với năng lượng / gió / GPS urban: gió vào motion model; multipath vào sensor model — Bayes chỉ “đúng” khi hai model không tự lừa.
⚠️ Lỗi hay gặp: Quên chuẩn hóa \(\eta\).
⚠️ Sensor model quá lạc quan → filter tự tin sai.
⚠️ Nhầm \(p(z\|x)\) với \(p(x\|z)\).
⚠️ Nghĩ “chạy KF là khác Bayes” — KF là trường hợp đặc biệt / xấp xỉ.
⚡ Nhớ một câu: Predict = tích phân motion; update = likelihood × prior rồi chuẩn hóa — mọi estimator chỉ xấp xỉ hai dòng này.
🔗 Sang bài sau mang theo: Cần xấp xỉ thực dụng: một chuông Gauss (KF) hoặc đám hạt (PF).
★ Hình nhớ mãi:
bel ─u─► bel̄ ─z,η─► bel ─► (lặp)