Model Stealingおよび、機械学習セキュリティの概要
はじめに
ここでは、機械学習セキュリティについて取り上げていきます。ただ、機械学習セキュリティといっても、機械学習を利用したセキュリティについてではなく、機械学習そのもののセキュリティといったことについて書いていきます。また、この記事では、機械学習セキュリティのなかで代表的なもののひとつである、モデル抽出攻撃についての解説をしていけたらと思います。
目次
1.機械学習のセキュリティとは
2.各モデルに対するモデル抽出攻撃の概要とその手法
1 機械学習のセキュリティとは
機械学習に対する攻撃がされているというとピンとこないかもしれません。そこで、いくつか例として(1)(2)、
・学習完了後のモデルである画像を認識させる際、人間にはわからない程度の加工を施しモデルに判断させると、その画像が正しく認識されない。
・チャットボットに差別的な言葉を学習させることで、差別的発言をするようにさせる(3)
などがあります。前者においてはこれからさらに実用化される自動運転に対して脅威になりうる攻撃で、例えば、標識を誤認識させるだけで、事故を意図的に起こすことが出来てしまうかもしれません。後者に対しては、今ではもうかなり昔になりますがchatbotの「tay」に対し、実際に行われた攻撃です。今の社会ではどんどんAIの需要が高まりつつあります。最近では、chatGPT(4)なんていうとんでもない対話AIも公開されています。機会学習セキュリティはこれからのAIの社会の進出に対する課題であるともいえると思います。
2 各モデルに対するモデル抽出攻撃の概要とその手法
機会学習セキュリティには次の四つの代表例があります。敵対的生成、ポイゾニング、モデル抽出攻撃、訓練データ推定です。敵対的生成、ポイゾニングはこの前の章で出した例が主な事象となります。今回は、この代表例のうちモデル抽出攻撃について概要を書いていきたいと思います。
[1]モデル抽出攻撃の概要
モデル抽出攻撃はtramerが提唱した(5)、webなどで使用することが出来るAIからモデルを盗む攻撃です。通常、webで公開されているAIサービスを利用しようとすると、数百から数千質問するごとに何円といった感じで料金が課されていきます。しかし、このモデル抽出攻撃が成功してしまうと、盗むための初期費用分だけで、そのモデルを丸ごと取られてしまいます。その後、そのモデルを攻撃者は自由に使用することが出来ます。その結果、このaiビジネスモデルを壊すことになります。また、モデル抽出が成功することにより、気密性の高い学習データに関する情報が漏洩する可能性があります。なぜなら、盗まれたモデルが、教師あり学習を用いたものであった場合、その時に使った教師データでそのモデルを決定しているため、攻撃者は、手元の複製モデルの決定境界に沿うデータを探し続けることが可能になるからです。
[2]モデル抽出攻撃解説を始める前に
以下では(5)で参考にされている論文を基にモデル抽出攻撃について説明していきたいと思います。しかし、この[2]では、機械学習周りの用語の整理をしていきます。
まず、機械学習モデルとは何か考えていきます。ある入力 $X$をモデルに入れ、出力$Y$を返す、関数$f$が機械学習モデルと言えます。また、入力$X$はd次元ベクトルで構成され、以下のようにします。
$$
X = {X_1,X_2,...X_d}
$$
ただし、$X$の値によらず、出力は$Y$の範囲内でしかしません。
次に、入力データを質的、量的データで区別します。
質的データでの一般性を失わせることがないように、質的データの場合では
$$
X_i = \mathbb{Z}_k
$$
とおきます。また、ここでの$\mathbb{Z}_k$は$k$における整数全体の集合を表しています。また、量的データの場合では、
$$
X_i = [a,b] \in \mathbb{R}
$$
のようにおいておきます。上式は$a$から$b$までの範囲で$X_i$は取り、それは自然数の集合$\mathbb{R}$に属している、ということを表しています。
また、モデルに入力される前にデータの前処理を行っているはずです。その前処理を$ex()$とします。また、入力は$M$空間からくるものとします。その時のモデルに入力される$X$は
$$
ex(M) = X
$$
となります。
次に、分類の問題について考えます。今$f$が、クラスの集合を示す名義変数を予測するものとします。出力$Y$について考えていきます。今、c個のクラスが与えられたとします。その時、上で述べたように、$\mathbb{Z_c}$の集合を用いることが出来ます。$Y = \mathbb{Z_c}$であるなら、この集合にある値のみを返すはずです。また、web上のaiサービスによってはモデルから出力されるラベルの信頼度を実数値で表す追加情報が含まれている場合があります。その尺度は信頼値と呼ばれ、出力空間
$$
Y = [0,1]
$$
となります。与えられた$x\in X$と$i\in \mathbb{Z}_c$に対して、$f(x)$の$i$番目の成分を$f_i(x)$と表します。$f_i(x)\in Y$とします。$f_i(x)$はで$x$がクラスラベル$i$を持つモデル$f$によって割り当てられる確率です。実際の例として、
$$
argmax_i f_i(x)
$$
などで最もそれらしいラベルを値として出力しています。
次に、$Y$と距離$d_Y$を結び付けます。$Y = \mathbb{Z}_c$では、$0-1$距離を用いることにします。$y=y'$なら0、$y=y$なら1といったように用います。また、そのクラスである確率を直接比較したい場合、
$$
d(y,y')=\frac{1}{2}\sum|y[i] - y'[i]|
$$を用いることにします。
[3]モデル抽出攻撃の手法について
モデル抽出攻撃の概要
下の図では攻撃者が$f$にいくつか質問をし、それによって得た$y$を用いて複製した$f'$を作る流れを表している。
モデル抽出攻撃は攻撃者があるターゲットモデル$f$に何の情報もない状態でアクセスし、モデル$f$に似ている、または一致するモデル$f'$を得ようとする攻撃です。例えば、あるモデルが、教師あり学習を用いて作られたもので、その攻撃者は直接質問を入力する場合、任意の入力$x$をモデル$f$に与え、出力$f(x)$を得ます。そのほかにも、入力空間$M$上から間接的な問い合わせを行い、出力$f(ex(M))$を得ることも出来ます。この場合はデータの前処理、つまり、モデルに到達する前の特徴量抽出を行う$ex()$は攻撃者は知りません。しかし、どちらの場合においても出力値はクラスラベルと、信頼値などで構成されたデータ構造になります。$x$と$f(x)$を組み合わせてモデルを攻撃者の側で構成します。
また、その際使うものはロジスティック回帰とニューラルネットワークに使える方程式解決攻撃、決定木に対する経路決定攻撃の二つがあります。今回は前者について少しだけ説明を載せます。
ロジスティックモデルはパラメータ
$$
w \in \mathbb{R}^d、\beta \in \mathbb{R}
$$
によって定義され、
$$
\sigma(t) = \frac{1}{(1 + e^{-1})}
$$
の時、確率
$$
f_1(x) = \sigma(wx+b)
$$
を返します。この時、攻撃者はサンプル$(x,f(x))$を基のモデルに問い合わせることで手に入れることが出来るので、
$$
wx+\beta = \sigma^{-1}(f(x))
$$
となる線形決定式を得ることが出来ます。したがって、$d+1$のサンプル分($x_1,x_2,,...,x_d,x_{d+1}$)から上式での$w$と$\beta$を復元すればモデルを盗むことが可能です。
終わりに
今回のモデル抽出攻撃についての大雑把な概要を書きました。本当でしたら、他の3つの機会学習セキュリティの代表例についても書きたかったんですが、そもそも、モデル抽出攻撃の時点でかなり詰まっているので断念しました。また、モデル抽出攻撃の決定木のほうの例も書きたいと考えています。決定木の例、他三つのセキュリティについてもこれからまとめていきたいと思います。
参考文献
(1)機械学習セキュリティのフロンティア
(2)IPA セキュリティ関係者のためのAIハンドブック
(3)YAHOO!JAPANニュース AIボット「Tay」はなぜ暴走した?意外にも長い人工知能の歴史
(4)OpenAI ChatGPT:Optimizing Language Models for Dialogue
(5)Tramèr, Florian, et al. "Stealing machine learning models via prediction {APIs}." 25th USENIX security symposium (USENIX Security 16). 2016.