敵対的機械学習:MLモデルを攻撃および防御する方法
公開: 2022-03-11今日、コンピュータービジョンの機械学習モデルは、自動運転車、顔認識、がん診断、さらには次世代のショップなど、多くの実際のアプリケーションで使用されており、顧客が棚から取り出した製品を追跡してクレジットを取得しています。カードは出発時に請求できます。
これらの機械学習システムの精度の向上は非常に印象的であるため、当然、それらを使用するアプリケーションの真の洪水につながりました。 それらの背後にある数学的基礎はすでに数十年前に研究されましたが、強力なGPUの比較的最近の出現により、研究者は複雑な機械学習システムを実験および構築するために必要な計算能力を手に入れました。 今日、コンピュータービジョンの最先端モデルは、最大数百万のパラメーターを持つディープニューラルネットワークに基づいており、わずか10年前には利用できなかったハードウェアに依存しています。
2012年、Alex Krizhevsky et altriは、深い畳み込みネットワークを実装する方法を最初に示しました。これは、当時、オブジェクト分類の最先端モデルになりました。 それ以来、元のモデルに対する多くの改善が公開されており、それぞれが精度を向上させています(VGG、ResNet、Inceptionなど)。 最近、機械学習モデルは、多くのコンピュータービジョンタスクで人間の精度、さらには人間を超える精度を達成することができました。
数年前は、機械学習モデルから誤った予測を取得することが一般的でした。 今日では、これは例外になり、特に実際のアプリケーションにデプロイされた場合、問題なく動作することが期待されるようになりました。
最近まで、機械学習モデルは通常、機械学習コンテストや学術論文などの実験室環境でトレーニングおよびテストされていました。 現在、実際のシナリオで展開されるため、モデルエラーに起因するセキュリティの脆弱性が深刻な懸念事項になっています。
この記事の目的は、画像認識で使用される最先端のディープニューラルネットワークが悪意のある攻撃者に簡単にだまされて、誤った予測を生成する方法を説明および実証することです。 通常の攻撃戦略に慣れたら、モデルをそれらから防御する方法について説明します。
敵対的機械学習の例
基本的な質問から始めましょう:敵対的機械学習の例は何ですか?
敵対的な例は、機械学習モデルをだますために意図的に設計された悪意のある入力です。
この記事では、画像分類を実行する機械学習モデルに注意を向けます。 したがって、敵対的な例は、モデルが正しく分類できない攻撃者によって作成された入力画像になります。
例として、ImageNetでトレーニングされたGoogLeNetを使用して、機械学習モデルとして画像分類を実行してみましょう。 以下に、人間の目には見分けがつかないパンダの2つの画像があります。 左側の画像は、GoogLeNetモデルのトレーニングに使用されるImageNetデータセットのクリーンな画像の1つです。 右側のものは、中央の画像にノイズベクトルを追加することによって作成された、最初のもののわずかな変更です。 最初の画像は、予想どおり、モデルによってパンダであると予測されています。 代わりに、2番目は(非常に高い信頼度で)テナガザルであると予測されます。
最初の画像に追加されるノイズはランダムではなく、攻撃者による注意深い最適化の出力です。
2番目の例として、3Dプリンターを使用して3Dの敵対的な例を合成する方法を見てみましょう。 下の画像は、著者が印刷した3Dカメのさまざまなビューと、GoogleInceptionv3モデルによる誤分類を示しています。
人間を超える分類精度を備えた最先端のモデルが、このような一見愚かな間違いをどのように犯すことができるでしょうか。
ニューラルネットワークモデルが持つ傾向のある弱点を掘り下げる前に、私たち人間には独自の敵対的な例があることを思い出してください。 下の画像を見てください。 何が見えますか? らせん状または一連の同心円?
これらのさまざまな例が明らかにしているのは、機械学習モデルと人間の視覚は、画像に何があるかを理解するときに、まったく異なる内部表現を使用している必要があるということです。
次のセクションでは、敵対的な例を生成するための戦略を探ります。
敵対的な例を生成する方法
簡単な質問から始めましょう:敵対的な例は何ですか?
敵対的な例は、モデルが正しく分類するクリーンな画像を取得し、新しい画像がMLモデルによって誤って分類される原因となる小さな摂動を見つけることによって生成されます。
攻撃者が攻撃したいモデルに関する完全な情報を持っていると仮定しましょう。 これは基本的に、攻撃者がモデル$ J(\ theta、X、y)$の損失関数を計算できることを意味します。ここで、 $ X $は入力画像、 $ y $は出力クラス、 $ \theta$は内部です。モデルパラメータ。 この損失関数は、通常、分類方法の負の損失尤度です。
このホワイトボックスシナリオでは、いくつかの攻撃戦略があり、それぞれが、それらを生成するための計算コストと成功率の間のさまざまなトレードオフを表しています。 これらの方法はすべて、基本的に、入力画像の摂動を小さく保ちながら、モデル損失関数の変化を最大化しようとします。 入力画像空間の次元が高いほど、人間の目ではきれいな画像と見分けがつかない敵対的な例を生成しやすくなります。
L-BFGS法
次のボックス制約付き最適化問題を解くことにより、敵対的な例の${x}'$を見つけました。
ここで、 $ c> 0 $は、これも解決する必要のあるパラメーターです。 直感的には、敵対的な画像$ {x}'$を探して、クリーンな画像( $ \ left | x-{x}'\ right | $ )に関する歪みと損失の加重和を求めます。間違ったクラスは可能な限り最小限です。
ディープニューラルネットワークのような複雑なモデルの場合、最適化問題には閉じた形の解がないため、反復数値法を使用する必要があります。 このため、このL-BFGS法は低速です。 ただし、成功率は高いです。
高速グラデーションサイン(FGS)
高速勾配符号(FGS)法を使用して、クリーンな画像ベクトル$X$と真のクラス$y$で与えられる、初期点周辺の損失関数の線形近似を行います。
この仮定の下で、損失関数の勾配は、損失の最大の変化を生成するために入力ベクトルを変更する必要がある方向を示します。 摂動のサイズを小さく保つために、実際の基準ではなく、勾配の符号のみを抽出し、それをスモールファクターイプシロンでスケーリングします。
このようにして、初期画像と変更された画像のピクセル単位の差が常にイプシロンよりも小さくなるようにします(この差がL_infinityノルムです)。
勾配は、バックプロパゲーションを使用して効率的に計算できます。 この方法は、実装が最も速く、計算コストが最も低い方法の1つです。 ただし、その成功率は、L-BFGSのようなより高価な方法よりも低くなります。
Adversarial Machine Learning at Scaleの著者は、ImageNetデータセットのトップ1予測で63%から69%の成功率があり、イプシロンは2から32であると述べています。ロジスティック回帰などの線形モデルの場合、高速勾配符号法正確です。 この場合、敵対的な例に関する別の研究論文の著者は、99%の成功率を報告しています。
反復高速勾配記号
前の方法の明らかな拡張は、より小さなステップサイズのアルファでそれを数回適用し、全体のステップ長をクリップして、クリーンな画像と敵対的な画像の間の歪みがイプシロンよりも小さいことを確認することです。

