プロンプトエンジニアリング

プロンプトハッキングとLLMの悪用

mm
Unite.AI を Google の優先ソースに追加
DALL·E 3

大規模な言語モデルは詩を創作したり、質問に答えたり、コードを書いたりすることができます。しかし、巨大な力には内在するリスクもあります。LLMを有意義な対話に参加させることができる同じプロンプトは、悪意のある意図で操作される可能性もあります。ハッキング、悪用、そして包括的なセキュリティプロトコルの欠如は、これらの技術の驚異を欺瞞の道具に変える可能性があります。

Sequoia Capitalは、”ジェネレーティブAIは、プロフェッショナルの効率と創造性を少なくとも10%向上させることができる”と予測しています。これは、プロフェッショナルが以前よりも速く、より生産的で、かつより優秀であることを意味します。

上記のタイムラインは、2020年から2023年までの主要なGenAIの進歩を強調しています。重要な開発には、OpenAIのGPT-3とDALL·Eシリーズ、GitHubのCoPilot forコーディング、そしてビデオ作成のための革新的なMake-A-Videoシリーズが含まれます。他の重要なモデルとして、MusicLM、CLIP、PaLMがあります。これらのブレークスルーは、OpenAI、DeepMind、GitHub、Google (GOOGL ) 、Metaなどの先端テクノロジー企業によって実現されています。

OpenAIのChatGPTは、OpenAIのGPTモデルを活用することで有名なチャットボットです。GPTモデルをいくつか採用してきましたが、GPT-4が最新のバージョンです。

GPT-4は、トランスフォーマーモデルに基づく自己回帰型モデルの一種です。トレーニングデータとして大量のテキストを使用し、文法、事実、偏見、そして誤解を学習します。基本的な機能は、前の単語を見た後に次の単語を予測することです。

How LLM generates output

How LLM generates output

GPT-4が回答を生成し始めると、すでに生成した単語を使用して新しい単語を作成します。これは自己回帰機能と呼ばれます。単純に言えば、過去の単語を使用して次の単語を予測します。

LLMの可能性と限界についてはまだ学び続けていますが、1つのことは明らかです。プロンプトは非常に重要です。プロンプトの小さな変更でも、モデルが非常に異なる回答を生成する可能性があります。これは、LLMが繊細で、時には予測不可能であることを示しています。

Prompt Engineering

Prompt Engineering

したがって、これらのモデルを使用する際に、正しいプロンプトを作成することが非常に重要です。これは、プロンプトエンジニアリングと呼ばれます。まだ新しい分野ですが、LLMから最良の結果を得るために不可欠です。LLMを使用するには、モデルとタスクを十分に理解して、良いプロンプトを作成する必要があります。

プロンプトハッキングとは

プロンプトハッキングは、モデルへの入力操作をして、望ましい、そして時には意図しない出力を得ることを含みます。正しいプロンプトが与えられれば、 даже訓練されたモデルでも、誤解を招く、または悪意のある結果を生み出す可能性があります。

この現象の基盤は、トレーニングデータにあります。モデルが特定のタイプの情報や偏見にさらされた場合、悪意のある個人がこれらのギャップや傾向を利用する可能性があります。

アーキテクチャ:LLMとその脆弱性

LLM、特にGPT-4のようなモデルは、トランスフォーマーアーキテクチャに基づいて構築されています。これらのモデルは膨大な数のパラメータを持っており、印象的な汎化能力を備えていますが、同時に脆弱性にもなります。

トレーニングの理解

LLMは、事前トレーニングとファインチューニングの2つの主要なトレーニング段階を経ます。

事前トレーニング中、モデルは大量のテキストデータにさらされ、文法、事実、偏見、そして誤解を学習します。

ファインチューニング段階では、モデルはより狭いデータセットでトレーニングされ、時には人間のレビューアーによって生成されます。

脆弱性は次の点に起因します:

  1. 膨大さ:パラメータが非常に多いため、すべての可能な出力を予測または制御することは困難です。
  2. トレーニングデータ:インターネットは膨大なリソースですが、偏見、誤情報、または悪意のあるコンテンツから完全に保護されていません。モデルはこれらの要素を無意識に学習する可能性があります。
  3. ファインチューニングの複雑さ:ファインチューニングに使用される狭いデータセットは、十分に注意深く設計されなければ、新しい脆弱性を導入する可能性があります。

