TensorFlow Privacy の概要: 差分プライバシーを適用したトレーニング データで学習する
2019年3月22日金曜日
この記事は Carey RadebaughとUlfar Erlingssonによる TensorFlow - Medium の記事 "Introducing TensorFlow Privacy: Learning with Differential Privacy for Training Data" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
投稿者: Carey Radebaugh (プロダクト マネージャー)、 Ulfar Erlingsson (リサーチ サイエンティスト)
本日は、TensorFlow Privacy(GitHub)についてご紹介します。オープンソース ライブラリである TensorFlow Privacy は、デベロッパーがプライバシーに配慮した機械学習モデルを簡単にトレーニングできるようにします。それだけでなく、研究者は TensorFlow Privacy を使って強いプライバシーを保証し、機械学習の水準を高めることができます。
最新の機械学習は、驚くような新技術やユーザー エクスペリエンスを実現するために使われることが増えてきました。その大半は、トレーニングの際に、個人の写真や電子メールといったプライベートなデータから学習しています。トレーニングが完了したとき、機械学習モデルのパラメータには、特定のトレーニング サンプルにまつわる事実ではなく、汎用的なパターンがエンコードされるのが理想です。これを確実に実現しつつ、プライベートなトレーニング データを扱う際に強いプライバシー保証を提供するために、差分プライバシーという理論に基づいた技術を使うことができます。特に、ユーザーのデータを使ってトレーニングを行う場合は、こういった技術によって、モデルが特定のユーザーに関する詳細を学習せず記憶しないという強い数学的保証を提供できます。ディープ ラーニングでは、しきい値やデータ消去などの確立された技術や、TensorFlow Federated による学習などの新しい技術など、他のプライバシー技術による保護と合わせてこの技術を使うことで、さらに保護を強化することができます。

Google は何年にもわたり、差分プライバシーの基礎研究と、最新の機械学習アプリケーション(こちらやこちら、またはこちらの研究論文をご覧ください)を見据えた実用的な差分プライバシー メカニズムの開発(こちらやこちらの例をご覧ください)の両面において、先頭を走り続けています。昨年は、責任ある AI の実践を公開し、責任ある機械学習システムおよびプロダクトを開発するために推奨すべきことを細かくまとめました。また、これが一般公開される前から、外部デベロッパーがこういった実践内容を自分のプロダクトに適用しやすくするための努力も続けています。
この努力が結んだ実の 1 つが、本日お知らせする TensorFlow Privacy と、そのプライバシー メカニズムを詳細に説明したテクニカル ホワイトペーパーの更新版です。
TensorFlow Privacy は、プライバシーの専門家でなく基礎となる数学的知識を使うことができます。標準の TensorFlow メカニズムを使っている方は、モデルのアーキテクチャやトレーニング手続き、処理を変える必要はありません。多くの場合、少しばかりコードを変更し、プライバシーに関係するハイパーパラメータを調整するだけで、トレーニング データのプライバシーを保護するモデルをトレーニングできます。
どちらのモデルも、標準の Penn Treebank トレーニング データセットにある金融ニュース記事の英語をうまくモデリングできます。しかし、モデルが言葉の分布に関して欠かすことのできない重要な側面を見逃してしまい、その結果 2 つのモデルに微妙な違いが生じたとすれば、差分プライバシー モデルの有用性に疑問が生じます(一方で、トレーニング データのあまりにも些細で細かい特徴をとらえることができなかったとしても、プライベートなモデルの有用性はさほど損なわれないでしょう)。
プライベートなモデルの有用性を確認するため、トレーニング データとテストデータのコーパスに対して 2 つのモデルを実行し、それぞれが許容する文、許容しない文を調べてみましょう。共通の特徴を確認するため、モデリングした文の共通性を計測することで、両方のモデルが同じ重要な言葉を許容するかどうかを調べてみます。この事例では、両方のモデルがトレーニング データの 98% 以上を許容し、高いスコアを出しました(つまり、パープレキシティが低い)。たとえば、次の金融ニュースに対しては、どちらのモデルも高いスコアを出しています。(これは明らかに学習したい分布の中に含まれるので、斜体で記述しています。)
この 2 つのモデルの違いは、明らかにプライベートなモデルがトレーニング データの異質で珍しい文を記憶していない点にあります(少なくとも、違いの一部はこの点にあります)。この効果は、私たちの以前の成果を使って定量化できます。これは、ニューラル ネットワークの意図しない記憶化を計測するもので、意図的にトレーニング データにでたらめな ダミー の文を挿入し、トレーニングを終えたモデルでそのダミーデータの影響を評価することよって実現しています。今回の例では、1 つのでたらめなダミーの文を挿入するだけで十分です。プライベートでないモデルは、そのダミーデータを完全に記憶してしまったからです。一方、差分プライバシーでトレーニングしたモデルは、1 つのダミーデータを挿入しても、それを見分けることはありません。プライバシー モデルは、トレーニング データに同じでたらめな文字列が何度も何度も登場した場合のみ、それを学習します。この点は、あらゆる種類の機械学習モデルに当てはまります(例: 上の MNIST トレーニング データの珍しい数字のサンプルをご覧ください)。モデルのプライバシーに対する数学的に正式な上限がはるかに大きく、理論上何の保証も提供できない場合でも、この点が当てはまることに代わりはありません。

