<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://suuttt.github.io/structural-entropy-benchmark/feed.xml" rel="self" type="application/atom+xml" /><link href="https://suuttt.github.io/structural-entropy-benchmark/" rel="alternate" type="text/html" /><updated>2026-07-15T18:24:17+00:00</updated><id>https://suuttt.github.io/structural-entropy-benchmark/feed.xml</id><title type="html">Structural Entropy Benchmark</title><subtitle>A reproducible benchmark of structural-entropy methods — original code, shared harness, honest results, and survey companion notes.</subtitle><entry><title type="html">Auditing and Rebuilding a Hallucination Detector: An A40 Lab Notebook</title><link href="https://suuttt.github.io/structural-entropy-benchmark/2026/07/14/hallucination-detection-a40-labnote.html" rel="alternate" type="text/html" title="Auditing and Rebuilding a Hallucination Detector: An A40 Lab Notebook" /><published>2026-07-14T00:00:00+00:00</published><updated>2026-07-14T00:00:00+00:00</updated><id>https://suuttt.github.io/structural-entropy-benchmark/2026/07/14/hallucination-detection-a40-labnote</id><content type="html" xml:base="https://suuttt.github.io/structural-entropy-benchmark/2026/07/14/hallucination-detection-a40-labnote.html"><![CDATA[<blockquote>
  <p><strong>TL;DR.</strong> Five threads on a single 2×A40 box, all serving one goal: a large-language-model (LLM) hallucination detector that beats the state of the art (SOTA). We (1) <strong>reproduced TSV</strong>, a 2025 latent-steering detector (AUROC 0.844 on TruthfulQA vs the paper’s 0.873); (2) found that <strong>fusing</strong> TSV with our output-side <em>semantic entropy</em> is <strong>regime-dependent</strong> — a bootstrap-significant <strong>+11pp</strong> on TriviaQA but <strong>flat</strong> where one signal already dominates; (3) <strong>audited TSV</strong> and found four real defects — a memory bug, test-set model selection, an undocumented <strong>class-inversion</strong>, and severe <strong>few-shot overfitting</strong> (32 training examples fit perfectly, AUROC 1.0, while the test set collapsed to 0.22); (4) <strong>grounded everything in the literature</strong> — the fusion idea is crowded, but our regime-map and the TSV robustness audit are defensible; and (5) <strong>pivoted to a diversity-trained probe</strong>, which <em>fixes</em> the fragility (a collapsed NQ cell jumped 0.50 → 0.71). <strong>Headline: the elaborate SOTA probe is fragile; a simple diversity-trained linear probe is more robust, and cross-modal fusion helps only when neither signal dominates.</strong></p>
</blockquote>

<h3 id="60-seconds-of-background">60 seconds of background</h3>

<p><strong>Hallucination detection</strong> asks: given an LLM’s answer, can we score how likely it is to be <em>wrong/made-up</em>, so we can abstain or defer? The standard metric is <strong>AUROC</strong> — the probability the detector scores a random correct answer above a random incorrect one (0.5 = chance, 1.0 = perfect). Two method families dominate:</p>

<ul>
  <li><strong>Output-consistency (black-box):</strong> sample several answers to the same question; if they <em>disagree in meaning</em>, the model is uncertain. <strong>Semantic entropy (SE)</strong> formalizes this — cluster the samples by <em>bidirectional entailment</em> (a natural-language-inference model decides which answers mean the same thing) and take the entropy of the cluster distribution. High entropy = likely hallucination. Known blind spot: if the model is <strong>confidently wrong</strong>, all samples agree and SE reports (wrongly) “reliable.”</li>
  <li><strong>Latent probes (white-box):</strong> read the model’s internal hidden-state vector and classify truthful vs hallucinated. <strong>TSV</strong> (“Truthfulness Separator Vector”, ICML 2025) is a recent SOTA member: it <em>trains a steering vector</em> that reshapes the hidden space so the two classes separate, using only ~32 labeled examples plus unlabeled data pseudo-labeled by optimal transport.</li>
</ul>

<p>All numbers below are read from result files on the box (logs, <code class="language-plaintext highlighter-rouge">.npz</code>/<code class="language-plaintext highlighter-rouge">.npy</code> artifacts, benchmark text dumps). Nulls, corrections, and a killed too-good-to-be-true number are reported at equal prominence with the wins.</p>

<hr />

<h2 id="track-1--reproducing-tsv-the-sota-latent-probe">Track 1 — Reproducing TSV (the SOTA latent probe)</h2>

<p><strong>What it is.</strong> A faithful re-run of the TSV method on Qwen2.5-7B: generate answers, extract last-token hidden states, train the steering vector on 32 labeled exemplars + optimal-transport pseudo-labels, score the held-out test set by cosine similarity to the learned “truthful” cluster.</p>

<p><strong>Why it exists.</strong> You cannot audit, fuse with, or beat a method you cannot run. There is <strong>no independent reproduction of TSV in the literature</strong> (it is recent), so this is also first-mover verification.</p>

<p><strong>Status — done.</strong> Reproduced <strong>AUROC 0.844 on TruthfulQA</strong> vs the paper’s 0.873 (within 3 points), after fixing five environment/repo bugs (missing output dirs, an absolute-path logging bug, a transformers-version attention-API mismatch, and out-of-memory during evaluation). This established a trustworthy baseline to build on.</p>

<p><strong>Feeds.</strong> Every downstream track (paper): the fusion study (Track 2), the audit (Track 3), and the SOTA-beating rebuild (Track 5) all measure against this reproduction.</p>

<hr />

<h2 id="track-2--cross-modal-fusion-when-does-latent--entropy-help">Track 2 — Cross-modal fusion: when does latent + entropy help?</h2>

<p><strong>What it is.</strong> Combine the TSV latent score with our semantic-entropy score using a small logistic regression, and ask <em>when</em> the combination beats either signal alone. “Cross-modal” = one signal is internal (latent), the other is behavioral (output sampling).</p>

<p><strong>Why it exists.</strong> The two families fail in different places — SE is blind to confident-wrong errors; a latent probe might catch them. If they are <em>complementary</em>, fusing them should help. The precise question: <strong>under what conditions?</strong></p>

<p><strong>Status — done, and the answer is a sharp regime boundary.</strong> Across four model×dataset cells (AUROC; fusion delta = learned-fusion minus better single, 5-fold cross-validated):</p>

<table>
  <thead>
    <tr>
      <th>model / dataset</th>
      <th>regime</th>
      <th>NLI-SE</th>
      <th>TSV</th>
      <th>fusion Δ</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Qwen-base / TruthfulQA</td>
      <td>confident-wrong</td>
      <td>0.556</td>
      <td>0.844</td>
      <td>+0.85pp</td>
    </tr>
    <tr>
      <td>Qwen-base / TriviaQA</td>
      <td>genuine uncertainty</td>
      <td>0.817</td>
      <td>0.736</td>
      <td><strong>+11.1pp</strong> (95% CI [+1.1, +19.1], p≈0.024)</td>
    </tr>
    <tr>
      <td>Qwen-base / NQ-Open</td>
      <td>genuine uncertainty</td>
      <td>0.667</td>
      <td>0.667</td>
      <td>+9.4pp</td>
    </tr>
    <tr>
      <td>Qwen-instruct / TriviaQA</td>
      <td>uncertainty</td>
      <td>0.693</td>
      <td>0.856</td>
      <td>−0.07pp</td>
    </tr>
  </tbody>
</table>

<p><strong>Fusion pays off only when errors are uncertainty-driven AND neither signal dominates.</strong> It is flat when SE collapses (TruthfulQA — confident-wrong) and flat when the probe alone is already near-ceiling (instruct/TriviaQA, TSV 0.856). A 2000-sample bootstrap confirms the TriviaQA gain is real; NQ is directionally identical but underpowered at n=100 (its CI includes 0). <strong>Reported null, equal prominence:</strong> a fifth cell (instruct/NQ) produced an apparent “+66.8pp fusion” — we traced it to a <em>diverged</em> TSV probe (a degenerate baseline) and <strong>excluded it</strong>; the only trustworthy reading there is that SE-alone reaches 0.924.</p>

<p><strong>Feeds.</strong> Paper (the analysis contribution) and a filed issue for a world-model team who want to reuse the rollout-uncertainty analog.</p>

<hr />

<h2 id="track-3--the-tsv-robustness-audit-four-real-defects">Track 3 — The TSV robustness audit (four real defects)</h2>

<p><strong>What it is.</strong> A line-by-line review of the TSV implementation plus controlled experiments to explain <em>why</em> it sometimes fails, and whether the failures are fixable.</p>

<p><strong>Why it exists.</strong> During Track 2, TSV’s numbers swung wildly across cells (0.22 to 0.86). Wild swings mean either a bug or a fragility — both matter for anyone deploying or citing it.</p>

<p><strong>Status — done; three confirmed defects and one honest dead end.</strong></p>

