2026-08-20 機械学習勉強会

今週のTOPIC

※ [paper] [blog] など何に関するTOPICなのかパッと見で分かるようにしましょう。
技術的に学びのあるトピックを解説する時間にできると🙆(AIツール紹介等はslack channelでの共有など別機会にて推奨)
出典を埋め込みURLにしましょう。

@Naoto Shimakoshi

[paper] HarnessOpt-Bench: Evaluating LLMs at Harness Optimization

  • ACL 2026 Open Review

概要

LLM がエージェントシステムに組み込まれるようになった今、その能力を決めるのはモデルの重みだけではない。プロンプト、ツール定義、制御フロー、メモリ、オーケストレーションコード、—これらを総称した ハーネス (harness) が同じくらい効いてくる。同じモデルでもハーネスが違えば性能は大きく変わる。
そこで本論文は、ハーネス最適化 (harness optimization)「AI システムが評価フィードバックを見ながら反復的にハーネスを改善する」という営みを LLM の測定可能な能力 として定式化し、ベンチマーク HarnessOpt-Bench を提案する。
optimizer(LLM + コーディングハーネス)が、対象エージェントの seed harness、採点済みの評価フィードバック、固定の評価予算を受け取る。optimizer はハーネスを編集し、最終候補を1つ指名する。その候補は、探索中ずっとアクセス不能な held-out test partition 上で、seed からの 正規化ゲイン (normalized gain) によって採点される。
5つのフロンティア LLM を、共通ハーネスと各モデルのネイティブハーネスの両方で、4つの下流タスクにわたり評価し、111 の採点済み run を得た。
主な結果は3点:
  1. optimizer モデルの差は、経由するコーディングハーネスの差より大きい(約 1.8 倍)
  1. ネイティブハーネスは一貫して優位ではない(20 ペア中 11 勝 9 敗)
  1. ゲインはタスクと seed の性質によって大きく変動する

なぜ「ハーネス最適化」が固有の難しさを持つのか

本論文の議論の核心は、「1回の信頼できる評価のコスト」がこの問題の性質を決めるという点にある。
  • 通常のコーディング: テストスイートが安価に「その変更は正しいか」を返す
  • ハーネス最適化: 変更の効果を知るには、確率的なエージェントを多数のケースで実行しなければならず、コストが高くノイズも乗る

ベンチマークスイート

すべての seedハーネス は「小さく、意図的にチューニングされていない Python ハーネス」で、明白な伸びしろを残している。4つ中3つは competent but naive(例: OfficeQA の seed は OpenAI API 上の約130行のエージェントで、ツール3つ、24ターンループ、汎用システムプロンプト)。GAIA だけは 非機能スタブである。
タスクtarget modelsplit (d/v/t)seed スコア最良 off-the-shelf
OfficeQA Prodeepseek-v4-flash49/98/990.341 ±0.0230.734 (mini-swe-agent)
BrowseComp-Plusdeepseek-v4-flash33/66/660.462 ±0.0200.701 (mini-swe-agent)
Terminal-Bench 2.0grok-build17/36/360.241 ±0.0090.607 (opencode)
GAIA(非機能スタブ)gpt-5.4-mini33/66/660.0000.508 (openhands-sdk)
split は正確に 20/40/40 で重複なし。±は3ラウンド平均の標準誤差(再実行のばらつきであり、ケース間のばらつきではない)。タイムアウトは各ベンチマークの仕様どおり 0 点として計上。
GAIA だけは baseline が実測ゼロなので、そこでのゲインは生の held-out スコアそのものになる。つまり「有能なエージェントを改善する」のではなく「動くエージェントをゼロから構築する」能力を測っている。

全体結果: 正規化ゲイン(seedからの伸びしろ)

ModelOptimizer harnessOfficeQABrowseComp-PlusTerminal-BenchGAIA
resolution band±0.045±0.066±0.054±0.035
claude-opus-5claude-code0.590.410.180.42
claude-opus-5opencode0.630.480.290.47
claude-sonnet-5claude-code0.530.070.100.33
claude-sonnet-5opencode0.510.150.150.25
gpt-5.6-solcodex0.490.030.120.49
gpt-5.6-solopencode0.290.090.130.31
gpt-5.6-terracodex0.07−0.030.010.30
gpt-5.6-terraopencode0.140.020.040.17
kimi-k3kimi-cli0.590.230.160.31
kimi-k3opencode0.410.160.120.28

