feat(functional-learning): differentiable training pipeline + constrained-Fx ansatz (Stage A) - #296
Draft
wladerer wants to merge 6 commits into
Draft
feat(functional-learning): differentiable training pipeline + constrained-Fx ansatz (Stage A)#296wladerer wants to merge 6 commits into
wladerer wants to merge 6 commits into
Conversation
…trained F_x Learn LearnableX (κ,μ) against EXPERIMENTAL solid lattice constants via the pressure-at-V_exp loss; dE/dθ free at convergence (energy_param_grads). Held-out elements are the generalization test. PBE/PBEsol are baselines, not targets. Prototype: reduced cutoffs, provisional experimental V0 (replace with Hao 2012).
…cted values Experimental lattice constants a0 [Å] (0 K static-lattice, ZPAE-removed) from Peng/Yang/Perdew/Sun PRX 6, 041005 (2016) via Mejía-Rodríguez & Trickey PRB 98, 115161 (2018) Table III. Lattice constants are the best-covered solid-state ground truth (~55 solids, cross-validated); cohesive energies are a noisier second channel; the ~13 QMC solids (Shulenburger PRB 88, 245117) are held-out.
- docs/design/learned-functional.md: scope, data (citable ZPAE targets, coverage ranking, QMC held-out), the SR-layer plan, and a candid Novelty & Value section (parametric = worse-PBEsol; the defensible gap is constrained-SR + differentiable- DFT + solids; realistic ceiling is a machine-discovered SCAN-class functional, not beating SCAN — the value is methodological). - core/xc/constrained_fx.py: ConstrainedFx — PBE-skeleton exchange with a learnable, constraint-preserving s⁴ knob (κ,μ,c₂). UEG limit and Lieb-Oxford bound hold BY CONSTRUCTION for any (κ>0,μ>0,c₂≥0); c₂=0 reduces to PBE. The searchable object the SR layer generalizes, fit through the differentiable SCF. - test_constrained_fx.py: verifies PBE-reduction + the exact-constraint guardrails. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…verride (SCF was grinding)
…transferability Pipeline validated: fitting μ vs experimental lattice constants rediscovers the PBEsol regime (μ→0.13, train MAE 2.18%→0.65%) but does NOT generalize — held-out Ge worsens (+2.66%→+3.19%), confirmed real at converged kmesh 10 (not noise). The parametric GGA ceiling is real; generalization needs the constrained richer form → meta-GGA τ.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A differentiable functional-learning pipeline for solids, an honest Stage-A
result, and the constrained-
F_xansatz for the symbolic-regression follow-on.Draft / research artifact — see the candid "Novelty & value" section in the
design doc: parametric = worse-PBEsol; the defensible gap is constrained-SR +
differentiable-DFT + solids; the value is methodological, not "beat SCAN."
What's here
docs/design/learned-functional.md— scope, citable ground-truth data (ZPAElattice constants; QMC held-out), the SR-layer plan, exact constraints, and the
honest value assessment.
benchmarks/functional_learning/train_fx.py— pressure-at-V_exp loss,dE/dθfree at convergence (
energy_param_grads), train/held-out split.core/xc/constrained_fx.py+ tests —ConstrainedFx: PBE-skeleton exchange witha constraint-preserving s⁴ knob; UEG limit + Lieb-Oxford bound hold BY
CONSTRUCTION (5/5 tests). The searchable object the SR layer generalizes.
Result (Stage A, measured)
The loop rediscovers PBEsol (μ→0.13, train MAE 2.18%→0.65%) but does not
generalize: held-out Ge worsens (+2.66%→+3.19%), confirmed real at converged
k-points. The parametric GGA ceiling is real — generalization needs the richer
constrained form → meta-GGA τ. The pipeline caught the non-transferability via the
held-out set, validating the methodology.
🤖 Generated with Claude Code