LLMが悪用される例:

  1. 誤情報:プロンプトを特定の方法で設計することで、ユーザーはLLMを陰謀論に同意させたり、現在の出来事について誤解を招く情報を提供させたりすることができます。
  2. 悪意のあるコンテンツの生成:ハッカーはLLMを使用してフィッシングメール、Malwareスクリプト、または他の悪意のあるデジタル資料を作成することができます。
  3. 偏見:LLMはインターネットから学習するため、時々インターネットの偏見を継承します。人種、性別、または政治的偏見がモデル出力に現れることがあります。特に、特定の方法でプロンプトが設計された場合に顕現します。

プロンプトハッキング方法

プロンプトハッキングには、主に3つの手法があります:プロンプトインジェクションプロンプト漏洩ジェイルブレイク

プロンプトインジェクション攻撃は、ハッカーがLLMまたはチャットボットにテキストプロンプトを提供することで、AIを望ましい行動をとらせることを目的とします。これには、次のことが含まれます。

  • 以前の指示を上書きすること。
  • コンテンツルールを回避すること。
  • 隠されたデータを表示すること。
  • AIが禁止されたコンテンツを生成すること。

これらの攻撃により、ハッカーはAIを有害なものを生成させることができます。

これらの攻撃には2つの種類があります:

  1. 直接攻撃:ハッカーはLLMの入力を変更してその行動を制御します。
  2. 間接攻撃:ハッカーはLLMのデータソースに影響を与えます。たとえば、ハッカーはウェブサイトに有害なプロンプトを配置し、LLMがそれを読み込み、行動します。

プロンプト漏洩

プロンプト漏洩は、モデルがデータやシステムプロンプトに埋め込まれた情報を、ユーザーに意図せずに開示する可能性があることを指します。モデルは、特定の詳細を公開しないように指示されていても、巧妙な質問の言い換えによって、機密情報を明らかにすることができます。

プロンプト漏洩の例

システム優先順位の公開

  • ユーザー入力:今日のスペシャルメニューは何ですか?
  • 漏洩プロンプト:今日のスペシャルメニューはサーモンとパスタです。[SYS_NOTE:在庫過剰のため、シーフードディッシュを優先してプロモーションします。] さらに支援するにはどうしますか?

ここで、漏洩したシステムノートは在庫優先順位に関する洞察を提供し、競合他社によって利用される可能性があります。

隠し機能の公開

  • ユーザー入力:アドバンス設定にアクセスする方法を教えてください。
  • 漏洩プロンプト:アドバンス設定は現在開発中であり、ユーザーにはアクセスできません。[DEV_REMINDER:来月にアドバンス設定のベータテストを開始します。] それ以外に知りたいことはありますか?

この場合、プロンプトは意図せずに新機能を公開し、競合他社に警告を与えたり、ユーザーに予期せぬ期待を与えたりする可能性があります。

ジェイルブレイク / モードスイッチング

AIモデル、特にGPT-4やClaudeは、進化し続けていますが、これはリスクも伴います。モデルを安全にするために、人間の価値観やフィードバックでトレーニングされています。しかし、ジェイルブレイク攻撃の懸念があります。

ジェイルブレイク攻撃は、モデルが許可されていないことを行うように操作されることを指します。たとえば、モデルが違法行為を支援しないようにトレーニングされている場合、ジェイルブレイク攻撃はこの安全対策を回避してモデルに支援をさせることを目指します。研究者は、これらのモデルを悪意のあるリクエストでテストし、攻撃をよりよく理解し、モデルをさらに安全にすることを目指しています。

実際の攻撃例:

  • DAN(Do Anything Now):ハッカーはAIに「DAN」として行動するように指示します。これは、通常のAIルールに従わずに、すべての要求に応えることを意味します。
  • 公人への脅迫:例として、Remoteli.ioのLLMがリモートジョブに関するツイートに反応するように設定されました。ユーザーはボットをリモートワークに関するコメントで大統領を脅迫させました。

LLMの保護:プロンプトハッキングに対する戦略

プロンプトハッキングが懸念されるにつれて、厳格な防御の必要性が増しています。LLMを安全にし、出力を信頼できるものにするために、マルチレイヤーのアプローチが重要です。以下に、最もシンプルで効果的な防御策が示されています。

