メンバーシップ推定攻撃対策(MemGuard・概要編)
はじめに
メンバーシップ推定攻撃の対策手法であるMemGuardの概要を紹介します。
MemGuard
基本的な考え方
モデルの出力にノイズを加えることで、メンバーシップ推定攻撃をしにくくする防御手法です。
ノイズは、メンバーシップ推定攻撃の成功確率を最小化するように生成しますが、下記条件を満たす必要があります。
ノイズによって予測ラベルが変更されない
ノイズの大きさの期待値が事前に決められた閾値以下
ノイズを加えた後の出力が、確率の条件を満たす(各要素が正かつ総和が1)
実装上の工夫
上記の条件を満たすノイズを効率的に作成するために、2段階の手法として、MemGuardは実装されています。
一段階目のPhase Iでは、ノイズの大きさに関する条件(条件2)を考慮せずにノイズを作成し、Phase IIで条件を満たすようにノイズを加えるかの判断を行います。
Phase I
元の最適化問題との違いは下記の点になります。
softmax後の出力ではなく、その前のlogitにノイズを加える。
そうすることで、出力が確率の条件を満たすか(条件3)を考慮しなくて済みます。ノイズの大きさを最小化する問題に置き換える。
その代わりに、防御の強さに関する条件として、ノイズ付加後のメンバーシップ推定攻撃のinとoutの予測確率を等しくなるようにする。
整理すると、下記3つの損失の重みづけ和を最小化します。
L1:メンバーシップ推定攻撃の攻撃モデルのlogitのL1ノルム(防御の強さの条件)
L2:元の予測クラスのlogitをその他のクラスのlogitが超える場合は、それらの差(条件1)
L3:ノイズの大きさ
全体の損失を、L=L1+c2×L2+c3×L3 として、最小となるノイズを求めます。
ここで、c2、c3は事前に設定したパラメータです。
また、条件を満たすノイズが見つからない場合は、ノイズは 0 とします。
Phase II
Phase Iで求めたノイズは、大きさの条件を考慮していないため、ノイズの大きさの期待値が閾値以下になるように調整します。
まず、ノイズを加えた時に、メンバーシップ推定攻撃の成功率を下げられない場合は、ノイズを付加しません。
それ以外の場合は、閾値をε、ノイズの大きさをdとすると、確率 min(ε/d,1) でノイズを付加します。
この結果、付加するノイズの大きさの期待値をε以下にすることができます。
パラメータc3の探索
Phase Iのパラメータc3は、ノイズの大きさと防御の強さを調整するパラメータです。
大きすぎると十分な防御にならず、小さすぎるとノイズが大きくなりすぎます。
効果的に防御するためには、適切にc3を決定する必要があります。
そこで、サンプルごとにc3を最適化します。
まず、小さい値を用いてノイズを作成し、2つの条件を満たすか確認します。
ノイズによって予測ラベルが変更されない
十分強い防御になっている(ノイズの有無でメンバーシップ推定攻撃の予測が変わる)
条件を満たす場合は、c3を10倍して、再度ノイズの最適化を行います。
これを繰り返すことで、条件を満たすノイズのうち、c3が最大(つまり、ノイズが最も小さい)ものを採用します。
参考資料
R. Shokri et al., Membership Inference Attacks Against Machine Learning Models, IEEE S&P, 2017