RQ1: フロンティアモデルは区別できるか

モデル選択の効果はコーディングハーネス選択の効果より大きい。
  • タスクとハーネスを固定してモデルを変えると、ゲインは平均 0.142 動く
  • タスクとモデルを固定してハーネスを変えると、ゲインは平均 0.079 動く
  • モデルのコントラストは約 1.8 倍大きい
LSS-λ(m) :タスクの影響を除いたうえで、optimizer モデルを差し替えることの価値を正規化ゲイン単位で表したもの。高いほど良い。

RQ2: 現在の optimizer はどこで力不足か

① 広く探索するほどゲインが大きい

他タスクを見る前に OfficeQA 上で8つのハーネスレバーを事前定義した:
プロンプト / コンテキスト管理 / ステップ上限 / リトライ・タイムアウト方針 / ツールスキーマ / 回答抽出 / 検索方針 / reasoning effort
探索中に触れたレバーの割合は、4タスクすべてでゲインと正の相関(Spearman ρ = +0.34 〜 +0.88)。他のどのプロセス指標も4タスク全部で同じ向きにはならなかった。

② トレース読解はゲインと関連しない

評価出力の読解に費やされたアクションの割合は、4タスクすべてでゲインと負の相関(−0.31 〜 −0.64)。
optimizer は主にケース単位のスコアサマリに依存しており、詳細なトレーススパンの要求は 111 セル中 7 セルによる 16 回のみだった。
ただし著者は「診断が不要であることを示すものではない」と慎重に留保している。これらのタスクでは、ケース単位のサマリで失敗箇所が十分に特定でき、フルトレースを読むコンテキストコストに見合わなかった可能性がある。

③ 制約するのは「評価呼び出し回数」ではなく「ケースパス」

dev と val は合わせて 200 回の評価呼び出し(各パーティション100回)と、各パーティション 4 フルケースパスを許可する。
  • 中央値の optimizer は 8 回 (4%) の呼び出ししか使わない
  • 一方で ケース割当の 82% を使う
  • 100 セル中 55 セルが少なくとも一方のパーティションのケース予算を使い切る
→ 探索を縛っているのはケース割当であり、呼び出し上限ではない。
[shima] 一回の呼び出しで毎回大量の評価ケースを呼び出してしまっている。

④ 可視の validation スコアは楽観的

大半のセルが identity line の下に落ちる。すなわち提出候補の test スコアは、探索中に観測された最良 validation スコアより低い
realized gain を測るには held-out パーティションが必須である。
ただし著者は「選択誘導性の過学習」と「validation–test のミスマッチ」を区別できないため、「見えている最良スコアは楽観的である」ということだけを主張すると述べている。
 
 

@Yuya Matsumura

[OSS] DeepSeek Harness

OSS の Agent Harness がDeepSeekより開発者プレビュー公開
Powered by the Cordis meta-framework, DeepSeek Harness is an agent harness built around one core idea: Everything is a plugin. Models, tools, skills, sessions, sandboxes, filesystems, loops, orchestration, and UI are ALL implemented as plugins, and can be mixed, matched, replaced, and extended.
すべてがプラグイン。あなただけの codex / claude code を作ろう!
 

@Shun Ito

