本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。

最新情報

2020.06.18

機械学習モデルの学習データを推論する方法

 近年、機械学習を使用した医療診断技術や顔認識・音声認識技術などが登場しており、患者のレントゲン写真から病気の種類を予想するシステムや、顔認証を行うシステムなどに利用されています。その一方で、システムが学習したデータを特定する攻撃手法も盛んに研究されており、データ・プライバシー侵害の懸念も広がっています。特に、システムの挙動から学習データを推論する「メンバーシップ推論攻撃(Membership Inference Attacks)」は数年前から多くの検証が行われており、現実的な脅威になる可能性が高まっています。

 メンバーシップ推論攻撃は、攻撃対象の分類器(以下、標的分類器)に正常な入力データを与え、標的分類器から応答された分類結果を観察することで、入力したデータが分類器の学習データに含まれているか否か(=メンバーシップか否か)を推論します。仮に、近年プライバシーや自由の侵害などを理由に反対意見が増加傾向にある「顔認識技術を含む集団監視システム」に対して本攻撃が行われた場合、システムの開発時に匿名を条件に提供された顔画像が特定されることで、顔画像の提供者に不利益が生じる可能性があります。

Fig.1 メンバーシップ推論攻撃の概要

 Fig.1 は、(後述する)本検証で行ったメンバーシップ推論攻撃の概要を表しています。

 一般的に分類器は、学習データに含まれるデータ、すなわち、メンバーシップ・データの応答時に返される信頼スコア(probability vector)の偏りが大きくなる傾向があります。この傾向は、学習データを過学習した分類器ほど顕著になります。そこで、任意のデータ(Sample data)を標的分類器に入力し、応答された信頼スコアを観察することで、任意のデータが標的分類器のメンバーシップか否かを判定します。これがメンバーシップ推論攻撃のメカニズムです。

 本手法は、悪意のある者が標的分類器の内部構造を知らない状態(以下、ブラックボックス)でも攻撃できるため実用性が高く、現実的な脅威になる可能性があります。そこで本ブログでは、メンバーシップ推論攻撃の手法と対策を、検証結果を交えながら解説します。本ブログが、安全な分類器開発の一助になれば幸いです。

 なお、本ブログは、2018年にLAB41が執筆したブログ「Membership Inference Attacks On Neural Networks」を参考にしています。興味のある方はこちらも一読することをお勧めします。


検証の流れ

 本ブログでは、筆者が検証した結果を基に、攻撃の手順と対策を解説します。

注意
本ブログの内容は、攻撃の危険性と対策を理解していただくことを目的に書かれています。本ブログの内容を検証する場合は、必ずご自身の管理下にあるシステムにて、ご自身の責任の下で実行してください。許可を得ずに第三者のシステムで実行した場合、法律により罰せられる可能性があります。

 本検証では、検証用に作成した標的分類器の挙動を観察することで、標的分類器の学習データを特定することを目標とします。
 具体的には、Fig.2 の流れで検証を行います。

Fig.2 検証の流れ
  1. 任意のデータ(Sample data)を標的分類器(Target network)に入力。
  2. 標的分類器が応答する信頼スコア(probability vector)を取得。
  3. 信頼スコアを攻撃モデル(Attack network)に入力。
  4. 攻撃モデルの出力から任意のデータがメンバーシップか否かを判定(Binary membership prediction)。

 ここでポイントになるのは、攻撃モデルです。

 攻撃モデルは標的分類器が出力する信頼スコアを入力に取り、0~1の範囲内の値を出力する単純な分類器です。
 攻撃モデルの出力値は任意のデータがメンバーシップである確率を表しており、1に近いほどメンバーシップの可能性が高いことを示します(0に近いほどメンバーシップの可能性が低い)。例えば、任意のデータを標的分類器に入力して取得した信頼スコアを攻撃モデルに入力し、その出力が「0.98」となった場合、「任意のデータは98%の確率で(標的分類器の)メンバーシップである」と判断します。

 ところで、攻撃モデルは(標的分類器が出力する)信頼スコアを2値分類(メンバーシップであるか否か)する分類器です。当然ながら、攻撃モデルを作成するためには、Table.1 のような学習データを用意する必要があります。

