Hãy tưởng tượng bạn đang xem video từ camera của robot. Robot đang cầm một chiếc bánh mì. Câu hỏi: bước tiếp theo nó sẽ làm gì?
Nếu bạn chỉ nhìn khung hình đó, bạn không thể trả lời chắc chắn. Robot có thể đang trong quá trình đặt bánh lên chảo để nướng, hoặc đang trả bánh về đĩa sau khi hoàn thành công đoạn khác. Cả hai tình huống trông y hệt nhau trong ảnh tĩnh — nhưng action tiếp theo lại hoàn toàn khác nhau.
Đây chính xác là vấn đề mà các VLA (Vision-Language-Action) model hiện tại gặp phải, và đó là lý do nhóm nghiên cứu từ Huazhong University of Science and Technology, Zhongguancun Academy, và nhiều đơn vị khác đã phát triển IntentVLA — công bố tại arXiv (2605.14712).
Vấn Đề Gốc Rễ: Observation Aliasing
Khi ảnh hiện tại không đủ thông tin
Trong imitation learning cho robot, chúng ta dạy robot bằng cách thu thập các bản demo từ con người, rồi huấn luyện policy để bắt chước. Mỗi demo gồm chuỗi (observation, action). Đến lúc inference, policy nhận observation hiện tại và sinh ra action tiếp theo.
Vấn đề nảy sinh khi dữ liệu training có tính multimodal: cùng một cảnh quan sát o_t có thể dẫn đến những action chunk khác nhau, tùy thuộc vào ý định ngắn hạn (short-horizon intent) của người demo.
Trong toán học, các policy frame-conditioned hiện tại mô hình hóa:
p(τ_t | o_t, ℓ)
Trong đó τ_t là action chunk, o_t là observation hiện tại, ℓ là language instruction. Policy này bỏ qua hoàn toàn lịch sử — nó chỉ nhìn vào một khung hình và đưa ra quyết định.
Kết quả là, với những tình huống như robot cầm bánh mì, policy có thể "tung đồng xu" giữa hai intent: đặt lên chảo hay trả về đĩa. Tệ hơn, mỗi lần replanning (thường mỗi vài giây), policy lại tung đồng xu mới — đôi khi chọn intent này, đôi khi chọn intent kia. Robot trở nên giật cục và thiếu nhất quán.
Nhóm tác giả gọi hiện tượng này là observation aliasing: hai episode khác nhau (với intent khác nhau) dẫn đến cùng một observation, nhưng action đúng lại khác nhau.
Bằng chứng định lượng
Để chứng minh vấn đề tồn tại nghiêm trọng, nhóm tác giả thực hiện một phân tích đơn giản nhưng sắc bén: với mỗi frame trong AliasBench, họ dùng Qwen3-VL-8B trích xuất visual embedding, rồi tìm 5 nearest neighbors trong embedding space.
Kết quả: 49,7% trong số top-5 neighbors thuộc về intent khác — tức là gần một nửa các frame "trông giống nhau" thực ra đòi hỏi action hoàn toàn khác. Khoảng cách cosine giữa các nhóm intent gần như bằng không (cách nhau chưa đến 3×10⁻³).
Điều này có nghĩa là model visual-language tốt nhất hiện tại cũng không thể phân biệt hai intent chỉ từ ảnh hiện tại. Lịch sử quan sát là thông tin không thể thiếu.
Hình 1: Cùng một observation (robot cầm bánh mì), nhưng context gần đây tiết lộ hai intent khác nhau — đặt lên chảo hay trả về đĩa. Nguồn: IntentVLA paper, arXiv 2605.14712
AliasBench: Benchmark Đầu Tiên Đo Lường Observation Aliasing
Một đóng góp quan trọng của paper là AliasBench — bộ đánh giá 12 task được thiết kế đặc biệt để cô lập và đo lường vấn đề observation aliasing.
AliasBench chạy trên môi trường RoboTwin2 và chia 12 task thành 4 nhóm:
Nhóm 1: Back-and-Forth Ambiguity (4 task)
Robot thực hiện chuỗi hành động có tính lặp lại — đi đến vị trí A, trở về B, rồi lại đến A... Ở một số điểm trong chuỗi, robot có cùng trạng thái vật lý nhưng phase của task khác nhau.
- Move Block Out and Back (900 bước tối đa)
- Cook Bread and Plate It (1100 bước)
- Use Stapler and Return It (900 bước)
- Store Shoe and Take It Back (900 bước)
Nhóm 2: Crossing-Path Ambiguity (3 task)
Robot vận chuyển vật từ nhiều nguồn khác nhau đến nhiều đích khác nhau. Giữa chừng, hai path giao nhau — robot ở giữa đường có cùng observation nhưng action tiếp theo phụ thuộc vào nó xuất phát từ đâu.
- Move Block to the Opposite Grid (500 bước)
- Move Block to the Other Grid (500 bước)
- Move Phone Between Stand and Pad (700 bước)
Nhóm 3: Bimanual Ambiguity (2 task)
Hai tay robot phối hợp chuyền vật. Ở điểm handoff (chuyển từ tay này sang tay kia), trạng thái vật lý của vật là như nhau nhưng hướng chuyền lại quyết định tay nào tiếp nhận tiếp theo.
- Hand Over Roller (900 bước)
- Hand Over Pill Bottle (900 bước)
Nhóm 4: Multi-Goal Ambiguity (3 task)
Nhiều mục tiêu tồn tại đồng thời. Một tín hiệu thoáng qua (ví dụ: đèn nhấp nháy, nhãn vừa đọc) xác định mục tiêu đúng — nhưng tín hiệu đó biến mất trước khi robot bắt đầu hành động.
- Pick Flashed Blocks in Order (1500 bước)
- Pick Flashed Cans in Order (1200 bước)
- Inspect Label and Place Block (700 bước)

