§0 はじめに — このページが何を見せるのか
§0.1 前提となる用語 (背景知識ゼロでも読めるように)
rubric.json という採点ツリー (例: 94 〜 2551 ノード) が付属し、各ノードに 0–100 スコアと重みが付く。§0.2 出発点: 1 論文で再現スコア 0.5 だった
結果ページ §3 で見せた最初の実走 (論文: Stochastic Interpolants) では、3 件の数値主張 (FID 系) のうち 3 件全てが untested でした。Pipeline は最後まで完走しているのに、生成コードが論文の Table の数値を出さない構造に なっていたためです。 hierarchical_score 0.5 という数字は、untested の partial credit (当時 0.5) で底上げされた値で、 実質的には「動いたが何も検証できていない」状態に近い。これを起点に Reproduce Pipeline を本格的に強化することにしました。
§0.3 4 つの改善 — 何をどう直すか
上記の 5 stage のうち、ボトルネックになっていた 3 つの Stage に対する 4 件のコード改善を入れました。各改善が 「どの Stage の、何を直すか」「改善前は何が起きていたか」「改善後どう変わるか」を簡潔に:
| 改善 | 対象 Stage | 改善前 → 改善後 |
|---|---|---|
| ① metric alias 拡張 | Stage 5 (Verification) | 論文の "FID-50k" を捕捉できる metric 名の辞書を 12 → 40+ に拡張。改善前は "FID" としか書かれていない数値主張を取りこぼしていた。 |
| ② success 厳密化 | Stage 4 (Execution) | 「returncode=0 だが silent failure (RuntimeError スルー、shape mismatch 等)」を success と誤判定する問題を修正。 |
| ③ pdfplumber 導入 | Stage 1 (Paper Fetching) | PyPDF2 → pdfplumber に切替えて Table 抽出を可能にした。改善前は本文 text のみ、改善後は Table の数値も Claude に渡る。 |
| ④ max_tokens 緩和 | Stage 2 (Code Finding) | Claude のコード生成上限を 8192 → 16384 tokens に拡張。改善前は複雑な論文で生成コードが途中で切れていた。 |
§0.4 §1 で出てくる「改善前 (baseline) / 改善後 (improved)」とは何か
- baseline (改善前) = 上記 4 改善を入れる前の reproduce repo (main branch) で、同じ論文・同じ rubric を採点した hierarchical_score
- improved (改善後) = 4 改善を入れた branch (
reproduce/strengthen-2026-04-30) で、同じ論文・同じ rubric を採点した hierarchical_score - 同じ論文 × 同じ judge × 同じ rubric.json で測るので、改善前 / 改善後の 差分 (Δ) が「4 改善が hierarchical_score をどれだけ動かしたか」を直接表す
- 1 論文だけだと偶然の可能性があるので、PaperBench から 5 論文を選んで × 2 variants = 10 evaluations を回した
§0.5 このページの構成
- §1 改善前 / 改善後 — 5 論文での比較 — 5 論文の hierarchical_score を bar chart と表で。 (= 人間 + Claude が今回の強化ラウンドで出した結果)
- §2 4 つのコード改善 — 何をどう直したか — 各改善のコード差分と効いたケース・効かなかったケース。
- §3 失敗ケースの正直な開示 — 改善後でも伸びなかった論文の理由 (arxiv_id 取り違え / Code-Dev mode の特性 / Claude 生成の確率性)。
- §4 並行実験 — agent に同じ問題を解かせる — 同じタスクを ARA に解かせた結果。 (= 人間 +3.6pt / バグ 0 件 vs agent +24.3pp / バグ 4 件 の比較)
- §6 パイプラインレベル改善実験 — 「再現はどうあるべきか」を 4 mode 横並び比較で問い直す (NEW、rubric-aware は厳密には spec-disclosed reproduction であり、test-leakage に近い構造を持つ点を §6.5 で明示)
- §7 次の一手 — まだ着手していないこと、次の方向性。
§1 改善前 / 改善後 — 5 論文での比較
§0.3 で挙げた 4 改善を入れる前 (baseline) と入れた後 (improved) の hierarchical_score を、PaperBench から選んだ 5 論文で並べて比較します。 ※ baseline / improved の定義は §0.4 を参照。
- Mode: PaperBench Code-Dev (生成コードのみを採点、実行不要、GPU 不要)
- Judge model: claude-sonnet-4-20250514 (公式 SimpleJudge は GPT-4o だが、コスト的に Sonnet を使用)
- baseline: 改善前のコード (main branch)
- improved: 4 改善を適用したコード (reproduce/strengthen-2026-04-30 branch)
- 選んだ 5 論文: PaperBench 23 論文のうち、rubric ノード数が比較的小さい 5 件 (stochastic-interpolants 94 / semantic-self-consistency 100 / sequential-neural-score-estimation 123 / mechanistic-understanding 128 / robust-clip 146)。今回のラウンドのスコープでは全 23 論文を回しきらず、まず代表 5 件で baseline と improved を 1:1 比較できる体系を作ることに絞った。
進行状況
① 改善前/後 スコア比較(チャート)
② 詳細表
| 論文 | nodes | baseline | improved | Δ | 状態 |
|---|
§2 4 つのコード改善 — 何をどう直したか
再現スコア 0.5 の主な原因 4 つに対する具体的な対策。各改善のファイル変更とロジックを示します。
§3 失敗ケースの正直な開示
改善後でもスコアが伸びなかった論文・ノードがあれば、その原因と理由を開示します。
事例 1: arxiv_id の取り違え(バッチ第 1 回時の発覚)
バッチ第 1 回(2026-04-30 17:58 起動)で、5 論文中 2 件で arxiv_id を推測値で hardcode していたために別の論文を fetch していたことが判明しました。
paperbench-data/ 配下の config.yaml に arxiv_id が含まれていなかったため、title から推測したのが裏目に出ました。
- semantic-self-consistency: 推測
2402.05904→ 実際は "FACT-GPT: Fact-Checking..." という別論文をフェッチ。正しくは2410.07839 - mechanistic-understanding: 推測
2305.00586→ 実際は "How does GPT-2 compute greater-than?..." という近いが違う論文。正しくは2401.01967
発覚後 WebSearch で正しい arxiv_id を取得し、第 2 回バッチで再走。これは「測定インフラの完成度を上げないと改善効果が見えない」典型例。
事例 2: PaperBench Code-Dev mode の評価特性
今回の評価は Code-Dev mode(生成コードを judge にかける、実行不要)で行いました。この mode では:
- 改善 ① metric alias 拡張: 実行ベースの metric 抽出に効くため、Code-Dev では効果薄
- 改善 ② success 厳密化: 同じく実行ベースなので Code-Dev では効果薄
- 改善 ③ pdfplumber: 論文 Table の数値を Claude に渡すので、生成コードの正確性向上に直接効く ✓
- 改善 ④ max_tokens 緩和: 生成コードの cut-off 緩和、複雑な論文ほど効く ✓
つまり 4 改善のうち Code-Dev mode で効くのは ③ と ④ の 2 件。①② を効かせるには Full mode(実際に実行して数値検証)が必要で、これは GPU + 環境構築コストが跳ね、明日の発表 scope 外としました。
事例 3: Claude 生成の確率性
Stochastic Interpolants の smoke test(improved 1 回目)= 36.49%、本番バッチ(improved 2 回目)= 49.53% と、同じ prompt でも結果が大きく変動します。これは Claude が確率的にコードを生成するため。 絶対値の比較ではなく、baseline と improved の差分を見ることに意味があります。バッチでの差分は +0.94 で、5 論文中で最も小さい改善幅でした。
本日測定での個別ケース
§4 並行実験 — agent に同じ問題を解かせる
「Reproduce Pipeline を強くする」というタスクを、人間の手作業 (上記 §1〜§3) と並行して、 自律研究エージェント (ARA) にも独立に解かせました。 同じ問題を 3 つの主体に並列で投げる 構図で、結果を比較します。
§4.1 実験構図
同じ research question に対して、3 主体が独立に取り組みます。主体 A は人間が Claude と一緒に Reproduce Pipeline 本体を改善する流れ。
主体 B / C は scripts/new-research.sh で runs/<name>/ に完全コピー scaffold
(.claude + skills + workspace + 独立 git) され、元 repo
(autonomous-research-agent, research-prime, autores/reproduce) は読み取りのみ。
改善案は ARA project 内 experiments/ に閉じます。
PaperBench Code-Dev で
hierarchical_score を上げる] Q --> A[主体 A
人間 + Claude
強化ラウンド] Q --> B[主体 B
ARA harness × ARA 15 skills
自律 2 cycle] Q --> C[主体 C
ARA harness × research-prime 123 skills
cycle 1 半 で harness 早期 exit] A --> RA[5 論文バッチ再測定
mean +3.6 pt] B --> RB[既存バグ 4 件発見
+ H4 仮説 +24.3 pp on subset] C --> RC[failure 4 クラスタ分類
+ Layer 0 validator 2 件
CLIIntrospector F2 実証] RA --> M[メタ比較
同じ問題、別の解き方、別の答え] RB --> M RC --> M classDef question fill:#fff8e1,stroke:#f9a825,stroke-width:2px; classDef human fill:#e8f0ff,stroke:#3a7; classDef agent fill:#f0fff4,stroke:#0066cc; classDef meta fill:#fce4ec,stroke:#c2185b,stroke-width:2px; class Q question class A,RA human class B,C,RB,RC agent class M meta
§4.2 出てきたものを並べる — 改善幅 / 既存バグ発見数 / Claim 数
3 主体が同じ research question に対して何を返してきたかを 3 つの軸で並べます。 改善幅は 単位が主体ごとに異なる ことに注意 — 主体 A は 5 論文 mean の pt 差分、 主体 B は 1 論文 rubric subset での pp 差分。絶対値の比較ではなく、 「人間は測定インフラを底上げした」「agent は人間が見落としたバグと深い改善仮説を出した」 という質の違いを見るためのプロットです。
改善幅 (単位は主体ごとに異なる)
発見した既存バグ件数
登録された Claim 数 (Belief Store)
§4.3 ARA が見つけた既存バグ 4 件
主体 B (ARA 15 skills) が、人間 + Claude の強化ラウンドが見落としていた既存 reproduce repo のコード問題を 4 件発見しました。すべて Belief Store の Claim として記録され、対応する Evidence が ledger に紐付いています。
§4.4 H4 仮説の per-node breakdown — どこが効いたか
主体 B が立てた H4 仮説 (Stage 2 prompt から "simplify" / "standard datasets" の指示を除き、論文固有の dataset と
すべてのタスクを明示する) を、stochastic-interpolants の rubric subset 7 ノードで実機検証した結果です。
生成は anthropic.Anthropic() で実コード生成、judge は claude-sonnet-4-6。
各ノードのスコア (0〜100) を baseline (現行 prompt) と H4 (修正 prompt) で対比します。
baseline vs H4 — 7 ノードのスコア
§4.5 ARA-p が抽出した failure taxonomy 4 クラスタ
主体 C (research-prime 123 skills) は cycle 途中で harness 早期 exit したため数値結果には届きませんでしたが、
Researcher セッションが 5 論文 baseline の生ログ (_master.json, report.json, stderr) を直接精読し、
失敗パターンを 4 クラスタに自動分類しました。これは「次にどこに介入すべきか」の優先順位付けに直結します。
クラスタ別頻度
クラスタの内訳
§4.6 CLIIntrospector が捕えた具体例 (主体 C の F2 実証)
Layer 0 validator の 1 つ。--help の出力を parse して subcommand 構造を学習し、
argparse の文法に合った形で実行コマンドを組み立て直す。robust-clip の実コードで動作確認済み:
§4.7 Self-Evaluator が flag した誇張 — 信頼性の自己校正
ARA は Researcher → Evaluator → Reviewer → Improver の 4-phase ループ。 同じセッション内で Evaluator が Researcher の主張を読み直し、誇張・未検証の項目を flag します。 これは「agent が自分の出力を盛らない」ための内蔵 mechanism で、今夜の run でも以下が flag されました:
§6 パイプラインレベル改善実験 — 「再現はどうあるべきか」を実装で問い直す
§1〜§3 の改善は「細かい修正」レベル (metric alias / pdfplumber / max_tokens など) でした。 §4 で並行実験した ARA は人間が見落としていた既存バグを 4 件指摘してくれましたが、 これだけでは「再現とは何をすることか」というパイプラインレベルの設計が問われていません。 §6 では ARA-提案 fix を実際に reproduce repo に取り込み、 さらに 「再現はこうあるべきだ」を実装に落とした新 mode (rubric-aware Stage 2) を作って、 4 mode 横並びで比較します。
§6.1 再現に求められる 4 つの "ought-to"
§1〜§5 を踏まえて、Reproduce Pipeline が「本来こうあるべき」だが今は出来ていない 4 つの方向性を明示します。 今回の §6 ではこのうち rubric-ground / decompose を本実験に組み込み、verify / iterate は次の一手として開示します。
§6.2 ARA → Pipeline 対応表 — どの提案がどこに入ったか
§4 で並行実験した ARA が出した 4 件の提案を、実 reproduce repo にどう取り込んだかの mapping です。
C-008 / C-010 (evaluator バグ) と H4 + C-011 (Stage 2 prompt scope failure) を ara-fixes / rubric-aware
両 mode に組み込みました。C-007 (code dir selection) は実装規模が大きく今夜は scope 外。
| ARA Claim | 内容 | 取り込み先 | 修正ファイル |
|---|
§6.3 4 mode 横並び比較
同じ 5 論文を 4 mode で評価しました: baseline (改善前 / main branch) → improved (4 改善 / strengthen branch) → ara-fixes (improved + ARA 3 fix を pipeline に取込) → rubric-aware (ara-fixes + Stage 2 prompt に rubric leaf 要件 checklist を直接注入)。 右側ほど「パイプライン設計の根本介入」が強くなる順で並べています。
5 論文 × 4 mode の hierarchical_score
4 mode の mean (5 論文平均)
各論文の "best mode"
§6.4 学び — どの ought-to が効いたか
§6.5 方法論として残るもの — と重要な caveat
rubric-aware mode では、本来 judge が採点に使う rubric.json の leaf 要件を
生成 prompt に事前に注入 しています。これは ML 的な厳密な意味での
「train で test set を使う」(モデルのパラメータを test ラベルで更新する) ではありません — Claude のパラメータは触っていません。
しかし 「採点される項目を agent に事前に見せている」という意味で test-disclosure / spec-disclosure ではあります。
生成側と採点側がさらに 同じモデルファミリ (claude-sonnet-4) なので、表現一致 (same-language matching) も起きやすい。
したがって rubric-aware の絶対スコアを baseline / improved / ara-fixes と単純比較するのは不公平 です。 意味があるのは:
- ara-fixes vs baseline / improved — rubric-blind 同士の比較。 fix の純粋な効き方を測れる。
- rubric-aware vs ara-fixes — 「rubric を見せた」効果の大きさを測れる。これが「spec-disclosed agent はどれだけ得をするか」を表す。
benchmark 文脈では、rubric を見せること自体は PaperBench 公式が想定している使い方ではない 可能性が高く、 厳密な leaderboard 比較は ara-fixes 以下のモードでのみ行うべきです。 rubric-aware は「もし spec を渡せたらどこまで上がるか」の上限値推定として読むのが安全です。
それでも残る方法論
これは Reproduce Pipeline を超えて、AutoRes グループ全体の方法論として転用可能です: Self-Improving Agent が探索する仮説空間にも「測定 metric の構造を agent に教える」フェーズが 同じように使えるはずです。 ただし benchmark 評価では rubric を隠すべき、という線引きを明確に持つ必要があります。
公正な比較に近づけるための次のステップ
- Held-out rubric leaves: 全 leaf のうち 50% だけを agent に渡し、残りは隠して評価する。隠した leaf 上のスコアが上がっていれば「真の改善」、上がっていなければ「単に見せた項目だけ pass している」。
- Cross-model judge: 生成は claude-sonnet-4、採点は GPT-4o (PaperBench 公式) など別モデルにすることで、表現一致による上振れを切り分ける。
- Lexical overlap measurement: 生成コード中の token と rubric leaf 文字列の overlap を測り、「prompt の指示語をそのままコメントに書いている」だけのケースを発見できる。
§7 次の一手 — まだ着手していないこと
今回のラウンドで進めたのは「最も効きそうな所」「複数論文での測定」「§4 並行実験」「§6 パイプラインレベル介入」。次に取り組むべき項目を正直に列挙します。
近い課題
| 全 23 論文での測定 | 本日は 5 論文(小規模)。残り 18 論文(pinn 2551 nodes、lbcs 1471 nodes 等含む)を測定すれば、改善の汎用性を検証できる。 |
|---|---|
| Stage 2 の prompt 改善 | 現状 architecture が簡略化されすぎ、validation set が欠落、bug 入りコードが生成される。few-shot example + dataset preparation の明示で改善可能。 |
| NRR の Reproduce 統合 | Self-Improving Agent で実証済みの NRR(Negative Result Repository)を Reproduce にも組み込み、「同じ環境エラーを二度しない」「失敗した方向の再生成を抑制」を実装。 |
| 公式 GPT-4o SimpleJudge への切替 | PaperBench 公式は GPT-4o-2024-08-06 を judge に使う。我々は claude-sonnet-4。絶対値の比較可能性を上げるなら切替が必要。コスト約 2 倍。 |
もう一段先の課題
| Full mode 評価 | Code-Dev は静的評価。Full mode は実際に実行して数値一致まで検証する。GPU 必要、コストも跳ねる。EnvBench / PRBench との統合的な比較が可能になる。 |
|---|---|
| Stage 3 env builder の本格改善 | 業界 SOTA でも 7% 未満の成功率。conda + uv の hybrid、CUDA バージョン管理、Docker レス再現性など最大のフロンティア。 |
| Stage 1 を Mistral OCR or Adobe Extract API に | pdfplumber でも image-only な Table/Figure は取れない。OCR API への切替で論文の数値抽出精度を上げる。 |
AutoRes グループとして見据える方向
Reproduce Pipeline 自体を AutoRes の研究エコシステムに組み込み、 「論文発見(Literature Scout) → 再現(Reproduce) → 改善(PaperBench Iter) → 自動探索(Self-Improving)」 の end-to-end ループを 24/365 で回す。各論文の再現結果が NRR に蓄積され、次の探索を方向づける。 これが我々の AI Scientist の最終形です。
§4 の並行実験で「agent にループを閉じさせる」ことの初歩的な手応えが取れたので、 「人間が改善案を考えて実装する」フェーズを、できるだけ早く agent (ARA + research-prime) に渡してしまう のが現実的な経路だと考えています。 ARA が見つけた 4 バグ + H4 を実コードに取り込み、その効果を 5 論文 → 23 論文へと拡大 しながら、ARA の出力を直接 reproduce repo の PR に流す自動橋渡しを作るのが課題です。
この Deep Dive は何のためか
AutoRes グループが取り組んでいる「研究の自動化」のうち、論文再現は最も重要かつ未解決な部分です。
業界全体で end-to-end の数値一致は 0%(PRBench)、環境構築の成功率は < 7%(EnvBench)。
本 Deep Dive は、この絶望的な数字に対して我々の今のラウンドで何ができたか・何が見えたかを正直に共有するものです。
改善前 0.5 → 改善後 X% という結果が、絶対値としては小さくとも、
「複数論文で測定可能な体系」と「正直なボトルネック分析」、そして
「agent に同じ問題を投げて何が返ってくるかを測る」という メタな実験フレーム
を AutoRes グループに提供することが目的です。