Chebyshev Policies and the Mountain Car Problem: Reinforcement Learning for Low-dimensional Control Tasks
SAI replication review · Referee report
Summary
This paper makes two entangled contributions to reinforcement learning on low-dimensional control tasks. First, it presents what appears to be the first closed-form analytical solution of the classical continuous Mountain Car problem, closing a 36-year gap. Using an energy-based spatial reformulation of the pendulum-like dynamics, a Cauchy–Schwarz argument yields the unconstrained optimum , which the authors then reintroduce constraints for to obtain a piecewise worst-case policy with switching phase-1/phase-2 constants and a bootstrap term. Concretely, reaches mean return 99.39 on the Gymnasium environment, against which the best deployed SB3-Zoo baselines (ARS 96.67, SAC 94.61, PPO 93.91) have residual regret 2.7–5.5 return points — enough to motivate the second contribution. Second, the paper introduces Chebyshev policies: multi-variate Chebyshev polynomial approximators used as drop-in replacements for MLP actors (and critics) in policy-gradient and random-search algorithms. The claim is that on Mountain Car, Chebyshev policies trained with ARS/PPO/REINFORCE reduce ARS's regret by a factor of 4.18 with roughly 277× fewer parameters, and that the improvement generalises qualitatively to Pendulum and to a real-world 1-DOF Quanser Aero 2 helicopter testbed, including sim-to-real transfer. The conceptual move — pushing dense-in- polynomial bases into RL as an alternative to MLPs on tasks where the optimal policy is smooth and low-dimensional — is a genuine and welcome one, and the paper is unusual in framing the choice of policy class from a first-principles analytical starting point rather than from ablation. My main reservations concern (i) the treatment of the reference point for regret comparisons and the best-of-20-vs-deployed asymmetry, (ii) several under-derived analytical steps in the argument and Lemma 2.3 proof, (iii) an outright reproducibility failure for CH-3-PPO on Mountain Car, where 13 of 20 retrained seeds fail to reach the goal, and (iv) release-quality gaps in the shipped code where several load-bearing experiments (PPO-MLP sweep, CH-3-SAC, discrete-time verification) have no runnable driver.
Strengths
- Conceptual contribution. Closing a 36-year gap with an actual closed-form worst-case policy on a canonical benchmark is a real contribution. The energy-based spatial reformulation, use of Königsberger's oscillator theorem, and Cauchy–Schwarz argument for the unconstrained optimum are elegant, and the reduction to is a genuinely surprising insight.
- First-principles design of a new policy class. Motivating Chebyshev policies from the tameness of the analytical solution — orthonormality, universality via density in continuous policies, controllable smoothness through max-degree — is a cleaner design story than the usual post-hoc justification for RL architecture choices.
- Breadth of empirical support. The paper does not stop at Mountain Car: it evaluates Chebyshev policies on Pendulum-v1 and on a real-world Quanser Aero 2 testbed (both simulation and hardware), with three different algorithms (ARS, PPO, REINFORCE) plus a Chebyshev-representation-layer + SB3 variant (Table 6) that acts as a useful sanity check.
- Practical engineering relevance. The observation that PPO on the Aero 2 resorts to bang-bang control (with excess motor heat) while CH-3-PPO tracks smoothly is a compelling operational win, and the sim-to-real degradation numbers (2.15× for PPO vs 1.13× for CH-3-PPO) fit the paper's broader thesis.
- Rich appendix. Appendix A covers two-phase trajectories, wall interactions, the reduction, and a discrete-time verification via Matlab
fmincon. Appendix C reports architecture sweeps for PPO-MLP (Table 3) and CH-PPO degree (Table 5), and includes the negative result that REINFORCE fails to train any goal-reaching MLP policy (960 attempts), which strengthens the argument that the policy class matters here beyond optimiser choice. - CH-3-ARS and CH-6-ARS results are robust. Independently retraining CH-3-ARS on Mountain Car (20 seeds, full 80k steps) gives a best-agent mean return of 98.95 against the paper's 98.74; retraining CH-6-ARS on Pendulum (8 seeds where the paper uses 30) gives grid mean −151.14 vs −150.80 with matching std, min, and max. Two of the three headline Chebyshev cells reproduce cleanly.
Weaknesses
- Reference point for the 4.18× headline. The regret-reduction factor is computed with respect to (mean 99.39), not the trivial upper bound of 100 nor the per- optimum (mean 99.59). Recomputed against 100, the ARS-vs-CH-3-ARS factor is ~2.6. Neither the abstract nor Section 5 states which reference is used; the choice matters because CH-3-ARS still leaves residual regret ≈ 0.65 that later work will use as a baseline.
- Regret framing as "surprisingly high". A ~3–5 point gap on a 100-scale is comfortably above the RL-Zoo solved threshold, but calling it "surprisingly high" rests on the reader accepting as the natural yardstick. A measured framing would still support the paper's motivation.
- Table 1 and Table 4 numerical inconsistency for CH-3-ARS. Reported mean sits below the reported minimum over the same 100 evaluation points, which cannot both be true; the same values appear in both tables. Since CH-3-ARS is the headline policy, this needs to be checked and the 0.65 regret re-verified (retraining a fresh CH-3-ARS gives min 98.74 with mean 98.95 — the two values look swapped).
- Best-of-20 vs deployed-baseline asymmetry. Chebyshev policies are the best-mean-return out of 20 seed trainings, while the MLP baselines are single deployed SB3-Zoo agents. Extending Tables 1 and 4 to mean ± std over the 20 seeds — as Table 5 already does — would make the ~2-point improvement much more credible.
- Missing linear-policy ablation. The analytical optimum is essentially linear in , yet Table 5 shows CH-PPO at collapses to return −0.1. Without a plain linear baseline (or a CH result for ARS and REINFORCE), the paper cannot separate "Chebyshev basis is a better representation" from "higher-degree polynomials happen to be easier to optimise".
- Under-derived worst-case starting position. The claim that the worst-case sits at the minimum is asserted from equation (5) but not derived; (5) is only the feasibility condition, and depends on the whole trajectory geometry. 's definition hangs on this step.
- Deployed is not truly "independent of ". Theorem 2.4 gives an -independent unconstrained optimum, but the deployed switches between phase 1 (4.3346) and phase 2 (4.8358) as a function of and adds a state-dependent . The 4.3346 constant, in particular, is stated as fixed but corresponds specifically to the worst-case ; earlier text says depends on .
- Small proof-sheet defects around the main lemma. The Cauchy–Schwarz equality gloss reads "cosine being zero" where it should be "cosine being one"; the introductory sentence of the Lemma 2.3 proof is garbled ("g minimizing ‖f‖ …" with a bare ); the "reaches the goal fulfills (5) to strict inequality" phrase in the Theorem 2.4 proof is a run-on. None affect correctness, but this is the paper's main contribution and should read clean.
- Parameter-count claim (277×) is off by 62 in the intermediate breakdown. Footnote 4's arithmetic undercounts the first
Linear(2,64)layer (should be , not ); the correct total is 4417. Interestingly, matches the reported 277 much better than , so the ratio is right but the intermediate step is wrong. Please also state which Chebyshev components ( only? ? critic?) enter the denominator. - Cross-environment evaluation protocol under-specified. Table 2's evaluation protocol is stated only for Pendulum (50×50 grid). MC and Aero 2 columns rely on the reader inferring the protocol from other sections. Given that Table 2 supports the abstract's cross-environment "consistently outperform" claim, this deserves a caption sentence.
- Sim-to-real power-consumption reversal on Aero 2. Tables 8/9 show CH-3-ARS and CH-3-PPO power drop 3–4× on the real system, while PPO's power rises from 37.05 W to 52.60 W despite similar voltages. The paper discusses pitch-deviation transfer but is silent on this reversal, which quietly undermines the sim reliability.
- Pendulum state dimension ambiguity. is a 2-manifold, embedded in . The paper calls it "3-dimensional", but Chebyshev basis count differs by orders of magnitude between and at the paper's best- Pendulum results — the choice of used should be stated.
- Cross-referencing / labelling glitches. Table 5's title reads "CH-3-PPO" though the whole table sweeps degrees 1–50, self-contradicting the naming convention. Table 6 quietly uses CH-4-PPO alongside CH-3-ARS and CH-3-SAC while claiming the results "align" with the native CH-3-PPO of Table 4. The range for is (goal at 0.45) but no note explains the asymmetry. Table 3's PPO mean (94.22) differs from Table 1's (93.91) purely because of a 20-vs-100 evaluation grid, yet "match the one reported on RL Baselines3 Zoo" invites confusion.
- -initialisation for Chebyshev policies is ambiguous. "Initialized to 1" can mean either with other -coefficients zero, or the constant coefficient set to 1 while higher -coefficients are drawn from . The natural reading conflicts with "all other polynomials … ".
- REINFORCE-vs-MLP framing. "None solved … only one (RAdam[8]) at times reaches the goal with a mean return of about 60" is internally in tension — 60 is a partial success, though below the RL-Zoo threshold of 90. Naming that threshold inline would tighten the sentence.
Reproducibility & code
Executing the release confirms two Chebyshev headline numbers, produces an outright disagreement on a third, and exposes a set of release-quality issues (missing scripts, hardcoded selection rules, packaging defects) that make even the successful cases require substantial reverse-engineering.
- CH-3-PPO Mountain Car did not reproduce. Retraining 20 CH-3-PPO agents at the shipped 70k-step configuration and selecting the best by mean return over the 100-point grid gives a best-agent mean of 84.58 against the paper's 98.10 — regret ~14.8 vs the claimed 1.29. Of the 20 seeds, 13 never reach the goal at all; the winning agent hits max 98.74 on some starts but fails outright on others. The sibling CH-3-ARS pipeline reproduces cleanly (best-agent mean 98.95 vs paper 98.74) and CH-6-ARS on Pendulum lands within 0.2% of the paper's row, so the training/evaluation harness itself is sound — this is PPO seed fragility that 20 seeds does not tame at the shipped hyperparameters. Because the paper's 98.10 anchors the CH-3-PPO row of Tables 1/2/4 and the 4.24× PPO regret factor, either the seed budget needs increasing or the selection rule needs to be documented and deterministic.
- Best-agent selection rule is not recoverable from the code. The Mountain Car notebooks hardcode the best-agent filename by an author-side timestamp; reproducing from a clean checkout requires reverse-engineering the selection criterion. The most defensible substitute (argmax of mean evaluation return over the 100 grid) matches CH-3-ARS well but does not resolve CH-3-PPO. Please replace the hardcoded name with a deterministic selection cell.
- Notebook 01 depends on shelve-cache keys no notebook in the repo ever writes. The analytic/comparison notebook that produces 's 99.39, every SB3-Zoo baseline mean, and the policy-distance column of Table 4 reads keys
analytic_cs_over_x0andc1_max_1000that are never written by the shipped code. As a result, , , and the L2 column could not be recomputed end-to-end from a clean checkout in this session; the notebook has to be repaired by hand. - Best-of-20 CH checkpoints are not shipped. CH-3-{ARS, REI, PPO} coefficients that back Tables 1, 2, 4 and Figures 5, 10, 11 live only in a gitignored
picklesharedb/directory. This makes the reported factors non-verifiable point-for-point and — as CH-3-PPO shows — this matters when a single retraining run misses the reported mean by ~14 return. - External
polyagentspackage is an unversioned hard dependency. The multi-variate Chebyshev implementation — the paper's central technical contribution — is not vendored; it is installed from GitHub via a#egg=fragment naming an import package rather than a distribution. Pinning to a commit hash or vendoring the modules would insulate the paper's numbers from upstream drift. - Several appendix experiments have no shipped driver. The PPO-MLP architecture sweep (Table 3), the CH-3-SAC branch of Table 6, the CH degree sweep of Table 5, the Pendulum best-degree sweep, and the Appendix A.5 discrete-time
fminconverification each lack a runnable script in the released repo. A cell that readsppo_net_size_episode_results(Table 3) would raiseKeyErroron a clean checkout;utils/exp_run.pyexposes nosacbranch for Table 6. aero_envspackaging silently drops the compiled plant model. The companionaero_envspackage'ssetup.pydeclares nopackage_dataand has noMANIFEST.in, sopip installdropsresources/linux/model.so.gym.make(...)then fails with a resource-not-found error that looks like missing proprietary data — an earlier reproduction pass wrongly concluded the whole Aero section was unreproducible before tracing it to packaging.- Aero 2 real-world evaluation is not offline-reproducible and its hardware requirement is undocumented. Table 9 needs the physical Quanser Aero 2 plus the Quanser HIL SDK;
aero_envs/real/real_env.pyis a 0-byte file and the only real-hardware path talks to a HIL card over TCP. The notebook contains no file-read of any measurement log, so a reproducer cannot tell from the code that Table 9 needs hardware. Publishing per-episode telemetry (pitch, target, action, current) alongside a README note would let referees verify Tables 8/9 and Figure 14 offline. - Aero 2 Chebyshev/ARS checkpoints are not shipped. Only one Aero PPO MLP checkpoint (
aero_best_ppo.zip) is present; the CH-3-ARS, CH-3-PPO, and ARS-MLP Aero policies populating Tables 8 and 9 must be retrained (12 agents × 150k PPO steps + 4M ARS steps) plus two external packages. - Pendulum baseline loader currently points at the wrong directory.
utils/parallel.pyhardcodesfolder='rl-trained-agents'for pendulum baseline loading, while the intended spec isfolder='rlzoo-pendulum-trained-agents'. Both directories exist; the unpatched code silently loads a different agent set. If the authors' own runs went through the unpatched path, the published Pendulum SOTA baselines may correspond to unintended agents — this needs confirmation. - Analytic-policy constants in code drift from the paper.
run_analytic_policyuses and , rather than the paper's 4.3346 and 4.8358. The fourth-decimal drift probably moves the mean return by only ~0.01, but anchors every regret.
Recommended Changes
Essential
- Explain and, if needed, correct the CH-3-PPO reproduction gap. Diagnose why retraining 20 CH-3-PPO seeds at the shipped configuration yields best-agent mean 84.58 rather than 98.10 (13/20 seeds fail to learn). Either (a) increase the seed budget, tighten hyperparameters, or clip the training run so that a fresh reproduction reliably lands near 98.10, or (b) document a deterministic best-agent selection rule that gives 98.10 from the existing 20-seed pool — and replace the timestamp-based hardcoded filename in the notebook accordingly.
- Fix or explain the CH-3-ARS min-vs-mean impossibility. In Tables 1 and 4, exceeds mean . Re-check the underlying evaluation (the two values may be swapped — a fresh CH-3-ARS run gives min 98.74, mean 98.95), correct the affected cells, and re-verify the 0.65 regret and 4.18× factor.
- State the regret reference point once, explicitly. Add one sentence to the abstract and Section 5 stating that regret is measured against 's mean return 99.39 (not the trivial 100 nor ), so readers can reconstruct the factors and future work can compare consistently.
- Report per-seed variance for the headline Chebyshev rows. Extend Tables 1 and 4 with mean ± std over the 20 seeds actually trained (not only best-of-20), mirroring Table 5. This directly addresses the best-of-20-vs-deployed asymmetry and would have made the CH-3-PPO reproducibility issue visible up front.
- Add a linear-policy ablation. Train a plain linear (or Chebyshev) policy with ARS, PPO, and REINFORCE. Given the analytical optimum is linear in , this ablation is essential to separate "Chebyshev basis wins" from "higher-degree polynomials optimise more easily".
- Ship the best-of-20 Chebyshev checkpoints. Move the CH-3-{ARS, REI, PPO} weights (and the CH-6-ARS / CH-5-PPO Pendulum and CH-3-{ARS, PPO} Aero weights) from the gitignored
picklesharedb/into the released repository so Tables 1, 2, 4, 7, 8 are point-for-point verifiable without re-running the seed lottery. - Ship the missing sweep drivers and repair notebook 01. Add: (i) the PPO-MLP architecture-sweep script for Table 3, (ii) the CH-degree sweep script for Table 5 and the Pendulum best-degree sweep, (iii) the CH-3-SAC training branch for Table 6 (including the -head convention), (iv) a Python re-implementation (or the Matlab scripts) for Appendix A.5, and (v) cells that produce the shelve keys
analytic_cs_over_x0/c1_max_1000that notebook 01 currently reads without them ever being written. - Derive, do not just assert, the worst-case starting position. Add a short argument (or an explicit reference to a numerical sweep) showing that is attained near , since 's definition hangs on this.
- Clarify the deployed . Rephrase the "independent of " sentence at Theorem 2.4 to make clear that -independence holds only for the unconstrained optimum, and tie the 4.3346 constant in Section 3 explicitly to the worst-case .
- Explain the Aero 2 sim-to-real power reversal. Add a paragraph to Section D.2 addressing why CH-3-* power consumption drops ~3–11× on the real system while PPO's increases, so the sim-to-real narrative for pitch deviation is not undercut by an unexplained reversal in the adjacent column.
- Fix the
aero_envspackaging defect and document the Aero 2 hardware requirement. Declarepackage_data/MANIFEST.insopip install aero_envsincludesresources/linux/model.so, and state in the README that Table 9 (and the sim-to-real portion of Table 2) requires the physical Quanser Aero 2 plus the Quanser HIL SDK. Publish the ten real-episode telemetry logs so referees can verify offline. - Confirm and pin the Pendulum baseline directory. Reconcile
utils/parallel.py's hardcodedfolder='rl-trained-agents'with the intendedrlzoo-pendulum-trained-agentsand confirm which agent set produced the paper's Pendulum SOTA baselines.
Suggested
- Reconcile the parameter-count arithmetic. Fix the footnote so (not ), and state which Chebyshev components enter the 16-coefficient denominator that gives 277.
- State the Pendulum used for counts. One sentence clarifying whether Chebyshev on Pendulum uses (angle + velocity) or (cos, sin, velocity) resolves the ambiguity that immediately affects the Limitations discussion.
- Fix the small proof-sheet defects. Replace "cosine being zero" with "cosine being one" in the Lemma 2.3 discussion; re-render the garbled first sentence of that proof; clean up the "reaches the goal fulfills (5)" run-on in the Theorem 2.4 proof.
- Rename Table 5. Change the title from "CH-3-PPO … for different polynomial degrees" to something consistent with the naming convention (e.g., "CH--PPO").
- Match Table 6's PPO degree to Table 4's, or explain the bump to . Otherwise "align with what we have seen with native implementations" reads as a like-for-like comparison it is not.
- Add a caption sentence to Table 2 stating the per-column evaluation protocol (100 for MC, 50×50 grid for Pendulum, 10 target signals for Aero 2 sim and real).
- Note the truncated range for (goal at 0.45) explicitly, rather than leaving readers to guess.
- Clarify the -initialisation with one line, e.g. ", all other -coefficients zero".
- State that Table 3's PPO number (94.22) uses 20 evenly spaced so the small discrepancy with Table 1's 93.91 (100 ) is not read as an inconsistency; soften "match the one reported on RL Baselines3 Zoo" accordingly.
- Tighten the "None solved / RAdam[8] reaches ~60" phrasing by naming the RL-Zoo solved threshold of 90 inline.
- Align the shipped analytic-policy constants (4.836, 4.3345) with the paper (4.8358, 4.3346), or note that these are rounded from a code sweep.
- Recompute the PPO regret-reduction ratio. rounds to 4.25, not 4.24; either round consistently or note that ratios use unrounded regrets.
- Move the "phase 2 independent of " caveat out of the parenthetical — the statement holds only in the regime, and readers may over-generalise.
- Vendor or pin
polyagentsso the paper's numbers do not silently drift with upstream changes. - Consider softening "the state space is necessarily explored well" to reflect that a goal-reaching trajectory is a 1-D curve rather than a broad exploration of state space.