Table.1 攻撃モデルの学習データ
データ ラベル
0.76, 0.03, 0.04, …snip… , 0.02, 0.05, 0.01 1
0.01, 0.07, 0.01, …snip… , 0.82, 0.03, 0.02 1
0.01, 0.01, 0.90, …snip… , 0.01, 0.01, 0.01 1
0.12, 0.34, 0.07, …snip… , 0.08, 0.13, 0.10 0
0.10, 0.18, 0.02, …snip… , 0.03, 0.10, 0.54 0
0.23, 0.09, 0.11, …snip… , 0.01, 0.46, 0.03 0

 「データ」列は標的分類器が出力する信頼スコア、「ラベル」列がメンバーシップか否かを表す値(1:メンバーシップ、0:メンバーシップではない)です。

 この学習データを作成するためには、標的分類器が「学習したデータ」と「学習していないデータ」を知る必要があります。しかし、ブラックボックスな攻撃では、悪意のある者はそれを知ることができません(そもそも、知っていたら攻撃する必要はない)。そこで、悪意のある者は、標的分類器を模したシャドウモデルを手元に作成し、これを使用して攻撃モデルの学習データを作成します。なお、シャドウモデルは標的分類器の学習データ分布をある程度予測し、近しい学習データを使用して作成されたモデルです(シャドウモデルの詳細は、筆者が過去に執筆したブログを参照してください)。

 Fig.3 に、シャドウモデルを使用して攻撃モデルを作成するイメージを示します。

Fig.3 攻撃モデルの学習プロセス

 シャドウモデルを作成する際、悪意のある者は用意したデータを「シャドウモデルの学習に使用するデータ(In training set)」と、「学習に使用しないデータ(Out of training set)」に分割します。その上で、学習データのみを用いてシャドウモデル(Shadow network)を学習・作成します。

 次に、学習データ(In training set)と学習データ以外のデータ(Out of training set)をシャドウモデルに入力し、それぞれの信頼スコア(Probability vector)を取得します。この時、学習データに対応する信頼スコアには「1」(=メンバーシップである)、学習データ以外のデータに対応する信頼スコアには「0」(=メンバーシップではない)をラベリングして攻撃モデルの学習データを作成します(Table.2)。

Table.2 作成した攻撃モデルの学習データ
データ ラベル
0.90, 0.01, 0.01, …snip… , 0.01, 0.01, 0.01 1
0.02, 0.03, 0.82, …snip… , 0.01, 0.07, 0.01 1
0.02, 0.01, 0.05, …snip… , 0.76, 0.04, 0.03 1
0.13, 0.07, 0.34, …snip… , 0.10, 0.12, 0.08 0
0.03, 0.02, 0.18, …snip… , 0.10, 0.54, 0.10 0
0.03, 0.01, 0.11, …snip… , 0.09, 0.23, 0.46 0

 「データ」列はシャドウモデルが出力した信頼スコア、「ラベル」列がメンバーシップか否か(1:In training set, 0:Out of training set)を表す値です。そして、この学習データを用いて攻撃モデルを学習・作成します。

 このように、標的分類器が手元にない場合でも、標的分類器を模したシャドウモデルを利用することで、攻撃モデルを作成することが可能となります。

 これを踏まえたうえで、早速検証に入っていきましょう。


分類器の作成

 本検証では3つの分類器を作成します。

Table.3 本検証で作成する分類器
分類器 用途
標的分類器 本検証で攻撃対象とする分類器
シャドウモデル 標的分類器を模したモデル
攻撃モデルの学習に使用する。
攻撃モデル メンバーシップを推論するモデル
信頼スコアを2値分類(In training set/Out of training set)する。

 ところで、これらの分類器を作成するためには、何らかのデータセットを使用する必要があります。
 本来であれば、医療データなどの機微情報を使用したいところですが、取り扱いが非常に難しいため、本検証ではCIFAR10と呼ばれるテスト画像セット使用し、以下の画像を分類する簡易的な分類器を作成します。

Fig.4 CIFAR10

 CIFAR10は「airplane~truck」までの10クラスのカラー画像(32x32ピクセル)が60,000枚収録されているフリーのデータセットであり、その手軽さゆえに分類器のテストや敵対的サンプルの検証などに広く利用されています。

 本検証では、CIFAR10を以下のように分割して使用します。

Table.4 CIFAR10の分割
カテゴリ データ数 用途
学習データ 50,000枚 標的分類器、シャドウモデルの学習に使用。
テストデータ 10,000枚 学習時のValidationデータに使用。

 また、50,000枚の学習データは、分類器の学習やテストなどの目的に応じて以下のように分割します。

Table.5 学習データの分割
カテゴリ データ数 用途
Target-In 12,500枚 標的分類器の学習とメンバーシップ推論のテストに使用。
Target-Out 12,500枚 メンバーシップ推論のテストに使用。
Shadow-In 12,500枚 シャドウモデルの学習と攻撃モデルの学習データ作成に使用。
Shadow-Out 12,500枚 攻撃モデルの学習データ作成に使用。

標的分類器の作成

 12,500枚の「Target-In」データを使用し、標的分類器を作成します。
 なお、本検証では、アーキテクチャの違いによるメンバーシップ推論攻撃の精度を検証するため、5種類のアーキテクチャで標的分類器を作成します。

