今日、コンピュータービジョンの機械学習モデルは、自動運転車、顔認識、がん診断、さらには次世代のショップなど、多くの実際のアプリケーションで使用されており、顧客が棚から取り出した製品を追跡してクレジットを獲得しています。カードは出発時に請求できます。
通話料金の計算方法
これらの機械学習システムの精度の向上は非常に印象的であるため、当然、それらを使用するアプリケーションの真の洪水につながりました。それらの背後にある数学的基礎はすでに数十年前に研究されましたが、強力なGPUの比較的最近の出現により、研究者は複雑な機械学習システムを実験および構築するために必要な計算能力を手に入れました。今日、コンピュータービジョンの最先端モデルは、最大数百万のパラメーターを持つディープニューラルネットワークに基づいており、わずか10年前には利用できなかったハードウェアに依存しています。
2012年、Alex Krizhevsky et altriは、深い畳み込みネットワークを実装する方法を最初に示しました。これは、当時、オブジェクト分類の最先端モデルになりました。それ以来、元のモデルに対する多くの改善が公開されており、それぞれが精度を向上させています(VGG、ResNet、Inceptionなど)。最近、機械学習モデルは、多くのコンピュータービジョンタスクで人間の精度、さらには人間を超える精度を達成することに成功しています。
数年前は、機械学習モデルから誤った予測を取得することが一般的でした。今日では、これは例外になり、特に実際のアプリケーションにデプロイされた場合、問題なく動作することが期待されるようになりました。
最近まで、機械学習モデルは通常、 実験室 機械学習コンテストや学術論文などの環境。今日では、実際のシナリオで展開されるため、モデルエラーに起因するセキュリティの脆弱性が深刻な懸念事項になっています。
この記事の目的は、画像認識で使用される最先端のディープニューラルネットワークが悪意のある攻撃者に簡単にだまされて、誤った予測を生成する方法を説明および実証することです。通常の攻撃戦略に慣れたら、モデルをそれらから防御する方法について説明します。
基本的な質問から始めましょう: 敵対的機械学習の例は何ですか?
敵対的な例は、機械学習モデルをだますために意図的に設計された悪意のある入力です。
この記事では、画像分類を実行する機械学習モデルに注意を限定します。したがって、敵対的な例は、モデルが正しく分類できない攻撃者によって作成された入力画像になります。
例として、 ImageNetでトレーニングされたGoogLeNet 機械学習モデルとして画像分類を実行します。以下に、人間の目には見分けがつかないパンダの2つの画像があります。左側の画像は、GoogLeNetモデルのトレーニングに使用されるImageNetデータセットのクリーンな画像の1つです。右側のものは、中央の画像にノイズベクトルを追加することによって作成された最初のもののわずかな変更です。最初の画像は、予想どおり、モデルによってパンダであると予測されます。代わりに、2番目は(非常に高い信頼性で)テナガザルであると予測されます。
最初の画像に追加されるノイズはランダムではなく、攻撃者による注意深い最適化の出力です。
2番目の例として、3Dプリンターを使用して3Dの敵対的な例を合成する方法を見てみましょう。下の画像は、著者が印刷した3Dカメのさまざまなビューと、Google Inceptionv3モデルによる誤分類を示しています。
人間以上の分類精度を持つ最先端のモデルが、このような一見愚かな間違いをどのように犯すことができるでしょうか?
クールなC ++プログラム
ニューラルネットワークモデルが持つ傾向のある弱点を掘り下げる前に、私たち人間には独自の敵対的な例があることを思い出してください。下の画像を見てください。何が見えますか?らせん状または一連の同心円?
これらのさまざまな例が明らかにしているのは、機械学習モデルと人間の視覚は、画像に何があるかを理解するときに、まったく異なる内部表現を使用している必要があるということです。
次のセクションでは、敵対的な例を生成するための戦略を探ります。
簡単な質問から始めましょう: 敵対的な例は何ですか?
敵対的な例は、モデルが正しく分類するクリーンな画像を取得し、新しい画像がMLモデルによって誤って分類される原因となる小さな摂動を見つけることによって生成されます。
攻撃者が攻撃したいモデルに関する完全な情報を持っているとしましょう。これは本質的に、攻撃者がモデルの損失関数を計算できることを意味します$ J( theta、X、y)$どこ$ X $入力画像です、$と$は出力クラスであり、$ theta $内部モデルパラメータです。この損失関数は通常、分類方法の負の損失尤度です。
このホワイトボックスシナリオでは、いくつかの攻撃戦略があり、それぞれが、それらを生成するための計算コストと成功率の間の異なるトレードオフを表しています。これらの方法はすべて、基本的に、入力画像の摂動を小さく保ちながら、モデル損失関数の変化を最大化しようとします。入力画像空間の次元が高いほど、人間の目ではきれいな画像と見分けがつかない敵対的な例を生成しやすくなります。
敵対的な例を見つけました$ {x} '次のボックス制約付き最適化問題を解くことによって:
$$ begin {matrix} text {minimize} c cdot left | x- {x} ' right | ^ 2_2 + text {loss} _ {f、1} {x}' \ text {such that} {x} ' epsilon left [0、1 right ] ^ n end {matrix} $$どこ$ c> $ 0も解決する必要のあるパラメータです。直感的に、敵対的な画像を探します$ {x} 'きれいな画像に関する歪みの加重和($ left | x- {x} ’ right | $)そして間違ったクラスに関する損失は可能な限り最小限です。
ディープニューラルネットワークのような複雑なモデルの場合、最適化問題には閉形式の解がないため、反復数値法を使用する必要があります。このため、これ L-BFGS法 遅い。ただし、成功率は高いです。
とともに 高速グラジエントサイン(FGS)メソッド 、クリーンな画像ベクトルによって与えられる、初期点の周りの損失関数の線形近似を作成します$ X $そして真のクラス$と$。
この仮定の下で、損失関数の勾配は、損失を最大に変化させるために入力ベクトルを変更する必要がある方向を示します。摂動のサイズを小さく保つために、実際のノルムではなく、勾配の符号のみを抽出し、スモールファクターイプシロンでスケーリングします。
このようにして、初期画像と変更された画像の間のピクセル単位の差が常にイプシロンよりも小さくなるようにします(この差はL_infinityノルムです)。
$$ X ^ {adv} = X + epsilon text {sign} left( bigtriangledown_x J left(X、y_ {true} right) right)$$勾配は、バックプロパゲーションを使用して効率的に計算できます。この方法は、実装が最も速く、計算コストが最も低い方法の1つです。ただし、その成功率は、L-BFGSのようなより高価な方法よりも低くなります。
の作者 大規模な敵対的機械学習 ImageNetデータセットのトップ1予測で63%から69%の成功率があり、イプシロンは2から32の間であると述べました。ロジスティック回帰などの線形モデルの場合、高速勾配符号法は正確です。この場合、別の作者 敵対的な例に関する研究論文 99%の成功率を報告します。
明らかな 前の方法の拡張 小さいステップサイズのアルファで数回適用し、ステップの全長をクリップして、クリーンな画像と敵対的な画像の間の歪みがイプシロンよりも小さいことを確認します。
運営予算または資本予算に関して正しい説明は次のうちどれですか。$$ X ^ {adv} _0 = X、X ^ {adv} _ {N + 1} = Clip_ {X、 epsilon} left {X ^ {adv} _ {N} + alpha text {sign } left( bigtriangledown_X J left(X ^ {adv} _N、y_ {true} right) right) right } $$
で提案されているもののような他の技術 ニコラス・カルリーニの論文 L-BFGSの改良点です。また、計算にコストがかかりますが、成功率は高くなります。
ただし、ほとんどの実際の状況では、攻撃者はターゲットモデルの損失関数を知りません。この場合、攻撃者はブラックボックス戦略を採用する必要があります。
研究者は、敵対的な例がモデル間で非常にうまく転送されることを繰り返し観察しました。つまり、ターゲットモデルA用に設計できますが、同様のデータセットでトレーニングされた他のモデルに対しては効果的です。
これは、攻撃者がモデルに関する完全な情報にアクセスできない場合に有利に使用できる、敵対的な例のいわゆる転送可能性プロパティです。攻撃者は、次の手順に従って敵対的な例を生成できます。
商用の機械学習モデルに対するこの戦略の成功したアプリケーションは、 このコンピュータビジョン財団の論文 。
攻撃者は、モデルに関するすべての情報を悪用して攻撃を仕掛けます。明らかに、予測時にモデルが出力する情報が少なければ少ないほど、攻撃者が攻撃を成功させるのは難しくなります。
本番環境で分類モデルを保護するための最初の簡単な方法は、予測された各クラスの信頼スコアを表示しないようにすることです。代わりに、モデルはトップのみを提供する必要があります$ N $(例:5)最も可能性の高いクラス。信頼スコアがエンドユーザーに提供されると、悪意のある攻撃者はそれらを使用して損失関数の勾配を数値的に推定できます。このようにして、攻撃者は、たとえば高速勾配記号法を使用してホワイトボックス攻撃を仕掛けることができます。先に引用したComputerVision Foundationの論文で、著者は商用機械学習モデルに対してこれを行う方法を示しています。
文献で提案されている2つの防御策を見てみましょう。
この 方法 元の無防備なモデルよりも勾配がはるかに小さい新しいモデルを生成しようとします。勾配が非常に小さい場合、攻撃者は損失関数の十分な変化を達成するために入力画像の大きな歪みを必要とするため、FGSや反復FGSのような手法はもはや役に立ちません。
防御蒸留は新しいパラメータを導入します$ T $、温度と呼ばれ、ネットワークの最後のソフトマックス層まで:
$$ text {softmax} left(x、T right)_i = frac {e ^ {x_i / T}} { Sigma_j e ^ {x_j / T}} $$T = 1の場合、通常のソフトマックス関数があることに注意してください。の値が高いほど$ T $、入力画像に対する損失の勾配が小さい。
防御蒸留は次のように進行します。
防御的な蒸留は、で試みられた一連の攻撃からネットワークを正常に保護します ディープニューラルネットワークに対する敵対的摂動に対する防御としての蒸留 。
残念ながら、 カリフォルニア大学バークレー校の研究者による後の論文 防御的な蒸留を打ち負かす新しい一連の攻撃方法を提示しました。これらの攻撃は、L-BFGS法に対する改善であり、防御的な蒸留が敵対的な例に対する一般的な解決策ではないことを証明しています。
今日では、敵対的な訓練が最も効果的な防衛戦略です。敵対的な例が生成され、モデルのトレーニング時に使用されます。直感的に、モデルの場合 見る トレーニング中の敵対的な例では、予測時のパフォーマンスは、同じ方法で生成された敵対的な例の方が優れています。
理想的には、既知の攻撃方法を使用して、トレーニング中に敵対的な例を生成したいと思います。ただし、高次元の大きなデータセット(ImageNetなど)の場合、L-BFGSのような堅牢な攻撃方法と、バークレーの論文で説明されている改善は、計算コストがかかりすぎます。実際には、FGSのような高速な方法を使用するだけの余裕があるか、反復FGSを使用できます。
sdrとの関係
敵対的トレーニングでは、クリーンな例の通常の損失関数と敵対的例の損失関数の加重和である修正損失関数を使用します。
$$損失= frac {1} { left(m-k right)} left( sum_ {i epsilon CLEAN} y_i right)+ lambda sum_ {i epsilon ADV} {L left (X * {adv} _i | y_i right)} right)$$トレーニング中、バッチごとに$ m $私たちが生成するきれいな画像$ k $ネットワークの現在の状態を使用した敵対的な画像。クリーンな例と敵対的な例の両方でネットワークを順方向に伝播し、上記の式を使用して損失を計算します。
これで提示されたこのアルゴリズムの改善 会議資料 アンサンブル敵対的トレーニングと呼ばれます。現在のネットワークを使用して敵対的例を生成する代わりに、いくつかの事前トレーニング済みモデルを使用して敵対的例を生成します。 ImageNetでは、この方法により、ブラックボックス攻撃に対するネットワークの堅牢性が向上します。この防御は、第1ラウンドの勝者でした。 敵対的攻撃に対する防御に関するNIPS2017コンペティション 。
今日の時点で、機械学習モデルを攻撃することは、それを防御することよりも簡単です。実世界のアプリケーションに導入された最先端のモデルは、防御戦略が採用されていない場合、敵対的な例に簡単にだまされ、潜在的に重大なセキュリティ問題への扉を開きます。最も信頼できる防御戦略は敵対的訓練であり、敵対的例が生成され、訓練時にクリーンな例に追加されます。
さまざまな攻撃に対する画像分類モデルの堅牢性を評価する場合は、オープンソースのPythonライブラリを使用することをお勧めします 賢馬ハンス 。この記事で説明したものを含め、多くの攻撃方法をモデルに対してテストできます。このライブラリを使用して、モデルの敵対的なトレーニングを実行し、敵対的な例に対する堅牢性を高めることもできます。
新しい攻撃とより良い防御戦略を見つけることは、活発な研究分野です。実世界のアプリケーションで機械学習モデルをより堅牢で安全にするには、より理論的および経験的な作業が必要です。
読者にこれらのテクニックを試して、新しい興味深い結果を公開することをお勧めします。さらに、現在の記事に関するフィードバックは、著者から大歓迎です。
関連:敵対的な例は、機械学習モデルに誤った予測を行わせるように設計された入力(画像、音声など)です。これは、人間には知覚できないが、モデルが予測を変更するのに十分な感度を持つ小さな摂動を追加することによって、クリーンな例から生成されます。
実際のシナリオで使用される機械学習モデルは、敵対的攻撃の対象となります。これには、自動運転車で使用されるコンピュータービジョンモデル、空港で使用される顔認識システム、または携帯電話アシスタントの音声認識ソフトウェアが含まれます。
敵対的攻撃は、機械学習モデルに誤った予測を行わせることを目的とした戦略です。これは、小さくて注意深く設計された摂動をきれいな画像に追加することで構成されます。これは人間の目には知覚できませんが、モデルは関連性があると見なし、予測を変更します。