Lecture 11 — Nondeterministic Filter (Belief phình / co)

Chương C** · bắt đầu: \(z \neq x\) — giữ vùng nghi ngờ, không chỉ một điểm

Lecture 11 — Nondeterministic Filter (Belief phình / co)

Chương C · bắt đầu: \(z \neq x\) — giữ vùng nghi ngờ, không chỉ một điểm


Khung 6 câu hỏi

# Câu hỏi Trả lời ngắn
1 Tại sao cần? Ch.A–B hay giả định biết \(x\). Máy thật chỉ cho đo nhiễu — phải giữ vùng nghi ngờ (belief).
2 So với cái khác? Vs tin một điểm \(\hat{x}\): còn biểu diễn bất định. Vs Bayes (Lec 12): đây là tập hợp; sau là xác suất.
3 Giải quyết gì & thế nào? Predict (theo \(u\)) phình tập; update (theo \(z\)) co tập (giao).
4 Kết quả ra sao? Belief set → nền mọi filter; cảnh báo quyết định khi bất định lớn.
5 Nên dùng khi nào? Đặt nền tư duy estimation; thiết kế obs RL không privileged.
6 Không nên khi nào? Đừng chỉ predict mãi (bất định nổ); đừng quyết định liều khi vùng còn rất rộng.

🖼️ Hình nhanh: blob belief phình (predict) rồi co (update)
bel(x_{t-1}) bel⁻(x_t) bel(x_t) ◯◯◯ ─u─► ◯◯◯◯◯◯ ─z─► ◯◯ (gọn) (phình ~) (co lại) nhiễu quá trình đo hữu ích

🇻🇳 Chuyện thật (sân B): Hẻm phố cổ Hà Nội hay khe cao ốc HCM — GPS nhảy rồi mất như đèn đường tắt giữa đêm.
Mỗi bước chỉ còn odometry: đám mây bất định phình ra, clearance “nửa mét” trên planner trở thành ảo giác.
Khi tường / thị giác / đo hữu ích trở lại, vùng nghi ngờ mới co — không phải chốt một điểm tọa độ rồi quên.
Chốt: belief = vùng nghi ngờ; chỉ predict → phình không Bound; quyết định khi blob còn rộng là liều. ../00C.

Hình minh họa (seminar-ready)

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.

Belief phình khi predict, co khi update.
Belief phình khi predict, co khi update.HiếuTC · gốc

0. Mục tiêu học

  1. Hiểu vì sao phải dùng tập hợp / phân phối thay vì một điểm ước lượng.
  2. Phân biệt hai bước predictupdate.
  3. Nhìn thấy: chỉ odometry → vùng nghi ngờ phình không Bound.
  4. Liên hệ: policy chỉ thấy \(z\) ≈ POMDP — nền sim-to-real cho RL–UAV.

1. Trực giác

Bạn đi trong phòng tối. Mỗi bước chân, vị trí có thể lệch vài chục centimet.
Mỗi lần sờ tường: “à, khoảng khu vực này”. Bạn không chốt một điểm tọa độ,
mà giữ một vùng nghi ngờ, rồi thu hẹp dần khi có thêm bằng chứng.

Đó chính là tinh thần của mọi bộ lọc trạng thái (state filter).

Với UAV đô thị / đồi chè: GPS urban canyon nhiễu, gió đẩy lệch odometry —
nếu chỉ tin \(\hat{x}\) điểm, planner đa mục tiêu sẽ “tự tin sai”.


2. Cốt lõi + sơ đồ

2.1. Belief (tạm: tập hợp)

  • Belief \(bel(x_t)\): mô tả độ tin về state tại \(t\). Ở bài này = tập
    các state còn khả dĩ; Lec 12 nâng lên phân phối xác suất.
  • Vòng lặp mỗi chu kỳ cảm biến/điều khiển:
Bước Input Hiệu ứng lên belief
Predict \(bel(x_{t-1})\), lệnh \(u_t\) \(bel^-(x_t)\) — vùng phình (~ nhiễu quá trình)
Update \(z_t\) \(bel(x_t)\) — vùng co (giao với tập nhất quán đo)

2.2. Vòng kín thời gian

          u_t              z_t
           │                │
           ▼                ▼
  bel_{t-1} ──► [PREDICT] ──► bel⁻_t ──► [UPDATE] ──► bel_t ──► …
                 phình (~)                 co (∩ đo)
  • Chỉ predict mãi: uncertainty tăng không Bound → robot “quên” mình ở đâu.
  • Chỉ update: bỏ thông tin chuyển động, chậm và dễ mâu thuẫn giữa các đo.