Table.6 標的分類器のアーキテクチャ
アーキテクチャ
ResNet 20
ResNet 32
ResNet 44
ResNet 56
ResNet 110

シャドウモデルの作成

 12,500枚の「Shadow-In」データを使用し、シャドウモデルを作成します。
 標的分類器と同様に、5種類のアーキテクチャでシャドウモデルを作成します。

Table.7 シャドウモデルのアーキテクチャ
アーキテクチャ
ResNet 20
ResNet 32
ResNet 44
ResNet 56
ResNet 110

 

攻撃モデルの作成

 作成したシャドウモデルを使用し、攻撃モデルの学習データを作成します。
 Fig.5 に攻撃モデルの学習データを作成するイメージを示します。

Fig.5 攻撃モデルの学習データを作成するイメージ

 12,500枚のShadow-In(シャドウモデルの学習に使用したデータ)と、12,500枚のShadow-Out(シャドウモデルの学習に使用していないデータ)を使用します。先ず、Shadow-Inをシャドウモデルに入力し、応答された信頼スコア(Probability vector)に「1(In training set)」をラベリングします。次に、Shadow-Outをシャドウモデルに入力し、応答された信頼スコアに「0(Out of training set)」をラベリングします。これを全量のShadow-In, Shadow-Outに対して行い、攻撃モデルの学習データを作成していきます。

 こうして得られた学習データを使用し、攻撃モデルを学習・作成します。
 なお、本検証では、攻撃モデルのアーキテクチャを以下のように定義します。

   
    Model: "sequential"
    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    flatten (Flatten)            (None, 10)                0         
    _________________________________________________________________
    dense (Dense)                (None, 16)                176       
    _________________________________________________________________
    dense_1 (Dense)              (None, 16)                272       
    _________________________________________________________________
    dense_2 (Dense)              (None, 1)                 17        
    =================================================================
    Total params: 465
    Trainable params: 465
    Non-trainable params: 0
    
    

 攻撃モデルは、シャドウモデルが応答する信頼スコア(10次元=CIFAR10のクラス数)を入力に取り、0~1の範囲内の値を出力するシンプルなモデルです。なお、出力層の活性化関数にはシグモイド関数を使用しています。


メンバーシップ推論攻撃の実行

 本検証では、Fig.6 の流れでメンバーシップ推論攻撃の検証を行います。

Fig.6 検証のイメージ
  1. メンバーシップであるTarget-In(12,500枚)とメンバーシップではないTarget-Out(12,500枚)を標的分類器(Target Network)に入力。
  2. 標的分類器が出力した信頼スコア(Probability vector)を攻撃モデル(Attack network)に入力
  3. 攻撃モデルの出力から、標的分類器への入力データがメンバーシップか否かを判定。

 本検証では、Target-Inの信頼スコアに対する攻撃モデルの出力が1に近似し、Target-Outの信頼スコアに対する攻撃モデルの出力が0に近似すれば、メンバーシップ推論攻撃は成功したと見なします。

 以下に検証結果を示します。

    
Table.8 メンバーシップ推論攻撃の結果
ResNet20 ResNet32 ResNet44 ResNet56 ResNet110
ResNet20 0.7998 0.7478 0.7016 0.7411 0.7905
ResNet32 0.7479 0.7706 0.7532 0.7547 0.7294
ResNet44 0.7851 0.7700 0.7384 0.7661 0.7674
ResNet56 0.7576 0.7762 0.7528 0.7594 0.7386
ResNet110 0.8014 0.7343 0.6922 0.7316 0.7950

 Table.8 の小数値は、25,000枚(Target-In+Target-Out)の入力データに対するメンバーシップ推論攻撃の精度を表しています。
 横軸は「標的分類器のアーキテクチャ」、縦軸は「(攻撃モデルの学習データ作成に使用した)シャドウモデル」のアーキテクチャを表しています。

 最も攻撃成功率が高い組み合わせは、標的分類器がResNet20、シャドウモデルがResNet110の場合の「0.8014」です。これは、メンバーシップ推論攻撃の精度が約80%であることを示しています。視覚的に推論結果を確認するため、Target-InとTarget-Outからランダムに抽出した25個のデータに対するメンバーシップ推論の結果をFig.7 に示します。

