様々な図面における同じ参照番号および名称は、同様の要素を示す。
本文書は、いずれの個々のコンピューティングシステムにもデータセットを明らかにすることなく、データセットに対するラベルを識別するために機械学習モデルを使用することを含む技法を実施する、方法、システム、装置、およびコンピュータ可読媒体を開示する。たとえば、本明細書において論じられる技法は、各コンピューティングシステムがデータセットの他の部分にアクセスするのを防ぎながら、データセットの部分へのアクセスを異なるコンピューティングシステムに提供する。いくつかの実装形態では、データセットの部分は、各々の単一の部分がデータセットの不完全な部分を表し、データセットについて何も明らかにしないように、データセットを部分へと分割することによって作成される。
コンピューティングシステムは、コンピュータシステムがアクセス権を与えられているデータセットの個別の部分だけにアクセスするようにコンピュータシステムを制限しながら、データセット全体に対するラベルを特定し、完全なデータセットに対するラベルを要求するデバイスだけがラベルを入手できるようにセキュアな方式でラベルを返すために、暗号学的プロトコルを実行する。たとえば、データセットの第1の個別の部分を与えられる1つのコンピューティングシステムは、得られるラベルの情報の第1のシェアを特定し、データセットに対するラベルを要求するデバイスだけに知られている鍵を用いてラベルの第1の秘密シェアを特定する第1の情報を暗号化し、データセットの第2の個別の部分を提供された第2のコンピューティングシステムにその第1の情報の暗号化されたバージョンを渡すことができる。第2のコンピューティングシステムは同様に、第2のラベルを特定し、完全なデータセットに対するラベルを要求するデバイスだけに知られている鍵を用いて第2のラベルを識別する第2の情報を暗号化し、完全なデータセットの他の個別の部分を処理する他のコンピューティングシステムがある場合、ラベルの第1の秘密シェアの暗号化されたバージョンとともに、ラベルのその第2の秘密シェアの暗号化されたバージョンをさらに別のコンピューティングシステムに渡し、または完全なデータセットに対するラベルを要求したデバイスに暗号化された情報を渡すことができる。
完全なデータセットに対するラベルを要求したデバイスは次いで、受信された情報を復号し、ラベルのすべての秘密のシェアを組み合わせてデータセットに対する最終ラベルを平文で取得することができる。上で述べられたように、本文書全体でより詳しく説明されるこの技法は、完全なデータセットにアクセスを提供せずに完全なデータセットに対するラベルをどのように生成するかという技術的な問題を解決し、これは、データアクセス技術およびデータセキュリティの改善である。
本文書において論じられる技法は、多くのデータ処理環境において使用され得る。これらの技法の使用から利益を得ることができる1つの環境は、これらの技法がユーザデータの完全なセットへのアクセスを防ぎながら、それでもユーザデータが全体としてラベリングされることを可能にするので、ユーザデータがデータセットを構成する(またはそれに含まれる)ような環境である。たとえば、以下でより詳しく説明されるように、これらの技法は、ユーザデータの完全なセットが単一の信用される位置に(たとえば、ユーザのデバイスに)記憶されたままであることを可能にしながら、ユーザのデバイス(たとえば、携帯電話、タブレットデバイス、ウェアラブルデバイス、音声アシスタントデバイス、ゲーミングデバイス、またはラップトップデバイス)において実行され得るより複雑なアルゴリズム(たとえば、機械学習アルゴリズム)を実行することが可能なリモートシステムにより、ユーザデータが処理および/またはラベリングされることを可能にする。以下で詳しく説明されるように、データの個別の部分に対するラベルを決定するために使用される機械学習モデルも、機械学習モデルによってラベリングされるデータの個別の部分と同様の方法でやはり保護されるユーザデータを使用して訓練され得る。
図1は、デジタルコンポーネントが(たとえば、電子文書とともに)提示するために配信される、例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、またはそれらの組合せなどの、ネットワーク102を含む。ネットワーク102は、コンテンツサーバ104、クライアントデバイス106、デジタルコンポーネント提供者108、およびデジタルコンポーネント配信システム110(コンポーネント配信システム(CDS)とも呼ばれる)を接続する。
クライアントデバイス106は、ネットワーク102を介してリソースを要求して受信することが可能な電子デバイスである。例示的なクライアントデバイス106は、パーソナルコンピュータ、モバイル通信デバイス、ウェアラブルデバイス、携帯情報端末、タブレットデバイス、ゲーミングデバイス、メディアストリーミングデバイス、IoTデバイス(たとえば、サーモスタット、ホームコントロールユニット、家電機器、および様々なセンサ)、およびネットワーク102を介してデータを送信して受信することができる他のデバイスを含む。クライアントデバイス106は通常、ネットワーク102を介したデータの送信と受信を促進するために、ウェブブラウザなどのユーザアプリケーション107を含むが、クライアントデバイス106によって実行されるネイティブアプリケーションも、ネットワーク102を介したデータの送信と受信を促進することができる。クライアントデバイス106、および特に携帯情報端末は、クライアントデバイス106との音声による対話を可能にするハードウェアおよび/またはソフトウェアを含み得る。たとえば、クライアントデバイス106は、コマンド、検索クエリ、ブラウジング命令、スマートホーム命令、および/または他の情報などのオーディオ(たとえば、音声)入力をユーザがそれを通じて出すことができるマイクロフォンを含み得る。加えて、クライアントデバイス106は、ユーザがそれを通じてオーディオ(たとえば、音声)出力を与えられ得るスピーカーを含み得る。携帯情報端末は任意のクライアントデバイス106として実装されてもよく、例には、ウェアラブル、スマートスピーカー、家電機器、車、タブレットデバイス、または他のクライアントデバイス106がある。
電子文書は、クライアントデバイス106においてコンテンツのセットを提示するデータである。電子文書の例は、ウェブページ、ワードプロセシング文書、portable document format (PDF)文書、オーディオ、画像、ビデオ、検索結果ページ、およびフィードソースを含む。モバイル、タブレット、またはデスクトップコンピューティングデバイスにインストールされるアプリケーションなどのネイティブアプリケーション(「アプリ」)も、電子文書の例である。電子文書は、コンテンツサーバ104によってクライアントデバイス106に提供され得る。たとえば、コンテンツサーバ104は、発行者ウェブサイトをホストするサーバを含み得る。この例では、クライアントデバイス106は、所与の発行者ウェブページに対する要求を開始することができ、所与の発行者ウェブページをホストするウェブサーバを含むコンテンツサーバ104は、クライアントデバイス106における所与のウェブページの提示を開始する機械実行可能命令を送信することによって要求に応答することができる。
別の例では、コンテンツサーバ104は、クライアントデバイス106がそこからアプリをダウンロードすることができるアプリサーバを含み得る。この例では、クライアントデバイス106は、クライアントデバイス106にアプリをインストールするために必要とされるファイルをダウンロードし、次いで、ダウンロードされたアプリをローカルで実行することができる。ダウンロードされたアプリは、アプリケーション自体の一部であるネイティブコンテンツ、ならびに、アプリがクライアントデバイス106において実行されている間にデジタルコンポーネントサーバ108から取得されアプリに挿入される1つまたは複数のデジタルコンポーネント(たとえば、第三者により作成/配信されるコンテンツ)の組合せを提示するように構成され得る。
電子文書は様々なコンテンツを含み得る。たとえば、電子文書は、電子文書自体の中にある、および/または時間とともに変化しない静的なコンテンツ(たとえば、テキストまたは他の指定されたコンテンツ)を含み得る。電子文書はまた、時間とともに、または要求に応じて変化し得る動的なコンテンツを含み得る。たとえば、所与の電子文書の発行者は、電子文書の部分を埋めるために使用されるデータソースを維持することができる。この例では、所与の電子文書は、所与の電子文書がクライアントデバイス106によって処理される(たとえば、レンダリングまたは実行される)ときにデータソースからのコンテンツをクライアントデバイス106に要求させるタグまたはスクリプトを含み得る。クライアントデバイス106は、データソースから取得されるコンテンツを所与の電信文書に統合して、データソースから取得されるコンテンツを含む複合電子文書を作成する。
いくつかの状況では、所与の電信文書は、デジタルコンポーネント配信システム110を参照するデジタルコンポーネントタグまたはデジタルコンポーネントスクリプトを含み得る。これらの状況では、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、所与の電子文書がクライアントデバイス106によって処理されるとき、クライアントデバイス106によって実行される。デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトの実行は、デジタルコンポーネント112に対する要求(「コンポーネント要求」と呼ばれる)を生成するようにクライアントデバイス106を構成し、この要求はネットワーク102を介してデジタルコンポーネント配信システム110に送信される。たとえば、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、クライアントデバイス106が、ヘッダおよびペイロードデータを含むパケット化されたデータ要求を生成することを可能にし得る。デジタルコンポーネント要求112は、そこからのメディアが要求されているサーバの名前(またはネットワーク位置)、要求しているデバイス(たとえば、クライアントデバイス106)の名前(またはネットワーク位置)、および/または要求に応答して提供される1つまたは複数のデジタルコンポーネントを選択するためにデジタルコンポーネント配信システム110が使用することができる情報などの、特徴を特定するイベントデータを含み得る。コンポーネント要求112は、クライアントデバイス106によって、ネットワーク102(たとえば、遠隔通信ネットワーク)を介してデジタルコンポーネント配信システム110のサーバに送信される。
デジタルコンポーネント要求112は、要求されている電子文書、およびデジタルコンポーネントが提示され得る電子文書の位置の特性などの、他のイベント特徴を指定するイベントデータを含み得る。たとえば、デジタルコンポーネントが提示される電子文書(たとえば、ウェブページまたはアプリケーション)への参照(たとえば、Uniform Resource Locator (URL))、デジタルコンポーネントを提示するために利用可能な電子文書の利用可能な位置、利用可能な位置のサイズ、および/またはその位置において提示するのに適格であるメディアタイプを指定するイベントデータが、デジタルコンポーネント配信システム110に提供され得る。同様に、電子文書と関連付けられるキーワード(「文書キーワード」)または電子文書によって参照されるエンティティ(たとえば、人々、場所、または物)を指定するイベントデータも、電子文書とともに提示するのに適格であるデジタルコンポーネントの特定を促進するために、コンポーネント要求112に(たとえば、ペイロードデータとして)含まれ、デジタルコンポーネント配信システム110に提供され得る。イベントデータは、検索結果ページおよび/または検索結果を指定するデータおよび/または検索結果に含まれるテキストの、可聴の、もしくは他の視覚的なコンテンツを取得するためにクライアントデバイス106から出された検索クエリも含み得る。
コンポーネント要求112は、クライアントデバイスのユーザが提供した情報、コンポーネント要求が出された状態もしくは領域を示す地理的情報、またはデジタルコンポーネントが表示される環境のコンテキスト(たとえば、コンポーネント要求の時刻、コンポーネント要求の曜日、モバイルデバイスまたはタブレットデバイスなどのデジタルコンポーネントが表示されるデバイスのタイプ)を提供する他の情報などの、他の情報に関するイベントデータも含み得る。コンポーネント要求112は、たとえば、パケット化されたネットワークを介して送信されてもよく、コンポーネント要求112自体が、ヘッダおよびペイロードデータを有するパケット化されたデータとしてフォーマットされてもよい。ヘッダはパケットの宛先を指定することができ、ペイロードデータは上で論じられた情報のいずれをも含むことができる。
1つまたは複数のデジタルコンポーネント配信サーバを含むデジタルコンポーネント配信システム110は、コンポーネント要求112を受信したこと、および/またはコンポーネント要求112に含まれる情報を使用したことに応答して、所与の電子文書とともに提示されるデジタルコンポーネントを選ぶ。いくつかの実装形態では、デジタルコンポーネントの選択の遅れにより引き起こされ得るエラーを回避するために、デジタルコンポーネントは1秒以内に選択され得る。たとえば、コンポーネント要求112に応答してデジタルコンポーネントを提供する際の遅延により、クライアントデバイス106におけるページロードのエラーが生じ、または、電子文書の他の部分がクライアントデバイス106に提示された後でも電子文書のある部分が埋まっていないままになり得る。また、クライアントデバイス106にデジタルコンポーネントを提供する際の遅延が増えるにつれて、デジタルコンポーネントがクライアントデバイス106に届けられるときに電子文書がもはやクライアントデバイス106に提示されなくなり、それにより、電子文書についてのユーザの体験に悪影響を及ぼすとともに、システム帯域幅および他のリソースを無駄にする可能性が高くなる。さらに、デジタルコンポーネントを提供する際の遅延は、たとえばデジタルコンポーネントが提供されるときに電子文書がもはやクライアントデバイス106に提示されない場合、デジタルコンポーネントの配信の失敗をもたらし得る。
電子文書の検索を促進するために、環境100は、(たとえば、電子文書のクローリングされたコンテンツに基づいてインデクシングされる)電子文書をクローリングおよびインデクシングすることによって電子文書を特定する検索システム150を含み得る。電子文書についてのデータは、データが関連付けられる電子文書に基づいてインデクシングされ得る。電子文書のインデクシングされたコピー、および任意選択でキャッシュされたコピーは、検索インデックス152(たとえば、ハードウェアメモリデバイス)に記憶される。電子文書と関連付けられるデータは、電子文書に含まれるコンテンツを表すデータおよび/または電子文書のためのメタデータである。
クライアントデバイス106は、ネットワーク102を介して検索クエリを検索システム150に出すことができる。それに応答して、検索システム150は、検索クエリに関連がある電子文書を特定するために、検索インデックス152にアクセスする。検索システム150は、検索結果の形式で電子文書を特定し、検索結果を検索結果ページにおいてクライアントデバイス106に返す。検索結果は、特定の検索クエリに応答する(たとえば、関連がある)電子文書を特定する検索システム150によって生成されるデータであり、検索結果とのユーザ対話に応答してクライアントデバイスに指定された位置からのデータを要求させるアクティブリンク(たとえば、ハイパーテキストリンク)を含む。例示的な検索結果は、ウェブページタイトル、ウェブページから抽出された画像のテキストまたは部分のスニペット、およびウェブページのURLを含み得る。別の例示的な検索結果は、ダウンロード可能なアプリケーションのタイトル、ダウンロード可能なアプリケーションを記述するテキストのスニペット、ダウンロード可能なアプリケーションのユーザインターフェースを示す画像、および/またはアプリケーションがそこからクライアントデバイス106にダウンロードされ得る位置へのURLを含み得る。別の例示的な検索結果は、ストリーミングメディアのタイトル、ストリーミングメディアを記述するテキストのスニペット、ストリーミングメディアのコンテンツを示す画像、および/またはストリーミングメディアがそこからクライアントデバイス106にダウンロードされ得る位置へのURLを含み得る。他の電子文書と同様に、検索結果ページは、デジタルコンポーネント(たとえば、広告、ビデオクリップ、オーディオクリップ、画像、または他のデジタルコンポーネント)が提示され得る1つまたは複数のスロットを含み得る。
いくつかの実装形態では、デジタルコンポーネント配信システム110は、たとえば、相互接続されておりコンポーネント要求112に応答してデジタルコンポーネントを特定して配信するサーバおよび複数のコンピューティングデバイス114のセットを含む、分散型コンピューティングシステムにおいて実装される。複数のコンピューティングデバイス114のセットは一緒に動作して、数百万個の利用可能なデジタルコンポーネントのコーパスの中から電子文書に提示されるのに適格であるデジタルコンポーネントのセットを特定する。
いくつかの実装形態では、デジタルコンポーネント配信システム110は、デジタルコンポーネントを選択して配信するための異なる技法を実装する。たとえば、デジタルコンポーネントは、対応するデジタルコンポーネントの選択/配信/送信に寄与する(たとえば、それを条件付け、または制限する)対応する配信パラメータを含み得る。たとえば、配信パラメータは、デジタルコンポーネントの配信パラメータのうちの1つと一致する(たとえば、厳密に一致するか、または何らかのあらかじめ指定されたレベルの類似性を伴うかのいずれかである)少なくとも1つの基準をコンポーネント要求が含むことを求めることによって、デジタルコンポーネントの送信に寄与することができる。
別の例では、特定のデジタルコンポーネントのための配信パラメータは、デジタルコンポーネントが提示するのに適格となるために(たとえば、電子文書、電子キーワード、またはコンポーネント要求112において指定される用語と)照合されなければならない配信キーワードを含み得る。配信パラメータはまた、特定の地理的領域(たとえば、国または州)を指定する情報、および/または、コンポーネントアイテムが提示するのに適格となるように、コンポーネント要求112が特定のタイプのクライアントデバイス106(たとえば、モバイルデバイスまたはタブレットデバイス)に由来することを指定する情報をコンポーネント要求112が含むことを求めることができる。配信パラメータは、以下でより詳しく論じられたように、(たとえば、他の利用可能なデジタルコンポーネントの中からの)選択/配信/送信についてコンポーネントアイテムの適格性を評価するために使用される適格性値(たとえば、ランク、スコア、または何らかの他の指定される値)も指定することができる。いくつかの状況では、適格性値は、特定のイベントがデジタルコンポーネントアイテム(たとえば、デジタルコンポーネントの提示)に起因するときに出される量に基づき得る。
適格であるデジタルコンポーネントの特定は複数のタスク117a~117cへと区分されてもよく、それらのタスクは次いで、複数のコンピューティングデバイス114のセット内のコンピューティングデバイスに割り当てられる。たとえば、セット114の中の異なるコンピューティングデバイスは各々、コンポーネント要求112に含まれる情報と一致する配信パラメータを有する様々なデジタルコンポーネントを特定するために、異なるデジタルコンポーネントを分析することができる。いくつかの実装形態では、セット114の中の各々の所与のコンピューティングデバイスは、異なるデータ次元(または次元のセット)を分析して、分析の結果(Res1~Res3)118a~118cをデジタルコンポーネント配信システム110に渡す(たとえば、返す)ことができる。たとえば、セット114の中のコンピューティングデバイスの各々によって提供される結果118a~118cは、コンポーネント要求、および/またはある分散パラメータを有するデジタルコンポーネントのサブセットに応答して、配信に適格であるデジタルコンポーネントアイテムのサブセットを特定し得る。デジタルコンポーネントのサブセットの特定は、たとえば、イベントデータを配信パラメータと比較することと、イベントデータの少なくともいくつかの特徴と一致する配信パラメータを有するデジタルコンポーネントのサブセットを特定することとを含み得る。
デジタルコンポーネント配信システム110は、複数のコンピューティングデバイス114のセットから受信された結果118a~118cを集約して、集約された結果と関連付けられる情報を使用し、コンポーネント要求112に応答して提供される1つまたは複数のデジタルコンポーネントを選択する。たとえば、デジタルコンポーネント配信システム110は、1つまたは複数のデジタルコンポーネント評価プロセスの結果に基づいて、勝利したデジタルコンポーネントのセット(1つまたは複数のデジタルコンポーネント)を選択することができる。そして、デジタルコンポーネント配信システム110は、勝利したデジタルコンポーネントのセットおよび電子文書の内容がクライアントデバイス106のディスプレイに一緒に提示されるように、クライアントデバイス106が勝利したデジタルコンポーネントのセットを所与の電子文書へと統合することを可能にする返信データ120(たとえば、返信を表すデジタルデータ)を生成し、ネットワーク102を介してそれを送信することができる。
いくつかの実装形態では、クライアントデバイス106は返信データ120に含まれる命令を実行し、これは、勝利したデジタルコンポーネントのセットを1つまたは複数のデジタルコンポーネントサーバ108から取得するようにクライアントデバイス106を構成し、その取得をクライアントデバイス106が行うことを可能にする。たとえば、返信データ120の中の命令は、ネットワーク位置(たとえば、URL)と、デジタルコンポーネントサーバ108から所与の勝利したデジタルコンポーネントを取得するためにクライアントデバイス106にデジタルコンポーネントサーバ108へサーバ要求(SR)121を送信させるスクリプトとを含み得る。サーバ要求121に応答して、デジタルコンポーネントサーバ108は、サーバ要求121において指定される所与の勝利したデジタルコンポーネントを特定し、クライアントデバイス106に、クライアントデバイス106において電子文書の中の所与の勝利したデジタルコンポーネントを提示するデジタルコンポーネントデータ122(DCデータ)を送信する。
いくつかの場合、ウェブページ、アプリケーションページ、または、以前にユーザが訪問した、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザによってアクセスされるデジタルコンテンツに基づいて、ユーザグループ、たとえばユーザ関心グループ、類似するユーザのコホート、または類似するユーザデータに関係する他のグループタイプに割り当てられ得る。たとえば、ユーザが特定のウェブサイトを訪問し、ウェブサイトに提示される特定のアイテムと対話するとき、またはアイテムを仮想カートに追加するとき、ユーザは、同じウェブサイトもしくはコンテキストが類似している他のウェブサイトを訪問したことのあるユーザ、または同じアイテムに関心のあるユーザのグループに割り当てられ得る。例示すると、クライアントデバイス106のユーザが靴について検索し、様々な靴の製造業者の複数のウェブページを訪問する場合、ユーザはユーザグループ「靴」に割り当てられてもよく、これは、靴に関するウェブサイトを訪問したことのあるすべてのユーザに対する識別子を含み得る。
いくつかの実装形態では、ユーザのグループメンバーシップは、たとえば、デジタルコンポーネント提供者もしくはコンテンツプラットフォーム104ではなくブラウザベースのアプリケーションによって、または別の関係者によって、ユーザのクライアントデバイス106に維持され得る。ユーザグループは、それぞれのユーザグループラベルによって指定され得る。ユーザグループに対するラベルは、グループを記述するもの(たとえば、ガーデニンググループ)またはグループを表すコード(たとえば、記述的ではない英数字の列)であり得る。ユーザグループに対するラベルは、クライアントデバイス106においてセキュアなストレージに記憶されてもよく、および/または、他者がリストにアクセスするのを防ぐために記憶されるときに暗号化されてもよい。
デジタルコンポーネントサーバは、ユーザのユーザグループメンバーシップを使用して、ユーザが関心を持ち得る、もしくは別の方法でユーザ/ユーザデバイスに有益であり得る(たとえば、タスクを完了する際にユーザを助ける)、デジタルコンポーネントまたは他のコンテンツを選択することができる。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザ体験を改善する、ユーザデバイスの動作を改善する、または何らかの他の方法でユーザもしくはユーザデバイスに利益をもたらす、データを備え得る。しかしながら、ユーザは、コンテンツサーバがユーザグループ識別子を特定のユーザと相関付けることを防ぐような方法でユーザグループラベルを与えられてもよく、それにより、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを守る。本文書は、承認されていない関係者(またはコンピューティングシステム)によりアクセスされることから保護されるべきであるデータの例として、ユーザグループメンバーシップデータおよびユーザデータに言及するが、本文書において論じられる技術は、そのようなアプリケーションに限定されず、承認されていないアクセスから保護されるべきあらゆるデータセットに関して使用され得る。
アプリケーション107は、コンテンツプラットフォームが、またはユーザ自身ではない任意の他のエンティティが、ユーザの完全なユーザグループメンバーシップを知るのを防ぐような方法で、ユーザグループメンバーシップに基づいてクライアントデバイス107における提示のためにデジタルコンポーネントを選択するためにデジタルコンポーネントサーバと対話する、信用されるコンピューティングシステムにユーザグループラベルを提供することができる。
いくつかの実装形態では、ユーザは一度に1つだけのユーザグループに割り当てられ、ユーザグループへのユーザの割当ては一時的な割当てであり、それは、ユーザのグループメンバーシップがユーザのブラウジング活動に関して変化し得るからである。たとえば、ユーザがウェブブラウジングセッションを開始し、特定のウェブサイトを訪問し、ウェブサイトに提示される特定のアイテムと対話し、またはアイテムを仮想カートに追加するとき、ユーザは、同じウェブサイトもしくはコンテキストが類似している他のウェブサイトを訪問したことのあるユーザ、または同じアイテムに関心のあるユーザのグループに割り当てられ得る。
しかしながら、ユーザが別のウェブサイトを訪問し、他のウェブサイトに提示される別のタイプのアイテムと対話する場合、ユーザは、上記の他のウェブサイトもしくはコンテキストが類似している他のウェブサイトを訪問したことのあるユーザ、または上記の他のアイテムに関心のあるユーザの他のグループに割り当てられる。たとえば、ユーザが靴を検索して様々な靴の製造業者の複数のウェブページを訪問することでブラウジングセッションを開始する場合、ユーザはユーザグループ「靴」に割り当てられてもよく、これは靴に関するウェブサイトを訪問したことのあるすべてのユーザを含む。
靴に関するウェブサイトを以前に訪問したことのある100人のユーザがいると仮定する。ユーザがユーザグループ「靴」に割り当てられると、ユーザグループに含まれるユーザの総数は101に増える。しかしながら、ある時間の後で、ユーザがホテルを検索し、様々なホテルまたは旅行代理店の複数のウェブページを訪問する場合、ユーザは、以前に割り当てられていたユーザグループ「靴」から削除されて、異なるユーザグループ「ホテル」または「旅行」に再び割り当てられ得る。そのような場合、ユーザグループ「靴」の中のユーザの数は、他のユーザが特定のユーザグループに追加されない、またはそれから削除されないとすると、100に戻る。
ユーザグループの数およびタイプは、システム(または管理者)によって管理および/または制御される。たとえば、システムは、ユーザグループの管理を監督するために、アルゴリズム方法および/または機械学習方法を実装し得る。一般に、アクティブなブラウザセッションに関与するユーザの流入は時間とともに変化するので、および、各々の個々のユーザがそれぞれのブラウジング活動の原因であるので、ユーザグループの数およびユーザグループの各々の中のユーザの数は時間とともに変化する。
いくつかの実装形態では、コンポーネント配信システム110は、ユーザグループの管理を監督するために機械学習モデルを実装するマルチパーティ計算(MPC)システム130を含む。MPCシステム130は、ユーザのプロファイルに基づいて、ユーザグループをユーザ(またはユーザのアプリケーション107)に提案する、またはその提案を生成するために使用され得る、機械学習モデルを訓練することができる。MPCシステム130は、機械学習モデルを訓練するためにセキュアなプライバシーを守る技法を実行する、2つのコンピューティングシステムMPC1 132およびMPC2 134を含む。例示的なMPCシステム130は2つのコンピューティングシステムを含むが、MPCシステム130が1つより多くのコンピューティングシステムを含む限り、より多くのコンピューティングシステムも使用され得る。
コンピューティングシステムMPC1 132およびMPC2 134は異なるエンティティによって運用されてもよく、これは、本文書において説明される技法が実施されるときに、各エンティティが平文の完全なユーザプロファイルを入手するのを防ぐことができる。平文は、鍵もしくは他の復号デバイス、または他の復号プロセスを必要とせずに閲覧または使用することができる形式の、計算的にタグ付けされていない、特別にフォーマットされていない、または暗号で書かれていないテキスト、またはバイナリファイルを含むデータである。たとえば、コンピューティングシステムMPC1 132またはMPC2 134のうちの1つは、ユーザのクライアントデバイス106、コンテンツプラットフォーム104、およびデジタルコンポーネントサーバ108とは異なる信用される関係者により運営され得る。たとえば、業界団体、政府団体、またはブラウザ開発者が、コンピューティングシステムMPC1132およびMPC2134のうちの1つを維持して運用し得る。他のコンピューティングシステムは、これらのグループのうちのある異なるグループにより運用されることがあるので、異なる信頼される関係者が各コンピューティングシステムMPC1132およびMPC2134を運用する。好ましくは、異なるコンピューティングシステムMPC1132およびMPC2134を運用する異なる関係者には、共謀してユーザのプライバシーを脅かすような動機がない。いくつかの実装形態では、コンピューティングシステムMPC1132およびMPC2134は、アーキテクチャが分離されており、本文書において説明されるセキュアMPCプロセスを実行すること以外に互いに通信しないように監視される。
いくつかの実装形態では、ユーザのユーザプロファイルは、特徴ベクトルの形式であり得る。たとえば、ユーザプロファイルは、n次元の特徴ベクトルであり得る。n次元の各々は特定の特徴に対応してもよく、各次元の値はユーザのための特徴の値であってもよい。たとえば、ある次元は、特定のデジタルコンポーネントがユーザに提示された(またはユーザにより操作された)かどうかのためのものであり得る。この例では、その特徴の値は、デジタルコンポーネントがユーザに提示された(またはユーザにより操作された)場合は「1」であってもよく、または、デジタルコンポーネントがユーザに提示されていない(またはユーザにより操作されていない)場合は「0」であってもよい。
ユーザのユーザプロファイルは、ユーザによって開始されたイベント、および/または、電子リソース、たとえばウェブページまたはアプリケーションコンテンツに関してユーザによって開始されていた可能性のあるイベントに関するデータを含み得る。イベントは、電子リソースの閲覧、デジタルコンポーネントの閲覧、電子リソースもしくはデジタルコンポーネントとのユーザ対話(たとえば、その選択)、もしくはユーザ対話の欠如、電子リソースとのユーザ対話の後で発生するコンバージョン、ならびに/または、ユーザおよび電子リソースに関する他の適切なイベントを含み得る。
いくつかの実装形態では、アプリケーション107は、コンテンツサーバの要求によって、コンテンツサーバによって所有される異なる機械学習モデルに対して異なるユーザプロファイルを生成し得る。設計目標に基づいて、異なる機械学習モデルは異なる訓練データを必要とし得る。たとえば、第1のモデルは、ユーザをユーザグループに追加するかどうかを決定するために使用されるk-NNモデルであり得る。
イベントが発生すると、コンテンツサーバは、ユーザのユーザプロファイルを生成するためのクライアントデバイス上で実行されるアプリケーション107にイベントに関するイベントデータを提供することができる。いくつかの実装形態では、送信の間にイベントデータを保護するために、コンテンツサーバは、アプリケーション107に送信する前にイベントデータを暗号化する。たとえば、コンテンツサーバは、アプリケーション107の公開暗号鍵(たとえば、PubKeyEnc(event_data,application_public_key))を使用してイベントデータを暗号化することができる。
いくつかの実装形態では、イベントデータは、以下の表1に示されるような以下の項目を含み得る。
表1を参照すると、モデル識別子は、機械学習モデル、たとえばk-NNモデルを特定し、この機械学習モデルに対して、ユーザプロファイルが、ユーザグループメンバーシップを訓練して予測するために、および予測されたユーザグループに対する対応するラベルを生成するために使用される。プロファイル記録は、イベントに特有のデータ、たとえば、イベント、電子リソース、もしくはデジタルコンポーネントのタイプ、電子リソースのコンテキストもしくはイベントが発生したデジタルコンポーネント時間、および/または、機械学習モデルを訓練してユーザグループへの干渉を行う際にコンテンツサーバが使用することを望む他の適切なインベントデータを含む、n次元特徴ベクトルである。
アプリケーション107は、イベントデータを受信した後、イベントデータを暗号化するために使用される公開暗号鍵に対応する秘密鍵を使用してイベントデータを復号することができる。アプリケーション107は、(i)デジタル署名を生成するために使用されたコンテンツサーバの秘密鍵に対応するコンテンツサーバの公開検証鍵を使用してデジタル署名を検証し、(ii)イベントデータ作成タイムスタンプが古くないこと、たとえばタイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の時間内にあることを確実にすることによって、イベントデータを検証することができる。イベントデータが有効である場合、アプリケーション107は、たとえばn次元のプロファイル記録を記憶することによって、イベントデータを記憶することができる。検証のいずれかが失敗する場合、アプリケーション107は、たとえばn次元のプロファイル記録を記憶しないことによって、イベントデータを無視し得る。
いくつかの実装形態では、アプリケーション107は、n次元特徴ベクトル(すなわち、プロファイル記録)を集約することによって、ユーザプロファイルを計算することができる。たとえば、ユーザプロファイルは、ユーザと関連付けられる複数のイベントのn次元特徴ベクトルの平均であり得る。結果は、プロファイル空間においてユーザを表すn次元特徴ベクトルである。任意選択で、アプリケーション112は、たとえばL2正規化を使用して、n次元特徴ベクトルを単位長に正規化してもよい。
いくつかの実装形態では、アプリケーション107は、以下の式
を使用してユーザプロファイル(P)を計算することができ、パラメータFiはk個の特徴ベクトルを含み、各ベクトルはイベント(たとえば、コンテンツとのユーザ対話またはユーザに起因する別のイベント)を特徴付けるn次元の特徴を有し、record_age_in_secondsiはプロファイル記録がクライアントデバイスに記憶されている秒単位の時間の長さであり、パラメータdecay_rate_in_secondsは秒単位のプロファイル記録の減衰率である。
いくつかの実装形態では、アプリケーション107は、イベントが発生するにつれて、および発生するときに、ユーザプロファイル(P)を更新することができる。そのような状況では、アプリケーションは、以下の式を使用してユーザプロファイルを更新することができ、
P'は更新されたユーザプロファイルであり、Fは新しいイベントのn次元特徴ベクトルであり、Pはuser_profile_timeにおいて生成された既存のユーザプロファイルのn次元特徴ベクトルである。
図2は、ユーザに対するユーザグループを予測するようにk平均機械学習モデルを訓練するための例示的なプロセス200のスイムレーン図である。プロセス200の動作は、たとえば、クライアントデバイス110、MPCシステム130のコンピューティングシステムMPC1132およびMPC2134、ならびにコンテンツ提供者によって実施され得る。プロセス200の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させ得る。
コンテンツサーバは、クライアントデバイス106上で実行されるアプリケーション107に、それらのそれぞれのユーザのためのユーザプロファイルを生成し、ユーザプロファイルの秘密分散されたおよび/または暗号化されたバージョンをMPCシステム130にアップロードするように要求することによって、機械学習モデルのうちの1つの訓練および/または更新を開始することができる。本文書では、ユーザプロファイルの秘密シェアは、秘密シェアが平文ではないので、ユーザプロファイルの暗号化されたバージョンであると見なされ得る。一般に、各アプリケーション107は、ユーザプロファイルのためのデータを記憶し、コンテンツプラットフォームから要求を受信したことに応答して、更新されたユーザプロファイルを生成することができる。
クライアントデバイス106上で実行されるアプリケーション107は、クライアントデバイス106のユーザのためのユーザプロファイルを形成する(202)。ユーザのためのユーザプロファイルは、電子リソース、たとえばウェブページまたはアプリケーションコンテンツに関してユーザによって開始されるイベント、および/または、ユーザによって開始された可能性のあるイベントに関するデータを含み得る。イベントは、電子リソースのコンテキスト、電子リソースの閲覧、デジタルコンポーネントの閲覧、電子リソースもしくはデジタルコンポーネントとのユーザ対話(たとえば、その選択)、もしくはユーザ対話の欠如、電子リソースとのユーザ対話の後で発生するコンバージョン、ならびに/またはユーザおよび電子リソースに関する他の適切なイベントを含み得る。
ユーザのユーザプロファイルは、特徴ベクトルの形式であり得る。たとえば、ユーザプロファイルはn次元特徴ベクトルであり得る。n次元の各々が特定の特徴に対応してもよく、各次元の値がユーザの特徴の値であってもよい。たとえば、ある次元は、特定のデジタルコンポーネントがユーザに提示されたかどうか(またはユーザと対話したかどうか)についてであり得る。この例では、その特徴の値は、デジタルコンポーネントがユーザに提示された(またはユーザと対話した)場合には「1」、またはデジタルコンポーネントがユーザに提示されなかった(またはユーザと対話しなかった)場合には「0」であり得る。
アプリケーション107は、ユーザのためのユーザプロファイルのシェアを生成する(204)。この例では、アプリケーション107は、ユーザプロファイルの2つのシェアを、MPCシステム130の各コンピューティングシステムに対して1つずつ生成する。各シェア自体は、それ自体はユーザプロファイルについて何も明らかにしない疑似ランダムな変数であり得ることに留意されたい。ユーザプロファイルを得るには、両方のシェアを組み合わせる必要がある。MPCシステム130が、機械学習モデルの訓練に参加するより多くのコンピューティングシステムを含む場合、アプリケーション107は、より多くのシェアを、各コンピューティングシステムに対して1つずつ生成する。いくつかの実装形態では、ユーザのプライバシーを保護するために、アプリケーション107は、疑似ランダム関数を使用して、ユーザプロファイルを複数のシェアへと分割することができる。すなわち、アプリケーション107は、疑似ランダム関数を使用して2つのシェア{[Pi,1],[Pi,2]}を生成することができる。厳密な分割は、アプリケーション107により使用される秘密分散アルゴリズムおよび暗号ライブラリに依存し得る。
アプリケーション107は、ユーザプロファイルのシェア[Pi,1]および[Pi,2]を暗号化する(206)。いくつかの実装形態では、アプリケーション107は、コンピューティングシステムMPC1 132の公開暗号鍵を使用して第1のシェア[Pi,1]を暗号化する。同様に、アプリケーション107は、コンピューティングシステムMPC2 134の公開暗号鍵を使用してユーザプロファイルメッセージの第2のシェア[Pi,2]を暗号化する。これらの関数は、PubKeyEncrypt([Pi,1],MPC1)およびPubKeyEncrypt([Pi,2],MPC2)として表されてもよく、PubKeyEncryptはMPC1 132またはMPC2 134の対応する公開暗号鍵を使用して公開鍵暗号アルゴリズムを表す。いくつかの実装形態では、第2のシェアは、MPC1 132が第2のシェアにアクセスするのを防ぐ鍵を用いて暗号化され、それにより、MPC1 132により平文で明らかにされることから第2のシェアに含まれるデータを保護し、これは、MPC1 132が完全なユーザプロファイルを表すデータの完全なセットを再び作成することが可能になるのを防ぐことによって第2のシェアのセキュリティを高める。
クライアントデバイス106上で実行されるアプリケーション107は、ユーザプロファイルの暗号化されたシェアをコンピューティングシステムMPC1にアップロードする(208)。たとえば、アプリケーション107は、ユーザプロファイルの第1のシェア(たとえば、PubKeyEncrypt([Pi,1],MPC1))および第2のシェア(たとえば、PubKeyEncrypt([Pi,2],MPC2))をMPC1にアップロードする。コンピューティングシステムMPC1は、MPC1の秘密鍵を使用してユーザプロファイルの第1のシェアを復号し、ユーザプロファイルの第2の秘密シェアをMPC2に送信する(210)。MPC2は、MPC2の秘密鍵を使用してユーザプロファイルの第2のシェアを復号する。
いくつかの実装形態では、アプリケーション107は、コンピューティングシステムが同じユーザプロファイルのすべてのシェアを適切に照合することを可能にするために、ユーザプロファイルの複数のシェアをそれぞれのMPCシステムに同時にアップロードしなければならない。いくつかの実装形態では、アプリケーション107は、同じ疑似ランダムに生成されたまたは逐次生成された識別子を同じユーザプロファイルの複数のシェアに明確に割り当てて、照合を促進することができる。一部のMPC技法は入力または中間結果のランダムなシャッフルを利用し得るが、本文書において説明されるMPC技法は、そのようなランダムなシャッフルを含まないことがあり、代わりに照合のためにアップロード順序を利用することがある。
いくつかの実装形態では、動作208および210は、アプリケーション107がユーザプロファイルの複数のシェアをコンテンツサーバにアップロードすることができ、コンテンツサーバが複数のシェアをMPCシステムにアップロードするような、代替的なプロセスにより置き換えられ得る。この代替的なプロセスは、動作208および210をサポートするためにコンテンツサーバのインフラストラクチャコストを増やし得る。それはまた、MPCシステムの中の機械学習モデルの訓練または更新を開始するためのレイテンシも増やし得る。しかしながら、この代替的なプロセスは、どのようなユーザの詳細情報もコンテンツサーバに明らかにすることなく、コンテンツサーバがユーザデータを記憶して管理するのを可能にでき、それによりユーザプライバシーを維持する。
いくつかの実装形態では、コンテンツサーバは複数の異なるユーザプロファイル(または他のデータセット)のシェアを収集することができ、各シェアは上で論じられたように別々に暗号化され得る(たとえば、特定のMPCサーバに対して意図される秘密シェアに特定のMPCサーバだけがアクセスできるような方法で)。複数の異なるユーザプロファイルのシェアを集約するものとしてコンテンツサーバを使用することで、1つまたは複数の機械学習モデルを訓練するために使用され得る多くの異なる暗号化されたユーザプロファイルの収集およびアップロードを可能にできる。機械学習モデルの訓練は一般にラベルに対する要求の前に行われるが、機械学習モデルは、機械学習モデルがラベルを生成するために使用された後でも、新しく集められたデータを使用して更新され続けることが可能である。以下の段落は、モデルの訓練について議論し、これは、上で論じられたユーザプロファイルの暗号化されたシェアを使用してラベルを生成するために使用される。
コンピューティングシステムMPC1 132およびMPC2 134は、機械学習モデルを生成する(212)。いくつかの実装形態では、MPCシステム130内のMPC1 132およびMPC2 134システムによって実装される機械学習モデルは、k平均モデルである。一般に、k平均アルゴリズムは、データセットをk個の別個の重複しないグループ(クラスタ)へと区分することを試みるアルゴリズムであり、このとき、各データ点は1つだけのグループ(クラスタ)に属する。コンピューティングシステムMPC1 132およびMPC2 134は、MPC技法を使用してアプリケーション107から受信されたユーザプロファイルの暗号化されたシェアに基づいてk平均モデルを訓練することができる。
暗号計算、およびしたがって、モデル訓練と推測の両方の間にユーザのプライバシーとデータを保護するためにコンピューティングシステムMPC1132およびMPC2134に課される計算負荷を最小限にするために、または少なくとも減らすために、MPCシステム130は、ランダム投影技法、たとえばSimHashを使用して、2つのユーザプロファイルPiとPjの類似性を高速に、セキュアに、および確率的に定量化することができる。2つのユーザプロファイルPiとPjの類似性は、2つのユーザプロファイルPiとPjを表す2ビットベクトル間のハミング距離を決定することによって決定されてもよく、このハミング距離は、高い確率で2つのユーザプロファイル間のコサイン類似性に比例する。
概念的に、各訓練セッションに対して、m個のランダム投影超平面U={U1, U2, ..., Um}が生成され得る。ランダム投影超平面は、ランダム投影平面とも呼ばれ得る。計算システムMPC1132とMPC2134との間の多段階計算の1つの目的は、k平均モデルの訓練において使用される各ユーザプロファイルPiに対して長さmのビットベクトルBiを作成することである。このビットベクトルBiにおいて、各ビットBi,jは、投影平面Ujのうちの1つとユーザプロファイルPiのドット積の符号を表し、すなわち、すべてのBi,j=sign(Uj・Pi)であり、ここで・は等しい長さの2つのベクトルのドット積を表記する。すなわち、各ビットは、ユーザプロファイルPiが平面Ujのどちらの側に位置しているかを表す。1というビット値は正の符号を表し、0というビット値は負の符号を表す。
多段階の計算の最後において、2つのコンピューティングシステムMPC1132とMPC2134の各々は、平文の各ユーザプロファイルのためのビットベクトル、および各ユーザプロファイルのシェアを含む中間結果を生成する。たとえば、計算システムMPC1132に対する中間結果は、以下の表2に示されるデータであり得る。計算システムMPC2134は、類似しているが各ユーザプロファイルのシェアが異なっている、中間結果を有する。追加のプライバシー保護をもたらすために、MPCシステム130の中の2つのサーバの各々は、m次元のビットベクトルの半分しか平文で得ることができず、たとえば、コンピューティングシステムMPC1132が、すべてのm次元ビットベクトルの第1のm/2次元を得て、コンピューティングシステムMPC2134が、すべてのm次元ビットベクトルの第2のm/2次元を得る。
単位長i≠jの2つの任意のユーザプロファイルベクトルPiおよびPjが与えられると、ランダム投影mの回数が十分に多いと仮定すると、2つのユーザプロファイルベクトルPiおよびPjに対するビットベクトルBiとBjの間のハミング距離は、高い確率でユーザプロファイルベクトルPiとPjの間のコサイン類似性に比例することが示されている。
上で示された中間結果に基づいて、および、ビットベクトルBiは平文であるので、各コンピューティングシステムMPC1132およびMPC2134は、たとえば訓練によって、k平均アルゴリズムを使用してそれぞれのk平均モデルを独立に作成することができる。
いくつかの実装形態では、k平均モデルにおけるクラスタkの数は、式
k=z*2-x
に従って選ばれる。zはアプリケーション107の数であり、xはエントロピーのビットである。たとえば、合計で256個のアプリケーションが、各グループが同じ数のアプリケーションを含みエントロピービットの数(x)が5となるように、一緒にグループ化(またはクラスタ化)されなければならないと仮定する。そのようなシナリオでは、k平均モデルはk=8個のクラスタを生成し、このとき各クラスタは32個のアプリケーションを含む。k平均モデルを訓練するための例示的なプロセスは、図4を参照して示される。
いくつかの実装形態では、k平均モデルによってユーザプロファイルのクラスタを生成した後、各クラスタは固有の識別子(ラベルと呼ばれる)を割り当てられる。たとえば、10個のクラスタがある場合、クラスタは数1から10を使用してラベリングされ得る。別の実装形態では、k平均モデルによって生成されるクラスタは、それぞれのクラスタの中のユーザプロファイルの多数派の以前のラベルに基づいてラベルを割り当てられ得る。たとえば、クラスタが32個のユーザプロファイルを含むと仮定する。また、32個のユーザプロファイルのうちの20個が同じ以前のラベル「id_x」を有すると仮定する。そのようなシナリオでは、クラスタはラベル「id_x」を割り当てられる。しかしながら、そのようなラベリング技法を実装するには、アプリケーション107は、ユーザプロファイルのシェアとともに、対応する以前のラベルをそれぞれのMPCシステム130にアップロードしなければならないことに留意されたい。そのような場合、ユーザプロファイルの各々の暗号化されたシェアは、ユーザプロファイルのシェアおよび以前のラベルを含む。
アプリケーション107は、ユーザグループラベルに対するクエリをMPCシステム130に送信する(214)。この例では、アプリケーション107は、ユーザプロファイルの第1の暗号化されたシェアおよび第2の暗号化されたシェアを含むユーザグループラベルに対するクエリをコンピューティングシステムMPC1 132に送信する。他の例では、アプリケーション107は、ユーザグループラベルに対するクエリをコンピューティングシステムMPC2に送信することができる。アプリケーション107は、アプリケーション107が割り当てられるユーザグループのラベルを提供せよとのコンテンツサーバからの要求に応答して、ユーザグループラベルに対するクエリを出すことができる。たとえば、コンテンツサーバは、クライアントデバイス110のアプリケーション107のユーザグループラベルを決定するようにk平均モデルにクエリするように、アプリケーション107を要求することができる。
ユーザグループラベルに対するクエリを開始するために、コンテンツサーバは、アプリケーション107に、ユーザグループラベルに対するクエリのためのトークンMinferを送信することができる。トークンMinferは、MPCシステム130によって実装されるコンテンツサーバのk平均モデルにクエリする権限をアプリケーション107に与えることの妥当性をMPCシステム130の中のサーバが確認することを可能にする。モデルアクセス制御が任意選択である場合、トークンMinferは任意選択である。
いくつかの実装形態では、トークンMinferは、コンテンツサーバの秘密鍵を使用して、トークンの内容およびトークン作成時間に基づくデジタル署名を含み得る。
特定のユーザに対するユーザグループラベルを求めてクエリするために、コンテンツサーバは、ユーザグループラベルに対するクエリのためのトークンMinferを生成し、ユーザのクライアントデバイス106で実行されるアプリケーション107にトークンを送信することができる。いくつかの実装形態では、コンテンツサーバは、アプリケーション107のみが、公開暗号鍵に対応する機密扱いの秘密鍵を使用してトークンMinferを復号できるように、アプリケーション107の公開暗号鍵を使用してトークンMinferを暗号化する。すなわち、コンテンツプラットフォームは、PubKeyEnc(Minfer, application_public_key)をアプリケーション107に送信することができる。
アプリケーション107は、トークンMinferを復号して検証することができる。アプリケーション107は、その秘密鍵を使用して、暗号化されたトークンMinferを復号することができる。アプリケーション107は、(i)デジタル署名を生成するために使用されたコンテンツサーバの秘密鍵に対応するコンテンツサーバの公開暗号鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえばタイムスタンプによって示される時間が、検証が行われている現在の時間から閾値の時間内にあることを確実にすることによって、トークンMinferを検証することができる。トークンMinferが有効である場合、アプリケーション107はMPCシステム130にクエリすることができる。
概念的に、ユーザグループラベルに対するクエリは、ユーザグループおよび対応するラベルを予測するために実装され得る複数の機械学習モデルの中から特定の機械学習モデルを識別するためのモデル識別子を含み得る。クエリは現在のユーザプロファイルPiも含み得る。しかしながら、コンピューティングシステムMPC1132またはMPC2134のいずれかに平文形式でユーザプロファイルPiを漏洩するのを防ぎ、それによりユーザのプライバシーを守るために、アプリケーション107は、ユーザプロファイルPiを、MPC1132およびMPC2のための2つのシェア[Pi,1]および[Pi,2]へとそれぞれ分割することができる。アプリケーション107は次いで、クエリのために、たとえばランダムにまたは疑似ランダムに、2つのコンピューティングシステムMPC1132またはMPC2134のうちの1つを選択することができる。アプリケーション107がコンピューティングシステムMPC1を選択する場合、アプリケーション107は、第1のシェア[Pi,1]および第2のシェアの暗号化されたバージョン、たとえばPubKeyEncrypt([Pi,2], MPC2)とともに、単一のクエリをコンピューティングシステムMPC1132に送信することができる。この例では、アプリケーション107は、コンピューティングシステムMPC1132が[Pi,2]にアクセスするのを防ぐために、コンピューティングシステムMPC2134の公開暗号鍵を使用して第2のシェア[Pi,2]を暗号化し、これは、コンピューティングシステムMPC1132が[Pi,1]および[Pi,2]からユーザプロファイルPiを再構築することを可能にする。
MPCシステム130は、ユーザプロファイルに対するラベルを決定する(216)。いくつかの実装形態では、MPCシステム130内の各コンピューティングシステムは、アプリケーション107から受信されたユーザプロファイルのシェアに基づいて対応するラベル(または部分的なラベル)を決定する。MPCシステム130内の各コンピューティングシステムは、ユーザプロファイルのそれぞれのシェアを受信した後、ステップ212において言及されるものと同様の動作を実行し、それぞれのシェアをビットベクトルに変換する。シェアをビットベクトルに変換した後、MPCシステム130の中の各コンピューティングシステムは、それぞれのビットベクトルに最も近い重心を伴うクラスタを決定する。たとえば、上で言及されたように、アプリケーション107は、クエリに対して2つのコンピューティングシステムMPC1 132またはMPC2のうちの1つを、たとえばランダムに、または疑似ランダムに選択することができる。アプリケーション107がコンピューティングシステムMPC1を選択する場合、アプリケーション107は、第1のシェア[Pi,1]および第2のシェアの暗号化されたバージョン、たとえばPubKeyEncrypt([Pi,2],MPC2)とともに、単一のクエリをコンピューティングシステムMPC1 132に送信することができる。ユーザプロファイルの第2のシェア[Pi,2]の暗号化されたバージョンは、コンピューティングシステムMPC2 134に送信される。MPC2は、コンピューティングシステムMPC2の秘密鍵を使用して第2のシェア[Pi,2]を復号する。MPC1 132およびMPC2 134は、ステップ212において説明される暗号の動作を実行して、MPC1によって機密に保たれる第1のシェア[Pi,1]およびMPC2によって機密に保たれる第2のシェア[Pi,2]に基づいて第1のビットベクトルを生成する。MPC1 132は、第1のビットベクトルに最も近い重心を伴うクラスタ(第1のクラスタと呼ばれる)を決定する。クラスタの識別子は、第1のシェアのラベル(または部分的なラベル)として選択され得る。
コンピューティングシステムMPC1 132は、x~Nn(μ1,Σ1)としてパラメータ化されるn次元正規分布を使用して第1のクラスタのユーザをモデル化し、μ1は第1のクラスタのn次元重心であり、Σ1は次元nxnの共分散行列である。この例では、MPC1 132はμ1=Σi∈ID[Pi,1]を計算する。同様に、MPC2 134はμ2=Σi∈ID[Pi,2]を計算し、ここで[μ1]および[μ2]はkxμの秘密シェアであり、kは平文の既知の数である。
共分散行列Σを計算するために、MPC1 132は[Σ1]=Σi∈ID(k*[Pi,1]-μ1)T*(k*[Pi,1]-μ1)を計算し、ここで、k*[Pi,1]-μ1は1xnの秘密シェアの行列であり、(k*[Pi,1]-μ1)Tは次元nx1の行列k*[Pi,1]-μ1の転置されたバージョンである。これにより、共分散行列はnxnの次元を有するようになる。同様に、MPC2 134は、[Σ2]=Σi∈ID(k*[Pi,2]-μ2)T*(k*[Pi,2]-μ2)を計算することができる。
MPC1 132およびMPC2 134は、式
に従って2つの秘密シェア[Σ1]および[Σ2]を使用して共分散行列Σを構築することができ、関数reconstruct()は2つの秘密シェアから平文で秘密を生成する。MPC1 132またはMPC2 134のいずれかが、A*AT=Σとなるようにコレスキー分解を介して整数行列Aを計算することができる。行列Aを計算した後、行列Aは、MPCシステム130の他のコンピューティングシステムと共有される。
この例では、x~Nn(μ,Σ)としてパラメータ化されるn次元正規分布を使用して第1のクラスタのユーザをモデル化した後、MPC1 132は、Box-Muller変換を使用して、標準的な正規分布からランダムに導かれるランダムベクトルz=(z1,...,zn)Tを生成することができる。MPC1 132は次いで、zを2つのシェア[z1]および[z2]へと分割する。MPC1 132は次いで、MPC2と[z2]を共有する。同様に、MPC2 134は、Box-Muller変換を使用して標準的な正規分布からランダムに導かれるランダムベクトルz'=(z'1,...,z'n)Tを生成することができる。MPC2 134は次いで、zを2つのシェア[z'1]および[z'2]へと分割する。MPC2 134は次いで、MPC1と[z1]を共有する。MPC1 132は次いで、第1のラベル
を計算する。同様に、MPC2 134は次いで、第2のラベル
を計算する。
MPCシステムは、ユーザグループラベルをアプリケーション107に送信する(218)。コンピューティングシステムMPC2 134は、第2のラベルの暗号化されたバージョン、すなわち[result2]をコンピューティングシステムMPC1に提供することができ、第2のラベルはアプリケーション107の公開暗号鍵を使用して暗号化される。コンピューティングシステムMPC1 132は、アプリケーション107に、得られたクラスタの第1のラベル、すなわち[result1]およびコンピューティングシステムMPC2によって決定される第2のクラスタの第2のラベルの暗号化されたバージョンを提供することができる。アプリケーション107は、MPC1に関連してコンピューティングシステムMPC2によって決定された、得られたクラスタの第2のラベルを復号することができる。いくつかの実装形態では、コンピューティングシステムMPC2の結果をコンピューティングシステムMPC1132が改竄するのを防ぐために、コンピューティングシステムMPC2134は、アプリケーション107の公開暗号鍵を使用してその結果を暗号化する前または後のいずれかに、結果にデジタル署名する。アプリケーション107は、MPC2の公開暗号鍵を使用して、コンピューティングシステムMPC2のデジタル署名を検証する。
アプリケーション107は、ユーザグループラベルを更新して記憶する(220)。第1のラベルおよび第2のラベルをMPCシステム130から受信した後、アプリケーションは、
として最終ラベルを計算することができ、クライアントデバイス106にラベルを記憶する。この実装形態では、FLoC IDは、ユーザがそのメンバーであるユーザグループのためにランダムに生成されるn次元ベクトルである。
上で言及されたように、ユーザグループラベルは、コンテキスト的な意味をもたない、ユーザが属するユーザグループの識別子に過ぎず、これは、デジタルコンポーネント提供者などのコンテンツプラットフォームが、アプリケーション107のためのデジタルコンポーネントを選択するために利用できることを意味する。解決策として、MPCシステム130は、k平均機械学習モデルのクラスタの重心などのいくつかの情報をデジタルコンポーネント提供者と共有することができる。MPCシステム130によって実装されるk平均機械学習モデルのクラスタの重心は、ユーザプロファイルと同じ次元(Pi)を有する。重心をコンテンツプラットフォームと共有することで、コンテンツプラットフォームは、ユーザ活動が原因で発生した以前のイベントに基づいてデジタルコンポーネントを提供することを可能にする。
たとえば、n次元のユーザプロファイルがユーザ活動の結果として発生したイベントに基づいてアプリケーション107によって更新されると仮定する。MPCシステム130は、アプリケーション107によって提供されるn次元特徴ベクトルユーザプロファイルと、k平均モデルのクラスタの重心のn次元特徴ベクトルとの間の距離に基づいて、アプリケーション107が属するクラスタを決定する。アプリケーション107は、ユーザのラベルを受信した後、クライアントデバイス106にラベルを記憶する。MPCシステム130がn次元中心特徴ベクトルをデジタルコンポーネント提供者と共有していると仮定する。1つまたは複数のデジタルコンポーネントスロットを含むリソースをアプリケーションがロードするとき、クライアントデバイス106またはリソースを提供しているコンテンツサーバは、アプリケーション107のラベルを含むデジタルコンポーネントに対する要求を生成する。デジタルコンポーネントに対する要求を受信したことに応答して、デジタルコンポーネント提供者は、アプリケーションが属するクラスタのn次元重心に基づいて、デジタルコンポーネントを提供することができる。
しかしながら、クラスタの重心をコンテンツプラットフォームと共有することは、プライバシーについての懸念を生む。この問題を克服するために、MPCシステム130は、差分プライバシー技法を利用し、ランダムノイズを重心に追加することによってクラスタの新しい重心を生成する。詳細は図3を参照してさらに説明される。
図3は、差分プライバシー技法を使用してユーザプロファイルのクラスタの新しい重心を生成するための例示的なプロセス300の流れ図である。プロセス300の動作は、たとえばMPCシステム130のコンピューティングシステムMPC1 132およびMPC2 134によって実施され得る。プロセス300の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。
MPCシステム130は、各クラスタに対する重心特徴ベクトルを生成する(302)。たとえば、MPCシステム130のコンピューティングシステムは、k平均クラスタリングアルゴリズムを使用して、ユーザプロファイルをk個のクラスタへとクラスタ化する。この特定の例では、MPC1 132およびMPC2 134は、プロセス200のステップ212において説明されたようにk平均機械学習モデルを訓練する。k平均モデルの訓練には、クラスタの重心を計算することが必要である。ユーザプロファイルはn次元の特徴ベクトルであるので、k平均クラスタリングアルゴリズムは、n次元の特徴空間においてクラスタを形成し、各クラスタに対するn次元の重心を生成する。
MPCシステム130は、クラスタにおけるユーザプロファイルの確率分布を使用して各クラスタをモデル化する(304)。たとえば、MPCシステム130のコンピューティングシステムは、プロセス200のステップ218を使用して、k平均機械学習モデルの各クラスタのユーザを正規分布としてモデル化する。
MPCシステム130は、各クラスタに対する新しい重心特徴ベクトルを生成する(306)。たとえば、MPCシステム130のコンピューティングシステムは、Box-Muller変換を使用して標準的な正規分布からランダムにサンプリングすることによって、k平均機械学習モデルの複数のクラスタの各々に対するランダムな特徴ベクトルを生成することができる。この例では、各コンピューティングシステムMPC1 132およびMPC2 134は、k平均機械学習モデルのクラスタの重心に対するそれぞれのランダム特徴ベクトルを生成する。いくつかの実装形態では、より強力なプライバシー保護を提供するために、コンピューティングシステムMPC1 132およびMPC2 134は、k平均機械学習モデルのクラスタの重心に対するそれぞれのランダムな特徴ベクトルを協調して生成するために暗号プロトコルを実行し、生成された重心は秘密シェアの形式である。
MPCシステム130は、新しい重心特徴ベクトルをデジタルコンポーネント提供者と共有する(308)。たとえば、k平均機械学習モデルのクラスタの実際の重心を共有する代わりに、MPCシステム130は、ランダム特徴ベクトルをデジタルコンポーネント提供者と共有する。
図4は、k平均機械学習モデルを生成するための例示的なプロセス400を示す流れ図である。プロセス400の動作は、たとえば、図1のMPCシステム130によって実施され得る。プロセス400の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
MPCシステム130は、ユーザプロファイルのシェアを取得する(402)。コンテンツサーバは、アプリケーションが属するユーザグループのラベルを更新および/または取得するように、アプリケーション107に要求することができる。アプリケーション107は、要求に応答して、ユーザプロファイルのシェアをMPCシステム130にアップロードして、k平均機械学習モデルを訓練することができる。
たとえば、アプリケーション107は、コンピューティングシステムMPC1に、そのユーザプロファイルPiに対するユーザプロファイルの暗号化された第1のシェア(たとえば、PubKeyEncrypt([Pi,1],MPC1))を送信することができる。同様に、アプリケーション107は、コンピューティングシステムMPC2に、そのユーザプロファイルPiに対するユーザプロファイルの暗号化された第2のシェア(たとえば、PubKeyEncrypt([Pi,2],MPC2))を送信することができる。
コンピューティングシステムMPC1132およびMPC2134は、ランダム投影平面を作成する(404)。コンピューティングシステムMPC1132およびMPC2134は、m個のランダム投影平面U={U1,U2,...,Um}を連携して作成することができる。これらのランダム投影平面は、2つのコンピューティングシステムMPC1321とMPC2の間の秘密シェアのままであるべきである。いくつかの実装形態では、コンピューティングシステムMPC1132およびMPC2134は、ランダム投影平面を作成し、Diffie-Hellman鍵交換技法を使用してそれらの秘密を維持する。
以下でより詳しく説明されるように、コンピューティングシステムMPC1132およびMPC2134は、各ユーザプロファイルのそれらのシェアを各ランダム投影平面に投影し、各ランダム投影平面に対して、ユーザプロファイルのシェアがランダム投影平面の一方の側にあるかどうかを決定する。各コンピューティングシステムMPC1132およびMPC2134は、各ランダム投影の結果に基づいて、ユーザプロファイルの秘密シェアから秘密シェアの中のビットベクトルを形成することができる。ユーザのためのビットベクトルの部分的な知識、たとえば、ユーザプロファイルPiが投影平面Ukの一方の側にあるかどうかは、コンピューティングシステムMPC1132またはMPC2134のいずれかが、Piの分布についての何らかの知識を獲得することを可能にし、これは、ユーザプロファイルPiが単位長を有するという以前の知識に付加するものである。コンピューティングシステムMPC1132およびMPC2134がこの情報へのアクセスを得るのを防ぐために(たとえば、これがユーザプライバシーおよび/もしくはデータセキュリティのために要求される、または好ましい実装形態では)、いくつかの実装形態では、ランダム投影平面は秘密シェアの中にあるので、コンピューティングシステムMPC1132もMPC2134も、平文でランダム投影平面にアクセスすることができない。他の実装形態では、任意選択の動作406~408において説明されたように、ランダムビット反転パターンが、秘密シェアアルゴリズムを使用してランダム投影結果にわたって適用され得る。
秘密シェアを介してビットをどのように反転させるかを示すために、同じ確率で値が0または1のいずれかである2つの秘密xおよびyがあると仮定する。等値演算[x]==[y]は、y==0である場合xのビットを反転させ、y==1である場合xのビットを保つ。この例では、演算は50%の確率でビットxをランダムに反転させる。この演算は、2つのコンピューティングシステムMPC1132とMPC2134の間のリモートプロシージャコール(RPC)を必要とすることがあり、ラウンドの回数はデータサイズおよび選択される秘密シェアアルゴリズムに依存する。
各コンピューティングシステムMPC1132およびMPC2134は、秘密m次元ベクトルを作成する(406)。コンピューティングシステムMPC1132は、秘密m次元ベクトル{S1,S2,...,Sm}を作成することができ、各要素Siは等しい確率で0または1のいずれかの値を有する。コンピューティングシステムMPC1132は、m次元ベクトルを2つのシェア、すなわち第1のシェア{[S1,1],[S2,1],...[Sm,1]}および第2のシェア{[S1,2],[S2,2],...[Sm,2]}へと分割する。コンピューティングシステムMPC1132は、第1のシェアを秘密に保ち、第2のシェアをコンピューティングシステムMPC2に提供することができる。コンピューティングシステムMPC1132は次いで、m次元ベクトル{S1,S2,...,Sm}を廃棄することができる。
コンピューティングシステムMPC2134は、秘密m次元ベクトル{T1,T2,...,Tm}を作成することができ、各要素Tiは0または1のいずれかの値を有する。コンピューティングシステムMPC2134は、m次元ベクトルを2つのシェア、すなわち第1のシェア{[T1,1],[T2,1],...[Tm,1]}および第2のシェア{[T1,2],[T2,2],...[Tm,2]}へと分割する。コンピューティングシステムMPC2は、第1のシェアを秘密に保ち、第2のシェアをコンピューティングシステムMPC1に提供することができる。コンピューティングシステムMPC2134は次いで、m次元ベクトル{T1,T2,...,Tm}を廃棄することができる。
2つのコンピューティングシステムMPC1132およびMPC2134は、セキュアMPC技法を使用してビット反転パターンのシェアを計算する(408)。コンピューティングシステムMPC1132およびMPC2134は、コンピューティングシステムMPC1132とMPC2134との間で複数のラウンドトリップを伴う秘密シェアMPC等値テストを使用して、ビット反転パターンのシェアを計算することができる。ビット反転パターンは、上で説明された演算[x]==[y]に基づき得る。すなわち、ビット反転パターンは{S1==T1,S2==T2,...Sm==Tm}であり得る。各STi=(Si==Ti)とする。各STiは、0または1のいずれかの値を有する。MPC演算が完了した後、コンピューティングシステムMPC1132は、ビット反転パターンの第1のシェア{[ST1,1],[ST2,1],...[STm,1]}を有し、コンピューティングシステムMPC2134は、ビット反転パターンの第2のシェア{[ST1,2],[ST2,2],...[STm,2]}を有する。各STiのシェアは、2つのコンピューティングシステムMPC1132およびMPC2134のいずれか1つに見えない方法で、2つのコンピューティングシステムMPC1132およびMPC2134がビットベクトルの中のビットを反転させることを可能にする。
各コンピューティングシステムMPC1132およびMPC2134は、各ユーザプロファイルのシェアを各ランダム投影平面に投影する(410)。すなわち、コンピューティングシステムMPC1132がシェアを受信した各ユーザプロファイルに対して、コンピューティングシステムMPC1132は、シェア[Pi,1]を各投影平面Ujに投影することができる。ユーザプロファイルの各シェアに対して、および各ランダム投影平面Ujに対してこの演算を実行すると、z×m次元の行列Rが生じ、zは利用可能なユーザプロファイルの数であり、mはランダム投影平面の数である。行列Rの中の各要素Ri,jは、投影平面Ujとシェア[Pi,1]とのドット積を計算することによって決定することができ、たとえば、Ri,j= sign(UjPi, 1)である。演算・は、等しい長さの2つのベクトルのドット積を示す。
ビット反転が使用される場合、コンピューティングシステムMPC1132は、コンピューティングシステムMPC1132とMPC2134との間で秘密分散されるビット反転パターンを使用して、行列の中の要素Ri,jのうちの1つまたは複数の値を修正することができる。行列Rの中の各要素Ri,jに対して、コンピューティングシステムMPC1132は、要素Ri,jの値として、[STj,1]==sign(Ri,j)を計算することができる。したがって、要素Ri,jの符号は、ビット反転パターンの中のビット[STj,1]の中の対応するビットが0という値を有する場合、反転される。この計算は、コンピューティングシステムMPC2134への複数のRPCを必要とし得る。
同様に、コンピューティングシステムMPC2134がシェアを受信した各ユーザプロファイルに対して、コンピューティングシステムMPC2134は、シェア[Pi,2]を各投影平面Ujに投影することができる。ユーザプロファイルの各シェアに対して、および各ランダム投影平面Ujに対してこの演算を実行すると、z×m次元の行列R'が生じ、zは利用可能なユーザプロファイルの数であり、mはランダム投影平面の数である。行列R'の中の各要素Ri,j'は、投影平面Ujとシェア[Pi,2]とのドット積を計算することによって決定することができ、たとえば、Ri,j'=Uj・[Pi,2]である。演算・は、等しい長さの2つのベクトルのドット積を示す。
ビット反転が使用される場合、コンピューティングシステムMPC2134は、コンピューティングシステムMPC1132とMPC2134との間で秘密分散されるビット反転パターンを使用して、行列の中の要素Ri,j'のうちの1つまたは複数の値を修正することができる。行列Rの中の各要素Ri,j'に対して、コンピューティングシステムMPC2134は、要素Ri,j'の値として、[STj,2]==sign(Ri,j')を計算することができる。したがって、要素Ri,j'の符号は、ビット反転パターンの中のビット[STj,2]の中の対応するビットが0という値を有する場合、反転される。この計算は、コンピューティングシステムMPC1への複数のRPCを必要とし得る。
コンピューティングシステムMPC1132およびMPC2134は、ビットベクトルを再構築する(412)。コンピューティングシステムMPC1132およびMPC2134は、厳密に同じサイズを有する行列RおよびR'に基づいて、ユーザプロファイルのためのビットベクトルを再構築することができる。たとえば、コンピューティングシステムMPC1132は、行列Rの列の一部分を送信することができ、コンピューティングシステムMPC2134は、MPC1に行列R'の列の残りの部分を送信することができる。特定の例では、コンピューティングシステムMPC1132は、コンピューティングシステムMPC2134に行列Rの列の第1の半分を送信することができ、コンピューティングシステムMPC2134は、MPC1に行列R'の列の第2の半分を送信することができる。この例では、列が、水平方向の区分のために使用され、ユーザのプライバシーを保護するために好まれるが、垂直方向の再構築のための他の例では、行が使用され得る。
この例では、コンピューティングシステムMPC2134は、行列R'の列の第1の半分を、コンピューティングシステムMPC1132から受信された行列Rの列の第1の半分と組み合わせて、ビットベクトルの第1の半分(すなわち、m/2次元)を平文で再構築することができる。同様に、コンピューティングシステムMPC1132は、行列Rの列の第2の半分を、コンピューティングシステムMPC2134から受信された行列R'の列の第2の半分と組み合わせて、ビットベクトルの第2の半分(すなわち、m/2次元)を平文で再構築することができる。概念的には、コンピューティングシステムMPC1132およびMPC2134は今や、2つの行列RおよびR'の中の対応するシェアを組み合わせて、ビット行列Bを平文で再構築した。このビット行列Bは、機械学習モデルのためにアプリケーション107からそれについてのシェアが受信された各ユーザプロファイルに対する、(各投影平面へと投影された)投影結果のビットベクトルを含む。MPCシステム130の中の2つのサーバの各々1つは、ビット行列Bの半分を平文で所有する。
しかしながら、ビット反転が使用される場合、コンピューティングシステムMPC1132およびMPC2134は、機械学習モデルのために固定されたランダムパターンの中の行列RおよびR'の要素の反転されたビットを有する。このランダムビット反転パターンは、2つのコンピューティングシステムMPC1132およびMPC2134のいずれかには見えないので、コンピューティングシステムMPC1132もMPC2134も、投影結果のビットベクトルから元のユーザプロファイルを推測することができない。この暗号設計はさらに、MPC1132またはMPC2134が、ビットベクトルを水平方向に区分することによって元のユーザプロファイルを推測するのを防ぎ、すなわち、コンピューティングシステムMPC1132が投影結果のビットベクトルの第2の半分を平文で保持し、コンピューティングシステムMPC2134が投影結果のビットベクトルの第1の半分を平文で保持する。
MPCシステム130は、機械学習モデルを生成する(414)。MPCシステム130内のコンピューティングシステムMPC1 132およびMPC2 134は、以前に生成されたユーザプロファイルに対応するビットベクトルを使用して機械学習モデルを生成することができる。いくつかの実装形態では、機械学習モデルがk-nnモデルである場合、2つのMPCコンピューティングシステム132および134の各々は、ビットベクトルの対応する半分を使用して別々のk-nnモデルを生成することができる。たとえば、MPCシステム132は、ビットベクトルの第2の半分を使用してk-nnモデルを生成することができる。加えて、コンピューティングシステムMPC2134は、ビットベクトルの第1の半分を使用してk-NNモデルを生成することができる。行列のビット反転および水平区分を使用したモデルの生成により、多層防御原理が適用されて、モデルを生成するために使用されるユーザプロファイルの秘密を保護する。
いくつかの実装形態では、機械学習モデルがk平均モデルである場合、コンピューティングシステムMPC1 132またはMPC2 134は、ビットベクトルのそれらの2つの半分を使用して単一のk平均モデルを生成することができる。たとえば、コンピューティングシステムMPC1 132は、ビットベクトルのそれらの2つの半分を使用してk平均モデルを生成する。しかしながら、いくつかの実装形態では、コンピューティングシステムMPC1 132およびMPC2 134の各々は、別個のK平均モデルを生成することができる。一般に、k平均モデルは、ユーザのセットのユーザプロファイル間のコサイン類似度(または距離)を表す。コンピューティングシステムMPC1 132またはMPC2 134のいずれかによって生成されるk平均モデルは、ビットベクトル間の類似度を表す。
コンピューティングシステムMPC1 132またはMPC2 134によって生成されるk平均モデルはk平均モデルと呼ばれることがあり、これは、上で説明されたような固有のモデル識別子を有する。コンピューティングシステムMPC130は、モデルと、モデルを生成するために使用される各ユーザプロファイルに対するラベルのシェアとを記憶することができる。アプリケーション107は次いで、アプリケーション107が属するユーザグループのラベルの推測を行うようにモデルにクエリすることができる。
図5は、MPCシステム130のコンピューティングシステムを訓練してそれにクエリするための例示的なプロセス500を示す流れ図である。プロセス500の動作は、たとえば図1のMPCシステム130によって実施され得る。プロセス500の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。
マルチパーティ計算(MPC)システム130の第1のコンピューティングシステムは、所与のユーザプロファイルの第1のシェアおよび所与のユーザプロファイルの第2のシェアを含むクエリを受信する(502)。たとえば、アプリケーション107は、MPCシステム130の各コンピューティングシステムに対して1つずつ、ユーザプロファイルの2つのシェア(たとえば、[Pi,1]、[Pi,2])を生成する。アプリケーション107は、コンピューティングシステムMPC1 132の公開暗号鍵を使用して第1のシェア[Pi,1]を暗号化する。同様に、アプリケーション107は、コンピューティングシステムMPC2 134の公開暗号鍵を使用してユーザプロファイルの第2のシェア[Pi,2]を暗号化する。クライアントデバイス106上で実行されるアプリケーション107は、第1の暗号化されたシェア(たとえば、PubKeyEncrypt([Pi,1],MPC1))および第2の暗号化されたシェア(たとえば、PubKeyEncrypt([Pi,2],MPC2))をコンピューティングシステムMPC1 132にアップロードする。
MPCシステム130の第1のコンピューティングシステムは、第2のシェアをMPCシステム130の第2のコンピューティングシステムに送信する(504)。たとえば、クライアントデバイス106上で実行されるアプリケーション107は、ユーザプロファイルの暗号化されたシェアをコンピューティングシステムMPC1にアップロードする。アプリケーション107は、ユーザプロファイルの第1のシェア(たとえば、PubKeyEncrypt([Pi,1],MPC1))および第2のシェア(たとえば、PubKeyEncrypt([Pi,2],MPC2))をMPC1にアップロードする。コンピューティングシステムMPC1は、MPC1の秘密鍵を使用してユーザプロファイルの第1のシェアを復号し、ユーザプロファイルの第2のシェアをMPC2に送信する(210)。MPC2は、MPC2の秘密鍵を使用してユーザプロファイルの第2のシェアを復号する。
MPCシステム130の第1のコンピューティングシステムは、第1のシェアに最も近い重心を有する第1のクラスタの第1のラベルを決定する(506)。たとえば、MPC1およびMPC2によってk平均機械学習モデルを訓練した後、アプリケーション107は、ユーザプロファイルの第1の暗号化されたシェアおよび第2の暗号化されたシェアを含むユーザグループラベルに対するクエリをコンピューティングシステムMPC1 132に送信する。他の例では、アプリケーション107は、ユーザグループラベルに対するクエリをコンピューティングシステムMPC2 134に送信することができる。アプリケーション107は、アプリケーション107が割り当てられるユーザグループのラベルを提供せよとのコンテンツサーバからの要求に応答して、ユーザグループラベルに対するクエリを出すことができる。たとえば、コンテンツサーバは、クライアントデバイス110のアプリケーション107のユーザグループラベルを決定するようにk平均モデルにクエリするように、アプリケーション107に要求することができる。
MPC1 132およびMPC2 134は、プロセス200のステップ212において説明された暗号学的プロトコルを実行して、MPC1によって機密に保たれる第1のシェア[Pi,1]およびMPC2によって機密に保たれる第2のシェア[Pi,2]に基づいて第1のビットベクトルを生成する。加えて、MPC1 132およびMPC2 134は、暗号学的プロトコルを実行して第1のクラスタおよび第1のラベルを決定する。
第1のコンピューティングシステムは、選択されたクラスタの第2のラベルを含む応答を受信する(508)。たとえば、コンピューティングシステムMPC2は、プロセス200のステップ212において言及されたような動作を実行し、クラスタおよび第2のラベルを決定する。第2のラベルを決定した後、コンピューティングシステムMPC2 134は、第2のラベルの暗号化されたバージョンをコンピューティングシステムMPC1に提供することができ、第2のラベルはアプリケーション107の公開暗号鍵を使用して暗号化される。
MPCシステム130は、第1のラベルおよび第2のラベルを含む応答でクエリに応答する(510)。たとえば、コンピューティングシステムMPC1 132は、アプリケーション107に、コンピューティングシステムMPC2によって決定される選択されたクラスタの第1のラベルおよび選択されたクラスタの第2のラベルの暗号化されたバージョンを提供することができる。アプリケーション107は、コンピューティングシステムMPC2によって決定された第2のクラスタの第2のラベルを復号することができる。MPCシステム130から第1のラベルおよび第2のラベルを受信した後、アプリケーションは、MPCシステム130の中の2つのサーバから受信された2つの秘密シェアに基づいて最終的なラベルを平文で再構築することができ、クライアントデバイス106にラベルを記憶する。
図6は、上で説明された動作を実行するために使用され得る例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、記憶デバイス630、および入出力デバイス640を含む。構成要素610、620、630、および640の各々は、たとえば、システムバス650を使用して、相互接続され得る。プロセッサ610は、システム600内で実行するための命令を処理することが可能である。いくつかの実装形態では、プロセッサ610は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ610は、マルチスレッドプロセッサである。プロセッサ610は、メモリ620または記憶デバイス630に記憶された命令を処理することが可能である。
メモリ620は、システム600内に情報を記憶する。一実装形態では、メモリ620はコンピュータ可読媒体である。いくつかの実装形態では、メモリ620は揮発性メモリユニットである。別の実装形態では、メモリ620は不揮発性メモリユニットである。
記憶デバイス630は、システム600の大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス630はコンピュータ可読媒体である。様々な異なる実装形態において、記憶デバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワークを介して共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
入出力デバイス640は、システム600のための入出力動作を提供する。いくつかの実装形態では、入出力デバイス640は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス660、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成されたドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどの、他の実装形態も使用され得る。
例示的な処理システムが図6で説明されているが、本明細書において説明される主題の実装形態および機能的動作は、他のタイプのデジタル電子回路において、または本明細書において開示される構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。
主題の実施形態および本明細書において説明される動作は、デジタル電子回路で、または本明細書において開示される構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械で生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
本明細書において説明される動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つまたは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分布コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、またはモジュールとして、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む任意の形態で展開されてもよい。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプト)を保持するファイルの一部分に、当該のプログラム専用の単一のファイルに、または複数の協調ファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で実行されるか、または、1つのサイトに配置されるかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書において説明されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって活動を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローが、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行されてもよく、装置が、それらとしても実装されてもよい。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従って活動を実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクも含むか、あるいは、それらからデータを受信することもしくはそれらにデータを転送することまたはその両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
ユーザとの対話を提供するために、本明細書において説明される主題の実施形態は、ユーザに情報を表示するための、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。
本明細書において説明される主題の実施形態は、バックエンド構成要素、たとえば、データサーバを含む、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、またはフロントエンド構成要素、たとえば、それを通じてユーザが本明細書において説明される主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含む、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、デジタルデータ通信の任意の形態の媒体、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントとサーバとは、一般に、互いに離れており、典型的には、通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、そのユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装形態の詳細を含んでいるが、これらは任意の発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々にまたは任意の適切な部分組合せで実装され得る。さらに、特徴はいくつかの組合せにおいて働くものとして上で説明され、そのようなものとして最初に特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されてもよく、特許請求される組合せは、副組合せまたは副組合せの変形を対象としてもよい。
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に行われること、または例示したすべての動作が行われることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは一般に、単一のソフトウェア製品に一緒に組み込まれてもよく、または複数のソフトウェア製品にパッケージ化されてもよいことを理解されたい。
このようにして、主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲に列挙される活動は、異なる順序で行われ、それでも望ましい結果を達成し得る。加えて、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。