TensorFlow Privacy は、珍しいデータが細かく記憶されるのを防ぐことができます。また、上の図に示すように、2 つの機械学習モデルで、あるサンプル(例: 何らかのユーザーデータ)を使ってトレーニングを行ったかどうかを見分けることはできなくなります。
TensorFlow Privacy を使う場合、重要ないくつかの新しい手順が必要になります。具体的には、勾配を作成し、切り詰め、ノイズ化する方法を制御する 3 つのハイパーパラメータを新しく設定します。トレーニングでは、変更を加えた確率的勾配降下法を使ってモデルを最適化することで、差分プライバシーが確保されます。実際には、トレーニング データのサンプルに起因する複数の勾配の更新を平均化し、それぞれの勾配の更新を特定の最大値ノルムまで切り詰め、最終的な平均値にランダムなガウスのノイズを追加します。この学習方法では、各トレーニング データのサンプルの効果に上限値が設けられることになります。さらに、ノイズを追加することで、どのサンプルもそれ 1 つだけで影響を与えることがなくなります。この 3 つのハイパーパラメータの設定には、職人技が求められるかもしれません。しかし、TensorFlow Privacy リポジトリには、具体的な例に対してどのように値を選択できるかを示したガイドラインも含まれています。
TensorFlow Privacy は、強いプライバシーを保証する機械学習モデルをトレーニングするために、最善の技術のハブとなることを目指して開発されています。関係する皆さんは、ぜひ以下のような形でご参加ください。
Reviewed by Kaz Sato - Staff Developer Advocate, Google Cloud
投稿者: Carey Radebaugh (プロダクト マネージャー)、 Ulfar Erlingsson (リサーチ サイエンティスト)
本日は、TensorFlow Privacy(GitHub)についてご紹介します。オープンソース ライブラリである TensorFlow Privacy は、デベロッパーがプライバシーに配慮した機械学習モデルを簡単にトレーニングできるようにします。それだけでなく、研究者は TensorFlow Privacy を使って強いプライバシーを保証し、機械学習の水準を高めることができます。
最新の機械学習は、驚くような新技術やユーザー エクスペリエンスを実現するために使われることが増えてきました。その大半は、トレーニングの際に、個人の写真や電子メールといったプライベートなデータから学習しています。トレーニングが完了したとき、機械学習モデルのパラメータには、特定のトレーニング サンプルにまつわる事実ではなく、汎用的なパターンがエンコードされるのが理想です。これを確実に実現しつつ、プライベートなトレーニング データを扱う際に強いプライバシー保証を提供するために、差分プライバシーという理論に基づいた技術を使うことができます。特に、ユーザーのデータを使ってトレーニングを行う場合は、こういった技術によって、モデルが特定のユーザーに関する詳細を学習せず記憶しないという強い数学的保証を提供できます。ディープ ラーニングでは、しきい値やデータ消去などの確立された技術や、TensorFlow Federated による学習などの新しい技術など、他のプライバシー技術による保護と合わせてこの技術を使うことで、さらに保護を強化することができます。

