LLDDSS's picture
Upload folder using huggingface_hub
18104f9 verified
|
Raw History Blame Contribute Delete
6 kB

Baseline-intervention analysis

The premise being tested, from the top-level readme.md: if the visual tower modelled the visual world perfectly, a small stereo-baseline intervention should not change the VLM's output. Every model answers the same question about the same scene at six baselines (0.00 = the untouched original, up to 0.25), so the answers line up per sample and any change across baselines is the intervention's effect — not sampling noise, since decoding is greedy throughout.

baseline_intervention.ipynb is the visualisation layer. This file explains what the numbers mean, how to regenerate them, and what not to read into them.

Contents

File What it is
baseline_intervention.ipynb The notebook. Run top to bottom; no arguments.
readme.md This file.
analysis_summary.json All 16 runs (4 models × 4 splits): accuracy, flip rate, stability, pairwise overlap. Generated.
<model>__<task>_failure_overlap.csv The 15 baseline pairs for one run, failure and success overlap. Generated.
<model>__<task>_per_sample.csv Per-sample answer + correctness at every baseline, plus its stability class. Generated.
notebook_summary.csv The notebook's final one-row-per-run table. Written by the last cell.

Only the notebook and this readme are tracked; everything else is regenerated by

python analysis/analyze_baseline_overlap.py --result_dir result --dump_per_sample
# or
./sh/run_analysis.sh

Re-run it after any inference re-run — the CSVs carry no provenance stamp, so a stale set looks exactly like a fresh one.

What each measure means

accuracy per baseline — the headline, but the least informative here: a model can hold accuracy flat while answering differently on half the samples, because wins and losses cancel.

flip rate — the fraction of samples whose answer changes relative to baseline 0.00, right or wrong. This is the direct test of the premise. Read its shape, not its level:

  • rising with baseline ⇒ a real intervention effect, and bigger interventions move more samples.
  • high but flat from the first step ⇒ the model is near chance and the "flips" are its own indifference, not the intervention. Level 3 does this for every model (≈0.30 at b=0.05, unchanged through b=0.25).

stability — each sample is always_correct / always_wrong / unstable across the six baselines. unstable is the population the intervention actually reaches; a high rate paired with a flat flip curve means chance-level churn.

failure overlap — for each baseline pair, Jaccard over the sets of samples each one gets wrong. High ⇒ both baselines fail on the same items, so failure is a property of the item (shared difficulty). Low ⇒ each baseline breaks a different subset, so failure is driven by the intervention.

success overlap — the same Jaccard over the sets each one gets right. Not redundant: with 4-way answers the success sets are small and the failure sets large, so the two move independently, and a run can share its successes while its failures scatter. Report both.

answer agreement — the fraction of samples where two baselines give the identical answer. The pairwise generalisation of flip rate.

Reading the results

Chance is 0.500 on VSR (True/False) and 0.250 on the three Youtube levels (4-way). Raw accuracy is not comparable across splits without that, and it is not comparable across models within a split either, because all four models carry a heavy option-position bias in different directions. The notebook therefore also reports Cohen's κ, which nets out each model's own answer marginal: a model that always answers "B" scores κ = 0 regardless of how often "B" happens to be right.

Two things κ does not fix, both worth remembering before drawing conclusions:

  • κ corrects for the model's bias, not for an item's effective option count. If a split ships a distractor that any model can reject without looking at the image, its true chance level is above 1/k and every κ on it is inflated. The level-2 v1 annotations had exactly this problem (a blind text heuristic scored 0.392 against a nominal 0.250); the current v2 annotations fixed it — the same heuristic now scores 0.250.
  • κ says nothing about how a model got there. A model can post a respectable κ while its accuracy is completely unresponsive to the underlying depth differences. Check responsiveness directly before claiming a model "can do" a level.

Caveats attached to the current result set

  1. Evaluation modes are not uniform. The two Qwen2.5-VL models use the split's default answer instruction; Qwen3.5-4B uses a stricter one (Respond with exactly one character…) because it otherwise narrates and gets truncated; Qwen3.5-4B-Base uses likelihood scoring over the answer options, since it has no chat template. Measured cost of generate-vs-likelihood on a matched subset is ≈0.03 accuracy — smaller than the cross-family gaps on L1 and L3, but not negligible on L2, where the whole spread is 0.074.
  2. Level 2 is v2 data. Results predating 2026-08-29 12:00 used the v1 annotations and are not comparable. The v1 runs are kept under result/_archive_l2_v1/.
  3. Level 3 sits at chance for both Qwen2.5-VL models (κ 0.035 / 0.068). Its overlap and flip numbers are dominated by chance churn for those two, so it does not support intervention claims about them.
  4. VSR reuses an image across several statements, so its sample_id repeats (2195 rows over 1874 ids). The alignment key is (sample_id, question); keying on sample_id alone silently drops 321 rows.
  5. Level 2 still has a first-element shortcut. Knowing only which point is nearest narrows the four orderings to ~1.35 on average (blind ceiling 0.743), so L2 partly re-measures level 1a rather than full ordering ability.