Fig.7 ランダム抽出した25枚の入力データに対する推論結果

 各画像のキャプションの数字はメンバーシップ推論精度であり、確率値が「0~49%」の場合はメンバーシップではない、確率値が「51~100%」の場合はメンバーシップであると、攻撃モデルが判断したことを表しています(50%は判断不能)。一方、下段の文字列は、各画像の実際のクラスを表しており、Target-Inはメンバーシップ、Target-Outはメンバーシップではないことを表しています。なお、確率値が「0.00%」になっている画像が散見されますが、これは図示の都合上小数第三位以降は表示を省略したためであり、完全に0%ではないことに注意してください。

 Fig.7 を見ると、25個中20個はメンバーシップ推論に成功していることが分かります(成功率は約80%)。
 このことは、上表の攻撃成功率「0.8014」とほぼ一致しています。

 この結果から、シャドウモデルと攻撃モデルを使用することで、ブラックボックス設定で標的分類器のメンバーシップ推論が行えることが確認できました。本検証における攻撃精度「約80%」については議論の余地がありますが、仮に標的分類器が機微情報を学習していた場合、10回中8回の攻撃成功率は現実的な脅威になり得ると考えます。


さいごに

 本ブログでは、メンバーシップ推論攻撃により、標的分類器の学習データを特定するメカニズムを解説しました。
 では、どのように対策すれば良いでしょうか? 本検証の結果に基づくと、対策として以下の4つが考えられます。

  • 信頼スコアを応答しない。
  • 過学習を抑制する。
  • 信頼スコアを丸めて応答する。
  • 学習データをマスキングする。

信頼スコアを応答しない

 繰り返しになりますが、メンバーシップ推論攻撃は「標的分類器が応答する信頼スコアを攻撃モデルに入力し、メンバーシップか否かを判定」する手法です。よって、判定の拠り所となる信頼スコアは応答せずに分類結果のみ応答することで、メンバーシップ推論を不能にすることができます。

 しかし、分類器の要件の都合上、信頼スコアを応答せざるを得ない場合もあります。
 この場合は、以下の対策で攻撃の緩和を試みます。


過学習を抑止する

 メンバーシップ推論は、メンバーシップか否かによって信頼スコアに偏りが生じることを拠り所としています。それゆえ、学習データを過学習したモデルほど信頼スコアの偏りが大きくなるため、メンバーシップ推論攻撃に対して脆弱になることを上述しました。

 そこで、過学習を抑制することで、メンバーシップ推論の影響を緩和できるのか確認します。具体的には、標的分類器の構築時にDropoutを適用し、過学習の抑制を試みます。以下、Dropoutを適用した標的分類器(ResNet20のみ)を用いて再検証した結果を示します(横軸は標的分類器、縦軸はシャドウモデルのアーキテクチャ)。

Table.9 標的分類器(Dropout適用)に対するメンバーシップ推論攻撃の精度
ResNet20
ResNet20 0.5150
ResNet32 0.5476
ResNet44 0.5260
ResNet56 0.5406
ResNet110 0.5126

 最も攻撃成功率が高い場合でも「0.5476(約55%)」であり、対策前の約80%と比較すると大幅に推論精度が下がることが確認できました。
 この結果を視覚的に確認するため、Target-InとTarget-Outからランダムに抽出した25個のデータに対するメンバーシップ推論の結果をFig.8 に示します。

Fig.8 ランダム抽出した25枚の入力データに対する推論結果

 Fig.8 を見ると、25個中13個はメンバーシップ推論に失敗しており(成功率は約50%)、上表の攻撃成功率とほぼ一致していることが分かります。
 この結果は、過学習を抑制した標的分類器では「2回に1回」メンバーシップ推論に失敗することを示しており、実質的にメンバーシップ推論攻撃が効かないことを意味しています。

 その他の対策としては、信頼スコアの精度を丸める(0.96345353126525878906 -> 0.9)ことでメンバーシップ推論攻撃の精度を低下させる試みや、学習データに含まれる機微情報をマスキングし、特定された場合の影響を小さくするなどの対策も有効であると考えられます。

 さいごに、本検証で示したように、標的分類器から必要以上の情報を応答しないことや、過学習を抑制するといった当たり前の対策でメンバーシップ推論攻撃の影響を大幅に緩和できることが分かりました。近年、データ・プライバシーに関心が高まっていることを念頭に置き、学習データの保護には細心の注意を払いながら分類器の開発を行う必要があると言えるでしょう。


セキュアAI開発トレーニング

 弊社は株式会社ChillStackと共同で、AIの開発・提供・利用を安全に行うための「セキュアAI開発トレーニング」を提供しています。
 本トレーニングでは、本ブログで解説した攻撃手法の他、AIに対する様々な攻撃手法(機械学習フレームワークを悪用した任意のコード実行、敵対的サンプル、データ汚染、モデル抽出など)とその対策を、座学とハンズオンを通じて理解することができます。

 本トレーニングの詳細やお問い合わせにつきましては、弊社窓口、または、下記の特設サイトをご覧ください。

以上

プロフェッショナルサービス事業部
高江洲 勲