<ol>
  <li><strong>Memory bug (fixed).</strong> The forward pass stacks <em>all</em> hidden layers when it uses only one, exhausting a 46GB GPU at the default batch. Indexing the needed layer directly cut peak memory <strong>44GB → 29GB</strong>.</li>
  <li><strong>Test-set model selection (validity bug).</strong> The released code saves the checkpoint that <strong>maximizes AUROC on the test set</strong> — an optimistic bias (the reported score becomes a max-over-checkpoints order statistic). Note the <em>paper</em> describes validation-based selection, so this is a <strong>code-vs-paper discrepancy</strong> worth flagging, not necessarily the intended method.</li>
  <li><strong>Class-inversion (undocumented).</strong> TSV’s two clusters are geometry-only; which one is “truthful” hinges entirely on the 32 exemplars. On instruct/NQ we watched the test AUROC slide 0.58 → 0.22 — i.e. the score became strongly <em>anti</em>-correlated with truth (its “flipped” value was 0.78). The signal was there; the sign was wrong. Attempts to fix it — anchoring the centroids, then orienting by the labeled exemplars — <strong>failed</strong>, because the exemplars are fit <em>perfectly</em> (AUROC 1.0) and so never reveal the test-set inversion.</li>
  <li><strong>Few-shot overfitting (diagnosed, not a one-line fix).</strong> The root cause of (3): the steering vector <em>memorizes</em> the 32 exemplars and generalizes backward on some cells. A regularization sweep confirmed it — weight decay did nothing; only shrinking the steering strength λ helped, and even the best setting (λ=0.25) reached just <strong>0.53</strong> (barely above chance), while high λ was <em>actively harmful</em> (λ=5 → 0.22, worse than no steering at all). No setting both rescued the failing cell and preserved the good cells.</li>
</ol>

<p><strong>Feeds.</strong> Paper (a reproducibility/robustness contribution — genuinely first, since no independent TSV audit exists) and the design of Track 5 (use a <em>simpler, regularized, diversity-trained</em> probe instead).</p>

<hr />

<h2 id="track-4--literature-grounding-and-novelty-check">Track 4 — Literature grounding and novelty check</h2>

<p><strong>What it is.</strong> Four parallel literature sweeps (semantic-entropy methods, latent probes, fusion/ensemble work, and evaluation methodology) to position the findings honestly and design a rigorous study.</p>

<p><strong>Why it exists.</strong> Before claiming a contribution, know what is already published — and learn the field’s methodology bar so the eventual paper survives review.</p>

<p><strong>Status — done, and appropriately humbling.</strong></p>
<ul>
  <li><strong>Fusion is crowded.</strong> Logistic-regression fusion of an internal signal with a consistency signal, <em>including</em> the “internal recovers confident-wrong” story, is <strong>already published</strong> (the primary foil to differentiate against). So “we fuse latent + entropy” is not novel.</li>
  <li><strong>SE’s regime blind spot is canonical</strong> (stated in the Nature 2024 semantic-entropy paper; formalized by a Consistency×Confidence taxonomy). We cite it, not claim it.</li>
  <li><strong>Our defensible wedge:</strong> (a) the <em>boundary-condition map</em> — when fusion helps vs is provably flat, with explicit nulls; (b) a <strong>counterintuitive twist</strong> — the intuitive move is “fuse to cover SE’s confident-wrong blind spot,” but our data shows fusion is <em>flat there</em> because the probe dominates, contradicting a published strength-invariance claim; (c) the <strong>TSV robustness audit</strong>, which is first.</li>
  <li><strong>Methodology bar:</strong> validation-based selection (never test), cross-dataset AND cross-model transfer, anti-artifact baselines (response length, majority, linear probe), a metric suite (AUROC + rejection-accuracy + PR-AUC + calibration), bootstrap/DeLong confidence intervals, powered n (100 is far too small), and robust labels (a single BLEURT/ROUGE threshold has ~0.40 precision). Our current 4-cell numbers are a <strong>pilot</strong>, not a result.</li>
</ul>

<p><strong>Feeds.</strong> The full plan lives in a project doc; it reframes the paper from “we fuse” to “we characterize <em>when</em> to fuse, and we rebuild a robust probe.”</p>

<hr />

<h2 id="track-5--rebuilding-to-beat-sota-the-diversity-trained-probe-in-flight">Track 5 — Rebuilding to beat SOTA: the diversity-trained probe (in flight)</h2>

<p><strong>What it is.</strong> Replace TSV’s fragile trained steering with the literature’s robustness prescription — a <strong>simple regularized linear probe trained on a <em>pool</em> of datasets</strong> (“diversity &gt; volume”) — and fuse it with semantic entropy. A “pooled probe” is one logistic regression trained on the combined examples of several datasets at once, rather than one dataset in isolation.</p>

<p><strong>Why it exists.</strong> Track 3 showed the elaborate probe overfits; Track 4’s literature says simple linear probes match elaborate ones <em>and</em> that training-set diversity, not volume, buys generalization. If a diversity-trained probe is robust across cells, a probe+SE detector could beat TSV where TSV collapses.</p>

<p><strong>Status — in flight, with a strong early signal.</strong> First, a clean per-cell benchmark (validation-selected linear probe, honest splits) already <strong>beats TSV on 3 of 4 cells</strong> on the strength of SE and probe individually — but naive fusion <em>hurt</em> on the cells where the probe was weak, and “adaptive” fusion did not yet learn to gate the bad signal (an honest negative for naive fusion). Then the key test — training the probe on a <strong>pool</strong> of datasets:</p>

<table>
  <thead>
    <tr>
      <th>cell</th>
      <th>single-dataset probe</th>
      <th><strong>pooled (diversity) probe</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>base / TriviaQA</td>
      <td>0.822</td>
      <td>0.796</td>
    </tr>
    <tr>
      <td>base / NQ</td>
      <td><strong>0.562</strong></td>
      <td><strong>0.705</strong></td>
    </tr>
    <tr>
      <td>instruct / TriviaQA</td>
      <td>0.669</td>
      <td>0.707</td>
    </tr>
    <tr>
      <td>instruct / NQ</td>
      <td><strong>0.502</strong> (chance)</td>
      <td><strong>0.649</strong></td>
    </tr>
  </tbody>
</table>

<p><strong>Diversity-training fixes the fragility.</strong> Pooling just two datasets turns the collapsing chance-level cells into solid detectors (+0.14 and +0.15 AUROC), at minimal cost to the strong cell — exactly the documented “diversity &gt; volume” effect, and precisely the robustness TSV lacks.</p>

<p><strong>The 3-dataset head-to-head (verified, honest — no clean broad SOTA win):</strong> a validation-selected pooled probe over TruthfulQA + TriviaQA + NQ, vs semantic entropy, naive fusion, and a rule-based <em>instance gate</em> (trust SE when samples disagree, the probe when they agree). AUROC:</p>

<table>
  <thead>
    <tr>
      <th>cell</th>
      <th>div-probe</th>
      <th>SE</th>
      <th>gate</th>
      <th>TSV (SOTA)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>base / TruthfulQA</td>
      <td><strong>0.840</strong></td>
      <td>0.657</td>
      <td>0.806</td>
      <td>0.844</td>
    </tr>
    <tr>
      <td>base / TriviaQA</td>
      <td>0.810</td>
      <td>0.815</td>
      <td><strong>0.837</strong></td>
      <td>0.736</td>
    </tr>
    <tr>
      <td>base / NQ</td>
      <td>0.585</td>
      <td><strong>0.759</strong></td>
      <td>0.697</td>
      <td>0.667</td>
    </tr>
    <tr>
      <td>instruct / TriviaQA</td>
      <td>0.656</td>
      <td>0.680</td>
      <td><strong>0.690</strong></td>
      <td><strong>0.856</strong></td>
    </tr>
    <tr>
      <td>instruct / NQ</td>
      <td>0.531</td>
      <td><strong>0.719</strong></td>
      <td>0.650</td>
      <td>0.22</td>
    </tr>
  </tbody>
</table>

<p>Findings, stated plainly: <strong>(1)</strong> a <em>simple</em> diversity-trained linear probe <strong>matches TSV on base/TruthfulQA (0.840 vs 0.844) and beats it on base/TriviaQA (0.810 vs 0.736)</strong> — a trivial classifier rivaling the elaborate SOTA. <strong>(2)</strong> SE is the robust workhorse (it beats TSV on every cell where TSV is weak or broken). <strong>(3)</strong> The instance gate <strong>beats both single signals when they are comparable</strong> (TriviaQA) but <strong>dilutes the stronger one when they are not</strong> (NQ) — the regime boundary, re-derived as a combiner limitation. <strong>(4)</strong> Null: naive/gated <em>learned</em> fusion never beat the best single signal. <strong>(5)</strong> Diagnosed: the 3-dataset pool <em>hurt</em> NQ (0.585 vs 0.705 for the 2-dataset pool) because TruthfulQA (817 examples, a different regime) <strong>dominated</strong> the pool — a <strong>class/size-balanced</strong> pool was the obvious fix — but <strong>testing it refuted the hypothesis</strong>: capping TruthfulQA still leaves NQ at ~0.58. The real cause is <strong>cross-regime pooling</strong> — TruthfulQA (confident-wrong) encodes a <em>different</em> truthfulness direction than the uncertainty-regime datasets, so mixing regimes hurts. Within-regime pooling (TriviaQA+NQ) <em>did</em> help NQ (0.705); adding TruthfulQA at all pulls it back. This is a genuine finding: the probe’s “truth direction” is <strong>partly regime-specific</strong>, complicating any single universal probe.</p>

