How Federated Learning Protects Privacy
大規模なデータセットのおかげで、機械学習は驚くべきブレークスルーを達成してきました。しかしデータの多くは個人情報や企業の機密に関わるもので、むやみに共有することはできません。中央集約型でデータを収集し学習する際の大きな障壁がプライバシーなのです。フェデレーテッドラーニングなら、複数ユーザーのデータを使って協調的にモデルを訓練しても、生のデータをデバイスの外へ持ち出す必要がありません。集めたり所有したりしなくても多様なデータから学習できるとしたら、どんな可能性が広がるでしょうか。
電話、時計、車、カメラ、温調器、太陽光パネル、望遠鏡など、センサーでデータを捉え計算処理もできる数十億台の接続デバイスが連携できれば、私たちの環境や人間自身についてより深く理解できるようになるかもしれません。人はどのように移動しているのか、健康とウェルビーイングに影響するものは何か――フェデレーテッドラーニングを通じて、こうしたデバイスが新たな技術を生み出す助けとなり得ます。例えば、自動運転車を大規模に訓練するとき、自分の居場所を明かすことなく車が学習に協力できるとしたらどうでしょう。
このアプローチは組織間の協調にも応用できます。病院は、世界中の医療機関が行ったさまざまな治療介入の結果を統合しながら、極めてセンシティブな医療データを共有することなく、より良い治療計画を立てられるようになるかもしれません。独自の創薬データを持つ製薬企業同士が、安全に協業して「どの化合物がどのように代謝されるか」についての知見を構築できる未来も考えられます。
この枠組みは、都市のモビリティ、経済市場、エネルギーの消費と発電、気候変動や公衆衛生といった複雑なシステムを大規模に集約・モデル化する力を持っています。最終的にフェデレーテッドラーニングが目指すのは、個人データの所有権を保ちながらも、人や企業、自治体、研究機関が協力して大きな問いに向き合い、答えを導き出せる世界です。
この技術の動きを、身近な例で確かめてみましょう。テーマは「スパムメッセージのブロック」です。チャットアプリのスパムはしつこくて厄介なものです。機械学習を使えば、ユーザーが端末上でスパムとしてマークした履歴をもとに、受信メッセージを自動的にフィルタリングするモデルを作れそうです。ところが問題があります。多くの機械学習モデルは膨大なデータを中央サーバーに集めて学習しますが、ユーザーのメッセージには個人的な内容が多く含まれます。スパム検出モデルなどを学習させる際に、センシティブな情報を中央サーバーと共有せずに済ませることはできるのでしょうか。
答えを探るために、まずは典型的な中央集約型の学習システムを見てみます。下のシンプルなスパム検出モデルがそれです。ユーザーのメッセージは中央サーバーにアップロードされ、まとめて処理されてBag-of-Wordsモデルの学習に使われます。メッセージをクリックしてスパム かどうかを切り替えると、サーバーに送られるデータと学習済みモデルが更新されます。
このモデルはスパムの検出に役立つかもしれません。しかし中央集約型の学習には大きな欠点があります。メッセージがどれだけセンシティブであってもすべてサーバーに送らなければならず、データを扱うサーバー管理者が情報を適切に守り、悪用しないと信頼する必要があるのです。
そこで、学習を各ユーザーのデバイス内で行い、データを中央に集めない方法を考えてみましょう。スマートフォンの処理能力は年々向上しており、充電中の夜間などユーザーの体験に影響しない時間帯に機械学習のトレーニングを実行することも十分可能です。
ローカルで学習すればプライバシー面は完璧です。ユーザーのデータが端末の外に出ることはありません。しかし一台の端末が扱えるデータ量には限りがあり、高品質なモデルを育てにくいという欠点が見えてきます。例えば、自動車保険を騙る新しい詐欺が一斉にメッセージをばらまいたとしましょう。ローカルだけで学習するモデルでは、ボブの端末ですでに同様のメッセージがスパム指定されていても、アリスの端末で同じ「保証の更新」を何件もスパム報告するまでフィルタリングできないかもしれません。
では、ユーザー同士がプライバシーを守りながら助け合うにはどうしたらよいでしょうか。ひとつの考え方は、メッセージそのものではなく、端末内で学習したスパム検出モデルを共有することです。サーバー側はそれらのモデルを平均するなどして統合し、みんなが使えるグローバルモデルを得られます。
生のメッセージを逐一送ることはなくなりましたが、ローカルモデルをアップロードしても情報が漏れるおそれがあります。中央サーバーはユーザーがどの単語をどれだけスパム指定したかを直接知ることができ、会話の内容を推測できてしまうのです。サーバーへの信頼度によっては、ローカルモデルすら見せたくないユーザーもいるでしょう。本来サーバーが見るべきなのは、集約された結果だけのはずです。できる限りデータ最小化を実現する仕組みを目指しましょう。
フェデレーテッドラーニングは、このようなデータ最小化の考え方を取り入れ、複数の主体が協力して機械学習の問題を解くための一般的な枠組みです。各主体は生のデータを手元に残したまま、集約を前提とした更新だけを共有してグローバルモデルを改善します。ユーザーモデルを組み合わせる際の露出を減らす最初の一歩は、個々のモデルを保存せず、集約結果だけを扱うことです。セキュア集約やセキュアエンクレーブを組み合わせれば、誰の寄与かをサーバーに明かすことなく多数のローカルモデルを統合できます。まるで魔法のように思えるかもしれませんが、ここでセキュア集約の仕組みをもう少し詳しく見てみましょう。
セキュア集約のプロトコルでは、ユーザーの端末同士が共有するランダムな数を取り決め、協力してローカルモデルをマスクします。こうすることで集約結果は保ったまま、サーバーには各ユーザーがどのようにモデルを変えたのか分からないようにできます。
それでは、ユーザーが提供したローカルモデルを安全に集約してみましょう。アリス、ボブ、キャロルの端末は暗号技術のひとつである手法を使い、ランダムな数値を互いに交換して秘匿します。もちろんユーザーどうしが直接会う必要はありません。
セキュア集約を行えば、ユーザーは中央サーバーに誰の貢献かを明かすことなく、自分たちのモデルを協調的に統合できます。
まとめると、フェデレーテッドラーニングはデータの露出を最小限に抑えながら、協調的にモデルを訓練できる仕組みです。ここで紹介したスパム検出のミニマムな例にとどまらず、さまざまなデバイスや機関が保有するデータを用いた大規模なモデル化へと設計を拡張できます。
スパム分類のようなシンプルなモデルなら、ローカルモデルを一度平均化するだけで十分に学習できます。しかし、現実的なモデルではローカル学習とフェデレーテッド平均を何度も繰り返す必要があります。その仕組みと、実際に生じる課題を見ていきましょう。ここでは、格子状の領域でどこが暑いのか、どこが寒いのかを推測するシンプルな「ヒートマップ型」の二値分類モデルを題材にします。各ユーザーが計測できた温度は、ほんの数地点だけです。
全員がデータを中央サーバーにアップロードすれば、パターンを見抜くのは簡単です。
目標は、誰かの位置履歴を共有することなく、この温度分布を再現することです。そうすれば、どこでセーターが必要になるかをみんなで把握できるはずです。
下のデモでは、各ユーザーが自分の手持ちデータだけで継続的にモデルを学習し、格子内の各地点の温度を予測しています。限られた視点しか持たないため、ユーザーごとに学習されたモデルが大きく異なり、ローカルデータへ過学習してしまう様子が分かります。グラフはそれぞれのローカルモデルが真の温度分布をどれだけ再現できているかを示しており、各モデルがどの程度うまく学習できたかを表しています。
ここでは学習の様子が分かるようローカルモデルの精度も描画していますが、実際のフェデレーテッド学習ではサーバーが参照できるのはグローバルモデルだけです。サーバーが継続的に計算・追跡できる指標はグローバルモデルの精度のみとなります。
すべてのユーザーが似たような温度を報告してくれるなら、この方法はとてもうまく機能します。では、そうでない場合はどうでしょう。もしかすると、一部のユーザーは壊れた温度計を使っていて、どこにいても寒いと報告しているかもしれません。4 つの 外れ値 をそれぞれクリックして学習から除外し、モデルの挙動を観察してみてください。
外れ値を取り除けば、より多くの人が体験したヒートマップに近いモデルを学習できるかもしれません。ただし、外れ値を報告したユーザーが必ずしも誤ったセンサーを使っているとは限りません。「暑い」「寒い」の感覚は人によって違います。外れ値を除外すると、学習データにあまり含まれていない人たちの精度が下がる恐れがあります。
このデモでは外れ値を目で見て判別できますが、フェデレーテッドラーニングのサーバーはユーザーの学習データを直接見ることができません。そのため、外れ値を検知するのは難しくなります。実際には、外れ値が存在すると全ユーザーを通じてモデル品質が悪化することがシグナルになります。
一人のユーザーが参加したかどうかでグローバルモデルが大きく変わってしまうと、プライバシー面で新たな懸念が生まれます。特定のユーザーが参加したことでモデルが変化するなら、最終的なモデルを観察しただけで「誰が学習に加わったか」や、その人のローカルデータまで推測されてしまうかもしれません。特に外れ値はモデルに与える影響が大きくなりがちです。
例えば、寒がりでいつもセーターを着ていることで有名なユーザーが参加候補にいたとします。グローバルモデルの精度が予想よりも低かったら、「あのセーター愛好家が学習に参加し、常に寒いと報告したせいで精度が下がったのだろう」と推測できてしまいます。セキュア集約を使っていても状況は同じです。サーバーは誰がどの値を送ったか直接は分かりませんが、得られたグローバルモデルから「いつも寒いと言う人が参加した可能性が高い」と読み取れてしまうのです。
そこで、ユーザーの貢献がモデルに及ぼす影響を厳密に制限し、ランダムなノイズを加えることで、学習手順を差分プライバシーに準拠させる手法が役立ちます。フェデレーテッドラーニングで差分プライバシーを適用すると、グローバルモデルの精度は多少落ちるかもしれませんが、外れ値(やその他任意のユーザー)を学習に含めたり外したりしても結果はおおよそ変わらなくなります。
スライダーを操作して、ユーザーが報告した位置情報にどの程度ノイズを加えるか調整してみましょう。プライバシー保護の強度が低いほど、外れ値の有無がモデルに与える影響が大きくなります。逆にプライバシーを強くすると、外れ値を含めてもモデル品質に目立った差が出なくなります。
実際のシステムでは、生のデータにノイズを足すのではなく、ユーザーモデルの勾配をクリッピングし、ノイズを加えることが一般的です。複数のクリッピング済みモデルを束ねてからノイズを付与することもあります。中央でノイズを足す方が精度面では有利ですが、その場合はノイズを加える前のモデルを信頼できる集約器などの技術で保護する必要があります。
このデモが示しているのは、プライバシーと精度のトレードオフです。さらにもうひとつ、考慮すべき次元があります。学習データの量――サンプル数とユーザー数――です。データを増やせば計算資源のコストは上がりますが、これもまた調整できるパラメータであり、さまざまな要素の折り合いをつける助けになります。
フェデレーテッドラーニングには、ほかにも調整できるパラメータがたくさんあります。これらが複雑に組み合わさって挙動が決まります。各変数の値をクリックすると特定の設定で実行でき、変数名をクリックするとすべての選択肢をスイープできます。自由に組み合わせて試してみてください。5
フェデレーテッドラーニングの世界観をやさしく紹介するコミックがあります。Google AI の紹介記事も、最初の一歩としておすすめです。
本記事ではユーザープライバシーの観点からフェデレーテッドラーニングを取り上げましたが、データ最小化 や データ匿名化 といった課題、そしてそれらにどう対処するかを詳しく論じた解説記事もぜひご覧ください。
フェデレーテッドラーニングと差分プライバシーのトレードオフについては、以前のエクスプローラブルで例単位の差分プライバシーに焦点を当てて紹介しました。実運用では、公開されたモデルから特定ユーザーに関する情報が漏れないようにするユーザー単位の差分プライバシーの方が重要になる場面が多くあります。各デバイスが一人分のデータしか扱わないフェデレーテッドラーニングでは、この考え方が自然に適用できます。
フェデレーテッドラーニングの発展と未解決課題を網羅したサーベイ論文では、モデリング、システム設計、ネットワーク通信、セキュリティ、プライバシー、パーソナライゼーション、公平性など、多岐にわたる研究が紹介されています。さらに、中央集約なしでデータサイエンスの基本的な問いに答えるためのフェデレーテッドアナリティクスという分野も活発に研究・開発が進んでいます。
フェデレーテッドラーニングやフェデレーテッドアナリティクスを試してみたい方は、オープンソースの TensorFlow Federated を活用できます。動画シリーズやチュートリアル集も用意されており、学習を始めるのに役立ちます。
Nicole Mitchell と Adam Pearce // 2022年11月
このコンテンツの制作にあたり、Nithum Thain、Alex Ingerman、Brendan McMahan、Hugo Song、Daniel Ramage、Peter Kairouz、Alison Lentz、Kallista Bonawitz、Jakub Konečný、Zachary Charles、Marco Zamarato、Zachary Garrett、Lucas Dixon、James Wexler、Martin Wattenberg、Astrid Bertrand、Quirk Research チームの皆さんに感謝します。
エンドツーエンド暗号化されたメッセージアプリでは、中央集約型の学習は利用できません。
より高度な暗号プロトコルを用いれば、ユーザー同士が完全に接続しなくても、一部のユーザーが離脱した場合でも合計値を計算できます。
各「ローカルステップ」で何が起きているのか詳しく知りたい場合は、TensorFlow Playground を試してみてください。
クロスデバイス型(例:数十億台のスマートフォン)では、各ラウンドで全デバイスのごく一部だけが選ばれて学習に参加します。多くても各デバイスが訓練に貢献するのは数回程度で、負荷を分散しつつ多様なデバイスをモデルに反映できるようにしています。クロスサイロ型 では、より信頼性の高い少数のユーザー(組織やデータセンターなど)が想定されています。
実際のクロスデバイス型では、選ばれた各デバイスが平均化の前に実行するローカルステップの回数は小さく固定されているのが普通です。
以下のシステム例では、ローカルモデルを20ステップごとに統合しています。
すべての種類のユーザーをただ含めるだけでは公平性を担保できない場合が多く、誰に対しても同じ性能を発揮できるような学習戦略を設計することが活発に研究されています。最終的なグローバルモデルを各端末で微調整するパーソナライゼーションは有望なアプローチのひとつです。
この例ではそこまで深刻に感じられないかもしれませんが、医療臨床試験のように参加自体が極めてセンシティブなケースでは、より複雑なモデルが情報を漏洩する恐れがあります。
ここで扱っているのは単純なモデルと、小規模なフェデレーテッドラーニングのシミュレーションです。観察できる現象は、実運用で起こることを必ずしも完全には代表していない点にご注意ください。