AI

Azure AI Content Safety のカスタムカテゴリ を試してみる

こんにちは、セキュリティチームのぐっちーです。Azure AI Content Safety は、AIに係る機密情報漏洩や不適切な利用方法を防ぐ機能ですが、最近新しい機能として「カスタムカテゴリ」という機能が登場しました。サクッと試して本ブログにまとめてみました。

注意
  • 本ブログは2024年7月29日時点の情報を元に作成しています。

Azure AI Content Safety とは

Azure AI Content Safety は、AIに入力する前にコンテンツをフィルタリングし、機密情報漏洩や不適切な利用方法を防ぐ機能です。主な用途として以下のような用途があります。

  • アダルトコンテンツや暴力的な内容のフィルタリング
  • AIの悪用防止
  • プロンプトを通じた「AIの脱獄」の試みの検出

このように、生成AIへの入力に係るセキュリティリスクに対応できるツールとなっています。ちなみにマイクロソフトの方が資料を公開していたりするので、そちらをみていただくと基本的な機能についてキャッチアップできると思います。

カテゴリ説明
ヘイトと公平性ヘイトと公平性に関連する危害とは、そのグループの特定の差別化属性に基づいて個人または ID グループを攻撃する、あるいはそのグループに関して差別的な言葉を使用するコンテンツを指します。たとえば、次のようなものが挙げられます。
– 人種、民族、国籍
– 性別のアイデンティティ グループと表現
– 性的指向
– 宗教個人の外観、身体のサイズ
– 障碍の状態
– 嫌がらせといじめ
性的性的とは、解剖学的臓器や生殖器、恋愛関係、性行為、性愛的または情愛的な用語で描写された行為 (暴行または意志に反した強制的な性的暴力行為として描写されたものを含む) に関連する言葉を表します。 たとえば、次のようなものが挙げられます。
– 低俗なコンテンツ
– 売春
– ヌードおよびポルノ
– 迷惑行為児童搾取、児童虐待、チャイルド グルーミング
暴力暴力は、人や何かに苦痛を与える、傷つける、損傷を与える、殺害することを意図した物理的行為に関連する言葉、武器、銃器などを表します。たとえば、次のようなものが挙げられます。
– 武器
– いじめと脅迫
– テロリスト、暴力的な過激主義
– ストーカー行為
自傷行為自傷行為とは、故意に自分の体に苦痛を与える、傷つける、損傷を与える、または自殺を意図した物理的な行為に関連する言葉を表します。たとえば、次のようなものが挙げられます。
– 摂食障害
– いじめと脅迫
デフォルトのカテゴリ(引用:Azure OpenAI Service のコンテンツのフィルター処理 – Azure OpenAI | Microsoft Learn

カスタム カテゴリ(Custom Categories) の概要

カスタム カテゴリは、Azure AI Content Safetyの新機能として公開プレビューが開始されました。主な特徴はユーザー独自のトレーニングデータを用意し、組織特有のカスタム カテゴリを作成することでAzure AI Content Safetyの機能を拡張できる点です。

先に紹介した通常のコンテンツフィルターであれば、アダルトや暴力的な文言、ブラックリストなどある程度の枠組みの中での検出となります。多くの「従業員向けAIボットのユースケース」ではそれで事足りそうな一方で、特殊な事情を持った組織もそれなりにあります。また、外部公開するチャットボットであれば、本来の用途以外で利用されるリスクにも、手厚く対応する必要がありそうです。そのようなユースケースに活用いただきたい機能かなと個人的には思いました。

実装手順

検証シナリオ:M&A情報の保護

今回の検証では、M&A(合併・買収)に関する情報をAIに渡したくないケースを想定しています。一般的にM&A情報は株価にも影響を与えることもあり、非常に機密性が高く、多くの組織では外部への漏洩を厳しく制限されるべき情報です。AIモデルが入力データを学習しないタイプのモデルであっても、このような機密情報を入力してはならないという取り決めがあっても不自然ではありません。僕はM&Aにはあまり深く関わったことはありませんが、想雑でユースケースとトレーニングデータを定義して検証しました。

注意

僕は特段M&Aの実務に詳しいわけではないので、「想定がおかしいよ」などあれば優しく教えてください🥺

1. トレーニングデータの準備

まず、トレーニングデータをJSONL形式で作成します。データの最小数は50となっており、以下は作成したトレーニングデータの例です。このデータをBlobストレージのコンテナに格納します。

{"text":"買収対象企業の秘密保持契約書の作成方法", "isPositive": true}
{"text":"デューデリジェンスにおける重要な財務指標の分析", "isPositive": true}
{"text":"競合他社からの買収提案への対応策", "isPositive": true}
{"text":"企業価値評価におけるDCF法の適用", "isPositive": true}
{"text":"クロージング前の重要な情報の管理方法", "isPositive": true}
{"text":"取締役会への買収提案プレゼンテーションの準備", "isPositive": true}
{"text":"シナジー効果の定量化手法", "isPositive": true}
{"text":"PMIにおける人事統合の戦略立案", "isPositive": true}
{"text":"クロージング後の統合計画の策定", "isPositive": true}
{"text":"税務上のストラクチャリングの最適化", "isPositive": true}
{"text":"競争法上の審査対応の準備", "isPositive": true}
{"text":"買収資金調達のストラクチャリング", "isPositive": true}
{"text":"アーンアウト条項の交渉戦略", "isPositive": true}
{"text":"重要な知的財産権の評価方法", "isPositive": true}
{"text":"クロージング条件の設定と交渉", "isPositive": true}
{"text":"マイノリティ株主への対応策", "isPositive": true}
{"text":"のれんの減損リスクの評価", "isPositive": true}
{"text":"労働組合との事前協議の進め方", "isPositive": true}
{"text":"重要顧客との関係維持のための戦略", "isPositive": true}
{"text":"クロージング後の経営陣留保策", "isPositive": true}
{"text":"買収対象会社の隠れた負債の発見方法", "isPositive": true}
{"text":"非公開情報の管理とインサイダー取引防止策", "isPositive": true}
{"text":"敵対的買収防衛策の構築", "isPositive": true}
{"text":"クロージング後の利益相反取引の管理", "isPositive": true}
{"text":"企業文化の統合計画の立案", "isPositive": true}
{"text":"重要な訴訟リスクの評価方法", "isPositive": true}
{"text":"クロージング後の組織再編計画の策定", "isPositive": true}
{"text":"買収後のコスト削減計画の立案", "isPositive": true}
{"text":"クロージング前の競争法上の情報交換の管理", "isPositive": true}
{"text":"MBOにおける特別委員会の設置と運営", "isPositive": true}
{"text":"クロージング後の会計方針の統一化計画", "isPositive": true}
{"text":"重要な環境リスクの評価方法", "isPositive": true}
{"text":"買収対象会社の重要契約の解除リスク分析", "isPositive": true}
{"text":"クロージング後のITシステム統合計画", "isPositive": true}
{"text":"多国間M&Aにおける税務ストラクチャーの最適化", "isPositive": true}
{"text":"買収価格の算定根拠の文書化", "isPositive": true}
{"text":"レピュテーションリスクの評価と対応策", "isPositive": true}
{"text":"クロージング後の役員人事計画の策定", "isPositive": true}
{"text":"重要な規制当局への事前相談の進め方", "isPositive": true}
{"text":"企業秘密の保護と情報漏洩防止策", "isPositive": true}
{"text":"クロージング後の資金管理体制の構築", "isPositive": true}
{"text":"株式買取請求権への対応策の検討", "isPositive": true}
{"text":"クロージング後のブランド統合戦略", "isPositive": true}
{"text":"重要な取引先との再交渉戦略", "isPositive": true}
{"text":"クロージング後の研究開発体制の再構築", "isPositive": true}
{"text":"買収に伴う会計・税務上の影響分析", "isPositive": true}
{"text":"クロージング後の内部統制システムの統合", "isPositive": true}
{"text":"重要な係争中の訴訟への対応策", "isPositive": true}
{"text":"企業結合審査対応のための論理構築", "isPositive": true}
{"text":"クロージング前のITデューデリジェンスの実施", "isPositive": true}

2. リソースの作成とアクセス権の付与

  1. Azure AI Content Safety のリソースを作成
  2. Azure AI Content Safety のリソースのマネージドIDを有効化
  3. トレーニングデータを格納したBlobストレージのコンテナ対して、Azure AI Content Safety のリソースのマネージドIDに読み取り権限を付与

3. カスタムカテゴリのトレーニング

Azure AI Studio にて、Blobストレージに格納したデータを使用してトレーニングを実行します。私の検証では、仮にトレーニングデータが最小の50であったとしても、トレーニングには1時間以上かかりました。トレーニングが完了すると、カスタム カテゴリが利用可能になります。

4. 動作確認

AIを使用してテストデータを生成し、M&Aに関するトピックをブロックできることを確認しました。例えば「体調はどうですか?」と当たり障りのない質問した場合は、ポリシー的にOKという結果が返ってきます。

一方、「他社からの買い付け提案に対して、どのように対処するのが賢明か?」というような、M&Aっぽいトピックを投入してみます。すると、作成したカスタム カテゴリに該当し、アラートが表示されました。

誤検知と学習データの調整

50件の訓練データで完璧に制御してくれるかというと、全くもってそんなことはありません。例えば、「Teamsで画面共有をするにはどうしたらいいか?」という質問は明らかにM&A実務に関するトピックではありません。ITヘルプデスク的なトピックです。しかし、上記のトレーニングデータで実施したところブロックされてしまいました。

訓練データ次第では誤検知もそれなりに出る。

そこで、以下の例のように、ブロックしたいカテゴリには該当しないデータも登録しておくと、少し精度が改善されたように思います。実際、高い精度を出すには、それなりに網羅性があるテストデータが必要不可欠なのかなと思いました。もし、Azure OpenAI 等を活用したシステムを運用されている場合は、そのチャットログなどを(エンドユーザーとの利用規約に反しない範囲で)取得しておくと、データセットの作成が楽になりそうだと感じました。

{"text":"Teamsでビデオ会議を開始する方法", "isPositive": false}
{"text":"社内ネットワークへのVPNアクセス設定手順", "isPositive": false}
{"text":"オフィスのプリンターが紙詰まりした時の対処法", "isPositive": false}
上記のようなカテゴリに該当しないデータで学習させたカスタム カテゴリでテスト

おわりに

Azure AI Content Safetyのカスタム カテゴリ機能は、非常にユニークで興味深い機能です。現時点では有効なユースケースを把握できているわけではありませんが、機微な情報を取り扱う業会にもってこいな機能であると考えています。

  • 政府機関等が外部に公開するチャットボットの脱獄や不正利用の防止
  • 製造業やコンテンツ企業(ゲーム会社等)での機密技術情報の管理
  • 金融機関での内部情報漏洩防止
  • 医療機関での患者情報保護

とはいっても、まだこの機能の可能性についてさらに深く掘り下げられているとは到底思えないため、興味のある方はぜひ一緒に議論し、新たなユースケースを探っていけたらと思います。ご質問やご意見がありましたら、お気軽にコメントやメッセージをお寄せください。

参考文献

ぐっち

コンサル会社にてISO27017やISMAP等のセキュリティ規格案件を経験した後、クラティブに入社。セキュリティチーム所属ですが、最近は生成AI等を使ったシステムの開発や導入をやっています。趣味はダンス。Microsoft MVP for AI Platform & M365(Copilot)