2.3. Set-membership (nondeterministic)

Predict = hợp mọi chuyển tiếp khả dĩ dưới \(u\) + slack.
Update = giao với tập state giải thích được \(z\).
Nếu giao rỗng → đo mâu thuẫn model (outlier / map sai) — cần cơ chế xử lý.

  predict:  [====]  + u±slack  →  [========]
  update:   [========] ∩ [..zzzz..]  →  [zzz]

3. Demo — tập hợp 1D phình / co

"""
Vùng nghi ngờ [lo, hi].
Bước đi +1 với sai ±0.3 (predict), rồi đo x∈[2.6, 3.4] (update).
"""
lo = hi = 2.0
print("Ban đầu     :", lo, hi)

u, slack = 1.0, 0.3
lo, hi = lo + u - slack, hi + u + slack   # PREDICT: phình
print("Sau predict :", round(lo, 2), round(hi, 2))

z_lo, z_hi = 2.6, 3.4
lo, hi = max(lo, z_lo), min(hi, z_hi)     # UPDATE: giao
print("Sau update  :", round(lo, 2), round(hi, 2))

# Thử chỉ predict 5 lần — vùng nổ
lo2 = hi2 = 2.0
for _ in range(5):
    lo2, hi2 = lo2 + u - slack, hi2 + u + slack
print("5× chỉ predict: độ rộng =", round(hi2 - lo2, 2), "(phình không Bound)")

🧪 Kỳ vọng demo: ban đầu [2,2] → sau predict khoảng [2.7, 3.3] → sau update giao với đo còn đoạn hẹp; dòng cuối độ rộng = \(5\times 0.6 = 3.0\) nếu chỉ predict — minh họa “quên vị trí”.


4. Gắn RL–UAV / đa mục tiêu

  • Observation \(z\) không đồng nhất state \(x\). Policy chỉ nhìn \(z\) (hoặc lịch sử) → gần POMDP.
  • Estimator tốt (belief gọn, ít lệch) = observation “giàu” hơn = RL dễ học hơn.
  • Khi thiết kế env: policy nhận \(x\) thật hay \(\hat{x}\)/\(z\)? Câu trả lời quyết định độ chân thực sim-to-real — nêu rõ trong paper.
  • GPS urban / gió: vùng belief rộng → đừng tối ưu coverage “sát tường” như thể pose chắc chắn; nới safety margin theo kích thước belief.
  • Năng lượng: bay “chắc vị trí” (thêm vòng khảo sát / hover lấy đo) tốn pin — trade-off active localization vs mission.

5. Ưu / nhược

✅ Nên ❌ Không ≈ Gần đúng
Tư duy mọi estimator = predict–update Chỉ dùng \(\hat{x}\) điểm khi P/vùng rất lớn Điểm + ngưỡng phương sai
Thiết kế obs RL có nhiễu / trễ Train full-state, deploy \(z\) thô mà không nói Domain rand noise trên \(x\)
An toàn theo kích thước belief Chỉ predict (odometry) dài trong đô thị Fuse GPS khi còn tin cậy

Nghĩa với năng lượng / gió / độ phủ / GPS urban: gió và multipath làm blob phình; coverage plan phải tôn trọng bất định pose.


6. Lỗi thường gặp

⚠️ Lỗi hay gặp: Coi \(\hat{x}\) điểm là đủ, quên phương sai / đa đỉnh → quyết định liều.
⚠️ Nhầm predict với update: “càng bay càng chắc” mà không cảm biến hiệu chỉnh — thực tế ngược nếu chỉ odometry.
⚠️ Giao rỗng mà ép lấy trung điểm — che giấu outlier.
⚠️ Trong sim RL: cho policy \(x\) GT rồi ngạc nhiên khi onboard lệch.


7. Checklist

  1. Predict làm belief phình; update làm belief co — vì sao?
  2. Nêu một ví dụ UAV trong đó \(z\) thiếu hẳn một phần của \(x\).
  3. Vì sao chỉ dùng một điểm \(\hat{x}\) có thể nguy hiểm cho path sát vật cản?
  4. Env của bạn đang cheat state chưa?

Nhớ một câu: Không chốt một điểm — giữ blob nghi ngờ: lệnh làm phình, đo tốt làm co.

🔗 Sang bài sau mang theo: Đổi tập hợp → phân phối xác suất; hai phương trình Bayes filter là xương sống mọi KF/PF.

  ★ Hình nhớ mãi:
     ◯◯  ─u─►  ◯◯◯◯◯  ─z─►  ◯◯

Trước: Lec10 · Sau: Lec12