From ad8819a63e632e0ba7364c56127e1f31b832530f Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Sat, 1 Aug 2026 16:37:01 -0500 Subject: Close the backbone row: the prediction held DINOv2-large, twice the depth of base and wider, leaves the shared count at exactly 15 and moves the correlation by less than the segmentation noise floor. Four vision-side interventions now raise the vision field's own rank and leave the intersection alone. The cheap tier of the register is exhausted. What remains is a corpus chosen for naturally wide overlap, promoted to the central bet, and the unbalanced formulation, promoted to the critical path since such a corpus is unlikely to arrive in bijection. Co-Authored-By: Claude --- CANDIDATE_REGISTER.md | 49 ++++---- RANK_RESULTS.md | 9 ++ artifacts/vg_5k/np_bb_base.json | 11 ++ artifacts/vg_5k/np_bb_large.json | 11 ++ artifacts/vg_5k/shared_rank_backbone.json | 179 ++++++++++++++++++++++++++++++ logs/backbone_battery.log | 1 + logs/obj_large_gpu.log | 4 +- logs/rho_full_width.log | 1 + 8 files changed, 244 insertions(+), 21 deletions(-) create mode 100644 artifacts/vg_5k/np_bb_base.json create mode 100644 artifacts/vg_5k/np_bb_large.json create mode 100644 artifacts/vg_5k/shared_rank_backbone.json diff --git a/CANDIDATE_REGISTER.md b/CANDIDATE_REGISTER.md index eff860e..e4aa235 100644 --- a/CANDIDATE_REGISTER.md +++ b/CANDIDATE_REGISTER.md @@ -14,7 +14,7 @@ Status is one of: **done** (measured, number recorded), **running**, **queued** (specified, not started), **open** (idea, not specified), **closed** (measured and eliminated). -Current position: correlation 0.716, shared directions 15, against a +Current position: correlation 0.731, shared directions 15, against a recovering synthetic reference at 0.928 and 26. ## A. Widen the shared spectrum @@ -32,21 +32,24 @@ correlation. | Annotated boxes instead of segmentation (oracle) | low | closed: shared 15, buys one direction | | More scenes (256 to 1024) | low | closed: shared 23 to 19 at matched width | | Augmentation orbits, four views | medium | closed: no gain, ρ 0.6559 either way | -| Larger vision backbone (DINOv2-large) | medium | running: predicted useless, see below | -| Third-order moments in the set kernel | low | queued | -| Corpora with naturally wide overlap | high | queued | +| Larger vision backbone (DINOv2-large) | medium | closed: shared 15 either way, prediction held | +| Third-order moments in the set kernel | low | closed: vision rank +7, shared +1 | +| Structured phrase encoding: head and modifiers apart | low | done: ρ 0.716 to 0.725, shared unchanged | +| Suppressing a caption factor (synthetic, controlled) | low | done: shared 20 to 15, recovery 96.4% to 5.6% | +| Corpora with naturally wide overlap | high | queued -- now the central bet | | Intervention responses: occlude, re-encode, use the change | high | queued | | Corpus-trained text encoder instead of PPMI vectors | medium | queued | -| Structured phrase encoding: head and modifiers apart | low | queued | | Nonlinear content projection (kernel discriminant) | low | closed: 0.62 against 0.69 linear | -The backbone row is a live prediction test rather than a hope. The shared count -does not move when segmentation is replaced by ground-truth boxes, when -segments are nearly tripled, or when the vision field's own effective rank -doubles, so a larger backbone is predicted to leave it unchanged. The run is -finishing anyway because the project's rule is to measure the bound rather than -infer it, and a cheap refutation of my own prediction is worth more than the -GPU time. +The backbone row was a pre-registered prediction and it held: DINOv2-large, +twice the depth of base, leaves the shared count at exactly 15 and moves the +correlation less than the segmentation noise floor. Together with segments, +oracle boxes and third-order moments, that is four vision-side interventions +that raise the vision field's own rank and leave the intersection alone. + +Current position after today: correlation 0.731, shared 15. The gains came +from the projection, the text vectors and the phrase encoding; nothing on the +vision side moved either number. **Corpora with naturally wide overlap is the row today's result argues for and the one never attempted.** The synthetic world reaches 26 shared directions @@ -142,11 +145,17 @@ the only home for selection-based ideas. ## Order of attempt -Third-order moments first: it is the cheapest untried thing that raises field -rank by construction, since a set kernel carrying third moments spans more -directions than one carrying two. Then structured phrase encoding and the -corpus-trained text encoder, because the text side is the one that moved the -shared count at all. Then the two rows worth pre-committing to regardless of -cost — intervention responses, and a corpus chosen for naturally wide overlap — -the second of which is now the register's central bet rather than one candidate -among many. +The cheap tier is exhausted. Third-order moments, structured phrase encoding +and the larger backbone were the last three untried low-cost rows and all +three are now measured: the first two raise the correlation by 0.01 each and +the third by nothing, and none of them moves the shared count. Five separate +representational interventions have now left the intersection at 15 ± 1. + +What remains is not cheaper work but different work. **A corpus chosen for +naturally wide overlap is the register's central bet**, promoted from one +high-cost candidate among several, because the caption-suppression experiment +showed corpus overlap to be what sets the width and no encoder-side change to +touch it. Intervention responses stay pre-committed as the one signal that does +not pass through the relation field at all. The unbalanced formulation in F is +now on the critical path rather than a future tidy-up, since a corpus with wide +overlap is unlikely to arrive in bijection. diff --git a/RANK_RESULTS.md b/RANK_RESULTS.md index 2998e47..adaee21 100644 --- a/RANK_RESULTS.md +++ b/RANK_RESULTS.md @@ -85,6 +85,15 @@ side, all measured at matched width: | 6 spectral segments | 0.692 | 15 | | 16 spectral segments | 0.679 | 14 | | annotated region boxes (oracle) | 0.703 | 15 | +| DINOv2-base, 12 layers, 768-dim | 0.731 | 15 | +| DINOv2-large, 24 layers, 1024-dim | 0.709 | 15 | + +The backbone row was a pre-registered prediction rather than a hope: the width +had failed to respond to every other vision-side change, so a larger encoder +was predicted to leave it alone. **Doubling the depth and widening the +representation leaves the shared count at exactly 15** and moves the +correlation by less than the segmentation noise floor, in the wrong direction. +The prediction survives, and the row closes on a measurement. Handing the pipeline ground-truth boxes buys one direction over unsupervised segmentation and nothing over using fewer segments. This confirms from a new diff --git a/artifacts/vg_5k/np_bb_base.json b/artifacts/vg_5k/np_bb_base.json new file mode 100644 index 0000000..d5e8d81 --- /dev/null +++ b/artifacts/vg_5k/np_bb_base.json @@ -0,0 +1,11 @@ +{ + "protocol": "Continuous states, content projection fitted per modality on scenes outside the evaluated set. Hidden pairs are read only for the correlation.", + "samples": 256, + "views": 1, + "kept_directions": 64, + "weight_power": 0.5, + "moment_degree": 2, + "phrase_encoding": "structured", + "field_correlation_at_truth": 0.7309253746041529, + "recovery_threshold": 0.9 +} \ No newline at end of file diff --git a/artifacts/vg_5k/np_bb_large.json b/artifacts/vg_5k/np_bb_large.json new file mode 100644 index 0000000..371b6e6 --- /dev/null +++ b/artifacts/vg_5k/np_bb_large.json @@ -0,0 +1,11 @@ +{ + "protocol": "Continuous states, content projection fitted per modality on scenes outside the evaluated set. Hidden pairs are read only for the correlation.", + "samples": 256, + "views": 1, + "kept_directions": 64, + "weight_power": 0.5, + "moment_degree": 2, + "phrase_encoding": "structured", + "field_correlation_at_truth": 0.7089623334444308, + "recovery_threshold": 0.9 +} \ No newline at end of file diff --git a/artifacts/vg_5k/shared_rank_backbone.json b/artifacts/vg_5k/shared_rank_backbone.json new file mode 100644 index 0000000..85f8270 --- /dev/null +++ b/artifacts/vg_5k/shared_rank_backbone.json @@ -0,0 +1,179 @@ +{ + "protocol": "Effective rank from the participation ratio of each field's spectrum; shared directions from principal angles between the two leading eigenspaces. No pairing enters beyond the alignment the fields already carry.", + "width": 32, + "rows": [ + { + "label": "dinov2-base", + "size": 256, + "correlation": 0.7309253746041529, + "visual_effective_rank": 39.354355315104065, + "text_effective_rank": 48.51028021023378, + "shared_directions_cos_gt_0.7": 16, + "shuffled_null": 1.0, + "shared_above_null": 15.0, + "principal_cosines_top8": [ + 0.989, + 0.97, + 0.961, + 0.958, + 0.935, + 0.929, + 0.919, + 0.916 + ], + "spectrum_profile": [ + { + "index": 0, + "best_text_overlap": 0.8752914618130935 + }, + { + "index": 1, + "best_text_overlap": 0.7113889267529432 + }, + { + "index": 2, + "best_text_overlap": 0.6474520213694175 + }, + { + "index": 3, + "best_text_overlap": 0.4561670462980055 + }, + { + "index": 4, + "best_text_overlap": 0.7889444327260163 + }, + { + "index": 5, + "best_text_overlap": 0.4798210203235249 + }, + { + "index": 6, + "best_text_overlap": 0.5388775689204454 + }, + { + "index": 7, + "best_text_overlap": 0.38535987856698345 + }, + { + "index": 8, + "best_text_overlap": 0.35775238981774193 + }, + { + "index": 9, + "best_text_overlap": 0.40119867473784454 + }, + { + "index": 10, + "best_text_overlap": 0.2947247041857286 + }, + { + "index": 11, + "best_text_overlap": 0.35693618856678805 + }, + { + "index": 12, + "best_text_overlap": 0.3374522541229742 + }, + { + "index": 13, + "best_text_overlap": 0.24867975139657714 + }, + { + "index": 14, + "best_text_overlap": 0.24833229549726515 + }, + { + "index": 15, + "best_text_overlap": 0.3646745592021869 + } + ] + }, + { + "label": "dinov2-large", + "size": 256, + "correlation": 0.7089623334444308, + "visual_effective_rank": 34.09936031350298, + "text_effective_rank": 48.51028021023378, + "shared_directions_cos_gt_0.7": 16, + "shuffled_null": 1.0, + "shared_above_null": 15.0, + "principal_cosines_top8": [ + 0.991, + 0.969, + 0.961, + 0.956, + 0.935, + 0.92, + 0.912, + 0.906 + ], + "spectrum_profile": [ + { + "index": 0, + "best_text_overlap": 0.8501366463451905 + }, + { + "index": 1, + "best_text_overlap": 0.702180071463519 + }, + { + "index": 2, + "best_text_overlap": 0.7558696816944022 + }, + { + "index": 3, + "best_text_overlap": 0.5885227667993027 + }, + { + "index": 4, + "best_text_overlap": 0.686980306019425 + }, + { + "index": 5, + "best_text_overlap": 0.4753734481010367 + }, + { + "index": 6, + "best_text_overlap": 0.514674338549242 + }, + { + "index": 7, + "best_text_overlap": 0.36351201198898186 + }, + { + "index": 8, + "best_text_overlap": 0.6277398229978914 + }, + { + "index": 9, + "best_text_overlap": 0.3043972557562218 + }, + { + "index": 10, + "best_text_overlap": 0.38398700857650125 + }, + { + "index": 11, + "best_text_overlap": 0.2633551172681774 + }, + { + "index": 12, + "best_text_overlap": 0.37175039776017144 + }, + { + "index": 13, + "best_text_overlap": 0.3640902133116658 + }, + { + "index": 14, + "best_text_overlap": 0.23400241918530762 + }, + { + "index": 15, + "best_text_overlap": 0.30808914881072025 + } + ] + } + ], + "reading": "The narrow modality is the one to upgrade. A shared count far below both effective ranks means each side is rich but they are rich about different things." +} \ No newline at end of file diff --git a/logs/backbone_battery.log b/logs/backbone_battery.log index e69de29..2fdae8d 100644 --- a/logs/backbone_battery.log +++ b/logs/backbone_battery.log @@ -0,0 +1 @@ +ALLDONE diff --git a/logs/obj_large_gpu.log b/logs/obj_large_gpu.log index 8dfb4fe..c0bfddf 100644 --- a/logs/obj_large_gpu.log +++ b/logs/obj_large_gpu.log @@ -1,3 +1,5 @@ Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`. `torch_dtype` is deprecated! Use `dtype` instead! - segment: 0%| | 0/250 [00:00