[paper] CREAM: Continual Retrieval on Dynamic Streaming Corpora with Adaptive Soft Memory

  • RAGの検索エンコーダ(クエリ・文書のベクトル化モデル)の学習
  • 新しいドメインのデータをどのように取り込むか
    • フルデータで再学習: 学習コストが重い
    • 新データで追加学習: 過去の知識が失われる可能性(catastrophic forgetting)
  • 既存: メモリベース継続学習
    • hard memory: 固定のクエリ集合と正解文書のペア
    • 新しいデータで学習しつつ時々hard memoryからも過去のペアをリプレイすることで忘却を防ぐ
    • 課題
      • hard memoryは事前に決めたクエリ集合に紐づくため、その後に登場した未知のトピックへの汎化力が乏しい。
      • 正解文書ラベル(ground truth)を継続的に人手で用意する必要があり、リアルタイム運用では現実的でない。
  • 提案: CREAM: Soft Memoryベースの継続学習
    • Soft Memory: クエリと文書を意味的な近さで動的にクラスタリングしたもの
    • セッションの流れ
        1. 現在のエンコーダで検索
        1. Soft Memory 更新(クラスタリング更新)
        1. 擬似ラベル作成
        1. エンコーダ再学習
    • 類似度計算
      • トークンレベル類似度: クエリの各トークン埋め込み  について、文書側の全トークン  との内積(コサイン類似度相当)の最大値を取り、 それをクエリの全トークンで足し合わせる。
      • 「クエリの各語が、文書中で最もよく一致する語とどれだけ似ているか」の総和であり、 文脈に応じた細かい意味の一致を捉えられる
      • 既存手法の Random Projection Locality-Sensitive Hashing で計算量削減
        • H = 12 個のランダムな向きのベクトルを用意する
        • 各トークン埋め込みについて、12 個それぞれのベクトルとの内積を符号を並べた12次元ベクトルを作る → 同じ結果のトークン同士が同じbucketとして扱われる
          • [0, 1, 1, 0, … , 1, 0, 0]
          • 向きが似ているベクトルが同じbucketに入る
          • データ量によらず 2^H のbucketに固定される
        • 同じbucketのベクトル同士を合計・正規化したものがprototype。prototypeとの距離から、各書類のクラスタが決まる。
        • 参考:
    • 学習
      • ソフトメモリに貯まった全クエリ・文書で毎回学習するのは非効率なので、CREAMはクラスタサイズに比例して代表クエリを選び (大きいクラスタに偏らせない)、選んだクエリごとに「トップ1類似文書=正例、下位k-1件=負例」を構成する
      • 損失は対照学習
  • 実験
    • 実験はLoTTE(5ドメインのQ&A: Writing/Recreation/Science/Technology/Lifestyle)とMSMARCO (5ドメインのBing検索QA)を、それぞれ10セッションのストリーミング設定に再構成して評価している。
    • 指標は Success@5(上位5件に正解が1件でも含まれるか)とRecall@10(上位10件中の正解網羅率)。
    • 結果: 教師あり最良手法にほぼ匹敵する水準まで教師なしのまま到達
 

@Hiromu Nakamura (pon)

[paper] Ontology Memory-Augmented ASR Correction for Long Text-Speech Interleaved Conversations

本論文は、長期間にわたるテキストと音声が混在する対話環境において、先行する文脈を構造的に活用することで、自動音声認識(ASR)の補正精度を向上させる「オントロジーメモリ拡張型ASR補正フレームワーク」を提案している。

背景と課題

従来のASR補正は、孤立した発話や短期間の局所的な文脈に基づいていることが多く、長期間の対話において蓄積される有用な文脈情報(ドメイン固有のエンティティや専門用語、意味的な制約など)を十分に活用できていない。また、過去の会話履歴を単純に結合する手法では、冗長性やノイズが混入し、補正に必要な証拠が埋もれてしまうという課題がある。

提案手法:オントロジーメモリ拡張型フレームワーク

提案手法の核心は、対話履歴から抽出した知識を「動的に更新可能なオントロジーメモリ」として保持し、それを検索して補正に利用する点にある。
 

評価

著者らは、MagicData-RAMCをベースとした長範囲ASR補正ベンチマーク「RAMC-Corr」を構築し、性能評価を行った。

データセット

 

結果

  • 性能: 10通りのバックボーンモデルと設定の組み合わせのうち9つで、提案手法は直接補正(Direct Correction)を上回った。特に Qwen2.5-14B においては、ゼロショット設定で CER (Character Error Rate) を大幅に削減した。
    • この研究では、FS(Few-Shot) 設定が必ずしも精度向上に繋がらないケースがあることが示されています。
      • 過剰修正の誘発: FS設定では、モデルがより積極的に編集を行うようになりますが、同時に CER(文字誤り率)を悪化させる有害な編集(Worsen@Edit)も増加する傾向があります 。
      • オントロジーメモリとの相互作用: Qwen3.5-9Bなどの一部のモデルでは、ZSでは提案手法が有効だった一方で、FSでは Direct 手法を下回る結果となりました。これは、少数のデモンストレーションがメモリからのガイダンスと干渉し、推論時に不要な修正を助長してしまう可能性を示唆しています 。
  • 特性: 提案手法は単なる書き換えではなく、メモリ上の証拠に基づいた選択的かつ精度の高い補正を実現していることが、Edit behavior の分析から明らかになった。
  • 計算コスト: オンライン推論において、メモリ検索と更新に伴うレイテンシは発生するものの、音声入力のウィンドウ時間内に計算を隠蔽できるため、ユーザーが知覚する遅延は1秒以下に抑制されている。

