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. Introduction to TensorFlow Privacy
    Asei Sugiyama

    View Slide

  2. まとめ
    Differential Privacy は Privacy の概念を形式的に定義したもので、個別
    のデータに推論結果が依存する度合いに制限を加えたもの
    DPSGD (Differential Private SGD) は SGD を拡張したもので、勾配に正
    則化とノイズ付加を行うもの
    TensorFlow Privacy を用いることで DPSGD を Keras の API で実装でき

    DPSGD については高速化や Fairness とのトレードオフなどの研究が進
    行中

    View Slide

  3. TOC
    Differential Privacy <-
    TensorFlow Privacy
    発展的な話題

    View Slide

  4. Differential Privacy
    問題提起
    Differential Privacy の定義
    Differentially Private SGD

    View Slide

  5. 問題提起
    言語の生成モデルにおいて発見され
    た問題
    データセットに個人番号があった場
    合、その番号が生成されてしまう
    Penn Treebank dataset に意図的に
    個人番号を混入させたところ、たし
    かにその番号が生成された
    [1802.08232] The Secret Sharer: Evaluating and Testing Unintended Memorization in Neural
    Networks

    View Slide

  6. Differential Privacy の定義
    Differential Privacy: A Survey of Results

    View Slide

  7. Differential Privacy の解
    釈 (1/2)
    「高々1要素だけ異なるデー
    タベースからある値の出力
    される確率 (密度) の対数の
    -距離が で抑えられる」
    のときには全く確率
    が変わらない
    L1 ϵ
    ϵ = 0
    注目のプライバシー Differential Privacy

    View Slide

  8. Differential Privacy の解
    釈 (2/2)
    差分プライバシーとは何
    か? (定義 & 解釈編) とい
    うスライドがわかりやすい
    のでオススメ
    差分プライバシーとは何か? (定義 & 解釈編)

    View Slide

  9. Differentially Private SGD (1/2)
    Membership inference attack against differentially private deep learning model.

    View Slide

  10. Differentially Private SGD
    (2/2)
    SGD における勾配の大きさ
    を制限
    勾配に正規分布などの確率
    分布からの出力をノイズと
    して付加
    Membership inference attack against differentially private deep learning
    model.

    View Slide

  11. 日本語による解説
    Idein によるブログ記事が公
    開されている
    記述がわかりやすくオスス

    引用元の資料を確認しやす

    Idein Ideas — 機械学習におけるDifferential Privacyについて

    View Slide

  12. TOC
    Differential Privacy
    TensorFlow Privacy <-
    発展的な話題

    View Slide

  13. TensorFlow Privacy
    設計方針
    使い方

    View Slide

  14. 設計方針
    実装者は差分プライバシーの専門家
    ではないし、モデルのコードは大概
    の場合作られたあと
    ミニバッチの作成などは既存のロジ
    ックを利用し、そのあと Privacy の
    ための計算をする
    上記を踏まえて -DP を実現す

    (ϵ, δ)
    A General Approach to Adding Differential Privacy to Iterative Training Procedures

    View Slide

  15. 使い方 (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)

    ])

    View Slide

  16. 使い方 (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'])

    View Slide

  17. 使い方 (3/3)
    Optimizer 以外は通常通りの Keras
    model.fit(

    train_data,

    train_labels,

    epochs=FLAGS.epochs,

    validation_data=(test_data, test_labels),

    batch_size=FLAGS.batch_size)

    View Slide

  18. TOC
    Differential Privacy
    TensorFlow Privacy
    発展的な話題 <-

    View Slide

  19. 発展的な話題
    DPSGD の高速化
    Privacy と Fairness のトレードオフ

    View Slide

  20. DPSGD の高速化 (1/2)
    DPSGD は「通常の SGD と
    比較して10-100倍くらい遅
    い」
    Vectorization と JIT コンパ
    イルによる高速化が提案さ
    れている
    Enabling Fast Differentially Private SGD via Just-in-Time Compilation and
    Vectorization

    View Slide

  21. 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

    View Slide

  22. Privacy と Fairness のト
    レードオフ
    Fairness のためにはマイノ
    リティのデータを収集し学
    習することが重要
    Privacy を実現するためにノ
    イズを乗せると、全体に対
    して少数のデータが利用さ
    れなくなる
    Can a Model Be Differentially Private and Fair?

    View Slide

  23. まとめ
    Differential Privacy は Privacy の概念を形式的に定義したもので、個別
    のデータに推論結果が依存する度合いに制限を加えたもの
    DPSGD (Differential Private SGD) は SGD を拡張したもので、勾配に正
    則化とノイズ付加を行うもの
    TensorFlow Privacy を用いることで DPSGD を Keras の API で実装でき

    DPSGD については高速化や Fairness とのトレードオフなどの研究が進
    行中

    View Slide