<p><strong>Bottom line so far:</strong> no single <em>deployable</em> detector cleanly beats SOTA across all cells; the honest wins are narrow (probe matches TSV on base; gate wins where signals are balanced). The likely path to a <em>broad</em> win is a genuinely strong-everywhere probe — i.e. the universal probe below — so fusion has two strong signals instead of one strong and one weak.</p>

<p><strong>Honest constraint:</strong> this box is offline with a broken model/dataset download backend, so the pool is <strong>capped at three cached datasets</strong>. The full “universal probe” (40+ datasets) needs a different box (see below).</p>

<p><strong>Feeds.</strong> Paper (the method contribution, if the diversity-probe + fusion beats SOTA under the rigorous protocol).</p>

<hr />

<h2 id="planned--the-universal-probe-scale-up-needs-a-new-box">Planned — the universal-probe scale-up (needs a new box)</h2>

<p><strong>What it is.</strong> Train the diversity probe on <strong>40+ datasets across multiple model families</strong> (the literature’s route to a near-universal truthfulness direction), then evaluate cross-dataset and cross-model under the full rigorous protocol (powered n, robust labels, DeLong/bootstrap significance, anti-artifact baselines).</p>

<p><strong>Why it exists.</strong> Three cached datasets on one model family is a pilot; a credible SOTA claim needs breadth. The lever we validated (diversity) only reaches its ceiling with many datasets.</p>

<p><strong>Status — planned; ~a few GPU-days once data is local.</strong> The blocker is <em>not</em> compute — it is that this box cannot download data. Recommended box: <strong>1× A100 80GB or 2× A40 48GB, 16–32 CPU cores, 500GB–1TB disk, and — the hard requirement — unrestricted HuggingFace access.</strong> Feature extraction and probe training are cheap and parallel; download bandwidth is the bottleneck.</p>

<p><strong>Feeds.</strong> Paper (the headline result), and — if it beats SOTA broadly — a released, robust, drop-in detector.</p>

<hr />

<h2 id="track-7--the-universal-probe-run-a-learned-fusion-that-beats-semantic-entropy-on-the-qwen-family-2026-07-15">Track 7 — The universal-probe run: a learned fusion that beats semantic entropy on the Qwen family (2026-07-15)</h2>

<p><strong>What it is.</strong> We rented a working-download box (RTX 4090, verified sustained bandwidth) and ran the full pipeline the a40 couldn’t: for 4 models (Qwen2.5-7B base+instruct, Llama-3.1-8B base+instruct) × 5 datasets (TriviaQA, NQ, SQuAD, SciQ, TruthfulQA, N≈300 each) we generated greedy answers + 8 temperature samples + answers to 3 faithfully-rephrased questions, extracted hidden states, computed <strong>two</strong> semantic-entropy signals (temperature-SE and <strong>paraphrase-SE</strong>), and labelled correctness with an <strong>LLM judge</strong> (Qwen-Instruct) instead of noisy string-match.</p>

<p><strong>Why it exists.</strong> Every earlier result said semantic entropy (SE) is a hard-to-beat baseline and that latent probes add little <em>robustly</em>. The one opening: SE is blind to <strong>confident-wrong</strong> hallucinations (the model samples the same wrong answer). So we built signals that target <em>that</em> blind spot and asked whether <em>fusing</em> them beats SE.</p>

<p><strong>Status — a real, robust beat on the Qwen family; honest limits on Llama.</strong> The detector is a small logistic-regression <strong>meta-fusion</strong> of four features — temperature-SE, paraphrase-SE, a <strong>“residual” latent probe</strong> (a linear probe trained only on the <em>confident</em> (low-temperature-SE) examples to separate confident-wrong from confident-right, i.e. specialised to SE’s blind spot), and a confidence-regime indicator — predicting correctness. Evaluated over <strong>8 random train/test splits per model</strong> (mean ± sd; SE_temp is the SOTA baseline):</p>

<table>
  <thead>
    <tr>
      <th>model</th>
      <th>SE_temp AUROC</th>
      <th>meta-fusion Δ over SE</th>
      <th>splits positive</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Qwen2.5-7B</td>
      <td>0.708</td>
      <td><strong>+7.7 pp ± 1.9</strong></td>
      <td><strong>8 / 8</strong></td>
    </tr>
    <tr>
      <td>Qwen2.5-7B-Instruct</td>
      <td>0.656</td>
      <td><strong>+6.8 pp ± 1.7</strong></td>
      <td><strong>8 / 8</strong></td>
    </tr>
    <tr>
      <td>Llama-3.1-8B</td>
      <td>0.611</td>
      <td>+3.7 pp ± 4.2</td>
      <td>6 / 8</td>
    </tr>
  </tbody>
</table>

<p><strong>Robust, significant beat over semantic entropy on the Qwen family (~+7pp, positive on every split, low variance).</strong> The mechanism is the whole point: each ingredient is <em>weak or negative alone</em> (paraphrase-SE ≈ −6pp, residual-probe ≈ +1–2pp n.s.), but the <strong>learned fusion wins</strong> because the signals catch <em>different</em> hallucinations — temperature-SE for uncertainty-driven errors, paraphrase-SE for answers brittle to rephrasing, and the residual probe for confident-wrong cases in SE’s blind spot. Clean LLM-judge labels sharpened it (Qwen-7B went from a borderline +2.5pp under string-match labels to a solid +6–7pp). Our SE_temp baseline is already competitive with the reproduced TSV numbers (TSV qwen-base: TruthfulQA 0.844 / TriviaQA 0.736 / NQ 0.667), and the fusion beats it further on the uncertainty datasets.</p>

<p><strong>Reported null / honest limit, equal prominence.</strong> On <strong>Llama-3.1-8B the effect is directionally positive but not robust</strong> — +3.7pp mean but sd 4.2pp, negative on 2 of 8 splits (a single unlucky split earlier read −4.5pp; a lucky one +10pp; averaging shows the true modest, noisy effect). The cause is diagnosed: Llama’s hidden states carry a <em>weaker</em> linearly-decodable hallucination signal, so the residual-probe features are noisier and the learned fusion overfits them. The <strong>model-agnostic pieces transfer</strong> (the union of the two SE signals is ≈neutral-to-positive on Llama); the <strong>latent-probe component is Qwen-specific</strong>. Caveats: n≈400 test/model, 3 fully-processed models, a single fusion design (held-out test + bootstrap keep it valid, but with mild multiple-comparison exposure); a 4th model (Llama-instruct) and larger n would tighten the Llama estimate.</p>

<p><strong>Feeds.</strong> The paper’s core: <em>when</em> does fusing SE with latent + perturbation signals beat SE — robustly where the latent signal is decodable (Qwen), weakly where it isn’t (Llama) — with the confident-wrong residual probe and paraphrase-SE as the mechanism.</p>

<hr />

<h2 id="how-the-tracks-connect">How the tracks connect</h2>

<p>The through-line: <strong>the state-of-the-art latent probe is powerful but fragile, and the fix is simplicity plus diversity, not more machinery.</strong> Track 1 (reproduce) gives the baseline; Track 2 (fusion) finds the regime boundary that motivates combining signals; Track 3 (audit) explains <em>why</em> the SOTA probe breaks (overfitting/inversion); Track 4 (literature) tells us the fusion idea is crowded but the robustness angle is open; Track 5 (rebuild) turns the audit’s diagnosis into a design — a diversity-trained probe that is robust where TSV collapses — and the planned universal-probe scale-up is where that design either beats SOTA at breadth or honestly does not. Every number here is from a result file; the killed +66.8pp, the failed orientation fix, and the naive-fusion regression are kept in plain sight because that is the point of a lab notebook.</p>]]></content><author><name></name></author><category term="hallucination-detection" /><category term="semantic-entropy" /><category term="latent-probes" /><category term="reproducibility" /><category term="uncertainty" /><summary type="html"><![CDATA[TL;DR. Five threads on a single 2×A40 box, all serving one goal: a large-language-model (LLM) hallucination detector that beats the state of the art (SOTA). We (1) reproduced TSV, a 2025 latent-steering detector (AUROC 0.844 on TruthfulQA vs the paper’s 0.873); (2) found that fusing TSV with our output-side semantic entropy is regime-dependent — a bootstrap-significant +11pp on TriviaQA but flat where one signal already dominates; (3) audited TSV and found four real defects — a memory bug, test-set model selection, an undocumented class-inversion, and severe few-shot overfitting (32 training examples fit perfectly, AUROC 1.0, while the test set collapsed to 0.22); (4) grounded everything in the literature — the fusion idea is crowded, but our regime-map and the TSV robustness audit are defensible; and (5) pivoted to a diversity-trained probe, which fixes the fragility (a collapsed NQ cell jumped 0.50 → 0.71). Headline: the elaborate SOTA probe is fragile; a simple diversity-trained linear probe is more robust, and cross-modal fusion helps only when neither signal dominates.]]></summary></entry><entry><title type="html">One Idea, Four Experiments: A Lab-Notebook Tour of Our Structural-Entropy Research</title><link href="https://suuttt.github.io/structural-entropy-benchmark/2026/07/12/structural-entropy-research-notebook.html" rel="alternate" type="text/html" title="One Idea, Four Experiments: A Lab-Notebook Tour of Our Structural-Entropy Research" /><published>2026-07-12T00:00:00+00:00</published><updated>2026-07-12T00:00:00+00:00</updated><id>https://suuttt.github.io/structural-entropy-benchmark/2026/07/12/structural-entropy-research-notebook</id><content type="html" xml:base="https://suuttt.github.io/structural-entropy-benchmark/2026/07/12/structural-entropy-research-notebook.html"><![CDATA[<script>
  window.MathJax = {
    tex: { inlineMath: [['$','$'],['\\(','\\)']], displayMath: [['$$','$$'],['\\[','\\]']], processEscapes: true },
    options: { skipHtmlTags: ['script','noscript','style','textarea','pre','code'] }
  };