Google は何年にもわたり、差分プライバシーの基礎研究と、最新の機械学習アプリケーション(こちらやこちら、またはこちらの研究論文をご覧ください)を見据えた実用的な差分プライバシー メカニズムの開発(こちらやこちらの例をご覧ください)の両面において、先頭を走り続けています。昨年は、責任ある AI の実践を公開し、責任ある機械学習システムおよびプロダクトを開発するために推奨すべきことを細かくまとめました。また、これが一般公開される前から、外部デベロッパーがこういった実践内容を自分のプロダクトに適用しやすくするための努力も続けています。
この努力が結んだ実の 1 つが、本日お知らせする TensorFlow Privacy と、そのプライバシー メカニズムを詳細に説明したテクニカル ホワイトペーパーの更新版です。
TensorFlow Privacy は、プライバシーの専門家でなく基礎となる数学的知識を使うことができます。標準の TensorFlow メカニズムを使っている方は、モデルのアーキテクチャやトレーニング手続き、処理を変える必要はありません。多くの場合、少しばかりコードを変更し、プライバシーに関係するハイパーパラメータを調整するだけで、トレーニング データのプライバシーを保護するモデルをトレーニングできます。
例: プライバシーを守りつつ言葉を学習する
差分プライバシーを使ったトレーニングの具体的な例として、テキスト列を使って文字レベルの再帰型言語モデルをトレーニングする場合を考えてみましょう。ディープ ラーニングのタスクには、ニューラル ネットワークを使った言語のモデリングが欠かせません。この手法は数え切れないほどのアプリケーションで使われており、その多くはプライベートなデータでトレーニングを行っています。ここでは、同じモデル アーキテクチャと TensorFlow Privacy GitHub リポジトリのサンプル コードを使い、2 つのモデルをトレーニングします。1 つは標準的な手法を、もう 1 つは差分プライバシーを利用します。どちらのモデルも、標準の Penn Treebank トレーニング データセットにある金融ニュース記事の英語をうまくモデリングできます。しかし、モデルが言葉の分布に関して欠かすことのできない重要な側面を見逃してしまい、その結果 2 つのモデルに微妙な違いが生じたとすれば、差分プライバシー モデルの有用性に疑問が生じます(一方で、トレーニング データのあまりにも些細で細かい特徴をとらえることができなかったとしても、プライベートなモデルの有用性はさほど損なわれないでしょう)。
プライベートなモデルの有用性を確認するため、トレーニング データとテストデータのコーパスに対して 2 つのモデルを実行し、それぞれが許容する文、許容しない文を調べてみましょう。共通の特徴を確認するため、モデリングした文の共通性を計測することで、両方のモデルが同じ重要な言葉を許容するかどうかを調べてみます。この事例では、両方のモデルがトレーニング データの 98% 以上を許容し、高いスコアを出しました(つまり、パープレキシティが低い)。たとえば、次の金融ニュースに対しては、どちらのモデルも高いスコアを出しています。(これは明らかに学習したい分布の中に含まれるので、斜体で記述しています。)
there was little turnover and nothing to stimulate the market
south korea and japan continue to be profitable
merchant banks were stronger across the board2 つのモデルの違いを確認するために、トレーニング データのうち、スコアが大きく違っている文を調べてみましょう。たとえば、トレーニング データにある次の 3 つの文は、通常の言語モデルではスコアが高く、許容されています。こういった文は、通常のトレーニングの中で記憶されてしまったからです。しかし、差分プライバシー モデルでは、これらの文のスコアはとても低く、許容されていません。(以下の文は、学習したい言葉の分布の外にあるので太字にしています。)
aer banknote berlitz calloway … ssangyong swapo wachter
the naczelnik stands too
my god and i know i am correct and innocent上の文は、いずれも金融ニュースでは見かけないような内容です。プライバシー保護の観点で見れば、プライベートなものであると考えられます。たとえば、プライベートなデータでトレーニングを行ったモデルでは、このような珍しい文から個人の情報が特定されたり明かされてしまうかもしれません。この 3 つの文のうち最初の文は、でたらめに単語を並べた長文です。これは、技術的な理由でトレーニング データに含められています。2 つ目の文は、一部がポーランド語になっています。3 つ目の文は、自然な英語に見えますが、モデリング対象の金融ニュースの言葉ではありません。以上の例は手作業で選んだものですが、細かく調べていけば、差分プライバシー モデルが許容しないトレーニング データの文は、一般的に金融ニュース記事における通常の言葉の分布の外にあることが確認できます。さらにテストデータを評価すれば、プライベートなモデルとプライベートでないモデルとの質の損失(パープレキシティが 1.13 と 1.19)の原因は、こういったおかしな文であることが確認できます。そのため、名目上のパープレキシティ損失は 6% ほどになっていますが、関心対象の文に対するプライベート モデルのパフォーマンスが落ちる可能性はほとんどありません。
この 2 つのモデルの違いは、明らかにプライベートなモデルがトレーニング データの異質で珍しい文を記憶していない点にあります(少なくとも、違いの一部はこの点にあります)。この効果は、私たちの以前の成果を使って定量化できます。これは、ニューラル ネットワークの意図しない記憶化を計測するもので、意図的にトレーニング データにでたらめな ダミー の文を挿入し、トレーニングを終えたモデルでそのダミーデータの影響を評価することよって実現しています。今回の例では、1 つのでたらめなダミーの文を挿入するだけで十分です。プライベートでないモデルは、そのダミーデータを完全に記憶してしまったからです。一方、差分プライバシーでトレーニングしたモデルは、1 つのダミーデータを挿入しても、それを見分けることはありません。プライバシー モデルは、トレーニング データに同じでたらめな文字列が何度も何度も登場した場合のみ、それを学習します。この点は、あらゆる種類の機械学習モデルに当てはまります(例: 上の MNIST トレーニング データの珍しい数字のサンプルをご覧ください)。モデルのプライバシーに対する数学的に正式な上限がはるかに大きく、理論上何の保証も提供できない場合でも、この点が当てはまることに代わりはありません。