Nicholas Carliniの論文で提案されているような他の手法は、L-BFGSの改良です。 また、計算に費用がかかりますが、成功率は高くなります。
ただし、ほとんどの実際の状況では、攻撃者はターゲットモデルの損失関数を知りません。 この場合、攻撃者はブラックボックス戦略を採用する必要があります。
ブラックボックス攻撃
研究者は、敵対的な例がモデル間で非常にうまく転送されることを繰り返し観察しました。つまり、ターゲットモデルA用に設計できますが、同様のデータセットでトレーニングされた他のモデルに対しては効果的です。
これは、攻撃者がモデルに関する完全な情報にアクセスできない場合に有利に使用できる、敵対的な例のいわゆる転送可能性プロパティです。 攻撃者は、次の手順に従って敵対的な例を生成できます。
- $ i=1…n$の入力$X_i$を使用してターゲットモデルをクエリし、出力$y_i$を保存します。
- トレーニングデータ$(X_i、y_i)$を使用して、代替モデルと呼ばれる別のモデルを作成します。
- 上記のホワイトボックスアルゴリズムのいずれかを使用して、代替モデルの敵対的な例を生成します。 それらの多くは正常に転送され、ターゲットモデルの敵対的な例にもなります。
商用の機械学習モデルに対するこの戦略の成功したアプリケーションは、このComputerVisionFoundationの論文で紹介されています。
敵対的な例に対する防御
攻撃者は、モデルに関するすべての情報を利用して攻撃を仕掛けます。 明らかに、予測時にモデルが出力する情報が少なければ少ないほど、攻撃者が攻撃を成功させるのは難しくなります。
本番環境で分類モデルを保護するための最初の簡単な方法は、予測された各クラスの信頼スコアを表示しないようにすることです。 代わりに、モデルは上位$ N $ (たとえば、5)の最も可能性の高いクラスのみを提供する必要があります。 信頼スコアがエンドユーザーに提供されると、悪意のある攻撃者はそれらを使用して損失関数の勾配を数値的に推定できます。 このようにして、攻撃者は、たとえば高速勾配記号法を使用してホワイトボックス攻撃を作成できます。 先に引用したComputerVisionFoundationの論文で、著者は商用機械学習モデルに対してこれを行う方法を示しています。
文献で提案されている2つの防御策を見てみましょう。
防御的な蒸留
このメソッドは、元の無防備なモデルよりも勾配がはるかに小さい新しいモデルを生成しようとします。 勾配が非常に小さい場合、攻撃者は損失関数の十分な変化を達成するために入力画像の大きな歪みを必要とするため、FGSや反復FGSのような手法はもはや役に立ちません。
防御蒸留は、ネットワークの最後のソフトマックス層に温度と呼ばれる新しいパラメータ$T$を導入します。
T = 1の場合、通常のソフトマックス関数があることに注意してください。 $ T $の値が高いほど、入力画像に対する損失の勾配は小さくなります。
防御蒸留は次のように進行します。
- 温度$T»1$で、教師ネットワークと呼ばれるネットワークをトレーニングします。
- トレーニングを受けた教師ネットワークを使用して、トレーニングセット内の各画像のソフトラベルを生成します。 画像のソフトラベルは、モデルが各クラスに割り当てる確率のセットです。 たとえば、出力画像がオウムの場合、教師モデルは(90%オウム、10%パパガヨ)のようなソフトラベルを出力する場合があります。
- 再び温度$T$を使用して、ソフトラベルで2番目のネットワークである蒸留ネットワークをトレーニングします。 ソフトラベルを使用したトレーニングは、過剰適合を減らし、蒸留ネットワークのサンプル外の精度を向上させる手法です。
- 最後に、予測時に、温度$ T =1$で蒸留ネットワークを実行します。
防御的な蒸留は、深部神経ネットワークに対する敵対的な混乱に対する防御として、蒸留で試みられた一連の攻撃からネットワークを保護することに成功しています。
残念ながら、カリフォルニア大学のその後の論文であるバークレー校の研究者は、防御的な蒸留を打ち負かす新しい一連の攻撃方法を提示しました。 これらの攻撃は、L-BFGS法を改良したものであり、防御的な蒸留が敵対的な例に対する一般的な解決策ではないことを証明しています。
敵対的訓練
今日、敵対的訓練は最も効果的な防衛戦略です。 敵対的な例が生成され、モデルのトレーニング時に使用されます。 直感的には、モデルがトレーニング中に敵対的な例を見る場合、予測時のパフォーマンスは、同じ方法で生成された敵対的な例の方が優れています。
理想的には、既知の攻撃方法を使用して、トレーニング中に敵対的な例を生成したいと思います。 ただし、高次元の大きなデータセット(ImageNetなど)の場合、L-BFGSのような堅牢な攻撃方法と、Berkeleyの論文で説明されている改善は計算コストがかかりすぎます。 実際には、FGSのような高速な方法を使用するだけの余裕があるか、反復FGSを使用できます。
敵対的トレーニングでは、クリーンな例の通常の損失関数と敵対的例の損失関数の加重和である修正損失関数を使用します。
トレーニング中、 $ m $のクリーンな画像のバッチごとに、ネットワークの現在の状態を使用して$k$の敵対的な画像を生成します。 クリーンな例と敵対的な例の両方でネットワークを転送し、上記の式を使用して損失を計算します。
この会議論文で提示されたこのアルゴリズムの改善は、アンサンブル敵対訓練と呼ばれます。 現在のネットワークを使用して敵対的な例を生成する代わりに、事前にトレーニングされたいくつかのモデルを使用して敵対的な例を生成します。 ImageNetでは、この方法により、ブラックボックス攻撃に対するネットワークの堅牢性が向上します。 この防御は、敵対的攻撃に対する防御に関するNIPS2017コンペティションの第1ラウンドの勝者でした。
結論とさらなるステップ
今日の時点で、機械学習モデルを攻撃することは、それを防御することよりも簡単です。 実際のアプリケーションに導入された最先端のモデルは、防御戦略が採用されていない場合、敵対的な例に簡単にだまされ、潜在的に重大なセキュリティ問題への扉を開きます。 最も信頼できる防御戦略は敵対的訓練であり、敵対的例が生成され、訓練時にクリーンな例に追加されます。
さまざまな攻撃に対する画像分類モデルの堅牢性を評価する場合は、オープンソースのPythonライブラリcleverhansを使用することをお勧めします。 この記事で説明したものを含め、多くの攻撃方法をモデルに対してテストできます。 このライブラリを使用して、モデルの敵対的なトレーニングを実行し、敵対的な例に対する堅牢性を高めることもできます。
新しい攻撃とより良い防御戦略を見つけることは、活発な研究分野です。 機械学習モデルを実際のアプリケーションでより堅牢で安全にするためには、より理論的および経験的な作業の両方が必要です。
読者にこれらのテクニックを試して、新しい興味深い結果を公開することをお勧めします。 さらに、現在の記事に関するフィードバックは、著者によって大歓迎です。
- サウンドロジックと単調なAIモデル
- TensorFlowでの最急降下法の多くのアプリケーション