Flow Matching

This is what pi0 uses.

Flow matching is a training method used to learn a mapping from a source distribution to a target distribution by approximating the underlying vector field.

  • Source: meta guide

The paper:

Resources

Flow matching vs. Flow-Based Model?

Flow-based models care about exact probabilities. Flow matching cares about how to move from one distribution to another.

Flow Matching bypasses the need for computing the log-determinant Jacobian or training via score-matching or log-likelihood.

Instead, it trains the flow function to match a target vector field that would push a sample from the base distribution to the target distribution over time.

This makes training more stable.

Flow matching is an alternative way to train CNFs, where you learn the dynamics directly by matching flows instead of optimizing Log Likelihood.

See pi0 for equation of flow matching in context of robotics.

I think the above diagram is the easiest to way to visualize in 1D what’s happening. Imagine you are doing matching to map from one gaussian to the other gaussian. You end up with these curved shapes. It’s very unlikely that you go from one outlier to the other outlier (outlier to mean and mean to outlier are more common), so you’ll never learn those velocity fields.

Now, think about a multi-modal flow matching. Intuitively, you cannot do this.