VerifiedarXiv:2512.0991424 min
Generative models · Molecular sampling

FALCON: Few-step Accurate Likelihoods for Continuous Flows

Train a few-step flow map to stay invertible, and its likelihoods become cheap and accurate enough to reweight molecular samples to the Boltzmann distribution.

A Boltzmann generator samples molecular shapes from a neural network and corrects them with importance weights, which need the network's exact probability for every sample. FALCON gets that probability from 4 to 16 network steps instead of the hundreds an ODE solver takes.

Explaining the paperFALCON: Few-step Accurate Likelihoods for Continuous FlowsRehman, Akhound-Sadegh, Gazizov, Bengio, Tong · Mila · AITHYRA · Harvard · arXiv 2025, ICLR 2026 · arXiv:2512.09914 ↗

The paper combines three existing pieces: importance sampling, which needs exact densities; flow maps, which generate in a few large jumps; and a cycle loss, which keeps those jumps invertible so the densities can be computed. This page works each one in a one-dimensional toy you can drive, derives the training target (correcting a sign in the paper's Eq. 10), and reads the peptide results, including the rows FALCON loses.

Sampling molecules from the Boltzmann distribution

A molecule at a fixed temperature does not sit in one shape. Its atoms jiggle and its backbone rotates between a handful of stable shapes, and statistical physics says how often each shape occurs. If x∈Rdx \in \mathbb{R}^d lists every atom's coordinates and E(x)\mathcal{E}(x) is the potential energy in units of kBTk_BT, the probability density of finding the molecule at xx is the Boltzmann distribution

ptarget(x)∝exp⁡(−E(x)),Z=∫Rdexp⁡(−E(x)) dxp_{\text{target}}(x) \propto \exp(-\mathcal{E}(x)), \qquad \mathcal{Z} = \int_{\mathbb{R}^d} \exp(-\mathcal{E}(x))\,dxptarget(x)∝exp⁡(−E(x)),Z=∫Rdexp⁡(−E(x)) dx\begin{gathered} p_{\text{target}}(x) \propto \exp(-\mathcal{E}(x)), \\ \mathcal{Z} = \int_{\mathbb{R}^d} \exp(-\mathcal{E}(x))\,dx \end{gathered}
(1)

Free energies and heat capacities are averages under this distribution, so a cheap way to draw independent samples from it would speed up drug design and materials work. The energy is cheap to evaluate at any xx, since a force field is a sum of bond, angle and electrostatic terms. The normalizer Z\mathcal{Z} is an integral over all of Rd\mathbb{R}^d and is never computed.

The standard tool is molecular dynamics: integrate Newton's equations with femtosecond time steps and record where the molecule goes. Stable shapes are separated by energy barriers, and a trajectory can spend microseconds in one basin (the low-energy region around one stable shape) before it crosses to the next. The samples come out correlated and the rare basins are visited too seldom. The paper's datasets show this: they come from single 1 µs simulations, and the training split is the first 10510^5 frames after warm-up, so it over- or under-samples some basins. On tri-alanine the training set misses one backbone conformation entirely.

The four test molecules are short alanine peptides: alanine dipeptide (22 atoms, so d=66d = 66), tri-alanine, alanine tetrapeptide and hexa-alanine. Their slow coordinates are the backbone dihedral angles ϕ\phi and ψ\psi, two per residue, and a Ramachandran plot of those angles shows the basins.

How a Boltzmann generator corrects its samples

A Boltzmann generator (Noé et al., 2019) trains a generative model on the biased simulation data, draws KK independent samples from it, and fixes the bias with importance sampling. Each sample gets a weight equal to the target density over the model density, and any average under the target is estimated as a weighted average:

w(x)=exp⁡(−E(x))p1θ(x),Eptarget[o(x)]≈∑i=1Kw(xi) o(xi)∑i=1Kw(xi)w(x) = \frac{\exp(-\mathcal{E}(x))}{p_1^\theta(x)}, \qquad \mathbb{E}_{p_{\text{target}}}[o(x)] \approx \frac{\sum_{i=1}^{K} w(x^i)\,o(x^i)}{\sum_{i=1}^{K} w(x^i)}w(x)=exp⁡(−E(x))p1θ(x),Eptarget[o(x)]≈∑i=1Kw(xi) o(xi)∑i=1Kw(xi)\begin{gathered} w(x) = \frac{\exp(-\mathcal{E}(x))}{p_1^\theta(x)}, \\ \mathbb{E}_{p_{\text{target}}}[o(x)] \approx \frac{\sum_{i=1}^{K} w(x^i)\,o(x^i)}{\sum_{i=1}^{K} w(x^i)} \end{gathered}
(2)

In (2), p1θp_1^\theta is the density of the trained model (the subscript 1 marks the data end of the flow, introduced below) and oo is any observable, such as an indicator of one basin. Dividing by the sum of the weights is the self-normalized part: the unknown Z\mathcal{Z} multiplies every weight equally and cancels. The estimate converges to the true average as KK grows, whatever the model got wrong, provided the model puts some probability wherever the target does. More samples buy more accuracy without retraining, which the paper calls inference-time scaling.

Take three samples whose log-weights −E(x)−log⁡p1θ(x)-\mathcal{E}(x) - \log p_1^\theta(x) come out as 2.0, 0.0 and −1.0. The weights are e2=7.39e^{2} = 7.39, 1 and 0.37, which normalize to 0.844, 0.114 and 0.042. The first sample sits in a basin the model under-samples, so it counts for most of the estimate. The effective sample size (Kish, 1957), normalized by the sample count as in the paper's Appendix E,

ESS=1N (∑i=1Nwi)2∑i=1Nwi2\mathrm{ESS} = \frac{1}{N}\,\frac{\left(\sum_{i=1}^{N} w_i\right)^2}{\sum_{i=1}^{N} w_i^2}
(22)

is 0.459 here: the three weighted samples carry about as much information as 1.4 unweighted ones. ESS is 1 when the model equals the target and falls toward 1/N1/N when one sample takes all the weight.

Now suppose the model reports a log-density for the first sample that is 0.5 too high. Its log-weight drops to 1.5 and the normalized weights become 0.766, 0.171 and 0.063, so the estimate of that basin's population moves by 8 percentage points because of one wrong number. An error of one nat (one unit of natural logarithm) in log⁡p1θ\log p_1^\theta is a factor of e≈2.72e \approx 2.72 in that sample's weight.

Figure 1 runs the same estimator on 2,000 samples from a double well. The target puts 25% of its mass in the right well and the proposal puts 50% there. With the error slider at zero, the reweighted bars match the amber curve. Then add error two ways: random noise per sample, and an error that grows with xx.

Figure 1 · importance reweighting needs the model's own density

right-well share: raw 0.512 · reweighted 0.251 · true 0.250
ESS (Kish, Eq. 22): 0.715 = about 1431 of 2000 samples doing the work

The amber curve is the target. Gray bars are raw samples from a proposal that over-samples the right well; teal bars are the same samples after weighting by target over reported density. The slider adds error to the reported log-density. Random per-sample error leaves the reweighted share near 0.25 but drags ESS down; error that grows with xx moves the share away from 0.25, and redrawing the samples does not bring it back.

Random error inflates the variance of the weights, so ESS falls and more samples are needed for the same precision. Systematic error biases the estimate, and no number of samples removes it. ESS does not detect it either: at 2 nats of error that grows with xx, Figure 1 reports an ESS of 0.353 while the reweighted share of the right well is 0.011 instead of 0.250, because ESS measures how evenly the weights are spread, not whether they are correct. The paper reports that the usual shortcuts for continuous flows produce both kinds: the stochastic trace estimator adds noise, and fixed-step integrators “systematically overestimate likelihood” (Appendix D.2.1).

Why likelihoods from continuous flows are expensive

A generator usable here must give samples and their exact densities. Normalizing flows do this through the change of variables formula. If a sample is made by pushing base noise x0∼p0x_0 \sim p_0 through an invertible, differentiable map x1=X(x0)x_1 = X(x_0), the density at the output is the input density divided by how much the map stretches volume there:

log⁡p1(x1)=log⁡p0(x0)−log⁡∣det⁡∂X∂x0(x0)∣\log p_1(x_1) = \log p_0(x_0) - \log\left|\det \frac{\partial X}{\partial x_0}(x_0)\right|

The Jacobian ∂X/∂x0\partial X / \partial x_0 is a d×dd \times d matrix. Computing it with automatic differentiation costs about dd network passes (one per input or output coordinate, or one batched pass that does the same work), and its determinant costs O(d3)O(d^3), which the paper reports is small next to the passes at these sizes. Classic discrete flows, such as the TarFlow model inside the SBG baseline, restrict the architecture so the determinant is cheap. That makes them fast to sample but, per the paper, slow and unstable to train by maximum likelihood.

Recent Boltzmann generators use continuous normalizing flows (CNFs) instead. A CNF defines the map as the solution of an ODE dxs/ds=vθ(xs,s)dx_s/ds = v_\theta(x_s, s) from s=0s = 0 (noise) to s=1s = 1 (data), as in neural ODEs. The velocity network vθv_\theta can be any architecture, and it can be trained without simulating the ODE by flow matching: draw noise x0x_0 and a data point x1x_1, form xs=sx1+(1−s)x0x_s = s x_1 + (1 - s)x_0, and regress

Lcfm=Ex0,x1,s w(s) ∥vθ(xs,s)−(x1−x0)∥2\mathcal{L}_{\text{cfm}} = \mathbb{E}_{x_0, x_1, s}\, w(s)\,\big\| v_\theta(x_s, s) - (x_1 - x_0) \big\|^2

The density of a CNF sample comes from the instantaneous change of variables (Chen et al., 2018): along the trajectory, log⁡ps\log p_s changes at the rate −tr⁡(∂vθ/∂x)-\operatorname{tr}(\partial v_\theta/\partial x), so the log-density is integrated alongside the sample. Written in integrated form, the paper's Eq. (3) is

log⁡p1θ(x1)=log⁡p0(x0)−∫01tr⁡ ⁣(∂vθ∂x(xτ,τ))dτ\log p_1^\theta(x_1) = \log p_0(x_0) - \int_0^1 \operatorname{tr}\!\left(\frac{\partial v_\theta}{\partial x}(x_\tau, \tau)\right) d\taulog⁡p1θ(x1)=log⁡p0(x0)−∫01tr⁡ ⁣(∂vθ∂x(xτ,τ))dτ\begin{aligned} \log p_1^\theta(x_1) &= \log p_0(x_0) \\ &\quad - \int_0^1 \operatorname{tr}\!\left(\frac{\partial v_\theta}{\partial x}(x_\tau, \tau)\right) d\tau \end{aligned}
(3)

The exact trace needs the diagonal of a d×dd \times d Jacobian, about dd passes at every solver step; Hutchinson's estimator replaces it with one random projection, but the paper finds the resulting noise destabilizes the importance weights. The integral also needs many steps. Boltzmann generators use the adaptive Dormand–Prince 4(5) solver (Dopri5), which shrinks its step until an error estimate falls below a tolerance, here 10−510^{-5}, because fixed steps bias the log-density. In Table 5 the adaptive solver takes 200 to 265 function evaluations per sample. The two counts multiply: for alanine dipeptide that is 257 evaluations, each with a 66-column trace, on the order of 257×66≈17,000257 \times 66 \approx 17{,}000 network passes for one sample's likelihood. The paper also notes that the solver takes 2 to 3 times more steps when it integrates the log-density than when it only generates.

Flow maps: one network call per jump

A flow map learns the jumps instead of the velocity. For two times ss and tt, the exact flow map Xv(xs,s,t)X_v(x_s, s, t) sends a point at time ss to where the ODE trajectory through it is at time tt (Eq. 6). Dividing the displacement by the elapsed time gives the average velocity over the interval:

u(xs,s,t)=1t−s∫stv(xτ,τ) dτu(x_s, s, t) = \frac{1}{t - s}\int_s^t v(x_\tau, \tau)\,d\tau
(4)

The instantaneous velocity vv is the slope of the trajectory at one instant; uu is the slope of the chord from ss to tt. A network uθ(xs,s,t)u_\theta(x_s, s, t) that takes both times as inputs gives the discrete flow map

Xu(xs,s,t)=xs+(t−s) uθ(xs,s,t)X_u(x_s, s, t) = x_s + (t - s)\,u_\theta(x_s, s, t)
(7)

and sampling on any grid 0=t0<t1<⋯<tN=10 = t_0 < t_1 < \dots < t_N = 1 takes NN network calls. When t=st = s, the average velocity equals the instantaneous one, so the same network also serves as an ordinary flow-matching velocity.

Why not take NN large Euler steps with a flow-matching velocity? Because an Euler step moves along the tangent at the start of the interval, and trajectories curve. Even when every training pair is joined by a straight line, the velocity at a point averages over all the pairs passing through it, and the resulting trajectories bend. Figure 2 uses a one-dimensional toy where the velocity field is known exactly: noise N(0,1)\mathcal{N}(0, 1) at time 0, a mixture with 65% of its mass near −1.5 and 35% near +1.5 at time 1.

Figure 2 · Euler steps on v versus flow-map jumps

right-mode share 0.315 (target 0.350) · mean landing error 0.214
exact log-likelihood: 4 Jacobians, about 4 × d calls; at d = 66 (alanine dipeptide) that is 264

Faint lines are exact trajectories of the toy flow. Violet: Euler steps on the instantaneous velocity; teal: jumps of the exact flow map. The right edge compares where 400 samples land with the amber target. Drag N down to 1, where every Euler sample lands on the mixture mean, −0.45. The EDM grid packs steps near the data end.

At N=1N = 1, Euler collapses everything onto one point. At time 0 the noise carries no information about which data point it will become, so the velocity is the mean data point minus the current position, v(x,0)=xˉ1−xv(x, 0) = \bar{x}_1 - x, and one step of size 1 lands on xˉ1=−0.45\bar{x}_1 = -0.45 from every start. The Jacobian of that step is zero, so its density is infinite and no importance weight can be computed. The flow map lands on the correct trajectory at every NN in this toy, because its jumps are exact. A trained network's jumps are only approximately exact, which is why FALCON still uses 4 to 16 steps.

The likelihood of a flow-map sample is the discrete change of variables applied once per jump: NN Jacobians of size d×dd \times d, about N⋅dN \cdot d network passes in the paper's accounting (Appendix D.2.1), with no trace estimator and no solver tolerance. For alanine dipeptide at N=4N = 4 that is 4×66=2644 \times 66 = 264 passes, against the roughly 17,000 above. This shortcut has one condition, which the next two sections deal with: the formula is valid only if every jump is invertible.

How FALCON trains the flow map

Regressing uθu_\theta on its definition (4) would need the integral, meaning an ODE solve per training example. MeanFlow (Geng et al., 2025) avoids it with an identity that relates uu to vv and a derivative of uu, and FALCON uses the same loss with its own time convention. Multiply (4) by t−st - s:

(t−s) u(xs,s,t)=∫stv(xτ,τ) dτ(t - s)\,u(x_s, s, t) = \int_s^t v(x_\tau, \tau)\,d\tau

and move the start point ss along its trajectory, holding tt fixed. On the left, the product rule gives −u+(t−s) du/ds-u + (t - s)\,du/ds. On the right, moving the lower limit of an integral forward removes the integrand at that limit, giving −v(xs,s)-v(x_s, s). Setting the two equal and rearranging:

u(xs,s,t)=v(xs,s)+(t−s) duds,duds=∂u∂x v+∂u∂su(x_s, s, t) = v(x_s, s) + (t - s)\,\frac{du}{ds}, \qquad \frac{du}{ds} = \frac{\partial u}{\partial x}\,v + \frac{\partial u}{\partial s}u(xs,s,t)=v(xs,s)+(t−s) duds,duds=∂u∂x v+∂u∂s\begin{gathered} u(x_s, s, t) = v(x_s, s) + (t - s)\,\frac{du}{ds}, \\ \frac{du}{ds} = \frac{\partial u}{\partial x}\,v + \frac{\partial u}{\partial s} \end{gathered}

The derivative is total because xsx_s itself moves with velocity vv as ss changes. It equals a Jacobian-vector product (the derivative of the output along one chosen direction in input space) with tangent (v,1,0)(v, 1, 0) on the inputs (xs,s,t)(x_s, s, t), which forward-mode autodiff computes in one pass alongside uθu_\theta itself. Putting the network's own derivative into the right-hand side, and stopping its gradient (treating the target as a constant during backpropagation, written sg\mathrm{sg}), gives the loss (the paper's Eq. 10, with the sign corrected):

