Adjoint Guidance Flow: Amortized Critic Guidance for VLA Policies
Organizations: KAIST · SKKU · GIST
Abstract
Flow-based Vision-Language-Action (VLA) policies are typically trained by behavior cloning and thus do not explicitly optimize long-term task return. Critic guidance steers generation toward higher-value actions, but existing methods differentiate the critic through a one-step surrogate of the sampler and back-propagate a critic ensemble at every flow step. In contrast, here we propose Adjoint Guidance Flow (AGF), which amortizes trajectory-aware critic guidance into a lightweight guidance network while preserving the pretrained VLA policy. Specifically, we formulate critic-guided flow generation as a deterministic optimal control problem, whose optimal guidance is a costate that carries the terminal critic gradient back through the remaining flow, and regress the guidance network onto this costate while keeping both the VLA and critic frozen. This design provides favorable memory and throughput scaling during training, and inference needs one guidance-network forward pass per step, without the critic ensemble, back-propagation, or adjoint computation. Across LIBERO, RoboCasa, and LIBERO-Pro, AGF consistently improves pretrained VLAs, remains competitive with critic-guidance and policy-fine-tuning baselines, and is the most robust method when a single guidance strength is deployed across tasks. Compared with QGF, AGF runs faster per guidance step with fewer parameters, with comparable and even better performance, showing that critic guidance can be trajectory-aware and lightweight.
Figures & tables
| Paradigm | Inference-time control | Guidance signal | Guidance computation at inference | Trained component |
| Pointwise guidance | ✓ | critic forward + backward | – | |
| Adjoint matching | none | policy | ||
| AGF (Ours) | ✓ | guidance forward | guidance net |
| Benchmark / policy | Suite | Calibration | Base | QAM | Q-BoN | QDPS | QGF | AGF (M=1) | AGF (M=4) |
| LIBERO / SmolVLA | Goal | Suite-level | 76.6 | 83.6 | 78.0 | 79.8 | 80.6 | 80.2 | 81.0 |
| Task-level | 82.4 | 82.2 | 81.4 | 83.2 | 83.2 | ||||
| Object | Suite-level | 89.6 | 94.6 | 90.6 | 89.4 | 93.6 | 92.4 | 93.4 | |
| Task-level | 92.0 | 91.0 | 95.6 | 95.0 | 95.4 | ||||
| Spatial | Suite-level | 71.6 | 71.4 | 71.2 | 68.0 | 73.0 | 72.2 | 74.6 | |
| Task-level | 75.4 | 73.2 | 77.6 | 74.8 | 75.6 |
| Base | QGF | AGF | |
| pnp-plate ( ) | 78.0 | 78.0 (4/4) | 88.0 (7/2) |
| open-pnp-close ( ) | 44.0 | 48.0 (5/4) | 76.0 (10/2) |
| Pooled ( ) | 66.7 | 68.0 (9/8) | 84.0 (17/4) |
| McNemar (pooled) | – | 1.000 | 0.007 |
| Overhead (ms/chunk) | – | 31.2 | 11.2 |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Setting | Chunk length | Executed steps | Critic/guidance horizon |
| SmolVLA + LIBERO | 50 | 10 | 10 |
| + RoboCasa | 50 | 50 | 50 |
| MolmoAct2 + LIBERO-Pro | 10 | 10 | 10 |
| MolmoAct2 + real robot † | 30 | 15 (async) | 29 |
| Task | Episodes | Frames | Avg. Length (s) |
| pnp-plate † | 106 | 47,002 | 14.8 |
| pnp-box | 108 | 47,616 | 14.7 |
| open-pnp-close † | 108 | 91,614 | 28.3 |
| open-place | 102 | 82,313 | 26.9 |
| Overall | 424 | 268,545 | 21.2 |
| Calibration | Method | Clean | Position | Object | Semantic | Environment | Avg. |
| Suite-level | Pretrained VLA | 97.2 | 23.0 | 83.5 | 97.2 | 74.0 | 75.0 |
| Q-BoN ( ) | 8.2 | 1.2 | 2.0 | 6.5 | 3.8 | 4.3 | |
| QDPS | 97.5 | 24.0 | 84.0 | 98.2 | 76.0 | 76.0 | |
| QGF | 97.2 | 24.2 | 85.2 | 98.0 | 75.8 | 76.1 | |
| AGF ( ) | 97.0 | 24.8 | 84.8 | 97.5 | 75.8 | 76.0 | |
| AGF ( ) | 98.0 | 25.8 | 84.0 | 97.8 | 75.2 | 76.2 |
| Suite | 4 | 8 | 16 | |
| Goal | Success rate | 10.4 | 2.0 | 0.6 |
| 0.224 | 0.344 | 0.446 | ||
| Object | Success rate | 1.0 | 0.0 | 0.0 |
| 0.218 | 0.309 | 0.359 | ||
| Spatial | Success rate | 5.8 | 1.2 | 0.2 |
| LIBERO (SmolVLA) | RoboCasa ( ) | LIBERO-Pro (MolmoAct2) | ||||||||
| Calibration | Method | Goal | Object | Spatial | LIBERO-10 | Atomic | Goal | Object | Spatial | LIBERO-10 |
| Task-level | QGF | 81.4 | 95.6 | 77.6 | 39.2 | 49.6 | 77.4 | 85.8 | 77.0 | 69.4 |
| AGF | 83.2 | 95.4 | 75.6 | 42.0 | 49.4 | 77.8 | 84.6 | 79.0 | 68.8 | |
| Suite-level | QGF | 80.6 | 93.6 | 73.0 | 36.0 | 46.3 | 76.0 | 84.6 | 76.0 | 67.8 |
| AGF | 81.0 | 93.4 | 74.6 | 36.8 | 46.6 | 76.4 | 83.8 | 77.4 | 67.0 | |
| LOTO | QGF | 80.6 | 91.8 | 69.6 | 31.8 | 46.3 | 74.8 | 84.6 | 76.0 | 67.8 |
| Comparison | Suite | SR | McNemar | 95% CI |
| LIBERO (SmolVLA) | ||||
| Base vs. AGF | Goal | |||
| Object | ||||
| Spatial | ||||
| LIBERO-10 | ||||
| Pooled | ||||
| LIBERO (SmolVLA) | RoboCasa ( ) | LIBERO-Pro (MolmoAct2) | |||||||
| Method | Goal | Object | Spatial | LIBERO-10 | Atomic | Goal | Object | Spatial | LIBERO-10 |
| QDPS | 4.0 | 0.25 | 4.0 | 1.0 | 4.0 | 2.0 | 1.0 | 2.0 | 1.0 |
| QGF | 4.0 | 1.0 | 2.0 | 1.0 | 0.25 | 2.0 | 0.5 | 0.25 | 0.25 |
| Q-BoN ( ) | 8 | 8 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
| AGF ( ) | 4.0 | 2.0 | 2.0 | 2.0 | 2.0 | 1.0 | 2.0 | 2.0 | 0.5 |
| AGF ( ) | 4.0 | 2.0 | 4.0 | 4.0 | 4.0 | 2.0 | 4.0 | 1.0 | 2.0 |
| Subtask | Base | QGF | AGF |
| Open the box | 15/25 | 18/25 | 25/25 |
| Place the ball inside | 12/25 | 15/25 | 21/25 |
| Close the box | 17/25 | 14/25 | 20/25 |
| All three (task success) | 11/25 | 12/25 | 19/25 |