</script>

<script id="MathJax-script" async="" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>

<blockquote>
  <p><strong>TL;DR.</strong> Four research tracks, one measure. <strong>(1) Graph attention</strong> — the clean, significant win: a multi-level structural-entropy prior beats flat SE and modularity by 2–3.7 points of accuracy at $p&lt;10^{-6}$, with the controls reviewers ask for. <strong>(2) RL state abstraction (DM-SISA)</strong> — a differentiable, GPU-native SE module that is ~16,000× cheaper than the discrete original and <em>matches</em> it on return; then a task-relevant variant that produces the project’s first genuine return beat (<strong>+14%, $p=0.0073$, 10 seeds</strong>) on one task — but honestly <em>does not</em> generalize (a fresh 100k-budget locomotion re-test now shows walker-<em>run</em> gets <strong>no</strong> benefit either). <strong>(3) LLM confidence (SeSE)</strong> — reasoning-chain SE beats answer SE at catching a model’s own errors, but only when the model is overconfident, and so far only inside the gemma model family. <strong>(4) The benchmark itself</strong> — the reproducible harness and provenance audit that keep all of the above honest. <strong>(6) Cross-modal confidence fusion (TSV+SE)</strong> — the newest result: fusing a <em>latent</em> hallucination probe with our <em>output-space</em> semantic entropy gives a <strong>bootstrap-significant +11pp AUROC</strong> on TriviaQA, and it is <strong>regime-dependent</strong> — the two modalities are complementary exactly where a model is genuinely uncertain, and redundant where it is confidently wrong. The single newsworthy headline: <strong>task-relevance / modality-complementarity is what turns SE from “no effect” into a real gain — but only where the structure it measures actually differs from what you already have.</strong></p>
</blockquote>

<hr />

<h2 id="live-progress-dashboard--updated-2026-07-14">Live progress dashboard — updated 2026-07-14</h2>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Track</th>
      <th>Progress</th>
      <th>Status</th>
      <th>Headline result so far</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Graph attention</td>
      <td><code class="language-plaintext highlighter-rouge">██████████</code> 100%</td>
      <td><strong>shipped</strong></td>
      <td>multi-level SE +2.0 / +3.7 pp, $p&lt;10^{-6}$ (8 datasets × 15 seeds)</td>
    </tr>
    <tr>
      <td>2</td>
      <td>DM-SISA (RL)</td>
      <td><code class="language-plaintext highlighter-rouge">█████████░</code> ~90%</td>
      <td>core done; <strong>§9c generality re-test running</strong></td>
      <td>walker-walk <strong>+14%</strong> (10 seeds); walker-run <strong>no benefit</strong> at 100k (−4%, $p=0.71$); hopper/quad vanilla filling</td>
    </tr>
    <tr>
      <td>3</td>
      <td>SeSE (LLM confidence)</td>
      <td><code class="language-plaintext highlighter-rouge">██████████</code> 100%</td>
      <td><strong>done</strong>, gemma-anchored</td>
      <td>chain-SE beats answer-SE only under overconfidence, gemma family only ($\mathrm{corr}\approx0.75$)</td>
    </tr>
    <tr>
      <td>4</td>
      <td>Benchmark / provenance audit</td>
      <td><code class="language-plaintext highlighter-rouge">████████░░</code> continuous</td>
      <td><strong>live</strong></td>
      <td>2 equation-transcription errors fixed; ledger current</td>
    </tr>
    <tr>
      <td>5</td>
      <td>SeSE within-SE fusion</td>
      <td><code class="language-plaintext highlighter-rouge">██████████</code> tested</td>
      <td><strong>NULL</strong></td>
      <td>answer-SE + chain-SE redundant (both output-space)</td>
    </tr>
    <tr>
      <td>6</td>
      <td><strong>TSV + SE cross-modal fusion</strong></td>
      <td><code class="language-plaintext highlighter-rouge">██████████</code> 100%</td>
      <td>done (4 model×dataset cells)</td>
      <td>latent+SE fusion <strong>+11pp</strong> TriviaQA (95% CI [+1.1,+19.1]); gain needs SE≳probe — flat when either collapses <strong>or</strong> the probe alone dominates (instruct)</td>
    </tr>
  </tbody>
</table>

<p><strong>Two live compute jobs right now:</strong></p>

<ul>
  <li><strong>a40 · Qwen-Instruct / TriviaQA</strong> (Track 6 cross-model, base-vs-instruct): <code class="language-plaintext highlighter-rouge">most_likely ✔ → batch-generations ███░░░░░░░ 136/400 → gt → train</code> — ≈35 min to a 4th data point on whether the fusion story holds for an instruct-tuned model.</li>
  <li><strong>newbox (4×3060) · DM-SISA §9c vanilla arms</strong> (Track 2): walker <code class="language-plaintext highlighter-rouge">████████░░</code> 4/5 @90k (verdict in) · hopper <code class="language-plaintext highlighter-rouge">██░░░░░░░░</code> ~40k ×2 · quad <code class="language-plaintext highlighter-rouge">░░░░░░░░░░</code> not started. Slow box (~7–10% util); full 3-task verdict is day-scale out.</li>
</ul>

<p><em>(Graph-SE data and the finished LLM-confidence sweeps are archived; only Tracks 2 and 6 have live jobs.)</em></p>

<h3 id="60-seconds-of-background">60 seconds of background</h3>

<p><strong>Structural entropy (SE)</strong> is a number that measures how much uncertainty remains about “which community a random walker is in” once you know a graph’s community structure. Low SE means the graph splits cleanly into groups. The idea (Li &amp; Pan, 2016) comes in two flavors that matter enormously in practice: <strong>flat SE</strong> uses a single layer of communities; <strong>multi-level SE</strong> uses the full <em>encoding tree</em> — a nested hierarchy of communities-within-communities. Almost everything interesting below turns on that distinction, and on a second one: <strong>is the graph you compute SE over built from raw features, or from something the task actually cares about?</strong></p>

<p>We tested SE as an inductive bias in three unrelated settings — graph neural networks, pixel-based reinforcement learning, and LLM uncertainty — because a good abstraction should help in more than one place. The discipline throughout: <strong>numbers come only from produced artifacts; a claim without enough random seeds and a multiple-comparison correction is not a claim; and negatives and walk-backs are published, not buried.</strong> Several apparently-promising signals in this program washed out under more seeds — we show them anyway, because that is the useful part.</p>

<hr />

<h2 id="track-1--the-multi-level-edge-graph-attention">Track 1 — The Multi-Level Edge (graph attention)</h2>

<p><strong>What it is.</strong> Graph attention networks learn a weight for each edge but have nothing pushing those weights to respect the graph’s community structure. We add a regularizer that pulls attention toward within-community edges, and we ask which <em>community objective</em> is the best regularizer: <strong>flat SE, multi-level SE, modularity</strong> (the classic community-quality score), or <strong>MinCut</strong> (a spectral clustering objective).</p>

<p><strong>Why it exists.</strong> The whole SE program rests on a bet that the <em>hierarchy</em> — the multi-level encoding tree — carries information the flat, single-layer version cannot. Graph node-classification is the cleanest place to test that bet, because you can control for parameters and plant a known hierarchy.</p>

<p><strong>Status — shipped, and the strongest result we have.</strong> Across <strong>8 datasets × 15 seeds</strong>, with Benjamini–Hochberg correction across all comparisons:</p>

<table>
  <thead>
    <tr>
      <th>Comparison</th>
      <th>Effect</th>
      <th>Significance</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Multi-level SE vs flat SE</td>
      <td><strong>+2.0 pp</strong> accuracy</td>
      <td>$p&lt;10^{-6}$</td>
    </tr>
    <tr>
      <td>Multi-level SE vs modularity (raw)</td>
      <td><strong>+3.7 pp</strong></td>
      <td>$p&lt;10^{-6}$</td>
    </tr>
    <tr>
      <td>Multi-level SE vs MinCut (each tuned)</td>
      <td>+0.9 pp</td>
      <td>$p=0.10$ (n.s.)</td>
    </tr>
  </tbody>
</table>