Lavg=Es,t,xs∥uθ(xs,s,t)−sg(v+(t−s)(∂xuθ v+∂suθ))∥2\mathcal{L}_{\text{avg}} = \mathbb{E}_{s,t,x_s}\Big\| u_\theta(x_s, s, t) - \mathrm{sg}\big(v + (t - s)(\partial_x u_\theta\, v + \partial_s u_\theta)\big) \Big\|^2Lavg=Es,t,xs∥uθ(xs,s,t)−sg(v+(t−s)(∂xuθ v+∂suθ))∥2\begin{aligned} \mathcal{L}_{\text{avg}} = \mathbb{E}_{s,t,x_s}\Big\| &u_\theta(x_s, s, t) \\ &- \mathrm{sg}\big(v + (t - s)(\partial_x u_\theta\, v + \partial_s u_\theta)\big) \Big\|^2 \end{aligned}
(10)

with v=x1−x0v = x_1 - x_0, the velocity of the straight line through the training pair, standing in for the marginal velocity exactly as in flow matching. The printed Eq. (10) and Algorithm 1 have a minus sign in front of (t−s)(t - s). That is MeanFlow's sign, and MeanFlow puts the network's position input at the upper limit of the interval, so it differentiates with respect to that limit. FALCON puts the position at the lower limit, which flips the sign. Figure 3 lets you check the plus sign on one trajectory of the toy, computing du/dsdu/ds by finite differences along the path.