@Ryuhei Kawabata(monokemonoke)

[blog] GenRec: Towards LLM-Native Recommendation at Netflix

要約

GenRec は Netflix の内部 foundation LLM を post-training した LLM ベースのランキングモデル。数千の手作り特徴量を持つ成熟した本番ランカーに対し、Phase-2 のラベル付きデータ約 40 分の 1・少ない入力信号で、offline MRR +1.6%、トラフィック約 10%・約 4 週間の A/B テストで短期・長期両方のオンライン指標に統計的有意な改善を達成した。

背景と課題

  • 現行スタックは数千の特徴量と専用アーキテクチャ(シーケンスモデル、特徴交互作用、マルチタスク)で構成され、新コンテンツ種別・新サーフェスの追加コストが高い。
  • 素の LLM は推薦には不十分:人気作偏重、カタログ外のハルシネーション、ビジネス制約の無視、パーソナライズ不足。
  • タスクはフルカタログ(または top-K)ランキング。ユーザー u・履歴 H・コンテキスト τ(デバイス、サーフェス、ロケール、時刻)からカタログ全体の順位 π を出し、短期エンゲージメントでなく長期メンバー効用を最適化する。

2フェーズ学習

フェーズ内容更新頻度
Phase 1OSS LLM を Netflix コーパスで適応(コンテンツ理解・会員行動・言語能力)。複数アプリ共有の backbone低頻度
Phase 2 (GenRec)ランキング特化の post-training。報酬重み付き損失、新作・嗜好変化への追随、サービングコスト制約下で最適化高頻度

学習データとコンテキストエンジニアリング

  • 数千億件の interaction ログ(視聴、再生時間、thumbs、リスト追加、離脱等)を「ユーザーと推薦システムの会話」形式に変換。user メッセージ=言語化されたコンテキスト・履歴・タスク、assistant メッセージ=実際のエンゲージメント。推論時は assistant をデコードせず scoring head でランク付け。
  • トークン予算が新しい「特徴量予算」になる。高シグナルイベント(長時間再生、thumbs-up)は詳細に保持、低シグナル(短時間再生、hover)は削除、反復行動(binge)は圧縮、重要・cold-start アイテムは選択的に詳述。prefix caching を効かせるプロンプト構造も工夫。

学習目的(多目的損失)

  1. カタログ認識ランキング目的:高価値エンゲージメントを正例とし、カタログ/候補集合上の cross-entropy でスコア学習。
  1. 言語モデリング目的:言語理解の維持と、将来の説明生成などに備える。
  1. 報酬重み付き損失:生ログだけで学習すると binge 偏重や単一コンテンツ種別偏重が起きる。別個の reward model から (a) 長期満足プロキシ(再訪、カタログ探索、持続的視聴)と (b) 行動リバランス(games vs movies、新作 vs 定番)のスカラー重みを算出し、例ごとに損失をスケール。フル RL より単純・低コストで有効。GRPO 等の RL 手法は追加ゲインを確認済みだがコスト面で future work。

アーキテクチャとサービング

  • decoder-only Transformer backbone + カタログ認識 scoring head。言語化テキスト x → pooled hidden state h → 各アイテム埋め込み eᵢ と dot product / 小 MLP でスコア sᵢ → softmax でランキング。backbone・head・埋め込みを joint 学習。大カタログには sampled softmax / 候補集合。カタログ外推薦を構造的に防ぐ。
  • vLLM 上の内部 LLM スタックで提供。コスト対策は 3 つ:(1) 小型・蒸留モデル、(2) 積極的なコンテキスト圧縮、(3) prefill-only 推論(自己回帰デコードなしにプロンプト 1 回の forward で候補全体をスコアリング)。

