Adversarial Attacks
敵対的攻撃によって機械学習モデルが操作される仕組みを解説します。ホワイトボックス攻撃とブラックボックス攻撃の戦略、AIの安全性に対するリスク、Ultralytics YOLO26による防御について学びます。
敵対的攻撃は、機械学習 (ML)モデルを欺き、高い確信度で誤った予測を行わせるために設計された、高度な操作技術の一種です。これらの攻撃は、画像、音声、テキストなどの入力データに、微妙で、多くの場合は人間には知覚できない摂動を加えることで実行されます。こうした変更は人間の観察者には無害またはランダムに見えますが、高次元ニューラルネットワークの決定境界に存在する特定の数学的な脆弱性を悪用します。人工知能 (AI)システムが安全性が極めて重要なインフラに不可欠なものとなる中、堅牢なAI安全性プロトコルと防御メカニズムを開発するには、これらの脆弱性がどのように機能するかを理解することが不可欠です。
敵対的攻撃の仕組み#
一般的な深層学習 (DL)のトレーニングプロセスでは、モデルはトレーニングデータセットでの誤差を最小化するように重みを最適化します。しかし、これらのモデルは本質的に、多次元空間内に複雑なマップを作成します。敵対的攻撃では、この空間内で入力を境界の反対側へ押し出し、モデルの分類を反転させるために必要な正確な「方向」を計算します。たとえば、コンピュータビジョン (CV)では、パンダの画像のピクセル値を計算された量の「ノイズ」によって変更すると、人間の目には依然としてパンダの画像にしか見えないにもかかわらず、システムがそれをテナガザルだと高い確信度で誤分類する可能性があります。
攻撃戦略は、攻撃者が標的システムに対して持つアクセスレベルによって、一般的に分類されます。
- ホワイトボックス攻撃: 攻撃者は、モデルのアーキテクチャ、勾配、モデルの重みを完全に把握できます。これにより、攻撃者は最も効果的な摂動を数学的に計算できます。多くの場合、Fast Gradient Sign Method (FGSM)などの技術が使用されます。
- ブラックボックス攻撃: 攻撃者はモデル内部のパラメーターに関する知識を持たず、入力と出力のみを観測できます。攻撃者は、「代替モデル」を使用して敵対的サンプルを生成することがよくあります。これらのサンプルは標的システムにも効果的に転用されます。この性質は転用可能性と呼ばれます。
実世界での用途とリスク#
敵対的攻撃は理論研究で取り上げられることが多い一方、実際の導入、特に自律システムやセキュリティにおいて、具体的なリスクをもたらします。
- 自動運転車: 自動運転車は、交通標識を解釈するために物体検出に大きく依存しています。研究では、停止標識に巧妙に設計したステッカーやテープを貼ることで、車両のビジョンシステムにそれを制限速度標識として認識させられることが実証されています。この種の物理世界に対する攻撃は、自動車分野のAIアプリケーションにおいて危険な障害を引き起こす可能性があります。
- 顔認識回避者: 生体認証に基づいてアクセスを制御するセキュリティシステムは、敵対的な「パッチ」によって侵害される可能性があります。これらは、眼鏡や衣服に着用できる印刷パターンであり、特徴抽出プロセスを妨害します。これにより、権限のない個人が検出を完全に回避したり、特定のユーザーになりすましたりして、セキュリティアラームシステムを迂回できるようになります。
Pythonで敵対的サンプルを生成する#
一部のモデルがどれほど脆弱になり得るかを理解するには、画像がいかに簡単に摂動されるかを確認すると役立ちます。YOLO26のようなモデルを使った標準的な推論は一般用途に対して堅牢ですが、研究者はモデルモニタリングと防御を改善するために、攻撃をシミュレーションすることがよくあります。次の概念例では、PyTorchを使用して、画像に対する敵対的摂動(ノイズ)を計算するために勾配がどのように使われるかを示します。
import torch.nn.functional as F
# Assume 'model' is a loaded PyTorch model and 'image' is a normalized tensor
# 'target_class' is the correct label index for the image
def generate_adversarial_noise(model, image, target_class, epsilon=0.01):
# Enable gradient calculation for the input image
image.requires_grad = True
# Forward pass: get prediction
output = model(image)
# Calculate loss based on the correct class
loss = F.nll_loss(output, target_class)
# Backward pass: calculate gradients of loss w.r.t input
model.zero_grad()
loss.backward()
# Create perturbation using the sign of the data gradient (FGSM)
# This pushes the image in the direction of maximizing error
perturbation = epsilon * image.grad.data.sign()
return perturbation関連する概念#
敵対的攻撃と、その他のモデルの障害や操作を区別することが重要です。
- データポイズニング: 推論(テスト時)中に入力を操作する敵対的攻撃とは異なり、データポイズニングではモデルを構築する前にトレーニングデータ自体を汚染し、隠れたバックドアやバイアスを埋め込みます。
- プロンプトインジェクション: これは大規模言語モデル (LLMs)とテキストインターフェースに特有のものです。概念的にはモデルを欺くという点で類似していますが、ピクセルや信号データを数学的に摂動させるのではなく、意味的な言語操作に依存します。
- 過学習: これは、モデルが基礎となるパターンではなく、トレーニングデータ内のノイズを学習してしまうトレーニング上の障害です。過学習したモデルは、決定境界が過度に複雑で脆弱になるため、敵対的攻撃の影響を受けやすいことがよくあります。
これらの攻撃に対する防御の開発は、現代のMLOpsの中核を成す要素です。攻撃を受けたサンプルをトレーニングセットに追加する敵対的トレーニングなどの技術により、モデルの耐性を高めることができます。Ultralytics Platformのようなプラットフォームは、厳格なトレーニングおよび検証パイプラインを実現し、チームがエッジデバイスにデプロイする前にモデルの堅牢性を評価できるようにします。









