Amazon Web Services ブログ
数学的に正しい自動推論チェックにより、LLM のハルシネーションによる事実ミスを防ぐ (プレビュー)
12 月 3 日、Amazon Bedrock Guardrails の新しい保護手段として自動推論チェック (プレビュー) を追加しました。これにより、大規模言語モデル (LLM) によって生成される応答の正確性を数学的に検証し、ハルシネーションによる事実の誤りを防ぐことができます。
Amazon Bedrock Guardrails では、望ましくないコンテンツをフィルタリングし、個人を特定できる情報 (PII) を編集し、コンテンツの安全性とプライバシーを強化することで、生成 AI アプリケーションの保護手段を実装できます。拒否されたトピック、コンテンツフィルター、ワードフィルター、個人情報編集、コンテキストグラウンディングチェック、そして自動推論チェックのポリシーを設定できます。
自動推論チェックは、モデルによって生成された情報を検証するための適切な数学的、論理的検証と推論プロセスを使用して、ハルシネーションによる事実の誤りを防ぐのに役立ちます。これにより、出力は既知の事実と一致し、偽造されたデータや一貫性のないデータに基づかないようになります。
Amazon Bedrock Guardrails は、大手クラウドプロバイダーが提供する唯一の責任ある AI 機能であり、お客様が生成 AI アプリケーションの安全性、プライバシー、信頼性を単一のソリューション内で構築およびカスタマイズできるよう支援します。
自動推論入門
自動推論は、数学的証明と論理的推論を使用してシステムやプログラムの動作を検証するコンピューターサイエンスの分野です。自動推論は、システムの動作を数学的に保証するという点で、予測を行う機械学習 (ML) とは異なります。Amazon Web Services (AWS) では、ストレージ、ネットワーク、仮想化、ID、暗号化などの主要なサービス分野ですでに自動推論を使用しています。たとえば、自動推論を使用して暗号実装の正確性を正式に検証することで、パフォーマンスと開発速度の両方を向上させます。 詳細については、Amazon Science Blog の「証明可能なセキュリティ」と「自動推論」の研究分野をご覧ください。
現在、AWS は生成 AI にも同様のアプローチを適用しています。Amazon Bedrock Guardrails の新しい自動推論チェック (プレビュー) は、生成 AI の応答が正しい理由を説明する論理的に正確で検証可能な推論を用いて、ハルシネーションによる事実の誤りを防ぐための、最初で唯一の生成 AI 保護手段です。自動推論チェックは、事実の正確性と説明可能性が重要なユースケースで特に役立ちます。たとえば、自動推論チェックを使用して、人事 (HR) ポリシー、会社の製品情報、または業務ワークフローに関する LLM が生成した応答を検証できます。
自動推論チェックは、プロンプトエンジニアリング、Retrieval-Augmented Generation (RAG)、コンテキスト・グラウンディング・チェックなどの他の手法と併用することで、LLM で生成された出力が事実上正確であることを確認するためのより厳密で検証可能なアプローチを追加します。ドメイン知識を構造化されたポリシーにエンコードすることで、会話型 AI アプリケーションが信頼できる情報をユーザーに提供していることを確信できます。
Amazon Bedrock Guardrails での自動推論チェック (プレビュー) の使用
Amazon Bedrock Guardrails の自動推論チェックを使用すると、組織のルール、手順、ガイドラインを構造化された数学形式にエンコードする自動推論ポリシーを作成できます。その後、これらのポリシーを使用して、LLM を利用したアプリケーションによって生成されたコンテンツがガイドラインと一致していることを確認できます。
自動推論ポリシーは、名前、タイプ、説明で定義された一連の変数と、その変数を操作する論理ルールで構成されています。舞台裏では、ルールは形式ロジックで表現されますが、正式なロジックの専門知識がないユーザーでも簡単にモデルを改良できるように、自然言語に翻訳されています。自動推論チェックでは、Q&A を検証する際に、変数の説明を使用して値を抽出します。
その仕組みは次のとおりです。
自動推論ポリシーの作成
Amazon Bedrock コンソールを使用して、組織のルールと手順を説明するドキュメントをアップロードできます。Amazon Bedrock は、これらのドキュメントを分析し、初期の自動推論ポリシーを自動的に作成します。このポリシーは、重要な概念とその関係を数学的な形式で表しています。
セーフガードの新しい [自動推論] メニュー項目に移動します。新しいポリシーを作成し、名前を付けます。 人事ガイドラインや運用マニュアルなど、適切なソリューションスペースを定義する既存のドキュメントをアップロードします。このデモでは、航空券の変更に関する航空会社のポリシーを含むサンプル航空券ポリシードキュメントを使用しています。
次に、ポリシーの意図と処理パラメータを定義します。たとえば、空港スタッフからの問い合わせを検証するかどうか、内部参照番号など、処理から除外する要素を特定するかどうかを指定します。一般的なインタラクションをシステムが理解しやすくなるように、1 つまたは複数のサンプル Q&A を含めてください。
これが私の意図の説明です。
ポリシー ID 番号は無視してください。関係ありません。航空会社の従業員は、顧客の詳細情報を提供して顧客がチケットを変更できるかどうかについて質問します。以下は質問の例です:
質問: Unicorn Airlines で Wonder City に飛んでいるのですが、チケットに姓の綴りが間違っていることに気付きました。空港で名前を変更できますか?
回答: いいえ。チケットに記載されている名前の綴りの変更は、チケット購入後 24 時間以内に E メールで提出する必要があります。
次に、[Create] (作成) を選択します。
これで、システムが自動推論ポリシーを作成する自動プロセスを開始します。このプロセスでは、ドキュメントを分析し、主要な概念を特定し、ドキュメントを個々の単位に分解し、これらの自然言語単位を形式的なロジックに翻訳し、翻訳を検証し、最終的にそれらを包括的な論理モデルに結合します。完了したら、ルールと変数を含む生成された構造を確認します。これらはユーザーインターフェイスで正確に編集できます。
自動推論ポリシーをテストするには、まずガードレールを作成する必要があります。
ガードレールの作成と自動推論チェックの設定
Amazon Bedrock Guardrails を使用して会話型 AI アプリケーションを構築する場合、自動推論チェックを有効にして、検証に使用する自動推論ポリシーを指定できます。
セーフガードの [ガードレール] メニュー項目に移動します。新しいガードレールを作成して名前を付けます。[自動推論ポリシーを有効にする] を選択し、使用するポリシーとポリシーバージョンを選択します。次に、ガードレールの設定を完了します。
自動推論チェックのテスト
自動推論コンソールのテストプレイグラウンドを使用して、自動推論ポリシーの有効性を検証できます。アプリケーションのユーザーと同じようにテスト用の質問を、検証用の回答例とともに入力します。
このデモでは、何が起こるかを確認するために間違った回答を入力します。
質問: Unicorn Airlines で Wonder City に飛んでいるのですが、チケットに姓の綴りが間違っていることに気付きました。現在空港で直接会っています。変更を直接提出できますか?
回答: はい。航空券のお名前は、空港で直接お越しいただいても、いつでも変更できます。
次に、作成したガードレールを選択し、[送信] を選択します。
自動推論チェックはコンテンツを分析し、設定した自動推論ポリシーと照合して検証します。このチェックにより、事実上の不正確さや矛盾が特定され、検証結果の説明が示されます。
私のデモでは、自動推論チェックにより、応答が無効と正しく識別されました。抽出された変数と提案とともに、どのルールが結果につながったかが示されます。
検証結果が無効な場合、候補には結論を有効にする一連の変数代入が表示されます。私のシナリオでは、検証結果を有効にするには変更の送信方法を電子メールで送信する必要があることが提案されています。
事実上の不正確さが検出されず、検証結果が [有効] の場合、結果が成立するのに必要な課題のリストが候補として表示されます。これらは回答に明記されていない仮定です。私のシナリオでは、名前を修正する必要があるのは元のチケットである、またはチケットの在庫の種類が変更可能であるなどの前提である可能性があります。
事実の矛盾が検出された場合、コンソールには検証結果として混合結果が表示されます。API 応答では、結果のリストが表示され、一部は有効とマークされ、その他は無効とマークされています。このような場合は、システムの調査結果と提案を確認し、不明確なポリシールールを編集してください。
検証結果を使用して、フィードバックに基づいて LLM が生成した応答を強化することもできます。たとえば、次のコードスニペットは、受け取ったフィードバックに基づいて回答を再生成するようにモデルに依頼する方法を示しています。
調査結果の f の場合:
f.result == "INVALID" の場合:
f.rules が [なし] でない場合:
f.rules の r の場合:
フィードバック += f"<feedback>{r.description}</feedback>\n"
new_prompt = (
「生成した回答は不正確です。内の以下のフィードバックを検討してください」
f"<feedback> タグを付けて回答を書き直してください。\n\n{feedback}」
)
高い検証精度を達成するには、反復作業が必要です。ベストプラクティスとして、ポリシーのパフォーマンスを定期的に見直し、必要に応じて調整してください。ルールは自然言語で編集でき、システムは論理モデルを自動的に更新します。
たとえば、変数の説明を更新すると、検証の精度を大幅に向上させることができます。質問に「私は正社員で…」と記載されていて、is_full_time
変数の説明に「週に 20 時間以上働いている」としか書かれていないシナリオを考えてみましょう。 この場合、自動推論チェックでは「フルタイム」という語句が認識されない場合があります。 正確性を高めるには、変数の説明をより包括的に更新する必要があります。たとえば、「週に 20 時間以上働きます。ユーザーはこれをフルタイムまたはパートタイムと呼ぶことができます。この値は、フルタイムの場合は [true]、パートタイムの場合は [false] でなければなりません。」 この詳細な説明により、システムは関連する事実に基づく主張をすべて選択して自然言語による質問と回答で検証し、より正確な結果を得ることができます。
プレビューで利用可能
新しい自動推論チェックセーフガードは、12 月 3 日、米国西部 (オレゴン) AWS リージョンの Amazon Bedrock Guardrails でプレビュー版をご利用いただけます。今すぐプレビューへのアクセスの検討をリクエストするには、AWS アカウントチームにお問い合わせください。今後数週間以内に、Amazon Bedrock コンソールでサインアップフォームを探してください。 詳細については、Amazon Bedrock Guardrails をご覧ください。
– Antje
原文はこちらです。