メンバーシップ推論攻撃(メンバーシップ推論)とは
Membership Inference Attack / メンバーシップ推論 / MIA
特定のデータが対象モデルの学習データに含まれていたかどうかを、モデルの出力挙動から推定する攻撃
ひとことで言うと
あるデータがAIの学習に使われたかどうかを、AIの答え方の違いから当てようとする攻撃。医療記録など個人情報の漏洩につながる恐れがある。
概要
メンバーシップ推論攻撃は、あるデータレコードを対象モデルへ入力した際の出力(予測確信度など)を手がかりに、そのレコードが対象モデルの学習データに含まれていたかどうかを推定する攻撃。機械学習モデルは学習に使ったデータに対して過学習気味になりやすく、未知のデータより高い確信度で予測を返す傾向があり、この差を利用して会員/非会員を判別する。代表的な手法では、攻撃者が対象モデルと似た構造・タスクを持つ複数のシャドウモデル(shadow model)を自ら用意したデータで学習し、各シャドウモデルの学習データに含まれていたか否かのラベル付きデータセットを作成する。このデータセットを使って、モデルの出力パターンから会員/非会員を判別する攻撃モデルを学習し、最終的に対象モデルへの問い合わせに適用する。医療記録や購買履歴など機微な情報を含む学習データを使うモデルでは、特定の個人が学習データに含まれていたという事実自体がプライバシー侵害につながる場合があり、差分プライバシーや正則化による過学習抑制が対策として研究されている。
背景
機械学習モデルは、学習データに含まれる個々のサンプルに対して過学習しやすく、未知のデータに比べて高い確信度や低い損失値を示す傾向がある。この学習データと未知データに対する挙動の差自体が、モデルの外部からは見えないはずの学習データの情報を漏洩させる経路になりうるという課題として、メンバーシップ推論攻撃は研究されてきた。
歴史
2017年: Shokriらが論文Membership Inference Attacks Against Machine Learning ModelsをIEEE S&Pで発表し、シャドウモデルを用いたブラックボックス設定でのメンバーシップ推論攻撃を体系化。
アーキテクチャ
攻撃者は対象モデルと類似したタスク・構造を持つ複数のシャドウモデルを、自身が用意したデータ(学習に使う部分と使わない部分に分割)で学習する。各シャドウモデルについて、学習に使ったデータへの出力(会員)と使わなかったデータへの出力(非会員)をラベル付きの教師データとして収集し、この出力パターンから会員/非会員を判別する攻撃モデルを学習する。学習済みの攻撃モデルへ対象モデルの実際の出力を入力することで、対象データが対象モデルの学習データに含まれていたかどうかを推定する。
ワークフロー
攻撃者がシャドウモデルを学習し、会員/非会員それぞれの出力パターンを収集する。 収集した出力パターンを教師データとして、会員/非会員を判別する攻撃モデルを学習する。 対象モデルへ推定したいデータを入力し、その出力を攻撃モデルへ渡して会員か非会員かを判定する。
コード例
シャドウモデルを用いたメンバーシップ推論の概念的な流れ
# シャドウモデルの出力から会員/非会員の教師データを作る(概念例)
shadow_model.fit(shadow_train_x, shadow_train_y)
member_outputs = shadow_model.predict_proba(shadow_train_x) # 学習に使ったデータ
non_member_outputs = shadow_model.predict_proba(shadow_holdout_x) # 使わなかったデータ
attack_x = concat(member_outputs, non_member_outputs)
attack_y = concat(ones(len(member_outputs)), zeros(len(non_member_outputs)))
attack_model.fit(attack_x, attack_y)欠点
比較
関連用語
よくある質問
メンバーシップ推論攻撃はなぜ成功するのか?
モデルが学習データに対して過学習気味になり、学習済みデータに未知データより高い確信度を示す傾向があるため、その出力の違いから会員/非会員を判別できてしまう。