Figure 3 · chord slope, tangent slope and the identity

tangent v = 0.036 · chord u = 1.575 · du/ds along the path = 3.079
v + (t − s)·du/ds = 1.575 (matches u) · v − (t − s)·du/ds, as printed in Eq. (10) = -1.504

One exact trajectory, starting at x0=0.6x_0 = 0.6. The violet dashed line is the tangent at ss (slope vv), the teal chord runs to tt (slope uu). The readout evaluates both signs of the identity. Set tt below ss for a backward jump, and bring the two together to see uu approach vv from either side.

At the default s=0.4s = 0.4, t=0.9t = 0.9, the trajectory is still near the middle and almost flat (v=0.036v = 0.036) but about to climb into the upper mode, so the chord slope is u=1.575u = 1.575. The derivative of uu along the path is 3.08, and 0.036+0.5×3.08=1.5750.036 + 0.5 \times 3.08 = 1.575 matches the chord. With the printed minus sign the target would be −1.504, pointing the network toward the wrong mode.

Two other choices complete the loss. First, the flow-matching term is folded in by sampling some fraction of pairs with s=ts = t, where the target reduces to vv; the paper does not state the fraction or the distribution of (s,t)(s, t). Second, FALCON-A replaces (10) with an additive loss (Appendix B): the jump from ss to tt should equal a jump to the midpoint followed by a jump from the midpoint, the SplitMeanFlow objective of Guo et al. (2025), which Appendix B equates with the progressive self-distillation loss of Boffi et al. (2025).