TensorFlow Privacy は、珍しいデータが細かく記憶されるのを防ぐことができます。また、上の図に示すように、2 つの機械学習モデルで、あるサンプル(例: 何らかのユーザーデータ)を使ってトレーニングを行ったかどうかを見分けることはできなくなります。
次のステップと参考文献
GitHub リポジトリからサンプルとチュートリアルをチェックアウトすると、TensorFlow Privacy を使ってみることができます。ここには、MNIST ベンチマーク機械学習タスクで差分プライバシー トレーニングを行う方法についての詳しいチュートリアルが含まれています。従来型の TensorFlow のメカニズム用のチュートリアルと合わせて、TensorFlow 2.0 と Keras を使った新しい eager モードによるチュートリアルも掲載されています。TensorFlow Privacy を使う場合、重要ないくつかの新しい手順が必要になります。具体的には、勾配を作成し、切り詰め、ノイズ化する方法を制御する 3 つのハイパーパラメータを新しく設定します。トレーニングでは、変更を加えた確率的勾配降下法を使ってモデルを最適化することで、差分プライバシーが確保されます。実際には、トレーニング データのサンプルに起因する複数の勾配の更新を平均化し、それぞれの勾配の更新を特定の最大値ノルムまで切り詰め、最終的な平均値にランダムなガウスのノイズを追加します。この学習方法では、各トレーニング データのサンプルの効果に上限値が設けられることになります。さらに、ノイズを追加することで、どのサンプルもそれ 1 つだけで影響を与えることがなくなります。この 3 つのハイパーパラメータの設定には、職人技が求められるかもしれません。しかし、TensorFlow Privacy リポジトリには、具体的な例に対してどのように値を選択できるかを示したガイドラインも含まれています。
TensorFlow Privacy は、強いプライバシーを保証する機械学習モデルをトレーニングするために、最善の技術のハブとなることを目指して開発されています。関係する皆さんは、ぜひ以下のような形でご参加ください。
- 差分プライバシーと機械学習への応用について、こちらまたはこちらのブログ記事をお読みください。
- 専門家の皆さんは、TensorFlow Privacy を自分の機械学習モデルに適用し、ハイパーパラメータ、モデルの能力やアーキテクチャ、活性化関数などを調整して、プライバシーと実用性のバランスについて実験してみてください。
- 研究者の皆さんは、モデルのパラメータ選択などについてさらに分析を進め、強いプライバシーを保証して現実世界の機械学習の水準を上げることに挑戦してください。
- プルリクエストを送信して、TensorFlow Privacy に貢献してください。
- GitHub の Issue で質問をしたり、コメントや懸念事項を共有してください。
謝辞
TensorFlow Privacy に貢献してくださった Galen Andrew、Nicholas Carlini、Steve Chien、Brendan McMahan、Ilya Mironov、Nicolas Papernot の皆さんに感謝を捧げます。Reviewed by Kaz Sato - Staff Developer Advocate, Google Cloud