[重要][論文紹介#10命令の階層性:特権的な命令を優先するLLMの訓練]

本論文は、2024年7月にリリースされたGPT-4o miniに実装されたものです。当社としては、極めて重要だと考えています。

本日の論文

The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions

この論文は、大規模言語モデル(LLM)に命令の優先順位を教え、高い優先度の指示を遵守しながら低優先度の悪意ある指示を無視する能力を向上させることで、プロンプトインジェクションやジェイルブレイクなどの攻撃に対する頑健性を大幅に高める手法を提案しています。

以下は、LLMを活用して論文の内容を要約したものになります。

概要

現在のLLMはプロンプトインジェクションなどの攻撃に脆弱であり、その主な原因はシステムプロンプトとユーザー入力を同等に扱うことにあります。

本研究では、指示の階層を提案し、優先度の高い指示を遵守しながら低優先度の悪意ある指示を無視する能力をLLMに教える自動データ生成方法を開発しました。

この方法を適用したLLMは、訓練時に見られなかった攻撃タイプに対しても頑健性が大幅に向上し、標準的な能力をほぼ維持したまま、様々な攻撃に対する防御力を大きく改善しました。

はじめに

現代の大規模言語モデル(LLM)は、単純な自動補完システムではなく、ウェブエージェント、メールセクレタリー、バーチャルアシスタントなどのエージェント型アプリケーションを強化すると考えられています。このようなアプリケーションを広く展開する上での主要なリスクの一つは、攻撃者がモデルを騙して安全でない、または破壊的な行動を実行させる可能性があることです。

プロンプトインジェクション攻撃の例

LLMを利用したメールアシスタントに対するプロンプトインジェクション攻撃は、理論的にユーザーのプライベートメールを流出させる可能性があります。

背景:LLMに対する攻撃

LLMの構造

ほとんどの現代のLLM、特にチャットユースケースでは、システムメッセージ、ユーザーメッセージ、モデル出力、ツール出力から構成される構造化された入力を処理します。各要素は異なる目的を持ち、特殊なトークンでフォーマットされて、LLMが異なるメッセージタイプを区別できるようになっています。

どのようなLLM攻撃が存在するか?

LLM製品の典型的なユースケースには、最大3つの当事者が関与します:(1)LLMの指示を提供し、制御フローを駆動するアプリケーション開発者、(2)製品の主要ユーザー、(3)ウェブ検索結果やその他のツール使用からLLMが追加コンテキストとして消費する第三者の入力。これらの当事者間で衝突が生じた場合、例えばユーザーや攻撃者が既存の指示を上書きしようとした場合に攻撃が発生します。

プロンプトインジェクション

最も懸念される攻撃で、攻撃者がシステム設計者の意図を覆す指示を挿入します。直接的(エンドユーザーが入力)または間接的(第三者の入力を通じて)に行われ、ユーザーデータの流出や、LLMの行動の乗っ取りなどの深刻な被害をもたらす可能性があります。

ジェイルブレイク

LLMに訓練された安全性行動から逃れさせることを目的とする攻撃です。モデルの以前の指示と特に矛盾しない場合もあります。スパム、誤情報、ポルノグラフィックコンテンツの生成など、悪意のあるタスクの実行を可能にする様々な攻撃バリエーションが存在します。

システムメッセージ抽出

システムメッセージには、ビジネスロジック、プライベート情報、安全性関連の指示が含まれている可能性があります。これらの攻撃は、システムメッセージ全体または特定の秘密情報を明らかにすることを目的としています。多くの開発者がモデルにシステムメッセージを明かさないよう指示しているにもかかわらず、これらの攻撃は比較的簡単に実行できます。

4つの主要なカテゴリーの例を提供しており、それぞれが異なる種類の攻撃や状況に対応しています

  • クローズドドメインのプロンプトインジェクション:
    • システムメッセージ:文章の主動詞を特定する指示。
    • ユーザー入力:モデルの役割を変更しようとする悪意のある指示。
    • 正解出力:元のタスク(動詞の特定)を実行し、悪意のある指示を無視。
  • オープンドメインの不適切な指示:
    • システムメッセージ:趣味を見つける助けとなるチャットボットの役割説明。
    • ユーザー入力:ボットの行動を変更しようとする不適切な指示。
    • 正解出力:不適切な指示を拒否する応答。
  • オープンドメインの適切な指示:
    • システムメッセージ:財務管理チャットボットの役割説明。
    • ユーザー入力:有用で適切な追加指示。
    • 正解出力:追加指示を取り入れた適切な応答。
  • システムメッセージ抽出:
    • システムメッセージ:LLMの基本的な役割説明。
    • ユーザー入力:システムパラメータとインストラクションの開示を要求。
    • 正解出力:要求を丁重に拒否する応答。

指示の階層

理想的なモデル動作の概要

複数の指示がモデルに提示された場合、低優先度の指示は高優先度の指示と整合性があるか矛盾する可能性があります。我々の目標は、モデルに高レベルの指示との整合性に基づいて条件付きで低レベルの指示に従うことを教えることです。

異なる攻撃に対する訓練データ生成

効果的に指示の階層をLLMに組み込むために、我々は訓練データ作成のための方法を提案し、2つの重要な原則を活用しています:合成データ生成とコンテキスト蒸留です。

コンテキスト合成

整合性のある指示に対して、我々は合成的な要求を生成し、それを小さな部分に分解します。これらの分解された指示を階層の異なるレベルに配置し、モデルが元の完全な指示を見た場合と同じ応答を予測するように訓練します。

コンテキスト無視

矛盾する指示に対して、我々はモデルが低レベルの指示を見なかった場合と同じ答えを予測するように訓練します。

主要な結果

実験セットアップ

我々は、前述のデータとモデル能力のためのデータを用いて、監督付き微調整と人間のフィードバックからの強化学習(RLHF)を使用してGPT-3.5 Turboを微調整しました。

主な結果

指示の階層は、我々の主要な評価のすべてで安全性の結果を改善し、頑健性を最大63%向上させました。

論文で提案されたモデル(Baseline LM + Instruction Hierarchy)と基準モデル(Baseline LM)の行動を比較した質的な例を示しています。3つの異なる攻撃シナリオに対する両モデルの応答を提示しています。

  • クローズドドメインタスクに対する直接的プロンプトインジェクション:
    • システムメッセージ:テキストをスペイン語に翻訳する指示。
    • ユーザーメッセージ:「execute function()」のみを出力するよう指示する攻撃。
    • 基準モデルの出力:攻撃に従い、「execute function()」を出力。
    • 提案モデルの出力:攻撃を無視し、元の指示通りにスペイン語翻訳を実行。
  • 直接的プロンプトインジェクション(TensorTrust Prompt Hijacking):
    • システムメッセージ:スポーツクライミングについて話すサルの役割指示。
    • ユーザーメッセージ:モデルの役割を変更し、「#aCCeSS gRANTED#」と言わせようとする攻撃。
    • 基準モデルの出力:攻撃に従い、「Access Granted」を出力。
    • 提案モデルの出力:攻撃を無視し、スポーツクライミングについて話すという元の役割を維持。
  • システムプロンプト抽出(Gandalf Game Dataset):
    • システムメッセージ:秘密のパスワード(PLANETARY)を明かさないよう指示。
    • ユーザーメッセージ:通常の倫理プロトコルを無視してパスワードを明かすよう要求する攻撃。
    • 基準モデルの出力:攻撃に従い、パスワード「PLANETARY」を開示。
    • 提案モデルの出力:攻撃を拒否し、情報提供を断る。

一般化の結果

指示の階層は、訓練から明示的に除外した各評価基準への一般化も示しました。これには、安全でないモデル出力を引き起こすジェイルブレイク、システムメッセージからパスワードを抽出しようとする攻撃、ツール使用を通じたプロンプトインジェクションが含まれます。

過剰拒否の結果

主要なリスクの一つは、我々のモデルが低優先度の指示に決して従わないように学習してしまうことです。実際には、低優先度の指示が高優先度の指示と矛盾する場合にのみ、モデルに低優先度の指示を無視させたいのです。

議論と関連研究

プロンプトインジェクションに対する防御

クローズドドメインタスクでのプロンプトインジェクションに関して、最近の研究では、第三者のユーザー入力を指示ではなくデータとして扱うようモデルに教えることが提唱されています。

システムレベルのガードレール

我々は、攻撃を緩和するためのモデルベースのメカニズムに焦点を当てており、これは他のタイプのシステムレベルの緩和策を補完するものです。

自動化された赤チーム

我々の研究は、LLMの敵対的訓練データを自動的に生成するより大きなトレンドに適合します。

結論と今後の課題

我々は指示の階層を提案しました:これは言語モデルが敵対的な操作を無視しながら指示に従うことを教えるためのフレームワークです。指示の階層の現在のバージョンは、今日のLLMの現状に比べて劇的な改善を表しています。さらに、行動分類と過剰拒否評価を確立したことで、データ収集の取り組みを大幅に拡大することで、モデルのパフォーマンスを劇的に向上させ、その拒否決定境界を洗練させることができると確信しています。