Best-of-Nの安全リスクと候補選別の新手法

POINT
- アラインド済みLLMが自身の安全制約を破る攻撃手法「SLIP」が11モデルで平均94.7%の成功率を記録。候補を増やすほどリスクが乗数的に広がる構造的な問題を抱える。
- 外部評価モデル不要の候補選別フレームワーク「ModeX」が、スペクトラルクラスタリングで意味的な多数決を実現し、コード生成・要約・数学推論で単一生成を上回る品質を達成した。
- 品質向上と安全性確保を両立するには、プロンプト設計・候補選別・意味的ドリフト検出の三層を同時に設計する必要がある。
候補を増やすと何が壊れるのか
AIコーディングツールで「複数案を出して一番いいものを選ぶ」という使い方が当たり前になった。Best-of-N(BoN)と呼ばれるこのアプローチは、確率的な生成を複数回走らせて最良を取るだけで品質が上がる、シンプルかつ強力な戦略だ。
ところが、候補数を増やすほど一つの問題が大きくなる。生成のたびに安全フィルターをすり抜けるチャンスが増えるという構造的なリスクだ。2026年1月に公開された研究「Break Me If You Can: Self-Jailbreaking of Aligned LLMs via Lexical Insertion Prompting」は、この問題を数字で突きつけた。GPT-4.1、Claude Sonnet 4.5、Gemini 2.5 Pro、DeepSeek-V3を含む11モデルで、平均Attack Success Rate(ASR、攻撃が安全制約を突破して有害な出力を引き出せた割合)は94.7%。外部の攻撃用LLMを一切使わず、ターゲットモデル自身の知識だけで実行できる点が特に厄介だ。
この攻撃手法「SLIP(Self-Jailbreaking via Lexical Insertion Prompting)」は、無害なプロンプトに問題のある単語を段階的に挿入しながら、モデル自身の反応をガイドとして利用する。平均7.9回のLLM呼び出しで完了し、先行手法より呼び出し回数が3〜6倍少ない。軽量で実行しやすいぶん、現実的な脅威として無視できない。
SLIPはなぜこれほど効くのか
SLIPの核心は、攻撃を「多段階の木探索」として定式化している点にある。幅優先探索で対話ターンを枝として展開しながら、無害な文脈の中に有害なコンテンツワードを一語ずつ埋め込んでいく。各ステップでモデルが応答を継続するかどうかを確認しながら、応答を続けさせる方向に枝を伸ばす仕組みだ。
既存の防御策はどこまで通用するか。正規表現ベースのフィルタリングは、プロンプトを言い換えるだけで回避された。コーディングツールで広く使われている入力バリデーションの多くが同じ弱点を持つことを意味する。
研究チームが対抗策として提案したのがSemantic Drift Monitor(SDM)だ。会話の埋め込みベクトルの軌跡を追跡し、意味的な方向転換が急激に起きたときにジェイルブレイクの試みとして検出する仕組みで、検出率76%・誤検知率(FPR)5%を達成した。完璧ではないが、正規表現ベースより一段深いレイヤーで防御できる。コーディングツールへの応用としては、マルチターン対話の途中で「会話の方向が変わりすぎている」と検知して生成を中断するユースケースが現実的だ。
ModeXはどうやって「最良の候補」を選ぶか
安全性の問題とは別に、「複数候補からどれを使うか」という選別の問題も残る。2026年1月公開の「ModeX: Evaluator-Free Best-of-N Selection for Open-Ended Generation」は、外部の報酬モデルや評価器なしで最良候補を選ぶフレームワークを提案した。
発想はシンプルだ。N個の候補を生成し、それらの間で類似度グラフを構築する。そこにスペクトラルクラスタリング(データを意味のかたまりに分類する手法)を再帰的に適用して、最も多くの候補と意味的に近い出力——つまりモーダルな出力を抽出する。文字列の一致ではなく意味の合意で多数決を取る、というイメージだ。
コード生成・テキスト要約・数学的推論の三分野で、単一生成および従来の複数パス集約手法を上回った。追加の推論コストも補助モデルも不要という点は、個人開発者がローカルパイプラインに組み込む際に大きな意味を持つ。軽量版のModeX-Liteは候補を早期に絞り込む仕組みを持ち、APIコストを抑えながら同等の品質を狙える。
三層で設計する:コーディングパイプラインへの組み込み方

二つの研究を並べると、複数候補生成の実装に必要な設計が三層に整理される。
第一層:プロンプト設計でリスクの入り口を絞る
SLIPはマルチターン対話の文脈蓄積を利用する。コーディングツールでは、長い会話履歴をそのまま流し込むのではなく、タスクごとにコンテキストを区切る設計が有効だ。一つのコーディングセッションを短いチャンクに分割して蓄積される文脈の長さをコントロールすることで、木探索が深く展開するのを防げる。
第二層:ModeXで候補を意味的に選別する
Claude CodeやCursorのような環境でBest-of-Nを使うとき、「どれが一番いいか」を人間が毎回判断するのは現実的でない。ModeXのアプローチを取り込めば、外部APIへの依存なしに候補群の意味合意を機械的に抽出できる。コード補完で「動くが読みにくい実装」が混在するケースでも、多数決的に選ばれた候補が安定した品質を持つ傾向があることは、コード生成タスクでの実績が示している。
第三層:SDMで意味的ドリフトを監視する
正規表現フィルタはSLIPに回避されると示された以上、単語レベルの検査だけに頼るのは危ない。SDMの検出率76%は完全ではないが、マルチターン対話の途中で「会話の埋め込み軌跡が急変した」というシグナルをトリガーにして生成を中断する仕組みは、既存の安全策と組み合わせることで現実的な防御になる。
三層を個別に実装しても、それぞれの効果は限定的だ。プロンプト設計でリスクを減らし、ModeXで品質を担保し、SDMで逸脱を検知する——この三つが同時に機能して初めて、候補生成を増やすメリットを安全に引き出せる。
まとめ
Best-of-Nは品質向上の手段として定着しつつあるが、候補数を増やすほどSLIP型のリスクが現実的になる。今使っているコーディングパイプラインに組み込む最短経路は、ModeXで外部評価器なしに候補を選別し、SDMで意味的ドリフトを監視する設計を段階的に追加していくことだ。どちらのコードも公開されているので、まず小規模なコード生成タスクで動作を確認するところから始めるといい。