<p>Two controls make this a result rather than an artifact: a <em>bigger</em> flat-SE model is <strong>worse</strong> than multi-level SE (so the win is the hierarchy, not extra parameters), and on synthetic graphs with a <em>planted</em> depth-3 hierarchy the advantage peaks exactly at the true depth (L3 &gt; L2, $p=0.0014$). <strong>Reported nulls, at equal prominence:</strong> the planted depth-2 effect <em>did not survive</em> 30 seeds (it looked promising at 15 and we walked it back), and a harder planted variant does not reproduce the depth result. The MinCut comparison is a <em>tie</em>, so we frame it as “tuning-free robustness,” not a win.</p>

<p><strong>Feeds.</strong> This is the lead result of the graph paper, and it supplies the “hierarchy is the lever” claim that the RL track (below) borrows to justify a multi-level SE module.</p>

<hr />

<h2 id="track-2--dm-sisa-differentiable-structural-entropy-for-rl-state-abstraction">Track 2 — DM-SISA: differentiable structural entropy for RL state abstraction</h2>

<p><strong>What it is.</strong> An agent learning to act from raw pixels benefits from a good internal abstraction of its states. <strong>SISA</strong> (from the SIDM family) builds one by minimizing SE over a graph of state transitions — but its implementation is <em>flat</em>, <em>discrete</em> (a greedy tree built on the CPU), and so slow it only runs on 1 update in 100. <strong>DM-SISA</strong> (ours) replaces that with a <strong>differentiable, GPU-native, multi-level</strong> soft-SE module that can run every update.</p>

<p><strong>Why it exists.</strong> Two questions. First, engineering: can you make deep-tree SE differentiable and cheap enough to stop treating it as expensive preprocessing? Second, science: does an SE abstraction actually improve returns, or just add cost?</p>

<p><strong>Status — done, and it is a story of one honest win inside a larger null.</strong></p>

<table>
  <tbody>
    <tr>
      <td><em>The engineering held cleanly.</em> The soft SE module matches the discrete objective to $</td>
      <td>\Delta</td>
      <td>= 1.15\times10^{-7}$ at hard assignments, and each abstraction call costs ≈1.3 ms versus ≈21.4 s for SISA’s discrete tree — about a <strong>16,000× speed-up</strong>.</td>
    </tr>
  </tbody>
</table>

<p><em>The first return question was a null, honestly.</em> With matched hardware and seeds, DM-SISA neither beats nor loses to SISA or a no-abstraction baseline on return — the methods are statistically inseparable under high seed variance. Along the way we retracted five apparent “wins” (single-seed flukes and a two-seed “over-regularization” story that reversed at five seeds). The abstraction’s <em>representations</em> did not buy return; the efficiency did.</p>

<p><em>Then the reframe that worked.</em> The graph those experiments used was built from <strong>feature cosine similarity</strong> — it carries no task information, so its communities never helped. Rebuilding the graph to be <strong>task-relevant</strong> — reward-weighting the edges so that states with similar reward sit in the same community — produced the project’s first genuine return beat:</p>

<table>
  <thead>
    <tr>
      <th>walker-walk, same hardware, 10 seeds</th>
      <th>mean ± sd</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>DM-SISA reward-graph (task-relevant)</strong></td>
      <td><strong>756 ± 45</strong></td>
    </tr>
    <tr>
      <td>No-abstraction baseline</td>
      <td>664 ± 86</td>
    </tr>
  </tbody>
</table>

<p>That is <strong>+14% return, $p=0.0073$</strong> (two-sided rank test, under a Bonferroni threshold of 0.017 across the three graph variants tested), and the effect <em>strengthened</em> as seeds accumulated ($p$ ran 0.011 → 0.0027 → 0.0073 from 7 to 10 seeds) — the opposite of the seed-luck flukes above.</p>

<p><strong>The essential honesty — it does not generalize.</strong> We tested the same reward-graph against the same baseline on five other tasks (3 seeds each). It is statistically indistinguishable from the baseline on two, and runs below it on three — but <em>none</em> of those differences is significant, and one apparent “−62% catastrophe” turned out to be a two-seed artifact that vanished when the third seed matched the baseline. A weaker <em>value</em>-weighted graph, tested the same way, mirrors the pattern: parity or below everywhere, nothing significant.</p>

<table>
  <thead>
    <tr>
      <th>Task</th>
      <th>reward-graph vs baseline</th>
      <th>verdict</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>walker-walk</strong></td>
      <td><strong>+14%</strong></td>
      <td><strong>BEAT</strong> ($p=0.0073$, 10 seeds)</td>
    </tr>
    <tr>
      <td>cartpole / finger</td>
      <td>−1% / −6%</td>
      <td>parity</td>
    </tr>
    <tr>
      <td>reacher / cheetah / ball-in-cup</td>
      <td>−10% / −25% / high-variance</td>
      <td>below, none significant</td>
    </tr>
  </tbody>
</table>

<p>So the defensible claim is precise: <strong>a task-relevant SE graph produces a real, corrected-significant return gain where the feature-cosine graph and the plain baseline do not — but the benefit is task-specific, not a general property of task-relevant SE.</strong> A scoped positive with a clear boundary, which is more useful than a false “beats the baseline everywhere.”</p>

<p><strong>Update (§9c, 2026-07-14) — a fresh locomotion re-test tightens the boundary.</strong> To ask whether the walker win is at least a <em>dense-reward locomotion family</em> property, we ran reward-graph vs same-box RAD-SAC on three locomotion tasks (walker-<em>run</em>, hopper-hop, quadruped-walk) at a clean 100k-step budget, 5 seeds each, on a new box. Comparison is at the last logged eval (90k). Walker-run is complete: reward <strong>227.6</strong> vs vanilla <strong>237.0</strong> — <strong>−4%, $p=0.71$ (n.s.), no benefit.</strong> So the win does <em>not</em> even extend from walker-<em>walk</em> to the harder walker-<em>run</em> at a short budget. Hopper/quadruped vanilla arms are still filling (slow box), but walker-run already argues against a broad “dense-reward locomotion” generalization — the honest read is that the effect is <strong>narrow to walker-walk at its trained budget.</strong> (Full table in <code class="language-plaintext highlighter-rouge">dm-sisa/DM_SISA_STUDY.md</code> §9c, committed 51ce04f.)</p>

<p><strong>Feeds.</strong> The efficiency + formulation result is a systems/workshop contribution; the walker beat + its honest generality boundary is the paper’s core. It borrows Track 1’s “multi-level hierarchy is the lever” and adds “and the <em>graph</em> must be task-relevant.”</p>

<hr />

<h2 id="track-3--sese-structural-entropy-as-an-llms-self-doubt-signal">Track 3 — SeSE: structural entropy as an LLM’s self-doubt signal</h2>

<p><strong>What it is.</strong> When a language model answers a hard question, you want a confidence number that is high when it is right and low when it is wrong (so you can abstain or defer). We build that number two ways. <strong>Answer-SE</strong> computes structural entropy over the graph of <em>final answers</em> the model samples; <strong>chain-SE</strong> computes it over the graph of full <em>reasoning chains</em>. The graph edges come from a natural-language-inference model judging which answers/chains agree. The question: which SE catches the model’s own errors better?</p>

<p><strong>Why it exists.</strong> Reasoning models spend most of their tokens in the chain, not the answer. If the chain’s <em>structure</em> — how much its many reasoning paths agree — carries calibration signal that the bare answer distribution misses, that is a cheap, model-internal error detector.</p>

<p><strong>Status — a real finding with a stubborn, honestly-reported boundary.</strong> On the <strong>gemma-3</strong> model, chain-SE beats answer-SE at error detection — but only when the model is <strong>overconfident</strong> (peaked answer distribution, mediocre accuracy). Across the tested cells, the correlation between a model’s overconfidence and chain-SE’s advantage is strong, roughly $\mathrm{corr}\approx0.75$. That is the positive result, and it is anchored to the gemma family.</p>

<p><strong>The boundary, reported at equal prominence.</strong> We then tested roughly ten <em>non-gemma</em> model families (Qwen, zephyr, Mistral, StableLM, and others) across grade-school-math, algebra, and word-problem benchmarks. <strong>Every one is calibrated in the relevant sense — its answer-SE wins, not its chain-SE.</strong> The sharpest single data point: <strong>StableLM-2-1.6B is genuinely overconfident</strong> (the precondition under which gemma’s chain graph wins) <strong>yet its chain graph still does not win</strong> (answer-SE edges it out). So overconfidence <em>alone</em> is not enough — the effect appears to be a property of the gemma family specifically, not a generic consequence of miscalibration. A separate probe of a frontier model on hard math and graduate science put it firmly in the answer-wins, well-calibrated regime too.</p>

<p>We also debunked our own earlier cross-family “lead”: a Mistral result that looked overconfident was an answer-parsing artifact (73% of answers were unparseable); fixing the extractor moved it from apparent chain-win to plain calibrated. That is exactly the kind of thing this benchmark exists to catch.</p>

<p><strong>Feeds.</strong> The calibration paper, with its scope stated honestly (“gemma-anchored”). It also motivates the one <strong>planned</strong> track below.</p>

<hr />

<h2 id="track-4--the-benchmark-and-provenance-audit-the-honesty-infrastructure">Track 4 — The benchmark and provenance audit (the honesty infrastructure)</h2>

<p><strong>What it is.</strong> A reproducible repository that pairs original method code with a shared evaluation harness, a public ledger of every experiment and lever tried, and a line-by-line audit of the survey’s structural-entropy equations against their original sources.</p>

