機械学習におけるプライバシー

責任ある AI の使用において重要なことは、潜在的な機密情報、たとえば、トレーニング データセットに含まれるユーザー属性情報など、ユーザーを特定できるような情報が ML モデルから漏えいしないようにすることです。これを実現する一つの方法として、機械学習における標準的な確率的勾配降下法(SGD)アルゴリズムを改良したものである、差分プライバシー確率的勾配降下法(DP-SGD)の使用があります。

DP-SGD を使ってトレーニングさせたモデルは、差分プライバシー(DP)が目に見えて改善されており、機密性の高いトレーニング データが漏えいするリスクを低減できます。DP の目的は、個々のデータポイントが特定されないようにすることなので、DP でトレーニングさせたモデルは、トレーニング データセット内の単一のトレーニング サンプルの影響を受けないものと考えられます。DP-SGD 技術は、フェデレーション・ラーニングにおいても、ユーザーレベルの差分プライバシーを提供するために使用できます。差分プライバシー・ディープ ラーニングについて詳しくは、元の論文をご覧ください。

import tensorflow as tf
from tensorflow_privacy.privacy.optimizers import dp_optimizer_keras

# Select your differentially private optimizer
optimizer = tensorflow_privacy.DPKerasSGDOptimizer(
    l2_norm_clip=l2_norm_clip,
    noise_multiplier=noise_multiplier,
    num_microbatches=num_microbatches,
    learning_rate=learning_rate)

# Select your loss function
loss = tf.keras.losses.CategoricalCrossentropy(
    from_logits=True, reduction=tf.losses.Reduction.NONE)

# Compile your model
model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])

# Fit your model
model.fit(train_data, train_labels,
  epochs=epochs,
  validation_data=(test_data, test_labels),
  batch_size=batch_size)
  

TensorFlow Privacy

Tensorflow Privacy(TF Privacy)は、Google Research のチームによって開発されたオープンソース ライブラリです。このライブラリには、DP を使って ML モデルをトレーニングするための一般的な TensorFlow オプティマイザーの実装が含まれています。このライブラリの目的は、標準的な TensorFlow API を使用する ML の実務担当者が、わずか数行のコード変更でプライバシー保護モデルをトレーニングできるようにすることです。

差分プライベート オプティマイザーは、オプティマイザー クラスを使用する高レベル API(特に Keras)と組み合わせて使用できます。さらに、一部の Keras モデルでは、差分プライベート実装もあります。すべてのオプティマイザーとモデルは、API ドキュメントに記載されています。