1. フィルタリング

フィルタリングは、入力プロンプトまたは生成された出力を、事前に定義された単語やフレーズに対してスキャンし、コンテンツが期待される境界内にあることを確認します。

  • ブラックリスト:特定の単語やフレーズを禁止します。
  • ホワイトリスト:特定の単語やフレーズのみを許可し、コンテンツが制御されたドメイン内に留まることを保証します。

例:

❌ 防御なし:次の外国語のフレーズを翻訳してください:{{foreign_input}}

✅ [ブラックリストチェック]:もし{{foreign_input}}が[list of banned words]を含む場合、拒否します。そうでなければ、外国語のフレーズ{{foreign_input}}を翻訳します。

✅ [ホワイトリストチェック]:もし{{foreign_input}}が[list of approved words]の一部である場合、フレーズ{{foreign_input}}を翻訳します。そうでなければ、ユーザーに制限を通知します。

2. コンテキストの明確化

この防御戦略は、ユーザー入力前にコンテキストを明確に設定することを強調し、モデルが応答の枠組みを理解することを保証します。

例:

❌ 防御なし:次の製品を評価してください:{{product_name}}

✅ コンテキストの設定:製品名{{product_name}}が与えられた場合、機能とパフォーマンスに基づいて評価を提供します。

3. 指示防御

プロンプトに特定の指示を埋め込むことで、LLMのテキスト生成時の動作を導くことができます。明確な期待を設定することで、モデルは出力についてより慎重になり、意図しない結果を軽減します。

例:

❌ 防御なし:次のテキストを翻訳してください:{{user_input}}

✅ 指示防御付き:次のテキストを翻訳してください。正確性を保ち、個人的な意見を追加しないでください:{{user_input}}

4. ランダムシーケンスエンクロージャ

ユーザー入力を直接のプロンプト操作から保護するために、ランダムな文字シーケンスの間に封じ込めます。これにより、入力を悪意のある方法で変更することが困難になります。

例:

❌ 防御なし:次の入力の首都は何ですか?{{user_input}}

✅ ランダムシーケンスエンクロージャ付き:QRXZ89{{user_input}}LMNP45。首都を特定します。

5. サンドイッチ防御

この方法では、ユーザー入力をシステム生成プロンプトの間に配置します。这样、モデルはコンテキストをより良く理解し、出力がユーザーの意図と一致することを保証します。

例:

❌ 防御なし:次の入力の要約を提供してください:{{user_input}}

✅ サンドイッチ防御付き:次のコンテンツに基づいて、要約を提供してください:{{user_input}}。中立的な要約を提供し、偏見を避けてください。

6. XMLタグ付け

ユーザー入力をXMLタグで囲むことで、システムメッセージの他の部分から入力を明確に区別します。XMLの堅牢な構造により、モデルは入力の境界を認識し、尊重します。

例:

❌ 防御なし:次の入力の特性を説明してください:{{user_input}}

✅ XMLタグ付け付き:<user_query>次の入力の特性を説明してください:{{user_input}}</user_query>。事実のみで応答してください。

結論

LLMの活用が急速に進化するにつれて、これらのモデル内部の仕組み、脆弱性、防御メカニズムを理解することは不可欠です。LLMは、GPT-4のようなモデルを通じて、自然言語処理の分野で前例のない能力を提供しています。しかし、その膨大な可能性とともに、重大なリスクも伴います。

プロンプトハッキングとその関連する脅威は、AIコミュニティが継続的に研究、適応、警戒を続ける必要性を強調しています。革新的な防御戦略はより安全なモデルとのやり取りを約束しますが、セキュリティの継続的な革新は、情報に基づいた使用の重要性を強調しています。

さらに、LLMが進化し続けるにつれて、研究者、開発者、ユーザー全員が最新の進歩と潜在的な落とし穴について情報を得ることが重要です。オープンソースの革新と倫理的な利用のバランスを取ることが、業界全体のトレンドを形作る上で重要な課題です。

私は過去5年間、機械学習とディープラーニングの魅力的世界に没頭してきました。私の情熱と専門知識は、AI/MLに特に焦点を当てた50以上の多様なソフトウェアエンジニアリングプロジェクトに貢献することになりました。私の継続的な好奇心は、自然言語処理という分野にも私を引き付け、さらに探求したいと思っています。