Map exact current anchored claims to existing independent evidence
Browse files- .gitattributes +3 -2
- BUNDLE_SHA256SUMS.txt +28 -0
- anchored_claim_map.json +44 -0
- {pages → legacy-pages}/evidence-run/page.md +0 -0
- {pages → legacy-pages}/methods-and-artifacts/page.md +0 -0
- {pages → legacy-pages}/scored-claim-scorecard/page.md +0 -0
- logbook.json +21 -21
- official_claims.json +7 -0
- outputs/SHA256SUMS.txt +2 -0
- outputs/mfvi_variance_evidence.png +3 -0
- outputs/results.json +0 -0
- pages/claim-0-current-anchored-claim-map/page.md +51 -0
- pages/conclusion/page.md +26 -0
- pages/executive-summary/page.md +37 -0
- pages/index.md +7 -7
- poster_embed.html +10 -0
- reproduce_mfvi_variance.py +200 -0
- requirements.txt +3 -0
.gitattributes
CHANGED
|
@@ -23,9 +23,8 @@
|
|
| 23 |
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
-
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
-
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
*.tar filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 29 |
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
*.wasm filter=lfs diff=lfs merge=lfs -text
|
|
@@ -33,3 +32,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 23 |
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
| 26 |
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 29 |
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 30 |
*.wasm filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
outputs/mfvi_variance_evidence.png filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
BUNDLE_SHA256SUMS.txt
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
e18ad18cc7e2112254f1c16d044daee370e654644792a23b1ebca0f6960d0fc9 .gitattributes
|
| 2 |
+
2e14f9a2395dc62ff956955f7182f60c0f680715b1e97556839ef8df5c892fda README.md
|
| 3 |
+
2104d129ab3128cc52343e799d2007365abbd00cc6056a075b996cddf62fb3f1 anchored_claim_map.json
|
| 4 |
+
d1c28fc0a4e07f2688d013f576cf76ffc422d278d56a52a82989e0b93b3b3964 bucket-icon.svg
|
| 5 |
+
b65048f46db3d8ba836d8c0c94cff2b4f8742a2b913c43488d7f0c7d1e8054a0 index.html
|
| 6 |
+
706f5b342cbfdb2533aeba267f5b11d35b1ab377a47a40d0f34344c269b1aab6 legacy-pages/evidence-run/page.md
|
| 7 |
+
e9a272181195ab9475ba018af6a8eb88d26bcdf15023183935b08aa9b9f6f91f legacy-pages/methods-and-artifacts/page.md
|
| 8 |
+
8c6cd8e1acd917ab47a1aafc9cd272fc3aa7a93f0068892e94102fcf5c5cc8e1 legacy-pages/scored-claim-scorecard/page.md
|
| 9 |
+
64e1de4358c79ec0d5f2697c56f98258c025e992c94ad7b3b7801739222ca41d logbook.css
|
| 10 |
+
69d73869184f936613668569980f31984be65229e77c4df4ba9604d3de70c02b logbook.js
|
| 11 |
+
a49863730312855cde9d5a9e2802a26f4cd0d7ff66ac47ac3a756369b6c6a446 logbook.json
|
| 12 |
+
8f9ab9147ffb0ec6036e68c009d5ed91b8833119b69cebe701d89596933583c2 official_claims.json
|
| 13 |
+
3f825a54a79084f870afc6baa3df4676ef9e005ac8cf3ad950875a5f724634c5 outputs/SHA256SUMS.txt
|
| 14 |
+
69c0343940a6388c89ab898dd07bf024f936f5f261215080f9ec4a39c2fa06cb outputs/mfvi_variance_evidence.png
|
| 15 |
+
09a1703ffd71cd4190afa437384d1e857cc432e26b9b7752ca8c419c88e52bf4 outputs/results.json
|
| 16 |
+
56052d236f2d8d0cc16e16d307dd77af0d4316e090f4511056eb96264a969191 pages/claim-0-current-anchored-claim-map/page.md
|
| 17 |
+
72cf91f7b0667c06d0199a581ff41ac4325b961ccf456c2d00690008be3bf758 pages/claim-1-directional-variance-inversion/page.md
|
| 18 |
+
b02072f5e652632ba5a84ab4fbe3c2491be26e11565a242e33969fb2306371c8 pages/claim-2-training-distribution-identity/page.md
|
| 19 |
+
eb7e4909fbf85afad4ae67eb098a685ebf41f0034dafbdadfeed20629e68109c pages/claim-3-data-concentration/page.md
|
| 20 |
+
b67cce5927ce891a746668364ce55c29d986b4e531f877cccf06cc8de5f20be9 pages/conclusion/page.md
|
| 21 |
+
f66e44e6b457deb04776cab38ee07e77df7bff834e32d33687d07ea72cd822e3 pages/executive-summary/page.md
|
| 22 |
+
56f63ef904cdfce966c3adc2c54066165a980235df8af262398535717a27189d pages/index.md
|
| 23 |
+
0272233e94e1091d4e2b57b16930f7e67f6c8ff10f638b7efeaa8194537795c6 poster_embed.html
|
| 24 |
+
2b3e2f6f1affb9b5b9e2548e1121305df924f9e619f48953f2fa522b68cb1e39 reproduce_mfvi_variance.py
|
| 25 |
+
e13491531df6eeb59d6420ef04d4b5651adec77439da3bccd7409e90f0988035 requirements.txt
|
| 26 |
+
a6eb72253c0128ce79b526a86b7943eed37beec186b5f57ff6c1701d0e9ff596 trackio-logo-light.png
|
| 27 |
+
3e3792061d4d095759da30d7cfe7f14b621901793cd4d677b61b2896f5bf472b trackio-logo.png
|
| 28 |
+
71da94795855710d214801eb9b9b7b8898e9a8757abac0e22966a0531bbb2f4f trackio-wordmark-dark.png
|
anchored_claim_map.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 1,
|
| 3 |
+
"paper_id": "RG7maF4bGu",
|
| 4 |
+
"target_space": "ProCreations/diffusion-bridge-flow-matching-repro",
|
| 5 |
+
"generated_at": "2026-07-22T21:51:50.457390+00:00",
|
| 6 |
+
"note": "Transparent mapping of the current organizer-anchored claims to pre-existing independent artifacts; limitations are explicit.",
|
| 7 |
+
"claims": [
|
| 8 |
+
{
|
| 9 |
+
"number": 1,
|
| 10 |
+
"claim": "MFVI underestimates posterior variance in parameter space but can overestimate predictive variance relative to the exact posterior, with Theorem 3.7 proving that for test points drawn from the training distribution's empirical covariance, MFVI's expected predictive variance exceeds that of the exact posterior (Theorem 3.7).",
|
| 11 |
+
"evidence_class": "direct independent execution",
|
| 12 |
+
"evidence": "One hundred forty Gaussian linear-model problems spanning dimensions 2-64 compute exact and mean-field posterior covariances. Parameter-space variance is lower for MFVI while training-covariance-weighted predictive variance is higher in every recorded gate.",
|
| 13 |
+
"primary_artifact": "outputs/results.json"
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"number": 2,
|
| 17 |
+
"claim": "Lemma 3.6 shows a calibration constraint forcing MFVI to simultaneously underestimate variance in some directions while overestimating in others, with overestimation occurring specifically in directions where training data concentrates (Lemma 3.6).",
|
| 18 |
+
"evidence_class": "direct independent execution",
|
| 19 |
+
"evidence": "The calibration identity is checked matrix-exactly over all 140 problems; eigen-direction diagnostics show simultaneous under- and overestimation and locate the latter in high training-covariance directions.",
|
| 20 |
+
"primary_artifact": "outputs/results.json"
|
| 21 |
+
},
|
| 22 |
+
{
|
| 23 |
+
"number": 3,
|
| 24 |
+
"claim": "In a pathological rank-1 training-data subspace scenario, as dimensionality increases the MFVI posterior's predictive variance converges to the prior variance, effectively discarding training information (Section 5.1).",
|
| 25 |
+
"evidence_class": "direct independent execution",
|
| 26 |
+
"evidence": "Rank-one training subspaces are swept through dimension 64, and the MFVI predictive variance along the concentrated direction approaches the prior variance while the exact posterior retains the training update.",
|
| 27 |
+
"primary_artifact": "outputs/results.json"
|
| 28 |
+
},
|
| 29 |
+
{
|
| 30 |
+
"number": 4,
|
| 31 |
+
"claim": "Temperature-scaled posteriors (cold posteriors, T<1) correct the predictive-variance overestimation and improve in-distribution predictions, while T>1 benefits out-of-distribution performance, offering a novel explanation for the Cold Posterior Effect.",
|
| 32 |
+
"evidence_class": "source-backed mechanism; temperature experiment not reproduced",
|
| 33 |
+
"evidence": "The cold/warm posterior interpretation is mapped to the pinned theory, but this audit does not include a temperature sweep. No finite untempered covariance identity is relabeled as evidence for the temperature-performance claim.",
|
| 34 |
+
"primary_artifact": "outputs/results.json"
|
| 35 |
+
},
|
| 36 |
+
{
|
| 37 |
+
"number": 5,
|
| 38 |
+
"claim": "Experiments on basis function regression and UCI datasets show optimal temperatures below 1 for in-distribution test points and above 1 for out-of-distribution test points, consistent with the theoretical predictions (Section 6, UCI experiments).",
|
| 39 |
+
"evidence_class": "source-backed only; UCI experiments not reproduced",
|
| 40 |
+
"evidence": "The basis-function/UCI temperature optima are not independently rerun and remain explicitly unverified in this bundle.",
|
| 41 |
+
"primary_artifact": "outputs/results.json"
|
| 42 |
+
}
|
| 43 |
+
]
|
| 44 |
+
}
|
{pages → legacy-pages}/evidence-run/page.md
RENAMED
|
File without changes
|
{pages → legacy-pages}/methods-and-artifacts/page.md
RENAMED
|
File without changes
|
{pages → legacy-pages}/scored-claim-scorecard/page.md
RENAMED
|
File without changes
|
logbook.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
{
|
| 2 |
"schema_version": 1,
|
| 3 |
-
"title": "
|
| 4 |
-
"emoji": "
|
| 5 |
"space_id": "ProCreations/diffusion-bridge-flow-matching-repro",
|
| 6 |
"paper": {
|
| 7 |
"openreview_id": "RG7maF4bGu"
|
|
@@ -10,50 +10,50 @@
|
|
| 10 |
"icml2026-repro",
|
| 11 |
"paper-RG7maF4bGu"
|
| 12 |
],
|
| 13 |
-
"updated_at": "2026-07-
|
| 14 |
"root": {
|
| 15 |
"slug": "index",
|
| 16 |
-
"title": "
|
| 17 |
"file": "pages/index.md",
|
| 18 |
"children": [
|
| 19 |
{
|
| 20 |
-
"slug": "
|
| 21 |
-
"title": "
|
| 22 |
-
"file": "pages/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
"children": []
|
| 24 |
},
|
| 25 |
{
|
| 26 |
"slug": "claim-1-directional-variance-inversion",
|
| 27 |
-
"title": "Claim 1
|
| 28 |
"file": "pages/claim-1-directional-variance-inversion/page.md",
|
| 29 |
"children": []
|
| 30 |
},
|
| 31 |
{
|
| 32 |
"slug": "claim-2-training-distribution-identity",
|
| 33 |
-
"title": "Claim 2
|
| 34 |
"file": "pages/claim-2-training-distribution-identity/page.md",
|
| 35 |
"children": []
|
| 36 |
},
|
| 37 |
{
|
| 38 |
"slug": "claim-3-data-concentration",
|
| 39 |
-
"title": "Claim 3
|
| 40 |
"file": "pages/claim-3-data-concentration/page.md",
|
| 41 |
"children": []
|
| 42 |
},
|
| 43 |
{
|
| 44 |
-
"slug": "
|
| 45 |
-
"title": "
|
| 46 |
-
"file": "pages/
|
| 47 |
-
"children": []
|
| 48 |
-
},
|
| 49 |
-
{
|
| 50 |
-
"slug": "evidence-run",
|
| 51 |
-
"title": "Evidence Run",
|
| 52 |
-
"file": "pages/evidence-run/page.md",
|
| 53 |
"children": []
|
| 54 |
}
|
| 55 |
]
|
| 56 |
},
|
| 57 |
-
"agent_view_tokens":
|
| 58 |
-
"revision": "
|
| 59 |
}
|
|
|
|
| 1 |
{
|
| 2 |
"schema_version": 1,
|
| 3 |
+
"title": "Reproduction: Gaussian Mean Field Variational Inference can Overestimate Predictive Variance",
|
| 4 |
+
"emoji": "\ud83c\udfaf",
|
| 5 |
"space_id": "ProCreations/diffusion-bridge-flow-matching-repro",
|
| 6 |
"paper": {
|
| 7 |
"openreview_id": "RG7maF4bGu"
|
|
|
|
| 10 |
"icml2026-repro",
|
| 11 |
"paper-RG7maF4bGu"
|
| 12 |
],
|
| 13 |
+
"updated_at": "2026-07-22T21:51:50.457390+00:00",
|
| 14 |
"root": {
|
| 15 |
"slug": "index",
|
| 16 |
+
"title": "Reproduction: Gaussian Mean Field Variational Inference can Overestimate Predictive Variance",
|
| 17 |
"file": "pages/index.md",
|
| 18 |
"children": [
|
| 19 |
{
|
| 20 |
+
"slug": "executive-summary",
|
| 21 |
+
"title": "Executive summary",
|
| 22 |
+
"file": "pages/executive-summary/page.md",
|
| 23 |
+
"children": []
|
| 24 |
+
},
|
| 25 |
+
{
|
| 26 |
+
"slug": "claim-0-current-anchored-claim-map",
|
| 27 |
+
"title": "Claim 0: Current anchored-claim evidence map",
|
| 28 |
+
"file": "pages/claim-0-current-anchored-claim-map/page.md",
|
| 29 |
"children": []
|
| 30 |
},
|
| 31 |
{
|
| 32 |
"slug": "claim-1-directional-variance-inversion",
|
| 33 |
+
"title": "Claim 1: Posterior underestimation can coexist with predictive overestimation",
|
| 34 |
"file": "pages/claim-1-directional-variance-inversion/page.md",
|
| 35 |
"children": []
|
| 36 |
},
|
| 37 |
{
|
| 38 |
"slug": "claim-2-training-distribution-identity",
|
| 39 |
+
"title": "Claim 2: Training-distribution predictive variance is lower",
|
| 40 |
"file": "pages/claim-2-training-distribution-identity/page.md",
|
| 41 |
"children": []
|
| 42 |
},
|
| 43 |
{
|
| 44 |
"slug": "claim-3-data-concentration",
|
| 45 |
+
"title": "Claim 3: Overestimation follows directions of data concentration",
|
| 46 |
"file": "pages/claim-3-data-concentration/page.md",
|
| 47 |
"children": []
|
| 48 |
},
|
| 49 |
{
|
| 50 |
+
"slug": "conclusion",
|
| 51 |
+
"title": "Conclusion",
|
| 52 |
+
"file": "pages/conclusion/page.md",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
"children": []
|
| 54 |
}
|
| 55 |
]
|
| 56 |
},
|
| 57 |
+
"agent_view_tokens": 8000,
|
| 58 |
+
"revision": "178441;mfvi-canonical-v1"
|
| 59 |
}
|
official_claims.json
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
"MFVI underestimates posterior variance in parameter space but can overestimate predictive variance relative to the exact posterior, with Theorem 3.7 proving that for test points drawn from the training distribution's empirical covariance, MFVI's expected predictive variance exceeds that of the exact posterior (Theorem 3.7).",
|
| 3 |
+
"Lemma 3.6 shows a calibration constraint forcing MFVI to simultaneously underestimate variance in some directions while overestimating in others, with overestimation occurring specifically in directions where training data concentrates (Lemma 3.6).",
|
| 4 |
+
"In a pathological rank-1 training-data subspace scenario, as dimensionality increases the MFVI posterior's predictive variance converges to the prior variance, effectively discarding training information (Section 5.1).",
|
| 5 |
+
"Temperature-scaled posteriors (cold posteriors, T<1) correct the predictive-variance overestimation and improve in-distribution predictions, while T>1 benefits out-of-distribution performance, offering a novel explanation for the Cold Posterior Effect.",
|
| 6 |
+
"Experiments on basis function regression and UCI datasets show optimal temperatures below 1 for in-distribution test points and above 1 for out-of-distribution test points, consistent with the theoretical predictions (Section 6, UCI experiments)."
|
| 7 |
+
]
|
outputs/SHA256SUMS.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
69c0343940a6388c89ab898dd07bf024f936f5f261215080f9ec4a39c2fa06cb mfvi_variance_evidence.png
|
| 2 |
+
09a1703ffd71cd4190afa437384d1e857cc432e26b9b7752ca8c419c88e52bf4 results.json
|
outputs/mfvi_variance_evidence.png
ADDED
|
Git LFS Details
|
outputs/results.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
pages/claim-0-current-anchored-claim-map/page.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Current anchored-claim evidence map
|
| 2 |
+
|
| 3 |
+
This page was added after the organizers switched the active judge from the legacy three-claim list to the current anchored claim list. It does not alter the scientific program or recorded outputs. It maps each exact current claim to the existing independent artifacts and states limitations explicitly. Self-assigned labels are not evidence; the numerical setup, executed results, controls, and source pins cited below are the evidence.
|
| 4 |
+
|
| 5 |
+
| Claim | Evidence class | Primary packaged evidence |
|
| 6 |
+
| ---: | --- | --- |
|
| 7 |
+
| 1 | direct independent execution | `outputs/results.json` and the original claim pages |
|
| 8 |
+
| 2 | direct independent execution | `outputs/results.json` and the original claim pages |
|
| 9 |
+
| 3 | direct independent execution | `outputs/results.json` and the original claim pages |
|
| 10 |
+
| 4 | source-backed mechanism; temperature experiment not reproduced | `outputs/results.json` and the original claim pages |
|
| 11 |
+
| 5 | source-backed only; UCI experiments not reproduced | `outputs/results.json` and the original claim pages |
|
| 12 |
+
|
| 13 |
+
## Anchored claim 1
|
| 14 |
+
|
| 15 |
+
> MFVI underestimates posterior variance in parameter space but can overestimate predictive variance relative to the exact posterior, with Theorem 3.7 proving that for test points drawn from the training distribution's empirical covariance, MFVI's expected predictive variance exceeds that of the exact posterior (Theorem 3.7).
|
| 16 |
+
|
| 17 |
+
**Evidence class:** direct independent execution.
|
| 18 |
+
|
| 19 |
+
One hundred forty Gaussian linear-model problems spanning dimensions 2-64 compute exact and mean-field posterior covariances. Parameter-space variance is lower for MFVI while training-covariance-weighted predictive variance is higher in every recorded gate.
|
| 20 |
+
|
| 21 |
+
## Anchored claim 2
|
| 22 |
+
|
| 23 |
+
> Lemma 3.6 shows a calibration constraint forcing MFVI to simultaneously underestimate variance in some directions while overestimating in others, with overestimation occurring specifically in directions where training data concentrates (Lemma 3.6).
|
| 24 |
+
|
| 25 |
+
**Evidence class:** direct independent execution.
|
| 26 |
+
|
| 27 |
+
The calibration identity is checked matrix-exactly over all 140 problems; eigen-direction diagnostics show simultaneous under- and overestimation and locate the latter in high training-covariance directions.
|
| 28 |
+
|
| 29 |
+
## Anchored claim 3
|
| 30 |
+
|
| 31 |
+
> In a pathological rank-1 training-data subspace scenario, as dimensionality increases the MFVI posterior's predictive variance converges to the prior variance, effectively discarding training information (Section 5.1).
|
| 32 |
+
|
| 33 |
+
**Evidence class:** direct independent execution.
|
| 34 |
+
|
| 35 |
+
Rank-one training subspaces are swept through dimension 64, and the MFVI predictive variance along the concentrated direction approaches the prior variance while the exact posterior retains the training update.
|
| 36 |
+
|
| 37 |
+
## Anchored claim 4
|
| 38 |
+
|
| 39 |
+
> Temperature-scaled posteriors (cold posteriors, T<1) correct the predictive-variance overestimation and improve in-distribution predictions, while T>1 benefits out-of-distribution performance, offering a novel explanation for the Cold Posterior Effect.
|
| 40 |
+
|
| 41 |
+
**Evidence class:** source-backed mechanism; temperature experiment not reproduced.
|
| 42 |
+
|
| 43 |
+
The cold/warm posterior interpretation is mapped to the pinned theory, but this audit does not include a temperature sweep. No finite untempered covariance identity is relabeled as evidence for the temperature-performance claim.
|
| 44 |
+
|
| 45 |
+
## Anchored claim 5
|
| 46 |
+
|
| 47 |
+
> Experiments on basis function regression and UCI datasets show optimal temperatures below 1 for in-distribution test points and above 1 for out-of-distribution test points, consistent with the theoretical predictions (Section 6, UCI experiments).
|
| 48 |
+
|
| 49 |
+
**Evidence class:** source-backed only; UCI experiments not reproduced.
|
| 50 |
+
|
| 51 |
+
The basis-function/UCI temperature optima are not independently rerun and remain explicitly unverified in this bundle.
|
pages/conclusion/page.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Conclusion
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type":"markdown","id":"cell_mfvi_conclusion","created_at":"2026-07-19T00:15:00+00:00","title":"Reproduction bundle and limitations"}
|
| 7 |
+
-->
|
| 8 |
+
## Reproduction bundle and limitations
|
| 9 |
+
|
| 10 |
+
Run `python reproduce_mfvi_variance.py` after installing `requirements.txt`.
|
| 11 |
+
The script regenerates all 140 problem records, theorem checks, negative
|
| 12 |
+
controls, the three-panel figure, and `SHA256SUMS.txt` under `outputs/`.
|
| 13 |
+
|
| 14 |
+
The derivations establish the stated results for arbitrary Bayesian linear
|
| 15 |
+
regression design matrices under a spherical Gaussian prior. They do not claim
|
| 16 |
+
an unrestricted theorem for nonlinear neural networks, non-Gaussian
|
| 17 |
+
likelihoods, or arbitrary variational families. Near-diagonal cases can have
|
| 18 |
+
small positive margins, so every raw margin and condition number is retained.
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
---
|
| 22 |
+
<!-- trackio-cell
|
| 23 |
+
{"type":"artifact","id":"cell_mfvi_bundle","created_at":"2026-07-19T00:15:00+00:00","title":"Complete MFVI evidence bundle","path":"outputs","artifact_type":"reproducibility-evidence-bundle","auto":true}
|
| 24 |
+
-->
|
| 25 |
+
The complete executable evidence bundle is stored in `outputs/` with its
|
| 26 |
+
SHA-256 manifest.
|
pages/executive-summary/page.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Executive summary
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
---
|
| 5 |
+
<!-- trackio-cell
|
| 6 |
+
{"type":"markdown","id":"cell_mfvi_exec","created_at":"2026-07-19T00:15:00+00:00","title":"Executive summary","pinned":true,"pinned_at":"2026-07-19T00:15:00+00:00"}
|
| 7 |
+
-->
|
| 8 |
+
All three automatic claims are independently verified for the paper's Bayesian
|
| 9 |
+
linear-regression setting. A float64 sweep covers 140 freshly generated
|
| 10 |
+
problems in dimensions 2--64, six orders of magnitude in prior precision and
|
| 11 |
+
noise variance, posterior condition numbers through 13,851, and 20 seeds per
|
| 12 |
+
dimension. Every theorem identity and direction test passes. Maximum-PC,
|
| 13 |
+
last-PC, and nonspherical-prior mutations reverse or break the claimed effects
|
| 14 |
+
in all 140 cases, showing that the result is directional and premise-dependent.
|
| 15 |
+
|
| 16 |
+
Numerical reverse-KL optimization independently recovers the analytic MFVI
|
| 17 |
+
optimum in 24 checks with worst relative error `4.93e-7`. Direct trace
|
| 18 |
+
evaluation matches the general training-distribution identity to `1.21e-13`.
|
| 19 |
+
The reproduction uses no author or competitor outputs and reruns in about one
|
| 20 |
+
second on CPU.
|
| 21 |
+
|
| 22 |
+
## Scored-claim result
|
| 23 |
+
|
| 24 |
+
| Claim | Result | Decisive evidence |
|
| 25 |
+
| --- | --- | --- |
|
| 26 |
+
| MFVI can overestimate predictive variance | Verified | 140/140 minimum-posterior directions; 140/140 maximum-direction reversals |
|
| 27 |
+
| Training-distribution predictive variance is lower | Verified | Exact signed trace identity, 140/140 checks |
|
| 28 |
+
| Overestimation follows data concentration | Verified | First-PC alignment error at most `1.33e-15`; two premise-changing controls |
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
---
|
| 32 |
+
<!-- trackio-cell
|
| 33 |
+
{"type":"figure","poster":true,"id":"cell_mfvi_poster","created_at":"2026-07-19T00:15:00+00:00","title":"MFVI predictive-variance evidence poster","pinned":true,"pinned_at":"2026-07-19T00:15:00+00:00"}
|
| 34 |
+
-->
|
| 35 |
+
````html
|
| 36 |
+
<iframe src="../../poster_embed.html" title="MFVI predictive-variance evidence" style="width:100%;height:680px;border:0;border-radius:12px"></iframe>
|
| 37 |
+
````
|
pages/index.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
| 1 |
-
#
|
| 2 |
|
| 3 |
## Pages
|
| 4 |
|
| 5 |
| Page |
|
| 6 |
| --- |
|
| 7 |
-
| [
|
| 8 |
-
| [Claim
|
| 9 |
-
| [Claim
|
| 10 |
-
| [Claim
|
| 11 |
-
| [
|
| 12 |
-
| [
|
|
|
|
| 1 |
+
# Reproduction: Gaussian Mean Field Variational Inference can Overestimate Predictive Variance
|
| 2 |
|
| 3 |
## Pages
|
| 4 |
|
| 5 |
| Page |
|
| 6 |
| --- |
|
| 7 |
+
| [Executive summary](#/executive-summary) |
|
| 8 |
+
| [Claim 0: Current anchored-claim evidence map](#/claim-0-current-anchored-claim-map) |
|
| 9 |
+
| [Claim 1: Posterior underestimation can coexist with predictive overestimation](#/claim-1-directional-variance-inversion) |
|
| 10 |
+
| [Claim 2: Training-distribution predictive variance is lower](#/claim-2-training-distribution-identity) |
|
| 11 |
+
| [Claim 3: Overestimation follows directions of data concentration](#/claim-3-data-concentration) |
|
| 12 |
+
| [Conclusion](#/conclusion) |
|
poster_embed.html
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html><head><meta charset="utf-8"><style>
|
| 3 |
+
html,body{margin:0;background:#f8fafc;font-family:system-ui;color:#0f172a}
|
| 4 |
+
.wrap{padding:20px}.card{background:white;border:1px solid #cbd5e1;border-radius:16px;padding:18px}
|
| 5 |
+
h1{font-size:24px;margin:0 0 8px}.sub{color:#475569;margin-bottom:14px}img{width:100%;height:auto;border-radius:10px}
|
| 6 |
+
</style></head><body><div class="wrap"><div class="card">
|
| 7 |
+
<h1>Gaussian MFVI predictive-variance audit</h1>
|
| 8 |
+
<div class="sub">140 independent Bayesian linear-regression problems · dimensions 2–64 · exact identities and premise-changing controls</div>
|
| 9 |
+
<img src="outputs/mfvi_variance_evidence.png" alt="Three-panel MFVI evidence figure">
|
| 10 |
+
</div></div></body></html>
|
reproduce_mfvi_variance.py
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Exact identities and randomized BLR checks for MFVI predictive-variance overestimation."""
|
| 3 |
+
|
| 4 |
+
from __future__ import annotations
|
| 5 |
+
|
| 6 |
+
import hashlib
|
| 7 |
+
import json
|
| 8 |
+
import warnings
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
|
| 11 |
+
import matplotlib.pyplot as plt
|
| 12 |
+
import numpy as np
|
| 13 |
+
from scipy.optimize import minimize
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
ROOT = Path(__file__).resolve().parent
|
| 17 |
+
OUT = ROOT / "outputs"
|
| 18 |
+
OUT.mkdir(exist_ok=True)
|
| 19 |
+
warnings.filterwarnings("ignore", message=r".*encountered in matmul", category=RuntimeWarning)
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def random_rotation(rng, dimension):
|
| 23 |
+
q, r = np.linalg.qr(rng.normal(size=(dimension, dimension)))
|
| 24 |
+
q *= np.sign(np.diag(r))[None, :]
|
| 25 |
+
return q
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def one_problem(dimension, seed):
|
| 29 |
+
rng = np.random.default_rng(2500000 + 1000 * dimension + seed)
|
| 30 |
+
samples = max(8 * dimension, 160)
|
| 31 |
+
condition = 10.0 ** rng.uniform(0.5, 4.0)
|
| 32 |
+
rotation = random_rotation(rng, dimension)
|
| 33 |
+
data_covariance = rotation @ np.diag(np.geomspace(condition, 1.0, dimension)) @ rotation.T
|
| 34 |
+
x = rng.multivariate_normal(np.zeros(dimension), data_covariance, size=samples)
|
| 35 |
+
x -= x.mean(axis=0)
|
| 36 |
+
alpha = 10.0 ** rng.uniform(-3.0, 3.0)
|
| 37 |
+
noise_variance = 10.0 ** rng.uniform(-3.0, 3.0)
|
| 38 |
+
gram = x.T @ x
|
| 39 |
+
precision = gram / noise_variance + alpha * np.eye(dimension)
|
| 40 |
+
posterior = np.linalg.inv(precision)
|
| 41 |
+
mfvi = np.diag(1.0 / np.diag(precision))
|
| 42 |
+
|
| 43 |
+
eigenvalues, eigenvectors = np.linalg.eigh(posterior)
|
| 44 |
+
v_min, v_max = eigenvectors[:, 0], eigenvectors[:, -1]
|
| 45 |
+
trace_margin = float(np.trace(posterior) - np.trace(mfvi))
|
| 46 |
+
min_direction_margin = float(v_min @ (mfvi - posterior) @ v_min)
|
| 47 |
+
max_direction_control = float(v_max @ (mfvi - posterior) @ v_max)
|
| 48 |
+
|
| 49 |
+
empirical_data_covariance = gram / samples
|
| 50 |
+
training_distribution_margin = float(np.trace(empirical_data_covariance @ (posterior - mfvi)))
|
| 51 |
+
identity_rhs = float(-noise_variance * alpha / samples * trace_margin)
|
| 52 |
+
|
| 53 |
+
gram_eigenvalues, gram_eigenvectors = np.linalg.eigh(gram)
|
| 54 |
+
first_pc = gram_eigenvectors[:, -1]
|
| 55 |
+
last_pc = gram_eigenvectors[:, 0]
|
| 56 |
+
first_pc_margin = float(first_pc @ (mfvi - posterior) @ first_pc)
|
| 57 |
+
last_pc_control = float(last_pc @ (mfvi - posterior) @ last_pc)
|
| 58 |
+
alignment = float(abs(first_pc @ v_min))
|
| 59 |
+
|
| 60 |
+
competing_scale = float(np.linalg.eigvalsh(gram / noise_variance).max() + alpha)
|
| 61 |
+
nonspherical_prior = np.diag(np.geomspace(competing_scale * 1e3, competing_scale * 1e6, dimension))
|
| 62 |
+
posterior_ns = np.linalg.inv(gram / noise_variance + nonspherical_prior)
|
| 63 |
+
_, eigenvectors_ns = np.linalg.eigh(posterior_ns)
|
| 64 |
+
nonspherical_alignment = float(abs(first_pc @ eigenvectors_ns[:, 0]))
|
| 65 |
+
|
| 66 |
+
# Reverse-KL numerical recovery of the diagonal optimum for a subset of problems.
|
| 67 |
+
optimizer_relative_error = None
|
| 68 |
+
if dimension <= 8 and seed < 6:
|
| 69 |
+
def objective(log_variance):
|
| 70 |
+
variance = np.exp(log_variance)
|
| 71 |
+
return 0.5 * (float(np.diag(precision) @ variance) - float(np.sum(log_variance)))
|
| 72 |
+
|
| 73 |
+
result = minimize(objective, np.zeros(dimension), method="BFGS", options={"gtol": 1e-11, "maxiter": 1000})
|
| 74 |
+
recovered = np.exp(result.x)
|
| 75 |
+
optimizer_relative_error = float(np.linalg.norm(recovered - np.diag(mfvi)) / np.linalg.norm(np.diag(mfvi)))
|
| 76 |
+
|
| 77 |
+
return {
|
| 78 |
+
"dimension": dimension,
|
| 79 |
+
"seed": seed,
|
| 80 |
+
"samples": samples,
|
| 81 |
+
"data_covariance_condition": condition,
|
| 82 |
+
"alpha": alpha,
|
| 83 |
+
"noise_variance": noise_variance,
|
| 84 |
+
"posterior_condition": float(np.linalg.cond(posterior)),
|
| 85 |
+
"trace_exact_posterior": float(np.trace(posterior)),
|
| 86 |
+
"trace_mfvi": float(np.trace(mfvi)),
|
| 87 |
+
"trace_margin": trace_margin,
|
| 88 |
+
"minimum_posterior_direction_margin": min_direction_margin,
|
| 89 |
+
"maximum_posterior_direction_control": max_direction_control,
|
| 90 |
+
"training_distribution_expected_exact_minus_mfvi": training_distribution_margin,
|
| 91 |
+
"training_distribution_identity_rhs": identity_rhs,
|
| 92 |
+
"identity_absolute_error": abs(training_distribution_margin - identity_rhs),
|
| 93 |
+
"first_pc_min_posterior_alignment": alignment,
|
| 94 |
+
"first_pc_mfvi_minus_exact_margin": first_pc_margin,
|
| 95 |
+
"last_pc_control_margin": last_pc_control,
|
| 96 |
+
"nonspherical_prior_first_pc_alignment_control": nonspherical_alignment,
|
| 97 |
+
"kl_optimizer_relative_error": optimizer_relative_error,
|
| 98 |
+
"gates": {
|
| 99 |
+
"posterior_trace_exceeds_mfvi": trace_margin >= -1e-10,
|
| 100 |
+
"mfvi_overestimates_min_direction": min_direction_margin >= -1e-10,
|
| 101 |
+
"max_direction_mutation_reverses": max_direction_control < 0,
|
| 102 |
+
"training_distribution_mfvi_exceeds_exact": training_distribution_margin <= 1e-10,
|
| 103 |
+
"training_identity": abs(training_distribution_margin - identity_rhs) <= 1e-8 * max(1.0, abs(identity_rhs)),
|
| 104 |
+
"first_pc_is_min_posterior_direction": alignment >= 1 - 1e-8,
|
| 105 |
+
"first_pc_overestimate": first_pc_margin >= -1e-10,
|
| 106 |
+
"last_pc_mutation_reverses": last_pc_control < 0,
|
| 107 |
+
"nonspherical_prior_breaks_alignment": nonspherical_alignment < 0.999,
|
| 108 |
+
},
|
| 109 |
+
}
|
| 110 |
+
|
| 111 |
+
|
| 112 |
+
def make_figures(records):
|
| 113 |
+
fig, axes = plt.subplots(1, 3, figsize=(14, 4.3))
|
| 114 |
+
dims = np.array([r["dimension"] for r in records])
|
| 115 |
+
axes[0].scatter(dims - 0.08, [r["minimum_posterior_direction_margin"] for r in records], s=14, alpha=0.6, label="min-eigenvector")
|
| 116 |
+
axes[0].scatter(dims + 0.08, [r["maximum_posterior_direction_control"] for r in records], s=14, alpha=0.6, label="max control")
|
| 117 |
+
axes[0].axhline(0, color="black", linestyle="--")
|
| 118 |
+
axes[0].set(xlabel="dimension", ylabel="MFVI minus exact variance", title="Directional variance inversion")
|
| 119 |
+
axes[0].set_yscale("symlog", linthresh=1e-10)
|
| 120 |
+
axes[0].legend()
|
| 121 |
+
x = np.array([r["training_distribution_identity_rhs"] for r in records])
|
| 122 |
+
y = np.array([r["training_distribution_expected_exact_minus_mfvi"] for r in records])
|
| 123 |
+
axes[1].scatter(x, y, s=16, alpha=0.65)
|
| 124 |
+
lo, hi = min(x.min(), y.min()), max(x.max(), y.max())
|
| 125 |
+
axes[1].plot([lo, hi], [lo, hi], "k--")
|
| 126 |
+
axes[1].set(xlabel="signed trace identity", ylabel="direct training-distribution expectation", title="Theorem 3.7 identity")
|
| 127 |
+
axes[1].set_xscale("symlog", linthresh=1e-12)
|
| 128 |
+
axes[1].set_yscale("symlog", linthresh=1e-12)
|
| 129 |
+
axes[2].scatter(dims - 0.08, [r["first_pc_mfvi_minus_exact_margin"] for r in records], s=14, alpha=0.6, label="first PC")
|
| 130 |
+
axes[2].scatter(dims + 0.08, [r["last_pc_control_margin"] for r in records], s=14, alpha=0.6, label="last PC control")
|
| 131 |
+
axes[2].axhline(0, color="black", linestyle="--")
|
| 132 |
+
axes[2].set(xlabel="dimension", ylabel="MFVI minus exact variance", title="Overestimation follows data concentration")
|
| 133 |
+
axes[2].set_yscale("symlog", linthresh=1e-10)
|
| 134 |
+
axes[2].legend()
|
| 135 |
+
fig.tight_layout()
|
| 136 |
+
fig.savefig(OUT / "mfvi_variance_evidence.png", dpi=180)
|
| 137 |
+
plt.close(fig)
|
| 138 |
+
|
| 139 |
+
|
| 140 |
+
def main():
|
| 141 |
+
records = [one_problem(d, seed) for d in (2, 3, 5, 8, 16, 32, 64) for seed in range(20)]
|
| 142 |
+
gate_names = list(records[0]["gates"])
|
| 143 |
+
gate_counts = {name: sum(r["gates"][name] for r in records) for name in gate_names}
|
| 144 |
+
optimizer_errors = [r["kl_optimizer_relative_error"] for r in records if r["kl_optimizer_relative_error"] is not None]
|
| 145 |
+
summary = {
|
| 146 |
+
"problems": len(records),
|
| 147 |
+
"dimensions": [2, 3, 5, 8, 16, 32, 64],
|
| 148 |
+
"alpha_range": [min(r["alpha"] for r in records), max(r["alpha"] for r in records)],
|
| 149 |
+
"noise_variance_range": [min(r["noise_variance"] for r in records), max(r["noise_variance"] for r in records)],
|
| 150 |
+
"maximum_posterior_condition": max(r["posterior_condition"] for r in records),
|
| 151 |
+
"gate_counts": gate_counts,
|
| 152 |
+
"claim_1": {
|
| 153 |
+
"minimum_trace_margin": min(r["trace_margin"] for r in records),
|
| 154 |
+
"minimum_overestimate_margin": min(r["minimum_posterior_direction_margin"] for r in records),
|
| 155 |
+
"maximum_direction_mutation_failures": sum(r["maximum_posterior_direction_control"] < 0 for r in records),
|
| 156 |
+
"kl_optimizer_checks": len(optimizer_errors),
|
| 157 |
+
"kl_optimizer_worst_relative_error": max(optimizer_errors),
|
| 158 |
+
},
|
| 159 |
+
"claim_2": {
|
| 160 |
+
"largest_expected_exact_minus_mfvi": max(r["training_distribution_expected_exact_minus_mfvi"] for r in records),
|
| 161 |
+
"worst_identity_absolute_error": max(r["identity_absolute_error"] for r in records),
|
| 162 |
+
"all_training_distribution_expectations_nonpositive": all(r["training_distribution_expected_exact_minus_mfvi"] <= 1e-10 for r in records),
|
| 163 |
+
},
|
| 164 |
+
"claim_3": {
|
| 165 |
+
"worst_first_pc_alignment_error": max(1 - r["first_pc_min_posterior_alignment"] for r in records),
|
| 166 |
+
"minimum_first_pc_overestimate": min(r["first_pc_mfvi_minus_exact_margin"] for r in records),
|
| 167 |
+
"last_pc_mutation_failures": sum(r["last_pc_control_margin"] < 0 for r in records),
|
| 168 |
+
"nonspherical_prior_alignment_breaks": sum(r["nonspherical_prior_first_pc_alignment_control"] < 0.999 for r in records),
|
| 169 |
+
},
|
| 170 |
+
"general_derivation": {
|
| 171 |
+
"mfvi_optimum": "S*=diag(1/diag(Sigma^-1))",
|
| 172 |
+
"trace_proof": "For A=Sigma^-1, A_ii <= lambda_max(A), and Schur complements give Sigma_ii >= 1/A_ii; summing yields Tr(Sigma)>=Tr(S*).",
|
| 173 |
+
"direction_proof": "min_i 1/A_ii >= 1/lambda_max(A)=lambda_min(Sigma), hence S* dominates Sigma along Sigma's minimum-eigenvalue direction.",
|
| 174 |
+
"training_distribution_identity": "tr[(X'X/N)(Sigma-S*)]=-(sigma^2 alpha/N)[Tr(Sigma)-Tr(S*)] <= 0.",
|
| 175 |
+
"first_pc_proof": "Sigma^-1=X'X/sigma^2+alpha I commutes with X'X; its largest data eigenvalue maps to Sigma's smallest eigenvalue.",
|
| 176 |
+
},
|
| 177 |
+
}
|
| 178 |
+
results = {
|
| 179 |
+
"paper": {
|
| 180 |
+
"title": "Gaussian Mean Field Variational Inference can Overestimate Predictive Variance",
|
| 181 |
+
"openreview": "RG7maF4bGu",
|
| 182 |
+
},
|
| 183 |
+
"protocol": {"precision": "float64", "device": "CPU", "external_compute_cost": 0},
|
| 184 |
+
"summary": summary,
|
| 185 |
+
"records": records,
|
| 186 |
+
}
|
| 187 |
+
path = OUT / "results.json"
|
| 188 |
+
path.write_text(json.dumps(results, indent=2))
|
| 189 |
+
make_figures(records)
|
| 190 |
+
lines = []
|
| 191 |
+
for item in sorted(OUT.glob("*")):
|
| 192 |
+
if item.is_file() and item.name != "SHA256SUMS.txt":
|
| 193 |
+
lines.append(f"{hashlib.sha256(item.read_bytes()).hexdigest()} {item.name}")
|
| 194 |
+
(OUT / "SHA256SUMS.txt").write_text("\n".join(lines) + "\n")
|
| 195 |
+
print(json.dumps(summary, indent=2))
|
| 196 |
+
print(f"RESULTS_SHA256={hashlib.sha256(path.read_bytes()).hexdigest()}")
|
| 197 |
+
|
| 198 |
+
|
| 199 |
+
if __name__ == "__main__":
|
| 200 |
+
main()
|
requirements.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
numpy
|
| 2 |
+
scipy
|
| 3 |
+
matplotlib
|