Kiến Trúc IntentVLA: Bộ Nhớ Nhỏ Gọn, Hiệu Quả Lớn
IntentVLA giải quyết vấn đề bằng cách bổ sung một nhánh history encoder song song với backbone VLA hiện tại, thay vì phải retrain từ đầu hay nhét thô 16 frame vào context.
Backbone hiện tại: Qwen3-VL 4B
Frame hiện tại và language instruction đi qua Qwen3-VL 4B — một model vision-language mạnh, xử lý bình thường như VLA tiêu chuẩn. Output là context token F_t ∈ ℝ^(N×d) biểu diễn "trạng thái hiện tại".
History Encoder: VGGT-1B Frozen
Thay vì nhét 16 frame thô vào context (tốn quá nhiều bộ nhớ và slow), IntentVLA dùng VGGT-1B — một model được pretrain để hiểu cấu trúc hình học 3D của cảnh quan sát — để mã hóa 16 frame gần nhất.
Điểm thú vị là không phải toàn bộ token của VGGT được giữ lại. Với mỗi frame, chỉ giữ:
- Camera token: mã hóa thông tin về góc nhìn/vị trí camera
- 4 Register tokens: nắm bắt quan hệ hình học xuyên frame, cấu trúc tổng thể của scene
Đây là thiết kế tinh tế: thay vì dùng tất cả patch tokens (quá nhiều, quá dư thừa), nhóm tác giả chọn đúng những token mang thông tin về sự thay đổi giữa các frame — chính xác là thứ cần thiết để phân biệt intent.
VGGT được giữ nguyên (frozen) — không fine-tune — để tận dụng khả năng hiểu hình học đã được pretrain.
Gated Cross-Attention Fusion
History tokens từ VGGT được chiếu (project) thành Ũ_t ∈ ℝ^(M×d), sau đó fuse với current context thông qua gated cross-attention:
F'_t = F_t + σ(α) · MHA(Q=LN(F_t), K=Ũ_t, V=Ũ_t)
Trong đó:
αlà scalar gate có thể học — học cách cân bằng giữa thông tin hiện tại và lịch sửMHAlà multi-head attention với query từ frame hiện tại, key/value từ lịch sửLNlà layer normalization
Cơ chế này cho phép context hiện tại hỏi lịch sử: "Gần đây robot đã làm gì? Nó đang ở phase nào?"
Intent Token và Action Head
Song song với fusion, VGGT cũng xuất ra một vector tổng hợp ē_t đại diện toàn bộ lịch sử 16 frame. Vector này được chiếu thành history evidence token e_t^tok ∈ ℝ^(1×d) và append vào cuối context:
C_t = [F'_t; e_t^tok]
C_t chính là short-horizon intent representation — một biểu diễn nhỏ gọn nhưng giàu thông tin về "robot đang ở đâu trong task".
Cuối cùng, C_t conditioning một DiT-based flow-matching head để sinh ra action chunk:
τ_t = (a_t, a_{t+1}, ..., a_{t+H-1})
Training dùng conditional flow-matching loss — một phương pháp generative hiện đại, ổn định hơn diffusion, nhanh hơn khi inference:
L_flow = E[||V̂_θ(X_s, s | C_t) - (τ_t - ε)||²]
Huấn Luyện: Cần Gì Để Reproduce?
Datasets
IntentVLA được huấn luyện và đánh giá trên:
- AliasBench: 100 demo mỗi task (novel dataset từ nhóm tác giả)
- SimplerEnv: Subset của BridgeDataV2 từ Open X-Embodiment
- LIBERO: 4 suite (Spatial, Object, Goal, Long)
- RoboCasa-GR1: Subset PhysicalAI Robotics-GR00T-X-Embodiment-Sim
Hyperparameters
| Tham số | Giá trị |
|---|---|
| Số bước training | 30,000 |
| GPU | 16 × NVIDIA H100 |
| Batch size per GPU | 16 |
| Optimizer | AdamW |
| Learning rate | 1×10⁻⁵ |
| LR schedule | Cosine annealing |
| Gradient clip | max norm 1.0 |
| Precision | BF16 |
| History window K | 16 frames (~0.53 giây ở 30 FPS) |
Cài Đặt AliasBench (Hiện Có Sẵn)
Hiện tại GitHub repo (ZGC-EmbodyAI/IntentVLA) đã release AliasBench task code. Code training và inference của model đang trên đường release.
Để chạy AliasBench với RoboTwin2:
# Clone IntentVLA repo
git clone https://github.com/ZGC-EmbodyAI/IntentVLA.git
# Cài đặt RoboTwin2 theo hướng dẫn của họ
# (xem: github.com/TeleVision-AI/RoboTwin2)
# Copy 3 thư mục benchmark vào RoboTwin checkout
cp -r IntentVLA/description/ path/to/RoboTwin2/description/
cp -r IntentVLA/envs/ path/to/RoboTwin2/envs/
cp -r IntentVLA/task_config/ path/to/RoboTwin2/task_config/
Khi code model release, inference sẽ dùng single H100 80GB:
# Inference thử nghiệm (khi code release)
python eval.py \
--model intentvla \
--benchmark alias_bench \
--history_len 16 \
--checkpoint path/to/intentvla_checkpoint
Kết Quả: Con Số Biết Nói
AliasBench — Thử Thách Chính
| Phương pháp | Back-Forth | Crossing | Bimanual | Multi-Goal | Trung bình |
|---|---|---|---|---|---|
| Qwen3-VL-GR00T (baseline) | 6.0% | 15.7% | 5.5% | 8.7% | 9.0% |
| +16 frame thô vào context | 31.8% | 47.3% | 6.0% | 18.7% | 28.1% |
| MemoryVLA | 13.3% | 22.7% | 4.0% | 16.7% | 14.9% |
| IntentVLA | 49.3% | 74.7% | 17.0% | 31.3% | 45.8% |
IntentVLA vượt baseline +36.8 điểm phần trăm. So với "16 frame thô" (baseline mạnh nhất thực tế, dù tốn gấp đôi bộ nhớ), vẫn cách biệt +17.7 điểm.
LIBERO: Ổn Định Mang Lại Lợi Thế
| Phương pháp | Spatial | Object | Goal | Long | Trung bình |
|---|---|---|---|---|---|
| OpenVLA-OFT | 97.6% | 98.4% | 97.9% | 94.5% | 97.1% |
| π0.5 | 98.8% | 98.2% | 98.0% | 92.4% | 96.9% |
| Qwen3-VL-GR00T | 97.8% | 98.8% | 97.4% | 92.0% | 96.5% |
| IntentVLA | 99.3% | 99.7% | 98.1% | 97.4% | 98.6% |
LIBERO-Long là benchmark đặc biệt quan trọng — task dài, nhiều phase, dễ bị aliasing. IntentVLA cải thiện +5.4 điểm ở đây.
SimplerEnv và RoboCasa
- SimplerEnv: IntentVLA 72.9% vs. baseline 65.3% (+7.6 điểm)
- RoboCasa-GR1 (24 task): IntentVLA 57.0% vs. baseline 47.8% (+9.2 điểm)
Độ Nhất Quán Giữa Các Chunk
Nhóm tác giả đo thêm Inter-Chunk Consistency (ICC-L2) — trung bình L2 distance giữa action cuối của chunk t và action đầu của chunk t+1. Số càng nhỏ = robot càng trơn tru, ít giật cục.
- Baseline (frame-only): ICC-L2 = 0.219
- IntentVLA: ICC-L2 = 0.181 (cải thiện 17.6%)
- Tail inconsistency (90th percentile): giảm 21.7%
Inference Efficiency: Nhanh Hơn, Nhẹ Hơn
Dù thêm history encoder, IntentVLA vẫn nhanh hơn phương án nhét frame thô vào context:
| Phương pháp | Throughput | Peak VRAM |
|---|---|---|
| 16 frame thô | 6.45 Hz | 20.13 GiB |
| IntentVLA | 7.53 Hz | 14.58 GiB |
Nhờ compact encoding, tiết kiệm 5.55 GiB VRAM — cho phép chạy inference trên single H100 80GB.
Thực Nghiệm Thực Tế: Dual-Arm Franka
Để chứng minh method hoạt động ngoài simulation, nhóm tác giả deploy IntentVLA lên robot Franka Research 3 hai tay để thực hiện task dọn snack: nhặt nhiều gói snack rải rác và đặt vào khu vực đích.
Task này đòi hỏi tracking context liên tục (đã nhặt cái nào, chưa nhặt cái nào) — điển hình của aliasing problem.

Kết quả sau 50 lần thử, budget 500 bước mỗi lần:
| Phương pháp | ≥1 snack | ≥2 snack | ≥3 snack | ≥4 snack | Kỳ vọng |
|---|---|---|---|---|---|
| Qwen3-VL-GR00T | 70% | 36% | 14% | 0% | 1.20 |
| π0.5 | 82% | 44% | 18% | 0% | 1.44 |
| MemoryVLA | 78% | 52% | 22% | 2% | 1.54 |
| IntentVLA | 86% | 62% | 32% | 6% | 1.86 |
IntentVLA nhặt trung bình 1.86 gói snack mỗi lần thử — so với 1.20–1.54 của các baseline. Đặc biệt, chỉ có IntentVLA đạt được tỉ lệ đặt được 4 snack (6%) — baseline cao nhất là 0%.
Phân Tích Ablation: Mỗi Thành Phần Đóng Góp Bao Nhiêu?
Để hiểu rõ từng phần kiến trúc đóng góp gì, nhóm tác giả thực hiện ablation trên SimplerEnv:
| Variant | Stack | Carrot | Spoon | Eggplant | Avg |
|---|---|---|---|---|---|
| Frame-only baseline | 18.8% | 59.4% | 83.0% | 100% | 65.3% |
| +VGGT frame hiện tại (không history) | 30.2% | 61.5% | 72.5% | 94.8% | 64.8% |
| History fusion, không intent token | 49.0% | 65.6% | 67.7% | 95.8% | 69.5% |
| Full IntentVLA | 54.2% | 66.7% | 70.8% | 100% | 72.9% |
Bài học từ ablation:
- Chỉ thêm VGGT cho frame hiện tại (không có history) không giúp ích đáng kể — vấn đề không phải encoder, mà là thiếu history.
- History fusion đã cải thiện đáng kể, nhưng intent token (compact summary) cộng thêm +3.4 điểm nữa.
- Cả hai thành phần đều cần thiết.
Lựa chọn K (số frame lịch sử):
| K (frames) | Thời gian | Avg (AliasBench) |
|---|---|---|
| 8 frames | ~0.27 giây | 39.9% |
| 16 frames | ~0.53 giây | 45.8% |
| 24 frames | ~0.80 giây | 43.7% |
16 frames (~nửa giây gần nhất) là điểm ngọt — đủ context nhưng không quá nhiều noise.
Điểm Yếu Và Giới Hạn Hiện Tại
Trung thực mà nói, IntentVLA vẫn còn một số điểm cần chú ý:
Bimanual ambiguity vẫn thấp: 17% cho nhóm này — phần lớn vì handoff dynamics phức tạp hơn nhiều so với crossing-path. Đây là hướng nghiên cứu tiếp theo.
Multi-goal ambiguity cần cải thiện: 31.3% — khi "tín hiệu" quan trọng (đèn nhấp nháy, nhãn) biến mất trước khi action bắt đầu, ngay cả 16 frame gần nhất đôi khi không đủ.
Code training chưa release: Hiện tại chỉ có AliasBench code. Nhóm tác giả hứa release sớm.
Phụ thuộc H100: Training 30K steps trên 16 H100 không phải ai cũng có. Research có thể reproduce nhưng startup khó scale trực tiếp.
Những Bài Học Đáng Nhớ
1. Partial observability là vấn đề cấu trúc, không phải lỗi implementation. Nếu bạn đang fine-tune VLA trên task dài, đa phase, và thấy robot "giật cục" hay "ngập ngừng" giữa chừng — có khả năng đây là aliasing, không phải lỗi dataset hay learning rate.
2. Compact representation thắng raw concatenation. Nhét 16 frame thô vào context tiêu tốn 20GB VRAM và inference chậm hơn — IntentVLA dùng ít bộ nhớ hơn mà kết quả tốt hơn. Bottleneck không phải lượng data mà là cách encode.
3. Geometric pre-training tổng quát hóa tốt. VGGT được pretrain để hiểu hình học 3D, không phải để làm robot. Nhưng khi frozen và dùng để encode history, nó tốt hơn V-JEPA 2 (video model chuyên biệt) tới 7.2 điểm. Pre-training tốt > domain-specific training với data nhỏ.
4. ICC-L2 là metric đáng đo. Nếu bạn đang phát triển robot manipulation, hãy thêm inter-chunk consistency vào evaluation suite. Accuracy tổng thể che giấu vấn đề giật cục — robot có thể succeed task nhưng với motion xấu, gây mài mòn cơ khí.
Kết Luận
IntentVLA giải quyết một vấn đề mà cộng đồng đã biết nhưng chưa có giải pháp hệ thống: VLA hiện tại bị mù với lịch sử gần. Giải pháp elegant của nhóm — frozen VGGT encoder + gated cross-attention + compact intent token — cải thiện đồng thời accuracy, stability, và efficiency.
Quan trọng hơn, paper này đặt nền móng cho một hướng research mới: thay vì chỉ cải thiện VLA backbone, hãy giải quyết cấu trúc dữ liệu. Multimodal demonstrations là thực tế không tránh khỏi khi thu thập dữ liệu từ con người — và observation aliasing là hệ quả tất yếu.
AliasBench sẽ trở thành benchmark chuẩn để đo lường khả năng giải quyết vấn đề này. Hãy theo dõi repo ZGC-EmbodyAI/IntentVLA để cập nhật code training khi release.
Tài liệu tham khảo:



