Failure Modes and Model Exploitation › Compounding Rollout Error
World Models HandbookAll chapters Failure Modes and Model Exploitation › Compounding Rollout ErrorOne section · Sections in this chapter3 / 10 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Begin with prediction propagation under matched actions. It can contribute to a planning failure, but its presence or prevalence is not implied by the existence of other mechanisms.
Run the reference and surrogate from the same initial state using the same realized action sequence . Define in one fixed state norm. A discrepancy at one step changes the input to the next, so small one-step errors can accumulate or amplify. They need not do so: contraction, cancellation, and exact predictions can keep the realized discrepancy small. We will bound it under explicit domain and action conditions.
Let's derive the bound. Write for the surrogate and for the reference. Define the surrogate rollout and the reference rollout in parallel:
Now subtract and insert a zero:
Take norms and apply the triangle inequality:
The first term measures same-input approximation error at the surrogate's current state. The second evaluates the reference map at two different states. A uniform state-Lipschitz bound is a property of that fixed reference map, domain, action set, and norm; the value of this term depends on the states reached and therefore on the surrogate too. The surrogate states must be included in the domain, not just the reference states. Assume:
- (A1) In the fixed norm, bounds for every and every considered action. Both trajectories stay in throughout the comparison.
- (A2) In the same norm, bounds reference state sensitivity uniformly over the same actions: for all and all considered .
then the recursion collapses to a familiar scalar form:
The recurrence bounds the next discrepancy by a propagated-error budget plus an approximation budget . These are upper bounds, not prescribed increments in the actual error. Directions, signs, and how tightly and fit the visited states determine how much of that budget is realized.
Unrolling from :
and for the sum stays linear:
The upper envelope has three regimes. These describe the bound, not three mandatory shapes for the actual error:
- : the envelope tends to as its initial-error term vanishes. The actual discrepancy need not approach that plateau. This bounds state error under (A1)–(A2); it is not a task-safety guarantee. A smaller valid lowers the envelope, though the observed error need not change proportionally.
- : the envelope is . A scalar update has unit state sensitivity for a fixed action. A double integrator is different: in a normalized state with , its Euclidean operator norm is about , not . Its unit eigenvalues do not give a unit operator-norm bound: contains . Constant velocity bias can produce quadratic position discrepancy. Halving halves the additive part of this envelope, not necessarily the realized error or a nonzero initial-error term.
- : the envelope contains a geometric factor. To judge a horizon, compare the full bound, including and , with a relevant state-error tolerance. For , , and , the bound first exceeds at step , not after a generic handful of steps. An exact surrogate with matched initial state and actions has zero discrepancy at every horizon, even when the reference is expansive.
Three caveats matter for interpreting that formula.
First, the bound is not an equality. Propagated contributions can cancel, and loose constants or directions with low sensitivity can also leave the realized error well below it. For a scalar recurrence , the contribution of at time is . Cancellation concerns these weighted contributions, not simply the sum of raw bias signs. Alternating biases need not remain bounded when ; the examples below illustrate particular traces rather than a general cancellation guarantee.
Second, it is not a theorem that realized error increases monotonically. You can have a trajectory where the reference and the surrogate happen to drift back together for a few steps before separating again. The bound describes the envelope, not the path. Reporting a single number for "rollout error at horizon " collapses a whole error trace into one value and hides this shape.
Third, both trajectories must remain inside the domain where (A1)–(A2) hold. In a scalar coefficient-mismatch example, with , no finite uniform approximation bound exists over the whole real line. For a vector mismatch , growth depends on direction and can vanish on the mismatch's nullspace. An additive bias instead admits a uniform bound on its norm. Leaving a validated domain invalidates its local bound unless it is extended or re-established.
Let's make it concrete with a scalar example. Take
Here is the constant additive bias and . There is no action in this scalar illustration; adding the same input term to both maps would cancel in their difference, not be absorbed into . With and , the constant-bias trace attains the geometric-sum envelope. Negative or changing bias signs can make it strict. The approximation error is state-independent, so this example separates propagation from changing local approximation quality.
def signed_error_trace(lam, eps, T, alt_sign=False, e0=0.0):
"""Signed propagation of an additive bias eps through a scalar linear map."""
e = e0
trace = [e]
for t in range(T):
bias = (eps if (t % 2 == 0) else -eps) if alt_sign else eps
e = lam * e + bias
trace.append(e)
return np.array(trace)
def geometric_bound(lam, eps, T, e0=0.0):
"""Evaluate the nonnegative geometric envelope without a near-unit branch.
This is floating-point evaluation, not directed-rounding certification.
"""
if (
isinstance(T, (bool, np.bool_))
or not isinstance(T, (int, np.integer))
or T < 0
):
raise ValueError("T must be a nonnegative integer")
if not np.all(np.isfinite([lam, eps, e0])) or eps < 0:
raise ValueError(
"lam and e0 must be finite; eps must be finite and nonnegative"
)
L = abs(float(lam))
bounds = np.empty(T + 1, dtype=float)
bounds[0] = abs(float(e0))
with np.errstate(over="ignore"):
for t in range(T):
bounds[t + 1] = L * bounds[t] + float(eps)
return bounds
T_STEPS = 20
EPS_BIAS = 0.05
error_profiles = {
lam: {
"constant": signed_error_trace(lam, EPS_BIAS, T_STEPS),
"alternating": signed_error_trace(
lam, EPS_BIAS, T_STEPS, alt_sign=True
),
"bound": geometric_bound(lam, EPS_BIAS, T_STEPS),
}
for lam in (0.9, 1.0, 1.05)
}Now let's visualise the three regimes in separate figures, and add the alternating-sign case to show how loose the bound can be.



The contractive panel illustrates both tightness and cancellation. For and , the constant-sign trace equals the geometric bound at each step and approaches . At step twenty, the constant-sign signed trace is approximately and the alternating-sign signed trace is approximately . Their absolute errors, the quantities plotted, are approximately and , with a magnitude ratio of nineteen. Both traces start at zero and coincide at step one, so the reduction is not present at every step. Using the bound as a planning constraint may be conservative when errors cancel, but it is tight in the aligned-sign construction. The same uniform per-step error magnitude can therefore accompany different recursive errors. These deliberately chosen signed-error patterns illustrate a mechanism; they do not establish where every trained model falls between them.
These observations suggest several questions to ask when choosing a rollout horizon.
- Horizon effects depend on sensitivity, bias structure, initial error, and the relevant task tolerance. The three plotted references differ in ; they are not one fixed model with three behaviors. Shortening a horizon can lower the envelope even in a contractive system close to , and an expansive upper bound need not describe the realized error. Compare proposed horizons on the actual system instead of labeling one regime harmless and another inevitably unusable.
- One-step error magnitude is not a complete rollout description; error directions and temporal structure also matter. A related strategy in Janner et al.'s MBPO paper (NeurIPS 2019) uses short model rollouts branched from real states and studies rollout length alongside model and policy-distribution error. That is not a theorem about the particular alternating-bias experiment here, nor a guarantee that any short rollout has small error.
- Talvitie's self-correcting-model work (2017) trains on model-generated inputs paired with next states from a parallel reference trajectory. Its analysis uses restricted conditions including deterministic reference dynamics and blind rollout policies, with shared action sequences. This hallucinated-training target is not generally the same as at one common input, so improving it does not automatically lower (A1)'s uniform . It does not change a fixed reference map's uniform on a fixed domain and norm; those statements should not be mistaken for this bound proving the method's guarantees.
- Matched actions, rather than how those actions were generated, are the key comparison. The derivation remains pathwise valid for a shared feedback-generated action sequence if (A1)–(A2) hold along both paths. If each path chooses its own action, additionally bound the action difference: with reference action sensitivity and state sensitivity , on the required domains. Feedback may damp or amplify this mismatch. Neither inequality alone proves closed-loop stability or task safety.
Compounding can occur while evaluating candidate rollouts as well as while executing a chosen plan. Next we distinguish a wrong task objective from prediction bias, then ask what selection does to attractive scoring errors.