Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to TensorFlow Privacy

Introduction to TensorFlow Privacy

機械学習における Privacy について、TensorFlow Privacy を例に調査しまとめた資料です。Money Forward 社内で開かれた MLOps についての勉強会のために作成しました。

Asei Sugiyama

March 14, 2022
Tweet

More Decks by Asei Sugiyama

Other Decks in Technology

Transcript

  1. まとめ Differential Privacy は Privacy の概念を形式的に定義したもので、個別 のデータに推論結果が依存する度合いに制限を加えたもの DPSGD (Differential Private

    SGD) は SGD を拡張したもので、勾配に正 則化とノイズ付加を行うもの TensorFlow Privacy を用いることで DPSGD を Keras の API で実装でき る DPSGD については高速化や Fairness とのトレードオフなどの研究が進 行中
  2. Differential Privacy の解 釈 (1/2) 「高々1要素だけ異なるデー タベースからある値の出力 される確率 (密度) の対数の

    -距離が で抑えられる」 のときには全く確率 が変わらない L1 ϵ ϵ = 0 注目のプライバシー Differential Privacy
  3. Differential Privacy の解 釈 (2/2) 差分プライバシーとは何 か? (定義 & 解釈編)

    とい うスライドがわかりやすい のでオススメ 差分プライバシーとは何か? (定義 & 解釈編)
  4. 使い方 (1/3) # Load training and test data. train_data, train_labels,

    test_data, test_labels = load_mnist() # Define a sequential Keras model model = tf.keras.Sequential([ tf.keras.layers.Conv2D( 16, 8, strides=2, padding='same', activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPool2D(2, 1), tf.keras.layers.Conv2D( 32, 4, strides=2, padding='valid', activation='relu'), tf.keras.layers.MaxPool2D(2, 1), tf.keras.layers.Flatten(), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dense(10) ])
  5. 使い方 (2/3) Optimizer だけが通常と異なる optimizer = DPKerasSGDOptimizer( l2_norm_clip=FLAGS.l2_norm_clip, noise_multiplier=FLAGS.noise_multiplier, num_microbatches=FLAGS.microbatches,

    learning_rate=FLAGS.learning_rate) # Compute vector of per-example # loss rather than its mean over a minibatch. loss = tf.keras.losses.CategoricalCrossentropy( from_logits=True, reduction=tf.losses.Reduction.NONE) # Compile model with Keras model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])
  6. DPSGD の高速化 (1/2) DPSGD は「通常の SGD と 比較して10-100倍くらい遅 い」 Vectorization

    と JIT コンパ イルによる高速化が提案さ れている Enabling Fast Differentially Private SGD via Just-in-Time Compilation and Vectorization
  7. DPSGD の高速化 (2/2) TensorFlow Privacy で確認 (Colab 上で GPU ありで実行)

    最適化前は約 90 min に対し、最適化後は 9 min (10x) Method time (total) DPKerasSGDOptimizer 1h 29min 18s VectorizedDPKerasSGDOptimizer (Vectorization) 50min 40s DPSequential (Vectorization + XLA) 8min 57s tensorflow-privacy-mnist-tutorial.ipynb
  8. Privacy と Fairness のト レードオフ Fairness のためにはマイノ リティのデータを収集し学 習することが重要 Privacy

    を実現するためにノ イズを乗せると、全体に対 して少数のデータが利用さ れなくなる Can a Model Be Differentially Private and Fair?
  9. まとめ Differential Privacy は Privacy の概念を形式的に定義したもので、個別 のデータに推論結果が依存する度合いに制限を加えたもの DPSGD (Differential Private

    SGD) は SGD を拡張したもので、勾配に正 則化とノイズ付加を行うもの TensorFlow Privacy を用いることで DPSGD を Keras の API で実装でき る DPSGD については高速化や Fairness とのトレードオフなどの研究が進 行中