Modeling and Understanding Neural Weights of Humanoid Policies with Diffusion
Organizations: The authors are with the University of California, Berkeley.
Abstract
Recent advances in robot learning have driven rapid progress in humanoid control, enabling increasingly agile behaviors in the real world. However, humanoid control networks are typically obtained through conventional training procedures, while comparatively little attention has been given to directly modeling the distribution of their learned weights and generating functional networks in weight space. In this work, we investigate whether high-performing humanoid control networks can be generatively modeled directly through their weights. We adopt a latent diffusion framework that couples a linear autoencoder with a Diffusion Transformer. The autoencoder compresses actor network parameters into a compact latent space, and the Diffusion Transformer models the distribution of these latents. Trained on networks collected from reinforcement learning for the Unitree G1 robot, our approach generates deployable networks that perform various motions in the real world, including walking, dancing, and spin kick. Beyond generation, we further study the learned weight space to better understand the structure captured by these humanoid control networks. We identify a structural principle in the first-layer weights that consistently reflects the robot's kinematic prior. Notably, this kinematic prior emerges under both Reinforcement Learning (RL) and Imitation Learning (IL) training, suggesting that it is not specific to a particular optimization process but may instead reflect common knowledge associated with humanoid embodiment. Together, these results demonstrate the feasibility of generative modeling in humanoid network weight space, while providing initial insights into the information encoded by their learned weights. Additional results are available on our project website: https://humanoid-weight-diffusion.github.io/
Figures & tables
| Dataset | DiT (mean) | DiT (best 90%) | DiT (best) | |||||
| Motion | Succ | TE | Succ | TE | Succ | TE | Succ | TE |
| Walking | 1.000 | 0.161 | ||||||
| Dancing | 1.000 | 0.036 | ||||||
| Spin kick | 1.000 | 0.044 | ||||||
| Dataset, DiT-mean and DiT best 90% results are reported as mean std. DiT-best-90% is the mean over the best of the generated samples. DiT best (best of samples) corresponds to the per-metric optimum. Samples are ranked separately for each metric. TE denotes tracking error: MPKPE (m) for motion tracking, and mean linear velocity command error (m/s) for walking. For walking, the command includes step changes, so the tracking error also captures transient errors during command transitions. | ||||||||
| Motion | embedding=512 | embedding=768 | embedding=1024 | |||
| Prog | TE | Prog | TE | Prog | TE | |
| Walking | ||||||
| Dancing | ||||||
| Spin kick | ||||||
| All results are reported as mean std over diffusion samples. Prog is task progress in the range : for motion tracking, it is the fraction of reference motion frames completed; for walking, it denotes the fraction of the max episode duration (20 s) survived. TE denotes tracking error: MPKPE (m) for motion tracking, and mean linear velocity command error (m/s) for walking. | ||||||
| Walking | Dancing | Spin kick | |||||||
| Group | Succ | TE | Succ | TE | Succ | TE | |||
| Training | |||||||||
| Noise | |||||||||
| Noise | |||||||||
| Noise | |||||||||
| Noise, matched | |||||||||
| RL / IL | Walking | Dancing | Spin kick |
| Succ | 0.9994 / 0.9979 | 0.9973 / 0.9948 | 0.9972 / 0.9919 |
| TE | 0.1599 / 0.1609 | 0.0340 / 0.0348 | 0.0466 / 0.0478 |
| Setting | Value |
| Simulation | mjlab (MuJoCo) |
| Robot | Unitree G1 |
| Control mode | Velocity-command locomotion / Motion tracking |
| RL algorithm | PPO (RSL-RL) |
| Parallel environments | |
| Max iterations |
| Setting | Value | |
| Architecture | Type | Two-cluster linear MLP |
| Cluster input dims (Walking) | ||
| Cluster input dims (Dancing, Spin kick) | ||
| Input dimension (Walking) | ||
| Input dimension (Dancing, Spin kick) | ||
| Per-cluster latent dim |
| Motion | Config | MSE |
| Walking | 2-cluster | |
| 1-cluster (n=2048) | ||
| Spin kick | 2-cluster | |
| 1-cluster (n=2048) | ||
| Dancing | 2-cluster | |
| 1-cluster (n=2048) |
| Component | Value | |
| Architecture | Input dimension | |
| Sequence length | ||
| Patch size | ||
| Embedding dimension | ||
| Transformer depth | ||
| Attention heads |
| Buffer | Samples | Obs | |
| Walking | 1,024,000 | 0 99 | |
| Dancing | 913,408 | 154 | |
| Spin kick | 950,272 | 154 |
| Setting | Value |
| Objective | MSE |
| Optimizer | AdamW |
| Learning rate | (cosine) |
| Weight decay | |
| Batch size | 4096 |
| Epochs | 300 |
| Term | Randomized quantity | Walking | Dancing | Sampling |
| Foot friction | Sliding friction coeff. of foot geoms | per env | ||
| Torso CoM offset | CoM position of torso link, per axis | cm | cm | per env, per axis |
| Encoder bias | Constant offset on measured joint pos. | rad | rad | per env, per joint |