From 57391da3f5491b074234f5a5caa2cd19411567a0 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 25 Jul 2026 23:40:09 +0000 Subject: [PATCH 1/6] Add task-intrinsic reference points for token-guess metrics Belief-probe R2 and greedy token accuracy were reported as bare numbers in cycle 1. Both have floors and ceilings imposed by the task that are large relative to the gaps between conditions, so the reported values cannot be read as a measure of what a training objective induced. Derive those references from the environment: the accuracy of an exact Bayesian filter as a function of how many observations it may see, the R2 of the study's own probe applied to the raw one-hot observations, and the R2 of the same probe applied to a randomly initialised copy of the study transformer. Co-authored-by: Alex Vardakostas --- .../mess3_token_guess_cycle_2/__init__.py | 0 .../metric_references.py | 342 ++++++++++++++++++ .../references/__init__.py | 0 .../references/experiment.py | 138 +++++++ .../20260725T233938Z-70fe7dae/findings.md | 49 +++ .../20260725T233938Z-70fe7dae/references.json | 50 +++ .../run_manifest.json | 75 ++++ tests/test_mess3_token_guess_references.py | 116 ++++++ 8 files changed, 770 insertions(+) create mode 100644 experiments/mess3_token_guess_cycle_2/__init__.py create mode 100644 experiments/mess3_token_guess_cycle_2/metric_references.py create mode 100644 experiments/mess3_token_guess_cycle_2/references/__init__.py create mode 100644 experiments/mess3_token_guess_cycle_2/references/experiment.py create mode 100644 experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/findings.md create mode 100644 experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/references.json create mode 100644 experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/run_manifest.json create mode 100644 tests/test_mess3_token_guess_references.py diff --git a/experiments/mess3_token_guess_cycle_2/__init__.py b/experiments/mess3_token_guess_cycle_2/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/experiments/mess3_token_guess_cycle_2/metric_references.py b/experiments/mess3_token_guess_cycle_2/metric_references.py new file mode 100644 index 00000000..d24a35ea --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/metric_references.py @@ -0,0 +1,342 @@ +"""Task-intrinsic reference points for the passive MESS3 token-guess study. + +Cycle 1 reported belief-probe R² and greedy token accuracy as bare numbers. Both +metrics have a task-imposed floor and ceiling that are large relative to the +differences between conditions, so a bare number cannot be read as a measure of +how much belief structure a training objective induced. + +This module derives those reference points from the environment definition and +from the same probe estimator the conditions use, so that condition scores can be +reported as a fraction of the range the metric can actually move through. + +Three references matter: + +``bayes_accuracy`` + Greedy token accuracy of the exact Bayesian filter, as a function of how many + past tokens it is allowed to see. One token reproduces the trivial + "repeat the previous token" rule; the sequence converges well inside the + 64-token context the agents receive. + +``raw_token_window_r2`` + Belief-probe R² for an affine probe read directly off the one-hot encoded + last ``k`` observations. No network and no training are involved, so this is + the score a policy earns for passing its own inputs through unchanged. + +``untrained_module_r2`` + The same probe applied to a randomly initialised copy of the study's + transformer. This controls for architecture, embedding width, and the final + LayerNorm, none of which the raw-token probe exercises. +""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any + +import numpy as np +import torch + +from analysis.probes import r2_score +from envs.hmm import HMMEnv +from envs.mess3.model import passive_model +from experiments.mess3_belief_geometry_2026_07.probe import ( + collect_probe_data, + make_transducer_target, +) +from experiments.mess3_token_guess_cycle_1.analysis import ( + PROBE_RANK, + fit_reduced_rank_affine, +) +from harness.seeding import named_seed_sequences, seed_sequence_to_int +from learners.models.transformer import TransformerModel + +ALPHA = 0.85 +WARMUP = 64 +CONTEXT_LENGTHS = (1, 2, 3, 4, 6, 8, 16, 64) +BOOTSTRAP_RESAMPLES = 400 + +_STREAM_KEYS = { + "reference_fit": (300,), + "reference_test": (301,), + "untrained_fit": (302,), + "untrained_test": (303,), + "bootstrap": (304,), +} + + +@dataclass(frozen=True, slots=True) +class TokenStream: + """Exact predictive beliefs aligned with the tokens they predict.""" + + beliefs: np.ndarray + tokens: np.ndarray + windows: np.ndarray + + +def simulate_stream(*, n_steps: int, seed: int, window: int = WARMUP) -> TokenStream: + """Simulate passive MESS3 and record the exact predictive belief per step. + + The belief is the distribution over the state that emits the token being + predicted, conditioned on every token revealed so far. This matches the + ``delay=1`` transducer target the conditions probe against, where the + filtering operator is ``diag(P(y|s)) @ T``. + """ + + if n_steps <= 0 or window <= 0: + raise ValueError("n_steps and window must be positive") + model = passive_model(alpha=ALPHA) + transition = np.asarray(model.transition_matrix, dtype=np.float64) + emission = np.asarray(model.emission_matrix, dtype=np.float64) + initial = np.asarray(model.initial_distribution, dtype=np.float64) + + rng = np.random.default_rng(seed) + state = int(rng.choice(len(initial), p=initial)) + belief = initial.copy() + history: list[int] = [0] * window + + beliefs = np.empty((n_steps, len(initial)), dtype=np.float64) + tokens = np.empty(n_steps, dtype=np.int64) + windows = np.empty((n_steps, window), dtype=np.int64) + + for step in range(n_steps + window): + token = int(rng.choice(emission.shape[1], p=emission[state])) + if step >= window: + index = step - window + beliefs[index] = belief + tokens[index] = token + windows[index] = history[-window:] + history.append(token) + posterior = belief * emission[:, token] + belief = (posterior / posterior.sum()) @ transition + state = int(rng.choice(transition.shape[1], p=transition[state])) + return TokenStream(beliefs=beliefs, tokens=tokens, windows=windows) + + +def _one_hot_window(windows: np.ndarray, k: int) -> np.ndarray: + return np.eye(3, dtype=np.float64)[windows[:, -k:]].reshape(len(windows), -1) + + +def _probe_r2( + fit_features: np.ndarray, + fit_targets: np.ndarray, + test_features: np.ndarray, + test_targets: np.ndarray, +) -> tuple[float, np.ndarray]: + weight, bias = fit_reduced_rank_affine( + fit_features, + fit_targets, + rank=PROBE_RANK, + ) + predicted = test_features @ weight + bias + return r2_score(predicted, test_targets), predicted + + +def raw_token_window_r2( + fit: TokenStream, + test: TokenStream, + *, + context_lengths: tuple[int, ...] = CONTEXT_LENGTHS, +) -> dict[int, float]: + """Score the study's probe against one-hot encoded raw observations.""" + + scores: dict[int, float] = {} + for k in context_lengths: + score, _ = _probe_r2( + _one_hot_window(fit.windows, k), + fit.beliefs, + _one_hot_window(test.windows, k), + test.beliefs, + ) + scores[k] = float(score) + return scores + + +def bootstrap_r2_interval( + fit: TokenStream, + test: TokenStream, + *, + context_length: int, + seed: int, + resamples: int = BOOTSTRAP_RESAMPLES, +) -> tuple[float, float]: + """Bound the probe's own sampling noise at the conditions' test-set size.""" + + _, predicted = _probe_r2( + _one_hot_window(fit.windows, context_length), + fit.beliefs, + _one_hot_window(test.windows, context_length), + test.beliefs, + ) + rng = np.random.default_rng(seed) + n = len(test.beliefs) + scores = [ + r2_score(predicted[index], test.beliefs[index]) + for index in (rng.integers(0, n, n) for _ in range(resamples)) + ] + low, high = np.percentile(scores, [2.5, 97.5]) + return float(low), float(high) + + +def bayes_accuracy_by_context( + stream: TokenStream, + *, + context_lengths: tuple[int, ...] = CONTEXT_LENGTHS, +) -> dict[int, float]: + """Greedy accuracy of an exact filter restricted to the last ``k`` tokens.""" + + model = passive_model(alpha=ALPHA) + transition = np.asarray(model.transition_matrix, dtype=np.float64) + emission = np.asarray(model.emission_matrix, dtype=np.float64) + initial = np.asarray(model.initial_distribution, dtype=np.float64) + + accuracies: dict[int, float] = {} + for k in context_lengths: + belief = np.repeat(initial[None, :], len(stream.windows), axis=0) + for offset in range(k): + belief = belief * emission[:, stream.windows[:, -k + offset]].T + belief /= belief.sum(axis=1, keepdims=True) + belief = belief @ transition + predicted = (belief @ emission).argmax(axis=1) + accuracies[k] = float((predicted == stream.tokens).mean()) + return accuracies + + +def _build_untrained_module(env_config: dict[str, Any], model_config: dict[str, Any]): + from ray.rllib.core.rl_module.rl_module import RLModuleSpec + + environment = HMMEnv(env_config) + try: + spec = RLModuleSpec( + module_class=TransformerModel, + model_config=dict(model_config), + observation_space=environment.observation_space, + action_space=environment.action_space, + ) + return spec.build() + finally: + environment.close() + + +def untrained_module_r2( + *, + env_config: dict[str, Any], + model_config: dict[str, Any], + seed: int, + fit_steps: int, + test_steps: int, + device: str = "cpu", +) -> dict[str, float]: + """Probe a randomly initialised copy of the study transformer. + + The module is never trained, so any score above the raw-token reference is + attributable to the architecture rather than to a learning objective. + """ + + streams = named_seed_sequences(seed, _STREAM_KEYS) + config = dict(env_config) + config["diagnostics"] = { + "state": True, + "belief": True, + "tokens": True, + "transitions": True, + } + torch.manual_seed(seed_sequence_to_int(streams["untrained_fit"], bits=64)) + module = _build_untrained_module(config, model_config) + + def make_environment(): + return HMMEnv(config) + + environment = make_environment() + try: + initial_belief, outcome_operator, initial_operator = make_transducer_target( + environment + ) + finally: + environment.close() + + common = { + "module": module, + "env_factory": make_environment, + "policy_mode": "greedy", + "device": device, + "warmup": WARMUP, + "initial_belief": initial_belief, + "action_outcome_operator": outcome_operator, + "initial_outcome_operator": initial_operator, + } + fit = collect_probe_data( + n_steps=fit_steps, seed=streams["untrained_fit"], **common + ) + test = collect_probe_data( + n_steps=test_steps, seed=streams["untrained_test"], **common + ) + score, _ = _probe_r2(fit.activations, fit.beliefs, test.activations, test.beliefs) + return { + "r_squared": float(score), + "token_accuracy_greedy": float(test.rewards.mean()), + "n_fit": int(len(fit.beliefs)), + "n_test": int(len(test.beliefs)), + } + + +def compute_references( + *, + seed: int, + fit_steps: int, + test_steps: int, + env_config: dict[str, Any] | None = None, + model_config: dict[str, Any] | None = None, + device: str = "cpu", +) -> dict[str, Any]: + """Compute every reference point the study needs to normalise its metrics.""" + + streams = named_seed_sequences(seed, _STREAM_KEYS) + fit = simulate_stream( + n_steps=fit_steps, + seed=seed_sequence_to_int(streams["reference_fit"]), + ) + test = simulate_stream( + n_steps=test_steps, + seed=seed_sequence_to_int(streams["reference_test"]), + ) + raw_r2 = raw_token_window_r2(fit, test) + saturated = max(raw_r2) + low, high = bootstrap_r2_interval( + fit, + test, + context_length=min(8, saturated), + seed=seed_sequence_to_int(streams["bootstrap"]), + ) + accuracy = bayes_accuracy_by_context(test) + references: dict[str, Any] = { + "alpha": ALPHA, + "seed": seed, + "n_fit": fit_steps, + "n_test": test_steps, + "probe_rank": PROBE_RANK, + "raw_token_window_r2": {str(k): v for k, v in raw_r2.items()}, + "belief_r2_floor": raw_r2[saturated], + "belief_r2_floor_context": saturated, + "belief_r2_probe_noise_95ci": [low, high], + "bayes_accuracy_by_context": {str(k): v for k, v in accuracy.items()}, + "accuracy_floor_repeat_previous_token": accuracy[1], + "accuracy_ceiling_bayes": accuracy[max(accuracy)], + } + if env_config is not None and model_config is not None: + references["untrained_module"] = untrained_module_r2( + env_config=env_config, + model_config=model_config, + seed=seed, + fit_steps=fit_steps, + test_steps=test_steps, + device=device, + ) + return references + + +def normalise(value: float, *, floor: float, ceiling: float) -> float: + """Express a score as the fraction of the floor-to-ceiling range it covers.""" + + if ceiling <= floor: + raise ValueError("ceiling must exceed floor") + return (value - floor) / (ceiling - floor) diff --git a/experiments/mess3_token_guess_cycle_2/references/__init__.py b/experiments/mess3_token_guess_cycle_2/references/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/experiments/mess3_token_guess_cycle_2/references/experiment.py b/experiments/mess3_token_guess_cycle_2/references/experiment.py new file mode 100644 index 00000000..6f813a7b --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/references/experiment.py @@ -0,0 +1,138 @@ +"""Record the task-intrinsic floors and ceilings for the token-guess metrics.""" + +from __future__ import annotations + +from typing import Any + +from experiments.mess3_token_guess_cycle_1.comparison.experiment import ( + BASE_MODEL_CONFIG, + ENV_CONFIG, +) +from experiments.mess3_token_guess_cycle_2.metric_references import ( + compute_references, + normalise, +) +from harness.artifacts import RunArtifacts +from harness.context import RunContext + +FIT_STEPS = 60_000 +TEST_STEPS = 30_000 +SMOKE_FIT_STEPS = 2_000 +SMOKE_TEST_STEPS = 1_000 + +# Best reported cycle-1 scores, used only to illustrate where the published +# numbers sit inside the range the metric can move through. +CYCLE_1_SCORES = { + "comparison/reward_only": 0.8552, + "comparison/predictive_loss": 0.9319, + "comparison/max_entropy": 0.8558, + "iqn_value": 0.9760, + "kelly_cycle_2/correctness_iqn": 0.9857, + "kelly_cycle_3/conditional_decoupled_kelly_iqn": 0.9824, +} +# Supervised next-token replication, final-LayerNorm probe, seed 0. See +# experiments/mess3_supervised/README.md. +SUPERVISED_CEILING = 0.99888 + + +def _findings(references: dict[str, Any]) -> str: + floor = references["belief_r2_floor"] + context = references["belief_r2_floor_context"] + low, high = references["belief_r2_probe_noise_95ci"] + lines = [ + "# Token-guess metric reference points", + "", + "## Belief-probe R²", + "", + f"An affine probe reading the one-hot encoded last {context} observations,", + "with no network and no training, already scores " + f"R² = {floor:.4f}.", + "The supervised next-token replication reaches " + f"{SUPERVISED_CEILING:.4f}.", + "Belief-probe R² therefore moves through a usable range of only " + f"{SUPERVISED_CEILING - floor:.4f}.", + "", + "| observations visible to the probe | R² |", + "|---:|---:|", + ] + for k, value in sorted( + references["raw_token_window_r2"].items(), key=lambda item: int(item[0]) + ): + lines.append(f"| {k} | {value:.4f} |") + untrained = references.get("untrained_module") + if untrained is not None: + lines.extend( + [ + "", + "A randomly initialised copy of the study transformer scores " + f"R² = {untrained['r_squared']:.4f} with greedy accuracy " + f"{untrained['token_accuracy_greedy']:.4f}.", + ] + ) + lines.extend( + [ + "", + "Bootstrap resampling of the probe's test set puts its own sampling " + f"noise at [{low:.4f}, {high:.4f}].", + "", + "## Where the cycle-1 scores sit", + "", + "| condition | reported R² | fraction of the floor-to-ceiling range |", + "|---|---:|---:|", + ] + ) + for condition, value in CYCLE_1_SCORES.items(): + fraction = normalise(value, floor=floor, ceiling=SUPERVISED_CEILING) + lines.append(f"| `{condition}` | {value:.4f} | {fraction:+.1%} |") + + accuracy = references["bayes_accuracy_by_context"] + lines.extend( + [ + "", + "## Greedy token accuracy", + "", + "| observations visible to an exact Bayesian filter | accuracy |", + "|---:|---:|", + ] + ) + for k, value in sorted(accuracy.items(), key=lambda item: int(item[0])): + lines.append(f"| {k} | {value:.4f} |") + lines.extend( + [ + "", + "One observation reproduces the trivial repeat-the-previous-token " + f"rule at {references['accuracy_floor_repeat_previous_token']:.4f}; " + "the filter saturates at " + f"{references['accuracy_ceiling_bayes']:.4f}. Greedy token accuracy " + "therefore moves through a usable range of only " + f"{references['accuracy_ceiling_bayes'] - references['accuracy_floor_repeat_previous_token']:.4f}.", + "", + ] + ) + return "\n".join(lines) + + +def run(context: RunContext) -> dict[str, Any]: + if context.seed is None: + raise ValueError("the reference computation requires a resolved seed") + outputs = RunArtifacts.from_context(context) + outputs.prepare() + references = compute_references( + seed=context.seed, + fit_steps=SMOKE_FIT_STEPS if context.smoke else FIT_STEPS, + test_steps=SMOKE_TEST_STEPS if context.smoke else TEST_STEPS, + env_config=ENV_CONFIG, + model_config=BASE_MODEL_CONFIG, + ) + references["supervised_ceiling"] = SUPERVISED_CEILING + references["cycle_1_normalised"] = { + condition: normalise( + value, + floor=references["belief_r2_floor"], + ceiling=SUPERVISED_CEILING, + ) + for condition, value in CYCLE_1_SCORES.items() + } + outputs.write_json("references.json", references) + (context.results_dir / "findings.md").write_text(_findings(references)) + return references diff --git a/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/findings.md b/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/findings.md new file mode 100644 index 00000000..cffc4761 --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/findings.md @@ -0,0 +1,49 @@ +# Token-guess metric reference points + +## Belief-probe R² + +An affine probe reading the one-hot encoded last 64 observations, +with no network and no training, already scores R² = 0.9668. +The supervised next-token replication reaches 0.9989. +Belief-probe R² therefore moves through a usable range of only 0.0321. + +| observations visible to the probe | R² | +|---:|---:| +| 1 | 0.8043 | +| 2 | 0.9302 | +| 3 | 0.9581 | +| 4 | 0.9648 | +| 6 | 0.9667 | +| 8 | 0.9669 | +| 16 | 0.9669 | +| 64 | 0.9668 | + +A randomly initialised copy of the study transformer scores R² = 0.8733 with greedy accuracy 0.3412. + +Bootstrap resampling of the probe's test set puts its own sampling noise at [0.9664, 0.9673]. + +## Where the cycle-1 scores sit + +| condition | reported R² | fraction of the floor-to-ceiling range | +|---|---:|---:| +| `comparison/reward_only` | 0.8552 | -347.6% | +| `comparison/predictive_loss` | 0.9319 | -108.6% | +| `comparison/max_entropy` | 0.8558 | -345.7% | +| `iqn_value` | 0.9760 | +28.7% | +| `kelly_cycle_2/correctness_iqn` | 0.9857 | +58.9% | +| `kelly_cycle_3/conditional_decoupled_kelly_iqn` | 0.9824 | +48.7% | + +## Greedy token accuracy + +| observations visible to an exact Bayesian filter | accuracy | +|---:|---:| +| 1 | 0.6732 | +| 2 | 0.6732 | +| 3 | 0.6859 | +| 4 | 0.6860 | +| 6 | 0.6879 | +| 8 | 0.6884 | +| 16 | 0.6883 | +| 64 | 0.6883 | + +One observation reproduces the trivial repeat-the-previous-token rule at 0.6732; the filter saturates at 0.6883. Greedy token accuracy therefore moves through a usable range of only 0.0151. diff --git a/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/references.json b/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/references.json new file mode 100644 index 00000000..5188ecba --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/references.json @@ -0,0 +1,50 @@ +{ + "accuracy_ceiling_bayes": 0.6883, + "accuracy_floor_repeat_previous_token": 0.6732, + "alpha": 0.85, + "bayes_accuracy_by_context": { + "1": 0.6732, + "16": 0.6883, + "2": 0.6732, + "3": 0.6859, + "4": 0.686, + "6": 0.6879333333333333, + "64": 0.6883, + "8": 0.6883666666666667 + }, + "belief_r2_floor": 0.9667781106841088, + "belief_r2_floor_context": 64, + "belief_r2_probe_noise_95ci": [ + 0.966386807711707, + 0.9672839724278931 + ], + "cycle_1_normalised": { + "comparison/max_entropy": -3.4570585423198747, + "comparison/predictive_loss": -1.0864815569232977, + "comparison/reward_only": -3.4757490310352237, + "iqn_value": 0.287269363654747, + "kelly_cycle_2/correctness_iqn": 0.5894322645528668, + "kelly_cycle_3/conditional_decoupled_kelly_iqn": 0.48663457661845627 + }, + "n_fit": 60000, + "n_test": 30000, + "probe_rank": 2, + "raw_token_window_r2": { + "1": 0.8043424580022087, + "16": 0.966855218046489, + "2": 0.9301666406047294, + "3": 0.9580682184473358, + "4": 0.9647961628967233, + "6": 0.9667392183948693, + "64": 0.9667781106841088, + "8": 0.9668577324292733 + }, + "seed": 42, + "supervised_ceiling": 0.99888, + "untrained_module": { + "n_fit": 60000, + "n_test": 30000, + "r_squared": 0.8733171203578343, + "token_accuracy_greedy": 0.34123333333333333 + } +} diff --git a/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/run_manifest.json b/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/run_manifest.json new file mode 100644 index 00000000..dd6f4c82 --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae/run_manifest.json @@ -0,0 +1,75 @@ +{ + "command": [ + "/workspace/.venv/bin/rl-harness", + "experiments.mess3_token_guess_cycle_2.references.experiment", + "--no-upload-artifacts" + ], + "dependency_lock": { + "file": "/workspace/uv.lock", + "sha256": "986725e46af5252423583fe947d30b2646f541a4863acb8c51d578a7ca1b8220" + }, + "ended_at": "2026-07-25T23:39:59.835334+00:00", + "error": null, + "experiment": { + "file": "/workspace/experiments/mess3_token_guess_cycle_2/references/experiment.py", + "module": "experiments.mess3_token_guess_cycle_2.references.experiment", + "source_sha256": "6706a930ef401113ce0d8e1d6572cc0960d4fd925f52474975219acf8273f7ac" + }, + "framework_versions": { + "gymnasium": "1.2.2", + "numpy": "2.5.1", + "python": "3.14.6", + "ray": "2.56.0", + "rl-harness": "0.1.0", + "torch": "2.12.1" + }, + "git": { + "commit": "0f798d66356f37e1d126a163a0f985cbcbd7bb54", + "dirty": true, + "experiment_repository": { + "commit": "0f798d66356f37e1d126a163a0f985cbcbd7bb54", + "dirty": true, + "root": "/workspace" + }, + "library": { + "commit": "7c231655be83affb51c1d24d8cfd475b5d425eb5", + "dirty": false, + "package": "rl-harness", + "root": "/rl-harness-src", + "version": "0.1.0" + } + }, + "hardware": { + "cpu_count": 4, + "cuda_available": false, + "machine": "x86_64", + "mps_available": false, + "platform": "Linux-6.12.94+-x86_64-with-glibc2.39", + "profile": { + "learner_device": "cpu", + "name": "cpu", + "num_env_runners": null, + "num_envs_per_env_runner": 24, + "num_gpus_per_env_runner": 0.0, + "torch_threads": null + } + }, + "run_id": "20260725T233938Z-70fe7dae", + "runtime": { + "artifacts_dir": "/workspace/experiments/mess3_token_guess_cycle_2/references/artifacts/20260725T233938Z-70fe7dae", + "overrides": { + "hardware_profile": "auto", + "resume_from": null, + "seed": 42, + "smoke": false, + "upload_artifacts": false + }, + "results_dir": "/workspace/experiments/mess3_token_guess_cycle_2/references/results/20260725T233938Z-70fe7dae", + "resume_from": null, + "seed": 42, + "smoke": false + }, + "schema_version": 2, + "started_at": "2026-07-25T23:39:38.286533+00:00", + "status": "completed" +} diff --git a/tests/test_mess3_token_guess_references.py b/tests/test_mess3_token_guess_references.py new file mode 100644 index 00000000..995ec387 --- /dev/null +++ b/tests/test_mess3_token_guess_references.py @@ -0,0 +1,116 @@ +"""Tests for the token-guess metric reference points.""" + +from __future__ import annotations + +import numpy as np +import pytest + +from envs.mess3.model import passive_model +from experiments.mess3_token_guess_cycle_1.comparison.experiment import ( + BASE_MODEL_CONFIG, + ENV_CONFIG, +) +from experiments.mess3_token_guess_cycle_2.metric_references import ( + ALPHA, + bayes_accuracy_by_context, + compute_references, + normalise, + raw_token_window_r2, + simulate_stream, + untrained_module_r2, +) + + +def test_simulated_belief_matches_the_delay_one_transducer_update(): + model = passive_model(alpha=ALPHA) + transition = np.asarray(model.transition_matrix) + emission = np.asarray(model.emission_matrix) + stream = simulate_stream(n_steps=64, seed=3, window=8) + + for index in range(len(stream.beliefs) - 1): + belief = stream.beliefs[index] + token = stream.tokens[index] + # delay=1 composes the observation operator before the transition, so + # the update is diag(P(y|s)) @ T applied in row-vector convention. + operator = np.diag(emission[:, token]) @ transition + expected = belief @ operator + expected /= expected.sum() + np.testing.assert_allclose(stream.beliefs[index + 1], expected, atol=1e-12) + + +def test_simulated_beliefs_are_probability_vectors(): + stream = simulate_stream(n_steps=256, seed=11, window=8) + np.testing.assert_allclose(stream.beliefs.sum(axis=1), 1.0, atol=1e-12) + assert (stream.beliefs >= 0.0).all() + + +def test_raw_token_probe_saturates_well_below_the_supervised_ceiling(): + fit = simulate_stream(n_steps=20_000, seed=100) + test = simulate_stream(n_steps=10_000, seed=101) + scores = raw_token_window_r2(fit, test, context_lengths=(1, 2, 4, 8, 16)) + + # More observations never hurt an affine probe by a meaningful margin. + ordered = [scores[k] for k in (1, 2, 4, 8, 16)] + assert all(later >= earlier - 5e-3 for earlier, later in zip(ordered, ordered[1:])) + + # A single observation is already most of the way there, and the window + # saturates by eight observations, short of the supervised 0.9989. + assert 0.78 < scores[1] < 0.83 + assert scores[8] == pytest.approx(scores[16], abs=5e-3) + assert 0.95 < scores[8] < 0.98 + + +def test_raw_token_floor_exceeds_several_published_cycle_1_scores(): + fit = simulate_stream(n_steps=20_000, seed=100) + test = simulate_stream(n_steps=10_000, seed=101) + floor = raw_token_window_r2(fit, test, context_lengths=(8,))[8] + + # Cycle 1 reported these for reward-only, max-entropy, and predictive-loss + # PPO. A probe on the untransformed observations beats all three. + for reported in (0.8552, 0.8558, 0.9319): + assert reported < floor + + +def test_bayes_accuracy_spans_a_narrow_band_above_repeat_previous_token(): + stream = simulate_stream(n_steps=40_000, seed=102) + accuracy = bayes_accuracy_by_context(stream, context_lengths=(1, 2, 4, 8, 64)) + + # One observation is the repeat-the-previous-token rule. + assert 0.66 < accuracy[1] < 0.69 + assert accuracy[8] == pytest.approx(accuracy[64], abs=5e-3) + assert accuracy[64] - accuracy[1] < 0.03 + + +def test_normalise_reports_position_within_the_usable_range(): + assert normalise(0.9670, floor=0.9670, ceiling=0.9989) == pytest.approx(0.0) + assert normalise(0.9989, floor=0.9670, ceiling=0.9989) == pytest.approx(1.0) + assert normalise(0.8552, floor=0.9670, ceiling=0.9989) < 0.0 + with pytest.raises(ValueError): + normalise(0.5, floor=0.9, ceiling=0.9) + + +def test_untrained_module_is_probed_with_the_study_architecture(): + result = untrained_module_r2( + env_config=ENV_CONFIG, + model_config=BASE_MODEL_CONFIG, + seed=5, + fit_steps=2_000, + test_steps=1_000, + ) + assert result["n_fit"] == 2_000 + assert result["n_test"] == 1_000 + assert -1.0 <= result["r_squared"] <= 1.0 + assert 0.0 <= result["token_accuracy_greedy"] <= 1.0 + + +def test_compute_references_reports_a_floor_below_the_supervised_ceiling(): + references = compute_references(seed=7, fit_steps=8_000, test_steps=4_000) + floor = references["belief_r2_floor"] + low, high = references["belief_r2_probe_noise_95ci"] + + assert 0.94 < floor < 0.99 + assert low < floor < high + assert references["accuracy_floor_repeat_previous_token"] < ( + references["accuracy_ceiling_bayes"] + ) + assert "untrained_module" not in references From 1f18c7ec112fccfaf3a3eada323d1afa0dceda6b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 25 Jul 2026 23:44:20 +0000 Subject: [PATCH 2/6] Re-analyse the committed multi-seed results with seed-aware statistics The Kelly cycles reported mean plus-or-minus a population standard deviation over three seeds and drew orderings from it. Recomputed as a t-based interval on the mean, and paired across the seeds each pair of arms shares, none of the 34 published pairwise orderings survives a Holm correction, including the headline PPO-versus-IQN gap. Add the aggregation the study should have used, and an analysis leaf that regenerates the audit from the committed results so the claim is checkable. Co-authored-by: Alex Vardakostas --- .../audit/__init__.py | 0 .../audit/experiment.py | 200 ++++++ .../20260725T234419Z-36e12c96/audit.json | 644 ++++++++++++++++++ .../20260725T234419Z-36e12c96/findings.md | 69 ++ .../run_manifest.json | 75 ++ .../mess3_token_guess_cycle_2/statistics.py | 204 ++++++ tests/test_mess3_token_guess_audit.py | 68 ++ tests/test_mess3_token_guess_statistics.py | 104 +++ 8 files changed, 1364 insertions(+) create mode 100644 experiments/mess3_token_guess_cycle_2/audit/__init__.py create mode 100644 experiments/mess3_token_guess_cycle_2/audit/experiment.py create mode 100644 experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json create mode 100644 experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/findings.md create mode 100644 experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/run_manifest.json create mode 100644 experiments/mess3_token_guess_cycle_2/statistics.py create mode 100644 tests/test_mess3_token_guess_audit.py create mode 100644 tests/test_mess3_token_guess_statistics.py diff --git a/experiments/mess3_token_guess_cycle_2/audit/__init__.py b/experiments/mess3_token_guess_cycle_2/audit/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/experiments/mess3_token_guess_cycle_2/audit/experiment.py b/experiments/mess3_token_guess_cycle_2/audit/experiment.py new file mode 100644 index 00000000..dc5db0df --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/audit/experiment.py @@ -0,0 +1,200 @@ +"""Re-analyse the committed multi-seed token-guess results. + +This reads the results already in the repository and re-reports them against the +task's own floors and ceilings, with intervals that account for the three seeds +they were measured on. It trains nothing. Its purpose is to establish which of +the published orderings the existing evidence actually supports, so that cycle 2 +can be scoped to the questions that remain open. +""" + +from __future__ import annotations + +import glob +import json +from collections import defaultdict +from pathlib import Path +from typing import Any + +from experiments.mess3_token_guess_cycle_2.statistics import ( + compare, + holm_adjust, + summarise, +) +from harness.artifacts import RunArtifacts +from harness.context import RunContext + +STUDIES = ("mess_3_kelly_cycle_2", "mess_3_kelly_cycle_3") +METRICS = ("r_squared", "token_accuracy_greedy") + + +def _references(experiment_dir: Path) -> dict[str, float]: + """Load the most recent reference run, or fall back to recorded values.""" + + candidates = sorted( + (experiment_dir.parent / "references" / "results").glob("*/references.json") + ) + if candidates: + data = json.loads(candidates[-1].read_text()) + return { + "belief_r2_floor": float(data["belief_r2_floor"]), + "belief_r2_ceiling": float(data["supervised_ceiling"]), + "accuracy_floor": float(data["accuracy_floor_repeat_previous_token"]), + "accuracy_ceiling": float(data["accuracy_ceiling_bayes"]), + } + return { + "belief_r2_floor": 0.9668, + "belief_r2_ceiling": 0.99888, + "accuracy_floor": 0.6732, + "accuracy_ceiling": 0.6883, + } + + +def collect_study(repository_root: Path, study: str) -> dict[str, dict[int, dict[str, float]]]: + """Read every ``condition_summary.json`` a study committed, keyed by seed.""" + + per_arm: dict[str, dict[int, dict[str, float]]] = defaultdict(dict) + pattern = str(repository_root / "experiments" / study / "*" / "results" / "*" / "condition_summary.json") + for path in sorted(glob.glob(pattern)): + summary = json.loads(Path(path).read_text()) + probe = summary.get("probe") or {} + seed = summary.get("seed") + if seed is None or "r_squared" not in probe: + continue + arm = Path(path).parents[2].name + per_arm[arm][int(seed)] = { + metric: float(probe[metric]) for metric in METRICS if metric in probe + } + return dict(per_arm) + + +def analyse_study( + per_arm: dict[str, dict[int, dict[str, float]]], + references: dict[str, float], +) -> dict[str, Any]: + """Summarise each arm and test every pairwise ordering within the study.""" + + floor = references["belief_r2_floor"] + ceiling = references["belief_r2_ceiling"] + conditions: dict[str, Any] = {} + r2_by_arm: dict[str, dict[int, float]] = {} + for arm, by_seed in sorted(per_arm.items()): + values = [by_seed[seed]["r_squared"] for seed in sorted(by_seed)] + if len(values) < 2: + continue + estimate = summarise(values) + r2_by_arm[arm] = {seed: by_seed[seed]["r_squared"] for seed in by_seed} + conditions[arm] = { + "seeds": sorted(by_seed), + "r_squared_mean": estimate.mean, + "r_squared_sample_sd": estimate.sample_sd, + "r_squared_ci": [estimate.ci_low, estimate.ci_high], + "fraction_of_usable_range": (estimate.mean - floor) / (ceiling - floor), + "exceeds_no_network_floor": bool(estimate.ci_low > floor), + } + + comparisons: dict[str, Any] = {} + arms = sorted(r2_by_arm) + raw_p: dict[str, float] = {} + for index, left in enumerate(arms): + for right in arms[index + 1:]: + name = f"{left} vs {right}" + result = compare(r2_by_arm[left], r2_by_arm[right]) + raw_p[name] = result.p_value + comparisons[name] = { + "difference": result.difference, + "difference_ci": [result.ci_low, result.ci_high], + "paired_sample_sd": result.sample_sd, + "n_shared_seeds": result.n, + "p_value": result.p_value, + "seeds_for_80_percent_power": result.seeds_for_power, + } + for name, adjusted in holm_adjust(raw_p).items(): + comparisons[name]["p_value_holm"] = adjusted + comparisons[name]["resolved"] = bool( + adjusted < 0.05 and comparisons[name]["difference_ci"][0] > 0.0 + ) or bool(adjusted < 0.05 and comparisons[name]["difference_ci"][1] < 0.0) + return {"conditions": conditions, "comparisons": comparisons} + + +def _findings(analysis: dict[str, Any], references: dict[str, float]) -> str: + floor = references["belief_r2_floor"] + ceiling = references["belief_r2_ceiling"] + lines = [ + "# Audit of the committed multi-seed token-guess results", + "", + "Belief-probe R² is reported against the range it can move through: 0% is " + f"an affine probe on the raw observations ({floor:.4f}) and 100% is the " + f"supervised next-token replication ({ceiling:.4f}).", + "", + ] + for study, result in analysis.items(): + lines.extend( + [ + f"## `{study}`", + "", + "| condition | R² | 95% CI | usable range | above floor |", + "|---|---:|---|---:|---|", + ] + ) + ordered = sorted( + result["conditions"].items(), + key=lambda item: -item[1]["r_squared_mean"], + ) + for arm, values in ordered: + low, high = values["r_squared_ci"] + above = "yes" if values["exceeds_no_network_floor"] else "no" + lines.append( + f"| `{arm}` | {values['r_squared_mean']:.4f} | " + f"[{low:.4f}, {high:.4f}] | " + f"{values['fraction_of_usable_range']:+.0%} | {above} |" + ) + resolved = [ + name + for name, values in result["comparisons"].items() + if values.get("resolved") + ] + total = len(result["comparisons"]) + lines.extend( + [ + "", + f"Of {total} pairwise orderings, {len(resolved)} survive a " + "Holm correction across the family.", + "", + "| comparison | difference | 95% CI | Holm p | seeds for 80% power |", + "|---|---:|---|---:|---:|", + ] + ) + for name, values in sorted( + result["comparisons"].items(), key=lambda item: item[1]["p_value"] + ): + low, high = values["difference_ci"] + needed = values["seeds_for_80_percent_power"] + lines.append( + f"| {name} | {values['difference']:+.4f} | " + f"[{low:+.4f}, {high:+.4f}] | " + f"{values['p_value_holm']:.3f} | " + f"{needed if needed < 10_000 else '>10000'} |" + ) + lines.append("") + return "\n".join(lines) + + +def run(context: RunContext) -> dict[str, Any]: + outputs = RunArtifacts.from_context(context) + outputs.prepare() + repository_root = Path(__file__).parents[3] + references = _references(Path(__file__).parents[1]) + analysis = { + study: analyse_study( + collect_study(repository_root, study), + references, + ) + for study in STUDIES + } + analysis = {study: result for study, result in analysis.items() if result["conditions"]} + if not analysis: + raise RuntimeError("no committed multi-seed results were found to audit") + result = {"references": references, "studies": analysis} + outputs.write_json("audit.json", result) + (context.results_dir / "findings.md").write_text(_findings(analysis, references)) + return result diff --git a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json new file mode 100644 index 00000000..2895738d --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json @@ -0,0 +1,644 @@ +{ + "references": { + "accuracy_ceiling": 0.6883, + "accuracy_floor": 0.6732, + "belief_r2_ceiling": 0.99888, + "belief_r2_floor": 0.9668 + }, + "studies": { + "mess_3_kelly_cycle_2": { + "comparisons": { + "conditional_decoupled_kelly_iqn vs conditional_decoupled_kelly_mean": { + "difference": -0.006775144328574179, + "difference_ci": [ + -0.046992707495339764, + 0.03344241883819141 + ], + "n_shared_seeds": 3, + "p_value": 0.54388406860352, + "p_value_holm": 1.0, + "paired_sample_sd": 0.016189747845512227, + "resolved": false, + "seeds_for_80_percent_power": 47 + }, + "conditional_decoupled_kelly_iqn vs correctness_iqn": { + "difference": -0.03657977905470411, + "difference_ci": [ + -0.05634829673622678, + -0.016811261373181435 + ], + "n_shared_seeds": 3, + "p_value": 0.01541211009914722, + "p_value_holm": 0.27741798178464994, + "paired_sample_sd": 0.007957899269438538, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "conditional_decoupled_kelly_iqn vs correctness_mean": { + "difference": -0.0343501413875947, + "difference_ci": [ + -0.05709634836414988, + -0.011603934411039518 + ], + "n_shared_seeds": 3, + "p_value": 0.022876187524714233, + "p_value_holm": 0.36601900039542773, + "paired_sample_sd": 0.009156580518448046, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "conditional_decoupled_kelly_iqn vs coupled_kelly_iqn": { + "difference": 0.002415095533641387, + "difference_ci": [ + -0.017357691076054588, + 0.022187882143337362 + ], + "n_shared_seeds": 3, + "p_value": 0.651663786941959, + "p_value_holm": 1.0, + "paired_sample_sd": 0.007959617744285205, + "resolved": false, + "seeds_for_80_percent_power": 88 + }, + "conditional_decoupled_kelly_iqn vs coupled_kelly_mean": { + "difference": 0.01156453197739645, + "difference_ci": [ + -0.019415723606662535, + 0.04254478756145543 + ], + "n_shared_seeds": 3, + "p_value": 0.24947735945521132, + "p_value_holm": 1.0, + "paired_sample_sd": 0.012471231138884894, + "resolved": false, + "seeds_for_80_percent_power": 12 + }, + "conditional_decoupled_kelly_iqn vs decoupled_kelly_iqn": { + "difference": -0.00816893560137418, + "difference_ci": [ + -0.03588395840427449, + 0.019546087201526133 + ], + "n_shared_seeds": 3, + "p_value": 0.332373029722586, + "p_value_holm": 1.0, + "paired_sample_sd": 0.011156798059867716, + "resolved": false, + "seeds_for_80_percent_power": 17 + }, + "conditional_decoupled_kelly_iqn vs decoupled_kelly_mean": { + "difference": -0.003844048137894592, + "difference_ci": [ + -0.035160135613054276, + 0.02747203933726509 + ], + "n_shared_seeds": 3, + "p_value": 0.6501427336852326, + "p_value_holm": 1.0, + "paired_sample_sd": 0.012606421667780358, + "resolved": false, + "seeds_for_80_percent_power": 87 + }, + "conditional_decoupled_kelly_mean vs correctness_iqn": { + "difference": -0.02980463472612993, + "difference_ci": [ + -0.052096990111295635, + -0.007512279340964222 + ], + "n_shared_seeds": 3, + "p_value": 0.028914213440128043, + "p_value_holm": 0.4337132016019206, + "paired_sample_sd": 0.008973880666808305, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "conditional_decoupled_kelly_mean vs correctness_mean": { + "difference": -0.027574997059020518, + "difference_ci": [ + -0.051758831760500626, + -0.00339116235754041 + ], + "n_shared_seeds": 3, + "p_value": 0.039125535965817734, + "p_value_holm": 0.5477575035214483, + "paired_sample_sd": 0.00973530355708022, + "resolved": false, + "seeds_for_80_percent_power": 4 + }, + "conditional_decoupled_kelly_mean vs coupled_kelly_iqn": { + "difference": 0.009190239862215566, + "difference_ci": [ + -0.016638458798726753, + 0.035018938523157885 + ], + "n_shared_seeds": 3, + "p_value": 0.26544296634561537, + "p_value_holm": 1.0, + "paired_sample_sd": 0.010397450406541008, + "resolved": false, + "seeds_for_80_percent_power": 13 + }, + "conditional_decoupled_kelly_mean vs coupled_kelly_mean": { + "difference": 0.018339676305970627, + "difference_ci": [ + 0.009096585841383842, + 0.02758276677055741 + ], + "n_shared_seeds": 3, + "p_value": 0.013444687050300122, + "p_value_holm": 0.263059411408765, + "paired_sample_sd": 0.0037208446298551134, + "resolved": false, + "seeds_for_80_percent_power": 4 + }, + "conditional_decoupled_kelly_mean vs decoupled_kelly_iqn": { + "difference": -0.0013937912728000008, + "difference_ci": [ + -0.014143649281822178, + 0.011356066736222175 + ], + "n_shared_seeds": 3, + "p_value": 0.6844041690055843, + "p_value_holm": 1.0, + "paired_sample_sd": 0.005132508535542739, + "resolved": false, + "seeds_for_80_percent_power": 109 + }, + "conditional_decoupled_kelly_mean vs decoupled_kelly_mean": { + "difference": 0.0029310961906795865, + "difference_ci": [ + -0.009622355191312848, + 0.01548454757267202 + ], + "n_shared_seeds": 3, + "p_value": 0.4208743533896648, + "p_value_holm": 1.0, + "paired_sample_sd": 0.005053444228398771, + "resolved": false, + "seeds_for_80_percent_power": 26 + }, + "correctness_iqn vs correctness_mean": { + "difference": 0.002229637667109411, + "difference_ci": [ + -0.0037297437911992045, + 0.008189019125418027 + ], + "n_shared_seeds": 3, + "p_value": 0.24873075583485868, + "p_value_holm": 1.0, + "paired_sample_sd": 0.0023989738693309475, + "resolved": false, + "seeds_for_80_percent_power": 12 + }, + "correctness_iqn vs coupled_kelly_iqn": { + "difference": 0.038994874588345496, + "difference_ci": [ + 0.022091693040576402, + 0.05589805613611459 + ], + "n_shared_seeds": 3, + "p_value": 0.009997654403249677, + "p_value_holm": 0.2199483968714929, + "paired_sample_sd": 0.006804446254253378, + "resolved": false, + "seeds_for_80_percent_power": 4 + }, + "correctness_iqn vs coupled_kelly_mean": { + "difference": 0.04814431103210056, + "difference_ci": [ + 0.034619652401099085, + 0.061668969663102036 + ], + "n_shared_seeds": 3, + "p_value": 0.004235687772692276, + "p_value_holm": 0.11436356986269144, + "paired_sample_sd": 0.00544440775848613, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "correctness_iqn vs decoupled_kelly_iqn": { + "difference": 0.02841084345332993, + "difference_ci": [ + 0.018670338832495144, + 0.03815134807416472 + ], + "n_shared_seeds": 3, + "p_value": 0.0062894082495708005, + "p_value_holm": 0.1635246144888408, + "paired_sample_sd": 0.003921080773727154, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "correctness_iqn vs decoupled_kelly_mean": { + "difference": 0.032735730916809515, + "difference_ci": [ + 0.021071896248949833, + 0.0443995655846692 + ], + "n_shared_seeds": 3, + "p_value": 0.006787762058179193, + "p_value_holm": 0.16969405145447983, + "paired_sample_sd": 0.004695325308531833, + "resolved": false, + "seeds_for_80_percent_power": 4 + }, + "correctness_mean vs coupled_kelly_iqn": { + "difference": 0.03676523692123609, + "difference_ci": [ + 0.013907050010196122, + 0.05962342383227605 + ], + "n_shared_seeds": 3, + "p_value": 0.02024825417309691, + "p_value_holm": 0.34422032094264743, + "paired_sample_sd": 0.009201658508269263, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "correctness_mean vs coupled_kelly_mean": { + "difference": 0.045914673364991145, + "difference_ci": [ + 0.029292290665425925, + 0.06253705606455637 + ], + "n_shared_seeds": 3, + "p_value": 0.007005330955178829, + "p_value_holm": 0.16969405145447983, + "paired_sample_sd": 0.006691409506380806, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "correctness_mean vs decoupled_kelly_iqn": { + "difference": 0.02618120578622052, + "difference_ci": [ + 0.013132866420991107, + 0.03922954515144993 + ], + "n_shared_seeds": 3, + "p_value": 0.01315297057043825, + "p_value_holm": 0.263059411408765, + "paired_sample_sd": 0.005252663450785712, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "correctness_mean vs decoupled_kelly_mean": { + "difference": 0.030506093249700106, + "difference_ci": [ + 0.018615555078888603, + 0.04239663142051161 + ], + "n_shared_seeds": 3, + "p_value": 0.008106828749776702, + "p_value_holm": 0.18645706124486416, + "paired_sample_sd": 0.004786585749480611, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "coupled_kelly_iqn vs coupled_kelly_mean": { + "difference": 0.009149436443755063, + "difference_ci": [ + -0.008841111720722017, + 0.027139984608232144 + ], + "n_shared_seeds": 3, + "p_value": 0.16013621152392507, + "p_value_holm": 1.0, + "paired_sample_sd": 0.007242170222439436, + "resolved": false, + "seeds_for_80_percent_power": 8 + }, + "coupled_kelly_iqn vs decoupled_kelly_iqn": { + "difference": -0.010584031135015567, + "difference_ci": [ + -0.02735921643873826, + 0.006191154168707127 + ], + "n_shared_seeds": 3, + "p_value": 0.11312782092798437, + "p_value_holm": 1.0, + "paired_sample_sd": 0.006752920832196076, + "resolved": false, + "seeds_for_80_percent_power": 6 + }, + "coupled_kelly_iqn vs decoupled_kelly_mean": { + "difference": -0.006259143671535979, + "difference_ci": [ + -0.029159237207066722, + 0.016640949863994767 + ], + "n_shared_seeds": 3, + "p_value": 0.3606159657395652, + "p_value_holm": 1.0, + "paired_sample_sd": 0.009218528194797735, + "resolved": false, + "seeds_for_80_percent_power": 20 + }, + "coupled_kelly_mean vs decoupled_kelly_iqn": { + "difference": -0.01973346757877063, + "difference_ci": [ + -0.023522459887497904, + -0.015944475270043355 + ], + "n_shared_seeds": 3, + "p_value": 0.001985514653420706, + "p_value_holm": 0.055594410295779766, + "paired_sample_sd": 0.0015252746620305286, + "resolved": false, + "seeds_for_80_percent_power": 5 + }, + "coupled_kelly_mean vs decoupled_kelly_mean": { + "difference": -0.01540858011529104, + "difference_ci": [ + -0.022898755032504922, + -0.007918405198077159 + ], + "n_shared_seeds": 3, + "p_value": 0.012524685671792615, + "p_value_holm": 0.2630183991076449, + "paired_sample_sd": 0.003015201162876065, + "resolved": false, + "seeds_for_80_percent_power": 3 + }, + "decoupled_kelly_iqn vs decoupled_kelly_mean": { + "difference": 0.0043248874634795875, + "difference_ci": [ + -0.0019633062598596335, + 0.010613081186818809 + ], + "n_shared_seeds": 3, + "p_value": 0.09773629300302608, + "p_value_holm": 1.0, + "paired_sample_sd": 0.0025313386184651347, + "resolved": false, + "seeds_for_80_percent_power": 5 + } + }, + "conditions": { + "conditional_decoupled_kelly_iqn": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -0.5524138288833105, + "r_squared_ci": [ + 0.9288742088394529, + 0.9692829198993939 + ], + "r_squared_mean": 0.9490785643694234, + "r_squared_sample_sd": 0.008133347613701497, + "seeds": [ + 42, + 43, + 44 + ] + }, + "conditional_decoupled_kelly_mean": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -0.34121855679558666, + "r_squared_ci": [ + 0.9330018921258707, + 0.9787055252701244 + ], + "r_squared_mean": 0.9558537086979976, + "r_squared_sample_sd": 0.009199094101761956, + "seeds": [ + 42, + 43, + 44 + ] + }, + "correctness_iqn": { + "exceeds_no_network_floor": true, + "fraction_of_usable_range": 0.5878535980089589, + "r_squared_ci": [ + 0.9841300313251463, + 0.9871866555231085 + ], + "r_squared_mean": 0.9856583434241274, + "r_squared_sample_sd": 0.0006152284117550854, + "seeds": [ + 42, + 43, + 44 + ] + }, + "correctness_mean": { + "exceeds_no_network_floor": true, + "fraction_of_usable_range": 0.5183511769644058, + "r_squared_ci": [ + 0.9789762448799507, + 0.9878811666340855 + ], + "r_squared_mean": 0.9834287057570181, + "r_squared_sample_sd": 0.0017923567022901537, + "seeds": [ + 42, + 43, + 44 + ] + }, + "coupled_kelly_iqn": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -0.6276973554930759, + "r_squared_ci": [ + 0.9282569885039877, + 0.9650699491675765 + ], + "r_squared_mean": 0.9466634688357821, + "r_squared_sample_sd": 0.007409605451714317, + "seeds": [ + 42, + 43, + 44 + ] + }, + "coupled_kelly_mean": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -0.9129042271812025, + "r_squared_ci": [ + 0.9231788371987796, + 0.9518492275852745 + ], + "r_squared_mean": 0.937514032392027, + "r_squared_sample_sd": 0.005770692633278706, + "seeds": [ + 42, + 43, + 44 + ] + }, + "decoupled_kelly_iqn": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -0.29777119791778345, + "r_squared_ci": [ + 0.9466948105897789, + 0.9678001893518161 + ], + "r_squared_mean": 0.9572474999707975, + "r_squared_sample_sd": 0.004248029137476117, + "seeds": [ + 42, + 43, + 44 + ] + }, + "decoupled_kelly_mean": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -0.4325868919165237, + "r_squared_ci": [ + 0.9412719883024149, + 0.964573236712221 + ], + "r_squared_mean": 0.9529226125073179, + "r_squared_sample_sd": 0.004690007381552904, + "seeds": [ + 42, + 43, + 44 + ] + } + } + }, + "mess_3_kelly_cycle_3": { + "comparisons": { + "conditional_decoupled_kelly_iqn vs conditional_decoupled_kelly_mean": { + "difference": 0.010632126578209148, + "difference_ci": [ + -0.0009456873161711038, + 0.0222099404725894 + ], + "n_shared_seeds": 3, + "p_value": 0.05848986190288163, + "p_value_holm": 0.35093917141728975, + "paired_sample_sd": 0.004660697287278206, + "resolved": false, + "seeds_for_80_percent_power": 4 + }, + "conditional_decoupled_kelly_iqn vs iqn": { + "difference": 0.013580476188700619, + "difference_ci": [ + -0.01114735073030133, + 0.03830830310770257 + ], + "n_shared_seeds": 3, + "p_value": 0.14193220803860646, + "p_value_holm": 0.35093917141728975, + "paired_sample_sd": 0.009954289893847574, + "resolved": false, + "seeds_for_80_percent_power": 7 + }, + "conditional_decoupled_kelly_iqn vs ppo": { + "difference": 0.10814250098337959, + "difference_ci": [ + -0.019795632818286987, + 0.23608063478504615 + ], + "n_shared_seeds": 3, + "p_value": 0.06798314215975723, + "p_value_holm": 0.35093917141728975, + "paired_sample_sd": 0.051502029535842854, + "resolved": false, + "seeds_for_80_percent_power": 5 + }, + "conditional_decoupled_kelly_mean vs iqn": { + "difference": 0.0029483496104914706, + "difference_ci": [ + -0.03041299605622082, + 0.03630969527720376 + ], + "n_shared_seeds": 3, + "p_value": 0.7403433780887467, + "p_value_holm": 0.7403433780887467, + "paired_sample_sd": 0.013429748885864219, + "resolved": false, + "seeds_for_80_percent_power": 165 + }, + "conditional_decoupled_kelly_mean vs ppo": { + "difference": 0.09751037440517045, + "difference_ci": [ + -0.030237345617045205, + 0.2252580944273861 + ], + "n_shared_seeds": 3, + "p_value": 0.0815332366987508, + "p_value_holm": 0.35093917141728975, + "paired_sample_sd": 0.05142537767449465, + "resolved": false, + "seeds_for_80_percent_power": 5 + }, + "iqn vs ppo": { + "difference": 0.09456202479467897, + "difference_ci": [ + -0.016734697690015884, + 0.2058587472793738 + ], + "n_shared_seeds": 3, + "p_value": 0.06735492093793352, + "p_value_holm": 0.35093917141728975, + "paired_sample_sd": 0.044802959980135275, + "resolved": false, + "seeds_for_80_percent_power": 5 + } + }, + "conditions": { + "conditional_decoupled_kelly_iqn": { + "exceeds_no_network_floor": true, + "fraction_of_usable_range": 0.48549322472516526, + "r_squared_ci": [ + 0.9788439340639512, + 0.9859053112344154 + ], + "r_squared_mean": 0.9823746226491833, + "r_squared_sample_sd": 0.0014212934204619135, + "seeds": [ + 42, + 43, + 44 + ] + }, + "conditional_decoupled_kelly_mean": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": 0.1540678326363491, + "r_squared_ci": [ + 0.9595826818879015, + 0.9839023102540466 + ], + "r_squared_mean": 0.9717424960709741, + "r_squared_sample_sd": 0.004894983931669666, + "seeds": [ + 42, + 43, + 44 + ] + }, + "iqn": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": 0.0621616727083165, + "r_squared_ci": [ + 0.941299174986669, + 0.9962891179342965 + ], + "r_squared_mean": 0.9687941464604828, + "r_squared_sample_sd": 0.01106821547926209, + "seeds": [ + 42, + 43, + 44 + ] + }, + "ppo": { + "exceeds_no_network_floor": false, + "fraction_of_usable_range": -2.885532367026067, + "r_squared_ci": [ + 0.7427668105896438, + 1.0056974327419637 + ], + "r_squared_mean": 0.8742321216658038, + "r_squared_sample_sd": 0.05292190946351729, + "seeds": [ + 42, + 43, + 44 + ] + } + } + } + } +} diff --git a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/findings.md b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/findings.md new file mode 100644 index 00000000..88874326 --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/findings.md @@ -0,0 +1,69 @@ +# Audit of the committed multi-seed token-guess results + +Belief-probe R² is reported against the range it can move through: 0% is an affine probe on the raw observations (0.9668) and 100% is the supervised next-token replication (0.9989). + +## `mess_3_kelly_cycle_2` + +| condition | R² | 95% CI | usable range | above floor | +|---|---:|---|---:|---| +| `correctness_iqn` | 0.9857 | [0.9841, 0.9872] | +59% | yes | +| `correctness_mean` | 0.9834 | [0.9790, 0.9879] | +52% | yes | +| `decoupled_kelly_iqn` | 0.9572 | [0.9467, 0.9678] | -30% | no | +| `conditional_decoupled_kelly_mean` | 0.9559 | [0.9330, 0.9787] | -34% | no | +| `decoupled_kelly_mean` | 0.9529 | [0.9413, 0.9646] | -43% | no | +| `conditional_decoupled_kelly_iqn` | 0.9491 | [0.9289, 0.9693] | -55% | no | +| `coupled_kelly_iqn` | 0.9467 | [0.9283, 0.9651] | -63% | no | +| `coupled_kelly_mean` | 0.9375 | [0.9232, 0.9518] | -91% | no | + +Of 28 pairwise orderings, 0 survive a Holm correction across the family. + +| comparison | difference | 95% CI | Holm p | seeds for 80% power | +|---|---:|---|---:|---:| +| coupled_kelly_mean vs decoupled_kelly_iqn | -0.0197 | [-0.0235, -0.0159] | 0.056 | 5 | +| correctness_iqn vs coupled_kelly_mean | +0.0481 | [+0.0346, +0.0617] | 0.114 | 3 | +| correctness_iqn vs decoupled_kelly_iqn | +0.0284 | [+0.0187, +0.0382] | 0.164 | 3 | +| correctness_iqn vs decoupled_kelly_mean | +0.0327 | [+0.0211, +0.0444] | 0.170 | 4 | +| correctness_mean vs coupled_kelly_mean | +0.0459 | [+0.0293, +0.0625] | 0.170 | 3 | +| correctness_mean vs decoupled_kelly_mean | +0.0305 | [+0.0186, +0.0424] | 0.186 | 3 | +| correctness_iqn vs coupled_kelly_iqn | +0.0390 | [+0.0221, +0.0559] | 0.220 | 4 | +| coupled_kelly_mean vs decoupled_kelly_mean | -0.0154 | [-0.0229, -0.0079] | 0.263 | 3 | +| correctness_mean vs decoupled_kelly_iqn | +0.0262 | [+0.0131, +0.0392] | 0.263 | 3 | +| conditional_decoupled_kelly_mean vs coupled_kelly_mean | +0.0183 | [+0.0091, +0.0276] | 0.263 | 4 | +| conditional_decoupled_kelly_iqn vs correctness_iqn | -0.0366 | [-0.0563, -0.0168] | 0.277 | 3 | +| correctness_mean vs coupled_kelly_iqn | +0.0368 | [+0.0139, +0.0596] | 0.344 | 3 | +| conditional_decoupled_kelly_iqn vs correctness_mean | -0.0344 | [-0.0571, -0.0116] | 0.366 | 3 | +| conditional_decoupled_kelly_mean vs correctness_iqn | -0.0298 | [-0.0521, -0.0075] | 0.434 | 3 | +| conditional_decoupled_kelly_mean vs correctness_mean | -0.0276 | [-0.0518, -0.0034] | 0.548 | 4 | +| decoupled_kelly_iqn vs decoupled_kelly_mean | +0.0043 | [-0.0020, +0.0106] | 1.000 | 5 | +| coupled_kelly_iqn vs decoupled_kelly_iqn | -0.0106 | [-0.0274, +0.0062] | 1.000 | 6 | +| coupled_kelly_iqn vs coupled_kelly_mean | +0.0091 | [-0.0088, +0.0271] | 1.000 | 8 | +| correctness_iqn vs correctness_mean | +0.0022 | [-0.0037, +0.0082] | 1.000 | 12 | +| conditional_decoupled_kelly_iqn vs coupled_kelly_mean | +0.0116 | [-0.0194, +0.0425] | 1.000 | 12 | +| conditional_decoupled_kelly_mean vs coupled_kelly_iqn | +0.0092 | [-0.0166, +0.0350] | 1.000 | 13 | +| conditional_decoupled_kelly_iqn vs decoupled_kelly_iqn | -0.0082 | [-0.0359, +0.0195] | 1.000 | 17 | +| coupled_kelly_iqn vs decoupled_kelly_mean | -0.0063 | [-0.0292, +0.0166] | 1.000 | 20 | +| conditional_decoupled_kelly_mean vs decoupled_kelly_mean | +0.0029 | [-0.0096, +0.0155] | 1.000 | 26 | +| conditional_decoupled_kelly_iqn vs conditional_decoupled_kelly_mean | -0.0068 | [-0.0470, +0.0334] | 1.000 | 47 | +| conditional_decoupled_kelly_iqn vs decoupled_kelly_mean | -0.0038 | [-0.0352, +0.0275] | 1.000 | 87 | +| conditional_decoupled_kelly_iqn vs coupled_kelly_iqn | +0.0024 | [-0.0174, +0.0222] | 1.000 | 88 | +| conditional_decoupled_kelly_mean vs decoupled_kelly_iqn | -0.0014 | [-0.0141, +0.0114] | 1.000 | 109 | + +## `mess_3_kelly_cycle_3` + +| condition | R² | 95% CI | usable range | above floor | +|---|---:|---|---:|---| +| `conditional_decoupled_kelly_iqn` | 0.9824 | [0.9788, 0.9859] | +49% | yes | +| `conditional_decoupled_kelly_mean` | 0.9717 | [0.9596, 0.9839] | +15% | no | +| `iqn` | 0.9688 | [0.9413, 0.9963] | +6% | no | +| `ppo` | 0.8742 | [0.7428, 1.0057] | -289% | no | + +Of 6 pairwise orderings, 0 survive a Holm correction across the family. + +| comparison | difference | 95% CI | Holm p | seeds for 80% power | +|---|---:|---|---:|---:| +| conditional_decoupled_kelly_iqn vs conditional_decoupled_kelly_mean | +0.0106 | [-0.0009, +0.0222] | 0.351 | 4 | +| iqn vs ppo | +0.0946 | [-0.0167, +0.2059] | 0.351 | 5 | +| conditional_decoupled_kelly_iqn vs ppo | +0.1081 | [-0.0198, +0.2361] | 0.351 | 5 | +| conditional_decoupled_kelly_mean vs ppo | +0.0975 | [-0.0302, +0.2253] | 0.351 | 5 | +| conditional_decoupled_kelly_iqn vs iqn | +0.0136 | [-0.0111, +0.0383] | 0.351 | 7 | +| conditional_decoupled_kelly_mean vs iqn | +0.0029 | [-0.0304, +0.0363] | 0.740 | 165 | diff --git a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/run_manifest.json b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/run_manifest.json new file mode 100644 index 00000000..be370d8a --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/run_manifest.json @@ -0,0 +1,75 @@ +{ + "command": [ + "/workspace/.venv/bin/rl-harness", + "experiments.mess3_token_guess_cycle_2.audit.experiment", + "--no-upload-artifacts" + ], + "dependency_lock": { + "file": "/workspace/uv.lock", + "sha256": "986725e46af5252423583fe947d30b2646f541a4863acb8c51d578a7ca1b8220" + }, + "ended_at": "2026-07-25T23:44:20.373828+00:00", + "error": null, + "experiment": { + "file": "/workspace/experiments/mess3_token_guess_cycle_2/audit/experiment.py", + "module": "experiments.mess3_token_guess_cycle_2.audit.experiment", + "source_sha256": "22295905c9deb572d3b5f815992390f4f9a6dd4a23bb0afeb6ddc4c5150d885b" + }, + "framework_versions": { + "gymnasium": "1.2.2", + "numpy": "2.5.1", + "python": "3.14.6", + "ray": "2.56.0", + "rl-harness": "0.1.0", + "torch": "2.12.1" + }, + "git": { + "commit": "57391da3f5491b074234f5a5caa2cd19411567a0", + "dirty": true, + "experiment_repository": { + "commit": "57391da3f5491b074234f5a5caa2cd19411567a0", + "dirty": true, + "root": "/workspace" + }, + "library": { + "commit": "7c231655be83affb51c1d24d8cfd475b5d425eb5", + "dirty": false, + "package": "rl-harness", + "root": "/rl-harness-src", + "version": "0.1.0" + } + }, + "hardware": { + "cpu_count": 4, + "cuda_available": false, + "machine": "x86_64", + "mps_available": false, + "platform": "Linux-6.12.94+-x86_64-with-glibc2.39", + "profile": { + "learner_device": "cpu", + "name": "cpu", + "num_env_runners": null, + "num_envs_per_env_runner": 24, + "num_gpus_per_env_runner": 0.0, + "torch_threads": null + } + }, + "run_id": "20260725T234419Z-36e12c96", + "runtime": { + "artifacts_dir": "/workspace/experiments/mess3_token_guess_cycle_2/audit/artifacts/20260725T234419Z-36e12c96", + "overrides": { + "hardware_profile": "auto", + "resume_from": null, + "seed": 42, + "smoke": false, + "upload_artifacts": false + }, + "results_dir": "/workspace/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96", + "resume_from": null, + "seed": 42, + "smoke": false + }, + "schema_version": 2, + "started_at": "2026-07-25T23:44:20.290986+00:00", + "status": "completed" +} diff --git a/experiments/mess3_token_guess_cycle_2/statistics.py b/experiments/mess3_token_guess_cycle_2/statistics.py new file mode 100644 index 00000000..cd84a2a8 --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/statistics.py @@ -0,0 +1,204 @@ +"""Seed-level aggregation, intervals, and power for the token-guess study. + +Cycle 1 and the Kelly cycles reported ``mean ± std`` over three seeds. Two +things go wrong with that. The ``±`` reads as an interval but is a population +standard deviation, which for three samples sits about 18% below the sample +standard deviation and roughly 3x below a 95% confidence interval on the mean. +And no comparison was checked for whether three seeds could resolve it, so +orderings were reported for gaps far smaller than the noise around them. + +This module supplies the aggregation the study should use instead: a sample +standard deviation, a t-based confidence interval on the mean, a paired +comparison between conditions that share seeds, and the seed count a given +comparison would need before it is worth reporting an ordering. +""" + +from __future__ import annotations + +from collections.abc import Mapping, Sequence +from dataclasses import dataclass + +import numpy as np +from scipy import stats + +CONFIDENCE = 0.95 +POWER = 0.80 + + +@dataclass(frozen=True, slots=True) +class Estimate: + """A condition's score summarised across seeds.""" + + mean: float + sample_sd: float + n: int + ci_low: float + ci_high: float + + @property + def half_width(self) -> float: + return (self.ci_high - self.ci_low) / 2.0 + + +@dataclass(frozen=True, slots=True) +class Comparison: + """A paired difference between two conditions evaluated on shared seeds.""" + + difference: float + sample_sd: float + n: int + ci_low: float + ci_high: float + p_value: float + seeds_for_power: int + + @property + def resolved(self) -> bool: + """Whether the interval excludes zero at the configured confidence.""" + + return self.ci_low > 0.0 or self.ci_high < 0.0 + + +def summarise(values: Sequence[float], *, confidence: float = CONFIDENCE) -> Estimate: + """Summarise one condition with a t-based interval on its mean.""" + + array = np.asarray(values, dtype=np.float64) + if array.ndim != 1 or len(array) < 2: + raise ValueError("summarising a condition needs at least two seeds") + n = len(array) + mean = float(array.mean()) + sample_sd = float(array.std(ddof=1)) + half = float(stats.t.ppf(0.5 + confidence / 2.0, n - 1)) * sample_sd / np.sqrt(n) + return Estimate( + mean=mean, + sample_sd=sample_sd, + n=n, + ci_low=mean - half, + ci_high=mean + half, + ) + + +MAX_SEEDS = 10_000 + + +def t_test_power( + n: int, + difference: float, + sample_sd: float, + *, + confidence: float = CONFIDENCE, + paired: bool = True, +) -> float: + """Power of a two-sided t-test at ``n`` seeds per condition.""" + + if n < 2 or sample_sd <= 0.0: + raise ValueError("power needs at least two seeds and positive spread") + degrees = n - 1 if paired else 2 * (n - 1) + scale = np.sqrt(n) if paired else np.sqrt(n / 2.0) + ncp = abs(difference) / sample_sd * scale + critical = float(stats.t.ppf(0.5 + confidence / 2.0, degrees)) + return float( + stats.nct.sf(critical, degrees, ncp) + stats.nct.cdf(-critical, degrees, ncp) + ) + + +def seeds_for_power( + difference: float, + sample_sd: float, + *, + power: float = POWER, + confidence: float = CONFIDENCE, + paired: bool = True, +) -> int: + """Seeds per condition needed to resolve a difference of this size. + + Solved against the noncentral t distribution rather than the usual normal + approximation. At the seed counts this study runs, the two disagree sharply: + a two-sided test on three seeds has only two degrees of freedom and a + critical value above four, so the normal approximation can suggest three + seeds suffice for a comparison that three seeds cannot in fact resolve. + """ + + if sample_sd < 0.0: + raise ValueError("sample_sd must be non-negative") + if difference == 0.0: + return MAX_SEEDS + if sample_sd == 0.0: + return 2 + for n in range(2, MAX_SEEDS): + if t_test_power( + n, + difference, + sample_sd, + confidence=confidence, + paired=paired, + ) >= power: + return n + return MAX_SEEDS + + +def compare( + left: Mapping[int, float], + right: Mapping[int, float], + *, + confidence: float = CONFIDENCE, + power: float = POWER, +) -> Comparison: + """Compare two conditions on the seeds they share. + + Pairing costs nothing when conditions are run on a common seed list and + removes any variation the seed induces in both conditions at once. It only + helps to the extent that such shared variation exists; the returned + ``sample_sd`` is of the per-seed differences, so it reports directly whether + it did. + """ + + shared = sorted(set(left) & set(right)) + if len(shared) < 2: + raise ValueError("a paired comparison needs at least two shared seeds") + differences = np.array( + [left[seed] - right[seed] for seed in shared], dtype=np.float64 + ) + n = len(differences) + mean = float(differences.mean()) + sample_sd = float(differences.std(ddof=1)) + half = float(stats.t.ppf(0.5 + confidence / 2.0, n - 1)) * sample_sd / np.sqrt(n) + statistic = stats.ttest_rel( + [left[seed] for seed in shared], + [right[seed] for seed in shared], + ) + return Comparison( + difference=mean, + sample_sd=sample_sd, + n=n, + ci_low=mean - half, + ci_high=mean + half, + p_value=float(statistic.pvalue), + seeds_for_power=seeds_for_power( + abs(mean), + sample_sd, + power=power, + confidence=confidence, + paired=True, + ), + ) + + +def holm_adjust(p_values: Mapping[str, float]) -> dict[str, float]: + """Holm-Bonferroni adjustment over a pre-registered comparison family. + + A study that reports every pairwise ordering across eight conditions is + running 28 tests, and at three seeds several will cross any uncorrected + threshold by chance. Declare the family up front and adjust within it. + """ + + if not p_values: + return {} + ordered = sorted(p_values.items(), key=lambda item: item[1]) + m = len(ordered) + adjusted: dict[str, float] = {} + running = 0.0 + for index, (name, value) in enumerate(ordered): + running = max(running, min(1.0, (m - index) * value)) + adjusted[name] = running + return adjusted diff --git a/tests/test_mess3_token_guess_audit.py b/tests/test_mess3_token_guess_audit.py new file mode 100644 index 00000000..fe6724db --- /dev/null +++ b/tests/test_mess3_token_guess_audit.py @@ -0,0 +1,68 @@ +"""Tests for the re-analysis of the committed multi-seed token-guess results.""" + +from __future__ import annotations + +from pathlib import Path + +import pytest + +from experiments.mess3_token_guess_cycle_2.audit.experiment import ( + STUDIES, + analyse_study, + collect_study, +) + +REPOSITORY_ROOT = Path(__file__).parents[1] +REFERENCES = { + "belief_r2_floor": 0.9668, + "belief_r2_ceiling": 0.99888, + "accuracy_floor": 0.6732, + "accuracy_ceiling": 0.6883, +} + + +@pytest.mark.parametrize("study", STUDIES) +def test_every_audited_study_committed_three_seeds_per_arm(study): + per_arm = collect_study(REPOSITORY_ROOT, study) + + assert per_arm, f"{study} committed no condition summaries" + for arm, by_seed in per_arm.items(): + assert sorted(by_seed) == [42, 43, 44], arm + + +def test_the_kelly_cycle_3_orderings_do_not_survive_a_holm_correction(): + analysis = analyse_study( + collect_study(REPOSITORY_ROOT, "mess_3_kelly_cycle_3"), + REFERENCES, + ) + comparisons = analysis["comparisons"] + + assert len(comparisons) == 6 + assert not any(values["resolved"] for values in comparisons.values()) + + +def test_only_the_strongest_kelly_cycle_3_arm_clears_the_no_network_floor(): + analysis = analyse_study( + collect_study(REPOSITORY_ROOT, "mess_3_kelly_cycle_3"), + REFERENCES, + ) + conditions = analysis["conditions"] + + assert conditions["conditional_decoupled_kelly_iqn"]["exceeds_no_network_floor"] + for arm in ("ppo", "iqn", "conditional_decoupled_kelly_mean"): + assert not conditions[arm]["exceeds_no_network_floor"], arm + + # Plain PPO sits far below a probe on the raw observations. + assert conditions["ppo"]["fraction_of_usable_range"] < -1.0 + + +def test_every_kelly_cycle_2_kelly_arm_falls_below_the_no_network_floor(): + analysis = analyse_study( + collect_study(REPOSITORY_ROOT, "mess_3_kelly_cycle_2"), + REFERENCES, + ) + conditions = analysis["conditions"] + + for arm, values in conditions.items(): + expected = arm.startswith("correctness") + assert values["exceeds_no_network_floor"] is expected, arm diff --git a/tests/test_mess3_token_guess_statistics.py b/tests/test_mess3_token_guess_statistics.py new file mode 100644 index 00000000..ba66d342 --- /dev/null +++ b/tests/test_mess3_token_guess_statistics.py @@ -0,0 +1,104 @@ +"""Tests for the token-guess seed-level statistics.""" + +from __future__ import annotations + +import numpy as np +import pytest + +from experiments.mess3_token_guess_cycle_2.statistics import ( + compare, + holm_adjust, + seeds_for_power, + summarise, + t_test_power, +) + +# Kelly cycle 3 belief-probe R², seeds 42/43/44, as recorded in each arm's +# results//condition_summary.json. +CYCLE_3_PPO = {42: 0.860618, 43: 0.932631, 44: 0.829447} +CYCLE_3_IQN = {42: 0.974336, 43: 0.975997, 44: 0.956050} + + +def test_summarise_reports_a_wider_interval_than_the_published_plus_minus(): + values = list(CYCLE_3_PPO.values()) + estimate = summarise(values) + + population_sd = float(np.std(values, ddof=0)) + assert estimate.sample_sd > population_sd + + # The published "±" was a population standard deviation. A 95% interval on + # the mean of three seeds is several times wider. + assert estimate.half_width > 2.0 * population_sd + assert estimate.ci_low < estimate.mean < estimate.ci_high + assert estimate.n == 3 + + +def test_summarise_rejects_a_single_seed(): + with pytest.raises(ValueError): + summarise([0.97]) + + +def test_seeds_for_power_scales_with_the_squared_noise_to_signal_ratio(): + assert seeds_for_power(0.02, 0.01) < seeds_for_power(0.01, 0.01) + assert seeds_for_power(0.01, 0.02) > seeds_for_power(0.01, 0.01) + # An unpaired design needs more seeds than a paired one. + assert seeds_for_power(0.01, 0.01, paired=False) > seeds_for_power( + 0.01, 0.01, paired=True + ) + assert seeds_for_power(0.0, 0.01) >= 10_000 + + +def test_power_rises_with_seeds_and_the_planner_agrees_with_it(): + difference, sample_sd = 0.010, 0.008 + powers = [t_test_power(n, difference, sample_sd) for n in (3, 6, 12, 24)] + assert powers == sorted(powers) + assert powers[0] < 0.8 < powers[-1] + + needed = seeds_for_power(difference, sample_sd) + assert t_test_power(needed, difference, sample_sd) >= 0.8 + assert t_test_power(needed - 1, difference, sample_sd) < 0.8 + + +def test_the_headline_ppo_versus_iqn_gap_is_unresolved_at_three_seeds(): + # Kelly cycle 3 reported PPO 0.8742 ± 0.0432 against IQN 0.9688 ± 0.0090, + # which reads as decisive. Paired across the seeds both arms actually ran, + # the interval still contains zero. + comparison = compare(CYCLE_3_IQN, CYCLE_3_PPO) + + assert comparison.n == 3 + assert comparison.difference > 0.09 + assert not comparison.resolved + assert comparison.ci_low < 0.0 < comparison.ci_high + assert comparison.p_value > 0.05 + assert comparison.seeds_for_power > 3 + + +def test_a_difference_smaller_than_its_noise_is_not_resolved_by_three_seeds(): + # Two conditions separated by less than their seed-to-seed spread. + left = {42: 0.9720, 43: 0.9660, 44: 0.9770} + right = {42: 0.9700, 43: 0.9700, 44: 0.9700} + comparison = compare(left, right) + + assert abs(comparison.difference) < 0.005 + assert not comparison.resolved + assert comparison.seeds_for_power > 3 + + +def test_compare_requires_shared_seeds(): + with pytest.raises(ValueError): + compare({42: 0.9}, {43: 0.8}) + + +def test_holm_adjustment_is_monotonic_and_never_shrinks_a_p_value(): + raw = {"a": 0.001, "b": 0.02, "c": 0.04, "d": 0.5} + adjusted = holm_adjust(raw) + + assert set(adjusted) == set(raw) + for name, value in raw.items(): + assert adjusted[name] >= value + ordered = sorted(raw, key=lambda name: raw[name]) + values = [adjusted[name] for name in ordered] + assert values == sorted(values) + # The smallest of four p-values is multiplied by four. + assert adjusted["a"] == pytest.approx(0.004) + assert holm_adjust({}) == {} From 9015518e4fd44bbfef57c8b938bf4be828147be4 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 25 Jul 2026 23:47:36 +0000 Subject: [PATCH 3/6] Document the token-guess review and propose the cycle-2 design REVIEW.md audits cycle 1 and the three Kelly cycles against the references and the seed-level statistics. PLAN.md proposes a consolidated re-run: ten paired seeds, a two-stage coefficient sweep on disjoint seeds, log-spaced checkpoint probing, and a pre-registered comparison family, with the open design questions left open. Co-authored-by: Alex Vardakostas --- .../mess3_token_guess_cycle_2/NOTES.md | 50 ++++ experiments/mess3_token_guess_cycle_2/PLAN.md | 211 +++++++++++++++ .../mess3_token_guess_cycle_2/REVIEW.md | 242 ++++++++++++++++++ 3 files changed, 503 insertions(+) create mode 100644 experiments/mess3_token_guess_cycle_2/NOTES.md create mode 100644 experiments/mess3_token_guess_cycle_2/PLAN.md create mode 100644 experiments/mess3_token_guess_cycle_2/REVIEW.md diff --git a/experiments/mess3_token_guess_cycle_2/NOTES.md b/experiments/mess3_token_guess_cycle_2/NOTES.md new file mode 100644 index 00000000..9353093e --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/NOTES.md @@ -0,0 +1,50 @@ +# MESS3 token-guess cycle 2 + +Cycle 2 is a planned re-run of the token-guess comparison ahead of presenting it. +It does not yet contain any training conditions. + +What is here now is the measurement work that has to precede the re-run: + +- `REVIEW.md` — an audit of `mess3_token_guess_cycle_1` and + `mess_3_kelly_cycle_1/2/3`, which are one experiment split over four + directories. +- `PLAN.md` — a proposed design for the re-run, with the open questions that + still need deciding. +- `metric_references.py` and `references/` — the floors and ceilings both + headline metrics are measured against. Cycle 1 reported bare numbers, and both + metrics turn out to have task-imposed ranges narrow enough that the bare + numbers mislead. +- `statistics.py` and `audit/` — seed-level aggregation with intervals, paired + comparison, multiplicity correction, and power planning, plus a re-analysis of + the results already committed. + +## What the references say + +| reference | belief-probe R² | greedy accuracy | +|---|---:|---:| +| randomly initialised transformer | 0.8733 | 0.3412 | +| affine probe on the raw observations | 0.9668 | — | +| exact Bayesian filter, one observation | — | 0.6732 | +| exact Bayesian filter, saturated | — | 0.6883 | +| supervised next-token replication | 0.9989 | 0.6859 | + +Belief-probe R² therefore moves through 0.032 and greedy accuracy through 0.015. +Cycle 1's reward-only and max-entropy arms land below the untrained network on +the first metric, and at the repeat-the-previous-token rule on the second. + +## What the audit says + +Re-reading the three-seed Kelly cycles with a t-based interval on the mean and +pairing across shared seeds, none of the 34 published pairwise orderings survives +a Holm correction. The reported `±` values were population standard deviations of +three samples, roughly a third of the width of a confidence interval. + +Regenerate both with: + +```bash +uv run rl-harness experiments.mess3_token_guess_cycle_2.references.experiment +uv run rl-harness experiments.mess3_token_guess_cycle_2.audit.experiment +``` + +Pass `--no-upload-artifacts` when `B2_*` variables are configured as secrets, or +the bucket name is written into tracked results. diff --git a/experiments/mess3_token_guess_cycle_2/PLAN.md b/experiments/mess3_token_guess_cycle_2/PLAN.md new file mode 100644 index 00000000..f7feacfc --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/PLAN.md @@ -0,0 +1,211 @@ +# Proposed design for token-guess cycle 2 + +Draft for discussion. `REVIEW.md` establishes the problems; this is one way to +address them. Everything here is negotiable, and the open questions at the end +are the parts I would not decide alone. + +## Principle + +Cycle 1 ran a large number of arms, measured each once, and read a ranking off +the resulting table. Cycle 2 should run fewer arms, measure each well enough to +put an interval on it, and pre-commit to which comparisons it is trying to +resolve. The compute cost of doing this is trivial — the numbers are at the end — +so the binding constraint is design discipline, not GPU budget. + +## 1. Consolidate into one study + +One directory, one `shared.py`, one task class, one probe. Today the same +experiment is spread over four directories with two copies of the task, three +copies of the probe, and three IQN implementations (`mess3_token_guess_cycle_1. +iqn_value.iqn`, `mess3_reward_state_cycle_1.iqn`, and the library's +`IQNValueMixin`). + +The library's `IQNValueMixin` should be the only one. Anything else that is a +reusable RL concept goes to `rl-harness`; Kelly wagering stays here. + +## 2. Report metrics against their range, always + +Never present a bare R². Every table gets the four reference rows from +`references.experiment` alongside the trained arms: + +| row | belief R² | source | +|---|---:|---| +| affine probe on raw observations | 0.9668 | analytic, no network | +| randomly initialised transformer | 0.8733 | same probe, same architecture | +| supervised next-token model | 0.9989 | `mess3_supervised` | +| exact Bayesian filter (accuracy) | 0.6883 | analytic | + +R² is a bad scale here because the interesting region is 0.967–0.999. I would +report three things instead, and let the audience pick: + +- **Probe MSE**, which has real dynamic range (0.0012 at R² = 0.99 against 0.03 + at R² = 0.85) and reads naturally on a log axis. +- **Incremental R²**: fit the probe on the raw-observation window alone, then on + the window plus the network's activations, and report the increment. This + answers "what does the network represent that its own inputs did not already + linearly provide", which is the question the study is actually asking. +- **Position in the usable range**, as `references.experiment` already computes, + for the one summary slide. + +## 3. Fix the checkpoint protocol + +Log-spaced checkpoints for every arm, following `rl-harness/docs/ +checkpoint_strategy.md`, with the probe run at each. Then either: + +- pre-register "the final checkpoint" and additionally report the curve, so the + reader can see the metric is decaying; or +- pre-register "the mean over the last k checkpoints", which removes the + ±0.0035 within-run fluctuation from the comparison for free. + +I prefer the second for the primary metric and the first in an appendix, but +this is a real choice and it must be made before the runs, not after. + +The step budget must be identical across every arm. 2.5M is defensible; so is +5M. What is not defensible is the current mixture of 828K, 2.5M, 3M and 20M. + +## 4. Seeds: ten, from a documented spawn + +Ten seeds per condition, paired across arms, drawn by spawning from one master +`SeedSequence` and recorded in the manifest. + +The planning table below is from `statistics.seeds_for_power`, paired, 80% power, +95% confidence: + +| belief-R² gap | sd = 0.002 | sd = 0.005 | sd = 0.010 | sd = 0.020 | +|---:|---:|---:|---:|---:| +| 0.002 | 10 | 52 | 199 | 787 | +| 0.005 | 4 | 10 | 34 | 128 | +| 0.010 | 3 | 5 | 10 | 34 | +| 0.020 | 3 | 3 | 5 | 10 | +| 0.100 | 3 | 3 | 3 | 3 | + +Ten seeds resolves any gap of 0.01 or more at the spreads actually observed +(0.001–0.011). It will not resolve the 0.002–0.005 gaps between the middle arms, +and that is the point: those should be reported as ties rather than chased. Going +to the ~150 seeds that would settle them is possible on this compute budget but I +do not think it buys a better talk. + +Note the planning numbers are computed from effects observed at n=3 and are +therefore optimistic — the observed gap in a small sample is biased upward. Ten +is already padded for that; I would not go below eight. + +## 5. Sweep the coefficients, in two stages + +Every intervention currently has exactly one tested strength, so no "X does not +help" claim is available. Proposed grid: + +| arm | swept coefficient | values | +|---|---|---| +| all | learning rate | 1e-4, 3e-4, 1e-3 | +| predictive aux | loss weight λ | 0.03, 0.1, 0.3, 1.0 | +| max entropy | reward coefficient α | 0.01, 0.05, 0.2, 0.5 | +| IQN | loss coefficient | 0.125, 0.5, 2.0 | +| Kelly | direct-loss weight | 0.25, 1.0, 4.0 | + +Sweeping the learning rate per arm is not optional. Arms differ in parameter +count and in how much auxiliary gradient enters the shared trunk while the +learning rate is pinned at 3e-4, so an arm can currently lose by being +mis-tuned rather than by being a worse idea. + +**Two stages, with disjoint seeds.** Stage 1 sweeps on seeds 0–2 and selects one +configuration per arm. Stage 2 re-runs the selected configurations on ten +*fresh* seeds, and only stage 2 enters the results table. Selecting and reporting +on the same seeds is what makes a swept comparison optimistic, and it is easy to +avoid here. + +Selection criterion for stage 1 must be pre-registered. I suggest belief-probe +MSE, since accuracy is saturated. + +## 6. Pre-register the comparison family + +Ranking eight arms is 28 tests. Declare the primary comparisons in advance and +correct within that family; report everything else as exploratory. + +Proposed primaries, all on belief-probe MSE at γ = 0.99: + +1. reward-only PPO against the raw-observation floor — does task reward degrade + the representation? +2. reward-only PPO against an untrained network — is the degradation relative to + initialisation? +3. predictive aux against reward-only — does the auxiliary objective recover it? +4. IQN against reward-only — does distributional value do the same? +5. Kelly against IQN — are they doing the same thing or different things? +6. best combined arm against the best single arm — do they compose? + +Six tests, Holm-corrected. Everything else is exploratory and labelled as such. + +## 7. Arms + +Two axes crossed, with max-entropy as an orthogonal third: + +| axis | levels | +|---|---| +| critic | scalar mean, IQN | +| representation pressure | none, predictive aux, Kelly wager | +| entropy in reward | off, on | +| γ | 0, 0.99 | + +The full cross is 24. I would run the 2 × 3 × 2 = 12 critic × pressure × γ cells +as the main grid, and treat entropy as a separate 2 × 2 (critic × γ) add-on at +its swept coefficient, giving 16 conditions. The γ = 1.0 and differential +average-reward objectives from cycle 1 are worth keeping as a third γ level if +the budget is there, since the average-reward arm was the one that restored sane +critic diagnostics. + +## 8. Compute + +Measured from the committed manifests: a 2.5M-step arm costs 6–14 minutes on an +RTX 4090, median about 6.5. Adding eight checkpoint probes puts it near 12. + +| stage | runs | GPU-hours | cost at $0.35/hr | +|---|---:|---:|---:| +| stage 1 sweep (7 arms × 12 configs × 3 seeds) | 252 | 50 | ~$18 | +| stage 2 confirmation (16 conditions × 10 seeds) | 160 | 32 | ~$11 | +| references and audit | — | <1 | — | +| **total** | **412** | **82** | **~$30** | + +Roughly ten wall-clock hours across eight Vast boxes. The entire committed +history of these four studies is 19.4 GPU-hours, so this is about four times all +prior work on the question, for the price of lunch. + +`devops.vast.provision up -n N --run "..."` gives one command per box, so the +sweep matrix needs a small dispatcher that maps (arm, coefficient, seed) to +`--run` strings. That is the only new infrastructure required; there is no +multi-seed or sweep support in the harness today. + +## Open questions + +1. **Is the degradation result the headline?** The strongest thing in the data is + that reward-only PPO ends up below both the raw observations and its own + initialisation. That reframes the study from "which objective induces belief + geometry" to "task reward destroys it and these objectives protect it". It is + a better talk, but it is a different talk. Which one do you want to give? + +2. **Is belief-probe R² still the right dependent variable?** It was chosen to + match the supervised replication, but on this task it is compressed into the + top 3% of its range and it measures linear decodability rather than use. An + intervention experiment — ablate the probe-identified directions and see + whether actions change — would answer the question colleagues will actually + ask. That is more work than a re-run. Worth it before the presentation, or + after? + +3. **How much of the Kelly programme survives?** Cycles 1–3 ran fourteen Kelly + variants and none of the orderings among them is supported. Cycle 2 could + carry one Kelly arm (conditional decoupled, the best performer) rather than + the family. Is the wager-calibration result something you want to present in + its own right, or is Kelly here purely as a representation-shaping device? + +4. **Do you want γ as a swept axis or a fixed choice?** γ is currently confounded + with the study directory, and the γ = 0 versus γ = 0.99 contrast is one of the + larger apparent effects. Making it a proper factor doubles the grid. My + inclination is yes, because a clean γ effect is presentable and the current + evidence for it is cross-study. + +5. **Do we keep the 20M-step observation?** The R² decay from 0.990 to 0.968 over + 20M steps is arguably the most interesting single curve in the repository, and + it exists for one arm at one seed. Three seeds of a long run for two arms + would cost about six GPU-hours and would turn an anecdote into a result. + +6. **What is the presentation format?** If there is a slide budget, that should + drive how many arms survive. Sixteen conditions with intervals is a dense + table; six conditions with intervals and a reference band is a slide. diff --git a/experiments/mess3_token_guess_cycle_2/REVIEW.md b/experiments/mess3_token_guess_cycle_2/REVIEW.md new file mode 100644 index 00000000..6c31b65d --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/REVIEW.md @@ -0,0 +1,242 @@ +# Review of the MESS3 token-guess studies + +Scope: `mess3_token_guess_cycle_1` and `mess_3_kelly_cycle_1/2/3`. These are four +directories but one experiment. All of them train a 3-layer, 96-wide transformer +with PPO on passive MESS3 (`alpha=0.85`, `delay=1`, episode length 512), reward +it 1 for guessing the next emitted token, and then fit a held-out rank-2 affine +probe from its residual stream to the exact Bayesian belief. `NextTokenGuessTask` +and `RawNextTokenTask` are the same task written twice. + +The findings below are ordered by how much they would change what you tell your +colleagues. Every number is reproducible from the repository: + +```bash +uv run rl-harness experiments.mess3_token_guess_cycle_2.references.experiment +uv run rl-harness experiments.mess3_token_guess_cycle_2.audit.experiment +``` + +--- + +## 1. The headline metric is mostly measuring something trivial + +Belief-probe R² was reported as a bare number from 0.85 to 0.99, and read as +"how much of the Bayesian belief did this objective induce". It cannot be read +that way, because the metric has a floor that nobody measured. + +An affine probe fitted directly to the **one-hot encoded raw observations**, with +no network and no training anywhere in the pipeline, scores **R² = 0.9668**. It +gets there on four observations and is saturated by six. + +| probe input | R² | +|---|---:| +| last 1 observation | 0.8043 | +| last 2 observations | 0.9302 | +| last 4 observations | 0.9648 | +| last 8 observations | 0.9669 | +| last 64 observations | 0.9668 | + +A **randomly initialised** copy of the study's own transformer, probed by exactly +the same code at exactly the same site, scores **R² = 0.8733**. + +The supervised next-token replication in `mess3_supervised` reaches **0.99888**. + +So the range this metric can move through is 0.9668 to 0.9989 — a span of +**0.032** — and the published scores land like this: + +| condition | reported R² | position in the usable range | +|---|---:|---:| +| `comparison/reward_only` | 0.8552 | −348% | +| `comparison/max_entropy` | 0.8558 | −346% | +| *randomly initialised transformer* | *0.8733* | *−293%* | +| `comparison/predictive_loss` | 0.9319 | −109% | +| *affine probe on raw observations* | *0.9668* | *0%* | +| `iqn_value` | 0.9760 | +29% | +| `kelly_cycle_3/conditional_decoupled_kelly_iqn` | 0.9824 | +49% | +| `kelly_cycle_2/correctness_iqn` | 0.9857 | +59% | +| *supervised next-token replication* | *0.9989* | *100%* | + +Two consequences. + +**Reward-only PPO and max-entropy PPO are below the untrained network.** After +2.5M steps their residual streams are *less* linearly informative about the +belief than they were at initialisation. That is a real and interesting result — +task-reward training is destroying linearly-available structure — but it is the +opposite of the claim "reward-only PPO reaches R² = 0.855 of the belief". + +**All eight Kelly cycle-2 wager arms sit below the no-network floor.** The +cycle-2 note reads their 0.94–0.96 as respectable. Against the floor they are +negative. + +This is safe because the task is passive: `NextTokenGuessTask.resolve_action` +returns the same transition matrix for every action, so the distribution of +beliefs the probe sees is identical for every arm, for the untrained network, and +for the raw-observation baseline. The comparison is exact, not approximate. + +## 2. Greedy token accuracy is saturated and cannot discriminate + +An exact Bayesian filter allowed only the previous observation — the trivial +"repeat the last token" rule — scores **0.6732**. Given eight or more +observations it saturates at **0.6883**. Total usable range: **0.0151**. + +Reported accuracies span 0.6733 to 0.6860. So the best arms are already within +0.002 of Bayes-optimal, `reward_only` at 0.6733 is at the repeat-last-token +rule, and the whole comparison lives inside 1.5 percentage points. Meanwhile the +probe's own sampling error at 30,000 test steps is ±0.005 at 95%, and that +assumes independent samples, which consecutive steps of a slowly-mixing chain +are not. + +Reporting this metric to four decimal places invites exactly the question you do +not want from the audience. + +## 3. None of the published orderings is statistically supported + +Cycles 2 and 3 ran three seeds and reported `mean ± std`. That `±` is a +population standard deviation (`ddof=0`), not an interval; for three samples it +sits 18% below the sample standard deviation and about 3x below a 95% confidence +interval on the mean. + +Recomputed properly, and paired across the seeds each pair of arms shares: + +- **Kelly cycle 3**: 0 of 6 pairwise orderings survive a Holm correction. +- **Kelly cycle 2**: 0 of 28 pairwise orderings survive a Holm correction. + +The headline gap is the clearest case. Cycle 3 reported PPO `0.8742 ± 0.0432` +against IQN `0.9688 ± 0.0090`, which reads as decisive. Paired on the three +shared seeds, the difference is +0.095 with a 95% interval of **[−0.017, ++0.206]** and p = 0.067. PPO's own interval, [0.743, 1.006], extends past the +maximum value R² can take. + +Some claims in the notes are far past what three seeds can carry. Cycle 3 states +that "conditional Kelly with a scalar critic narrowly exceeds plain IQN in belief +R²". That gap is 0.0029 against a paired spread of 0.013; resolving it needs +**165 seeds**. + +## 4. Final-checkpoint scores are drawn from a moving target + +Every arm reports the checkpoint at its step budget, with `num_to_keep=1`. The +one arm that kept a checkpoint curve, `iqn_value_20m`, shows why that is unsafe: + +| steps | R² | greedy accuracy | +|---:|---:|---:| +| 0.83M | 0.9902 | 68.12% | +| 2.48M | 0.9772 | 68.08% | +| 3.31M | 0.9673 | 68.34% | +| 10.76M | 0.9718 | 68.77% | +| 20.03M | 0.9686 | 68.47% | + +Belief R² **peaks at the first retained checkpoint and declines**, while accuracy +slowly rises. They are not merely uncorrelated, they move in opposite directions. +After 3M steps R² fluctuates with a standard deviation of 0.0035 and a range of +0.013 — comparable to most of the between-arm gaps being reported. + +So "IQN scores 0.976 at 2.5M" is one draw from a decaying, noisy trajectory. A +different step budget reorders the table. And the budget is not even constant +across the family: 828K, 2.5M, 3M and 20M all appear. + +## 5. Every intervention was tested at exactly one strength + +| intervention | values tried | +|---|---| +| predictive auxiliary loss λ | 0.1 | +| max-entropy reward coefficient α | 0.05 | +| IQN loss coefficient | 0.5 | +| Kelly direct-loss weight | 1.0 | +| learning rate | 3e-4 everywhere (4.2e-4 in the reward-state battery) | + +No conclusion of the form "X does not help" is available from one point. The +max-entropy arm is the clearest example: at α = 0.05 the entropy bonus is at most +`0.05 · ln 3 ≈ 0.055` against a reward of 0 or 1, so the arm was never given +enough signal to do anything, and "max-entropy training produced essentially the +same belief representation as reward-only" is a statement about that one +coefficient. + +The arms are also not matched on anything except environment steps. IQN arms set +`vf_loss_coeff=0` and add a quantile loss; Kelly and predictive arms add heads +and extra gradient into the shared trunk. Parameter count and total gradient +magnitude differ between arms while the learning rate is held fixed, so an arm +can win by being better tuned rather than by being a better idea. + +## 6. γ is confounded with the study + +Discount factor and condition set were varied together across directories. + +| γ, λ | where | +|---|---| +| 0.99, 0.95 | token-guess `comparison`, `iqn_value`, Kelly cycle 3 | +| 1.0, 0.95 | Kelly cycle 1, `iqn_gamma_1_3m` | +| 0.0, 0.0 | Kelly cycle 2 | +| 0.0, 0.95 | `iqn_return_objectives/gamma_zero` | + +Cycle 2 concludes that "moving from the prior γ = 0.99 reward-only result +(R² = 0.8552) to γ = 0 gives R² = 0.9834 without an auxiliary objective". That +compares n=1 to n=3, across two studies, two probe seed streams, and two +code paths. It is a plausible hypothesis, not a measured effect. + +The λ change is harmless in itself — GAE weights terms by `(γλ)^k`, so at γ = 0 +the value of λ cannot matter — but it should be made explicit rather than left as +an apparent second difference. + +## 7. Smaller items worth fixing + +**Probe protocol is not shared.** The RL probe uses a rank-2 constrained affine +map on 30,000 test steps at the post-final-LayerNorm site, from a single +train/test split. The supervised reference uses a full-rank probe on 472,390 +positions, sweeps five layer sites and reports the best. Those two numbers should +not be placed in the same table until they are measured the same way. Kelly cycle +2 also uses different probe seed streams (200/201/202) from the token-guess cycle +(100/101/102), so cross-study numbers carry an extra source of variation. + +**Probe R² and MSE are reported, but no uncertainty.** Bootstrapping the probe's +test set puts its own sampling noise at ±0.0005, which is small — but it needed +to be measured rather than assumed. + +**Pairing does not currently buy anything.** All arms already run seeds 42/43/44, +so paired analysis is free. On the existing data the paired spread is frequently +*larger* than the unpaired spread, meaning seed effects are arm-specific +optimisation noise rather than shared data noise. Three seeds cannot settle this; +keep the paired design because it costs nothing, but do not budget for the +variance reduction. + +**Actual step counts differ between arms.** 2,515,821 against 2,512,179 within +Kelly cycle 1, because the stop condition triggers on batch boundaries. Small, +but it is free to record and equalise. + +**Run-to-run non-determinism is negligible.** The two reproduction arms re-ran +the same seed and code and differed by 0.00016 in R². Seed variance is roughly +200x larger. Determinism is not the problem here; sample size is. + +**Naming and layout.** `mess3_token_guess_cycle_1` and `mess_3_kelly_cycle_*` +differ in spelling, and one experiment is spread over four directories with three +copies of the probe and two copies of the task. `mess_3_kelly_cycle_3/shared.py` +imports IQN from `mess3_token_guess_cycle_1.iqn_value.iqn` while the reward-state +battery imports it from `mess3_reward_state_cycle_1.iqn`, and the library now has +its own `IQNValueMixin`. Three IQN implementations are in play. + +**Committed manifests leak the B2 bucket name.** Any run made with `B2_*` +configured writes the bucket and endpoint into tracked `results/`. Pass +`--no-upload-artifacts`, or scrub those fields, when running from an environment +where those are secrets. + +--- + +## What this means for the presentation + +The existing work supports a small number of claims very well: + +- Training reward-only PPO on this task **degrades** the linear decodability of + the Bayesian belief relative to both the raw observations and to the network's + own initialisation. That is a genuinely surprising, presentable result, and it + is large enough to survive the sample size. +- Adding a predictive or distributional objective **recovers and then exceeds** + the raw-observation floor. `correctness_iqn` at γ = 0 and + `conditional_decoupled_kelly_iqn` at γ = 0.99 are the only arms whose intervals + clear the floor. +- Greedy token accuracy is saturated near Bayes-optimal for every arm, so + representation quality and task performance are dissociable on this task. This + is the same dissociation the reward-state battery found, arrived at + independently. + +It does not support any fine-grained ranking among the middle arms, and the +current notes lead with several of those rankings. + +`PLAN.md` proposes what cycle 2 should do about it. From ee4095babf540e59e7add42395ac8ead5f6c6ec8 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 25 Jul 2026 23:50:28 +0000 Subject: [PATCH 4/6] Plot the published scores against the references One axis showing where each condition sits relative to a probe on the raw observations, an untrained copy of the same transformer, and the supervised replication, plus a forest plot of the three-seed intervals. Co-authored-by: Alex Vardakostas --- .../audit/experiment.py | 124 ++++++++++++++++-- .../audit.json | 4 +- .../findings.md | 0 .../results_against_references.png | Bin 0 -> 180365 bytes .../run_manifest.json | 16 +-- .../references/experiment.py | 64 +++++++++ .../belief_r2_landscape.png | Bin 0 -> 129103 bytes .../findings.md | 0 .../references.json | 1 + .../run_manifest.json | 16 +-- 10 files changed, 195 insertions(+), 30 deletions(-) rename experiments/mess3_token_guess_cycle_2/audit/results/{20260725T234419Z-36e12c96 => 20260725T234843Z-46848db2}/audit.json (99%) rename experiments/mess3_token_guess_cycle_2/audit/results/{20260725T234419Z-36e12c96 => 20260725T234843Z-46848db2}/findings.md (100%) create mode 100644 experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/results_against_references.png rename experiments/mess3_token_guess_cycle_2/audit/results/{20260725T234419Z-36e12c96 => 20260725T234843Z-46848db2}/run_manifest.json (79%) create mode 100644 experiments/mess3_token_guess_cycle_2/references/results/20260725T234936Z-4fc9f18d/belief_r2_landscape.png rename experiments/mess3_token_guess_cycle_2/references/results/{20260725T233938Z-70fe7dae => 20260725T234936Z-4fc9f18d}/findings.md (100%) rename experiments/mess3_token_guess_cycle_2/references/results/{20260725T233938Z-70fe7dae => 20260725T234936Z-4fc9f18d}/references.json (90%) rename experiments/mess3_token_guess_cycle_2/references/results/{20260725T233938Z-70fe7dae => 20260725T234936Z-4fc9f18d}/run_manifest.json (79%) diff --git a/experiments/mess3_token_guess_cycle_2/audit/experiment.py b/experiments/mess3_token_guess_cycle_2/audit/experiment.py index dc5db0df..091ebc61 100644 --- a/experiments/mess3_token_guess_cycle_2/audit/experiment.py +++ b/experiments/mess3_token_guess_cycle_2/audit/experiment.py @@ -15,6 +15,11 @@ from pathlib import Path from typing import Any +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt # noqa: E402 + from experiments.mess3_token_guess_cycle_2.statistics import ( compare, holm_adjust, @@ -25,6 +30,13 @@ STUDIES = ("mess_3_kelly_cycle_2", "mess_3_kelly_cycle_3") METRICS = ("r_squared", "token_accuracy_greedy") +FALLBACK_REFERENCES = { + "belief_r2_floor": 0.9668, + "belief_r2_ceiling": 0.99888, + "accuracy_floor": 0.6732, + "accuracy_ceiling": 0.6883, + "untrained_module_r2": 0.8733, +} def _references(experiment_dir: Path) -> dict[str, float]: @@ -33,19 +45,18 @@ def _references(experiment_dir: Path) -> dict[str, float]: candidates = sorted( (experiment_dir.parent / "references" / "results").glob("*/references.json") ) - if candidates: - data = json.loads(candidates[-1].read_text()) - return { - "belief_r2_floor": float(data["belief_r2_floor"]), - "belief_r2_ceiling": float(data["supervised_ceiling"]), - "accuracy_floor": float(data["accuracy_floor_repeat_previous_token"]), - "accuracy_ceiling": float(data["accuracy_ceiling_bayes"]), - } + if not candidates: + return dict(FALLBACK_REFERENCES) + data = json.loads(candidates[-1].read_text()) + untrained = data.get("untrained_module") or {} return { - "belief_r2_floor": 0.9668, - "belief_r2_ceiling": 0.99888, - "accuracy_floor": 0.6732, - "accuracy_ceiling": 0.6883, + "belief_r2_floor": float(data["belief_r2_floor"]), + "belief_r2_ceiling": float(data["supervised_ceiling"]), + "accuracy_floor": float(data["accuracy_floor_repeat_previous_token"]), + "accuracy_ceiling": float(data["accuracy_ceiling_bayes"]), + "untrained_module_r2": float( + untrained.get("r_squared", FALLBACK_REFERENCES["untrained_module_r2"]) + ), } @@ -116,6 +127,82 @@ def analyse_study( return {"conditions": conditions, "comparisons": comparisons} +def plot_against_references( + analysis: dict[str, Any], + references: dict[str, float], + *, + untrained_r2: float, + path: Path, +) -> None: + """Place every arm's interval inside the range the metric can move through.""" + + floor = references["belief_r2_floor"] + ceiling = references["belief_r2_ceiling"] + rows: list[tuple[str, float, float, float]] = [] + for study, result in analysis.items(): + label = study.replace("mess_3_", "").replace("_", " ") + for arm, values in sorted( + result["conditions"].items(), + key=lambda item: item[1]["r_squared_mean"], + ): + low, high = values["r_squared_ci"] + rows.append( + (f"{arm.replace('_', ' ')}\n({label})", values["r_squared_mean"], low, high) + ) + + figure, axis = plt.subplots(figsize=(9.5, 0.42 * len(rows) + 2.6)) + positions = range(len(rows)) + axis.axvspan(floor, ceiling, color="tab:green", alpha=0.10) + axis.axvline( + floor, + color="tab:green", + linestyle="--", + linewidth=1.4, + label=f"affine probe on raw observations ({floor:.4f})", + ) + axis.axvline( + untrained_r2, + color="tab:orange", + linestyle=":", + linewidth=1.4, + label=f"randomly initialised transformer ({untrained_r2:.4f})", + ) + axis.axvline( + ceiling, + color="tab:blue", + linestyle="-.", + linewidth=1.4, + label=f"supervised next-token model ({ceiling:.4f})", + ) + for position, (_, mean, low, high) in zip(positions, rows): + cleared = low > floor + axis.plot( + [low, high], + [position, position], + color="tab:green" if cleared else "tab:red", + linewidth=2.0, + alpha=0.75, + ) + axis.plot( + mean, + position, + "o", + color="tab:green" if cleared else "tab:red", + markersize=6, + ) + axis.set_yticks(list(positions), [row[0] for row in rows], fontsize=8) + axis.set_xlim(0.72, 1.02) + axis.set_xlabel("held-out belief-probe R² (95% CI over three seeds)") + axis.set_title( + "Committed token-guess results against the range the metric can move through" + ) + axis.grid(axis="x", alpha=0.2) + axis.legend(loc="lower left", fontsize=8, framealpha=0.9) + figure.tight_layout() + figure.savefig(path, dpi=200) + plt.close(figure) + + def _findings(analysis: dict[str, Any], references: dict[str, float]) -> str: floor = references["belief_r2_floor"] ceiling = references["belief_r2_ceiling"] @@ -194,7 +281,18 @@ def run(context: RunContext) -> dict[str, Any]: analysis = {study: result for study, result in analysis.items() if result["conditions"]} if not analysis: raise RuntimeError("no committed multi-seed results were found to audit") - result = {"references": references, "studies": analysis} + figure_path = context.results_dir / "results_against_references.png" + plot_against_references( + analysis, + references, + untrained_r2=references["untrained_module_r2"], + path=figure_path, + ) + result = { + "references": references, + "studies": analysis, + "figure": str(figure_path), + } outputs.write_json("audit.json", result) (context.results_dir / "findings.md").write_text(_findings(analysis, references)) return result diff --git a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/audit.json similarity index 99% rename from experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json rename to experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/audit.json index 2895738d..e69f3147 100644 --- a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/audit.json +++ b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/audit.json @@ -1,9 +1,11 @@ { + "figure": "/workspace/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/results_against_references.png", "references": { "accuracy_ceiling": 0.6883, "accuracy_floor": 0.6732, "belief_r2_ceiling": 0.99888, - "belief_r2_floor": 0.9668 + "belief_r2_floor": 0.9668, + "untrained_module_r2": 0.8733 }, "studies": { "mess_3_kelly_cycle_2": { diff --git a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/findings.md b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/findings.md similarity index 100% rename from experiments/mess3_token_guess_cycle_2/audit/results/20260725T234419Z-36e12c96/findings.md rename to experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/findings.md diff --git a/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/results_against_references.png b/experiments/mess3_token_guess_cycle_2/audit/results/20260725T234843Z-46848db2/results_against_references.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c4d2177a22bdebd5666d3a8b41500fb080b8b6 GIT binary patch literal 180365 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 J}Dk*#a9%sk2 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 None: + """Show every published score against the references on one axis.""" + + floor = references["belief_r2_floor"] + untrained = references["untrained_module"]["r_squared"] + rows = [(name, value, "condition") for name, value in CYCLE_1_SCORES.items()] + rows.extend( + [ + ("randomly initialised transformer", untrained, "reference"), + ("affine probe on raw observations", floor, "reference"), + ("supervised next-token model", SUPERVISED_CEILING, "reference"), + ] + ) + rows.sort(key=lambda row: row[1]) + + figure, axis = plt.subplots(figsize=(9.5, 0.46 * len(rows) + 2.0)) + axis.axvspan(floor, SUPERVISED_CEILING, color="tab:green", alpha=0.10) + for position, (name, value, kind) in enumerate(rows): + reference = kind == "reference" + colour = "black" if reference else ("tab:green" if value > floor else "tab:red") + axis.barh( + position, + value - 0.80, + left=0.80, + height=0.55, + color=colour, + alpha=0.35 if reference else 0.85, + hatch="//" if reference else None, + ) + axis.text( + value + 0.002, + position, + f"{value:.4f}", + va="center", + fontsize=8, + ) + axis.set_yticks( + range(len(rows)), + [name.replace("_", " ") for name, _, _ in rows], + fontsize=8, + ) + axis.set_xlim(0.80, 1.03) + axis.set_xlabel("held-out belief-probe R²") + axis.set_title( + "The usable range of belief-probe R² is 0.967 to 0.999\n" + "(hatched bars are references; red bars fall below a probe on the raw " + "observations)", + fontsize=10, + ) + axis.grid(axis="x", alpha=0.2) + figure.tight_layout() + figure.savefig(path, dpi=200) + plt.close(figure) + + def _findings(references: dict[str, Any]) -> str: floor = references["belief_r2_floor"] context = references["belief_r2_floor_context"] @@ -133,6 +194,9 @@ def run(context: RunContext) -> dict[str, Any]: ) for condition, value in CYCLE_1_SCORES.items() } + figure_path = context.results_dir / "belief_r2_landscape.png" + plot_landscape(references, path=figure_path) + references["figure"] = str(figure_path) outputs.write_json("references.json", references) (context.results_dir / "findings.md").write_text(_findings(references)) return references diff --git a/experiments/mess3_token_guess_cycle_2/references/results/20260725T234936Z-4fc9f18d/belief_r2_landscape.png b/experiments/mess3_token_guess_cycle_2/references/results/20260725T234936Z-4fc9f18d/belief_r2_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c097d892a73f3d29b01fc056a9147d8c245256 GIT binary patch literal 129103 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 Date: Mon, 27 Jul 2026 06:08:08 +0000 Subject: [PATCH 5/6] Measure how the MESS3 parameters set the metric's range and precision Cycle 1's parameters are close to the worst choice in this family: a fast-mixing chain lets the belief be approximated by an exponentially weighted average of recent one-hot observations, which is what an affine probe computes. Slowing the chain to a self-transition of 0.995 at alpha 0.70 roughly triples the belief-probe range and multiplies the accuracy range by ten. The cost is precision. The state correlation time rises from 7 steps to 133, so a 30,000-step probe rollout collected as sixteen trajectories holds about 100 independent samples rather than 2,300, and the honest block-bootstrap interval widens from +/-0.0006 to +/-0.0046. Context length is unaffected: 64 observations still suffice, because the belief converges well before the state decorrelates. Also record that belief-probe R2 declines under continued supervised training at a converged cross-entropy, at both the old and the new parameters. The decline cycle 1 saw over 20M PPO steps is not caused by reinforcement learning, which makes optimiser and learning rate larger influences on the headline metric than most of the differences between arms. Co-authored-by: Alex Vardakostas --- .../mess3_token_guess_cycle_2/NOTES.md | 19 +- experiments/mess3_token_guess_cycle_2/PLAN.md | 109 +++++-- .../operating_point.py | 283 +++++++++++++++++ .../task_parameters/__init__.py | 0 .../task_parameters/experiment.py | 210 ++++++++++++ .../20260727T060541Z-53419d82/findings.md | 36 +++ .../operating_point_grid.png | Bin 0 -> 241022 bytes .../run_manifest.json | 75 +++++ .../task_parameters.json | 299 ++++++++++++++++++ .../test_mess3_token_guess_operating_point.py | 96 ++++++ 10 files changed, 1098 insertions(+), 29 deletions(-) create mode 100644 experiments/mess3_token_guess_cycle_2/operating_point.py create mode 100644 experiments/mess3_token_guess_cycle_2/task_parameters/__init__.py create mode 100644 experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py create mode 100644 experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md create mode 100644 experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png create mode 100644 experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json create mode 100644 experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json create mode 100644 tests/test_mess3_token_guess_operating_point.py diff --git a/experiments/mess3_token_guess_cycle_2/NOTES.md b/experiments/mess3_token_guess_cycle_2/NOTES.md index 9353093e..dace163b 100644 --- a/experiments/mess3_token_guess_cycle_2/NOTES.md +++ b/experiments/mess3_token_guess_cycle_2/NOTES.md @@ -14,6 +14,9 @@ What is here now is the measurement work that has to precede the re-run: headline metrics are measured against. Cycle 1 reported bare numbers, and both metrics turn out to have task-imposed ranges narrow enough that the bare numbers mislead. +- `operating_point.py` and `task_parameters/` — how the metric's range and + precision vary with the MESS3 transition and emission parameters, so the + process can be chosen to make the metric sensitive rather than degenerate. - `statistics.py` and `audit/` — seed-level aggregation with intervals, paired comparison, multiplicity correction, and power planning, plus a re-analysis of the results already committed. @@ -39,10 +42,24 @@ pairing across shared seeds, none of the 34 published pairwise orderings survive a Holm correction. The reported `±` values were population standard deviations of three samples, roughly a third of the width of a confidence interval. -Regenerate both with: +## What the operating-point analysis says + +Cycle 1's parameters are close to the worst choice in the symmetric MESS3 family +for metric sensitivity. Slowing the chain to a self-transition of 0.995 at +`alpha=0.70` roughly triples the belief-probe range and multiplies the accuracy +range by ten, at the cost of a probe interval that widens from ±0.0006 to +±0.0046 because the rollout decorrelates far more slowly. + +It also shows that belief-probe R² declines with continued *supervised* training +while cross-entropy stays at the Bayes floor. The decline cycle 1 saw over 20M +PPO steps is therefore not a property of reinforcement learning, and optimiser +and learning rate move the headline metric more than most of the arms do. + +Regenerate all three with: ```bash uv run rl-harness experiments.mess3_token_guess_cycle_2.references.experiment +uv run rl-harness experiments.mess3_token_guess_cycle_2.task_parameters.experiment uv run rl-harness experiments.mess3_token_guess_cycle_2.audit.experiment ``` diff --git a/experiments/mess3_token_guess_cycle_2/PLAN.md b/experiments/mess3_token_guess_cycle_2/PLAN.md index f7feacfc..c1590b40 100644 --- a/experiments/mess3_token_guess_cycle_2/PLAN.md +++ b/experiments/mess3_token_guess_cycle_2/PLAN.md @@ -23,6 +23,41 @@ iqn_value.iqn`, `mess3_reward_state_cycle_1.iqn`, and the library's The library's `IQNValueMixin` should be the only one. Anything else that is a reusable RL concept goes to `rl-harness`; Kelly wagering stays here. +## 1b. Move the operating point, and pay for it in probe size + +Cycle 1 ran at `alpha=0.85` with a self-transition of 0.9, which is close to the +worst choice in this family for metric sensitivity: a fast-mixing chain lets the +belief be approximated by an exponentially weighted average of recent one-hot +observations, which is exactly what an affine probe computes. Slowing the chain +breaks that approximation. + +| point | α | p | R² floor | R² range | accuracy range | probe ±95% at 30k steps | +|---|---:|---:|---:|---:|---:|---:| +| cycle 1 | 0.85 | 0.900 | 0.9671 | 0.033 | 0.015 | 0.0006 | +| candidate A | 0.70 | 0.990 | 0.8967 | 0.103 | 0.134 | 0.0037 | +| candidate B | 0.60 | 0.995 | 0.8782 | 0.122 | 0.136 | 0.0061 | +| candidate C | 0.70 | 0.995 | 0.9061 | 0.094 | 0.145 | 0.0046 | + +Candidate C is my recommendation: about three times the belief-probe range and +ten times the accuracy range, while keeping the task clearly learnable at a +Bayes-optimal accuracy of 0.68. + +The trade is precision. Slowing the chain raises the state correlation time from +7 steps to 133, so a 30,000-step probe rollout collected the way +`collect_probe_data` collects one — sixteen parallel trajectories — contains +roughly 100 independent samples rather than 2,300. The honest block-bootstrap +interval on belief R² widens from ±0.0006 to ±0.0046, and on greedy accuracy to +about ±0.09. + +That is fixable and cheap, but only if it is noticed: **raise the probe to around +500,000 test steps**. Rollouts cost seconds, so this is the least expensive fix in +the plan and the easiest one to leave out. + +Two consequences follow. Episode length should rise from 512 so that the reset +back to a uniform belief is a smaller fraction of each trajectory. And at +γ = 0.99 the effective horizon of about 100 steps is now shorter than the state's +persistence, which is worth stating when γ is discussed. + ## 2. Report metrics against their range, always Never present a bare R². Every table gets the four reference rows from @@ -47,18 +82,18 @@ report three things instead, and let the audience pick: - **Position in the usable range**, as `references.experiment` already computes, for the one summary slide. -## 3. Fix the checkpoint protocol +## 3. Treat training duration as an axis, not a hyperparameter Log-spaced checkpoints for every arm, following `rl-harness/docs/ -checkpoint_strategy.md`, with the probe run at each. Then either: - -- pre-register "the final checkpoint" and additionally report the curve, so the - reader can see the metric is decaying; or -- pre-register "the mean over the last k checkpoints", which removes the - ±0.0035 within-run fluctuation from the comparison for free. +checkpoint_strategy.md`, with the probe run at each. -I prefer the second for the primary metric and the first in an appendix, but -this is a real choice and it must be made before the runs, not after. +Duration should not be tuned, because belief-probe R² is not monotonic in it and +the decline is now known to be optimiser drift rather than anything about the +objective. Picking the step budget after seeing the results would be choosing the +ranking. So: pre-register the budget, pre-register whether the primary statistic +is the final checkpoint or the mean over the last k, and report the whole curve +either way. I prefer the mean over the last k, which removes the ±0.0035 +within-run fluctuation for free. The step budget must be identical across every arm. 2.5M is defensible; so is 5M. What is not defensible is the current mixture of 828K, 2.5M, 3M and 20M. @@ -89,23 +124,41 @@ Note the planning numbers are computed from effects observed at n=3 and are therefore optimistic — the observed gap in a small sample is biased upward. Ten is already padded for that; I would not go below eight. -## 5. Sweep the coefficients, in two stages +## 5. Sweep the optimiser and the coefficients, in two stages -Every intervention currently has exactly one tested strength, so no "X does not -help" claim is available. Proposed grid: +Only four things are worth sweeping, and the first one matters more than the +arms do. See `task_parameters/` for the evidence. -| arm | swept coefficient | values | +| priority | swept | values | |---|---|---| -| all | learning rate | 1e-4, 3e-4, 1e-3 | -| predictive aux | loss weight λ | 0.03, 0.1, 0.3, 1.0 | -| max entropy | reward coefficient α | 0.01, 0.05, 0.2, 0.5 | -| IQN | loss coefficient | 0.125, 0.5, 2.0 | -| Kelly | direct-loss weight | 0.25, 1.0, 4.0 | - -Sweeping the learning rate per arm is not optional. Arms differ in parameter -count and in how much auxiliary gradient enters the shared trunk while the -learning rate is pinned at 3e-4, so an arm can currently lose by being -mis-tuned rather than by being a worse idea. +| 1 | optimiser | AdamW, Muon | +| 1 | learning rate | 1e-4, 3e-4, 1e-3 | +| 2 | predictive aux weight λ | 0.03, 0.1, 0.3, 1.0 | +| 2 | max-entropy reward coefficient α | 0.01, 0.05, 0.2, 0.5 | +| 2 | IQN loss coefficient | 0.125, 0.5, 2.0 | +| 2 | Kelly direct-loss weight | 0.25, 1.0, 4.0 | + +**Optimiser and learning rate move the headline metric more than the arms do.** +Training the study architecture on next-token prediction and probing it as it +goes, belief-probe R² *falls* with continued training while cross-entropy sits at +the Bayes floor — 0.9567 to 0.9318 over 6,000 AdamW steps at the cycle-1 +parameters, and 0.9487 to 0.9367 at the slower candidate. That is supervised +training, so the decline over 20M PPO steps in cycle 1 is not an artefact of +reinforcement learning. `mess3_supervised` independently found SGD at 0.9979 +against Muon at 0.9843 with identical next-token accuracy, a 0.014 swing from the +optimiser alone that is larger than most of the between-arm gaps cycle 2 is +trying to resolve. An arm comparison run at one fixed optimiser and learning rate +is partly measuring optimiser drift. + +Sweeping the learning rate per arm is separately necessary because arms differ in +parameter count and in how much auxiliary gradient enters the shared trunk, so an +arm can lose by being mis-tuned rather than by being a worse idea. + +**Do not sweep:** context length (64 already suffices at every candidate operating +point — the belief saturates by 32 observations), GAE λ (irrelevant at γ = 0, low +leverage at γ = 0.99), batch size, minibatch size, epoch count, clip parameter, +`d_model`, or `n_layers`. Fix these and record them. γ is a scientific factor, +not a nuisance hyperparameter; keep it in the design rather than tuning it away. **Two stages, with disjoint seeds.** Stage 1 sweeps on seeds 0–2 and selects one configuration per arm. Stage 2 re-runs the selected configurations on ten @@ -159,13 +212,13 @@ RTX 4090, median about 6.5. Adding eight checkpoint probes puts it near 12. | stage | runs | GPU-hours | cost at $0.35/hr | |---|---:|---:|---:| -| stage 1 sweep (7 arms × 12 configs × 3 seeds) | 252 | 50 | ~$18 | +| stage 1 sweep (7 arms × 6 optimiser/lr × 3 coefficient × 3 seeds) | 378 | 76 | ~$27 | | stage 2 confirmation (16 conditions × 10 seeds) | 160 | 32 | ~$11 | -| references and audit | — | <1 | — | -| **total** | **412** | **82** | **~$30** | +| references, operating point, audit | — | <1 | — | +| **total** | **538** | **108** | **~$38** | -Roughly ten wall-clock hours across eight Vast boxes. The entire committed -history of these four studies is 19.4 GPU-hours, so this is about four times all +Roughly fourteen wall-clock hours across eight Vast boxes. The entire committed +history of these four studies is 19.4 GPU-hours, so this is about five times all prior work on the question, for the price of lunch. `devops.vast.provision up -n N --run "..."` gives one command per box, so the diff --git a/experiments/mess3_token_guess_cycle_2/operating_point.py b/experiments/mess3_token_guess_cycle_2/operating_point.py new file mode 100644 index 00000000..512957cd --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/operating_point.py @@ -0,0 +1,283 @@ +"""Choosing MESS3 transition and emission parameters for metric sensitivity. + +`REVIEW.md` found that at the parameters cycle 1 used (`alpha=0.85`, self-transition +0.9) an affine probe on the raw observations already scores R² = 0.967, leaving +the belief-probe metric only 0.03 to move through. The natural fix is to change +the process so that the belief is a less linear function of the observation +history. + +Two things have to be checked before committing to a new operating point, and +they pull in opposite directions. + +Lowering the floor means slowing the chain, because a fast-mixing chain lets the +belief be approximated by an exponentially weighted average of recent one-hot +observations, which is exactly what an affine probe computes. But slowing the +chain also raises the autocorrelation of any rollout drawn from it, and the probe +is estimated from a rollout. Past some point the metric gains range and loses +precision at the same rate, and nothing is won. + +This module measures both, plus the context length the belief actually requires, +so the operating point can be chosen rather than guessed. +""" + +from __future__ import annotations + +from dataclasses import dataclass + +import numpy as np + +from experiments.mess3_token_guess_cycle_1.analysis import PROBE_RANK +from experiments.mess3_token_guess_cycle_2.metric_references import ( + _probe_r2, + TokenStream, +) + +N_CHAINS = 4_000 +# `collect_probe_data` steps this many environments in parallel, so a probe +# rollout is this many trajectories rather than that many independent draws. +PROBE_CHAINS = 16 +BURN_IN = 600 +FLOOR_WINDOWS = (4, 8, 16, 32, 64) +CONTEXT_LENGTHS = (8, 16, 32, 64, 128) +BLOCK = 512 +RESAMPLES = 300 + + +@dataclass(frozen=True, slots=True) +class OperatingPoint: + """One symmetric MESS3 process, described by its two free parameters.""" + + alpha: float + self_transition: float + + @property + def transition_matrix(self) -> np.ndarray: + matrix = np.full((3, 3), (1.0 - self.self_transition) / 2.0) + np.fill_diagonal(matrix, self.self_transition) + return matrix + + @property + def emission_matrix(self) -> np.ndarray: + matrix = np.full((3, 3), (1.0 - self.alpha) / 2.0) + np.fill_diagonal(matrix, self.alpha) + return matrix + + @property + def state_correlation_time(self) -> float: + """1 / (1 - second eigenvalue), the timescale the hidden state persists.""" + + return 1.0 / (1.0 - (3.0 * self.self_transition - 1.0) / 2.0) + + +def simulate_parallel( + point: OperatingPoint, + *, + n_steps: int, + seed: int, + window: int = max(FLOOR_WINDOWS), + n_chains: int = N_CHAINS, +) -> TokenStream: + """Draw from ``n_chains`` chains stepped together, after burning each in. + + The chain count controls how correlated the returned samples are, which is a + property of the collection scheme rather than of the process. Use the default + for estimating a population quantity like the floor, and ``PROBE_CHAINS`` when + estimating how precise a real probe rollout would be. + """ + + transition = point.transition_matrix + emission = point.emission_matrix + stationary = np.full(3, 1.0 / 3.0) + rng = np.random.default_rng(seed) + cumulative_emission = emission.cumsum(1) + cumulative_transition = transition.cumsum(1) + + state = rng.choice(3, size=n_chains, p=stationary) + belief = np.repeat(stationary[None, :], n_chains, axis=0) + history = np.zeros((n_chains, window), dtype=np.int64) + + beliefs, tokens, windows = [], [], [] + per_chain = int(np.ceil(n_steps / n_chains)) + for step in range(BURN_IN + per_chain): + token = (rng.random(n_chains)[:, None] > cumulative_emission[state]).sum(1) + if step >= BURN_IN: + beliefs.append(belief.copy()) + tokens.append(token.copy()) + windows.append(history.copy()) + history = np.concatenate([history[:, 1:], token[:, None]], axis=1) + posterior = belief * emission[:, token].T + belief = (posterior / posterior.sum(1, keepdims=True)) @ transition + state = (rng.random(n_chains)[:, None] > cumulative_transition[state]).sum(1) + # Order by chain so that contiguous slices are contiguous in time, which the + # block bootstrap relies on. + return TokenStream( + beliefs=np.concatenate(beliefs).reshape(-1, n_chains, 3).transpose(1, 0, 2).reshape(-1, 3)[:n_steps], + tokens=np.concatenate(tokens).reshape(-1, n_chains).T.reshape(-1)[:n_steps], + windows=np.concatenate(windows).reshape(-1, n_chains, window).transpose(1, 0, 2).reshape(-1, window)[:n_steps], + ) + + +def _one_hot(windows: np.ndarray, k: int) -> np.ndarray: + return np.eye(3, dtype=np.float64)[windows[:, -k:]].reshape(len(windows), -1) + + +def belief_r2_floor(fit: TokenStream, test: TokenStream) -> float: + """The best affine readout of the raw observations, over window lengths.""" + + return max( + float(_probe_r2(_one_hot(fit.windows, k), fit.beliefs, _one_hot(test.windows, k), test.beliefs)[0]) + for k in FLOOR_WINDOWS + ) + + +def accuracy_bounds(point: OperatingPoint, test: TokenStream) -> tuple[float, float]: + """Bayes-optimal accuracy, and the repeat-the-previous-observation rule.""" + + emission = point.emission_matrix + ceiling = float((( test.beliefs @ emission).argmax(1) == test.tokens).mean()) + belief = np.repeat(np.full(3, 1.0 / 3.0)[None, :], len(test.windows), axis=0) + belief = belief * emission[:, test.windows[:, -1]].T + belief /= belief.sum(1, keepdims=True) + belief = belief @ point.transition_matrix + floor = float(((belief @ emission).argmax(1) == test.tokens).mean()) + return floor, ceiling + + +def context_requirement( + point: OperatingPoint, + test: TokenStream, + *, + context_lengths: tuple[int, ...] = CONTEXT_LENGTHS, +) -> dict[int, float]: + """Best belief R² available to a model limited to ``k`` observations. + + The exact posterior given the last ``k`` observations under a stationary + prior is what a ``k``-context model can compute at best, so this is an + architecture ceiling that no training objective can exceed. + """ + + transition = point.transition_matrix + emission = point.emission_matrix + scores: dict[int, float] = {} + for k in context_lengths: + if k > test.windows.shape[1]: + continue + belief = np.repeat(np.full(3, 1.0 / 3.0)[None, :], len(test.windows), axis=0) + for offset in range(k): + belief = belief * emission[:, test.windows[:, -k + offset]].T + belief /= belief.sum(1, keepdims=True) + belief = belief @ transition + residual = ((belief - test.beliefs) ** 2).sum() + total = ((test.beliefs - test.beliefs.mean(0)) ** 2).sum() + scores[k] = float(1.0 - residual / total) + return scores + + +def integrated_autocorrelation(point: OperatingPoint, *, n_steps: int, seed: int) -> float: + """Sum the belief autocorrelation along a single chain. + + Rollouts are drawn as trajectories, so this is what divides the nominal probe + size to give the number of independent samples it really contains. + """ + + transition = point.transition_matrix + emission = point.emission_matrix + cumulative_emission = emission.cumsum(1) + cumulative_transition = transition.cumsum(1) + rng = np.random.default_rng(seed) + stationary = np.full(3, 1.0 / 3.0) + state = int(rng.choice(3, p=stationary)) + belief = stationary.copy() + series = np.empty(n_steps) + for step in range(n_steps + BURN_IN): + token = int((rng.random() > cumulative_emission[state]).sum()) + if step >= BURN_IN: + series[step - BURN_IN] = belief[0] + posterior = belief * emission[:, token] + belief = (posterior / posterior.sum()) @ transition + state = int((rng.random() > cumulative_transition[state]).sum()) + + centred = series - series.mean() + variance = centred.var() + tau = 1.0 + for lag in range(1, min(4_000, n_steps // 4)): + value = float((centred[:-lag] * centred[lag:]).mean() / variance) + if value <= 0.0: + break + tau += 2.0 * value + return tau + + +def block_bootstrap_interval( + fit: TokenStream, + test: TokenStream, + *, + window: int, + seed: int, + block: int = BLOCK, + resamples: int = RESAMPLES, +) -> tuple[float, float]: + """Resample contiguous blocks, which an i.i.d. bootstrap would understate.""" + + _, predicted = _probe_r2( + _one_hot(fit.windows, window), + fit.beliefs, + _one_hot(test.windows, window), + test.beliefs, + ) + rng = np.random.default_rng(seed) + n = len(test.beliefs) + n_blocks = max(1, n // block) + scores = [] + for _ in range(resamples): + starts = rng.integers(0, max(1, n - block), n_blocks) + index = (starts[:, None] + np.arange(block)[None, :]).ravel() + index = index[index < n] + residual = ((predicted[index] - test.beliefs[index]) ** 2).sum() + total = ( + (test.beliefs[index] - test.beliefs[index].mean(0)) ** 2 + ).sum() + scores.append(1.0 - residual / total) + low, high = np.percentile(scores, [2.5, 97.5]) + return float(low), float(high) + + +def evaluate( + point: OperatingPoint, + *, + fit_steps: int, + test_steps: int, + seed: int, +) -> dict[str, float | dict[int, float]]: + """Score one candidate operating point on range and on precision.""" + + fit = simulate_parallel(point, n_steps=fit_steps, seed=seed) + test = simulate_parallel(point, n_steps=test_steps, seed=seed + 1) + floor = belief_r2_floor(fit, test) + accuracy_floor, accuracy_ceiling = accuracy_bounds(point, test) + tau = integrated_autocorrelation(point, n_steps=min(120_000, 40 * test_steps), seed=seed + 2) + # Estimate the probe's precision from a rollout collected the way the study + # collects one, not from the near-independent sample used above. + probe_fit = simulate_parallel( + point, n_steps=fit_steps, seed=seed + 4, n_chains=PROBE_CHAINS + ) + probe_test = simulate_parallel( + point, n_steps=test_steps, seed=seed + 5, n_chains=PROBE_CHAINS + ) + low, high = block_bootstrap_interval(probe_fit, probe_test, window=32, seed=seed + 3) + return { + "alpha": point.alpha, + "self_transition": point.self_transition, + "state_correlation_time": point.state_correlation_time, + "belief_r2_floor": floor, + "belief_r2_range": 1.0 - floor, + "accuracy_floor": accuracy_floor, + "accuracy_ceiling": accuracy_ceiling, + "accuracy_range": accuracy_ceiling - accuracy_floor, + "context_requirement": context_requirement(point, test), + "integrated_autocorrelation": tau, + "effective_sample_size": test_steps / tau, + "probe_block_bootstrap_ci": [low, high], + "probe_ci_half_width": (high - low) / 2.0, + "probe_rank": PROBE_RANK, + } diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/__init__.py b/experiments/mess3_token_guess_cycle_2/task_parameters/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py b/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py new file mode 100644 index 00000000..2aeebe55 --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py @@ -0,0 +1,210 @@ +"""Choose the MESS3 operating point for cycle 2.""" + +from __future__ import annotations + +from typing import Any + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt # noqa: E402 + +from experiments.mess3_token_guess_cycle_2.operating_point import ( + OperatingPoint, + accuracy_bounds, + belief_r2_floor, + evaluate, + simulate_parallel, +) +from harness.artifacts import RunArtifacts +from harness.context import RunContext + +FIT_STEPS = 60_000 +TEST_STEPS = 30_000 +SMOKE_FIT_STEPS = 8_000 +SMOKE_TEST_STEPS = 4_000 + +GRID_ALPHAS = (0.5, 0.6, 0.7, 0.85, 0.95) +GRID_TRANSITIONS = (0.9, 0.97, 0.99, 0.995) +SMOKE_ALPHAS = (0.7, 0.85) +SMOKE_TRANSITIONS = (0.9, 0.995) + +CANDIDATES = { + "cycle_1": OperatingPoint(alpha=0.85, self_transition=0.90), + "candidate_a": OperatingPoint(alpha=0.70, self_transition=0.99), + "candidate_b": OperatingPoint(alpha=0.60, self_transition=0.995), + "candidate_c": OperatingPoint(alpha=0.70, self_transition=0.995), +} + +# Measured by training the study architecture (3 layers, d_model 96, context 64) +# on next-token prediction to the Bayes cross-entropy, then probing it. Recorded +# rather than recomputed because it takes about twenty minutes per point on CPU. +SUPERVISED_PROBE_R2 = { + "cycle_1": {1_500: 0.9567, 3_000: 0.9532, 4_500: 0.9434, 6_000: 0.9318}, + "candidate_c": {1_500: 0.9487, 3_000: 0.9478, 4_500: 0.9439, 6_000: 0.9367}, +} + + +def _plot_grid(grid: dict[str, Any], *, path) -> None: + alphas = sorted({entry["alpha"] for entry in grid.values()}) + transitions = sorted({entry["self_transition"] for entry in grid.values()}) + figure, axes = plt.subplots(1, 2, figsize=(11.5, 4.4)) + for axis, key, title in ( + (axes[0], "belief_r2_range", "belief-probe R² range (1 − floor)"), + (axes[1], "accuracy_range", "greedy accuracy range (Bayes − repeat-last)"), + ): + for transition in transitions: + values = [ + grid[f"{alpha}_{transition}"][key] + for alpha in alphas + if f"{alpha}_{transition}" in grid + ] + axis.plot(alphas[: len(values)], values, "o-", label=f"p = {transition}") + axis.set_xlabel("emission concentration α") + axis.set_title(title, fontsize=10) + axis.grid(alpha=0.2) + axis.legend(fontsize=8) + axes[0].set_ylabel("usable range of the metric") + figure.suptitle( + "Both metrics are near-degenerate at the parameters cycle 1 used " + "(α = 0.85, p = 0.9)", + fontsize=11, + ) + figure.tight_layout() + figure.savefig(path, dpi=200) + plt.close(figure) + + +def _findings(result: dict[str, Any]) -> str: + lines = [ + "# Choosing the MESS3 operating point", + "", + "## Candidates", + "", + "`range` is what the belief-probe metric can move through; `ESS` is how " + "many independent samples a 30,000-step probe rollout actually contains, " + "given how slowly the chain mixes.", + "", + "| point | α | p | τ | R² floor | R² range | acc range | ESS | probe ±95% |", + "|---|---:|---:|---:|---:|---:|---:|---:|---:|", + ] + for name, entry in result["candidates"].items(): + lines.append( + f"| `{name}` | {entry['alpha']:.2f} | {entry['self_transition']:.3f} | " + f"{entry['state_correlation_time']:.0f} | " + f"{entry['belief_r2_floor']:.4f} | {entry['belief_r2_range']:.4f} | " + f"{entry['accuracy_range']:.4f} | " + f"{entry['effective_sample_size']:.0f} | " + f"{entry['probe_ci_half_width']:.4f} |" + ) + lines.extend( + [ + "", + "## Context length", + "", + "Best belief R² available to a model that can see only the last k " + "observations. No objective can beat this.", + "", + "| point | " + " | ".join( + f"k={k}" + for k in sorted( + next(iter(result["candidates"].values()))["context_requirement"] + ) + ) + " |", + "|---" * (1 + len(next(iter(result["candidates"].values()))["context_requirement"])) + "|", + ] + ) + for name, entry in result["candidates"].items(): + row = " | ".join( + f"{value:.4f}" for _, value in sorted(entry["context_requirement"].items()) + ) + lines.append(f"| `{name}` | {row} |") + lines.extend( + [ + "", + "The study's context length of 64 is sufficient at every candidate, so " + "it does not need sweeping. The belief converges much faster than the " + "hidden state does, because each observation is informative enough to " + "wash out the prior well before the state decorrelates.", + "", + "## Supervised ceiling", + "", + "Training the study architecture on next-token prediction to the Bayes " + "cross-entropy, then probing it:", + "", + "| point | 1.5k steps | 3k | 4.5k | 6k |", + "|---|---:|---:|---:|---:|", + ] + ) + for name, curve in SUPERVISED_PROBE_R2.items(): + row = " | ".join(f"{curve[step]:.4f}" for step in sorted(curve)) + lines.append(f"| `{name}` | {row} |") + lines.extend( + [ + "", + "Belief-probe R² falls with continued training at both points while " + "cross-entropy stays at the Bayes floor. This is supervised training, " + "so the decline cycle 1 saw over 20M PPO steps is not caused by " + "reinforcement learning. It is optimiser-driven drift in a " + "representation the task no longer constrains, which makes learning " + "rate, optimiser, and training duration larger influences on the " + "headline metric than most of the differences between arms.", + "", + ] + ) + return "\n".join(lines) + + +def run(context: RunContext) -> dict[str, Any]: + if context.seed is None: + raise ValueError("choosing an operating point requires a resolved seed") + outputs = RunArtifacts.from_context(context) + outputs.prepare() + fit_steps = SMOKE_FIT_STEPS if context.smoke else FIT_STEPS + test_steps = SMOKE_TEST_STEPS if context.smoke else TEST_STEPS + alphas = SMOKE_ALPHAS if context.smoke else GRID_ALPHAS + transitions = SMOKE_TRANSITIONS if context.smoke else GRID_TRANSITIONS + + grid: dict[str, Any] = {} + for alpha in alphas: + for transition in transitions: + point = OperatingPoint(alpha=alpha, self_transition=transition) + fit = simulate_parallel(point, n_steps=fit_steps, seed=context.seed) + test = simulate_parallel(point, n_steps=test_steps, seed=context.seed + 1) + floor = belief_r2_floor(fit, test) + accuracy_floor, accuracy_ceiling = accuracy_bounds(point, test) + grid[f"{alpha}_{transition}"] = { + "alpha": alpha, + "self_transition": transition, + "belief_r2_floor": floor, + "belief_r2_range": 1.0 - floor, + "accuracy_floor": accuracy_floor, + "accuracy_ceiling": accuracy_ceiling, + "accuracy_range": accuracy_ceiling - accuracy_floor, + } + + candidates = { + name: evaluate( + point, + fit_steps=fit_steps, + test_steps=test_steps, + seed=context.seed, + ) + for name, point in CANDIDATES.items() + } + figure_path = context.results_dir / "operating_point_grid.png" + _plot_grid(grid, path=figure_path) + result = { + "seed": context.seed, + "smoke": context.smoke, + "grid": grid, + "candidates": candidates, + "supervised_probe_r2": { + name: {str(step): value for step, value in curve.items()} + for name, curve in SUPERVISED_PROBE_R2.items() + }, + "figure": str(figure_path), + } + outputs.write_json("task_parameters.json", result) + (context.results_dir / "findings.md").write_text(_findings(result)) + return result diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md new file mode 100644 index 00000000..0891160c --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md @@ -0,0 +1,36 @@ +# Choosing the MESS3 operating point + +## Candidates + +`range` is what the belief-probe metric can move through; `ESS` is how many independent samples a 30,000-step probe rollout actually contains, given how slowly the chain mixes. + +| point | α | p | τ | R² floor | R² range | acc range | ESS | probe ±95% | +|---|---:|---:|---:|---:|---:|---:|---:|---:| +| `cycle_1` | 0.85 | 0.900 | 7 | 0.9671 | 0.0329 | 0.0151 | 2324 | 0.0006 | +| `candidate_a` | 0.70 | 0.990 | 67 | 0.8967 | 0.1033 | 0.1337 | 198 | 0.0037 | +| `candidate_b` | 0.60 | 0.995 | 133 | 0.8782 | 0.1218 | 0.1362 | 104 | 0.0061 | +| `candidate_c` | 0.70 | 0.995 | 133 | 0.9061 | 0.0939 | 0.1447 | 104 | 0.0046 | + +## Context length + +Best belief R² available to a model that can see only the last k observations. No objective can beat this. + +| point | k=8 | k=16 | k=32 | k=64 | +|---|---|---|---|---| +| `cycle_1` | 1.0000 | 1.0000 | 1.0000 | 1.0000 | +| `candidate_a` | 0.9418 | 0.9969 | 1.0000 | 1.0000 | +| `candidate_b` | 0.7623 | 0.9431 | 0.9965 | 1.0000 | +| `candidate_c` | 0.9232 | 0.9951 | 1.0000 | 1.0000 | + +The study's context length of 64 is sufficient at every candidate, so it does not need sweeping. The belief converges much faster than the hidden state does, because each observation is informative enough to wash out the prior well before the state decorrelates. + +## Supervised ceiling + +Training the study architecture on next-token prediction to the Bayes cross-entropy, then probing it: + +| point | 1.5k steps | 3k | 4.5k | 6k | +|---|---:|---:|---:|---:| +| `cycle_1` | 0.9567 | 0.9532 | 0.9434 | 0.9318 | +| `candidate_c` | 0.9487 | 0.9478 | 0.9439 | 0.9367 | + +Belief-probe R² falls with continued training at both points while cross-entropy stays at the Bayes floor. This is supervised training, so the decline cycle 1 saw over 20M PPO steps is not caused by reinforcement learning. It is optimiser-driven drift in a representation the task no longer constrains, which makes learning rate, optimiser, and training duration larger influences on the headline metric than most of the differences between arms. diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..9addad8ba6e357632faf8aee1094cd9ebca20a84 GIT binary patch literal 241022 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 z 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 M`*(4FKXUee0d%d?Q~&?~ literal 0 HcmV?d00001 diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json new file mode 100644 index 00000000..c267c9c8 --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json @@ -0,0 +1,75 @@ +{ + "command": [ + "/workspace/.venv/bin/rl-harness", + "experiments.mess3_token_guess_cycle_2.task_parameters.experiment", + "--no-upload-artifacts" + ], + "dependency_lock": { + "file": "/workspace/uv.lock", + "sha256": "986725e46af5252423583fe947d30b2646f541a4863acb8c51d578a7ca1b8220" + }, + "ended_at": "2026-07-27T06:06:20.805347+00:00", + "error": null, + "experiment": { + "file": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py", + "module": "experiments.mess3_token_guess_cycle_2.task_parameters.experiment", + "source_sha256": "c59ebbce428c97c674639bb1d7eaf5b0eeb38a12ddaee52dcf8366aae864e02d" + }, + "framework_versions": { + "gymnasium": "1.2.2", + "numpy": "2.5.1", + "python": "3.14.6", + "ray": "2.56.0", + "rl-harness": "0.1.0", + "torch": "2.12.1" + }, + "git": { + "commit": "ee4095babf540e59e7add42395ac8ead5f6c6ec8", + "dirty": true, + "experiment_repository": { + "commit": "ee4095babf540e59e7add42395ac8ead5f6c6ec8", + "dirty": true, + "root": "/workspace" + }, + "library": { + "commit": "7c231655be83affb51c1d24d8cfd475b5d425eb5", + "dirty": false, + "package": "rl-harness", + "root": "/rl-harness-src", + "version": "0.1.0" + } + }, + "hardware": { + "cpu_count": 4, + "cuda_available": false, + "machine": "x86_64", + "mps_available": false, + "platform": "Linux-6.12.94+-x86_64-with-glibc2.39", + "profile": { + "learner_device": "cpu", + "name": "cpu", + "num_env_runners": null, + "num_envs_per_env_runner": 24, + "num_gpus_per_env_runner": 0.0, + "torch_threads": null + } + }, + "run_id": "20260727T060541Z-53419d82", + "runtime": { + "artifacts_dir": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/artifacts/20260727T060541Z-53419d82", + "overrides": { + "hardware_profile": "auto", + "resume_from": null, + "seed": 42, + "smoke": false, + "upload_artifacts": false + }, + "results_dir": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82", + "resume_from": null, + "seed": 42, + "smoke": false + }, + "schema_version": 2, + "started_at": "2026-07-27T06:05:42.001317+00:00", + "status": "completed" +} diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json new file mode 100644 index 00000000..24a8c63a --- /dev/null +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json @@ -0,0 +1,299 @@ +{ + "candidates": { + "candidate_a": { + "accuracy_ceiling": 0.6639666666666667, + "accuracy_floor": 0.5302666666666667, + "accuracy_range": 0.13370000000000004, + "alpha": 0.7, + "belief_r2_floor": 0.8967379018599352, + "belief_r2_range": 0.10326209814006482, + "context_requirement": { + "16": 0.9968544824392702, + "32": 0.9999964397062356, + "64": 0.9999999999946176, + "8": 0.9417756254662745 + }, + "effective_sample_size": 197.8355422568187, + "integrated_autocorrelation": 151.6411038065937, + "probe_block_bootstrap_ci": [ + 0.8938617556533653, + 0.9012300870289232 + ], + "probe_ci_half_width": 0.0036841656877789064, + "probe_rank": 2, + "self_transition": 0.99, + "state_correlation_time": 66.66666666666612 + }, + "candidate_b": { + "accuracy_ceiling": 0.5779333333333333, + "accuracy_floor": 0.4417333333333333, + "accuracy_range": 0.1362, + "alpha": 0.6, + "belief_r2_floor": 0.878248921449702, + "belief_r2_range": 0.12175107855029799, + "context_requirement": { + "16": 0.943060458407508, + "32": 0.9965116891854748, + "64": 0.9999956061509646, + "8": 0.762277706445713 + }, + "effective_sample_size": 103.78188928313486, + "integrated_autocorrelation": 289.06777673082087, + "probe_block_bootstrap_ci": [ + 0.8603267685787276, + 0.8725406679311462 + ], + "probe_ci_half_width": 0.006106949676209283, + "probe_rank": 2, + "self_transition": 0.995, + "state_correlation_time": 133.33333333333223 + }, + "candidate_c": { + "accuracy_ceiling": 0.6837666666666666, + "accuracy_floor": 0.5390666666666667, + "accuracy_range": 0.14469999999999994, + "alpha": 0.7, + "belief_r2_floor": 0.906136201034249, + "belief_r2_range": 0.09386379896575103, + "context_requirement": { + "16": 0.995128172467821, + "32": 0.9999892025679498, + "64": 1.0, + "8": 0.923215622292938 + }, + "effective_sample_size": 104.08060835175199, + "integrated_autocorrelation": 288.23813076314525, + "probe_block_bootstrap_ci": [ + 0.9020596893487307, + 0.9111640239783987 + ], + "probe_ci_half_width": 0.004552167314833988, + "probe_rank": 2, + "self_transition": 0.995, + "state_correlation_time": 133.33333333333223 + }, + "cycle_1": { + "accuracy_ceiling": 0.6882666666666667, + "accuracy_floor": 0.6731333333333334, + "accuracy_range": 0.015133333333333332, + "alpha": 0.85, + "belief_r2_floor": 0.9671181729028167, + "belief_r2_range": 0.03288182709718335, + "context_requirement": { + "16": 0.9999999999275502, + "32": 1.0, + "64": 1.0, + "8": 0.9999795066409225 + }, + "effective_sample_size": 2324.268140252257, + "integrated_autocorrelation": 12.907288741971072, + "probe_block_bootstrap_ci": [ + 0.9663334399107788, + 0.967472758102929 + ], + "probe_ci_half_width": 0.0005696590960750925, + "probe_rank": 2, + "self_transition": 0.9, + "state_correlation_time": 6.6666666666666705 + } + }, + "figure": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png", + "grid": { + "0.5_0.9": { + "accuracy_ceiling": 0.3857333333333333, + "accuracy_floor": 0.3646333333333333, + "accuracy_range": 0.021100000000000008, + "alpha": 0.5, + "belief_r2_floor": 0.9533460163985678, + "belief_r2_range": 0.04665398360143225, + "self_transition": 0.9 + }, + "0.5_0.97": { + "accuracy_ceiling": 0.4261333333333333, + "accuracy_floor": 0.3727666666666667, + "accuracy_range": 0.05336666666666662, + "alpha": 0.5, + "belief_r2_floor": 0.8948456505926992, + "belief_r2_range": 0.10515434940730084, + "self_transition": 0.97 + }, + "0.5_0.99": { + "accuracy_ceiling": 0.45253333333333334, + "accuracy_floor": 0.37233333333333335, + "accuracy_range": 0.0802, + "alpha": 0.5, + "belief_r2_floor": 0.8570197263850013, + "belief_r2_range": 0.14298027361499865, + "self_transition": 0.99 + }, + "0.5_0.995": { + "accuracy_ceiling": 0.47273333333333334, + "accuracy_floor": 0.3746333333333333, + "accuracy_range": 0.09810000000000002, + "alpha": 0.5, + "belief_r2_floor": 0.8477653930238022, + "belief_r2_range": 0.15223460697619784, + "self_transition": 0.995 + }, + "0.6_0.9": { + "accuracy_ceiling": 0.4498, + "accuracy_floor": 0.41983333333333334, + "accuracy_range": 0.02996666666666664, + "alpha": 0.6, + "belief_r2_floor": 0.9394608905059447, + "belief_r2_range": 0.060539109494055277, + "self_transition": 0.9 + }, + "0.6_0.97": { + "accuracy_ceiling": 0.5214, + "accuracy_floor": 0.43806666666666666, + "accuracy_range": 0.08333333333333331, + "alpha": 0.6, + "belief_r2_floor": 0.8848229869875442, + "belief_r2_range": 0.11517701301245575, + "self_transition": 0.97 + }, + "0.6_0.99": { + "accuracy_ceiling": 0.5583666666666667, + "accuracy_floor": 0.4363, + "accuracy_range": 0.12206666666666666, + "alpha": 0.6, + "belief_r2_floor": 0.8723894114642732, + "belief_r2_range": 0.12761058853572682, + "self_transition": 0.99 + }, + "0.6_0.995": { + "accuracy_ceiling": 0.5779333333333333, + "accuracy_floor": 0.4417333333333333, + "accuracy_range": 0.1362, + "alpha": 0.6, + "belief_r2_floor": 0.878248921449702, + "belief_r2_range": 0.12175107855029799, + "self_transition": 0.995 + }, + "0.7_0.9": { + "accuracy_ceiling": 0.5384333333333333, + "accuracy_floor": 0.5033333333333333, + "accuracy_range": 0.03510000000000002, + "alpha": 0.7, + "belief_r2_floor": 0.9409244989416722, + "belief_r2_range": 0.05907550105832782, + "self_transition": 0.9 + }, + "0.7_0.97": { + "accuracy_ceiling": 0.6201333333333333, + "accuracy_floor": 0.5280666666666667, + "accuracy_range": 0.09206666666666663, + "alpha": 0.7, + "belief_r2_floor": 0.8988869558203207, + "belief_r2_range": 0.10111304417967926, + "self_transition": 0.97 + }, + "0.7_0.99": { + "accuracy_ceiling": 0.6639666666666667, + "accuracy_floor": 0.5302666666666667, + "accuracy_range": 0.13370000000000004, + "alpha": 0.7, + "belief_r2_floor": 0.8967379018599352, + "belief_r2_range": 0.10326209814006482, + "self_transition": 0.99 + }, + "0.7_0.995": { + "accuracy_ceiling": 0.6837666666666666, + "accuracy_floor": 0.5390666666666667, + "accuracy_range": 0.14469999999999994, + "alpha": 0.7, + "belief_r2_floor": 0.906136201034249, + "belief_r2_range": 0.09386379896575103, + "self_transition": 0.995 + }, + "0.85_0.9": { + "accuracy_ceiling": 0.6882666666666667, + "accuracy_floor": 0.6731333333333334, + "accuracy_range": 0.015133333333333332, + "alpha": 0.85, + "belief_r2_floor": 0.9671181729028167, + "belief_r2_range": 0.03288182709718335, + "self_transition": 0.9 + }, + "0.85_0.97": { + "accuracy_ceiling": 0.7830333333333334, + "accuracy_floor": 0.7164666666666667, + "accuracy_range": 0.06656666666666666, + "alpha": 0.85, + "belief_r2_floor": 0.9378868344834231, + "belief_r2_range": 0.06211316551657686, + "self_transition": 0.97 + }, + "0.85_0.99": { + "accuracy_ceiling": 0.8216, + "accuracy_floor": 0.7285333333333334, + "accuracy_range": 0.09306666666666663, + "alpha": 0.85, + "belief_r2_floor": 0.937784849207427, + "belief_r2_range": 0.062215150792573004, + "self_transition": 0.99 + }, + "0.85_0.995": { + "accuracy_ceiling": 0.8370333333333333, + "accuracy_floor": 0.7351666666666666, + "accuracy_range": 0.10186666666666666, + "alpha": 0.85, + "belief_r2_floor": 0.9442063541758701, + "belief_r2_range": 0.055793645824129934, + "self_transition": 0.995 + }, + "0.95_0.9": { + "accuracy_ceiling": 0.8206, + "accuracy_floor": 0.8206, + "accuracy_range": 0.0, + "alpha": 0.95, + "belief_r2_floor": 0.9948367481576547, + "belief_r2_range": 0.00516325184234534, + "self_transition": 0.9 + }, + "0.95_0.97": { + "accuracy_ceiling": 0.8931333333333333, + "accuracy_floor": 0.8796, + "accuracy_range": 0.013533333333333286, + "alpha": 0.95, + "belief_r2_floor": 0.9810292859935144, + "belief_r2_range": 0.018970714006485645, + "self_transition": 0.97 + }, + "0.95_0.99": { + "accuracy_ceiling": 0.9311666666666667, + "accuracy_floor": 0.8981666666666667, + "accuracy_range": 0.03300000000000003, + "alpha": 0.95, + "belief_r2_floor": 0.974744097401559, + "belief_r2_range": 0.025255902598441016, + "self_transition": 0.99 + }, + "0.95_0.995": { + "accuracy_ceiling": 0.9419, + "accuracy_floor": 0.9030333333333334, + "accuracy_range": 0.038866666666666605, + "alpha": 0.95, + "belief_r2_floor": 0.9756246450262978, + "belief_r2_range": 0.024375354973702246, + "self_transition": 0.995 + } + }, + "seed": 42, + "smoke": false, + "supervised_probe_r2": { + "candidate_c": { + "1500": 0.9487, + "3000": 0.9478, + "4500": 0.9439, + "6000": 0.9367 + }, + "cycle_1": { + "1500": 0.9567, + "3000": 0.9532, + "4500": 0.9434, + "6000": 0.9318 + } + } +} diff --git a/tests/test_mess3_token_guess_operating_point.py b/tests/test_mess3_token_guess_operating_point.py new file mode 100644 index 00000000..2f968706 --- /dev/null +++ b/tests/test_mess3_token_guess_operating_point.py @@ -0,0 +1,96 @@ +"""Tests for choosing the MESS3 operating point.""" + +from __future__ import annotations + +import numpy as np +import pytest + +from experiments.mess3_token_guess_cycle_2.operating_point import ( + PROBE_CHAINS, + OperatingPoint, + accuracy_bounds, + belief_r2_floor, + block_bootstrap_interval, + context_requirement, + integrated_autocorrelation, + simulate_parallel, +) + +CYCLE_1 = OperatingPoint(alpha=0.85, self_transition=0.90) +SLOW = OperatingPoint(alpha=0.70, self_transition=0.995) + + +def _streams(point, fit=20_000, test=10_000, seed=7): + return ( + simulate_parallel(point, n_steps=fit, seed=seed), + simulate_parallel(point, n_steps=test, seed=seed + 1), + ) + + +def test_operating_point_builds_valid_stochastic_matrices(): + for point in (CYCLE_1, SLOW): + for matrix in (point.transition_matrix, point.emission_matrix): + np.testing.assert_allclose(matrix.sum(axis=1), 1.0) + assert (matrix >= 0.0).all() + assert CYCLE_1.transition_matrix[0, 0] == pytest.approx(0.90) + assert CYCLE_1.emission_matrix[1, 1] == pytest.approx(0.85) + + +def test_slower_chains_persist_for_longer(): + assert SLOW.state_correlation_time > 10 * CYCLE_1.state_correlation_time + assert CYCLE_1.state_correlation_time == pytest.approx(1 / (1 - 0.85), rel=1e-6) + + +def test_slowing_the_chain_lowers_the_no_network_floor(): + cycle_1_floor = belief_r2_floor(*_streams(CYCLE_1)) + slow_floor = belief_r2_floor(*_streams(SLOW)) + + # Cycle 1's parameters leave the metric almost no room. + assert cycle_1_floor > 0.95 + # The slower chain roughly triples what the metric can resolve. + assert (1 - slow_floor) > 2.0 * (1 - cycle_1_floor) + + +def test_slowing_the_chain_also_widens_the_accuracy_range(): + _, cycle_1_test = _streams(CYCLE_1) + _, slow_test = _streams(SLOW) + cycle_1_low, cycle_1_high = accuracy_bounds(CYCLE_1, cycle_1_test) + slow_low, slow_high = accuracy_bounds(SLOW, slow_test) + + assert cycle_1_high - cycle_1_low < 0.03 + assert slow_high - slow_low > 3.0 * (cycle_1_high - cycle_1_low) + # The task has to stay learnable: well above chance. + assert slow_high > 0.5 + + +def test_a_64_observation_context_suffices_at_every_candidate(): + for point in (CYCLE_1, SLOW): + _, test = _streams(point) + scores = context_requirement(point, test, context_lengths=(8, 32, 64)) + assert scores[64] > 0.999, point + assert scores[64] >= scores[32] >= scores[8] + + +def test_slowing_the_chain_costs_independent_probe_samples(): + fast = integrated_autocorrelation(CYCLE_1, n_steps=60_000, seed=3) + slow = integrated_autocorrelation(SLOW, n_steps=60_000, seed=3) + + assert fast < 30.0 + # The precision cost is what a wider metric is traded against. + assert slow > 5.0 * fast + + +def test_a_realistically_collected_probe_has_a_much_wider_interval(): + # Sixteen long trajectories is how `collect_probe_data` gathers a rollout. + # Four thousand short ones is nearly independent sampling, and flatters the + # interval by hiding the correlation a real probe actually incurs. + def interval(n_chains): + fit = simulate_parallel(SLOW, n_steps=20_000, seed=7, n_chains=n_chains) + test = simulate_parallel(SLOW, n_steps=10_000, seed=8, n_chains=n_chains) + low, high = block_bootstrap_interval( + fit, test, window=32, seed=5, resamples=120 + ) + return (high - low) / 2.0 + + assert interval(PROBE_CHAINS) > 2.0 * interval(4_000) + assert interval(PROBE_CHAINS) > 0.005 From 7a9cab7d9e3edde99287abb80ec3e5dbcf56c22a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 27 Jul 2026 06:57:48 +0000 Subject: [PATCH 6/6] Size the context length and the probe from measurement CausalTransformerEncoder bands attention at every layer, so the receptive field is n_layers * context_len. Confirmed by perturbing inputs at increasing distance: three layers at context_len 64 reach exactly 192 observations, while the belief needs about 32. Dropping to context_len 16 leaves a 50% margin, costs nothing measurable in available belief R2 at any candidate operating point, and makes a learner step 3.7x faster, a cached rollout step 3.4x faster, and a whole PPO run 1.6x faster at matched environment steps. Also replace the probe-precision argument with direct replication. Running the identical probe 60 times on fresh rollouts gives a spread of 0.0025 at 30,000 test steps on the slower chain, against 0.0004 at the cycle-1 parameters, and falls to 0.0005 by 500,000 steps. This confirms the moving-block bootstrap, which predicted 0.0047 against a measured 0.0047, and confirms that the i.i.d. bootstrap used in REVIEW.md understates the error whenever the chain is slow. Co-authored-by: Alex Vardakostas --- .../mess3_token_guess_cycle_2/NOTES.md | 11 ++ experiments/mess3_token_guess_cycle_2/PLAN.md | 102 +++++++++++++---- .../operating_point.py | 107 ++++++++++++++++++ .../task_parameters/experiment.py | 24 +++- .../findings.md | 11 +- .../operating_point_grid.png | Bin .../run_manifest.json | 16 +-- .../task_parameters.json | 10 +- .../test_mess3_token_guess_operating_point.py | 56 +++++++++ 9 files changed, 304 insertions(+), 33 deletions(-) rename experiments/mess3_token_guess_cycle_2/task_parameters/results/{20260727T060541Z-53419d82 => 20260727T065519Z-ef24bfec}/findings.md (70%) rename experiments/mess3_token_guess_cycle_2/task_parameters/results/{20260727T060541Z-53419d82 => 20260727T065519Z-ef24bfec}/operating_point_grid.png (100%) rename experiments/mess3_token_guess_cycle_2/task_parameters/results/{20260727T060541Z-53419d82 => 20260727T065519Z-ef24bfec}/run_manifest.json (79%) rename experiments/mess3_token_guess_cycle_2/task_parameters/results/{20260727T060541Z-53419d82 => 20260727T065519Z-ef24bfec}/task_parameters.json (95%) diff --git a/experiments/mess3_token_guess_cycle_2/NOTES.md b/experiments/mess3_token_guess_cycle_2/NOTES.md index dace163b..6f792656 100644 --- a/experiments/mess3_token_guess_cycle_2/NOTES.md +++ b/experiments/mess3_token_guess_cycle_2/NOTES.md @@ -55,6 +55,17 @@ while cross-entropy stays at the Bayes floor. The decline cycle 1 saw over 20M PPO steps is therefore not a property of reinforcement learning, and optimiser and learning rate move the headline metric more than most of the arms do. +Two operational consequences: + +- `CausalTransformerEncoder` bands attention at every layer, so `context_len=64` + over three layers reaches 192 observations while the belief needs about 32. + Dropping to `context_len=16` costs nothing measurable and makes a learner step + 3.7x faster, a cached rollout step 3.4x faster, and a whole PPO run 1.6x + faster. +- A 30,000-step probe of the slower chain has a measurement error of ±0.0025, + the same size as the smallest seed-to-seed spreads. Raise the probe to about + 500,000 test steps, where it falls to ±0.0005. + Regenerate all three with: ```bash diff --git a/experiments/mess3_token_guess_cycle_2/PLAN.md b/experiments/mess3_token_guess_cycle_2/PLAN.md index c1590b40..cb46fca8 100644 --- a/experiments/mess3_token_guess_cycle_2/PLAN.md +++ b/experiments/mess3_token_guess_cycle_2/PLAN.md @@ -42,16 +42,42 @@ Candidate C is my recommendation: about three times the belief-probe range and ten times the accuracy range, while keeping the task clearly learnable at a Bayes-optimal accuracy of 0.68. -The trade is precision. Slowing the chain raises the state correlation time from -7 steps to 133, so a 30,000-step probe rollout collected the way -`collect_probe_data` collects one — sixteen parallel trajectories — contains -roughly 100 independent samples rather than 2,300. The honest block-bootstrap -interval on belief R² widens from ±0.0006 to ±0.0046, and on greedy accuracy to -about ±0.09. +The trade is precision, and it is worth being concrete about why. -That is fixable and cheap, but only if it is noticed: **raise the probe to around -500,000 test steps**. Rollouts cost seconds, so this is the least expensive fix in -the plan and the easiest one to leave out. +The probe number is an estimate, computed from a finite rollout. Two rollouts of +the same checkpoint give two slightly different answers, and the spread between +them is the metric's measurement error. That error depends on how many +*independent* samples the rollout holds, which is not the same as how many steps +it has. On a slow chain the hidden state sits still for hundreds of steps, so +consecutive samples are near-duplicates and a long rollout can carry very little +new information. + +Measured by direct replication — running the identical probe 60 times on fresh +rollouts and taking the standard deviation of the answers: + +| operating point | 30k steps | 120k steps | 500k steps | +|---|---:|---:|---:| +| cycle 1 | 0.0004 | 0.0002 | 0.0001 | +| candidate C | 0.0025 | 0.0012 | 0.0005 | + +At 30,000 steps the slow chain's measurement error is 0.0025, which is the same +size as the smallest seed-to-seed spreads observed in the Kelly cycles. Probe +noise would then be indistinguishable from seed variance, and adding seeds would +not fix it. + +**Raise the probe to around 500,000 test steps**, where the measurement error +falls to 0.0005 and is safely below anything the design needs to resolve. Probe +rollouts are inference only and cost seconds, so this is the cheapest fix in the +plan and the easiest one to omit by accident. + +Two notes on method. The i.i.d. bootstrap used in `REVIEW.md` understates this +error, because resampling individual steps pretends they are independent; a +moving-block bootstrap predicted ±0.0046 at 30k on candidate C and replication +measured ±0.0047. And the simulation behind these numbers does not include the +512-step episode resets the real environment applies, which partially +decorrelate the rollout, so treat 0.0025 as an upper bound and confirm it once +against the real probe by running it repeatedly on a single fixed checkpoint +with different probe seeds. Two consequences follow. Episode length should rise from 512 so that the reset back to a uniform belief is a smaller fraction of each trajectory. And at @@ -154,11 +180,46 @@ Sweeping the learning rate per arm is separately necessary because arms differ i parameter count and in how much auxiliary gradient enters the shared trunk, so an arm can lose by being mis-tuned rather than by being a worse idea. -**Do not sweep:** context length (64 already suffices at every candidate operating -point — the belief saturates by 32 observations), GAE λ (irrelevant at γ = 0, low -leverage at γ = 0.99), batch size, minibatch size, epoch count, clip parameter, -`d_model`, or `n_layers`. Fix these and record them. γ is a scientific factor, -not a nuisance hyperparameter; keep it in the design rather than tuning it away. +**Do not sweep:** context length (see below — shrink it once and fix it), GAE λ +(irrelevant at γ = 0, low leverage at γ = 0.99), batch size, minibatch size, epoch +count, clip parameter, `d_model`, or `n_layers`. Fix these and record them. γ is a +scientific factor, not a nuisance hyperparameter; keep it in the design rather +than tuning it away. + +## 5b. Shrink the context length once, then leave it alone + +`CausalTransformerEncoder` applies its causal band at *every layer*, so the +receptive field is `n_layers × context_len`. Confirmed by perturbing inputs at +increasing distance and watching when the output stops changing: three layers at +`context_len=64` reach exactly 192 observations. The belief needs about 32. + +The cost is paid twice, because the learner recomputes over +`lookback + max_seq_len = 192 + 32 = 224` positions to produce 32 useful +embeddings, and the cached rollout path attends over the same band. + +| context_len | receptive field | learner step | rollout step | belief R² available | +|---:|---:|---:|---:|---:| +| 64 | 192 | 305 ms | 15.9 ms | 1.00000 | +| 32 | 96 | 146 ms (2.1x) | 6.9 ms (2.3x) | 1.00000 | +| 16 | 48 | 82 ms (3.7x) | 4.7 ms (3.4x) | 1.00000 | +| 12 | 36 | 70 ms (4.3x) | 4.6 ms (3.5x) | 0.99997 | +| 8 | 24 | 57 ms (5.4x) | 3.9 ms (4.0x) | 0.99966 | + +Belief R² is at candidate C; candidate B needs more, reaching 0.99983 only at a +receptive field of 48. + +**Use `context_len=16`.** It costs nothing measurable in available belief R² at +any candidate operating point, leaves a 50% margin over what the belief needs, +and keeps the choice valid if α or p move later. `context_len=12` is defensible +if candidate C is locked in, but the extra saving is small. + +`context_len` affects compute only, not capacity — positions are encoded with +RoPE, so the parameter count does not change. + +End-to-end this is worth **1.6x**, measured with a real PPO loop at matched +environment steps. It is less than the 3.4–3.7x component figures because +environment stepping is pure NumPy and unaffected. The split differs on a 4090 +with 16 env runners, so measure it once there before re-budgeting. **Two stages, with disjoint seeds.** Stage 1 sweeps on seeds 0–2 and selects one configuration per arm. Stage 2 re-runs the selected configurations on ten @@ -210,15 +271,18 @@ critic diagnostics. Measured from the committed manifests: a 2.5M-step arm costs 6–14 minutes on an RTX 4090, median about 6.5. Adding eight checkpoint probes puts it near 12. +At `context_len=16` a run costs about 1.6x less than the measured 6–14 minutes, +so budget roughly 7 minutes per run including checkpoint probes. + | stage | runs | GPU-hours | cost at $0.35/hr | |---|---:|---:|---:| -| stage 1 sweep (7 arms × 6 optimiser/lr × 3 coefficient × 3 seeds) | 378 | 76 | ~$27 | -| stage 2 confirmation (16 conditions × 10 seeds) | 160 | 32 | ~$11 | +| stage 1 sweep (7 arms × 6 optimiser/lr × 3 coefficient × 3 seeds) | 378 | 47 | ~$17 | +| stage 2 confirmation (16 conditions × 10 seeds) | 160 | 20 | ~$7 | | references, operating point, audit | — | <1 | — | -| **total** | **538** | **108** | **~$38** | +| **total** | **538** | **67** | **~$24** | -Roughly fourteen wall-clock hours across eight Vast boxes. The entire committed -history of these four studies is 19.4 GPU-hours, so this is about five times all +Roughly nine wall-clock hours across eight Vast boxes. The entire committed +history of these four studies is 19.4 GPU-hours, so this is about three times all prior work on the question, for the price of lunch. `devops.vast.provision up -n N --run "..."` gives one command per box, so the diff --git a/experiments/mess3_token_guess_cycle_2/operating_point.py b/experiments/mess3_token_guess_cycle_2/operating_point.py index 512957cd..c343fac1 100644 --- a/experiments/mess3_token_guess_cycle_2/operating_point.py +++ b/experiments/mess3_token_guess_cycle_2/operating_point.py @@ -173,6 +173,54 @@ def context_requirement( return scores +def receptive_field(*, n_layers: int, context_len: int) -> int: + """Observations the model can actually reach back to. + + ``CausalTransformerEncoder`` applies a causal band of ``context_len`` at every + layer, so stacking them multiplies the reach. The study's ``context_len=64`` + over three layers is a 192-observation receptive field, not 64. + """ + + if n_layers <= 0 or context_len <= 0: + raise ValueError("n_layers and context_len must be positive") + return n_layers * context_len + + +def smallest_sufficient_context_len( + point: OperatingPoint, + test: TokenStream, + *, + n_layers: int = 3, + tolerance: float = 1e-3, + candidates: tuple[int, ...] = (4, 8, 12, 16, 20), +) -> int: + """Smallest ``context_len`` that still reaches the architecture ceiling. + + Compute in both the learner and the rollout path scales with the receptive + field, so anything beyond what the belief needs is paid for and discarded. + + Only candidates whose receptive field fits inside the observation window + recorded on ``test`` can be checked, so widen that window before widening + these candidates. + """ + + testable = [ + context_len + for context_len in sorted(candidates) + if receptive_field(n_layers=n_layers, context_len=context_len) + <= test.windows.shape[1] + ] + if not testable: + raise ValueError("no candidate fits inside the recorded observation window") + for context_len in testable: + field = receptive_field(n_layers=n_layers, context_len=context_len) + if context_requirement(point, test, context_lengths=(field,))[field] >= ( + 1.0 - tolerance + ): + return context_len + return testable[-1] + + def integrated_autocorrelation(point: OperatingPoint, *, n_steps: int, seed: int) -> float: """Sum the belief autocorrelation along a single chain. @@ -242,6 +290,60 @@ def block_bootstrap_interval( return float(low), float(high) +def replicate_probe_r2( + point: OperatingPoint, + *, + fit_steps: int, + test_steps: int, + replicates: int, + seed: int, + window: int = 32, +) -> np.ndarray: + """Re-run the whole probe on fresh rollouts and return every answer. + + This measures the metric's precision by direct replication rather than by + resampling one rollout, so it needs no assumption about the correlation + structure and can be used to check that a bootstrap is not lying. + """ + + scores = [] + for index in range(replicates): + offset = seed + 1_000 * index + fit = simulate_parallel( + point, n_steps=fit_steps, seed=offset, n_chains=PROBE_CHAINS + ) + test = simulate_parallel( + point, n_steps=test_steps, seed=offset + 500_000, n_chains=PROBE_CHAINS + ) + score, _ = _probe_r2( + _one_hot(fit.windows, window), + fit.beliefs, + _one_hot(test.windows, window), + test.beliefs, + ) + scores.append(float(score)) + return np.array(scores) + + +def probe_steps_for_spread( + measured_spread: float, + *, + measured_steps: int, + target_spread: float, +) -> int: + """Probe steps needed for a target spread, assuming the usual 1/sqrt(n). + + Verified against replication at 30k, 120k and 500k steps, where the observed + spread does fall as the square root of the step count. + """ + + if measured_spread <= 0.0 or target_spread <= 0.0: + raise ValueError("spreads must be positive") + if target_spread >= measured_spread: + return measured_steps + return int(np.ceil(measured_steps * (measured_spread / target_spread) ** 2)) + + def evaluate( point: OperatingPoint, *, @@ -265,6 +367,7 @@ def evaluate( point, n_steps=test_steps, seed=seed + 5, n_chains=PROBE_CHAINS ) low, high = block_bootstrap_interval(probe_fit, probe_test, window=32, seed=seed + 3) + smallest_context = smallest_sufficient_context_len(point, test) return { "alpha": point.alpha, "self_transition": point.self_transition, @@ -275,6 +378,10 @@ def evaluate( "accuracy_ceiling": accuracy_ceiling, "accuracy_range": accuracy_ceiling - accuracy_floor, "context_requirement": context_requirement(point, test), + "smallest_sufficient_context_len": smallest_context, + "smallest_sufficient_receptive_field": receptive_field( + n_layers=3, context_len=smallest_context + ), "integrated_autocorrelation": tau, "effective_sample_size": test_steps / tau, "probe_block_bootstrap_ci": [low, high], diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py b/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py index 2aeebe55..8aed5d99 100644 --- a/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py @@ -122,10 +122,26 @@ def _findings(result: dict[str, Any]) -> str: lines.extend( [ "", - "The study's context length of 64 is sufficient at every candidate, so " - "it does not need sweeping. The belief converges much faster than the " - "hidden state does, because each observation is informative enough to " - "wash out the prior well before the state decorrelates.", + "`CausalTransformerEncoder` applies its causal band at every layer, so " + "the receptive field is `n_layers * context_len`. The study's " + "`context_len=64` over three layers reaches 192 observations, roughly " + "six times what the belief needs. Compute in both the learner and the " + "cached rollout path scales with that reach.", + "", + "| point | smallest sufficient context_len | receptive field |", + "|---|---:|---:|", + ] + + [ + f"| `{name}` | {entry['smallest_sufficient_context_len']} | " + f"{entry['smallest_sufficient_receptive_field']} |" + for name, entry in result["candidates"].items() + ] + + [ + "", + "Measured on this repository's model: dropping `context_len` from 64 to " + "16 makes a learner step 3.7x faster and a cached rollout step 3.4x " + "faster, for an end-to-end PPO speed-up of 1.6x once environment " + "stepping, which does not change, is included.", "", "## Supervised ceiling", "", diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/findings.md similarity index 70% rename from experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md rename to experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/findings.md index 0891160c..06436553 100644 --- a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/findings.md +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/findings.md @@ -22,7 +22,16 @@ Best belief R² available to a model that can see only the last k observations. | `candidate_b` | 0.7623 | 0.9431 | 0.9965 | 1.0000 | | `candidate_c` | 0.9232 | 0.9951 | 1.0000 | 1.0000 | -The study's context length of 64 is sufficient at every candidate, so it does not need sweeping. The belief converges much faster than the hidden state does, because each observation is informative enough to wash out the prior well before the state decorrelates. +`CausalTransformerEncoder` applies its causal band at every layer, so the receptive field is `n_layers * context_len`. The study's `context_len=64` over three layers reaches 192 observations, roughly six times what the belief needs. Compute in both the learner and the cached rollout path scales with that reach. + +| point | smallest sufficient context_len | receptive field | +|---|---:|---:| +| `cycle_1` | 4 | 12 | +| `candidate_a` | 8 | 24 | +| `candidate_b` | 16 | 48 | +| `candidate_c` | 8 | 24 | + +Measured on this repository's model: dropping `context_len` from 64 to 16 makes a learner step 3.7x faster and a cached rollout step 3.4x faster, for an end-to-end PPO speed-up of 1.6x once environment stepping, which does not change, is included. ## Supervised ceiling diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/operating_point_grid.png similarity index 100% rename from experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png rename to experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/operating_point_grid.png diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/run_manifest.json similarity index 79% rename from experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json rename to experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/run_manifest.json index c267c9c8..eb0a4aad 100644 --- a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/run_manifest.json +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/run_manifest.json @@ -8,12 +8,12 @@ "file": "/workspace/uv.lock", "sha256": "986725e46af5252423583fe947d30b2646f541a4863acb8c51d578a7ca1b8220" }, - "ended_at": "2026-07-27T06:06:20.805347+00:00", + "ended_at": "2026-07-27T06:55:55.380651+00:00", "error": null, "experiment": { "file": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/experiment.py", "module": "experiments.mess3_token_guess_cycle_2.task_parameters.experiment", - "source_sha256": "c59ebbce428c97c674639bb1d7eaf5b0eeb38a12ddaee52dcf8366aae864e02d" + "source_sha256": "0de4d683e821de377b3cfa9bd0036b37ea6217262f0a43632d152204aac507b3" }, "framework_versions": { "gymnasium": "1.2.2", @@ -24,10 +24,10 @@ "torch": "2.12.1" }, "git": { - "commit": "ee4095babf540e59e7add42395ac8ead5f6c6ec8", + "commit": "d790369e770a98ac118709c8bed484375415f998", "dirty": true, "experiment_repository": { - "commit": "ee4095babf540e59e7add42395ac8ead5f6c6ec8", + "commit": "d790369e770a98ac118709c8bed484375415f998", "dirty": true, "root": "/workspace" }, @@ -54,9 +54,9 @@ "torch_threads": null } }, - "run_id": "20260727T060541Z-53419d82", + "run_id": "20260727T065519Z-ef24bfec", "runtime": { - "artifacts_dir": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/artifacts/20260727T060541Z-53419d82", + "artifacts_dir": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/artifacts/20260727T065519Z-ef24bfec", "overrides": { "hardware_profile": "auto", "resume_from": null, @@ -64,12 +64,12 @@ "smoke": false, "upload_artifacts": false }, - "results_dir": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82", + "results_dir": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec", "resume_from": null, "seed": 42, "smoke": false }, "schema_version": 2, - "started_at": "2026-07-27T06:05:42.001317+00:00", + "started_at": "2026-07-27T06:55:19.583001+00:00", "status": "completed" } diff --git a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/task_parameters.json similarity index 95% rename from experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json rename to experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/task_parameters.json index 24a8c63a..9f735818 100644 --- a/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/task_parameters.json +++ b/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/task_parameters.json @@ -22,6 +22,8 @@ "probe_ci_half_width": 0.0036841656877789064, "probe_rank": 2, "self_transition": 0.99, + "smallest_sufficient_context_len": 8, + "smallest_sufficient_receptive_field": 24, "state_correlation_time": 66.66666666666612 }, "candidate_b": { @@ -46,6 +48,8 @@ "probe_ci_half_width": 0.006106949676209283, "probe_rank": 2, "self_transition": 0.995, + "smallest_sufficient_context_len": 16, + "smallest_sufficient_receptive_field": 48, "state_correlation_time": 133.33333333333223 }, "candidate_c": { @@ -70,6 +74,8 @@ "probe_ci_half_width": 0.004552167314833988, "probe_rank": 2, "self_transition": 0.995, + "smallest_sufficient_context_len": 8, + "smallest_sufficient_receptive_field": 24, "state_correlation_time": 133.33333333333223 }, "cycle_1": { @@ -94,10 +100,12 @@ "probe_ci_half_width": 0.0005696590960750925, "probe_rank": 2, "self_transition": 0.9, + "smallest_sufficient_context_len": 4, + "smallest_sufficient_receptive_field": 12, "state_correlation_time": 6.6666666666666705 } }, - "figure": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T060541Z-53419d82/operating_point_grid.png", + "figure": "/workspace/experiments/mess3_token_guess_cycle_2/task_parameters/results/20260727T065519Z-ef24bfec/operating_point_grid.png", "grid": { "0.5_0.9": { "accuracy_ceiling": 0.3857333333333333, diff --git a/tests/test_mess3_token_guess_operating_point.py b/tests/test_mess3_token_guess_operating_point.py index 2f968706..ecbcc730 100644 --- a/tests/test_mess3_token_guess_operating_point.py +++ b/tests/test_mess3_token_guess_operating_point.py @@ -13,7 +13,11 @@ block_bootstrap_interval, context_requirement, integrated_autocorrelation, + probe_steps_for_spread, + receptive_field, + replicate_probe_r2, simulate_parallel, + smallest_sufficient_context_len, ) CYCLE_1 = OperatingPoint(alpha=0.85, self_transition=0.90) @@ -71,6 +75,58 @@ def test_a_64_observation_context_suffices_at_every_candidate(): assert scores[64] >= scores[32] >= scores[8] +def test_receptive_field_multiplies_the_band_by_the_layer_count(): + # CausalTransformerEncoder applies the band at every layer, so the study's + # context_len of 64 over three layers reaches 192 observations. + assert receptive_field(n_layers=3, context_len=64) == 192 + assert receptive_field(n_layers=3, context_len=16) == 48 + assert receptive_field(n_layers=1, context_len=16) == 16 + for bad in ({"n_layers": 0, "context_len": 8}, {"n_layers": 3, "context_len": 0}): + with pytest.raises(ValueError): + receptive_field(**bad) + + +def test_the_study_context_len_is_far_larger_than_the_belief_needs(): + for point in (CYCLE_1, SLOW): + _, test = _streams(point) + smallest = smallest_sufficient_context_len(point, test) + assert smallest <= 16, point + # Well inside the 192-observation reach the study currently pays for. + assert receptive_field(n_layers=3, context_len=smallest) <= 48 + + +def test_smallest_sufficient_context_len_needs_a_wide_enough_window(): + _, test = _streams(SLOW) + narrow = simulate_parallel(SLOW, n_steps=2_000, seed=3, window=8) + assert smallest_sufficient_context_len(SLOW, test) >= 4 + with pytest.raises(ValueError): + smallest_sufficient_context_len(SLOW, narrow, candidates=(16, 20)) + + +def test_replication_confirms_the_slow_chain_is_the_noisier_probe(): + fast = replicate_probe_r2( + CYCLE_1, fit_steps=20_000, test_steps=10_000, replicates=8, seed=1 + ) + slow = replicate_probe_r2( + SLOW, fit_steps=20_000, test_steps=10_000, replicates=8, seed=1 + ) + assert slow.std(ddof=1) > 3.0 * fast.std(ddof=1) + + +def test_probe_steps_for_spread_follows_the_square_root_law(): + # Measured by replication: +/-0.0025 at 30,000 steps on the slow chain. + assert probe_steps_for_spread( + 0.0025, measured_steps=30_000, target_spread=0.0005 + ) == pytest.approx(750_000, rel=0.01) + # Never asks for fewer steps than were already run. + assert ( + probe_steps_for_spread(0.0005, measured_steps=30_000, target_spread=0.002) + == 30_000 + ) + with pytest.raises(ValueError): + probe_steps_for_spread(0.001, measured_steps=30_000, target_spread=0.0) + + def test_slowing_the_chain_costs_independent_probe_samples(): fast = integrated_autocorrelation(CYCLE_1, n_steps=60_000, seed=3) slow = integrated_autocorrelation(SLOW, n_steps=60_000, seed=3)