summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NOVELTY.md9
-rw-r--r--RESULTS.md21
-rw-r--r--REVIEW_SCORECARD.md1
-rw-r--r--ROADMAP.md9
-rw-r--r--experiments/analyze_oral_a_failure.py23
-rw-r--r--results/oral_a_failure_diagnosis.json12
-rw-r--r--results/oral_a_hierarchical_oracle.json238
7 files changed, 307 insertions, 6 deletions
diff --git a/NOVELTY.md b/NOVELTY.md
index cebc3ab..a40928c 100644
--- a/NOVELTY.md
+++ b/NOVELTY.md
@@ -50,6 +50,15 @@ BurstCCN already:
Thus neither "apical dendrites carry vector errors", "the model reproduces Harnett Fig. 5", nor
"a dendritic local rule scales to ImageNet" is a sufficient novelty claim.
+Likewise, recursive spatial feedback, learned feedback convolutions, and local
+ReLU-gated error propagation are not new by themselves. The post-failure
+hierarchical oracle deliberately reconstructs a BP-like local adjoint and may
+guide engineering, but it cannot be presented as an SDIL contribution. Any
+trainable version must be compared directly with hierarchical FA, learned
+feedback alignment/weight-mirroring methods, and BurstCCN. The Harnett-specific
+claim remains the neutral-period somato-dendritic innovation operation under
+mixed traffic.
+
## Candidate SDIL contribution
The candidate contribution is the combination
diff --git a/RESULTS.md b/RESULTS.md
index 9a6fa81..eb8feec 100644
--- a/RESULTS.md
+++ b/RESULTS.md
@@ -707,6 +707,27 @@ toward informative hierarchical/high-level feedback context or a mechanism
that addresses remaining cross-layer/parameter-space noise; it does not
justify another rate or warmup sweep.
+The next oracle follows the actual residual DAG instead of adding global
+context. On separate 128-example BatchNorm graphs, a local map from the exact
+child error fields to each of the first six hidden populations gives:
+
+| held-out feedback family | early-third alignment |
+|:--|--:|
+| direct output, channel gated | 0.031123 |
+| plus ordinary downstream activation context | 0.032069 |
+| hierarchical 1x1 | 0.440525 |
+| hierarchical 1x1 + child ReLU gate | 0.505210 |
+| hierarchical 3x3 | 0.819917 |
+| hierarchical 3x3 + child ReLU gate | 0.999767 |
+
+The nearly exact final row is an oracle reconstruction of the local transpose
+convolution/ReLU computation, not a non-backprop learning result. Its value is
+diagnostic: spatially aligned child error fields contain the missing early
+credit, whereas ordinary downstream activations do not. A credible next method
+must learn these hierarchical feedback maps without copying forward weights
+and must compare against fixed/random hierarchical FA and BurstCCN; merely
+adding recursive feedback is established prior art.
+
## How to run
`experiments/run.py --mode {bp,fa,dfa,sdil} --dataset {mnist,fmnist,cifar10} --depth D --residual {0,1} --act {tanh,gelu,silu,relu}`
Batteries: `experiments/run_v2.sh <ds> "<depths>" <res> <act> "<seeds>" <ep> <pfx>`.
diff --git a/REVIEW_SCORECARD.md b/REVIEW_SCORECARD.md
index 59fe99e..60c58d3 100644
--- a/REVIEW_SCORECARD.md
+++ b/REVIEW_SCORECARD.md
@@ -77,6 +77,7 @@ retroactively reopened by success on standard vision benchmarks.
| 2026-07-22 / Oral-A-v2 V2-1 | Six clean frozen-forward records: structured calibration raises early/all-layer alignment to 0.0072/0.0527 but fails two frozen advancement checks | 5 → 5 | Confirms representable-subspace variance was real, while showing that early-layer causal credit remains below the standard-depth gate; V2-2 and confirmation stay closed |
| 2026-07-22 / post-failure representation oracle | Current family has a 0.0240 cross-validated early-alignment ceiling on the fixed probe versus 0.0072 learned; unconstrained basis coefficients reach 0.0549 | 5 → 5 | Localizes both a causal-regression gap and an output-error-only capacity gap, but an oracle audit supplies no task-performance evidence |
| 2026-07-22 / Oral-A-v3 V3-1 | Four clean frozen-forward records: vectorizer-space estimation raises all-layer alignment to 0.0626 but leaves early alignment at 0.0071 and fails three advancement checks | 5 → 5 | Exact lower-variance mechanics do not repair early credit; no full ResNet or confirmation evidence is opened |
+| 2026-07-22 / hierarchical oracle | Held-out gated 3x3 maps from exact child error fields reach 0.9998 early alignment; ordinary activation context remains 0.0321 | 5 → 5 | Strongly localizes the missing information to spatial hierarchical error fields, but exact-gradient oracle inputs provide no evidence that the proposed local learner can obtain them |
Future rows are appended only after an audited frozen stage. A score staying flat is informative:
engineering, theory exposition, or visualization may make the paper more defensible without
diff --git a/ROADMAP.md b/ROADMAP.md
index 4f6c315..15699e2 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -383,6 +383,15 @@ remains sealed. This closes learning-rate tuning of the same output-error-only
channel-gated family; a further branch must make a substantive feedback-context
or cross-layer-noise change.
+The fixed post-failure hierarchical oracle identifies the substantive next
+change. Ordinary downstream activation context moves early alignment only from
+`0.031123` to `0.032069`, while held-out local maps from the actual residual-DAG
+child error fields reach `0.440525` (1x1), `0.819917` (3x3), and `0.999767`
+(3x3 plus the locally available child ReLU gate). This is not task evidence
+and uses exact child gradients as oracle inputs. It establishes that future
+development should learn spatial hierarchical feedback without weight copying,
+with random/fixed hierarchical FA and BurstCCN as mandatory baselines.
+
Prepare convolutional local-update primitives and ResNet-20/32/56 protocols early. Queue frozen
runs opportunistically on authorized idle GPUs. Because BurstCCN already reports CIFAR-10 and
ImageNet scaling, dataset scale alone is not novel. The oral-level target is a memorable joint
diff --git a/experiments/analyze_oral_a_failure.py b/experiments/analyze_oral_a_failure.py
index 03549b8..b89951c 100644
--- a/experiments/analyze_oral_a_failure.py
+++ b/experiments/analyze_oral_a_failure.py
@@ -31,6 +31,9 @@ def main():
parser.add_argument(
"--v3_gate", default="results/oral_a_v3_calibration_gate.json")
parser.add_argument(
+ "--hierarchical_oracle",
+ default="results/oral_a_hierarchical_oracle.json")
+ parser.add_argument(
"--out", default="results/oral_a_failure_diagnosis.json")
args = parser.parse_args()
@@ -40,6 +43,7 @@ def main():
v2_gate = load(args.v2_gate)
representation = load(args.representation)
v3_gate = load(args.v3_gate)
+ hierarchical = load(args.hierarchical_oracle)
expected = {
"mode": "sdil", "depth": 20, "epochs": 200,
"vectorizer_mode": "channel_gated", "a_scale": 1.0,
@@ -60,6 +64,8 @@ def main():
if (v3_gate["status"] != "failed"
or v3_gate["confirmation_test_seeds_touched"]):
raise ValueError("expected a failed v3 gate with untouched confirmation")
+ if hierarchical["probe"]["test_examples_touched"] != 0:
+ raise ValueError("hierarchical oracle touched test examples")
calibration_rows = []
first_nonfinite_epoch = None
@@ -108,6 +114,7 @@ def main():
"full": args.full, "short": args.short, "gate": args.gate,
"v2_gate": args.v2_gate, "representation": args.representation,
"v3_gate": args.v3_gate,
+ "hierarchical_oracle": args.hierarchical_oracle,
},
"source_commits": {
"full": full["provenance"]["git_commit"],
@@ -174,6 +181,14 @@ def main():
["all_layer_alignment"]),
"vectorizer_subspace_gate_status": v3_gate["status"],
},
+ "post_failure_hierarchical_refinement": {
+ key: hierarchical["cosine"][key]["early_third_mean"]
+ for key in (
+ "direct_output_channel_gated",
+ "downstream_activation_context",
+ "hierarchical_1x1_gated",
+ "hierarchical_3x3_gated")
+ },
"diagnosis": {
"classification": (
"early_credit_limited_by_estimator_efficiency_and_feedback_capacity"),
@@ -185,6 +200,7 @@ def main():
"structured learning reaches 0.0072 versus a 0.0240 cross-validated family oracle",
"unconstrained coefficients raise the same spatial basis oracle only to 0.0549",
"direct A/G estimation leaves early alignment unchanged at 0.0071",
+ "held-out gated 3x3 maps from exact child errors reach 0.9998",
],
"interpretation_limit": (
"instantaneous target metrics alone do not prove zero conditional "
@@ -195,10 +211,9 @@ def main():
"direct vectorizer-space estimation then improved only middle/late "
"layers and also failed the frozen early-layer gate"),
"next_design_constraint": (
- "do not add the tested naive local-average/channel-mean bases; "
- "do not repeat the closed A/G rate grid; use a more informative "
- "hierarchical or high-level contextual feedback signal and "
- "audit remaining cross-layer noise"),
+ "do not add the tested activation contexts or repeat the closed "
+ "A/G rate grid; learn spatial hierarchical feedback without "
+ "weight copying and audit against hierarchical FA/BurstCCN"),
},
}
os.makedirs(os.path.dirname(os.path.abspath(args.out)), exist_ok=True)
diff --git a/results/oral_a_failure_diagnosis.json b/results/oral_a_failure_diagnosis.json
index b26d81e..79feb33 100644
--- a/results/oral_a_failure_diagnosis.json
+++ b/results/oral_a_failure_diagnosis.json
@@ -52,10 +52,11 @@
"matched frozen-forward unit targets later yield only 0.0011 early-layer alignment",
"structured learning reaches 0.0072 versus a 0.0240 cross-validated family oracle",
"unconstrained coefficients raise the same spatial basis oracle only to 0.0549",
- "direct A/G estimation leaves early alignment unchanged at 0.0071"
+ "direct A/G estimation leaves early alignment unchanged at 0.0071",
+ "held-out gated 3x3 maps from exact child errors reach 0.9998"
],
"interpretation_limit": "instantaneous target metrics alone do not prove zero conditional learning; structured v2 has low instantaneous cosine yet positive exact-gradient alignment",
- "next_design_constraint": "do not add the tested naive local-average/channel-mean bases; do not repeat the closed A/G rate grid; use a more informative hierarchical or high-level contextual feedback signal and audit remaining cross-layer noise",
+ "next_design_constraint": "do not add the tested activation contexts or repeat the closed A/G rate grid; learn spatial hierarchical feedback without weight copying and audit against hierarchical FA/BurstCCN",
"next_test_outcome": "representable-subspace perturbation improved alignment but failed; direct vectorizer-space estimation then improved only middle/late layers and also failed the frozen early-layer gate"
},
"frozen_outcome": {
@@ -76,6 +77,12 @@
"loss": null
}
},
+ "post_failure_hierarchical_refinement": {
+ "direct_output_channel_gated": 0.031122580851844408,
+ "downstream_activation_context": 0.032068526988258954,
+ "hierarchical_1x1_gated": 0.50521034930192,
+ "hierarchical_3x3_gated": 0.9997667354251036
+ },
"post_failure_representation_refinement": {
"channel_gated_cv_oracle_early_third_alignment": 0.02396580002561188,
"naive_local_context_cv_early_third_alignment": 0.022457713873793972,
@@ -110,6 +117,7 @@
"source_paths": {
"full": "results/oral_a_dev/sdil_full_r20_s0.json",
"gate": "results/oral_a_full_gate.json",
+ "hierarchical_oracle": "results/oral_a_hierarchical_oracle.json",
"representation": "results/oral_a_representation_diagnosis.json",
"short": "results/oral_a_short/sdil_channel_gated_lr0.03.json",
"v2_gate": "results/oral_a_v2_calibration_gate.json",
diff --git a/results/oral_a_hierarchical_oracle.json b/results/oral_a_hierarchical_oracle.json
new file mode 100644
index 0000000..545a492
--- /dev/null
+++ b/results/oral_a_hierarchical_oracle.json
@@ -0,0 +1,238 @@
+{
+ "cosine": {
+ "direct_output_channel_gated": {
+ "early_third_mean": 0.031122580851844408,
+ "per_layer": [
+ 0.014921543495746436,
+ 0.019894676282936723,
+ 0.0282271051699598,
+ 0.03533547855645916,
+ 0.04383726627872673,
+ 0.0445194153272376
+ ]
+ },
+ "downstream_activation_context": {
+ "early_third_mean": 0.032068526988258954,
+ "per_layer": [
+ 0.015172893156451723,
+ 0.02093329244734575,
+ 0.03032952347243866,
+ 0.036240372930205864,
+ 0.043887546626221505,
+ 0.04584753329689023
+ ]
+ },
+ "hierarchical_1x1": {
+ "early_third_mean": 0.44052470743135946,
+ "per_layer": [
+ 0.46788420886369614,
+ 0.3231655357294116,
+ 0.5899724506620518,
+ 0.3257336277626957,
+ 0.6199696177846528,
+ 0.3164228037856487
+ ]
+ },
+ "hierarchical_1x1_gated": {
+ "early_third_mean": 0.50521034930192,
+ "per_layer": [
+ 0.5667462015924819,
+ 0.3611245555418099,
+ 0.6843671689570183,
+ 0.3570338150608624,
+ 0.7093727314925211,
+ 0.35261762316682654
+ ]
+ },
+ "hierarchical_3x3": {
+ "early_third_mean": 0.8199172772242803,
+ "per_layer": [
+ 0.7459063715286154,
+ 0.8262732802772361,
+ 0.793522765424401,
+ 0.8599287817089369,
+ 0.8139193036048705,
+ 0.879953160801622
+ ]
+ },
+ "hierarchical_3x3_gated": {
+ "early_third_mean": 0.9997667354251036,
+ "per_layer": [
+ 0.9993640919952334,
+ 0.999799566383427,
+ 0.9999004439090606,
+ 0.9998297253276784,
+ 0.9998818831563995,
+ 0.9998247017788229
+ ]
+ }
+ },
+ "fit": {
+ "hierarchical_relative_ridge": 1e-06,
+ "ridge_role": "fixed numerical conditioning, not endpoint selection"
+ },
+ "interpretation": {
+ "direct_output_channel_gated": "current output-error-only family",
+ "downstream_activation_context": "current family plus ordinary next-node activation map",
+ "hierarchical": "local linear feedback from exact child error fields following the true residual DAG; gated variants multiply by child ReLU state",
+ "status": "post_failure_oracle_not_a_trainable_method_or_gate"
+ },
+ "network": {
+ "depth": 20,
+ "forward_state": "deterministic_initialization_no_updates",
+ "normalization": "batchnorm",
+ "residual_scale": 1.0,
+ "seed": 0,
+ "width": 16
+ },
+ "prediction_energy_over_target_energy": {
+ "direct_output_channel_gated": {
+ "early_third_mean": 0.001537713589318464,
+ "per_layer": [
+ 0.00048708346199335603,
+ 0.0008494185513749271,
+ 0.001249646051341693,
+ 0.001762353268497944,
+ 0.0023878024038859126,
+ 0.00248997779881695
+ ]
+ },
+ "downstream_activation_context": {
+ "early_third_mean": 0.0017585368373614592,
+ "per_layer": [
+ 0.0005894725033945322,
+ 0.0011358088629614706,
+ 0.0014933947759630931,
+ 0.0019371272285281854,
+ 0.002642552679428714,
+ 0.0027528649738927592
+ ]
+ },
+ "hierarchical_1x1": {
+ "early_third_mean": 0.21093509531885588,
+ "per_layer": [
+ 0.21368997518885788,
+ 0.10759142591349577,
+ 0.3482826378878522,
+ 0.10767558816021679,
+ 0.3861797202365838,
+ 0.1021912245261288
+ ]
+ },
+ "hierarchical_1x1_gated": {
+ "early_third_mean": 0.2791378873040979,
+ "per_layer": [
+ 0.3157016623047377,
+ 0.1334361923772813,
+ 0.4681671742151389,
+ 0.1292411902995396,
+ 0.5023064159214083,
+ 0.12597468870648137
+ ]
+ },
+ "hierarchical_3x3": {
+ "early_third_mean": 0.6797097711665088,
+ "per_layer": [
+ 0.5423770967465465,
+ 0.6985505551295879,
+ 0.6396710728617321,
+ 0.7498588674920689,
+ 0.6612808289892634,
+ 0.7865202057798534
+ ]
+ },
+ "hierarchical_3x3_gated": {
+ "early_third_mean": 1.0027014963437466,
+ "per_layer": [
+ 0.9733409516366273,
+ 1.024496384636999,
+ 1.0067263938527884,
+ 1.008659614236897,
+ 0.9967422111022111,
+ 1.0062434225969583
+ ]
+ }
+ },
+ "probe": {
+ "evaluation_examples": 128,
+ "fit_examples": 128,
+ "layers": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ "residual_dag_children": [
+ [
+ 1,
+ 2
+ ],
+ [
+ 2
+ ],
+ [
+ 3,
+ 4
+ ],
+ [
+ 4
+ ],
+ [
+ 5,
+ 6
+ ],
+ [
+ 6
+ ]
+ ],
+ "separate_batchnorm_graphs": true,
+ "source": "unaugmented first training-prefix examples",
+ "test_examples_touched": 0
+ },
+ "protocol": "oral_a_post_failure_hierarchical_oracle_v1",
+ "provenance": {
+ "git_commit": "45d2b57310d556c4d1e78ee185279eda14189585",
+ "git_tracked_dirty": false
+ },
+ "split": {
+ "dataset": "cifar10",
+ "input_layout": "NCHW",
+ "input_shape": [
+ 3,
+ 32,
+ 32
+ ],
+ "loader_seed": 0,
+ "normalization_mean": [
+ 0.49140000343322754,
+ 0.4821999967098236,
+ 0.4465000033378601
+ ],
+ "normalization_std": [
+ 0.24699999392032623,
+ 0.2434999942779541,
+ 0.26159998774528503
+ ],
+ "split_from_training_only": true,
+ "split_seed": 2027,
+ "test_examples": 10000,
+ "train_examples": 10000,
+ "training_augmentation": "none",
+ "validation_class_counts": {
+ "0": 500,
+ "1": 500,
+ "2": 500,
+ "3": 500,
+ "4": 500,
+ "5": 500,
+ "6": 500,
+ "7": 500,
+ "8": 500,
+ "9": 500
+ },
+ "validation_examples": 5000,
+ "validation_index_sha256": "8328b206a97c420e49e54e3eca4abe3274c4756b084355784ea3fb8059e4515b"
+ }
+}