Ebook Robotics · RL–UAV
Lecture 21 — Overfitting và Regularization
Chương D** · tổng quát hóa — và domain gap không phải overfit cổ điển
Chế độ Slide · phím ← → · F toàn màn · Esc về đọc · S mở slide
Chương D** · tổng quát hóa — và domain gap không phải overfit cổ điển
Chương D · tổng quát hóa — và domain gap không phải overfit cổ điển
| # | Câu hỏi | Trả lời ngắn |
|---|---|---|
| 1 | Tại sao cần? | Policy/mạng khớp train (1 map, 1 gió) rồi chết ở test — paper không đứng. |
| 2 | So với cái khác? | Vs chỉ tăng model size: cần regularize/đa dạng data. Vs domain gap: lệch phân phối sim–real / gió / khối lượng, không chỉ “thuộc lòng nhiễu train”. |
| 3 | Giải quyết gì & thế nào? | Early stop, weight decay, aug, domain rand, held-out eval bắt buộc. |
| 4 | Kết quả ra sao? | Protocol đánh giá trung thực; metric train vs test; claim hẹp đúng chỗ. |
| 5 | Nên dùng khi nào? | Mọi thí nghiệm RL–UAV; trước khi claim generalize. |
| 6 | Không nên khi nào? | Aug ảnh tưởng chữa gap dynamics; randomize quá mạnh làm task không học được. |
🖼️ Hình nhanh: Train xuống / val lên = overfit; sim≠real = domain gap (khác bệnh).
```
Loss / error Phân phối
│ train ╲ │
│ ╲__ │ P_sim P_real
│ val ╲ ╱ ★ overfit │ ██ ░░██
│ ╲___╱ │ ██ ░░██
└───────┼──────► epoch └────┴────────┴──► x
early stop ★ gap: lệch hỗ trợ, không chỉ nhiễuOverfit: thuộc lòng D_train Domain gap: D_test từ thế giới khác
```🇻🇳 Chuyện thật (sân A): Policy “thuộc” một thửa chè phẳng, lặng gió — success train đẹp. Đưa sang thửa dốc + gió sườn buổi chiều thì chết: đó thường là domain gap, không chỉ overfit cổ điển.
Overfit = thuộc lòng nhiễu / map trong \(D_{\text{train}}\); gap = \(D_{\text{test}}\) đến từ thế giới khác (địa hình, gió, khối lượng).
Chốt: chữa đúng bệnh — held-out map/gió bắt buộc; aug ảnh không thay domain randomization động lực.../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.
Học thuộc 50 câu quiz ≠ hiểu bài. Gặp đề lạ (gió mạnh, ánh sáng khác, map khác, khối lượng pin đổi) là toang.
Overfit = khớp cả nhiễu / đặc thù tập train.
Regularization = ép mô hình đơn giản hơn, mượt hơn, hoặc bất biến hơn với thay đổi không liên quan nhiệm vụ.
Domain gap = ngay cả mô hình “không overfit” trên \(P_{\text{sim}}\) vẫn có thể kém trên \(P_{\text{real}}\) vì hai phân phối khác nhau.
Bay khảo sát đồi chè trong sim với gió 0 rồi claim “robust” — đó không phải overfit theo nghĩa train-loss/val-loss; đó là gap điều kiện vận hành. Học thuộc đáp án đề năm ngoái (overfit) khác với học trong phòng rồi thi ngoài mưa gió (domain gap).
Paper cần metric riêng cho cả hai — và với đa mục tiêu (năng lượng · phủ · quỹ đạo · gió) còn phải held-out trên từng trục.
| Bối cảnh | Dấu hiệu overfit / kém tổng quát |
|---|---|
| Supervised | Train loss↓, val loss↑ |
| RL maps | Success train maps cao, held-out maps đổ |
| RL gió / mass | Một mức gió đẹp, mức khác crash |
| Vision | mAP trên ảnh train domain cao, bay thật tối/nghiêng kém |
| Đa mục tiêu | Pareto đẹp trên train λ, vỡ khi đổi gió/layout |
| Công cụ | Chữa chủ yếu | Ghi chú UAV |
|---|---|---|
| Weight decay \(L_2\), dropout | Overfit tham số | Vẫn cần nếu mạng lớn |
| Early stopping | Overfit theo thời gian train | Stop theo held-out, không theo train return |
| Data augmentation ảnh | Gap cảm biến ảnh nhẹ | Không chữa mass/latency |
| Domain randomization | Domain gap động lực / cảm biến | Lịch rand có kiểm soát |
| Fine-tune thật / vài flight | Gap sim–real còn lại | Đắt nhưng trung thực |
| Invariance / chứng minh (PAC-Bayes…) | Claim generalize | Gần tinh thần nghiên cứu IRoM |
┌──────────── overfit cổ điển ────────────┐
dữ liệu│ train ──► model phức ──► nhớ nhiễu │
└───────────────┬─────────────────────────┘
│ regularization / early stop
▼
model trên P_train ổn
│
★ vẫn có thể gãy nếu P_test ≠ P_train
│
┌──────────── domain gap ─────────────────┐
│ sim↔real · gió · mass · latency · ánh sáng │
└───────────────┬─────────────────────────┘
│ domain rand + fine-tune + held-out
▼
claim hẹp, metric tách train/test
"""
Demo Lec21 (toy overfitting):
Hàm thật y = sin(x); fit đa thức trên ít điểm nhiễu.
So sánh lỗi train vs lỗi test — bậc cao → train tốt, test xấu.
Thêm: cùng bậc 3, test dịch phân phối → domain gap ≠ overfit thêm.
"""
import numpy as np
rng = np.random.default_rng(0)
x_train = np.linspace(0, 2 * np.pi, 6)
y_train = np.sin(x_train) + 0.35 * rng.normal(size=6)
x_test = np.linspace(0, 2 * np.pi, 200)
y_test = np.sin(x_test)
def fit_and_errors(deg):
coef = np.polyfit(x_train, y_train, deg)
pred_tr = np.polyval(coef, x_train)
pred_te = np.polyval(coef, x_test)
mse_tr = float(np.mean((pred_tr - y_train) ** 2))
mse_te = float(np.mean((pred_te - y_test) ** 2))
return mse_tr, mse_te
print(f"{'bậc':>4} {'MSE_train':>10} {'MSE_test':>10} ghi chú")
for deg in (1, 3, 5):
tr, te = fit_and_errors(deg)
tag = "underfit" if deg == 1 else ("★ overfit" if deg == 5 else "vừa")
print(f"{deg:>4} {tr:10.4f} {te:10.4f} {tag}")
# Minh họa domain gap ≠ overfit: cùng bậc 3, test dịch phân phối
coef3 = np.polyfit(x_train, y_train, 3)
x_shift = x_test + 0.8 # "domain" khác: hỗ trợ lệch
y_shift = np.sin(x_shift)
mse_shift = float(np.mean((np.polyval(coef3, x_shift) - y_shift) ** 2))
_, mse_in = fit_and_errors(3)
print("MSE test in-domain (bậc 3):", round(mse_in, 4))
print("MSE test shifted-domain: ", round(mse_shift, 4))
print("→ Shift domain làm lỗi tăng dù không 'over-fit thêm' trên train.")
🧪 Kỳ vọng demo:
- Bậc 1: train và test đều khá cao (underfit).
- Bậc 3: cân bằng hơn.
- Bậc 5 (ít điểm + nhiễu):MSE_traingần 0,MSE_testtăng rõ (overfit).
-shifted-domainlỗi tăng so với in-domain — tinh thần domain gap khác việc thuộc lòng điểm train.
| Axis held-out | Ví dụ mức test |
|---|---|
| Map / layout cột / hàng chè | Layout chưa thấy khi train |
| Gió | \(\|w\|\) lớn hơn dải train |
| Mass / pin | ±10–20% |
| Vision | Ánh sáng / blur / độ cao khác (GSD đổi — Lec 17) |
| Trọng số đa mục tiêu | λ năng lượng / phủ khác lúc train |
| ✅ Nên | ❌ Không nên | |
|---|---|---|
| Early stop + val | Mọi train dài | Stop theo train return đẹp |
| Domain randomization | Sim→điều kiện đa dạng | Rand quá mạnh → task không học được |
| Aug ảnh | Gap外观 nhẹ | Tưởng chữa được gió / mass |
| Claim paper | Tách overfit vs gap; mean±std nhiều seed | “Generalize” khi chỉ 1 map train=test |
| Nghĩa năng lượng / gió / phủ | Held-out trên từng trục đa mục tiêu | Chỉ tối ưu một trục trên train rồi im |
⚡ Nhớ một câu: Train đẹp chưa đủ — overfit là thuộc lòng đề cũ; domain gap là thi sang trường khác.
🔗 Sang bài sau mang theo: Khi obs là ảnh, kiến trúc mặc định không phải MLP phẳng — Lec 22 về CNN và receptive field.
Trước: Lec20 — SGD · Sau: Lec22 — CNN