Why the flow map must be invertible

The exact flow map XvX_v is always invertible when vv is Lipschitz (it changes at a bounded rate in xx): two ODE trajectories cannot cross, so running the ODE backward undoes it (the Picard–Lindelöf theorem, in the paper's Appendix A). Proposition 1 says a perfectly trained uθu_\theta inherits this, since at the optimum Xu=XvX_u = X_v. A network partway through training has no such guarantee. Nothing in (10) stops two nearby inputs from being sent to the same output, or the map from folding back on itself.

If the map goes up, back down, then up again over some interval of inputs, every output in the corresponding range is reached from three inputs, and its true density is the sum of three terms p0(xj)/∣X′(xj)∣p_0(x_j)/|X'(x_j)|. The formula used at sampling time evaluates only the term for the input the sample actually came from. Where the map turns around, X′=0X' = 0 and that term goes to infinity. Figure 4 starts from the exact one-step map of the toy and adds a bump in the left mode.

Figure 4 · a folded map and the change of variables

no fold: X′(x) > 0 everywhere · formula off by >10% on 0 of 300 samples
smallest Linv any backward map can reach: 0

Left: a one-step map from noise xx to data yy. Right, on the same yy axis: the amber shape is where samples land; dots are the density the formula reports for 300 samples (teal when within 10% of the truth, violet when not). Past a≈0.4a \approx 0.4 the map folds (shaded band), the formula fails for the samples whose outputs land in the fold's range, and no backward map can bring the round-trip error Linv\mathcal{L}_{\text{inv}} (the cycle loss, Eq. (8) below) to zero.

If the map folds, no function of yy can return the right xx for all three preimages, so any backward map has a round-trip error, at least the variance of xx among the preimages of each yy (the bottom readout of Figure 4). If a backward map undoes the forward map exactly, the forward map is one-to-one on the data it is tested on. FALCON already has a backward map available at no extra cost: the same network called with the times swapped, Xu(⋅,t,s)X_u(\cdot, t, s). The cycle loss (8) and the full objective (9) are

Linv(θ)=Es,t,xs∥xs−Xu(Xu(xs,s,t),t,s)∥2\mathcal{L}_{\text{inv}}(\theta) = \mathbb{E}_{s,t,x_s}\big\| x_s - X_u(X_u(x_s, s, t), t, s) \big\|^2
(8)
L(θ)=Lcfm(θ)+λavgLavg(θ)+λrLinv(θ)\mathcal{L}(\theta) = \mathcal{L}_{\text{cfm}}(\theta) + \lambda_{\text{avg}}\mathcal{L}_{\text{avg}}(\theta) + \lambda_r\mathcal{L}_{\text{inv}}(\theta)
(9)

Proposition 2 says a smooth minimizer of (8) is invertible and satisfies the change of variables, whether or not it matches XvX_v. FALCON needs the map to be invertible; it does not need the map to be the true flow, because importance sampling corrects any proposal whose density it knows. The guarantee holds at zero loss, and only on the region the training points cover. The proof (Appendix A) is two lines: if Xu(⋅,t,s)X_u(\cdot, t, s) undoes Xu(⋅,s,t)X_u(\cdot, s, t) exactly, the latter has an inverse by definition.

The weight λr\lambda_r trades sample quality against invertibility. The paper sweeps λr∈{1,10,102,…,105}\lambda_r \in \{1, 10, 10^2, \dots, 10^5\} on alanine dipeptide (Fig. 6): weak regularization leaves the map poorly invertible and lowers ESS, strong regularization costs sample quality, and λr=10\lambda_r = 10 is used everywhere. Even then the round trip through the network is not exact: the forward-backward reconstruction error is on the order of 10−210^{-2} (Appendix F.2). To show that an inverse exists, the authors freeze a trained forward model, generate 2×1052 \times 10^5 noise-sample pairs from it, train a second network to map samples back to noise, and reach reconstruction errors within 10−410^{-4} after 1,000 epochs, which they compare to discrete flows that are invertible by construction.

Section 3 also parameterizes the network as uθ=sign⁡(t−s) hθu_\theta = \operatorname{sign}(t - s)\,h_\theta, on the stated grounds that uu tends to +v+v as t→st \to s from above and to −v-v from below. Under definition (4), both one-sided limits are +v+v, as Figure 3 shows when tt approaches ss from either side; it is the displacement (t−s)u(t - s)u that changes sign. With the sign factor, the learned hθh_\theta must jump at s=ts = t. The Provenance panel records this together with the sign in (10).

The gradient reaches the network through uu in the regression term and through both the forward and the backward call in the cycle term; only the target is detached. One training step for alanine dipeptide, with the corrected target:

# One FALCON training step (Algorithm 1, with the sign of u_tgt corrected).
# Alanine dipeptide has 22 atoms, so every x below has shape (B, 22, 3).
x1 = random_rotation(md_batch())         # data, centre of mass removed
x0 = randn_like(x1)
x0 = x0 - x0.mean(dim=1, keepdim=True)   # noise, also centred
s, t = sample_times()                    # a fraction of pairs have s == t
xs = s * x1 + (1 - s) * x0               # point on the straight path
v = x1 - x0                              # conditional velocity

# u and its total derivative along the path, one forward-mode pass
u, du_ds = jvp(u_net, (xs, s, t), (v, 1.0, 0.0))
u_tgt = v + (t - s) * du_ds              # paper prints "-"; see Provenance

xt_hat = xs + (t - s) * u                # forward jump s -> t
xs_hat = xt_hat + (s - t) * u_net(xt_hat, t, s)   # backward jump t -> s

loss = mse(u, stopgrad(u_tgt)) + lam_r * mse(xs, xs_hat)   # lam_r = 10
loss.backward()   # reaches u_net through u and through both jumps

Training uses AdamW with learning rate 5×10−45 \times 10^{-4}, weight decay 10−410^{-4}, a cosine schedule with a 5% warm-up, and an exponential moving average of the weights with decay 0.999 (Appendix D.1).

Sampling with likelihoods in N steps

Algorithm 2 runs the jumps and carries the log-density along. The Jacobian of one jump (7) is I+(t−s) ∂uθ/∂xI + (t - s)\,\partial u_\theta/\partial x, so each step subtracts one log-determinant:

log⁡pi=log⁡pi−1−log⁡∣det⁡(I+(ti−ti−1) ∂uθ∂x(xi−1,ti−1,ti))∣\log p_i = \log p_{i-1} - \log\Big|\det\Big(I + (t_i - t_{i-1})\,\frac{\partial u_\theta}{\partial x}(x_{i-1}, t_{i-1}, t_i)\Big)\Big|log⁡pi=log⁡pi−1−log⁡∣det⁡(I+(ti−ti−1) ∂uθ∂x(xi−1,ti−1,ti))∣\begin{aligned} \log p_i &= \log p_{i-1} - \log\Big|\det\Big(I \\ &\quad + (t_i - t_{i-1})\,\frac{\partial u_\theta}{\partial x}(x_{i-1}, t_{i-1}, t_i)\Big)\Big| \end{aligned}

The grid matters when NN is small. The paper compares five schedules for 8-step sampling of alanine dipeptide (Fig. 7) and finds the EDM schedule of Karras et al. (2022) substantially better than the other four, with ρ=7\rho = 7, σmin⁡=10−3\sigma_{\min} = 10^{-3}, σmax⁡=1\sigma_{\max} = 1:

σi=(σmax⁡1/ρ+iN(σmin⁡1/ρ−σmax⁡1/ρ))ρ,ti=σi−σmin⁡σmax⁡−σmin⁡\sigma_i = \Big(\sigma_{\max}^{1/\rho} + \tfrac{i}{N}\big(\sigma_{\min}^{1/\rho} - \sigma_{\max}^{1/\rho}\big)\Big)^{\rho}, \qquad t_i = \frac{\sigma_i - \sigma_{\min}}{\sigma_{\max} - \sigma_{\min}}σi=(σmax⁡1/ρ+iN(σmin⁡1/ρ−σmax⁡1/ρ))ρ,ti=σi−σmin⁡σmax⁡−σmin⁡\begin{gathered} \sigma_i = \Big(\sigma_{\max}^{1/\rho} + \tfrac{i}{N}\big(\sigma_{\min}^{1/\rho} - \sigma_{\max}^{1/\rho}\big)\Big)^{\rho}, \\ t_i = \frac{\sigma_i - \sigma_{\min}}{\sigma_{\max} - \sigma_{\min}} \end{gathered}
(20–21)

Appendix D.2.2 writes every schedule with t=1t = 1 at the noise end and t=0t = 0 at the data end (t0=1t_0 = 1, tN=0t_N = 0), the reverse of the training convention, so the grid in FALCON's direction is 1−ti1 - t_i. For N=4N = 4 that is 0, 0.698, 0.929, 0.989, 1: the first jump covers 70% of the interval and the last covers 1.1%. The authors attribute the gain to the flow field varying more near the data. The EDM toggle in Figure 2 uses the same grid.

In code, for KK samples of alanine dipeptide at N=4N = 4:

# Samples plus exact log-densities (Algorithm 2), alanine dipeptide, d = 66.
taus = [0.0, 0.698, 0.929, 0.989, 1.0]     # N = 4, EDM grid, rho = 7, flipped
x = sample_base(K, 66)                     # K samples of 22 atoms x 3 coords
logp = log_base_density(x)
for s, t in zip(taus[:-1], taus[1:]):
    step = lambda y: y + (t - s) * u_net(y, s, t)
    J = batched_jacobian(step, x)          # (K, 66, 66): 66 passes or one vmap
    logp = logp - slogdet(J).logabsdet     # change of variables, this step
    x = step(x)
log_w = -energy(x) - logp                  # energy in units of kT
w = softmax(log_w)                         # self-normalized weights, Eq. (2)

Each step costs one network call for the jump and a 66×6666 \times 66 Jacobian. The paper uses NN = 4 for alanine dipeptide, 8 for tri-alanine and the tetrapeptide, and 16 for hexa-alanine, and it evaluates every method on 10410^4 samples.

A transformer instead of an equivariant network

Molecular energies do not change when the whole molecule is rotated or translated, and earlier CNF Boltzmann generators build that symmetry into equivariant graph networks. Those networks are slow, and the cost of hundreds of solver steps per likelihood kept them small: the paper counts at most 2.3 million parameters for the CNF baselines. With likelihoods at 4 to 16 steps, FALCON uses a standard diffusion transformer (DiT) with an extra embedding for the second time input: hidden size 192, 6 blocks, 6 heads, a 64-dimensional conditioning vector, 3.2 million parameters, the same for all four peptides (Table 6). Symmetry is approximate: training samples are randomly rotated, and the mean position is subtracted to remove translations, following SBG.

The authors also train a continuous-time version of the same transformer, “DiT CNF”, as a baseline (Fig. 2 and Table 4). Comparing FALCON with it separates the effect of few-step likelihoods from the effect of the architecture.

What the experiments show

Three metrics are reported, each on 10410^4 samples after reweighting. ESS measures how efficiently the weights use the samples. E\mathcal{E}-W2\mathcal{W}_2 is the 2-Wasserstein distance (roughly, the root-mean-square distance values must be moved to turn one histogram into the other) between the energy histograms of generated and reference samples; energies are sensitive to small errors in bond lengths, so this metric checks local structure. T\mathbb{T}-W2\mathcal{W}_2 is the 2-Wasserstein distance on the torus of backbone dihedral angles, which checks whether the basins are covered in the right proportions. Lower is better for both distances. Figure 5 has Tables 2, 3 and 5 of the paper.

Figure 5 · results on four peptides

FALCON on Tri-alanine, ESS ↑: 0.077 ± 0.004 · 8 steps · MeanFlow-type loss
best reported on this metric: FALCON, Dopri5 (0.125)

Pick a molecule and a metric; click a row for its value, spread over three seeds, and step count. Teal: FALCON; dark teal: FALCON-A; violet: FALCON integrated with the adaptive Dopri5 solver (Table 5); gray: baselines. Bars past the axis cap end in a break mark. SE(3)-EACF on alanine dipeptide (E\mathcal{E}-W2\mathcal{W}_2 108.2) is omitted.

On alanine dipeptide, FALCON is not the strongest method. ECNF++, an equivariant CNF with a Dopri5 solver, has the best ESS (0.275 against FALCON's 0.067) and nearly the best dihedral distance (0.189 against 0.402; FALCON-A's 0.180 is lower). FALCON has the best energy distance, 0.225. The paper's case rests on the larger molecules, where ECNF++ degrades: on hexa-alanine its ESS is 0.006 and its energy distance 10.668, against FALCON's 0.060 and 0.892.

Against SBG, a discrete flow built on TarFlow (a transformer-based autoregressive flow that is invertible by construction), FALCON is better on every metric for every molecule, with or without SBG's sequential Monte Carlo (SMC) refinement, which moves the samples with annealed Langevin steps. On the tetrapeptide, for example, FALCON's energy distance is 0.686 against 1.068 for SBG with importance sampling and 1.007 with SMC. Figure 4 of the paper gives SBG up to 5×1065 \times 10^6 samples, and its energy distance still stays above that of a 4-step FALCON evaluated on 10410^4.

FALCON and FALCON-A split the metrics. FALCON-A has the higher ESS on every molecule (0.104 against 0.077 on tri-alanine) and the best dihedral distance on tri-alanine and hexa-alanine, while the default FALCON has the best energy distance in Table 3 on all three larger peptides and is best or second best on every Table 3 metric there, the reason the authors pick it as the default.

The violet rows show what the few steps cost. Integrated with Dopri5 at 200 to 265 function evaluations, the same family of model has 1.6 to 3.9 times the ESS (0.264 against 0.067 on alanine dipeptide, 0.128 against 0.060 on hexa-alanine) and better dihedral distances on the three smallest systems. The step count is set after training, so a user can choose a point between the two. Measured in function evaluations, the Table 5 gap is 64× for alanine dipeptide (257 against 4) and 13× for hexa-alanine (207 against 16). The abstract's “two orders of magnitude” comes from the paper's Figure 2, which compares wall-clock time at matched dihedral accuracy on alanine dipeptide.

Training plus inference time (Table 4, units not stated) is lowest for FALCON on all four molecules: 7.65 against 12.52 for ECNF++ and 16.83 for SBG on alanine dipeptide, and 25.76 against 137.4 and 57.50 on hexa-alanine. SBG samples faster than FALCON, but its maximum-likelihood training takes longer than FALCON's regression losses.

Limitations

The authors list three. First, the likelihoods are accurate in practice but not guaranteed: invertibility is encouraged by a loss, checked after the fact, and holds exactly only at zero loss. A step that folds somewhere the checks did not look would give wrong weights without any error being raised. Second, one-step generation does not work yet. Third, the work covers only molecular conformation sampling, on peptides of up to six residues; the paper names Bayesian inference and robotics as future applications, and models with structured Jacobians as a route to faster sampling.

Two more follow from the paper's numbers; they are this page's observations, not the authors'. A dense Jacobian costs about dd passes per step and per sample, which is 66 to 189 here (hexa-alanine has 63 atoms) but would be 3,000 for a 1,000-atom protein, before the O(d3)O(d^3) determinant. And the reported ESS values (0.055 to 0.077 for FALCON on the larger peptides) mean the weighted estimate is worth about 6 to 8% of the samples drawn, so most of the generated samples, each with its own Jacobian, contribute little to it.

Provenance Verified against primary literatureHow we verify
Noé, Olsson, Köhler & Wu (2019)Boltzmann generators: an exact-likelihood flow proposes samples and the importance weight exp(-E(x))/p(x) reweights them to the Boltzmann distribution. FALCON keeps this recipe and changes the generator.
Kish (1957); FALCON Appendix EESS = (sum w)^2 / (N sum w^2), normalized so 1 means every sample counts fully. Read it as the fraction of samples doing the work: 0.06 of 10^4 samples is about 600.
Chen et al. (2018); Grathwohl et al. (2019)Instantaneous change of variables, d log p / ds = -tr(dv/dx), and the Hutchinson estimator. FALCON Appendix D.2.1 reports that Boltzmann generators need the exact trace and the adaptive Dopri5 solver: Hutchinson destabilizes the importance weights and fixed-step solvers overestimate likelihoods.
Geng et al. (2025), MeanFlow, Eqs. 3-6Average velocity u(z_t, r, t) over [r, t] with the position input at the upper limit t. Differentiating in t gives u = v - (t - r) du/dt, computed by jvp with tangent (v, 0, 1). FALCON writes the position at the lower limit s, which flips the sign of the second term.
Boffi, Albergo & Vanden-Eijnden (2025)Flow maps learned by self-distillation; the Eulerian (ESD), progressive (PSD) and Lagrangian objectives that FALCON Appendix B lists as its losses L1, L2 (FALCON-A, midpoint lambda = 0.5) and L3 (did not train stably).
Tan et al. (2025a), Sequential Boltzmann GeneratorsDatasets and splits: one MD chain, 10^5 training, 2x10^4 validation and 10^4 strided test samples; Amber ff99SBildn at 300 K for alanine dipeptide and tetrapeptide, Amber 14 at 310 K for tri- and hexa-alanine. Source of the SBG and ECNF++ baselines.
FALCON Fig. 2 vs Table 5 (scope of "two orders of magnitude")The 100x figure is wall-clock time to reach the same T-W2 on alanine dipeptide (Fig. 2). Table 5 compares function evaluations at unequal quality: 257/4, 265/8, 200/8 and 207/16 for the four systems give 64x, 33x, 25x and 13x, and the Dopri5 rows win on ESS everywhere.
FALCON Sec. 4.2 and Fig. 4SBG is said to use 5x10^6 samples, "250x more" than FALCON. Every FALCON evaluation in the paper uses 10^4 samples, which makes the ratio 500x; the 250x would need 2x10^4 FALCON samples, which the paper does not mention.
FALCON Appendix D.2.2The five inference schedules are written with t = 1 at noise and t = 0 at data (t_0 = 1, t_N = 0), the reverse of the training convention x_s = s x1 + (1 - s) x0. This page flips them (tau = 1 - t), so the EDM grid for N = 4 is 0, 0.698, 0.929, 0.989, 1.
CodeNo official implementation was public when this page was written; the paper says code will be released on acceptance. The training and sampling mechanics here follow Algorithms 1 and 2 and the text of Sections 3 and D.
correctionEq. (10) and line 5 of Algorithm 1 print the regression target as v - (t - s)(du/ds). With the paper's own definitions (u(x_s, s, t) is the average of v from s to t, Eq. 4, and a step is x_t = x_s + (t - s)u, Eq. 7), differentiating (t - s)u = integral from s to t of v with respect to the lower limit s gives u = v + (t - s)(du/ds). The minus sign is MeanFlow's, where the position input sits at the upper limit of the interval. In the 1-D toy of Figure 3 at s = 0.4, t = 0.9, the plus sign reproduces the chord slope u = 1.575 and the minus sign gives -1.504. This page teaches the plus sign. Section 3 also says u(x_s, s, t) tends to -v as t approaches s from below; under Eq. (4) the average velocity tends to +v from both sides, so the factor in the parameterization u = sign(t - s) h makes h, not u, jump at s = t. Without public code, which convention the implementation uses cannot be checked.

Questions you might still have

?

Is the FALCON likelihood exact?
It is the exact density of the N-step map that produced the sample, provided every step is invertible: the sampler adds up log-determinants of the actual Jacobians, with no trace estimator and no time discretization of a continuous formula. It is not the density of the continuous flow the network approximates, and it does not need to be, because importance sampling only needs the density of the proposal it actually sampled from. What the paper cannot guarantee is invertibility. If a step folds, the formula is wrong for the samples near the fold, and the authors list this as their first limitation.

?

Why not take an ordinary flow-matching model, run 4 Euler steps, and use the exact log-determinant of each step?
The bookkeeping would be the same as FALCON's, but the samples would be poor: with few steps, Euler moves along the tangent at the start of each step and lands off the trajectories, and at one step it sends every sample to the mean of the data. A flow map is trained so that one call covers the whole interval. The paper's Figure 2 includes fixed-step Euler with exact traces (4 to 256 steps) among its CNF settings, and the paper reports FALCON faster than every CNF setting it tried at comparable dihedral-angle accuracy (Sections 4.3 and F.3).

?

Does FALCON need gradients of the energy?
No. The energy enters only through the importance weight exp(-E(x)) divided by the model density, and the paper states it does not require the energy to be differentiable. Training uses molecular dynamics samples, not forces.

?

What does an ESS of 0.06 mean for a user?
Out of 10,000 generated configurations, the weighted estimate is about as precise as one made from 600 independent samples of the true distribution. The rest still cost a forward pass and an energy evaluation. ECNF++ reaches 0.275 on alanine dipeptide, which is about 2,750 effective samples, but its likelihoods take an adaptive solver with hundreds of evaluations and it falls to 0.003 to 0.016 on the larger peptides.

?

Why does FALCON need 4 to 16 steps if a flow map can in principle jump in one?
A one-step map has to learn the whole noise-to-molecule transport in a single network evaluation, and the trained maps are not accurate enough for that yet. The paper's Figure 2 sweeps 1 to 8 steps on alanine dipeptide, and its limitations section says true one-step generation is out of reach for the current models.

?

How is this related to consistency models and MeanFlow?
All three train a network that jumps along a probability-flow trajectory in one evaluation. Consistency models always jump to the data end; MeanFlow and other flow maps take both a start time and an end time. FALCON uses the MeanFlow loss (or an additive loss) and adds what those methods never needed: a backward jump and a cycle loss, so the map can be inverted and its density computed. The consistency models and flow matching explainers cover the two ingredients.

?

Is the model rotation-equivariant?
Only approximately. The diffusion transformer has no built-in rotational symmetry; training data are randomly rotated, and the mean position is subtracted to remove translations. The learned density is therefore not exactly rotation-invariant, which importance sampling tolerates: the weights correct the proposal whatever its shape, as long as it covers the target.

Footnotes & further reading

  1. The paper: Rehman, Akhound-Sadegh, Gazizov, Bengio, Tong, FALCON: Few-step Accurate Likelihoods for Continuous Flows (arXiv 2025; ICLR 2026).
  2. Boltzmann generators: Noé, Olsson, Köhler, Wu, Boltzmann Generators: Sampling Equilibrium States of Many-Body Systems with Deep Learning (Science, 2019).
  3. The flow-map loss FALCON adopts: Geng, Deng, Bai, Kolter, He, Mean Flows for One-step Generative Modeling (2025), Eqs. 3 to 6 for the identity and its sign. Boffi, Albergo, Vanden-Eijnden, How to Build a Consistency Model: Learning Flow Maps via Self-Distillation (2025), for the Eulerian, progressive and Lagrangian objectives.
  4. The continuous flows behind the baselines: Chen, Rubanova, Bettencourt, Duvenaud, Neural Ordinary Differential Equations (2018), covered in the neural ODE explainer; Lipman et al., Flow Matching for Generative Modeling (2023), covered in the flow matching explainer; Klein, Krämer, Noé, Equivariant Flow Matching (2023).
  5. The strongest discrete-flow baseline and the datasets: Tan, Bose, Lin, Klein, Bronstein, Tong, Scalable Equilibrium Sampling with Sequential Boltzmann Generators (ICML 2025).
  6. One-step generation along flow trajectories: Song, Dhariwal, Chen, Sutskever, Consistency Models (2023), covered in the consistency models explainer. The step schedule: Karras, Aittala, Aila, Laine, Elucidating the Design Space of Diffusion-Based Generative Models (2022).
  7. The cycle-consistency idea in a related setting: Draxler et al., Free-form Flows: Make Any Architecture a Normalizing Flow (AISTATS 2024), which the paper's Appendix C.1 compares against.