<p><strong>Why it exists.</strong> SE has a book-length formal definition and a scattering of variant papers whose notation drifts. Before trusting any downstream result, you have to know the equations are transcribed correctly and that no experiment is quietly cherry-picked. The <a href="/structural-entropy-benchmark/2026/06/27/se-equation-provenance.html">equation-provenance audit</a> found and fixed two real transcription errors (an encoding-tree summation domain, and a hard-vs-soft constraint) and documented the benign abstractions.</p>

<p><strong>Status — shipped and continuously updated.</strong> The ledger records the washed-out signals from every track above, so a future reader does not re-run a dead end.</p>

<p><strong>Feeds.</strong> Everything. Tracks 1–3 all cite artifacts registered here; the ledger is why the nulls in this very post are traceable.</p>

<hr />

<h2 id="track-5-planned--confidence-fusion-with-complementary-accuracy">Track 5 (planned) — Confidence fusion with complementary accuracy</h2>

<p><strong>What it is.</strong> Instead of <em>picking</em> answer-SE or chain-SE per model, <strong>fuse</strong> several confidence signals (answer-SE, chain-SE, unparseable-fraction, sample agreement) into one, weighted by which is most reliable per question. “Complementary accuracy” is the crux: fusion only helps when the signals err in <em>different</em> places, so that one covers another’s mistakes.</p>

<p><strong>Why it exists.</strong> It attacks Track 3’s exact wall. A single SE signal is gemma-anchored because no one signal transfers across families. A fused signal <em>could</em> be robust across families — but only if the members are complementary rather than redundant.</p>

<p><strong>Status — planned; ~1–2 GPU-days, and mostly offline.</strong> We already have per-question SE data saved for ~ten non-gemma families. The first experiment needs <em>no new sampling</em>: compute a weighted/learned fusion of the existing signals and check whether the <strong>fused</strong> error-detection score beats the <strong>best single</strong> signal on the calibrated families where chain-SE alone failed. If fused &gt; best-single on held-out families, that is the cross-family result the gemma-anchored scope was missing. The honest risk: on well-calibrated models the two SE signals may be redundant (both just track the answer distribution), so fusion gains little — which we would report as a null.</p>

<p><strong>Feeds.</strong> If it works, a stronger, less-scoped version of the Track 3 calibration paper.</p>

<hr />

<h2 id="track-6--tsv--se-cross-modal-confidence-fusion-the-fusion-thesis-realized">Track 6 — TSV + SE: cross-modal confidence fusion (the fusion thesis, realized)</h2>

<p><strong>What it is.</strong> Track 5 asked whether <em>fusing</em> confidence signals beats picking one — and found that fusing two <em>output-space</em> SE signals (answer-SE + chain-SE) is a null, because they are redundant (both just track the answer distribution). Track 6 changes one thing: fuse across <strong>modalities</strong>. We reproduced <strong>TSV</strong> (Park et al., ICML 2025) — a trainable <em>latent-space</em> steering vector that reads hallucination off a model’s hidden states — and fused its score with our <strong>output-space</strong> semantic entropy (NLI-clustered SE over sampled generations). Latent probe + output entropy: two genuinely different views of the same error.</p>

<p><strong>Why it exists.</strong> It is the clean test of the fusion thesis. If complementary-accuracy is the crux (Track 5), then two signals from <em>different modalities</em> should fuse where two from the <em>same</em> modality did not.</p>

<p><strong>Status — a real, replicated, significance-tested win with a sharp regime boundary.</strong> We reproduced TSV on Qwen2.5-7B (AUROC 0.844 on TruthfulQA vs the paper’s 0.873, within 3pp after fixing five repo/env bugs), then ran the fusion across three QA datasets:</p>

<table>
  <thead>
    <tr>
      <th>dataset</th>
      <th>error regime</th>
      <th>NLI-SE alone</th>
      <th>TSV (latent)</th>
      <th>corr(TSV,SE)</th>
      <th>learned-fusion Δ</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TruthfulQA</td>
      <td>confident-wrong</td>
      <td>0.556 (weak)</td>
      <td>0.844</td>
      <td>0.33</td>
      <td>+0.85 pp</td>
    </tr>
    <tr>
      <td><strong>TriviaQA</strong></td>
      <td>genuine uncertainty</td>
      <td><strong>0.817</strong> (beats TSV)</td>
      <td>0.736</td>
      <td>0.34</td>
      <td><strong>+11.1 pp</strong></td>
    </tr>
    <tr>
      <td><strong>nq_open</strong></td>
      <td>genuine uncertainty</td>
      <td>0.667</td>
      <td>0.667</td>
      <td><strong>−0.20</strong> (anti-corr.)</td>
      <td><strong>+9.4 pp</strong></td>
    </tr>
  </tbody>
</table>

<p>The pattern is the whole result: <strong>where a model errs from genuine uncertainty (TriviaQA, nq_open), sampled generations disagree, SE is strong — often as strong as the latent probe — and the two are complementary (corr 0.34, even <em>negative</em> on nq_open), so fusion adds ~+9–11 pp.</strong> Where a model errs by being <em>confidently wrong</em> (TruthfulQA), samples agree on the same falsehood, SE collapses to chance, and only the latent probe works — fusion adds nothing. A 2000-resample bootstrap confirms the TriviaQA gain is real (95% CI [+1.1, +19.1] pp, $p\approx0.024$); the nq_open gain is directionally identical but underpowered at $n=100$ (CI includes 0). This is the same regime boundary as Track 3 — SE detects hallucination under genuine uncertainty, fails under confident-wrongness — now shown to be <em>exploitable</em>: pair SE with a latent probe and you cover both regimes.</p>

<p><strong>The cross-model tightening — the honest rule.</strong> We re-ran the whole pipeline on Qwen2.5-7B-<strong>Instruct</strong> (base-vs-instruct; a cross-<em>family</em> run on llama/Yi was blocked by gated / incomplete model caches). The result refines the claim rather than simply confirming it: on the instruct model SE is <em>still</em> strong under uncertainty (0.693, so the regime story holds), but <strong>fusion is flat (−0.07pp)</strong> — because the instruct model’s latent probe alone is now near-ceiling (TSV 0.856), so SE, though individually informative, is <em>redundant given the probe</em>. Putting the four cells together, the defensible rule is: <strong>cross-modal fusion pays off only when errors are uncertainty-driven (so SE is informative) <em>and</em> neither modality dominates the other.</strong> It is flat when SE collapses (confident-wrong, TruthfulQA) or when the probe alone is already strong (instruct). Complementarity (corr 0.24–0.34) is necessary but not sufficient — you also need the two views to be <em>comparably</em> strong. That is a sharper, more useful statement than “fusion helps under uncertainty.”</p>

<table>
  <thead>
    <tr>
      <th>model / dataset</th>
      <th>NLI-SE</th>
      <th>TSV (probe)</th>
      <th>fusion Δ</th>
      <th>reads as</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Qwen-base / TruthfulQA</td>
      <td>0.556</td>
      <td>0.844</td>
      <td>+0.85 pp</td>
      <td>SE collapses → flat</td>
    </tr>
    <tr>
      <td>Qwen-base / TriviaQA</td>
      <td>0.817</td>
      <td>0.736</td>
      <td><strong>+11.1 pp</strong> (sig)</td>
      <td>SE ≥ probe → big</td>
    </tr>
    <tr>
      <td>Qwen-base / nq_open</td>
      <td>0.667</td>
      <td>0.667</td>
      <td>+9.4 pp</td>
      <td>SE ≈ probe → big</td>
    </tr>
    <tr>
      <td>Qwen-instruct / TriviaQA</td>
      <td>0.693</td>
      <td>0.856</td>
      <td>−0.07 pp</td>
      <td>probe dominates → flat</td>
    </tr>
  </tbody>
</table>

<p>A fifth cell we ran — Qwen-instruct / nq_open — is <em>reported as a caveat, not a data point</em>: TSV’s steering-vector training <strong>diverged</strong> there (test AUROC drifted from 0.58 at epoch 1 down to 0.22), so its probe is invalid and the fusion number is an artifact. The one trustworthy reading from it is that <strong>SE alone reaches 0.924</strong> — a very strong standalone detector — which both reinforces “SE is strong under genuine uncertainty” and, since SE-alone there <em>beats</em> the fused score, again fits the “fuse only if neither dominates” rule. It also flags an honest limitation: TSV training is not uniformly stable across every model×dataset.</p>