実験結果・アブレーション

  • オフライン:Phase-2 ラベル約 40 分の 1 で MRR +1.6%。データ・信号を増やすとさらに改善。
  • オンライン:バッチ計算サーフェスで ~10% トラフィック・~4 週間の A/B。低データ・低シグナル構成でも短期・長期指標とも有意に改善。
  • スケーリング:~1B と ~10B backbone とも Phase-2 データ増で MRR 単調改善。固定学習予算下では大きい backbone が一貫して優位。
  • Phase 寄与:Phase-1(Netflix 適応)は OSS 直開始比で offline 指標 10–20% 改善。Phase-2 は Phase-1 直後評価で追加 35–50%、Phase-1 が陳腐化する 2 週間後には相対効果が約 80% に拡大。
  • データ効率:強い Phase-1 から始めると、本番ランカー同等以上を 10–40 分の 1 の Phase-2 ラベルで達成。
  • コンテキスト長最適化:イベントのクリーニング→MRR vs イベント数の「elbow point」特定→保持イベントの verbosity 調整、の 3 段階で、トークンを約 3 分の 1 に削減しても offline 指標はほぼ劣化なし。サービングコストも同比率で削減(コストはコンテキスト長にほぼ比例)。

図1: GenRec と本番モデルとのオンライン指標比較

縦軸は平均処置効果(Average Treatment Effect); ある介入(処置)を受けた場合と受けなかった場合とで、結果指標がどれだけ変化するかを平均で表した因果推論の指標
 

示唆:LLM-native 推薦への転換

  • feature engineering → context engineering:プロンプトが新しい特徴ベクトル。どの信号をどこまで遡り、どう圧縮するかが設計の中心に。
  • タスク別カスタムアーキテクチャ(two-tower, DLRM 等)→ 共通 foundation backbone:差別化はデータ・言語化・post-training・推論最適化で行い、自然言語による steering への道も開く。
  • スケーリング則が設計指針に:sparse ID や特化アーキで頭打ちしやすい従来型と違い、データ・モデル増で一貫して品質向上。
  • RecSys インフラ → LLM インフラ:GPU、vLLM/Triton、バッチング・キャッシング中心の構成へ。

monoke の感想

  • そもそも素の LLM 自体だと rerank 低いんだな
    • 素の LLM → 独自context で継続学習で +10%
    • 独自context → Rerank 向けSFTで +20~80%
  • context の最適化が興味深い
    • イベントのクリーニングと圧縮: シグナルの弱いエンゲージメントを除外し、繰り返し発生する行動を圧縮することで、整理されたイベント系列を作成する。
    • エルボーポイントの探索: 含める過去イベント数を変化させながらMRRをプロットし、それ以上イベント数を増やしても効果が逓減するエルボーポイントを特定する(図5参照)。
    • 冗長性の最適化: 残したイベントについて、詳細度の異なる表現や簡略化した文言を試し、それぞれMRRを測定する。
    • context を 1/3 まで削減しても指標の劣化はごくわずかだった

メインTOPIC

Continual Harness: Online Adaptation for Self-Improving Foundation Agents

 
 
Prime Agentでコンセプトの1つとして参照されているContinual Harnessを読んだので紹介
 

背景

  • ポケモンのような環境では移動・会話・戦闘・アイテム管理などを長時間にわたって処理する必要がある
  • 画面、テキスト情報、ボタン入力といった最小限のゲーム状態のみを与えた場合、経路探索や戦闘戦略などの課題に対応しにくい
  • 先行研究でポケモンタスクのエージェントのゲームプレイ軌跡を人間が確認し、手動でハーネスを作成・更新することでポケモンの攻略が可能となった
  • 人間が担っているハーネスの改善を自動化できないか?
 

提案手法

状態のリセットなしにハーネスとモデルの重みを継続的に自動更新するフレームワーク
 

ハーネスの定義

成分内容
システムプロンプト p各推論ステップで与えられる指示・戦略方針
サブエージェント 𝒢オーケストレータが呼ぶ専門モジュール(戦闘戦略など)
スキル 𝒦再利用可能なテキストレベルのヒューリスティックや実行可能プログラム
メモリ 軌跡をまたいで事実・戦略・観測を蓄積する永続知識ストア
上記4つの他に一連のメタツール(define_agent、run_code、process_memory、および類似の基本機能)が利用可能。エージェントがハーネスを自律的に作るのに使う
 