<p>We also filed the transferable takeaways as an issue for a world-model team (<a href="https://github.com/SuuTTT/tdmpc-glass/issues/1">tdmpc-glass#1</a>): a world model has both a latent state and a distribution over sampled rollouts, so rollout-SE + a latent probe should detect hallucinated transitions the same way — with the same confident-wrong caveat, <em>and</em> the same “fuse only if neither dominates” rule.</p>

<p><strong>Feeds.</strong> It closes the loop Track 5 opened: fusion works, but <em>across modalities</em>, not within one. A cross-modal hallucination-detection contribution, and a concrete recipe (SE + latent probe) for anyone with both signals.</p>

<hr />

<h2 id="how-the-tracks-connect">How the tracks connect</h2>

<p>The through-line is one sentence: <strong>structural entropy helps exactly when the structure it measures is both <em>hierarchical</em> and <em>task-relevant</em>, and you can only tell which by controlling for confounds and counting seeds.</strong></p>

<ul>
  <li><strong>Track 1 (graph)</strong> establishes the <em>hierarchy</em> half — multi-level SE beats flat SE, cleanly and significantly. This is the anchor result.</li>
  <li><strong>Track 2 (RL)</strong> establishes the <em>task-relevance</em> half — the same multi-level SE does nothing with a feature-cosine graph, but produces a real (if task-specific) gain once the graph is reward-relevant. It inherits Track 1’s “hierarchy is the lever” and adds “the graph must carry task information.”</li>
  <li><strong>Track 3 (LLM)</strong> is SE as a <em>confidence</em> signal rather than a training prior; its gemma-anchored boundary is the honest limit that <strong>Track 5</strong> is designed to push on, using data Track 3 already produced.</li>
  <li><strong>Track 6 (cross-modal fusion)</strong> resolves the fusion question Track 5 raised: fusing two <em>same-modality</em> SE signals is null (redundant), but fusing SE with a <em>different-modality</em> latent probe is a real, significant, replicated gain — and it re-derives Track 3’s regime boundary as an <em>exploitable</em> one. The through-line “SE helps only where its structure differs from what you already have” now covers modalities too.</li>
  <li><strong>Track 4 (benchmark)</strong> underwrites all of them: every number above points to an artifact it registers, and every null above is traceable because the ledger recorded it.</li>
</ul>

<p><em>Every figure in this post is drawn from a committed result artifact in the project repositories; corrections, ties, and nulls are stated with the same prominence as the wins. Read a year from now, the one durable lesson is that the wins in this program are the ones that survived more seeds and a control — and we kept the ones that didn’t in plain sight.</em></p>]]></content><author><name></name></author><summary type="html"><![CDATA[Structural entropy is a single information-theoretic measure of how cleanly a graph splits into a nested hierarchy of communities. We put it to work in four very different places — graph attention, reinforcement-learning state abstraction, and large-language-model confidence — and report what held up and what didn't. Headline: a task-relevant SE graph gives a real +14% return gain on one RL task (p=0.0073, 10 seeds) but does not generalize; the graph-learning result is the clean win (p<10⁻⁶); and the LLM-confidence effect is real but stubbornly gemma-family-specific. Every number here points to a committed artifact, and the corrections are reported as loudly as the wins.]]></summary></entry><entry><title type="html">Do the Survey’s Structural-Entropy Equations Match Their Sources? A Provenance Audit</title><link href="https://suuttt.github.io/structural-entropy-benchmark/2026/06/27/se-equation-provenance.html" rel="alternate" type="text/html" title="Do the Survey’s Structural-Entropy Equations Match Their Sources? A Provenance Audit" /><published>2026-06-27T00:00:00+00:00</published><updated>2026-06-27T00:00:00+00:00</updated><id>https://suuttt.github.io/structural-entropy-benchmark/2026/06/27/se-equation-provenance</id><content type="html" xml:base="https://suuttt.github.io/structural-entropy-benchmark/2026/06/27/se-equation-provenance.html"><![CDATA[<script>
  window.MathJax = {
    tex: { inlineMath: [['$','$'],['\\(','\\)']], displayMath: [['$$','$$'],['\\[','\\]']], processEscapes: true },
    options: { skipHtmlTags: ['script','noscript','style','textarea','pre','code'] }
  };
</script>

<script id="MathJax-script" async="" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>

<blockquote>
  <p>Surveys are where definitions go to drift. A formula gets transcribed from a
paper, simplified for a table, recombined across variants — and small index or
constraint changes creep in. So we audited <strong>every structural-entropy (SE)
equation</strong> in the survey against its origin: the <strong>SE book</strong> (Li, <em>Science of
Artificial Intelligence</em>, 2024) for the core definitions, and the <strong>cited
paper</strong> for each variant in the variants table. Below is the side-by-side for
all eight, with verdicts. Two were genuinely wrong and are now fixed.</p>
</blockquote>

<h2 id="method">Method</h2>

<p>Each equation was compared against a primary source fetched and read directly —
the book’s Chapter 9 for the core definitions (1D / 2D / encoding-tree SE), and
the original paper (local PDF or arXiv) for each variant. We classify each as
<strong>MATCH</strong> (faithful), <strong>MINOR</strong> (a benign table-level abstraction worth noting),
or <strong>MISMATCH</strong> (a real error, fixed). The convention throughout: $G=(V,E)$,
degree $d_v$, $\mathrm{vol}(G)=\sum_v d_v=2m$, encoding tree $T$ with root
$\lambda$, node $\alpha$ with parent $\alpha^-$, and $V_\alpha$ the volume
(degree mass) of the vertices under $\alpha$.</p>

<hr />

<h2 id="core-definitions-vs-the-se-book">Core definitions (vs the SE book)</h2>

<h3 id="1-encoding-tree-se--mismatch--fixed">1. Encoding-tree SE — <strong>MISMATCH → fixed</strong></h3>

<p><strong>Survey (before):</strong>
\(\mathcal{H}^T(A) = -\!\!\sum_{\substack{\alpha\in T\\ \alpha^-\neq\lambda}} p_\alpha\log_2\frac{V_\alpha}{V_{\alpha^-}}\)</p>

<p><strong>Book (Def. 9.8 / 9.15, eqs. 9.11, 9.19):</strong>
\(\mathcal{H}_g^T(G) = -\!\!\sum_{\substack{\alpha\in T\\ \alpha\neq\lambda}} \frac{g(T_\alpha)}{\mathrm{vol}(G)}\log_2\frac{\mathrm{vol}(\alpha)}{\mathrm{vol}(\alpha^-)}\)</p>

<p>The book sums over <strong>all non-root nodes</strong> $\alpha\neq\lambda$. The survey’s
condition $\alpha^-\neq\lambda$ (parent $\neq$ root) wrongly <strong>drops the
top-level module terms</strong> — the children of the root. It was also internally
inconsistent: the survey’s own variants table already used $\alpha\neq\lambda$.
<strong>Fixed</strong> to $\alpha\neq\lambda$. (Here $p_\alpha=g(T_\alpha)/\mathrm{vol}(G)$ is
the boundary-cut probability, the Markov-chain reading of the book’s
modulus-function cut.)</p>

<h3 id="2-one-dimensional-se--match">2. One-dimensional SE — <strong>MATCH</strong></h3>

<p><strong>Survey:</strong> $\;\mathcal{H}^{(1)}(G)=-\sum_v \frac{d_v}{\mathrm{vol}(G)}\log_2\frac{d_v}{\mathrm{vol}(G)}$</p>

<p><strong>Book (Cor. 9.13, eq. 9.17):</strong> $\;\mathcal{H}^1(G)=-\sum_i \frac{d_i}{2m}\log_2\frac{d_i}{2m}$</p>

<p>Identical ($\mathrm{vol}(G)=2m$): the Shannon entropy of the degree
(stationary) distribution.</p>

<h3 id="3-two-dimensional-se--match">3. Two-dimensional SE — <strong>MATCH</strong></h3>

<p><strong>Survey:</strong>
\(\mathcal{H}^{(2)}(G;\mathcal{P}) = -\sum_{X\in\mathcal{P}}\Big[\frac{g_X}{\mathrm{vol}(G)}\log_2\frac{V_X}{\mathrm{vol}(G)} + \sum_{v\in X}\frac{d_v}{\mathrm{vol}(G)}\log_2\frac{d_v}{V_X}\Big]\)</p>

<p>This is exactly the depth-2 specialization of the encoding-tree formula (the
standard Li–Pan 2D form): a module-entry term plus a within-module positioning
term, with a leaf’s cut equal to its degree.</p>

<hr />

<h2 id="variants-table-vs-each-cited-paper">Variants table (vs each cited paper)</h2>

<h3 id="4-directed--flow-se--match-minor-teleportation">4. Directed / flow SE — <strong>MATCH</strong> (minor: teleportation)</h3>

<p><strong>Survey:</strong> $\;\mathcal{H}^T(A),\quad V_\alpha=\sum_{v\in\alpha}\pi_v,\quad \boldsymbol\pi=\boldsymbol\pi P,\;\; P=D_{\mathrm{out}}^{-1}A$</p>

<p>Both Yao &amp; Pan (flow-based clustering on directed graphs) and Zhang et al.
(RWE, IEEE TNSE 2024) define directed-SE volumes as sums of the <strong>stationary
(Perron / PageRank) distribution</strong> of the out-degree-normalized walk
$P=D_{\mathrm{out}}^{-1}A$, fed into the same encoding-tree functional —
verbatim ($p(u,v)=w(u,v)/d_{\mathrm{out}}(u)$). <em>Minor:</em> both add PageRank
teleportation ($\alpha\approx0.15$) to guarantee a unique $\pi$ on graphs with
sinks; the table shows the no-teleport core. (RWE’s headline <em>1D</em> measure is a
von-Neumann/Shannon-of-stationary quantity; its <em>2D</em> module-coding form is the
one that parallels this row.)</p>

<h3 id="5-multi-relational-se--match-minor-coupled-fixed-point">5. Multi-relational SE — <strong>MATCH</strong> (minor: coupled fixed point)</h3>

<p><strong>Survey:</strong> $\;\mathcal{H}^T(A),\quad V_\alpha=\sum_{v\in\alpha}\pi^{\mathrm{mr}}_v,\quad \boldsymbol\pi^{\mathrm{mr}}=\boldsymbol\pi^{\mathrm{mr}}P^{\mathrm{mr}}$</p>

<p>Cao et al. (MrSE, UAI 2024) plug a <strong>MultiRank</strong> stationary law of a surfer that
<em>jointly</em> picks a node and a relation type into the same SE functional — exactly
a “multi-rank,” not relation-collapsed edge-weighting. <em>Minor:</em> the source’s
$\pi^{\mathrm{mr}}$ is really a <strong>coupled pair</strong> of fixed-point equations (a node
vector $x’$ and a relation vector $y$); the survey’s single-operator
$\pi^{\mathrm{mr}}=\pi^{\mathrm{mr}}P^{\mathrm{mr}}$ is a fair shorthand.</p>

<h3 id="6-semi-supervised-se--mismatch--fixed">6. Semi-supervised SE — <strong>MISMATCH → fixed</strong></h3>

<p><strong>Survey (before):</strong> $\;\min_{\mathcal{P}}\mathcal{H}^{(2)}(G;\mathcal{P})\;\text{ s.t. }\;\mathcal{M}\subseteq\text{same},\ \mathcal{C}\subseteq\text{diff}$</p>

<p><strong>Source (Zeng et al., SSE, SDM 2024, eqs. 3.5–3.6):</strong>
\(\min_{\mathcal{P}}\ \mathcal{H}^{(2)}(G;\mathcal{P}) + \varphi\,E_{\mathcal{P}}(G,G'),\qquad E_{\mathcal{P}}(G,G')=-\sum_{X\in\mathcal{P}}\frac{g'_X}{\mathrm{vol}(G)}\log_2\frac{V_X}{\mathrm{vol}(G)}\)</p>

<p>SSE does <strong>not</strong> hard-constrain the partition. Must-link / cannot-link are
encoded as <strong>signed edges of a constraint graph</strong> $G’$ and folded in as a
<strong>soft penalty</strong> $\varphi\,E_{\mathcal{P}}$ ($\varphi=2$) traded off against the
SE — constraints <em>can</em> be violated. The survey’s “s.t.” hard-constraint framing
misrepresented the mechanism. <strong>Fixed</strong> to the penalty form.</p>

<h3 id="7-incremental--dynamic-se--match-minor-schematic-deltamathcalh">7. Incremental / dynamic SE — <strong>MATCH</strong> (minor: schematic $\Delta\mathcal{H}$)</h3>

<p><strong>Survey:</strong> $\;\mathcal{H}^{(2)}(G_{t+1})=\mathcal{H}^{(2)}(G_t)+\Delta\mathcal{H}(e_t)$</p>

<p>Yang et al. (Incre-2dSE, <em>Artificial Intelligence</em> 2024) maintain <strong>2D</strong> SE under
batched edge updates by tracking per-community degree/volume/cut-edge increments
and adjusting the encoding tree (naive and node-shifting strategies). The
additive schematic is directionally faithful, provided $\Delta\mathcal{H}$ is
read as a <strong>localized incremental recomputation over affected tree nodes</strong> (plus
tree adjustment), not a closed-form scalar. Left as-is (it is a schematic).</p>

<h3 id="8-continuous--differentiable-se--match-parent-index-made-precise">8. Continuous / differentiable SE — <strong>MATCH</strong> (parent index made precise)</h3>

<p><strong>Survey (now):</strong>
\(\mathcal{H}^{\mathcal{T}}(G)=\sum_{h,k}-\frac{1}{\mathrm{vol}(G)}\Big(V^{h}_{k}-\!\!\sum_{(i,j)\in E}\!S^{h}_{ik}S^{h}_{jk}w_{ij}\Big)\log_2\frac{V^{h}_{k}}{V^{h-1}_{k^-}}\)</p>

<p>This reproduces <strong>LSEnet</strong> (Sun et al., ICML 2024, Def. 4.3, eq. 4) <strong>verbatim</strong>:
the differentiable soft-cut $g=V^h_k-\sum_{(i,j)\in E}S^h_{ik}S^h_{jk}w_{ij}$
(volume minus internal soft edge weight) and the cumulative soft assignment
$S^h=\prod_k C^k$; DeSE (Zhang et al., KDD 2025, eq. 6) gives an equivalent
per-layer form. The one fix here: the log denominator was $V^{h-1}<em>{k}$ but the
source uses the <strong>parent-indexed</strong> $V^{h-1}</em>{k^-}$ (child-volume / parent-volume
across a tree edge). Corrected.</p>

<hr />

<h2 id="scorecard">Scorecard</h2>

<table>
  <thead>
    <tr>
      <th>#</th>
      <th>Equation</th>
      <th>Source</th>
      <th>Verdict</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Encoding-tree SE</td>
      <td>SE book, eq. 9.11/9.19</td>
      <td><strong>MISMATCH → fixed</strong> ($\alpha^-\neq\lambda \to \alpha\neq\lambda$)</td>
    </tr>
    <tr>
      <td>2</td>
      <td>1D SE</td>
      <td>SE book, eq. 9.17</td>
      <td>MATCH</td>
    </tr>
    <tr>
      <td>3</td>
      <td>2D SE</td>
      <td>SE book / Li–Pan 2016</td>
      <td>MATCH</td>
    </tr>
    <tr>
      <td>4</td>
      <td>Directed / flow SE</td>
      <td>Yao &amp; Pan; RWE (TNSE’24)</td>
      <td>MATCH (teleportation noted)</td>
    </tr>
    <tr>
      <td>5</td>
      <td>Multi-relational SE</td>
      <td>Cao et al., UAI 2024</td>
      <td>MATCH (coupled fixed point)</td>
    </tr>
    <tr>
      <td>6</td>
      <td>Semi-supervised SE</td>
      <td>Zeng et al., SDM 2024</td>
      <td><strong>MISMATCH → fixed</strong> (soft penalty)</td>
    </tr>
    <tr>
      <td>7</td>
      <td>Incremental / dynamic SE</td>
      <td>Yang et al., AIJ 2024</td>
      <td>MATCH (schematic $\Delta\mathcal{H}$)</td>
    </tr>
    <tr>
      <td>8</td>
      <td>Continuous / differentiable SE</td>
      <td>Sun et al., ICML 2024</td>
      <td>MATCH (parent index fixed)</td>
    </tr>
  </tbody>
</table>

<p><strong>Net:</strong> two real errors caught and corrected against the originals; the rest
faithful, with three table-level abstractions documented rather than silently
kept. The core definitions (1D / 2D / encoding-tree) now agree with the SE book
exactly.</p>

<h2 id="references">References</h2>

<ol>
  <li>A. Li. <em>Science of Artificial Intelligence: Mathematical Principles of Intelligence</em> (the “SE book”), 2024. — core definitions, Ch. 9 (eqs. 9.11, 9.17, 9.19).</li>
  <li>A. Li and Y. Pan. Structural Information and Dynamical Complexity of Networks. <em>IEEE Trans. Information Theory</em>, 2016. — 1D/2D/k-D SE.</li>
  <li>Y. Yao and Y. Pan. Flow-Based Clustering on Directed Graphs. — directed/flow SE volumes via PageRank stationary distribution.</li>
  <li>Zhang et al. RWE: A Random-Walk Based Graph Entropy. <em>IEEE Trans. Network Science and Engineering</em>, 2024.</li>
  <li>Cao et al. Multi-Relational Structural Entropy. <em>UAI</em>, 2024 (arXiv:2405.07096) — MrSE / MultiRank.</li>
  <li>Zeng et al. Semi-Supervised Clustering via Structural Entropy (SSE). <em>SDM</em>, 2024 (arXiv:2312.10917) — soft-penalty constraint.</li>
  <li>Yang et al. Incremental Measurement of Structural Entropy for Dynamic Graphs. <em>Artificial Intelligence</em> 334, 2024 (arXiv:2207.12653) — Incre-2dSE.</li>
  <li>Sun et al. LSEnet: Lorentz Structural Entropy Neural Network for Deep Graph Clustering. <em>ICML</em>, 2024 — differentiable SE (Def. 4.3).</li>
  <li>Zhang et al. Unsupervised Graph Clustering with Deep Structural Entropy (DeSE). <em>KDD</em>, 2025 (arXiv:2505.14040).</li>
</ol>

<p><em>Companion to the structural-entropy survey. Source code and full results:
<a href="https://github.com/SuuTTT/structural-entropy-benchmark">github.com/SuuTTT/structural-entropy-benchmark</a>.</em></p>]]></content><author><name></name></author><summary type="html"><![CDATA[We checked every structural-entropy equation in our survey against its original source — the SE book for the core definitions, and the cited paper for each variant. Two real errors found and fixed (the encoding-tree summation domain, and a hard-vs-soft constraint), plus a handful of benign table-level abstractions documented. This post shows, side by side, the survey form, the source form, and the verdict for all eight equations.]]></summary></entry></feed>