Agent & Refinerによるハーネスの改善ループ

AgentとRefinerが存在する。モデルは共通
Agent
  • 現在のハーネスH_tで観測s_tとそれまでの軌跡をもとに行動a_tを生成する
  • 観測s_tは画像による観測とテキスト形式のマップ
  • 行動a_tは移動方向4つ+ボタン4つの8つから選択
Refiner
  • 一定の ステップごとに直近の軌跡ウィンドウを読み込み失敗信号を探す
    • どういうものが失敗かをざっくりシステムプロンプトに入れている
    • 停滞、ツール失敗、見逃された探索機会
  • 失敗信号を元にハーネスの各構成要素に対して以下を実行する
    • prompt: 特定された失敗事例と軌道ウィンドウに基づいてプロンプトを更新する
    • sub-agent: 繰り返し発生するパターンに対応するためのsub-agentを作成、失敗を元に既存sub-agentを更新、有効に使われていないsub-agentは削除
    • skill: 成功した軌跡を元にスキル化し、失敗した行動に関するスキルを修正する
    • memory: 不足している情報を追加、古い記憶は更新、エージェントが達成済みの領域の重要度を下げる
  • 特徴的な点として、Refinerがハーネスを更新した後もAgentはそのまま動き続けるのでオンラインでのハーネス改善となる(既存手法だと更新したらリセットして最初からみたいなパターンがある)
 

継続的モデル-ハーネス共同学習ループ

  • モデル改善はRifinerとは独立したものと考えて良い
  • 256ステップを1イテレーションとして1イテレーションごとにモデルを更新する
  • agentが1iter行動したら各ステップの行動を報酬モデルで評価
    • 軌跡の進捗:0.4
    • 行動の正しさ:0.3
    • 推論の質:0.2
    • 出力形式の遵守:0.1
  • 報酬が低いステップを対象に強いモデル(Gemini-3.1 pro)に行動させたものを教師ラベルとしてSFT
  • モデル更新後もゲーム環境やエージェントの状態はリセットされず継続的にゲームを実行する(オンライン学習)
 

実験

ハーネス自動生成による操作効率改善の評価

ポケモン赤/エメラルドのゲームシナリオでマイルストーンを設定して操作効率の観点で評価
  • 早く立ち上がるほど良い
  • 緑が人が手動作成したハーネス、グレーが最小限の事前定義ハーネス
  • 青、黄、橙が提案手法の派生。基本青を見るで良い
  • 最小限のハーネスと比べるとマイルストーン達成までのボタン押下数が減少し効率化している
  • 人が試行錯誤して手作りしたハーネスには負ける
 

モデル学習の評価

結論、モデル学習の意義までは実験では示せていないというのが自分の解釈
  • 下記のグラフはいくつかのマイルストーンを起点にハーネス自動生成+モデル学習を実施しマイルストーンを進めることができることを示している
  • ただしこれはモデル学習だけでなくハーネス自動生成の効果も含んでおり切り分けはされていない
  • ハーネス自動生成はbaselineで行った上でモデル学習の差分が見たかった
 

ハーネス改善例

  • ハーネスが改善してるかの評価の一例として経路探索のコストとskill call数がステップとともにどう変化するかを見ている
  • 左: 青の手動ハーネスは早い段階でダイクストラと同等のコスト、橙の自動ハーネスもコスト差は減少しており経路探索の改善
  • 右: 経路探索skillが時間経過とともに呼ばれるようになってる
  • 補足: 部分観測なので最短経路で移動するのが完璧にやるのはむずい&ゲームを進めることと最短経路で進むことはイコールではないという話はある

実際の改善事例

 

Prime AgentにおいてContinual Harnessはどう使われてる?

  • 履歴を元にプロンプト、メモリ、スキル、サブエージェントをオンラインで自動改善
  • モデル学習は現時点ではやっていないがハーネスだけの改善には課題感があるようで組織的にはかなり意欲的らしい
私たちは、モデルとハーネスの共同学習が新しい能力を引き出すための主要なパラダイムであると確信しています