様々な図面における同じ参照番号および名称は、同様の要素を示す。
全般に、サードパーティのクッキーを使用することなくユーザを特定の属性グループへと分類し、属性情報に少なくとも一部基づくユーザグループにデジタルコンポーネントを配信するためにキャンペーンの有効性を報告することを可能にする、システムおよび技法が説明される。
属性ベースのユーザグループの拡大
本文書において説明される機械学習プラットフォームは、コンテンツプラットフォームが、属性情報(たとえば、年齢範囲、地理的位置、自然言語など)に少なくとも一部基づくユーザグループを生成して拡大することを可能にする。これらのユーザグループは、デジタルコンポーネント提供者が、ユーザグループが作成されたユーザの特定のセットにリーチすることを可能にする。たとえば、女性専用のフィットネススタジオを運営するデジタルコンポーネント提供者は、女性のユーザグループのメンバーにデジタルコンポーネントを配信することにより利益を得ることがあり、これは、男性により関連のあるデジタルコンポーネントを見せるのを避けることの助けになり得る。クッキーを必要としない、または使用しないそのような指向性のコンテンツ配信を可能にするために、ユーザグループが形成され、続いて、プライバシーを守る機械学習システムおよび技法を使用してそれが拡大される。ユーザプライバシーを守りデータセキュリティを確保しながらユーザグループメンバーシップを拡大するように、機械学習モデルを訓練して使用するために、そのようなシステムおよび技法が使用される。
一般に、コンテンツプラットフォームなどの他のエンティティのコンピューティングシステムにおいてユーザプロファイルを作成して維持するのではなく、ユーザプロファイルはユーザのクライアントデバイスにおいて維持される。機械学習モデルを訓練するために、ユーザのクライアントデバイスは、他のデータとともに、それらの暗号化されたユーザプロファイル(たとえば、ユーザプロファイルの秘密シェアとして)を、任意選択でコンテンツプラットフォームを介して、セキュアマルチパーティ計算(MPC)クラスタの複数のコンピューティングシステムに送信することができる。たとえば、各クライアントデバイスは、ユーザプロファイルの2つ以上の秘密シェアを生成し、それぞれの秘密シェアを各コンピューティングシステムに送信することができる。MPCクラスタのコンピューティングシステムは、MPC技法を使用して、MPCクラスタのコンピューティングシステム(またはユーザ自身ではない他の関係者)のいずれもがユーザのプロファイルを平文(プレーンテキストとも呼ばれ得る)で得るのを防ぐような方法で、ユーザのプロファイルに基づいてユーザのユーザグループを提案するための機械学習モデルを訓練することができ、それによりユーザプライバシーを守る。機械学習モデルは、k最近傍(k-NN)モデルであり得る。いくつかの実装形態では、機械学習モデルは、他の機械学習モデル、たとえばニューラルネットワークモデル、または勾配ブースティングされた決定木によって(たとえば、勾配ブースティングを介して)増強されるk-NNであり得る。
機械学習モデルが訓練された後、ユーザのプロファイルに基づいて各ユーザに対する1つまたは複数のユーザグループを提案するために、機械学習モデルが使用され得る。たとえば、ユーザのクライアントデバイスは、そのユーザに対する提案されるユーザグループについてMPCクラスタにクエリし、またはユーザが特定のユーザグループに追加されるべきであるかどうかを決定することができる。二項分類、回帰(たとえば、算術平均または二乗平均平方根を使用した)、および/またはユーザグループを特定するためのマルチクラス分類などの、様々な推測技法が使用され得る。ユーザのユーザグループメンバーシップが、プライバシー保護、およびコンテンツをユーザに提供するためのセキュアな方法において使用され得る。
機械学習モデルを生成して使用するための例示的なシステム
図1は、セキュアMPCクラスタ130が機械学習モデルを訓練し、ユーザグループを拡大するために機械学習モデルが使用される環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアMPCクラスタ130、発行者140、ウェブサイト142、およびコンテンツプラットフォーム150を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアMPCクラスタ130、発行者140、ウェブサイト142、コンテンツプラットフォーム150、デジタルコンポーネント提供者160、およびアグリゲーションシステム180を含んでもよい。
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送信し、受信することができる他のデバイスを含む。クライアントデバイス110はまた、マイクロフォンを介してオーディオ入力を受け入れ、スピーカを介してオーディオ出力を出力するデジタルアシスタントデバイスも含み得る。デジタルアシスタントは、オーディオ入力を受け入れるためにマイクロフォンを起動する「ホットワード」または「ホットフレーズ」を検出すると、聴取モードになり得る(たとえば、オーディオ入力を受け入れる準備ができている)。デジタルアシスタントデバイスはまた、画像をキャプチャし、情報を視覚的に提示するためのカメラおよび/またはディスプレイも含み得る。デジタルアシスタントは、ウェアラブルデバイス(たとえば、腕時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスで実装され得る。クライアントデバイス110はまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイに差し込まれるストリーミングデバイスを含み得る。
クライアントデバイス110は通常、ネットワーク105を介してデータを送信すること、および受信することを円滑にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)のために開発されたアプリケーションである。発行者140は、ネイティブアプリケーションを開発し、クライアントデバイス110に提供する、たとえばダウンロード可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザが、ウェブブラウザのアドレスバーにリソース145のリソースアドレスを入力したこと、またはリソースアドレスを参照するリンクを選択したことに応答して、発行者140のウェブサイト142をホストするウェブサーバからのリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者のリモートサーバからのアプリケーションコンテンツを要求することができる。
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、デジタルコンポーネントにリソース145またはアプリケーションページを提示するためのデジタルコンポーネントスロットを含み得る。本明細書全体にわたって使用されるように、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの一種である。たとえば、デジタルコンポーネントは、アプリケーション112によって提示されるウェブページまたは他のリソースのコンテンツを補足することが意図されるコンテンツであってもよい。より具体的には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含み得る(たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連し得る)。したがって、デジタルコンポーネントの提供は、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードすると、アプリケーション112は、各スロットのデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112に、デジタルコンポーネントを選択しクライアントデバイス110のユーザへの提示のためにデジタルコンポーネントをアプリケーション112に提供するデジタルコンポーネント配信システムからデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含み得る。
コンテンツプラットフォーム150は、供給側プラットフォーム(SSP)および需要側プラットフォーム(DSP)を含み得る。一般に、コンテンツプラットフォーム150は、発行者140およびデジタルコンポーネント提供者160の代わりに、デジタルコンポーネントの選択と分散を管理する。
一部の発行者140は、SSPを使用して、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットのためのデジタルコンポーネントを取得するプロセスを管理する。SSPは、リソースおよび/またはアプリケーションのためのデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各発行者140は、対応するSSPまたは複数のSSPを有し得る。一部の発行者140は、同じSSPを使用することがある。
デジタルコンポーネント提供者160は、発行者のリソースおよびアプリケーションのデジタルコンポーネントスロットに提示されるデジタルコンポーネントを作成(または別様に発行)することができる。デジタルコンポーネント提供者160は、DSPを使用して、デジタルコンポーネントスロットにおいて提示するためにそのデジタルコンポーネントのプロビジョニングを管理することができる。DSPは、リソースおよび/またはアプリケーションを用いて提示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSPは、デジタルコンポーネント提供者160に代わって複数の供給側プラットフォーム(SSP)と対話して、複数の異なる発行者140のリソースおよび/またはアプリケーションを用いて提示するためのデジタルコンポーネントを提供することができる。一般に、DSPは、デジタルコンポーネントに対する要求を(たとえば、SSPから)受信し、要求に基づいて1つまたは複数のデジタルコンポーネント提供者によって作成された1つまたは複数のデジタルコンポーネントに対する選択パラメータを生成(または選択)し、デジタルコンポーネントに関するデータ(たとえば、デジタルコンポーネント自体)および選択パラメータをSSPに提供することができる。次いで、SSPは、クライアントデバイス110での提示のためのデジタルコンポーネントを選択し、クライアントデバイス110にデジタルコンポーネントを提示させるデータをクライアントデバイス110に提供することができる。
いくつかの場合、ウェブページ、アプリケーションページ、または、以前にユーザが訪問した、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定の行動を実行する(たとえば、ウェブページに提示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザは、ユーザグループ、たとえばユーザ関心グループ、類似するユーザのコホート、または類似するユーザデータに関わる他のグループタイプに割り当てられ得る。ユーザグループはデジタルコンポーネント提供者160によって生成され得る。すなわち、各デジタルコンポーネント提供者160は、ユーザがデジタルコンポーネント提供者160の電子リソースを訪れるとき、ユーザを自分のユーザグループに割り当てることができる。いくつかの実装形態では、発行者140、コンテンツプラットフォーム150、またはMPCクラスタ130はまた、ユーザを選択されたユーザグループに割り当てることもできる。
ユーザのプライバシーを保護するために、ユーザのグループメンバーシップは、デジタルコンポーネント提供者、コンテンツプラットフォーム、または他の関係者によってではなく、たとえばアプリケーション112のうちの1つ、またはクライアントデバイス110のオペレーティングシステムによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、信頼されるプログラム(たとえば、ウェブブラウザ)またはオペレーティングシステムは、ウェブブラウザまたは別のアプリケーションを使用して、ユーザのためのユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、ユーザが追加された各ユーザグループのためのグループ識別子を含み得る。ユーザグループを作成するデジタルコンポーネント提供者160またはコンテンツプラットフォーム(たとえば、DSP)は、ユーザグループのユーザグループ識別子を指定することができる。ユーザグループのためのユーザグループ識別子は、グループを記述するもの(たとえば、女性グループ)またはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。一般に、ユーザグループは属性ベースのグループであり得る。属性ベースのユーザグループは、1つまたは複数の属性特徴と関連付けられ、1つまたは複数の属性特徴を有する(たとえば、自己報告に基づく)、またはプライバシーを守る機械学習モデルを使用して属性特徴を有するものとして予測および/もしくは分類されるユーザを、メンバーとして含み得る。そのようなユーザグループは、たとえば活動または製品に関連する、他の非属性特徴も有し得る。ユーザのためのユーザグループリストは、クライアントデバイス110のセキュアなストレージに記憶されてもよく、および/または、他者がリストにアクセスするのを防ぐために、記憶されるときに暗号化されてもよい。
アプリケーション112がデジタルコンポーネント提供者160に関するリソースもしくはアプリケーションコンテンツを提示するとき、またはウェブサイト142上のウェブページを提示するとき、リソースは、1つまたは複数のユーザグループ識別子をユーザグループリストに追加するようにアプリケーション112に要求することができる。それに応答して、アプリケーション112は、1つまたは複数のユーザグループ識別子をユーザグループリストに追加し、ユーザグループリストをセキュアに記憶することができる。
コンテンツプラットフォーム150は、ユーザのユーザグループメンバーシップを使用して、ユーザの関心の対象であり得るデジタルコンポーネントもしくは他のコンテンツを選択することができ、または、別の方法でユーザ/ユーザデバイスにとって有益であることがある。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザ体験を改善する、ユーザデバイスの動作を改善する、または何らかの他の方法でユーザもしくはユーザデバイスに利益をもたらす、データを備え得る。しかしながら、ユーザのユーザグループリストのユーザグループ識別子は、コンテンツプラットフォーム150がユーザグループ識別子を特定のユーザと相関付けるのを防ぎ、それにより、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザのプライバシーを守るような方法で、提供され得る。いくつかの実装形態では、セキュリティおよびプライバシー保護をさらに強力にすることができる。たとえば、コンピューティングシステムMPC1およびMPC2は共謀できず、アプリケーション112だけがユーザグループ識別子を平文で見ることが許可されることがある。
アプリケーション112は、コンテンツプラットフォーム150またはユーザ自身ではない任意の他のエンティティがユーザのユーザグループメンバーシップのいずれかを知るのを防ぐような方法で、ユーザグループメンバーシップに基づいてクライアントデバイス110において提示するためのデジタルコンポーネントを選択するために、コンテンツプラットフォーム150と対話する信頼されるコンピューティングシステムにユーザグループリストからのユーザグループ識別子を提供することができる。
いくつかの場合、すでにユーザグループのメンバーであるユーザとして、類似する関心または他の類似するデータ(たとえば、類似する属性)を有するユーザを含めるように、ユーザグループを拡大することが、ユーザおよびデジタルコンポーネント提供者にとって有益である。有用なことに、これはサードパーティのクッキーを使用せずに達成されることがある。たとえば、第1のユーザは雪山でのスキーに関心があることがあり、特定のスキーリゾートのためのユーザグループのメンバーであることがある。第2のユーザもスキーに関心があるが、このスキーリゾートのことを知らず、その特定のスキーリゾートに対するユーザグループのメンバーではないことがある。これらの2人のユーザが類似する関心またはデータ、たとえば類似するユーザプロファイルを有する場合、特定のスキーリゾートに関連し、第2のユーザまたはそのユーザデバイスの関心の対象であり得る、もしくは別様にそれらに有益であり得るコンテンツ、たとえばデジタルコンポーネントを第2のユーザが受信するように、第2のユーザがスキーリゾートのためのユーザグループに追加され得る。言い換えると、ユーザグループは、類似するユーザデータを有する他のユーザを含むように拡大され得る。特定の例では、属性ベースのユーザグループは、属性ベースのユーザグループと関連付けられる同じまたは類似する属性を有する他のユーザを含むように拡大され得る。
セキュアMPCクラスタ130は、ユーザのプロファイルに基づいて、ユーザグループをユーザ(またはユーザのアプリケーション112)に提案する、またはその提案を生成するために使用され得る、機械学習モデルを訓練することができる。セキュアMPCクラスタ130は、機械学習モデルを訓練するためにセキュアMPC技法を実行する、2つのコンピューティングシステムMPC1およびMPC2を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、1つより多くのコンピューティングシステムをMPCクラスタ130が含む限り、より多くのコンピューティングシステムも使用され得る。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な数のコンピューティングシステムを含み得る。MPCクラスタ130の中のより多くのコンピューティングシステムを使用することは、さらなるセキュリティおよび誤り耐性をもたらすことができるが、MPCプロセスの複雑さも向上させることがある。
コンピューティングシステムMPC1およびMPC2は、異なるエンティティによって運用され得る。このようにすると、各エンティティは、平文のユーザプロファイルにアクセスすることができない。平文は、鍵もしくは他の復号デバイス、または他の復号プロセスを必要とせずに閲覧または使用することができる形式の、計算的にタグ付けされていない、特別にフォーマットされていない、または暗号で書かれていないテキスト、またはバイナリファイルを含むデータである。たとえば、コンピューティングシステムMPC1またはMPC2のうちの1つは、ユーザ、発行者140、コンテンツプラットフォーム150、およびデジタルコンポーネント提供者160とは異なる信頼される関係者により運用され得る。たとえば、業界団体、政府団体、またはブラウザ開発者が、コンピューティングシステムMPC1およびMPC2のうちの1つを維持して運用し得る。他のコンピューティングシステムは、これらのグループのうちのある異なるグループにより運用されることがあるので、異なる信頼される関係者が各コンピューティングシステムMPC1およびMPC2を運用する。好ましくは、異なるコンピューティングシステムMPC1およびMPC2を運用する異なる関係者には、共謀してユーザのプライバシーを脅かすような動機がない。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、アーキテクチャが分離されており、本文書において説明されるセキュアMPCプロセスを実行すること以外に互いに通信しないように監視される。
いくつかの実装形態では、MPCクラスタ130は、各コンテンツプラットフォーム150および/または各デジタルコンポーネント提供者160のための1つまたは複数のk-NNモデルを訓練する。たとえば、各コンテンツプラットフォーム150は、1つまたは複数のデジタルコンポーネント提供者160のためのデジタルコンポーネントの配信を管理することができる。コンテンツプラットフォーム150は、コンテンツプラットフォーム150によるデジタルコンポーネントの配信の管理の対象であるデジタルコンポーネント提供者160のうちの1つまたは複数のためのk-NNモデルを訓練するように、MPCクラスタ130に要求することができる。一般に、k-NNモデルは、ユーザのセットのユーザプロファイル(および任意選択の追加の情報)間の距離を表す。コンテンツプラットフォームの各k-NNモデルは、固有のモデル識別子を有し得る。k-NNモデルを訓練するための例示的なプロセスが、図4に示され、以下で説明される。
コンテンツプラットフォーム150のためのk-NNモデルを訓練した後、コンテンツプラットフォーム150は、クライアントデバイス110のユーザのための1つまたは複数のユーザグループを特定するようにk-NNモデルにクエリすることができ、または、そのクエリをクライアントデバイス110のアプリケーション112に行わせることができる。たとえば、コンテンツプラットフォーム150は、ユーザに最も近い閾値の「k」個のユーザプロファイルが特定のユーザグループのメンバーであるかどうかを決定するように、k-NNモデルにクエリすることができる。そうである場合、コンテンツプラットフォーム150はユーザをそのユーザグループに追加し得る。ユーザグループがユーザのために特定される場合、コンテンツプラットフォーム150またはMPCクラスタ130は、ユーザをユーザグループに追加するようにアプリケーション112に要求することができる。ユーザおよび/またはアプリケーション112によって承認される場合、アプリケーション112は、クライアントデバイス110に記憶されているユーザグループリストにユーザグループのためのユーザグループ識別子を追加することができる。
いくつかの実装形態では、アプリケーション112は、ユーザが割り当てられるユーザグループをユーザが管理することを可能にするユーザインターフェースを提供することができる。たとえば、ユーザインターフェースは、ユーザが、ユーザグループ識別子を削除すること、すべてのまたは特定のリソース145、発行者140、コンテンツプラットフォーム150、デジタルコンポーネント提供者160、および/またはMPCクラスタ130がユーザをユーザグループに追加するのを防ぐこと(たとえば、アプリケーション112によって維持されるユーザグループ識別子のリストにエンティティがユーザグループ識別子を追加するのを防ぐこと)を可能にできる。これは、さらなる透明性、選択/同意、およびユーザの制御権をもたらす。
本文書全体の説明に加えて、ユーザには、本明細書において説明されるシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会的な行動もしくは活動、職業、ユーザの選好、またはユーザの現在の位置についての情報)の収集を可能にし得るかどうか、およびいつそれを可能にし得るかということと、サーバからのコンテンツまたは通信がユーザに送信されるかどうかということとの両方に関しての選択を、ユーザが行うことを可能にする制御権(たとえば、ユーザが対話できるユーザインターフェース要素)が与えられ得る。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われ得る。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的な位置を決定できないように、位置情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
いくつかの実装形態では、例示的な環境100は、それぞれの属性カテゴリの中の様々なユーザによるインプレッション、クリック、および/またはコンバージョンなどの、ブラウジングイベントなどのデータの報告を促進することもできる。そのような場合、コンテンツプラットフォーム150(たとえば、DSPまたはSSP、およびいくつかの実装形態では別個の報告プラットフォーム)は、報告APIを実装し、またはそれと通信することができ、報告APIは、ブラウジングイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)と属性カテゴリを組み合わせて集約されたデータを生成する、アグリゲーションシステム180と通信することができる。アグリゲーションシステム180は、報告の形式で、または容易に組み合わせられて報告に挿入され得るデータの形式で、集約されたデータをコンテンツプラットフォーム150(または別個の報告プラットフォーム)に送信することができる。
機械学習モデルを生成して使用するための例示的なプロセス
図2は、機械学習モデルを訓練し、機械学習モデルを使用してユーザをユーザグループに追加するための、例示的なプロセス200のスイムレーン図である。プロセス200の動作は、たとえば、クライアントデバイス110、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2、ならびにコンテンツプラットフォーム150によって実施され得る。プロセス200の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させ得る。プロセス200および以下の他のプロセスは、2つのコンピューティングシステムMPCクラスタ130に関して説明されるが、2つより多くのコンピューティングシステムを有するMPCクラスタも、同様のプロセスを実行するために使用され得る。
コンテンツプラットフォーム150は、クライアントデバイス110上で実行されるアプリケーション112に、それらのそれぞれのユーザのためのユーザプロファイルを生成し、ユーザプロファイルの秘密分散されたおよび/または暗号化されたバージョンをMPCクラスタ130にアップロードするように要求することによって、機械学習モデルのうちの1つの訓練および/または更新を開始することができる。本文書では、ユーザプロファイルの秘密シェアは、秘密シェアが平文ではないので、ユーザプロファイルの暗号化されたバージョンであると見なされ得る。一般に、各アプリケーション112は、ユーザプロファイルのためのデータを記憶し、コンテンツプラットフォーム150から要求を受信したことに応答して、更新されたユーザプロファイルを生成することができる。ユーザプロファイルのコンテンツおよび機械学習モデルは、異なるコンテンツプラットフォーム150に対して異なるので、ユーザのクライアントデバイス110上で実行されるアプリケーション112は、複数のユーザプロファイルのためのデータを維持し、特定のコンテンツプラットフォームに各々固有である複数のユーザプロファイル、または特定のコンテンツプラットフォームによって所有される特定のモデルを生成することができる。
クライアントデバイス110上で実行されるアプリケーション112は、クライアントデバイス110のユーザのためのユーザプロファイルを形成する(202)。ユーザのためのユーザプロファイルは、電子リソース、たとえばウェブページまたはアプリケーションコンテンツに関してユーザによって開始されるイベント、および/または、ユーザによって開始された可能性のあるイベントに関するデータを含み得る。イベントは、電子リソースの閲覧、デジタルコンポーネントの閲覧、電子リソースもしくはデジタルコンポーネントとのユーザ対話(またはその選択)もしくはユーザ対話の欠如、電子リソースとのユーザ対話の後で発生する変換、および/または、ユーザと電子リソースに関する他の適切なイベントを含み得る。
ユーザのためのユーザプロファイルは、コンテンツプラットフォーム150に固有であってもよく、またはコンテンツプラットフォーム150によって所有される選択された機械学習モデルであってもよい。たとえば、図3を参照して以下でより詳しく説明されるように、各コンテンツプラットフォーム150は、そのコンテンツプラットフォーム150に固有のユーザプロファイルを生成または更新するようにアプリケーション112に要求することができる。
ユーザのためのユーザプロファイルは、特徴ベクトルの形式であり得る。たとえば、ユーザプロファイルは、n次元の特徴ベクトルであり得る。n次元の各々は特定の特徴に対応してもよく、各次元の値はユーザのための特徴の値であってもよい。たとえば、ある次元は、特定のデジタルコンポーネントがユーザに提示された(またはユーザにより操作された)かどうかのためのものであり得る。この例では、その特徴の値は、デジタルコンポーネントがユーザに提示された(またはユーザにより操作された)場合は「1」であってもよく、または、デジタルコンポーネントがユーザに提示されていない(またはユーザにより操作されていない)場合は「0」であってもよい。ユーザのためのユーザプロファイルを生成するための例示的なプロセスが、図3に示され、以下で説明される。
いくつかの実装形態では、コンテンツプラットフォーム150は、コンテクスチュアル信号、特定のデジタルコンポーネントに関連する信号、または、アプリケーション112が認識していない可能性のあるユーザに関連する信号、もしくはユーザの位置における現在の天気などのアプリケーション112がアクセスできない可能性のあるユーザに関連する信号などの、追加の信号に基づいて、機械学習モデルを訓練することを望み得る。たとえば、コンテンツプラットフォーム150は、特定のデジタルコンポーネントが特定の文脈においてユーザに提示される場合に、ユーザがそのデジタルコンポーネントと対話するかどうかを予測するように、機械学習モデルを訓練することを望むことがある。この例では、コンテクスチュアル信号は、ユーザへのデジタルコンポーネントの各提示に対して、その時間におけるクライアントデバイス110の地理的位置(ユーザにより許可されている場合)、デジタルコンポーネントがそれを用いて提示される電子リソースの内容を記述する信号、および、デジタルコンポーネントを記述する信号、たとえば、デジタルコンポーネントの内容、デジタルコンポーネントのタイプ、電子リソース上のどこでデジタルコンポーネントが提示されるかなどを含み得る。別の例では、ある次元は、ユーザに提示されるデジタルコンポーネントがある特定のタイプであるかどうかのためのものであり得る。この例では、値は、旅行に対しては1、料理に対しては2、映画に対しては3などであり得る。以後の説明を簡単にするために、Piは、i番目のユーザプロファイルと関連付けられるユーザプロファイルと追加の信号(たとえば、コンテクスチュアル信号および/またはデジタルコンポーネントレベル信号)の両方を表す。
アプリケーション112は、ユーザのためのユーザプロファイルPiのシェアを生成する(204)。この例では、アプリケーション112は、ユーザプロファイルPiの2つのシェアを、MPCクラスタ130の各コンピューティングシステムに対して1つずつ生成する。各シェア自体は、それ自体はユーザプロファイルについて何も明らかにしないランダムな変数であり得ることに留意されたい。ユーザプロファイルを得るには、両方のシェアを組み合わせる必要がある。MPCクラスタ130が、機械学習モデルの訓練に参加するより多くのコンピューティングシステムを含む場合、アプリケーション112は、より多くのシェアを、各コンピューティングシステムに対して1つずつ生成する。いくつかの実装形態では、ユーザのプライバシーを保護するために、アプリケーション112は、疑似ランダム関数を使用して、ユーザプロファイルPiを複数のシェアへと分割することができる。すなわち、アプリケーション112は、疑似ランダム関数PRF(Pi)を使用して2つのシェア{[Pi,1],[Pi,2]}を生成することができる。厳密な分割は、アプリケーション112により使用される秘密分散アルゴリズムおよび暗号ライブラリに依存し得る。
いくつかの実装形態では、アプリケーション112は、1つまたは複数のラベルをMPCクラスタ130にも提供することができる。ラベルはあるアーキテクチャの機械学習モデル(たとえば、k-NN)の訓練においては使用されないことがあるが、モデル訓練プロセスを制御するハイパーパラメータ(たとえば、kの値)を精密に調整するために、または訓練される機械学習モデルの品質を評価するために、または予測を行う、すなわちユーザのためのユーザグループを提案するかどうかを決定するために、ラベルが使用され得る。ラベルは、たとえば、ユーザのための、コンテンツプラットフォーム150がアクセス権を有するユーザグループ識別子のうちの1つまたは複数を含み得る。すなわち、ラベルは、コンテンツプラットフォーム150によって管理される、またはコンテンツプラットフォーム150が読取りのアクセス権を有するユーザグループのユーザグループ識別子を含み得る。いくつかの実装形態では、単一のラベルは、ユーザのための複数のユーザグループ識別子を含む。いくつかの実装形態では、ユーザのためのラベルは、異種であってもよく、メンバーとしてユーザを含むすべてのユーザグループと、追加の情報、たとえばユーザが所与のデジタルコンポーネントと対話したかどうかとを含んでもよい。これにより、別のユーザが所与のデジタルコンポーネントと対話するかどうかを予測するためにk-NNモデルを使用することが可能になる。各ユーザプロファイルのためのラベルは、ユーザプロファイルに対応するユーザのためのユーザグループメンバーシップを示し得る。
ユーザプロファイルのためのラベルは、入力に対応するユーザが追加される、または追加されるべきであるユーザグループを予測するものである。たとえば、入力ユーザプロファイルに対するk個の最近傍ユーザプロファイルに対応するラベルは、たとえばユーザプロファイル間の類似性に基づいて、入力ユーザプロファイルに対応するユーザが入る、または入るべきであるユーザグループを予測するものである。これらの予測ラベルは、ユーザにユーザグループを提案するために、または、ラベルに対応するユーザグループにユーザを追加するようにアプリケーションに要求するために使用され得る。
ラベルが含まれる場合、アプリケーション112は、各labeliをシェア、たとえば[labeli,1]および[labeli,2]に分割することもできる。このようにして、コンピューティングシステムMPC1とMPC2との共謀がなければ、コンピューティングシステムMPC1もMPC2も、[Pi,1]もしくは[Pi,2]からPiを再構築できず、または[labeli,1]もしくは[labeli,2]からlabeliを再構築できない。
アプリケーション112は、ユーザプロファイルPiのシェア[Pi,1]もしくは[Pi,2]、および/または、各ラベルlabeliのシェア[labeli,1]もしくは[labeli,2]を暗号化する(206)。いくつかの実装形態では、アプリケーション112は、ユーザプロファイルPiの第1のシェア[Pi,1]とラベルlabeliの第1のシェア[labeli,1]の合成メッセージを生成し、コンピューティングシステムMPC1の暗号鍵を使用して合成メッセージを暗号化する。同様に、アプリケーション112は、ユーザプロファイルPiの第2のシェア[Pi,2]とラベルlabeliの第2のシェア[labeli,2]の合成メッセージを生成し、コンピューティングシステムMPC2の暗号鍵を使用して合成メッセージを暗号化する。これらの関数は、PubKeyEncrypt([Pi,1] || [labeli,1], MPC1)およびPubKeyEncrypt([Pi,2] || [labeli,2], MPC2)と表すことができ、PubKeyEncryptは、MPC1またはMPC2の対応する公開鍵を使用した公開鍵暗号化アルゴリズムを表す。記号「||」は、複数の単純なメッセージから複雑なメッセージを合成するための可逆的な方法、たとえば、JavaScript Object Notation(JSON)、Concise Binary Object Representation(CBOR)、またはプロトコルバッファを表す。
アプリケーション112は、暗号化されたシェアをコンテンツプラットフォーム150に提供する(208)。たとえば、アプリケーション112は、ユーザプロファイルおよびラベルの暗号化されたシェアをコンテンツプラットフォーム150に送信することができる。各シェアはコンピューティングシステムMPC1またはMPC2の暗号鍵を使用して暗号化されるので、コンテンツプラットフォーム150はユーザのユーザプロファイルまたはラベルにアクセスすることができない。
コンテンツプラットフォーム150は、複数のクライアントデバイスからユーザプロファイルのシェアおよびラベルのシェアを受信することができる。コンテンツプラットフォーム150は、コンピューティングシステムMPC1およびMPC2にユーザプロファイルのシェアをアップロードすることによって、機械学習モデルの訓練を開始することができる。ラベルは訓練プロセスにおいては使用されないことがあるが、コンテンツプラットフォーム150は、訓練プロセスを最適化するとき(たとえば、ハイパーパラメータの調整)、モデル品質を評価するとき、または後でモデルをクエリするときに使用するために、ラベルのシェアをコンピューティングシステムMPC1およびMPC2にアップロードすることができる。
コンテンツプラットフォーム150は、各クライアントデバイス110から受信された第1の暗号化されたシェア(たとえば、PubKeyEncrypt([Pi,1] || [labeli,1], MPC1))をコンピューティングシステムMPC1にアップロードする(210)。同様に、コンテンツプラットフォーム150は、第2の暗号化されたシェア(たとえば、PubKeyEncrypt([Pi,2] || [labeli,2], MPC2))をコンピューティングシステムMPC2にアップロードする(212)。両方のアップロードが、バッチであってもよく、機械学習モデルを訓練するための特定の期間に受信されたユーザプロファイルおよびラベルの暗号化されたシェアを含んでもよい。
いくつかの実装形態では、コンテンツプラットフォーム150が第1の暗号化されたシェアをコンピューティングシステムMPC1にアップロードする順序は、コンテンツプラットフォーム150が第2の暗号化されたシェアをコンピューティングシステムMPC2にアップロードする順序と一致しなければならない。これにより、コンピューティングシステムMPC1およびMPC2が、同じ秘密の2つのシェア、たとえば同じユーザプロファイルの2つのシェアを適切に照合することが可能になる。
いくつかの実装形態では、コンテンツプラットフォーム150は、照合を容易にするために、同じ疑似ランダムにまたは逐次生成された識別子を、同じ秘密のシェアに明確に割り当ててもよい。一部のMPC技法は入力または中間結果のランダムなシャッフルを利用し得るが、本文書において説明されるMPC技法は、そのようなランダムなシャッフルを含まないことがあり、代わりに照合のためにアップロード順序を利用することがある。
いくつかの実装形態では、動作208、210、および212は、アプリケーション112が[Pi,1] || [labeli,1]をMPC1に、および[Pi,2] || [labeli,2]をMPC2に直接アップロードする代替のプロセスにより置き換えられ得る。この代替のプロセスは、動作208、210、および212をサポートするためのコンテンツプラットフォーム150のインフラストラクチャコストを減らし、MPC1およびMPC2において機械学習モデルの訓練または更新を開始するためのレイテンシを減らすことができる。
コンピューティングシステムMPC1およびMPC2は、機械学習モデルを生成する(214)。新しい機械学習モデルがユーザプロファイルに基づいて生成されるたびに、データは訓練セッションと呼ばれ得る。コンピューティングシステムMPC1およびMPC2は、クライアントデバイス110から受信されたユーザプロファイルの暗号化されたシェアに基づいて、機械学習モデルを訓練することができる。たとえば、コンピューティングシステムMPC1およびMPC2は、MPC技法を使用して、ユーザプロファイルのシェアに基づいてk-NNモデルを訓練することができる。
暗号計算、およびしたがって、モデル訓練と推測の両方の間にユーザのプライバシーとデータを保護するためにコンピューティングシステムMPC1およびMPC2に課される計算負荷を最小限にするために、または少なくとも減らすために、MPCクラスタ130は、ランダム投影技法、たとえばSimHashを使用して、2つのユーザプロファイルPiとPjの類似性を高速に、セキュアに、および確率的に定量化することができる。2つのユーザプロファイルPiとPjの類似性は、2つのユーザプロファイルPiおよびPjのSimHashの結果を表す2ビットベクトル間のハミング距離を決定することによって決定され得る。そのようなハミング距離は、高い確率で2つのユーザプロファイル間のコサイン距離に反比例する。
概念的に、各訓練セッションに対して、m個のランダム投影超平面U={U1, U2, ..., Um}が生成され得る。ランダム投影超平面は、ランダム投影平面とも呼ばれ得る。計算システムMPC1とMPC2との間の多段階計算の1つの目的は、k-NNモデルの訓練において使用される各ユーザプロファイルPiに対して長さmのビットベクトルBiを作成することである。このビットベクトルBiにおいて、各ビットBi,jは、投影平面Ujのうちの1つとユーザプロファイルPiのドット積の符号を表し、すなわち、すべてのj∈[1,m]に対してBi,j=sign(Uj・Pi)であり、ここで・は等しい長さの2つのベクトルのドット積を表記する。すなわち、各ビットは、ユーザプロファイルPiが平面Ujのどちらの側に位置しているかを表す。1というビット値は正の符号を表し、0というビット値は負の符号を表す。いくつかの実装形態では、ユーザプライバシーを保護するために、上記のSimHashアルゴリズムは、(たとえば、秘密シェアの形式で)暗号化されたユーザプロファイル、および/または投影超平面にわたって実行され得るので、MPC1もMPC2もユーザプロファイルおよび/または投影行列を平文で入手することができない。
いくつかの実装形態では、訓練の間にランダム投影を適用する前に、MPC1およびMPC2は連携して、訓練データセットの中のすべてのユーザプロファイルの平均(average)(平均(mean)とも呼ばれる)、すなわちmean_Pを計算する。プライバシー保護のために、mean_Pの計算は秘密シェアで行われ得る。MPC1およびMPC2は次いで、各ユーザプロファイルPiからmean_Pを差し引き、次いで結果、すなわちPi-mean_Pをランダムに投影する。この減算ステップは「ゼロ平均」と呼ばれ得る。プライバシー保護のために、ゼロ平均ステップも秘密シェアで実行され得る。ゼロ平均が訓練プロセスにおいて適用される場合、MPC1およびMPC2も、予測時間においてゼロ平均を適用し、すなわち、予測せよとの要求の中のユーザプロファイルPに対して、MPC1およびMPC2は、P-mean_Pを計算し、すなわちmean_Pは訓練の間に計算されるのと同じmean_Pであり、次いで、ランダム投影を(訓練の間に選ばれる秘密シェアの中の同じランダム投影行列を用いて)P-mean_Pに適用する。
多段階の計算の各々の最後において、2つのコンピューティングシステムMPC1とMPC2の各々は、平文の各ユーザプロファイルのためのビットベクトル、各ユーザプロファイルのシェア、および各ユーザプロファイルのためのラベルのシェアを含む中間結果を生成する。たとえば、計算システムMPC1に対する中間結果は、以下のTable 1(表1)に示されるデータであり得る。計算システムMPC2は、類似しているが各ユーザプロファイルおよび各ラベルのシェアが異なっている、中間結果を有する。追加のプライバシー保護をもたらすために、MPCクラスタ130の中の2つのサーバの各々は、m次元のビットベクトルの半分しか平文で得ることができず、たとえば、コンピューティングシステムMPC1が、すべてのm次元ビットベクトルの第1のm/2次元を得て、コンピューティングシステムMPC2が、すべてのm次元ビットベクトルの第2のm/2次元を得る。平文は、鍵もしくは他の復号デバイス、または他の復号プロセスを必要とせずに、閲覧もしくは使用することができる形式の、計算的にタグ付けされていない、特別にフォーマットされていない、もしくは暗号で書かれていないテキスト、または、バイナリファイルを含むデータである。
単位長i≠jの2つの任意のユーザプロファイルベクトルPiおよびPjが与えられると、ランダム投影mの回数が十分に多いと仮定すると、2つのユーザプロファイルベクトルPiおよびPjに対するビットベクトルBiとBjの間のハミング距離は、高い確率でユーザプロファイルベクトルPiとPjの間のコサイン距離に比例することが示されている。
上で示された中間結果に基づいて、および、ビットベクトルBiは平文であるので、各コンピューティングシステムMPC1およびMPC2は、たとえば訓練によって、k-NNアルゴリズムを使用してそれぞれのk-NNモデルを独立に作成することができる。コンピューティングシステムMPC1およびMPC2は、同じまたは異なるk-NNアルゴリズムを使用することができる。k-NNモデルを訓練するための例示的なプロセスが、図4に示され、以下で説明される。k-NNモデルが訓練されると、アプリケーション112は、ユーザをユーザグループに追加するかどうかを決定するために、k-NNモデルにクエリすることができる。
アプリケーション112は、推測要求をMPCクラスタ130に出す(216)。この例では、アプリケーション112は、推測要求をコンピューティングシステムMPC1に送信する。他の例では、アプリケーション112は、推測要求をコンピューティングシステムMPC2に送信することができる。アプリケーション112は、推測要求を出せというコンテンツプラットフォーム150からの要求に応答して、推測要求を出すことができる。たとえば、コンテンツプラットフォーム150は、クライアントデバイス110のユーザが特定のユーザグループ、たとえば属性ベースのユーザグループに追加されるべきであるかどうかを決定するようにk-NNモデルにクエリするように、アプリケーション112に要求することができる。この要求は、ユーザがユーザグループに追加されるべきであるかどうかを推測するための推測要求と呼ばれ得る。
推測要求を開始するために、コンテンツプラットフォーム150は、アプリケーション112に、推測要求トークンMinferを送信することができる。推測要求トークンMinferは、特定のドメインによって所有される特定の機械学習モデルをクエリすることをアプリケーション112が認められていることを、MPCクラスタ130の中のサーバが確認することを可能にする。モデルアクセス制御が任意選択である場合、推測要求トークンMinferは任意選択である。推測要求トークンMinferは、以下のTable 2(表2)において示され説明される以下の項目を有し得る。
この例では、推測要求トークンMinferは、7つの項目と、コンテンツプラットフォーム150の秘密鍵を使用して7つの項目に基づいて生成されるデジタル署名とを含む。eTLD+1は、有効なトップレベルドメイン(eTLD)に、パブリックサフィックスよりも1つ多いレベルを加えたものである。例示的なeTLD+1は、「example.com」であり、「.com」は、トップレベルドメインである。
特定のユーザに対する推測を要求するために、コンテンツプラットフォーム150は、推測要求トークンMinferを生成し、ユーザのクライアントデバイス110上で実行されるアプリケーション112にトークンを送信することができる。いくつかの実装形態では、コンテンツプラットフォーム150は、アプリケーション112だけがアプリケーション112の公開鍵に対応する機密の秘密鍵を使用して推測要求トークンMinferを復号できるように、その公開鍵を使用して推測要求トークンMinferを暗号化する。すなわち、コンテンツプラットフォームは、PubKeyEnc(Minfer, application_public_key)をアプリケーション112に送信することができる。
アプリケーション112は、推測要求トークンMinferを復号して検証することができる。アプリケーション112は、その秘密鍵を使用して、暗号化された推測要求トークンMinferを復号することができる。アプリケーション112は、(i)デジタル署名を生成するために使用されたコンテンツプラットフォーム150の秘密鍵に対応するコンテンツプラットフォーム150の公開鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえば、タイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の長さの時間以内にあることを確実にすることによって、推測要求トークンMinferを検証することができる。推測要求トークンMinferが有効である場合、アプリケーション112はMPCクラスタ130にクエリすることができる。
概念的に、推測要求は、機械学習モデルのモデル識別子、現在のユーザプロファイルPi、k(フェッチすべき最近傍の数)、任意選択で追加の信号(たとえば、コンテクスチュアル信号またはデジタルコンポーネント信号)、集約関数、および集約関数パラメータを含み得る。しかしながら、コンピューティングシステムMPC1またはMPC2のいずれかに平文形式でユーザプロファイルPiを漏洩するのを防ぎ、それによりユーザのプライバシーを守るために、アプリケーション112は、ユーザプロファイルPiを、MPC1およびMPC2のための2つのシェア[Pi,1]および[Pi,2]へとそれぞれ分割することができる。アプリケーション112は次いで、クエリのために、たとえばランダムにまたは疑似ランダムに、2つのコンピューティングシステムMPC1またはMPC2のうちの1つを選択することができる。アプリケーション112がコンピューティングシステムMPC1を選択する場合、アプリケーション112は、第1のシェア[Pi,1]および第2のシェアの暗号化されたバージョン、たとえばPubKeyEncrypt([Pi,2], MPC2)とともに、単一の要求をコンピューティングシステムMPC1に送信することができる。この例では、アプリケーション112は、コンピューティングシステムMPC1が[Pi,2]にアクセスするのを防ぐために、コンピューティングシステムMPC2の公開鍵を使用して第2のシェア[Pi,2]を暗号化し、これは、コンピューティングシステムMPC1が[Pi,1]および[Pi,2]からユーザプロファイルPiを再構築することを可能にする。
以下でより詳しく説明されるように、コンピューティングシステムMPC1およびMPC2は連携して、ユーザプロファイルPiに対するk個の最近傍を計算する。計算システムMPC1およびMPC2は次いで、いくつかの可能な機械学習技法(たとえば、二項分類、多クラス分類、回帰など)のうちの1つを使用して、k個の最近傍ユーザプロファイルに基づいて、ユーザグループにユーザを追加するかどうかを決定することができる。たとえば、集約関数は機械学習技法(たとえば、二項、多クラス、回帰)を特定することができ、集約関数パラメータは集約関数に基づき得る。
いくつかの実装形態では、集約関数パラメータは、コンテンツプラットフォーム150がユーザのためのk-NNモデルをクエリしているユーザグループのユーザグループ識別子を含み得る。たとえば、コンテンツプラットフォーム150は、ハイキングに関連しておりユーザグループ識別子「ハイキング」を有するユーザグループにユーザを追加するかどうかを知るのを望むことがある。この例では、集約関数パラメータは、「ハイキング」というユーザグループ識別子を含み得る。一般に、コンピューティングシステムMPC1およびMPC2は、ユーザグループのメンバーであるk個の最近傍の数に基づいて、たとえばそれらのラベルに基づいて、ユーザグループにユーザを追加するかどうかを決定することができる。
MPCクラスタ130は、推測結果をアプリケーション112に提供する(218)。この例では、クエリを受信したコンピューティングシステムMPC1は、推測結果をアプリケーション112に送信する。推測結果は、アプリケーション112がユーザを0個以上のユーザグループに追加すべきかどうかを示すことができる。たとえば、ユーザグループ結果は、ユーザグループのユーザグループ識別子を指定することができる。しかしながら、この例では、コンピューティングシステムMPC1は、ユーザグループを知るであろう。これを防ぐために、コンピューティングシステムMPC1は推測結果のシェアを計算することができ、コンピューティングシステムMPC2は同じ推測結果の別のシェアを計算することができる。コンピューティングシステムMPC2は、コンピューティングシステムMPC1にそのシェアの暗号化されたバージョンを提供することができ、シェアはアプリケーション112の公開鍵を使用して暗号化される。コンピューティングシステムMPC1は、推測結果のシェアおよびユーザグループ結果のコンピューティングシステムMPC2のシェアの暗号化されたバージョンを、アプリケーション112に提供することができる。アプリケーション112は、コンピューティングシステムMPC2のシェアを復号し、2つのシェアから推測結果を計算することができる。ユーザをユーザグループに追加するかどうかを決定するためにk-NNモデルにクエリするための例示的なプロセスが、図5に示され、以下で説明される。いくつかの実装形態では、コンピューティングシステムMPC2の結果をコンピューティングシステムMPC1が改竄するのを防ぐために、コンピューティングシステムMPC2は、アプリケーション112の公開鍵を使用してその結果を暗号化する前または後のいずれかに、結果にデジタル署名する。アプリケーション112は、MPC2の公開鍵を使用して、コンピューティングシステムMPC2のデジタル署名を検証する。
アプリケーション112は、ユーザのためのユーザグループリストを更新する(220)。たとえば、推測結果が、ユーザを特定のユーザグループに追加すべきであるというものである場合、アプリケーション112はユーザをユーザグループに追加することができる。いくつかの実装形態では、アプリケーション112は、ユーザをユーザグループに追加するための許可をユーザにプロンプトで求めることができる。
アプリケーション112は、コンテンツに対する要求を送信する(222)。たとえば、アプリケーション112は、デジタルコンポーネントスロットを有する電子リソースをロードしたことに応答して、デジタルコンポーネントに対する要求をコンテンツプラットフォーム150に送信することができる。いくつかの実装形態では、要求は、ユーザをメンバーとして含むユーザグループの1つまたは複数のユーザグループ識別子を含み得る。たとえば、アプリケーション112は、ユーザグループリストから1つまたは複数のユーザグループ識別子を取得し、要求とともにユーザグループ識別子を提供することができる。いくつかの実装形態では、コンテンツプラットフォームが、ユーザグループ識別子を、ユーザ、アプリケーション112、および/または要求の受信元のクライアントデバイス112と関連付けることが可能になるのを防ぐための、技法が使用され得る。
コンテンツプラットフォーム150は、アプリケーション112にコンテンツを送信する(224)。たとえば、コンテンツプラットフォーム150は、ユーザグループ識別子に基づいてデジタルコンポーネントを選択し、デジタルコンポーネントをアプリケーション112に提供することができる。いくつかの実装形態では、コンテンツプラットフォーム150は、アプリケーション112と連携して、アプリケーション112からユーザグループ識別子が漏洩することなく、ユーザグループ識別子に基づいてデジタルコンポーネントを選択する。
アプリケーション112は、受信されたコンテンツを表示し、または別様に実装する(226)。たとえば、アプリケーション112は、電子リソースのデジタルコンポーネントスロットにおいて受信されたデジタルコンポーネントを表示することができる。
ユーザプロファイルを生成するための例示的なプロセス
図3は、ユーザプロファイルを生成し、ユーザプロファイルのシェアをMPCクラスタに送信するための、例示的なプロセス300を示す流れ図である。プロセス300の動作は、たとえば、クライアントデバイス110上で実行されるアプリケーション112によって、図1のクライアントデバイス110によって実施され得る。プロセス300の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。
ユーザのクライアントデバイス110上で実行されるアプリケーション112は、イベントのためのデータを受信する(302)。イベントは、たとえば、クライアントデバイス110における電子リソースの提示、クライアントデバイス110におけるデジタルコンポーネントの提示、クライアントデバイス110における電子リソースもしくはデジタルコンポーネントとのユーザ対話、またはデジタルコンポーネントの変換、または、提示される電子リソースもしくはデジタルコンポーネントとのユーザ対話もしくは変換の欠如であり得る。イベントが発生すると、コンテンツプラットフォーム150、発行者140、またはデジタルコンポーネント提供者160は、ユーザのためのユーザプロファイルを生成する際に使用するために、イベントに関連するデータをアプリケーション112に提供することができる。
アプリケーション112は、各コンテンツプラットフォーム150に対する異なるユーザプロファイルを生成することができる。すなわち、ユーザの、および特定のコンテンツプラットフォーム150のためのユーザプロファイルは、特定のコンテンツプラットフォーム150から受信されたイベントデータのみを含み得る。このことは、他のコンテンツプラットフォームのイベントに関連するデータをコンテンツプラットフォームと共有しないことによって、ユーザのプライバシーを守る。いくつかの実装形態では、アプリケーション112は、コンテンツプラットフォーム150の要求ごとに、コンテンツプラットフォーム150によって所有される各機械学習モデルに対する異なるユーザプロファイルを生成し得る。設計目標に基づいて、異なる機械学習モデルは異なる訓練データを必要とし得る。たとえば、ユーザをユーザグループに追加するかどうかを決定するために、第1のモデルが使用され得る。ユーザがデジタルコンポーネントと対話するかどうかを予測するために、第2のモデルが使用され得る。この例では、第2のモデルのためのユーザプロファイルは、第1のモデルのためのユーザプロファイルが有しない追加のデータ、たとえばユーザがデジタルコンポーネントと対話したかどうかを含み得る。
コンテンツプラットフォーム150は、プロファイル更新トークンMupdateの形式でイベントデータを送信することができる。プロファイル更新トークンMupdateは、以下のTable 3(表3)において示され説明される以下の項目を有する。
モデル識別子は、その訓練のためにユーザプロファイルが使用される、またはユーザグループ推測を行うために使用される、機械学習モデル、たとえばk-NNモデルを特定する。プロファイル記録は、イベントに固有のデータ、たとえばイベントのタイプ、電子リソースもしくはデジタルコンポーネント、イベントが発生した時間、および/または、機械学習モデルを訓練する際およびユーザグループ推測を行う際にコンテンツプラットフォーム150が使用することを望む、他の適切なインベントデータを含む、n次元特徴ベクトルである。デジタル署名は、コンテンツプラットフォーム150の秘密鍵を使用して7つの項目に基づいて生成される。
いくつかの実装形態では、送信の間に更新トークンMupdateを保護するために、コンテンツプラットフォーム150は、更新トークンMupdateをアプリケーション112に送信する前に更新トークンMupdateを暗号化する。たとえば、コンテンツプラットフォーム150は、アプリケーションの公開鍵、たとえばPubKeyEnc(Mupdate, application_public_key)を使用して、更新トークンMupdateを暗号化することができる。
いくつかの実装形態では、コンテンツプラットフォーム150は、プロファイル更新トークンMupdateの形式でイベントデータまたは更新要求を符号化することなく、イベントデータをアプリケーション112に送信することができる。たとえば、アプリケーション112の内側で実行されるコンテンツプラットフォーム150に由来するスクリプトは、スクリプトAPIを介してイベントデータおよび更新要求をアプリケーション112に直接送信することができ、アプリケーション112は、World Wide Web Consortium(W3C)に由来するセキュリティモデルおよび/または(Hypertext Transfer Protocol Secure)HTTPSに依拠して、改竄または漏洩からイベントデータおよび更新要求を保護する。
アプリケーション112は、イベントのためのデータを記憶する(304)。イベントデータが暗号化される場合、アプリケーション112は、イベントデータを暗号化するために使用される公開鍵に対応する秘密鍵を使用して、イベントデータを復号することができる。イベントデータが更新トークンMupdateの形式で送信される場合、アプリケーション112は、イベントデータを記憶する前に更新トークンMupdateを検証することができる。アプリケーション112は、(i)デジタル署名を生成するために使用されたコンテンツプラットフォーム150の秘密鍵に対応するコンテンツプラットフォーム150の公開鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえば、タイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の長さの時間以内にあることを確実にすることによって、更新トークンMupdateを検証することができる。更新トークンMupdateが有効である場合、アプリケーション112は、たとえばn次元のプロファイル記録を記憶することによって、イベントデータを記憶することができる。いずれの検証も失敗する場合、アプリケーション112は、たとえば、イベントデータを記憶しないことによって、更新要求を無視し得る。
各機械学習モデルに対して、たとえば各々の固有のモデル識別子に対して、アプリケーション112は、そのモデルのためのイベントデータを記憶することができる。たとえば、アプリケーション112は、各々の一意なモデル識別子に対して、n次元の特徴ベクトル(たとえば、更新トークンのプロファイル記録)のセットを含むデータ構造を維持し、各特徴ベクトルに対して、期限切れ時間を維持することができる。モデル識別子の例示的なデータ構造が以下のTable 4(表4)に示される。
有効な更新トークンMupdateを受信すると、アプリケーション112は、特徴ベクトルおよび更新トークンMupdateの期限切れ時間をデータ構造に追加することによって、更新トークンMupdateに含まれるモデル識別子のデータ構造を更新することができる。定期的に、アプリケーション112は、データ構造から期限切れの特徴ベクトルを排除し、記憶サイズを減らすことができる。
アプリケーション112は、ユーザプロファイルを生成するかどうかを決定する(306)。たとえば、アプリケーション112は、コンテンツプラットフォーム150からの要求に応答して、特定の機械学習モデルのためのユーザプロファイルを生成し得る。この要求は、ユーザプロファイルを生成し、ユーザプロファイルのシェアをコンテンツプラットフォーム150に返すことであり得る。いくつかの実装形態では、アプリケーション112は、たとえば生成されたユーザプロファイルをコンテンツプラットフォーム150に送信するのではなく、それらをMPCクラスタ130に直接アップロードし得る。ユーザプロファイルのシェアを生成して返すための要求のセキュリティを確保するために、コンテンツプラットフォーム150は、アップロードトークンMuploadをアプリケーション112に送信することができる。
アップロードトークンMuploadは、更新トークンMupdateと類似しているが異なる動作を伴う(たとえば、「ユーザプロファイルを蓄積する」の代わりに「サーバを更新する」)構造を有し得る。アップロードトークンMuploadは、動作遅延のための追加の項目も含み得る。動作遅延は、アプリケーション112がより多くのイベントデータ、たとえばより多くの特徴ベクトルを蓄積する間、ユーザプロファイルのシェアの計算とアップロードを遅らせるように、アプリケーション112に指示することができる。これにより、機械学習モデルは、何らかの重要なイベント、たとえばユーザグループへの加入の前および後で直ちにユーザイベントデータを獲得することが可能になる。動作遅延は遅延期間を指定することができる。この例では、デジタル署名が、コンテンツプラットフォームの秘密鍵を使用して、Table 3(表3)の他の7つの項目および動作遅延に基づいて生成され得る。コンテンツプラットフォーム150は、送信の間にアップロードトークンMuploadを保護するためにアプリケーションの公開鍵を使用して、更新トークンMupdateと同様の方式で、たとえばPubKeyEnc(Mupload, application_public_key)により、アップロードトークンMuploadを暗号化することができる。
アプリケーション112は、アップロードトークンMuploadを受信し、アップロードトークンMuploadが暗号化されている場合はそれを復号し、アップロードトークンMuploadを検証することができる。この検証は、更新トークンMupdateが検証される方法と似ていてもよい。アプリケーション112は、(i)デジタル署名を生成するために使用されたコンテンツプラットフォーム150の秘密鍵に対応するコンテンツプラットフォーム150の公開鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえば、タイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の長さの時間以内にあることを確実にすることによって、アップロードトークンMuploadを検証することができる。アップロードトークンMuploadが有効である場合、アプリケーション112はユーザプロファイルを生成することができる。いずれの検証も失敗する場合、アプリケーション112は、たとえばユーザプロファイルを生成しないことによって、アップロード要求を無視し得る。
いくつかの実装形態では、コンテンツプラットフォーム150は、プロファイルアップロードトークンMuploadの形式でアップロード要求を符号化することなく、ユーザプロファイルをアップロードするようにアプリケーション112に要求することができる。たとえば、アプリケーション112の内側で実行されるコンテンツプラットフォーム150に由来するスクリプトは、スクリプトAPIを介してアップロード要求をアプリケーション112に直接送信することができ、アプリケーション112は、W3Cに由来するセキュリティモデルおよび/またはHTTPSに依拠して、改竄または漏洩からアップロード要求を保護する。
ユーザプロファイルを生成しないという決定が行われる場合、プロセス300は、動作302に戻り、コンテンツプラットフォーム150からの追加のイベントデータを待機することができる。ユーザプロファイルを生成するという決定が行われる場合、アプリケーション112はユーザプロファイルを生成する(308)。
アプリケーション112は、記憶されているイベントデータ、たとえばTable 4(表4)に示されるデータ構造に記憶されているデータに基づいて、ユーザプロファイルを生成することができる。アプリケーション112は、要求に含まれるモデル識別子、たとえば、アップロードトークンMuploadの項目1のコンテンツプラットフォームeTLD+1ドメインおよび項目2のモデル識別子に基づいて、適切なデータ構造にアクセスすることができる。
アプリケーション112は、まだ期限切れになっていない学習期間におけるデータ構造の中のn次元特徴ベクトルを集約することによって、ユーザプロファイルを計算することができる。たとえば、ユーザプロファイルは、まだ期限切れになっていない学習期間におけるデータ構造の中のn次元特徴ベクトルの平均であり得る。結果は、プロファイル空間においてユーザを表すn次元特徴ベクトルである。任意選択で、アプリケーション112は、たとえばL2正規化を使用して、n次元特徴ベクトルを単位長に正規化してもよい。コンテンツプラットフォーム150は、任意選択の学習期間を指定してもよい。
いくつかの実装形態では、減衰率は、ユーザプロファイルを計算するために使用され得る。機械学習モデルを訓練するためにMPCクラスタ130を使用する多数のコンテンツプラットフォーム150があることがあり、各コンテンツプラットフォーム150は複数の機械学習モデルを有することがあるので、ユーザ特徴ベクトルデータを記憶することは、かなりのデータストレージ要件をもたらし得る。減衰技法を使用することで、機械学習モデルを訓練するためにユーザプロファイルを生成する目的で各クライアントデバイス110に記憶されるデータのその量をかなり減らすことができる。
所与の機械学習モデルに対して、k個の特徴ベクトル{F1, F2, ... Fk}があり、その各々がn次元ベクトルおよびそれらの対応する古さ(record_age_in_secondsi)であると仮定する。アプリケーション112は、以下の関係1を使用してユーザプロファイルを計算することができる。
この関係において、パラメータrecord_age_in_secondsiは、プロファイル記録F1がクライアントデバイス110に記憶されている秒単位の時間の長さであり、パラメータdecay_rate_in_secondsは、秒単位のプロファイル記録の減衰率(たとえば、更新トークンMupdateの項目6において受信される)である。このようにして、より新しい特徴ベクトルがより大きな重みを与えられる。これはまた、アプリケーション112が特徴ベクトルを記憶するのを避け、一定の記憶容量を用いてプロファイル記録のみを記憶することを可能にする。アプリケーション112は、各モデル識別子に対して複数の個々の特徴ベクトルを記憶するのではなく、各モデル識別子に対してn次元ベクトルPおよびタイムスタンプuser_profile_timeを記憶するだけでよい。
n次元ベクトルのユーザプロファイルPおよびタイムスタンプを初期化するために、アプリケーションは、各次元の値が0であるようなn次元のベクトルにベクトルPを設定し、user_profile_timeをエポックに設定することができる。任意の時間において新しい特徴ベクトルFxを用いてユーザプロファイルPを更新するために、アプリケーション112は以下の関係2を使用することができる。
アプリケーション112はまた、関係2を用いてユーザプロファイルを更新するとき、ユーザプロファイル時間を現在の時間(current_time)に更新することができる。アプリケーション112が上記の減衰率アルゴリズムを用いてユーザプロファイルを計算する場合、動作304および308は省略されることに留意されたい。
アプリケーション112は、ユーザプロファイルのシェアを生成する(310)。アプリケーション112は、疑似ランダム関数を使用して、ユーザプロファイルPi(たとえば、n次元ベクトルP)をシェアへと分割することができる。すなわち、アプリケーション112は、疑似ランダム関数PRF(Pi)を使用して、ユーザプロファイルPiの2つのシェア{[Pi,1],[Pi,2]}を生成することができる。厳密な分割は、アプリケーション112により使用される秘密分散アルゴリズムおよび暗号ライブラリに依存し得る。いくつかの実装形態では、アプリケーションは、Shamirの秘密分散方式を使用する。いくつかの実装形態では、アプリケーションは付加的な秘密分散方式を使用する。1つまたは複数のラベルのシェアが提供されている場合、アプリケーション112はラベルのシェアも生成することができる。
アプリケーション112は、ユーザプロファイルPiのシェア{[Pi,1],[Pi,2]}を暗号化する(312)。たとえば、上で説明されたように、アプリケーション112は、ユーザプロファイルおよびラベルのシェアを含む合成メッセージを生成し、合成メッセージを暗号化して暗号化結果PubKeyEncrypt([Pi,1] || [labeli,1], MPC1)およびPubKeyEncrypt([Pi,2] || [labeli,2], MPC2)を取得することができる。MPCクラスタ130の暗号鍵を使用してシェアを暗号化することは、コンテンツプラットフォーム150が平文のユーザプロファイルにアクセスできるようになるのを防ぐ。アプリケーション112は、暗号化されたシェアをコンテンツプラットフォームに送信する(314)。アプリケーション112が秘密シェアをコンピューティングシステムMPC1およびMPC2に直接送信する場合、動作314は省略されることに留意されたい。
機械学習モデルを生成して使用するための例示的なプロセス
図4は、機械学習モデルを生成するための例示的なプロセス400を示す流れ図である。プロセス400の動作は、たとえば、図1のMPCクラスタ130によって実施され得る。プロセス400の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
MPCクラスタ130は、ユーザプロファイルのシェアを取得する(402)。コンテンツプラットフォーム150は、ユーザプロファイルのシェアをMPCクラスタ130に送信することによって機械学習モデルを訓練するようにMPCクラスタ130に要求することができる。コンテンツプラットフォーム150は、所与の期間にわたって機械学習モデルのためにクライアントデバイス110から受信される暗号化されたシェアにアクセスし、それらのシェアをMPCクラスタ130にアップロードすることができる。
たとえば、コンテンツプラットフォーム150は、各ユーザプロファイルPiに対する、ユーザプロファイルの暗号化された第1のシェアおよびそのラベルの暗号化された第1のシェア(たとえば、PubKeyEncrypt([Pi,1] || [labeli,1], MPC1))を、コンピューティングシステムMPC1に送信することができる。本明細書において、ならびに本開示の他の流れ図において記述されるようなラベルは、ユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。同様に、コンテンツプラットフォーム150は、各ユーザプロファイルPiに対する、ユーザプロファイルの暗号化された第2のシェアおよびそのラベルの暗号化された第2のシェア(たとえば、PubKeyEncrypt([Pi,2] || [labeli,2], MPC2))を、コンピューティングシステムMPC2に送信することができる。
アプリケーション112がユーザプロファイルの秘密シェアをMPCクラスタ130に直接送信するいくつかの実装形態では、コンテンツプラットフォーム150は、訓練要求をMPCクラスタ130に送信することによって機械学習モデルを訓練するようにMPCクラスタ130に要求することができる。
コンピューティングシステムMPC1およびMPC2は、ランダム投影平面を作成する(404)。コンピューティングシステムMPC1およびMPC2は、m個のランダム投影平面U={U1,U2,...,Um}を連携して作成することができる。これらのランダム投影平面は、2つのコンピューティングシステムMPC1とMPC2の間の秘密シェアのままであるべきである。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、ランダム投影平面を作成し、Diffie-Hellman鍵交換技法を使用してそれらの秘密を維持する。
以下でより詳しく説明されるように、コンピューティングシステムMPC1およびMPC2は、各ユーザプロファイルのそれらのシェアを各ランダム投影平面に投影し、各ランダム投影平面に対して、ユーザプロファイルのシェアがランダム投影平面の一方の側にあるかどうかを決定する。各コンピューティングシステムMPC1およびMPC2は、各ランダム投影の結果に基づいて、ユーザプロファイルの秘密シェアから秘密シェアの中のビットベクトルを形成することができる。ユーザのためのビットベクトルの部分的な知識、たとえば、ユーザプロファイルPiが投影平面Ukの一方の側にあるかどうかは、コンピューティングシステムMPC1またはMPC2のいずれかが、Piの分布についての何らかの知識を獲得することを可能にし、これは、ユーザプロファイルPiが単位長を有するという以前の知識に付加するものである。コンピューティングシステムMPC1およびMPC2がこの情報へのアクセスを得るのを防ぐために(たとえば、これがユーザプライバシーおよび/もしくはデータセキュリティのために要求される、または好ましい実装形態では)、いくつかの実装形態では、ランダム投影平面は秘密シェアの中にあるので、コンピューティングシステムMPC1もMPC2も、平文でランダム投影平面にアクセスすることができない。他の実装形態では、任意選択の動作406~408において説明されたように、ランダムビット反転パターンが、秘密シェアアルゴリズムを使用してランダム投影結果にわたって適用され得る。
秘密シェアを介してビットをどのように反転させるかを示すために、同じ確率で値が0または1のいずれかである2つの秘密xおよびyがあると仮定する。等値演算[x]==[y]は、y==0である場合xのビットを反転させ、y==1である場合xのビットを保つ。この例では、演算は50%の確率でビットxをランダムに反転させる。この演算は、2つのコンピューティングシステムMPC1とMPC2の間のリモートプロシージャコール(RPC)を必要とすることがあり、ラウンドの回数はデータサイズおよび選択される秘密シェアアルゴリズムに依存する。
各コンピューティングシステムMPC1およびMPC2は、秘密m次元ベクトルを作成する(406)。コンピューティングシステムMPC1は、秘密m次元ベクトル{S1,S2,...,Sm}を作成することができ、各要素Siは等しい確率で0または1のいずれかの値を有する。コンピューティングシステムMPC1は、m次元ベクトルを2つのシェア、すなわち第1のシェア{[S1,1],[S2,1],...[Sm,1]}および第2のシェア{[S1,2],[S2,2],...[Sm,2]}へと分割する。コンピューティングシステムMPC1は、第1のシェアを秘密に保ち、第2のシェアをコンピューティングシステムMPC2に提供することができる。コンピューティングシステムMPC1は次いで、m次元ベクトル{S1,S2,...,Sm}を廃棄することができる。
コンピューティングシステムMPC2は、秘密m次元ベクトル{T1,T2,...,Tm}を作成することができ、各要素Tiは0または1のいずれかの値を有する。コンピューティングシステムMPC2は、m次元ベクトルを2つのシェア、すなわち第1のシェア{[T1,1],[T2,1],...[Tm,1]}および第2のシェア{[T1,2],[T2,2],...[Tm,2]}へと分割する。コンピューティングシステムMPC2は、第1のシェアを秘密に保ち、第2のシェアをコンピューティングシステムMPC1に提供することができる。コンピューティングシステムMPC2は次いで、m次元ベクトル{T1,T2,...,Tm}を廃棄することができる。
2つのコンピューティングシステムMPC1およびMPC2は、セキュアMPC技法を使用してビット反転パターンのシェアを計算する(408)。コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1とMPC2との間で複数のラウンドトリップを伴う秘密シェアMPC等値テストを使用して、ビット反転パターンのシェアを計算することができる。ビット反転パターンは、上で説明された演算[x]==[y]に基づき得る。すなわち、ビット反転パターンは{S1==T1,S2==T2,...Sm==Tm}であり得る。各STi=(Si==Ti)とする。各STiは、0または1のいずれかの値を有する。MPC演算が完了した後、コンピューティングシステムMPC1は、ビット反転パターンの第1のシェア{[ST1,1],[ST2,1],...[STm,1]}を有し、コンピューティングシステムMPC2は、ビット反転パターンの第2のシェア{[ST1,2],[ST2,2],...[STm,2]}を有する。各STiのシェアは、2つのコンピューティングシステムMPC1およびMPC2のいずれか1つに見えない方法で、2つのコンピューティングシステムMPC1およびMPC2がビットベクトルの中のビットを反転させることを可能にする。
各コンピューティングシステムMPC1およびMPC2は、各ユーザプロファイルのシェアを各ランダム投影平面に投影する(410)。すなわち、コンピューティングシステムMPC1がシェアを受信した各ユーザプロファイルに対して、コンピューティングシステムMPC1は、シェア[Pi,1]を各投影平面Ujに投影することができる。ユーザプロファイルの各シェアに対して、および各ランダム投影平面Ujに対してこの演算を実行すると、z×m次元の行列Rが生じ、zは利用可能なユーザプロファイルの数であり、mはランダム投影平面の数である。行列Rの中の各要素Ri,jは、投影平面Ujとシェア[Pi,1]とのドット積を計算することによって決定することができ、たとえば、Ri,j=Uj・[Pi,1]である。演算・は、等しい長さの2つのベクトルのドット積を示す。
ビット反転が使用される場合、コンピューティングシステムMPC1は、コンピューティングシステムMPC1とMPC2との間で秘密分散されるビット反転パターンを使用して、行列の中の要素Ri,jのうちの1つまたは複数の値を修正することができる。行列Rの中の各要素Ri,jに対して、コンピューティングシステムMPC1は、要素Ri,jの値として、[STj,1]==sign(Ri,j)を計算することができる。したがって、要素Ri,jの符号は、ビット反転パターンの中のビット[STj,1]の中の対応するビットが0という値を有する場合、反転される。この計算は、コンピューティングシステムMPC2への複数のRPCを必要とし得る。
同様に、コンピューティングシステムMPC2がシェアを受信した各ユーザプロファイルに対して、コンピューティングシステムMPC2は、シェア[Pi,2]を各投影平面Ujに投影することができる。ユーザプロファイルの各シェアに対して、および各ランダム投影平面Ujに対してこの演算を実行すると、z×m次元の行列R'が生じ、zは利用可能なユーザプロファイルの数であり、mはランダム投影平面の数である。行列R'の中の各要素Ri,j'は、投影平面Ujとシェア[Pi,2]とのドット積を計算することによって決定することができ、たとえば、Ri,j'=Uj・[Pi,2]である。演算・は、等しい長さの2つのベクトルのドット積を示す。
ビット反転が使用される場合、コンピューティングシステムMPC2は、コンピューティングシステムMPC1とMPC2との間で秘密分散されるビット反転パターンを使用して、行列の中の要素Ri,j'のうちの1つまたは複数の値を修正することができる。行列Rの中の各要素Ri,j'に対して、コンピューティングシステムMPC2は、要素Ri,j'の値として、[STj,2]==sign(Ri,j')を計算することができる。したがって、要素Ri,j'の符号は、ビット反転パターンの中のビットSTjの中の対応するビットが0という値を有する場合、反転される。この計算は、コンピューティングシステムMPC1への複数のRPCを必要とし得る。
コンピューティングシステムMPC1およびMPC2は、ビットベクトルを再構築する(412)。コンピューティングシステムMPC1およびMPC2は、厳密に同じサイズを有する行列RおよびR'に基づいて、ユーザプロファイルのためのビットベクトルを再構築することができる。たとえば、コンピューティングシステムMPC1は、MPC2に行列Rの列の一部分を送信することができ、コンピューティングシステムMPC2は、MPC1に行列R'の列の残りの部分を送信することができる。特定の例では、コンピューティングシステムMPC1は、コンピューティングシステムMPC2に行列Rの列の第1の半分を送信することができ、コンピューティングシステムMPC2は、MPC1に行列R'の列の第2の半分を送信することができる。この例では、列が、水平方向の再構築のために使用され、ユーザのプライバシーを保護するために好まれるが、垂直方向の再構築のための他の例では、行が使用され得る。
この例では、コンピューティングシステムMPC2は、行列R'の列の第1の半分を、コンピューティングシステムMPC1から受信された行列Rの列の第1の半分と組み合わせて、ビットベクトルの第1の半分(すなわち、m/2次元)を平文で再構築することができる。同様に、コンピューティングシステムMPC1は、行列Rの列の第2の半分を、コンピューティングシステムMPC2から受信された行列R'の列の第2の半分と組み合わせて、ビットベクトルの第2の半分(すなわち、m/2次元)を平文で再構築することができる。概念的には、コンピューティングシステムMPC1およびMPC2は今や、2つの行列RおよびR'の中の対応するシェアを組み合わせて、ビット行列Bを平文で再構築した。このビット行列Bは、機械学習モデルのためにコンテンツプラットフォーム150からそれについてのシェアが受信された各ユーザプロファイルに対する、(各投影平面へと投影された)投影結果のビットベクトルを含む。MPCクラスタ130の中の2つのサーバの各々1つは、ビット行列Bの半分を平文で所有する。
しかしながら、ビット反転が使用される場合、コンピューティングシステムMPC1およびMPC2は、機械学習モデルのために固定されたランダムパターンの中の行列RおよびR'の要素の反転されたビットを有する。このランダムビット反転パターンは、2つのコンピューティングシステムMPC1およびMPC2のいずれかには見えないので、コンピューティングシステムMPC1もMPC2も、投影結果のビットベクトルから元のユーザプロファイルを推測することができない。この暗号設計はさらに、MPC1またはMPC2が、ビットベクトルを水平方向に区分することによって元のユーザプロファイルを推測するのを防ぎ、すなわち、コンピューティングシステムMPC1が投影結果のビットベクトルの第2の半分を平文で保持し、コンピューティングシステムMPC2が投影結果のビットベクトルの第1の半分を平文で保持する。
コンピューティングシステムMPC1およびMPC2は、機械学習モデルを生成する(414)。コンピューティングシステムMPC1は、ビットベクトルの第2の半分を使用してk-NNモデルを生成することができる。同様に、コンピューティングシステムMPC2は、ビットベクトルの第1の半分を使用してk-NNモデルを生成することができる。行列のビット反転および水平区分を使用したモデルの生成により、多層防御原理が適用されて、モデルを生成するために使用されるユーザプロファイルの秘密を保護する。
一般に、各k-NNモデルは、ユーザのセットのユーザプロファイル間のコサイン類似性(または距離)を表す。コンピューティングシステムMPC1によって生成されるk-NNモデルは、ビットベクトルの第2の半分間の類似性を表し、コンピューティングシステムMPC2によって生成されるk-NNモデルは、ビットベクトルの第1の半分間の類似性を表す。たとえば、各k-NNモデルは、ビットベクトルのその半分間のコサイン類似性を定義することができる。
コンピューティングシステムMPC1およびMPC2によって生成される2つのk-NNモデルはk-NNモデルと呼ばれることがあり、これは上で説明されたような一意なモデル識別子を有する。コンピューティングシステムMPC1およびMPC2は、それらのモデルと、モデルを生成するために使用される各ユーザプロファイルに対するラベルのシェアとを記憶することができる。コンテンツプラットフォーム150は次いで、ユーザのためのユーザグループについて推測を行うようにモデルにクエリすることができる。いくつかの実装形態では、ユーザプライバシーを保護するために、ラベルは、たとえば秘密シェアの形式で暗号化される。
機械学習モデルを使用してユーザグループを推測するための例示的なプロセス
図5は、機械学習モデルを使用してユーザをユーザグループに追加するための例示的なプロセス500を示す流れ図である。プロセス500の動作は、たとえば図1のMPCクラスタ130およびクライアントデバイス110、たとえばクライアントデバイス110上で実行されるアプリケーション112によって実施され得る。プロセス500の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。
MPCクラスタ130は、所与のユーザプロファイルに対する推測要求を受信する(502)。ユーザのクライアントデバイス110上で実行されるアプリケーション112は、たとえばコンテンツプラットフォーム150からの要求に応答して、推測要求をMPCクラスタ130に送信することができる。たとえば、コンテンツプラットフォーム150は、推測要求をMPCクラスタ130に出すようにアプリケーション112に要求するために、推測要求トークンMinferをアプリケーション112に送信することができる。推測要求は、ユーザが任意の数のユーザグループに追加されるべきであるかどうかをクエリするためのものであり得る。
推測要求トークンMinferは、ユーザの所与のユーザプロファイルのシェア、機械学習モデル(たとえば、k-NNモデル)のモデル識別子および推測のために使用されるべき所有者ドメイン、推測のために使用されるべき所与のユーザプロファイルの最近傍の数k、追加の信号(たとえば、コンテクスチュアル信号またはデジタルコンポーネント信号)、推測のために使用されるべき集約関数および推測のために使用されるべき任意の集約関数パラメータ、ならびに、所有者ドメイン機密秘密鍵を使用して所有者ドメインにより作成される上記の情報すべてにわたる署名を含み得る。
上で説明されたように、コンピューティングシステムMPC1またはMPC2のいずれかに平文形式で所与のユーザプロファイルPiを漏洩するのを防ぎ、それによりユーザのプライバシーを守るために、アプリケーション112は、所与のユーザプロファイルPiを、MPC1およびMPC2のための2つのシェア[Pi,1]および[Pi,2]へとそれぞれ分割することができる。アプリケーション112は次いで、所与のユーザプロファイルの第1のシェア[Pi,1]および第2のシェアの暗号化されたバージョン、たとえば所与のユーザプロファイルのPubKeyEncrypt([Pi,2],MPC2)とともに、コンピューティングシステムMPC1に単一の推測要求を送信することができる。MPCクラスタ130が推測要求を認証できるように、推測要求は推測要求トークンMinferも含み得る。第1のシェアおよび暗号化された第2のシェアを含む推測要求を送信することによって、アプリケーション112によって送信される進行中の要求の数が減り、クライアントデバイス110において計算、帯域幅、および電池の節約をもたらす。
他の実装形態では、アプリケーション112は、所与のユーザプロファイルの第1のシェア[Pi,1]をコンピューティングシステムMPC1に送信し、所与のユーザプロファイルの第2のシェア[Pi,2]をコンピューティングシステムMPC2に送信することができる。コンピューティングシステムMPC1を通ることなく、所与のユーザプロファイルの第2のシェア[Pi,2]をコンピューティングシステムMPC2に送信することによって、コンピューティングシステムMPC1が所与のユーザプロファイルの第2のシェア[Pi,2]にアクセスするのを防ぐために、第2のシェアが暗号化される必要はない。
各コンピューティングシステムMPC1およびMPC2は、秘密分散表現で、所与のユーザプロファイルに対するk個の最近傍を特定する(504)。コンピューティングシステムMPC1は、所与のユーザプロファイルの第1のシェア[Pi,1]を使用して、所与のユーザプロファイルのビットベクトルの半分を計算することができる。ビットベクトルを生成するために、コンピューティングシステムMPC1は、図4のプロセス400の動作410および412を使用することができる。すなわち、コンピューティングシステムMPC1は、k-NNモデルのために生成されたランダム投影ベクトルを使用して、所与のユーザプロファイルのシェア[Pi,1]を投影し、所与のユーザプロファイルのためのビットベクトルの秘密シェアを作成することができる。k-NNモデルを生成するためにビット反転が使用された場合、コンピューティングシステムMPC1は次いで、k-NNモデルを生成するために使用されたビット反転パターンの第1のシェア{[ST1,1],[ST2,1],...[STm,1]}を使用して、所与のユーザプロファイルのためのビットベクトルの秘密シェアの要素を修正することができる。
同様に、コンピューティングシステムMPC1は、所与のユーザプロファイルの暗号化された第2のシェアPubKeyEncrypt([Pi,2],MPC2)を、コンピューティングシステムMPC2に提供することができる。コンピューティングシステムMPC2は、その秘密鍵を使用して所与のユーザプロファイルの第2のシェア[Pi,2]を復号し、所与のユーザプロファイルの第2のシェア[Pi,2]を使用して所与のユーザプロファイルのためのビットベクトルの半分を計算することができる。すなわち、コンピューティングシステムMPC2は、k-NNモデルのために生成されたランダム投影ベクトルを使用して、所与のユーザプロファイルのシェア[Pi,2]を投影し、所与のユーザプロファイルのためのビットベクトルを作成することができる。k-NNモデルを生成するためにビット反転が使用された場合、コンピューティングシステムMPC2は次いで、k-NNモデルを生成するために使用されたビット反転パターンの第2のシェア{[ST1,2],[ST2,2],...[STm,2]}を使用して、所与のユーザプロファイルのためのビットベクトルの要素を修正することができる。コンピューティングシステムMPC1およびMPC2は次いで、図4の動作412において説明されたように、水平方向の区分を用いてビットベクトルを再構築する。再構築の完了の後、コンピューティングシステムMPC1は、所与のユーザプロファイルのためのビットベクトル全体の第1の半分を有し、コンピューティングシステムMPC2は、所与のユーザプロファイルのためのビットベクトル全体の第2の半分を有する。
各コンピューティングシステムMPC1およびMPC2は、所与のユーザプロファイルのためのビットベクトルのその半分およびそのk-NNモデルを使用して、k'個の最近傍ユーザプロファイルを特定し、k'=a×kであり、aは実際の生産データおよび統計分析に基づいて経験的に決定される。たとえば、a=3または別の適切な数である。コンピューティングシステムMPC1は、ビットベクトル全体の第1の半分と、k-NNモデルの各ユーザプロファイルに対するビットベクトルとの間のハミング距離を計算することができる。コンピューティングシステムMPC1は次いで、計算されたハミング距離に基づいて、k'個の最近傍、たとえば最低のハミング距離を有するk'個のユーザプロファイルを特定する。言い換えると、コンピューティングシステムMPC1は、所与のユーザプロファイルのシェアおよび複数のユーザプロファイルを使用して訓練されるk最近傍モデルに基づいて、最近傍ユーザプロファイルのセットを特定する。表形式の例示的な結果が、以下のTable 5(表5)に示される。
Table 5(表5)において、各行は、特定の最近傍ユーザプロファイルのためのものであり、各ユーザプロファイルに対するビットベクトルの第1の半分と、コンピューティングシステムMPC1によって計算される所与のユーザプロファイルに対するビットベクトルとの間のハミング距離を含む。特定の最近傍ユーザプロファイルのための行はまた、そのユーザプロファイルの第1のシェアと、そのユーザプロファイルと関連付けられるラベルの第1のシェアとを含む。本明細書において記述されるようなラベルは、ユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。
同様に、コンピューティングシステムMPC2は、ビットベクトル全体の第2の半分と、k-NNモデルの各ユーザプロファイルに対するビットベクトルとの間のハミング距離を計算することができる。コンピューティングシステムMPC2は次いで、計算されたハミング距離に基づいて、k'個の最近傍、たとえば最低のハミング距離を有するk'個のユーザプロファイルを特定する。表形式の例示的な結果が、以下のTable 6(表6)に示される。
Table 6(表6)において、各行は、特定の最近傍ユーザプロファイルのためのものであり、そのユーザプロファイルと、コンピューティングシステムMPC2によって計算される所与のユーザプロファイルとの間のハミング距離を含む。特定の最近傍ユーザプロファイルのための行はまた、そのユーザプロファイルの第2のシェアと、そのユーザプロファイルと関連付けられるラベルの第2のシェアとを含む。
コンピューティングシステムMPC1およびMPC2は、行識別子(行ID)とハミング距離のペアのリストを互いに交換することができる。その後、各コンピューティングシステムMPC1およびMPC2は、同じアルゴリズムおよび入力データを用いてk個の最近傍を独立に選択することができる。たとえば、コンピューティングシステムMPC1は、コンピューティングシステムMPC1とMPC2の両方からの部分的なクエリ結果に共通の行識別子を見つけることができる。共通の行識別子の中の各iに対して、コンピューティングシステムMPC1は、2つの部分的なハミング距離から合成ハミング距離diを計算し、たとえばdi=di,1+di,2である。コンピューティングシステムMPC1は次いで、合成ハミング距離diに基づいて共通の行識別子を並べて、k個の最近傍を選択することができる。k個の最近傍のための行識別子は、ID={id1,...idk}と表され得る。aが十分大きい場合、上記のアルゴリズムにおいて決定されるk個の最近傍が、高い確率で真のk個の最近傍であることを証明することができる。しかしながら、より大きなaの値は、高い計算コストにつながる。いくつかの実装形態では、MPC1およびMPC2は、Private Set Intersection(PSI)アルゴリズムに関与し、コンピュータシステムMPC1とMPC2の両方からの部分的なクエリ結果に共通の行識別子を決定する。さらに、いくつかの実装形態では、MPC1およびMPC2は、強化されたPrivate Set Intersection(PSI)アルゴリズムに関与して、両方のコンピュータシステムMPC1およびMPC2からの部分的なクエリ結果に共通の行識別子に対してdi=di,1+di,2を計算し、MPC1またはMPC2のいずれにも、diにより決定される上位のk個の最近傍以外のものは何も明らかにしない。
ユーザをユーザグループに追加するかどうかの決定が行われる(506)。この決定は、k個の最近傍プロファイルおよびそれらの関連するラベルに基づいて行われ得る。この決定はまた、使用される集約関数およびその集約関数のための任意の集約パラメータに基づく。集約関数は、機械学習問題の性質、たとえば二項分類、回帰(たとえば、算術平均または二乗平均平方根を使用した)、多クラス分類、および加重k-NNに基づいて選ばれ得る。以下でより詳しく説明されるように、ユーザをユーザグループに追加するかどうかを決定する各々の方法は、MPCクラスタ130とクライアント110上で実行されるアプリケーション112との間の異なる対話を含み得る。異なるユーザを共通のユーザグループに追加することは、有利なことに、属性が類似するユーザが一緒に分類されることを確実にできる。
ユーザをユーザグループに追加しないという決定が行われる場合、アプリケーション112は、ユーザをユーザグループに追加しなくてもよい(508)。ユーザをユーザグループに追加するという決定が行われる場合、アプリケーション112は、たとえばユーザグループのユーザグループ識別子を含むようにクライアントデバイス110に記憶されているユーザグループリストを更新することによって、ユーザをユーザグループに追加することができる(510)。
上で述べられたように、アプリケーション112は、推測要求をMPCクラスタ130に出すことができ、MPCクラスタ130はそれに応答して、アプリケーション112がユーザを0個以上のユーザグループに追加すべきであるかどうかを示し得る推測結果を送信するように機械学習モデル(たとえば、k-NNモデル)にクエリすることができる。いくつかの実装形態では、アプリケーション112が複数のユーザグループにユーザを追加すべきであることを推測結果が示す場合、MPCクラスタ130は、推測結果を生成または送信する前に、ユーザが反対のグループに追加される(すなわち、分類される)のを防ぐことができる(たとえば、ユーザが30~35歳であると自己申告する、または決定される場合、そのユーザは50~60歳のユーザグループに分類され得ない)。
例示的な二項分類推測技法
二項分類では、推測要求は、集約関数パラメータとして、threshold、Ltrue、およびLfalseを含み得る。ラベル値はブーリアン型、すなわち真または偽のいずれかである。thresholdパラメータは、k個の最近傍プロファイルの閾値の百分率を表すことができ、ユーザがユーザグループLtrueに追加されるには、この閾値の百分率のk個の最近傍プロファイルが真の値というラベルを有しなければならない。それ以外の場合、ユーザはユーザグループLfalseに追加される。あるアプローチでは、MPCクラスタ130は、真というラベル値を有する最近傍ユーザプロファイルの数がthresholdとkの積より大きい場合、ユーザをユーザグループLtrueに(それ以外の場合はLfalseに)追加するようにアプリケーション112に指示してもよい。しかしながら、コンピューティングシステムMPC1は、推測結果、たとえばユーザが入るべきユーザグループを知る。
ユーザのプライバシーを守るために、推測要求は、平文の閾値、コンピューティングシステムMPC1のための第1のシェア[Ltrue,1]および[Lfalse,1]、ならびにコンピューティングシステムMPC2のための暗号化された第2のシェアPubKeyEncrypt([Ltrue,2] || [Lfalse,2] || application_public_key, MPC2)を含み得る。この例では、アプリケーション112は、記号||により表記されるように、[Ltrue,2]、[Lfalse,2]、およびアプリケーション112の公開鍵から合成メッセージを生成し、コンピューティングシステムMPC2の公開鍵を使用してこの合成メッセージを暗号化することができる。コンピューティングシステムMPC1からアプリケーション112への推測応答は、コンピューティングシステムMPC1によって決定される推測結果の第1のシェア[Lresult,1]およびコンピューティングシステムMPC2によって決定される推測結果の第2のシェア[Lresult,2]を含み得る。
第2のシェアがコンピューティングシステムMPC1によりアクセスされること、したがって、コンピューティングシステムMPC1が推測結果を平文で取得するのを可能にすることを防ぐために、コンピューティングシステムMPC2は、推測結果の第2のシェア[Lresult,2]の暗号化された(および任意選択でデジタル署名された)バージョン、たとえばPubKeySign(PubKeyEncrypt([Lresult,2], application_public_key), MPC2)を、アプリケーション112に送信される推測応答に含めるためにコンピューティングシステムMPC1に送信することができる。この例では、アプリケーション112は、デジタル署名を生成するために使用されるコンピューティングシステムMPC2の秘密鍵に対応するコンピューティングシステムMPC2の公開鍵を使用してデジタル署名を検証し、推測結果の第2のシェア[Lresult,2]を暗号化するために使用される公開鍵(application_public_key)に対応するアプリケーション112の秘密鍵を使用して推測結果の第2のシェア[Lresult,2]を復号することができる。
アプリケーション112は次いで、第1のシェア[Lresult,1]および第2のシェア[Lresult,2]から推測結果Lresultを再構築することができる。デジタル署名を使用することで、アプリケーション112は、たとえばコンピューティングシステムMPC1による、コンピューティングシステムMPC2からの結果の偽造を検出することが可能になる。望まれるセキュリティのレベル、どの関係者がMPCクラスタ130のコンピューティングシステムを運用するか、および想定されるセキュリティモデルによっては、デジタル署名は必要とされないことがある。
コンピューティングシステムMPC1およびMPC2は、MPC技法を使用して、二項分類結果のシェア[Lresult,1]および[Lresult,2]を決定することができる。二項分類において、ユーザプロファイルのためのlabel1の値は、0(偽)または1(真)のいずれかである。選択されたk個の最近傍が識別子{id1,...idk}によって識別されると仮定すると、コンピューティングシステムMPC1およびMPC2は、k個の最近傍ユーザプロファイルのためのラベルの合計(sum_of_labels)を計算することができ、合計は以下の関係3により表される。
関係3: sum_of_labels =Σi∈{id1,…idk}labeli
合計を得るために、コンピューティングシステムMPC1は、ID(すなわち、{id1,...idk})をコンピューティングシステムMPC2に送信する。コンピューティングシステムMPC2は、k-匿名性を確保するために、IDの中の行識別子の数が閾値より大きいことを検証することができる。コンピューティングシステムMPC2は次いで、以下の関係4を使用してラベルの合計の第2のシェア[sum_of_labels2]を計算することができる。
関係4: [sum_of_labels2] =Σi∈{id1,…idk}[labeli,2]
コンピューティングシステムMPC1はまた、以下の関係5を使用してラベルの合計の第1のシェア[sum_of_labels1]を計算することができる。
関係5: [sum_of_labels1] =Σi∈{id1,…idk}[labeli,1]
ラベルの合計sum_of_labelsが、コンピューティングシステムMPC1およびMPC2が可能な限り知るべきではない機密情報である場合、MPC1およびMPC2は、暗号プロトコルを実行して、sum_of_labels1<threshold×kであるかどうかを計算することができ、すなわち、コンピューティングシステムMPC1は、ラベルの合計の第1のシェア[sum_of_labels1]が閾値未満であるかどうか、たとえば、[below_threshold1]=[sum_of_labels1]<threshold×kであるかどうかを計算することができる。同様に、コンピューティングシステムMPC2は、ラベルの合計の第2のシェア[sum_of_labels2]が閾値未満であるかどうか、たとえば[below_threshold2] = [sum_of_labels2] < threshold×kであるかどうかを計算することができる。コンピューティングシステムMPC1は、[below_threshold1]×[Lfalse, 1]+(1-[below_threshold1])×[Ltrue, 1]によって推測結果[Lresult,1]を計算することに進むことができる。同様に、コンピューティングシステムMPC2は、[below_threshold2]×[Lfalse, 2]+(1-[below_threshold2])×[Ltrue, 2]によって[Lresult,2]を計算することができる。
ラベルの合計sum_of_labelsが機密情報ではない場合、コンピューティングシステムMPC1およびMPC2は、[sum_of_labels1]および[sum_of_labels2]からsum_of_labelsを再構築することができる。コンピューティングシステムMPC1およびMPC2は次いで、パラメータbelow_thresholdをsum_of_labels<threshold×kに、たとえば、閾値未満である場合には1という値に、または閾値未満ではない場合には0という値に設定することができる。
パラメータbelow_thresholdを計算した後、コンピューティングシステムMPC1およびMPC2は、推測結果Lresultを決定することに進むことができる。たとえば、コンピューティングシステムMPC2は、below_thresholdの値に従って、[Lresult,2]を[Ltrue,2]または[Lfalse,2]のいずれかに設定することができる。たとえば、コンピューティングシステムMPC2は、ラベルの合計が閾値未満ではない場合は[Lresult,2]を[Ltrue,2]に設定し、ラベルの合計が閾値未満である場合は[Lfalse,2]に設定することができる。コンピューティングシステムMPC2は次いで、推測結果の暗号化された第2のシェア(PubKeyEncrypt([Lresult,2], application_public_key))またはこの結果のデジタル署名されたバージョンをコンピューティングシステムMPC1に返すことができる。
同様に、コンピューティングシステムMPC1は、below_thresholdの値に従って、[Lresult,1]を[Ltrue,1]または[Lfalse,1]のいずれかに設定することができる。たとえば、コンピューティングシステムMPC1は、ラベルの合計が閾値未満ではない場合は[Lresult,1]を[Ltrue,1]に設定し、ラベルの合計が閾値未満である場合は[Lfalse,1]に設定することができる。コンピューティングシステムMPC1は、推測結果の第1のシェア[Lresult,1]および推測結果の暗号化された第2のシェア[Lresult,2]を、推測応答としてアプリケーション112に送信することができる。上で説明されたように、アプリケーション112は次いで、2つのシェアに基づいて推測結果を計算することができる。
例示的な多クラス分類推測技法
多クラス分類では、各ユーザプロファイルと関連付けられるラベルはカテゴリ特徴量であり得る。コンテンツプラットフォーム150は、あらゆるあり得るカテゴリ値を対応するユーザグループ識別子と対応付けるルックアップテーブルを指定することができる。ルックアップテーブルは、推測要求に含まれる集約関数パラメータのうちの1つであり得る。
見つかったk個の最近傍の中で、MPCクラスタ130は最頻のラベル値を見つける。MPCクラスタ130は次いで、ルックアップテーブルにおいて、最頻ラベル値に対応するユーザグループ識別子を見つけ、たとえばユーザグループ識別子をクライアントデバイス110に記憶されているユーザグループリストに追加することによって、ユーザグループ識別子に対応するユーザグループにユーザを追加するようにアプリケーション112に要求することができる。
二項分類と同様に、コンピューティングシステムMPC1およびMPC2から推測結果Lresultを隠すのが好ましいことがある。そうするために、アプリケーション112またはコンテンツプラットフォーム150は、カテゴリ値を推測結果Lresultのそれぞれのシェアに各々対応付ける2つのルックアップテーブルを作成することができる。たとえば、アプリケーションは、カテゴリ値を第1のシェア[Lresult1]に対応付ける第1のルックアップテーブルと、カテゴリ値を第2のシェア[Lresult2]に対応付ける第2のルックアップテーブルとを作成することができる。アプリケーションからコンピューティングシステムMPC1への推測要求は、コンピューティングシステムMPC1のための平文の第1のルックアップテーブルと、コンピューティングシステムMPC2のための第2のルックアップテーブルの暗号化されたバージョンとを含み得る。第2のルックアップテーブルは、コンピューティングシステムMPC2の公開鍵を使用して暗号化され得る。たとえば、第2のルックアップテーブルおよびアプリケーションの公開鍵を含む合成メッセージは、コンピューティングシステムMPC2の公開鍵、たとえばPubKeyEncrypt(lookuptable2 || application_public_key, MPC2)を使用して暗号化され得る。
コンピューティングシステムMPC1によって送信される推測応答は、コンピューティングシステムMPC1によって生成される推測結果の第1のシェア[Lresult1]を含み得る。二項分類と同様に、第2のシェアがコンピューティングシステムMPC1によりアクセスされること、したがって、コンピューティングシステムMPC1が推測結果を平文で取得するのを可能にすることを防ぐために、コンピューティングシステムMPC2は、推測結果の第2のシェア[Lresult,2]の暗号化された(および任意選択でデジタル署名された)バージョン、たとえばPubKeySign(PubKeyEncrypt([Lresult,2], application_public_key), MPC2)を、アプリケーション112に送信される推測結果に含めるためにコンピューティングシステムMPC1に送信することができる。アプリケーション112は、[Lresult1]および[Lresult2]から推測結果Lresultを再構築することができる。
多クラス分類問題に対して、w個の有効なラベル{l1,l2,...lw}があると仮定する。多クラス分類において推測結果Lresultのシェア[Lresult1]および[Lresult2]を決定するために、コンピューティングシステムMPC1はID(すなわち、{id1,...idk})をコンピューティングシステムMPC2に送信する。コンピューティングシステムMPC2は、k-匿名性を確保するために、IDの中の行識別子の数が閾値より大きいことを検証することができる。一般に、k-NNの中のkは、k-匿名性におけるkよりはるかに大きくてもよい。コンピューティングシステムMPC2は次いで、以下の関係6を使用して定義されるj番目のラベル[lj,2]の第2の頻度シェア[frequencyj,2]を計算することができる。
同様に、コンピューティングシステムMPC1は、以下の関係7を使用して定義されるj番目のラベル[lj,1]の第1の頻度シェア[frequencyj,1]を計算する。
k個の最近傍内のラベルの頻度(frequencyi)が取扱いに注意を要するものではないと仮定すると、コンピューティングシステムMPC1およびMPC2は、そのラベルのための2つのシェア[frequencyi,1]および[frequencyi,2]からfrequencyiを再構築することができる。コンピューティングシステムMPC1およびMPC2は次いで、インデックスパラメータ(index)を決定することができ、ここでfrequencyindexが最大の値を有し、たとえばindex=argmaxi(frequencyi)である。
コンピューティングシステムMPC2は次いで、ルックアップテーブルにおいて、最高の頻度を有するラベルに対応するシェア[Lresult,2]を探し、PubKeyEncrypt([Lresult,2], application_public_key)をコンピューティングシステムMPC1に返すことができる。コンピューティングシステムMPC1は同様に、ルックアップテーブルにおいて、最高の頻度を有するラベルに対応するシェア[Lresult,1]を探すことができる。コンピューティングシステムMPC1は次いで、2つのシェア(たとえば、[Lresult,1]およびPubKeyEncrypt([Lresult,2], application_public_key))を含む推測応答を、アプリケーション112に送信することができる。上で説明されたように、コンピューティングシステムMPC2の応答をコンピューティングシステムMPC1が偽装するのを防ぐために、第2のシェアがMPC2によってデジタル署名され得る。アプリケーション112は次いで、上で説明されたように、2つのシェアに基づいて推測結果を計算し、推測結果によって特定されるユーザグループにユーザを追加することができる。
例示的な回帰推測技法
回帰では、各ユーザプロファイルPと関連付けられるラベルは数値でなければならない。コンテンツプラットフォーム150は、閾値の順序付けられたリスト、たとえば(-∞< t0< t1<…< tn<∞)、およびユーザグループ識別子のリスト、たとえば{L0,L1,...Ln,Ln+1}を指定することができる。加えて、コンテンツプラットフォーム150は、集約関数、たとえば算術平均または二乗平均平方根を指定することができる。
見つかったk個の最近傍の中で、MPCクラスタ130は、ラベル値の平均(result)を計算し、そしてresultを使用して対応付けを探し、推測結果Lresultを見つける。たとえば、MPCクラスタ130は、以下の関係8を使用して、ラベル値の平均に基づいてラベルを特定することができる。
関係8:
result≦t0である場合、Lresult←L0
result>tnである場合、Lresult←Ln+1
tx<result≦tx+1である場合、Lresult←Lx+1
すなわち、resultが閾値t0以下である場合、推測結果LresultはL0である。resultが閾値tnより大きい場合、推測結果LresultはLn+1である。そうではなく、resultが閾値txより大きく、閾値tx+1以下である場合、推測結果LresultはLx+1である。コンピューティングシステムMPC1は次いで、たとえば、推測結果Lresultを含む推測応答をアプリケーション112に送信することによって、推測結果Lresultに対応するユーザグループにユーザを追加するようにアプリケーション112に要求する。
上で説明された他の分類技法と同様に、推測結果Lresultは、コンピューティングシステムMPC1およびMPC2から隠され得る。そうするために、アプリケーション112からの推測要求は、コンピューティングシステムMPC1のためのラベルの第1のシェア[Li,1]およびコンピューティングシステムMPC2のためのラベルの暗号化された第2のシェア[Li,2](たとえば、PubKeyEncrypt(L0,2 || … || Ln+1,2 || application_public_key, MPC2))を含み得る。
コンピューティングシステムMPC1によって送信される推測結果は、コンピューティングシステムMPC1によって生成される推測結果の第1のシェア[Lresult1]を含み得る。二項分類と同様に、第2のシェアがコンピューティングシステムMPC1によりアクセスされること、したがって、コンピューティングシステムMPC1が推測結果を平文で取得するのを可能にすることを防ぐために、コンピューティングシステムMPC2は、推測結果の第2のシェア[Lresult,2]の暗号化された(および任意選択でデジタル署名された)バージョン、たとえばPubKeySign(PubKeyEncrypt([Lresult,2], application_public_key), MPC2)を、アプリケーション112に送信される推測結果に含めるためにコンピューティングシステムMPC1に送信することができる。アプリケーション112は、[Lresult,1]および[Lresult,2]から推測結果Lresultを再構築することができる。
集約関数が算術平均であるとき、コンピューティングシステムMPC1およびMPC2は、二項分類と同様に、ラベルの合計sum_of_labelsを計算する。ラベルの合計が取扱いに注意を要するものではない場合、コンピューティングシステムMPC1およびMPC2は、2つのシェア[sum_of_lables1]および[sum_of_labels2]を計算し、そして2つのシェアに基づいてsum_of_labelsを再構築することができる。コンピューティングシステムMPC1およびMPC2は次いで、最近傍ラベルの量、たとえばkでラベルの合計を割ることによって、ラベルの平均を計算することができる。
コンピューティングシステムMPC1は次いで、関係8を使用してその平均を閾値と比較し、平均に対応するラベルの第1のシェアを特定し、第1のシェア[Lresult,1]を特定されたラベルの第1のシェアに設定することができる。同様に、コンピューティングシステムMPC2は、関係8を使用してその平均を閾値と比較し、平均に対応するラベルの第2のシェアを特定し、第2のシェア[Lresult,2]を特定されたラベルの第2のシェアに設定することができる。コンピューティングシステムMPC2は、アプリケーション112の公開鍵、たとえばPubKeyEncrypt([Lresult,2], application_public_key)を使用して第2のシェア[Lresult,2]を暗号化し、暗号化された第2のシェアをコンピューティングシステムMPC1に送信することができる。コンピューティングシステムMPC1は、第1のシェアおよび暗号化された第2のシェア(これは任意選択で上で説明されたようにデジタル署名され得る)をアプリケーション112に提供することができる。アプリケーション112は次いで、ラベル(たとえば、ユーザグループ識別子)Lresultによって特定されるユーザグループにユーザを追加することができる。
ラベルの合計が取扱いに注意を要するものである場合、コンピューティングシステムMPC1およびMPC2は、sum_of_labelsを平文で構築することが可能ではないことがある。代わりに、コンピューティングシステムMPC1は、すべてのi∈[0,n]に対してマスク[maski,1]=[sum_of_labels1]<ti×kを計算することができる。この計算は、コンピューティングシステムMPC1とMPC2との間の1つまたは複数のラウンドトリップを必要とし得る。次に、コンピューティングシステムMPC1は、
を計算することができ、コンピューティングシステムMPC2は、
を計算することができる。この演算における等値テストは、コンピューティングシステムMPC1とMPC2との間の複数のラウンドトリップを必要とし得る。
加えて、コンピューティングシステムMPC1は、
を計算することができ、コンピューティングシステムMPC2は、
を計算することができる。MPCクラスタ130は次いで、すべてのi∈[0,n]に対してacci==1である場合にのみLiを返し、use_default==1である場合Ln+1を返す。この条件は、以下の関係9により表され得る。
対応する暗号学的な実装形態は、以下の関係10および11により表され得る。
これらの計算は、Liが平文である場合、コンピューティングシステムMPC1とMPC2との間のどのようなラウンドトリップ計算も必要とせず、Liが秘密シェアの中にある場合、1つのラウンドトリップ計算を必要とする。コンピューティングシステムMPC1は、結果の2つのシェア(たとえば、[Lresult,1]および[Lresult,2])をアプリケーション112に提供することができ、上で説明されたように、第2のシェアは、MPC2によって暗号化され、任意選択でデジタル署名される。このようにして、アプリケーション112は、即刻のまたは最後の結果についてコンピューティングシステムMPC1またはMPC2が何も知ることなく、推測結果Lresultを決定することができる。
二乗平均平方根では、コンピューティングシステムMPC1は、ID(すなわち、{id1,...idk})をコンピューティングシステムMPC2に送信する。コンピューティングシステムMPC2は、k-匿名性を確保するために、IDの中の行識別子の数が閾値より大きいことを検証することができる。コンピューティングシステムMPC2は、以下の関係12を使用してsum_of_square_labelsパラメータ(たとえば、ラベル値の二乗の合計)の第2のシェアを計算することができる。
同様に、コンピューティングシステムMPC1は、以下の関係13を使用してsum_of_square_labelsパラメータの第1のシェアを計算することができる。
sum_of_square_labelsパラメータが取扱いに注意を要するものではないと仮定すると、コンピューティングシステムMPC1およびMPC2は、2つのシェア[sum_of_square_labels1]および[sum_of_square_labels2]からsum_of_square_labelsパラメータを再構築することができる。コンピューティングシステムMPC1およびMPC2は、最近傍ラベルの量、たとえばkでsum_of_squares_labelsを割り、次いで平方根を計算することによって、ラベルの二乗平均平方根を計算することができる。
平均が算術平均を介して計算されるか、または二乗平均平方根を介して計算されるかにかかわらず、コンピューティングシステムMPC1は次いで、関係8を使用して平均を閾値と比較して、平均に対応するラベルを特定し、第1のシェア[Lresult,1]を特定されたラベルに設定することができる。同様に、コンピューティングシステムMPC2は、関係8を使用してその平均を閾値と比較し、平均に対応するラベル(またはラベルの秘密シェア)を特定し、第2のシェア[Lresult,2]を特定されたラベル(の秘密シェア)に設定することができる。コンピューティングシステムMPC2は、アプリケーション112の公開鍵、たとえばPubKeyEncrypt([Lresult,2], application_public_key)を使用して第2のシェア[Lresult,2]を暗号化し、暗号化された第2のシェアをコンピューティングシステムMPC1に送信することができる。コンピューティングシステムMPC1は、推測結果として、第1のシェアおよび暗号化された第2のシェア(これは任意選択で上で説明されたようにデジタル署名され得る)をアプリケーション112に提供することができる。アプリケーション112は次いで、Lresultのラベル(たとえば、ユーザグループ識別子)によって特定されるユーザグループにユーザを追加することができる。sum_of_square_labelsパラメータが取扱いに注意を要するものである場合、コンピューティングシステムMPC1およびMPC2は、算術平均の例において使用されるものと同様の暗号プロトコルを実行して、推測結果のシェアを計算することができる。
分類および回帰問題の結果を推測するための上記の技法において、すべてのk個の最近傍は、最終的な推測結果に対して等しい影響、たとえば等しい重みを有する。多くの分類および回帰問題では、k個の近傍の各々が、近傍とクエリパラメータPiとの間のハミング距離が増大すると単調減少する重みを割り当てられる場合、モデル品質は改善され得る。この性質を伴う一般的なカーネル関数は、Epanechnikov(放物線)カーネル関数である。ハミング距離と重みの両方が、平文で計算され得る。
疎特徴ベクトルユーザプロファイル
電子リソースの特徴がユーザプロファイルに含まれ、機械学習モデルを生成するために使用されるとき、得られる特徴ベクトルは、ドメイン、URL、およびIPアドレスなどの、高濃度のカテゴリ特徴量を含み得る。これらの特徴ベクトルは疎であり、要素の大半が0という値を有する。アプリケーション112は、2つ以上の密特徴ベクトルへと特徴ベクトルを分割し得るが、機械学習プラットフォームは、実用的であるにはあまりにも多くのクライアントデバイスのアップロード帯域幅を消費するであろう。この問題を防ぐために、上で説明されたシステムおよび技法は、疎特徴ベクトルをよりうまく扱うように適合され得る。
クライアントデバイスにイベントのための特徴ベクトルを提供するとき、電子リソースに含まれるコンテンツプラットフォーム150のコンピュータ可読コード(たとえば、スクリプト)は、イベントのための特徴ベクトルを指定するためにアプリケーション(たとえば、ブラウザ)APIを呼び出すことができる。このコード、またはコンテンツプラットフォーム150は、特徴ベクトル(のある部分)が密であるか疎であるかを決定することができる。特徴ベクトル(またはそのある部分)が密である場合、コードはAPIパラメータとして数値のベクトルを渡すことができる。特徴ベクトル(またはその一部)が疎である場合、コードは、マップ、たとえば、特徴値が0ではない特徴要素のためのインデクシングされた鍵/値のペアを渡すことができ、鍵はそのような特徴要素の名称またはインデックスである。特徴ベクトル(またはその一部)が疎であり、0ではない特徴値が常に同じ値、たとえば1である場合、コードは集合を渡すことができ、その集合の要素はそのような特徴要素の名称またはインデックスである。
特徴ベクトルを集約してユーザプロファイルを生成するとき、アプリケーション112は、密特徴ベクトルと疎特徴ベクトルを異なるように扱うことができる。密ベクトルから計算されたユーザプロファイル(またはその一部)は、密ベクトルのままである。マップから計算されたユーザプロファイル(またはその一部)は、マップがストレージコストをこれ以上節約しないほど十分にフィルレートが高くなるまで、マップのままである。その時点で、アプリケーション112は、疎ベクトル表現を密ベクトル表現へと変換する。
集合から計算されたユーザプロファイル(またはその一部)は、集約関数が合計である場合、マップであり得る。たとえば、各特徴ベクトルは、カテゴリ特徴量「domain visited」を有し得る。集約関数、すなわち合計は、ユーザが発行者ドメインを訪れた回数を計算する。集合から計算されたユーザプロファイル(またはその一部)は、集約関数が論理和である場合、集合のままであり得る。たとえば、各特徴ベクトルは、カテゴリ特徴量「domain visited」を有し得る。集約関数、すなわち論理和は、訪問の頻度とは無関係に、ユーザが訪れたすべての発行者ドメインを計算する。
ML訓練および予測のためにMPCクラスタ130にユーザプロファイルを送信するために、アプリケーション112は、秘密シェアをサポートする任意の標準的な暗号ライブラリを用いてユーザプロファイルの密な部分を分割し得る。クライアントデバイスのアップロード帯域幅および計算コストを大きく増やすことなくユーザプロファイルの疎な部分を分割するために、Function Secret Sharing(FSS)技法が使用され得る。この例では、コンテンツプラットフォーム150は、1から始まって逐次、ユーザプロファイルの疎な部分の中の各々のあり得る要素に一意なインデックスを割り当てる。インデックスの有効な範囲は、両端を含めて[1,N]の範囲にあると仮定する。
アプリケーションによって計算されるユーザプロファイルの中の0ではない値Piを伴うi番目の要素に対して、1≦i≦Nとすると、アプリケーション112は、以下の性質を伴う2つの疑似ランダム関数(PRF)giおよびhiを作成することができる。
1≦j≦Nかつj≠iであるあらゆるjに対して、gi(j)+hi(j)=0
それ以外の場合、gi(j)+hi(j)=Pi
FSSを使用すると、giまたはhiのいずれかを、たとえばlog2(N)×size_of_tagビットで正確に表すことができ、giまたはhiのいずれかからiまたはPiを推測するのは不可能である。ブルートフォースセキュリティ攻撃を防ぐために、size_of_tagは通常は96ビット以上である。N個の次元の中に、0ではない値を伴うn個の次元があると仮定し、n<<Nである。n個の次元の各々に対して、アプリケーション112は、上で説明されたような2つの疑似ランダム関数gおよびhを構築することができる。さらに、アプリケーション112は、すべてのn個の関数gの正確な表現をベクトルGへと詰め込み、n個の関数hの正確な表現を同じ順序で別のベクトルHへと詰め込むことができる。
加えて、アプリケーション112は、ユーザプロファイルPの密な部分を2つの追加の秘密シェア[P1]および[P2]に分割することができる。アプリケーション112は次いで、[P1]およびGをコンピューティングシステムMPC1に送信し、[P2]およびHをMPC2に送信することができる。Gを送信することは、|G|×log2(N)×size_of_tag=n×log2(N)×size_of_tagビットを必要とし、これは、n<<Nであるとき、アプリケーション112が密なベクトルにおいてユーザプロファイルの疎な部分を送信する場合に必要とされるNビットよりはるかに少ないことがある。
コンピューティングシステムMPC1がg1を受信し、コンピューティングシステムMPC2がh1を受信するとき、2つのコンピューティングシステムMPC1およびMPC2は、Shamirの秘密シェアを独立に作成することができる。1≦j≦Nであるあらゆるjに対して、コンピューティングシステムMPC1は2次元座標[1,2×gi(j)]上の点を作成し、コンピューティングシステムMPC2は2次元座標[-1,2×hi(j)]上の点を作成する。2つのコンピューティングシステムMPC1およびMPC2が連携して、両方の点を通る線y=a0+a1×xを構築する場合、関係14および15が形成される。
関係14: 2×gi(j)=a0+a1
関係15: 2×hi(j)=a0-a1
2つの関係が一緒に加算される場合、それは2×gi(j)+2×hi(j)=(a0+a1)+(a0-a1)をもたらし、これはa0=gi(j)+hi(j)と簡略化される。したがって、[1,2×gi(j)]および[-1,2×hi(j)]は、疎アレイの中のi番目の0ではない要素、すなわちPiの2つの秘密シェアである。
機械学習訓練プロセスのランダム投影動作の間に、コンピューティングシステムMPC1は、[P1]とGの両方からユーザプロファイルのための秘密シェアのベクトルを独立に組み立てることができる。上記の説明により、|G|=nであることが知られており、nはユーザプロファイルの疎な部分の中の0ではない要素の数である。加えて、ユーザプロファイルの疎な部分がN次元であり、n<<Nであることが知られている。
G={g1,…gn}であると仮定する。1≦j≦Nであるj番目の次元、および1≦k≦nに対して、
とする。同様に、H={h1,…hn}とする。コンピューティングシステムMPC2は、
を独立に計算することができる。[SPj,1]および[SPj,2]がSPjの追加の秘密シェアであること、すなわちユーザプロファイルの元の疎な部分の中のj番目の要素の秘密値であることを証明するのは、簡単である。
[SP1]={[SP1,1],…[SPN,1]}、すなわち、ユーザプロファイルの疎な部分の密な表現における再構築された秘密シェアであるとする。[P1]および[SP1]を連結することによって、コンピューティングシステムMPC1は、元のユーザプロファイルの完全な秘密シェアを再構築することができる。コンピューティングシステムMPC1は次いで、[P1] || [SP1]をランダムに投影することができる。同様に、コンピューティングシステムMPC2は、[P2] || [SP2]をランダムに投影することができる。投影の後、上で説明された技法が、同様の方式で機械学習モデルを生成するために使用され得る。
図6は、システム600におけるユーザプロファイルに対する推測結果を生成するための例示的な枠組みの概念図である。より具体的には、図は、システム600を集合的に構成するランダム投影論理610、第1の機械学習モデル620、および最終結果計算論理640を示す。いくつかの実装形態では、システム600の機能は、MPCクラスタの中の複数のコンピューティングシステムによって、セキュアで分散された方式で提供され得る。システム600を参照して説明された技法は、たとえば、図2~図5を参照して上で説明されたものと同様であり得る。たとえば、ランダム投影論理610と関連付けられる機能は、図2および図4を参照して上で説明されたランダム投影技法のうちの1つまたは複数の機能に対応し得る。同様に、いくつかの例では、第1の機械学習モデル620は、ステップ214、414、および504に関連して上で説明されたもののうちの1つまたは複数などの、図2、図4、および図5を参照して上で説明された機械学習モデルのうちの1つまたは複数に対応し得る。いくつかの例では、第1の機械学習モデル620によって維持および利用され、1つまたは複数のメモリユニットに記憶され得る、暗号化されたラベルデータセット626は、図5のステップ506を参照して上で説明されたようなk最近傍プロファイルと関連付けられ得るものなどの、第1の機械学習モデル620を生成もしくは訓練するために、またはそれを訓練する品質を評価するために、またはそれを訓練するプロセスを微調整するために使用される、各ユーザプロファイルのための少なくとも1つの真のラベルを含み得る。すなわち、暗号化されたラベルデータセット626は、n個のユーザプロファイルの各々のために少なくとも1つの真のラベルを含んでもよく、nは第1の機械学習モデル620を訓練するために使用されたユーザプロファイルの総数である。たとえば、暗号化されたラベルデータセット626は、n個のユーザプロファイルの中のj番目のユーザプロファイル(Pj)のための少なくとも1つの真のラベル(Lj)、n個のユーザプロファイルの中のk番目のユーザプロファイル(Pk)のための少なくとも1つの真のラベル(Lk)、n個のユーザプロファイルの中のl番目のユーザプロファイル(Pl)のための少なくとも1つの真のラベル(Ll)を含んでもよく、1≦
j,k,l≦nであり、以下同様である。第1の機械学習モデル620を生成または訓練するために使用されたユーザプロファイルと関連付けられ、暗号化されたラベルデータセット626の一部として含まれるような真のラベルは、暗号化され、たとえば秘密シェアとして表され得る。加えて、いくつかの例では、最終結果計算論理640は、図2のステップ218を参照して上で説明されたもののうちの1つまたは複数などの、推測結果を生成するための1つまたは複数の動作を実行することに関連して利用される論理に対応し得る。第1の機械学習モデル620および最終結果計算論理640は、二項分類、回帰、および/または多クラス分類技法を含む1つまたは複数の推測技法を利用するように構成され得る。
図6の例では、システム600は、推測時間において1つまたは複数の動作を実行するものとして図示される。ランダム投影論理610は、ランダム投影変換をユーザプロファイル609(Pi)に適用して、変換されたユーザプロファイル619(Pi')を取得するために利用され得る。ランダム投影論理610を利用することによって得られるような変換されたユーザプロファイル619は、平文であり得る。たとえば、ランダム投影論理610は、ユーザのプライバシーを保護するためのランダムノイズを用いて、ユーザプロファイル609および他のユーザプロファイルに含まれまたはそれらにおいて示される特徴ベクトルなどの特徴ベクトルを難読化することを少なくとも一部目的として、利用され得る。
第1の機械学習モデル620は、変換されたユーザプロファイル619を入力として受け取り、それに応答して少なくとも1つの予測されるラベル629
を生成するように訓練され、続いて活用され得る。第1の機械学習モデル620を使用して得られるような、少なくとも1つの予測されるラベル629は、暗号化され得る。いくつかの実装形態では、第1の機械学習モデル620は、k最近傍(k-NN)モデル622およびラベル予測器624を含む。そのような実装形態では、k-NNモデル622は、変換されたユーザプロファイル619に最も似ていると見なされる最近傍ユーザプロファイルの数kを特定するために、第1の機械学習モデル620によって利用され得る。いくつかの例では、1つまたは複数のプロトタイプ方法に根ざしたものなどの、k-NNモデル以外のモデルが、モデル622として利用されてもよい。ラベル予測器624は次いで、暗号化されたラベルデータセット626に含まれる真のラベルの中から、k個の最近傍ユーザプロファイルの各々に対する真のラベルを特定し、特定されたラベルに基づいて少なくとも1つの予測されるラベル629を決定することができる。いくつの実装形態では、ラベル予測器624は、少なくとも1つの予測されるラベル629を決定する際に受信および/または生成するデータに、ソフトマックス関数を適用することができる。
第1の機械学習モデル620および最終結果計算論理640が回帰技法を利用するように構成される実装形態では、少なくとも1つの予測されるラベル629は、たとえば、ラベル予測器624によって決定されるようなk個の最近傍ユーザプロファイルに対する真のラベルの合計などの、整数を表す単一のラベルに対応し得る。ラベル予測器624によって決定されるような、k個の最近傍ユーザプロファイルに対する真のラベルのそのような合計は、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価である。同様に、第1の機械学習モデル620および最終結果計算論理640が二項分類技法を利用するように構成される実装形態では、少なくとも1つの予測されるラベル629は、たとえば、そのような合計に少なくとも一部基づいてラベル予測器624によって決定される整数を表す単一のラベルに対応し得る。二項分類の場合、k個の最近傍ユーザプロファイルに対する真のラベルの各々は、0または1のいずれかのバイナリ値であり得るので、前述の平均は、たとえば、第1の機械学習モデル620によって入力されるような受信されたユーザプロファイル(たとえば、変換されたユーザプロファイル619)に対する真のラベルが1に等しい予測される確率を実質的に表す、0と1の間の整数値(たとえば、0.3、0.8など)であり得る。第1の機械学習モデル620と最終結果計算論理640が回帰技法を利用するように構成される実装形態、ならびに、第1の機械学習モデル620と最終結果計算論理640が二項分類技法を利用するように構成される実装形態に対する、少なくとも1つの予測されるラベル629の性質と、および少なくとも1つの予測されるラベル629が決定され得る方法とに関する追加の詳細が、図9~図11を参照して以下で提供される。
第1の機械学習モデル620および最終結果計算論理640が多クラス分類技法を利用するように構成される実装形態では、少なくとも1つの予測されるラベル629は、ラベル予測器624によって決定されるようなベクトルまたは予測されるラベルのセットに対応し得る。そのようなベクトルまたは予測されるラベルのセットの中の各々の予測されるラベルは、それぞれのカテゴリに対応してもよく、少なくとも一部、多数決で、または、ラベル予測器624によって決定されるような、ベクトルの中のそれぞれのカテゴリに対応する真のラベルもしくはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットが第1の値(たとえば、1)の真のラベルである頻度に基づいて、ラベル予測器624によって決定されてもよい。多クラス分類の場合、二項分類のように、各ベクトルの中の各々の真のラベルまたはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットは、0または1のいずれかのバイナリ値であり得る。第1の機械学習モデル620と最終結果計算論理640が多クラス分類技法を利用するように構成される実装形態に対する、少なくとも1つの予測されるラベル629の性質、および少なくとも1つの予測されるラベル629が決定され得る方法に関する追加の詳細が、図9~図11を参照して以下で提供される。
最終結果計算論理640は、少なくとも1つの予測されるラベル629に基づいて推測結果649(Resulti)を生成するために利用され得る。たとえば、最終結果計算論理640は、1つまたは複数の閾値に対して少なくとも1つの予測されるラベル629を評価し、評価結果に基づいて推測結果649を決定するために利用され得る。いくつかの例では、推測結果649は、ユーザプロファイル609と関連付けられるユーザが1つまたは複数のユーザグループに追加されるべきかどうかを示すものであり得る。いくつかの実装形態では、少なくとも1つの予測されるラベル629は、推測結果649に含まれ、またはそれにおいて別様に示され得る。
いくつかの実装形態では、図6に示されるように、システム600は、図1のMPCクラスタ130などのMPCクラスタによって実装されるようなシステムを表すことができる。したがって、これらの実装形態の少なくともいくつかでは、図6に示される要素を参照して本明細書において説明される機能の一部またはすべてが、MPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得ることが理解されるべきである。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、図6を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、図6を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、選択された秘密シェアアルゴリズムを実装するように並列に動作してもよい。前述の実装形態の少なくともいくつかでは、ユーザプロファイル609は、ユーザプロファイルのシェアを表し得る。そのような実装形態では、他のデータまたは図6を参照して本明細書において説明される量のうちの1つまたは複数も、それらの秘密シェアを表すものであり得る。図6を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。一般に、以下で、および本明細書の他の箇所で記述されるような「シェア」は、少なくともいくつかの実装形態では、秘密シェアに相当し得る。
k-NNモデル622などのk-NNモデルのための訓練プロセスは、ラベルの知識が必要とされないという点で比較的高速であり簡単であり得るが、そのようなモデルの品質は、いくつかの状況では改善の余地を残していることがある。したがって、いくつかの実装形態では、以下でさらに詳しく説明されるシステムおよび技法のうちの1つまたは複数が、第1の機械学習モデル620の性能を向上させるために活用され得る。
図7は、システム700における、性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的な枠組みの概念図である。いくつかの実装形態では、図7に示されるような要素609~629のうちの1つまたは複数は、それぞれ、図6を参照して上で説明されたような要素609~629のうちの1つまたは複数と同様であり、または等価であり得る。システム600のように、システム700は、ランダム投影論理610および第1の機械学習モデル620を含み、推測時間において1つまたは複数の動作を実行するものとして示されている。
しかしながら、システム600とは異なり、システム700はさらに、変換されたユーザプロファイル619を入力として受信し、少なくとも1つの予測されるラベル629の予測される誤差の量を示す予測される残差値739(Residuei)を出力として生成することによって、第1の機械学習モデル620の性能を向上させるために訓練され、続いて活用される、第2の機械学習モデル730を含む。第2の機械学習モデル730を使用して得られるような、予測される残差値739は、平文であり得る。最終結果計算論理640の代わりにシステム700に含まれる最終結果計算論理740は、少なくとも1つの予測されるラベル629に基づいて、かつ予測される残差値739にさらに基づいて、推測結果749(Resulti)を生成するために利用され得る。予測される残差値739が少なくとも1つの予測されるラベル629の予測される誤差の量を示すものであると仮定すると、少なくとも1つの予測されるラベル629と、予測される残差値739を併せて利用することで、最終結果計算論理740が、少なくとも1つの予測されるラベル629に現れ得る誤差の少なくとも一部を実質的にオフセットし、または打ち消すことが可能になり得るので、システム700により生み出される推測結果749の正確さと信頼性の一方または両方が向上する。
たとえば、最終結果計算論理740は、少なくとも1つの予測されるラベル629と予測される残差値739の合計を計算するために利用され得る。いくつかの例では、最終結果計算論理740はさらに、1つまたは複数の閾値に対してそのような計算された合計を評価し、評価の結果に基づいて推測結果749を決定するために利用され得る。いくつかの実装形態では、少なくとも1つの予測されるラベル629と予測される残差値739のそのような計算された合計が、図6の推測結果649または図7の推測結果749に含まれてもよく、もしくはそれらにおいて別様に示されてもよい。
第2の機械学習モデル730は、ディープニューラルネットワーク(DNN)、勾配ブースティング決定木、およびランダムフォレストモデルのうちの1つまたは複数を含んでもよく、またはそれらに相当してもよい。すなわち、第1の機械学習モデル620および第2の機械学習モデル730は、アーキテクチャが互いに異なり得る。いくつかの実装形態では、第2の機械学習モデル730は、1つまたは複数の勾配ブースティングアルゴリズム、1つまたは複数の勾配降下アルゴリズム、またはこれらの組合せを使用して訓練され得る。
第2の機械学習モデル730は、第1の機械学習モデル620を訓練するために使用されたのと同じユーザプロファイルのセット、および、第1の機械学習モデル620を使用して決定されるようなユーザプロファイルのそのようなセットに対する真のラベルとユーザプロファイルのそのようなセットに対する予測されるラベルとの差を示すデータを使用して、訓練され得る。したがって、第2の機械学習モデル730を訓練するプロセスは、第1の機械学習モデル620を訓練するプロセスの少なくとも一部分が実行された後で実行される。第1の機械学習モデル620を使用して決定される予測されるラベルと真のラベルとの差を示すデータなどの、第2の機械学習モデル730を訓練するために使用されるデータは、訓練される第1の機械学習モデル620の性能を評価するプロセスを通じて生成され、または別様に取得され得る。そのようなプロセスの例は、図10~図11を参照して以下でさらに詳しく説明される。
上で言及されたように、システム600および700に含まれるようなランダム投影論理610は、ユーザのプライバシーを保護するためのランダムノイズを用いて、ユーザプロファイル609および他のユーザプロファイルに含まれまたはそれらにおいて示される特徴ベクトルなどの特徴ベクトルを難読化することを少なくとも一部目的として、利用され得る。機械学習訓練および予測を可能にするために、ランダム投影論理610によって適用されるランダム投影変換は、特徴ベクトル間の距離という概念を維持する必要がある。ランダム投影論理610において利用され得るランダム投影技法の一例は、SimHash技法を含む。この技法および上で説明された他の技法は、そのような特徴ベクトル間のコサイン距離を維持しながら、特徴ベクトルを難読化する役割を果たすことができる。
第1の機械学習モデル620のk-NNモデル622などのk-NNモデルを訓練して使用するには、特徴ベクトル間のコサイン距離の維持で十分であることが判明することがあるが、それは、第2の機械学習モデル730の1つまたは複数のモデルなどの、他のタイプのモデルを訓練して使用するにはあまり理想的ではないことがある。したがって、いくつかの実装形態では、そのような特徴ベクトル間の幾何学的距離を維持しながら、特徴ベクトルを難読化する役割を果たすことができる、ランダム投影論理610の中のランダム投影技法を利用するのが望ましいことがある。そのようなランダム投影技法の一例は、Johnson-Lindenstrauss(J-L)技法または変換を含む。
上で言及されたように、J-L変換の1つの性質は、特徴ベクトル間の幾何学的距離をある確率で維持するというものである。加えて、J-L変換は有損失であり、不可逆であり、ランダムノイズを含む。したがって、2つ以上のサーバまたはMPCクラスタのコンピューティングシステムが共謀したとしても、それらは、J-L変換技法を使用して得られたユーザプロファイルの変換されたバージョン(Pi')から、元のユーザプロファイル(Pi)の厳密な再構築を得ることが可能ではない。このようにして、本明細書において説明されるシステムのうちの1つまたは複数においてユーザプロファイルを変換する目的でJ-L変換技法を利用することは、ユーザプライバシーの保護をもたらす役割を果たし得る。さらに、J-L変換技法は、次元低減技法として使用され得る。したがって、本明細書において説明されるシステムのうちの1つまたは複数においてユーザプロファイルを変換する目的でJ-L変換技法を利用することの1つの有利な副産物は、後続の処理ステップがそのようなシステムによって実行され得る速度を大きく向上させる役割を実際に果たし得るということである。
一般に、任意の小さいε>0が与えられると、任意の1≦i,j≦nに対して、PiをPi'に、PjをPj'に変換するために適用され得るJ-L変換が存在し、nは訓練の例の数であり、
(1-ε)×|Pi-Pj|2≦|Pi'-Pj'|2≦(1+ε)×|Pi-Pj|2
である。すなわち、J-L変換を適用することは、2つの任意に選択された訓練の例の間の幾何学的距離を、ごく少量のεより大きく変えることはないことがある。少なくとも前述の理由で、いくつかの実装形態では、J-L変換技法が、本明細書において説明されたようなランダム投影論理610において利用され得る。
いくつかの実装形態では、図7に示されるように、システム700は、図1のMPCクラスタ130などのMPCクラスタによって実装されるようなシステムを表すことができる。したがって、これらの実装形態の少なくともいくつかでは、図7に示される要素を参照して本明細書において説明される機能の一部またはすべてが、MPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得ることが理解されるべきである。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、図7を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、図7を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、選択された秘密シェアアルゴリズムを実装するように並列に動作してもよい。前述の実装形態の少なくともいくつかでは、ユーザプロファイル609は、ユーザプロファイルの秘密シェアを表し得る。そのような実装形態では、他のデータまたは図7を参照して本明細書において説明される量のうちの1つまたは複数も、それらの秘密シェアを表すものであり得る。図7を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。
図8は、MPCクラスタにおける性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的なプロセス800を示す流れ図である。図8を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。プロセス800の動作は、たとえば図1のMPCクラスタ130などのMPCクラスタによって実施されてもよく、図7を参照して上で説明された動作の1つまたは複数にも対応してもよい。図8を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。
いくつかの実装形態では、図8に示される要素を参照して本明細書において説明される機能の一部またはすべてが、図1のMPCクラスタ130などのMPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得る。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、図8を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、図8を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、選択された秘密シェアアルゴリズムを実装するように並列に動作してもよい。図8を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。プロセス800の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス800の動作を実行させ得る。
MPCクラスタは、特定のユーザプロファイルと関連付けられる推測要求を受信する(802)。たとえば、これは、図1を参照して上で説明されたような、MPCクラスタ130がアプリケーション112から推測要求を受信することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
MPCクラスタは、特定のユーザプロファイルと、複数のユーザプロファイルを使用して訓練される第1の機械学習モデルと、および複数のユーザプロファイルに対する複数の真のラベルのうちの1つまたは複数に基づいて、特定のユーザプロファイルのための予測されるラベルとを決定する(804)。本明細書において説明されるようなラベルは、属性ベースのユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。たとえば、これは、図6~図7を参照して上で説明されたように、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
この例では、複数のユーザプロファイルに対する複数の真のラベルは、暗号化されたラベルデータ626の一部として含まれる真のラベルに対応してもよく、それらは、第1の機械学習モデル620を訓練するために使用された複数のユーザプロファイルに対する真のラベルである。特定のユーザプロファイルに対する予測されるラベルの決定がそれに基づく、複数の真のラベルのうちの1つまたは複数の真のラベルは、たとえば、第1の機械学習モデル620のk-NNモデル622によって特定されるk個の最近傍ユーザプロファイルの各々に対する少なくとも1つの真のラベルを含み得る。いくつかの例では、複数の真のラベルの各々は、図6~図7の例と同じように暗号化される。k個の最近傍ユーザプロファイルに対する真のラベルが予測されるラベルを決定するために活用され得る様々な方法のうちのいくつかが、上で詳しく説明された。上記において明らかにされたように、そのような真のラベルが予測されるラベルを決定するために活用される方法または方式は、利用される推測技法のタイプ(たとえば、回帰技法、二項分類技法、多クラス分類技法など)に少なくとも一部依存し得る。
MPCクラスタは、特定のユーザプロファイル、複数のユーザプロファイルを使用して訓練された第2の機械学習モデル、および複数のユーザプロファイルに対する複数の真のラベルと、第1の機械学習モデルを使用して複数のユーザプロファイルに対して決定されるような複数の予測されるラベルとの間の差を示すデータに基づいて、予測されるラベルにおける予測される誤差を示す予測される残差値を決定する(806)。たとえば、これは、図7を参照して上で説明されたような、第2の機械学習モデル730が予測される残差値739(Residuei)を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの実装形態では、第2の機械学習モデルは、ディープニューラルネットワーク、勾配ブースティング決定木、およびランダムフォレストモデルのうちの少なくとも1つを含む。
MPCクラスタは、予測されるラベルおよび予測される残差値に基づいて推測結果を表すデータを生成する(808)。たとえば、これは、図7を参照して上で説明されたような、最終結果計算論理740が推測結果749(Resulti)を生成するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの例では、推測結果は、予測されるラベルと予測される残差値の合計を含み、またはそれに対応する。
MPCクラスタは、推測結果を表すデータをクライアントデバイスに提供する(810)。たとえば、これは、図1-2を参照して上で説明されたような、アプリケーション112が実行されるクライアントデバイス110にMPCクラスタ130が推測結果を提供することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
いくつかの実装形態では、プロセス800はさらに、MPCクラスタが変換を特定のユーザプロファイルに適用して特定のユーザプロファイルの変換されたバージョンを取得するような、1つまたは複数の動作を含む。これらの実装形態では、予測されるラベルを決定するために、MPCクラスタは、特定のユーザプロファイルの変換されたバージョンに少なくとも一部基づいて、予測されるラベルを決定する。たとえば、これは、図6-7を参照して上で説明されたような、ランダム投影変換をユーザプロファイル609(Pi)に適用して変換されたユーザプロファイル619(Pi')を取得するためにランダム投影論理610が利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの例では、前述の変換はランダム投影であり得る。さらに、これらの例の少なくともいくつかにおいて、前述のランダム投影は、Johnson-Lindenstrauss(J-L)変換であり得る。前述の実装形態の少なくともいくつかでは、予測されるラベルを決定するために、MPCクラスタは、特定のユーザプロファイルの変換されたバージョンを入力として第1の機械学習モデルに提供して、特定のユーザプロファイルに対する予測されるラベルを出力として取得する。たとえば、これは、図6~図7を参照して上で説明されたように、第1の機械学習モデル620が変換されたユーザプロファイル619(Pi')を入力として受信し、それに応答して少なくとも1つの予測されるラベル629
を生成することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
上で言及されたように、いくつかの実装形態では、第1の機械学習モデルはk最近傍モデルを含む。これらの実装形態の少なくともいくつかでは、予測されるラベルを決定するために、MPCクラスタは、特定のユーザプロファイルおよびk最近傍モデルに少なくとも一部基づいて、複数のユーザプロファイルの中で特定のユーザプロファイルに最も似ていると見なされる最近傍ユーザプロファイルの数kを特定し、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて、予測されるラベルを決定する。いくつかのそのような実装形態では、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、図6~図7を参照して上で説明されたように、1つまたは複数の回帰および/または二項分類技法が利用される1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの例では、予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を含み、またはそれに対応する。
前述の実装形態のいくつかでは、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、それぞれ、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットを決定し、予測されるラベルのセットを決定するために、MPCクラスタはセットの中の各カテゴリに対する動作を実行する。そのような動作は、MPCクラスタが、多数決を決定するような、またはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するような、1つまたは複数の動作を含み得る。たとえば、これは、図6~図7を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用されるような1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
図9は、MPCクラスタにおける推測性能を向上させるための第2の機械学習モデルを準備してその訓練を行うための例示的なプロセス900を示す流れ図である。プロセス900の動作は、たとえば図1のMPCクラスタ130などのMPCクラスタによって実施されてもよく、図2、図4、図6、および図7を参照して上で説明された動作の1つまたは複数にも対応してもよい。いくつかの実装形態では、図9に示される要素を参照して本明細書において説明される機能の一部またはすべてが、図1のMPCクラスタ130などのMPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得る。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、図9を参照して本明細書において説明される機能のそれぞれの秘密シェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、図9を参照して本明細書において説明されるものと同様の、または等価な動作を連携して実行するために、選択された秘密シェアアルゴリズムを実装するように並列に動作してもよい。図9を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。プロセス900の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス900の動作を実行させ得る。
MPCクラスタは、複数のユーザプロファイルを使用して第1の機械学習モデルを訓練する(910)。たとえば、上で説明されたように、第1の機械学習モデルは、第1の機械学習モデル620に対応し得る。同様に、上で説明されたように、第1の機械学習モデルの訓練において使用される複数のユーザプロファイルは、第1の機械学習モデル620を訓練するために使用されるn個のユーザプロファイルに相当してもよく、そのための真のラベルは、暗号化されたラベルデータセット626に含まれてもよい。本明細書において説明されるようなラベルは、ユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。
MPCクラスタは、複数のユーザプロファイルを使用して訓練されるような第1の機械学習モデルの性能を評価する(920)。そのような評価が何を伴い得るかに関する追加の詳細が、図10~図11を参照して以下で与えられる。
いくつかの実装形態では、そのような評価において生成されるデータは、第1の機械学習モデル620などの第1の機械学習モデルの性能が、たとえば、第2の機械学習モデル730などの第2の機械学習モデルによるブースティングを保証するかどうかを決定するために、MPCクラスタまたはMPCクラスタと通信している別のシステムによって利用され得る。このように利用され得るそのような評価において生成されるデータの例は、図10のプロファイルおよび残差データセット1070ならびに図11のステップ1112を参照して以下でさらに詳しく説明される。
たとえば、いくつかの状況では、MPCクラスタまたはMPCクラスタと通信している別のシステムは、そのような評価において生成されるデータに基づいて、第1の機械学習モデルの性能(たとえば、予測の正確さ)が1つまたは複数の閾値を満たし、したがってブースティングを保証しないと決定し得る。そのような状況では、MPCクラスタは、この決定に基づいて第2の機械学習モデルを訓練して実装するのを控え得る。しかしながら、他の状況では、MPCクラスタまたはMPCクラスタと通信している別のシステムは、そのような評価において生成されるデータに基づいて、第1の機械学習モデルの性能(たとえば、予測の正確さ)が1つまたは複数の閾値を満たし、したがってブースティングを保証すると決定し得る。これらの状況では、MPCクラスタは、この決定に基づいて、図6から図7を参照して上で説明されたような、システム600からシステム700に遷移する際に得られる機能の向上に匹敵する、機能の向上を受けることができる。そのような機能の向上を受けるために、MPCクラスタは、第1の機械学習モデルの性能を高めるために、第2の機械学習モデル730などの第2の機械学習モデルを訓練して実装することに進み得る。いくつかの例では、そのような評価において生成されるデータは、追加または代替として、MPCクラスタと関連付けられる1つまたは複数のエンティティに提供され得る。いくつかのそのような例では、1つまたは複数のエンティティは、第1の機械学習モデルの性能がブースティングを保証するかどうかに関する固有の決定を行い、それに従って進行することができる。他の構成も可能である。
MPCクラスタは、第2の機械学習モデルを訓練するために、第1の機械学習モデルの性能の評価において生成されるデータを含むデータのセットを使用する(930)。そのようなデータの例は、図10のプロファイルおよび残差データセット1070ならびに図11のステップ1112を参照して以下で説明されるものを含み得る。
いくつかの実装形態では、プロセス900はさらに追加のステップ912~916を含み、それらは以下でさらに詳しく説明される。そのような実装形態では、ステップ912~916は、ステップ920および930の前に実行されるが、ステップ910の後に実行され得る。
図10は、システム1000における第1の機械学習モデルの性能を評価するための例示的な枠組みの概念図である。いくつかの実装形態では、図10に示されるような要素609~629のうちの1つまたは複数は、それぞれ、図6~図7を参照して上で説明されたような要素609~629のうちの1つまたは複数と同様であり、または等価であり得る。いくつかの例では、図10を参照して本明細書において説明される動作のうちの1つまたは複数は、図9のステップ920を参照して上で説明されたもののうちの1つまたは複数に対応し得る。システム600および700のように、システム1000は、ランダム投影論理610および第1の機械学習モデル620を含む。
しかしながら、システム600および700と異なり、システム1000はさらに、残差計算論理1060を含む。また、図10の例では、ユーザプロファイル609(Pi)は、第1の機械学習モデル620を訓練するために使用された複数のユーザプロファイルのうちの1つに対応し、一方、図6および図7の例では、ユーザプロファイル609(Pi)は、第1の機械学習モデル620を訓練するために使用された複数のユーザプロファイルのうちの1つに必ずしも対応しないことがあるが、代わりに、推測時間において受信される推測要求と関連付けられるユーザプロファイルに単に対応することがある。第1の機械学習モデル620を訓練するために使用された前述の複数のユーザプロファイルは、いくつかの例では、図9のステップ910を参照して上で説明された複数のユーザプロファイルに対応し得る。残差計算論理1060は、少なくとも1つの予測されるラベル629および少なくとも1つの真のラベル1059(Li)に基づいて、少なくとも1つの予測されるラベル629の誤差の量を示す残差値1069(Residuei)を生成するために利用され得る。本明細書において説明されるようなラベルは、属性ベースのユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。少なくとも1つの予測されるラベル629
と少なくとも1つの真のラベル1059(Li)の両方が暗号化され得る。たとえば、残差計算論理1060は、少なくとも1つの予測されるラベル629と少なくとも1つの真のラベル1059との間の値の差を計算するために、秘密シェアを利用することができる。いくつかの実装形態では、残差値1069は、前述の値の差に対応し得る。
残差値1069は、たとえばプロファイルおよび残差データセット1070の一部としてメモリに、変換されたユーザプロファイル619に関連して記憶され得る。いくつかの例では、プロファイルおよび残差データセット1070に含まれるデータは、図9のステップ930を参照して上で説明されたようなデータと、図11のステップ1112を参照して下で説明されるようなデータの一方または両方に対応し得る。いくつかの実装形態では、残差値1069は、ユーザプライバシーおよびデータセキュリティを保護するための秘密シェアの形式である。
いくつかの実装形態では、図10に示されるように、システム1000は、図1のMPCクラスタ130などのMPCクラスタによって実装されるようなシステムを表すことができる。したがって、これらの実装形態の少なくともいくつかでは、図10に示される要素を参照して本明細書において説明される機能の一部またはすべてが、MPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得ることが理解されるべきである。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、図10を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、図10を参照して本明細書において説明されるものと同様の、または等価な動作を連携して実行するために、選択された秘密シェアアルゴリズムを実装するように並列に動作してもよい。前述の実装形態の少なくともいくつかでは、ユーザプロファイル609は、ユーザプロファイルの秘密シェアを表し得る。そのような実装形態では、他のデータまたは図10を参照して本明細書において説明される量のうちの1つまたは複数も、それらの秘密シェアを表すものであり得る。図10を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。
図11は、MPCクラスタにおける第1の機械学習モデルの性能を評価するための例示的なプロセス1100を示す流れ図である。プロセス1100の動作は、たとえば図1のMPCクラスタ130などのMPCクラスタによって実施されてもよく、図9~図10を参照して上で説明された動作の1つまたは複数にも対応してもよい。いくつかの例では、図11を参照して本明細書において説明される動作のうちの1つまたは複数は、図9のステップ920を参照して上で説明されたもののうちの1つまたは複数に対応し得る。いくつかの実装形態では、図11に示される要素を参照して本明細書において説明される機能の一部またはすべてが、図1のMPCクラスタ130などのMPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得る。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、図11を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、図11を参照して本明細書において説明されるものと同様の、または等価な動作を連携して実行するために、選択された秘密シェアアルゴリズムを実装するように並列に動作してもよい。図11を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。プロセス1100の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス1100の動作を実行させ得る。
MPCクラスタは、i番目のユーザプロファイルおよび少なくとも1つの対応する真のラベル([Pi,Li])を選択し、iは最初に1という値に設定され(1102~1104)、iがnに等しくなるまで再帰を通じてインクリメントされ(1114~1116)、nは第1の機械学習モデルを訓練するために使用されたユーザプロファイルの総数である。ラベルは、属性ベースのユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。言い換えると、プロセス1100は、以下で説明されたように、第1の機械学習モデルを訓練するために使用されたn個のユーザプロファイルの各々に対してステップ1106~1112を実行するステップを含む。
いくつかの実装形態では、第iのユーザプロファイルは、ユーザプロファイルの秘密シェアを表し得る。そのような実装形態では、他のデータまたは図11を参照して本明細書において説明される量のうちの1つまたは複数も、それらのシェアを表すものであり得る。
MPCクラスタは、第iのユーザプロファイル(Pi)にランダム投影を適用し、第iのユーザプロファイルの変換されたバージョン(Pi')を取得する(1106)。たとえば、これは、図10を参照して上で説明されたような、ランダム投影変換をユーザプロファイル609(Pi)に適用して変換されたユーザプロファイル619(Pi')を取得するためにランダム投影論理610が利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
MPCクラスタは、第iのユーザプロファイルの変換されたバージョン(Pi')を第1の機械学習モデルへの入力として提供し、第iのユーザプロファイルの変換されたバージョン(Pi')に対する少なくとも1つの予測されるラベル
を出力として取得する(1108)。たとえば、これは、図10を参照して上で説明されたように、第1の機械学習モデル620が変換されたユーザプロファイル619(Pi')を入力として受信し、それに応答して少なくとも1つの予測されるラベル629
を生成することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
MPCクラスタは、第iのユーザプロファイル(Pi)に対する少なくとも1つの真のラベル(Li)および少なくとも1つの予測されるラベル
に少なくとも一部基づいて、残差値(Residuei)を計算する(1110)。たとえば、これは、図10を参照して上で説明されたように、残差計算論理1060が、少なくとも1つの真のラベル1059(Li)および少なくとも1つの予測されるラベル629
に少なくとも一部基づいて残差値1069(Residuei)を計算するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
MPCクラスタは、第iのユーザプロファイルの変換されたバージョン(Pi')に関連して計算された残差値(Residuei)を記憶する(1112)。たとえば、これは、図10を参照して上で説明されたような、残差値1069(Residuei)が、たとえばプロファイルおよび残差データセット1070の一部としてメモリに、変換されたユーザプロファイル619(Pi')と関連付けられて記憶されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの例では、このデータは、図9のステップ930を参照して上で説明されたようなデータに対応し得る。したがって、これらの例では、このステップで記憶されるデータの一部またはすべてが、第2の機械学習モデル730などの第2の機械学習モデルを訓練するためのデータとして活用され得る。
ステップ1108~1110を再び参照すると、第1の機械学習モデルが回帰技法を利用するように構成される少なくともいくつかの実装形態では、MPCクラスタがステップ1108において取得する少なくとも1つの予測されるラベル
は、整数を表す単一の予測されるラベルに対応し得る。これらの実装形態では、MPCクラスタがステップ1110において計算する残差値(Residuei)は、少なくとも1つの真のラベル(Li)と少なくとも1つの予測されるラベル
との間の値の差を示す整数に対応し得る。前述の実装形態の少なくともいくつかでは、ステップ1108において、第1の機械学習モデルは、第iのユーザプロファイルの変換されたバージョン(Pi')に最も似ていると見なされるk個の最近傍ユーザプロファイルを特定し、k個の最近傍ユーザプロファイルの各々に対する少なくとも1つの真のラベルを特定し、k個の最近傍ユーザプロファイルに対する真のラベルの合計を計算し、この合計を少なくとも1つの予測されるラベル
として使用する。上で言及されたように、このステップにおいて決定されるようなk個の最近傍ユーザプロファイルに対する真のラベルのそのような合計は、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価である。いくつかの例では、この合計は、k個の最近傍ユーザプロファイルに対する真のラベルの平均の代わりに、少なくとも1つの予測されるラベル
として利用され得るので、除算演算は実行されなくてもよい。少なくとも1つの予測されるラベル
が、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価であるとすると、第1の機械学習モデルが回帰技法を利用するように構成される少なくともいくつかの実装形態では、ステップ1110においてMPCクラスタによって実行される計算は、
により与えられる。
同様に、第1の機械学習モデルが二項分類技法を利用するように構成される少なくともいくつかの実装形態では、MPCクラスタがステップ1108において取得する少なくとも1つの予測されるラベル
は、たとえば、k個の最近傍ユーザプロファイルに対する真のラベルの合計に少なくとも一部基づいて決定される整数を表す、単一の予測されるラベルに対応し得る。第1の機械学習モデルが回帰技法を利用するように構成される実装形態を参照して上で言及されたように、k個の最近傍ユーザプロファイルに対する真のラベルのそのような合計は、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価である。
しかしながら、第1の機械学習モデルが回帰技法を利用するように構成される実装形態とは異なり、第1の機械学習モデルが二項分類技法を利用するように構成される実装形態では、k個の最近傍ユーザプロファイルに対する真のラベルの各々は、0または1のいずれかのバイナリ値であり得るので、前述の平均は0と1の間の整数値(たとえば、0.3、0.8など)であり得る。二項分類技法が利用される実装形態では、MPCクラスタは、ステップ1108においてk個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)を計算して少なくとも1つの予測されるラベル
として使用し、数学的に実行可能である回帰技法がステップ1110において残差値(Residuei)を取得するために利用される実装形態を参照して上で説明された式
を使用し得るが、そのような残差値(Residuei)は、たとえば、第1の機械学習モデルのブースティングが保証されるかどうかを決定するために使用されるときに後で、または、第2の機械学習モデル730などの第2の機械学習モデルを訓練するために使用されるときに後で、プライバシーの問題をもたらす可能性があり得る。より具体的には、k個の最近傍ユーザプロファイルに対する真のラベルの各々は0または1のいずれかのバイナリ値であり得るので、二項分類技法が利用される実装形態では、そのような残差値(Residuei)の符号は、場合によっては少なくとも1つの真のラベル(Li)の値を示すものであることがあり、したがって、場合によっては、ステップ1112以降に残差値(Residuei)を示すデータを扱うことができる1つまたは複数のシステムおよび/またはエンティティによってある程度推測されることがある。
たとえば、二項分類技法が利用されることになり、Li=1、k=15、および
である第1の例を考える。この第1の例では、少なくとも1つの予測されるラベル
は、k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)に対応し、これは、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価であり、前述の平均は0.8という非整数値である。上で説明されたものと同じ式
が、たとえばステップ1110において残差値(Residuei)を計算するためにこの第1の例において利用されることになる場合、この第1の例の残差値(Residuei)は、Residuei=(15)(1)-12=3により与えられる。したがって、この第1の例では、残差値(Residuei)は(正の)3という値に等しい。ここで、二項分類技法が利用されることになり、Li=0であるがkおよび
がそれぞれ再び15および12という値に等しいような第2の例を考える。再び、上で説明されたものと同じ式
が、たとえばステップ1110において残差値(Residuei)を計算するためにこの第2の例において利用されることになる場合、この第2の例の残差値(Residuei)は、Residuei=(15)(0)-12=-12により与えられる。したがって、この第1の例では、残差値(Residuei)は-12という値に等しい。実際に、上で説明された第1および第2の例の場合、正の残差値(Residuei)はLi=1に相関し得るが、負の残差値(Residuei)はLi=0に相関し得る。
ResidueiからLiを推測することがなぜ可能かを理解するために、その真のラベルが0に等しい第1の機械学習モデルを訓練するために使用されるユーザプロファイルに対する残差が、N(μ0,σ0)という表記の正規分布を満たすと仮定され、ここで、μ0およびσ0が、それぞれ、0に等しく第1の機械学習モデルを訓練するために使用されたユーザプロファイルと関連付けられる真のラベルに対する予測誤差(たとえば、残差値)の正規分布の平均および標準偏差であり、そのラベルが1に等しい訓練例に対する残差がN(μ1,σ1)を満たすと仮定され、ここで、μ1およびσ1が、それぞれ、1に等しく第1の機械学習モデルを訓練するために使用されたユーザプロファイルと関連付けられる真のラベルに対する予測誤差の正規分布の平均および標準偏差であるという、例を考える。そのような仮定のもとでは、μ0<0、μ1>0であることが明らかであり、σ0=σ1である保証はない。
上記を考慮すると、以下で説明されるように、いくつかの実装形態では、二項分類技法が利用される実装形態に対してステップ1108~1110と関連付けられる1つまたは複数の動作を実行することに、異なるアプローチを採用することができる。いくつかの実装形態では、訓練例の2つのクラスに対する残差が同じ正規分布を有するようにするために、MPCクラスタは、Liおよび
に基づいて計算された残差値を、Liを予測するために使用できないように、k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)に変換fを適用することができる。変換fは、初期の予測されるラベル(たとえば、二項分類の場合は真のラベルの合計、多クラス分類の場合は真のラベルの多数決など)に適用されると、第1の機械学習モデルの予測に存在し得る偏りを取り除く役割を果たすことができる。そのような目標を達成するために、変換fは以下の特性を満たす必要がある。
(i) f(μ0)=0
(ii) f(μ1)=1
(iii) σ0×f'(μ0)=σ1×f'(μ1)
ここでf'はfの導関数である。
そのような実装形態において利用され得る上記の特性を伴う変換の一例は、形状の二次多項式変換f(x)=a2x2 + a1x+a0であり、f'(x)=2a2x+a1である。いくつかの例では、MPCクラスタは、次のような3つの制約からの3つの線形式に基づいて、係数{a2,a1,a0}の値を決定論的に見つけることができる。
として
(i) a2'=σ0-σ1
(ii) a1'=2(σ1μ1-σ0μ0)
(iii) a0'=μ0(μ0σ0+μ0σ1-2μ1σ1)
これらの例では、MPCクラスタは、係数{a2,a1,a0}を{a2,a1,a0}=D×{a2',a1',a0'}として計算することができる。MPCクラスタは、たとえば秘密シェアにわたり、加算および乗算を使用して、{a2',a1',a0'}およびDを計算することができる。変換f(x)=a2x2+a1x+a0はまた、
の周囲で線対称である。
前述の係数およびそれに依存する他の値を計算するために、MPCクラスタはまず、0に等しい真のラベルに対する予測誤差(たとえば、残差値)の確率分布の平均と標準偏差、それぞれμ0およびσ0を推定し、ならびに、1に等しい真のラベルに対する予測誤差(たとえば、残差値)の確率分布の平均と標準偏差、それぞれμ1およびσ1を推定し得る。いくつかの例では、0に等しい真のラベルに対する予測誤差の確率分布の分散σ0
2が、標準偏差σ0に加えて、またはその代わりに決定されてもよく、1に等しい真のラベルに対する予測誤差の確率分布の分散σ1
2が、標準偏差σ1に加えて、またはその代わりに決定されてもよい。
いくつかの事例では、予測誤差の所与の確率分布は正規分布に対応してもよく、他の事例では、予測誤差の所与の確率分布は、ベルヌーイ分布、一様分布、二項分布、超幾何分布、幾何分布、指数分布などの、正規分布以外の確率分布に対応してもよい。そのような他の事例では、推定される分布パラメータは、いくつかの例では、予測誤差の所与の確率分布の特性に固有の1つまたは複数のパラメータなどの、平均、標準偏差、および分散以外のパラメータを含み得る。たとえば、一様分布に対応する予測誤差の所与の確率分布に対して推定される分布パラメータは、最小値パラメータおよび最大値パラメータ(aおよびb)を含んでもよく、一方、指数分布に対応する予測誤差の所与の確率分布に対して推定される分布パラメータは、少なくとも1つのレートパラメータ(λ)を含んでもよい。いくつかの実装形態では、第1の機械学習モデルの予測誤差を示すデータがそのような分布パラメータを推定するために取得され利用され得るように、図11のプロセス1110に関連して実行される1つまたは複数の動作と同様の1つまたは複数の動作が実行され得る。前述の実装形態の少なくともいくつかにおいて、第1の機械学習モデルの予測誤差を示すデータは、(i)いくつかの異なるタイプの確率分布(たとえば、正規分布、ベルヌーイ分布、一様分布、二項分布、超幾何分布、幾何分布、指数分布など)の中から、データにより示される予測誤差の所与のサブセットの確率分布の形状に最もよく対応する特定のタイプの確率分布を識別し、(ii)識別された特定のタイプの確率分布に従って、データにより示される予測誤差の所与のサブセットの確率分布の1つまたは複数のパラメータを推定するために、取得され利用され得る。他の構成も可能である。
推定される分布パラメータが平均および標準偏差を含む例を再び参照すると、これらの例では、0に等しい真のラベルに対してそのような分布パラメータを推定するために、MPCクラスタは、
を計算することができ、ここで、
である。
いくつかの例では、MPCクラスタは、分散σ0
2に基づいて、たとえば分散σ0
2の平方根を計算することによって、標準偏差σ0を計算する。同様に、1に等しい真のラベルに対するそのような分散パラメータを推定するために、MPCクラスタは、
を計算することができ、ここで、
である。
いくつかの例では、MPCクラスタは、分散σ1
2に基づいて、たとえば分散σ1
2の平方根を計算することによって、標準偏差σ1を計算する。
そのような分布パラメータが推定されると、係数{a2,a1,a0}が、計算され、記憶され、k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)に対応する変換fを適用するために後で利用され得る。いくつかの例では、これらの係数は、第1の機械学習モデルを構成するために利用され、それは、その構成が進行すると、第1の機械学習モデルが、対応する変換fを、入力に応答してk個の最近傍ユーザプロファイルに対する真のラベルの合計に適用するように行われる。
多クラス分類の場合、二項分類のように、各ベクトルの中の各々の真のラベルまたはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットは、0または1のいずれかのバイナリ値であり得る。この理由で、二項分類を参照して上で説明されたものと同様のアプローチを、多クラス分類技法の実装形態においてもとることができるので、Liおよび
に基づいて計算された残差値を、Liを予測するために使用することができない。しかしながら、多クラス分類の場合、それぞれの関数または変換fが、各カテゴリに対して定義され利用され得る。たとえば、各ユーザプロファイルに対する真のラベルの各ベクトルまたはセットが、w個の異なるカテゴリにそれぞれ対応するw個の異なる真のラベルを含むとすると、w個の異なる変換fが決定され利用され得る。また、真のラベルの合計を計算する代わりに、多クラス分類の場合、頻度値が各カテゴリに対して計算される。そのような頻度値がどのように計算され得るかについてのさらなる詳細が、上で与えられ、すぐ下でも与えられる。他の構成も可能である。
任意に選ばれた第jのラベルに対して、MPCクラスタは、ljが訓練例に対する訓練ラベルであるかどうかに基づいて、訓練例を2つのグループへと区分することができる。ljが訓練ラベルである訓練例のグループに対して、MPCクラスタは、frequencyiが正規分布であると仮定し、平均μ1および分散σ1を計算することができる。一方、ljが訓練ラベルではない訓練例のグループに対して、MPCクラスタは、frequencyiが正規分布であると仮定し、平均μ0および分散σ0を計算することができる。
二項分類と同様に、多クラス分類の場合、k-NNモデルの予測は偏っている可能性が高い(たとえば、μ0が0であるべきであった場合にμ0>0、μ1がkであるべきであった場合にμ1<k)。加えて、σ0==σ1であるという保証はない。したがって、二項分類と同様に、多クラス分類の場合、MPCクラスタは、予測されるfrequencyjにわたり変換fを適用するので、変換の後、2つのグループに対するResidueiは実質的に同じ正規分布を有する。そのような目標を達成するために、変換fは以下の特性を満たす必要がある。
(i) f(μ0)=0
(ii) f(μ1)=k
(iii) σ0×f'(μ0)=σ1×f'(μ1)
ここでf'はfの導関数である。
上記の3つの性質は、二項分類の場合の対応する性質と非常に似ている。多クラス分類の場合、利用され得る上記の特性を伴う変換の一例は、形状の二次多項式変換f(x)=a2x2 + a1x+a0であり、f'(x)=2a2x+a1である。いくつかの例では、MPCクラスタは、次のような3つの制約からの3つの線形式に基づいて、係数{a2,a1,a0}の値を決定論的に計算することができる。
として
(i) a'2=σ0-σ1
(ii) a'1=2(σ1μ1-σ0μ0)
(iii) a'0=μ0(μ0σ0+μ0σ1-2μ1σ1)
二項分類に対する変換と多クラス分類に対する変換はほぼ同じであり、唯一の違いは、k-NNモデルを用いた多クラス分類では、Dの値が、いくつかの実装形態ではkという係数により拡大され得ることであることに留意されたい。
再び図9を参照すると、いくつかの実装形態では、ステップ912~916のうちの1つまたは複数は、MPCクラスタによって利用され得る少なくとも1つの関数または変換を定義するためのアプローチを用いた上で説明された動作のうちの1つまたは複数に対応し得るので、Liおよび
に基づいて計算された残差値を、Liを予測するために使用することができない。具体的には、ステップ912~916は、1つまたは複数の二項分類および/または多クラス分類技法が利用されるべき実装形態のために実行され得る。上で言及されたように、ステップ912~916は、ステップ920および930の前に実行され、ステップ910の後に実行され得る。
MPCクラスタは、複数のユーザプロファイルに対する複数の真のラベルに基づいて、分布パラメータのセットを推定する(912)。たとえば、これは、MPCクラスタが、上で説明されたように、ステップ910において利用されるものと同じユーザプロファイルと関連付けられる真のラベルに基づいて、パラメータμ0、σ0
2
、σ0、μ1、σ1
2、およびσ1のうちの1つまたは複数を計算することに関連して実行される、1つまたは複数の動作と同様または等価である1つまたは複数の動作に対応し得る。
MPCクラスタは、分布パラメータの推定されるセットに基づいて関数を導出する(914)。たとえば、これは、MPCクラスタが、関数を実質的に定義する{a2, a1, a0}などのパラメータまたは係数を計算することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの実装形態では、ステップ914において関数を導出するために、MPCクラスタは関数のパラメータのセット、たとえば{a2, a1, a0}を導出する。
MPCクラスタは、入力としてユーザプロファイルが与えられると、初期の予測されるラベルを生成し、導出された関数を初期の予測されるラベルに適用して、ユーザプロファイルに対する予測されるラベルを出力として生成するように、第1の機械学習モデルを構成する(916)。たとえば、これは、第1の機械学習モデルをMPCクラスタが構成することに関連して実行される1つまたは複数の動作と同様または等価である1つまたは複数の動作に対応してもよく、その構成することは、進行すると、第1の機械学習モデルが、対応する変換fを、(二項分類の場合)入力に応答してk個の最近傍ユーザプロファイルに対する真のラベルの合計に適用するように行われる。多クラス分類の場合、変換fは、w個の異なる関数のうちの1つを表すことがあり、MPCクラスタは、そのw個の異なる関数のうちの1つを、w個の異なるカテゴリに対応するベクトルまたはセットの中のw個の異なる値のそれぞれ1つに適用するように、第1の機械学習モデルを構成する。上で説明されたように、これらのw個の異なる値の各々1つが頻度値に対応し得る。
ステップ912~916が実行され、第1の機械学習モデルがそのような方式で構成されると、ステップ920において生成され、後で、たとえばステップ930において利用されるデータは、真のラベル(Li)を予測するために使用されないことがある。
再び図8を参照すると、いくつかの実装形態では、プロセス800は、図9~図11を参照して上で説明された動作のうちの1つまたは複数に対応する1つまたは複数のステップを含み得る。
いくつかの実装形態では、プロセス800はさらに、MPCクラスタが第1の機械学習モデルの性能を評価する1つまたは複数の動作を含む。たとえば、これは、図9を参照して上で説明されたような、MPCクラスタがステップ920を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。これらの実装形態では、第1の機械学習モデルの性能を評価するために、複数のユーザプロファイルの各々に対して、MPCクラスタは、(i)ユーザプロファイル、(ii)第1の機械学習モデル、および(iii)複数のユーザプロファイルに対する複数の真のラベルのうちの1つまたは複数に少なくとも一部基づいて、ユーザプロファイルに対する予測されるラベルを決定し、ユーザプロファイルに対して決定される予測されるラベルおよび複数の真のラベルに含まれるユーザプロファイルに対する真のラベルに少なくとも一部基づいて、予測されるラベルの予測誤差を示すユーザプロファイルに対する残差値を決定する。たとえば、これは、図11を参照して上で説明されたような、MPCクラスタがステップ1106~1108を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。加えて、これらの実装形態では、プロセス800はさらに、MPCクラスタが、第1の機械学習モデルの性能を評価する際に、複数のユーザプロファイルに対して決定される残差値を示すデータを使用して第2の機械学習モデルを訓練する、1つまたは複数の動作を含む。たとえば、これは、図9を参照して上で説明されたような、MPCクラスタがステップ930を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
前述の実装形態の少なくともいくつかでは、ユーザプロファイルに対する残差値は、ユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルとの値の差を示す。たとえば、これは、回帰技法が利用される例に対して当てはまり得る。
前述の実装形態の少なくともいくつかでは、MPCクラスタが第1の機械学習モデルの性能を評価する前に、プロセス800はさらに、複数の真のラベルに少なくとも一部基づいてMPCクラスタが関数を導出する1つまたは複数の動作を含み、入力としてユーザプロファイルが与えられると、関数を使用してユーザプロファイルに対する予測されるラベルを出力として生成するように、第1の機械学習モデルを構成する。たとえば、これは、図9を参照して上で説明されたような、MPCクラスタがステップ914~916を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの実装形態では、このステップにおいて関数を導出するために、MPCクラスタは関数のパラメータのセット、たとえば{a2, a1, a0}を導出する。
前述の実装形態の少なくともいくつかでは、プロセス800はさらに、複数の真のラベルに少なくとも一部基づいてMPCクラスタが分布パラメータのセットを推定する、1つまたは複数の動作を含む。そのような実装形態では、複数の真のラベルに少なくとも一部基づいて関数を導出するために、MPCクラスタは、分布パラメータの推定されるセットに少なくとも一部基づいて関数を導出する。たとえば、これは、図9を参照して上で説明されたような、MPCクラスタがステップ912~914を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、分布パラメータの前述のセットは、複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、たとえば、複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の正規分布の平均(μ0)および分散(σ0)、ならびに、複数の真のラベルの中の第2の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、たとえば、複数の真のラベルの中の第2の異なる値の真のラベルに対する予測誤差の正規分布の平均(μ1)および分散(σ1)を含み得る。上で説明されたように、いくつかの例では、分布パラメータの前述のセットは、他のタイプのパラメータを含み得る。さらに、前述の実装形態の少なくともいくつかでは、関数は二次多項式関数であり、たとえばf(x)=a2x2+a1x+a0であり、ここでf'(x)=2a2x+a1である。
前述の実装形態の少なくともいくつかでは、ユーザプロファイルが入力として与えられると、関数を使用してユーザプロファイルに対する予測されるラベルを出力として生成するように第1の機械学習モデルを構成するために、MPCクラスタは、入力としてユーザプロファイルが与えられると、(i)ユーザプロファイルに対する初期の予測されるラベルを生成し、(ii)ユーザプロファイルに対する初期の予測されるラベルに関数を適用して、ユーザプロファイルに対する予測されるラベルを出力として生成するように、第1の機械学習モデルを構成する。たとえば、二項分類技法が利用される例では、これは、MPCクラスタが、入力としてユーザプロファイルが与えられると、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)を計算し、(ii)ユーザプロファイルに対する初期の予測されるラベルに関数(変換f)を適用して、ユーザプロファイルに対する予測されるラベル
を出力として生成するように、第1の機械学習モデルを構成する、1つまたは複数の動作に対応し得る。マルチクラス分類技法が利用される場合に対して、同様の動作が実行され得る。いくつかの実装形態では、ユーザプロファイルに対する初期の予測されるラベルに関数を適用するために、MPCクラスタは、パラメータの導出されたセット、たとえば{a2,a1,a0}に基づいて定義されるように関数を適用する。いくつかの例では、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、回帰技法または二項分類技法が利用される実装形態に対して当てはまり得る。前述の例のいくつかでは、特定のユーザプロファイルに対する予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に対応し得る。たとえば、これは、回帰分類技法が利用される実装形態に対して当てはまり得る。
他のそのような例では、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に関数を適用して、特定のユーザプロファイルに対する予測されるラベルを生成する。たとえば、これは、二項分類技法が利用される実装形態に対して当てはまり得る。
上で言及されたように、前述の実装形態のいくつかでは、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、それぞれ、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットを決定し、予測されるラベルのセットを決定するために、MPCクラスタはセットの中の各カテゴリに対する動作を実行する。そのような動作は、MPCクラスタが、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するような、1つまたは複数の動作を含み得る。たとえば、これは、図6~図7を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用されるような1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。前述の実装形態の少なくともいくつかでは、予測されるラベルのセットを決定するために、セットの中の各カテゴリに対して、MPCクラスタは、カテゴリに対応する関数を決定された頻度に適用して、特定のユーザプロファイルに対するカテゴリに対応する予測されるラベルを生成する。たとえば、それぞれの関数は、図9のステップ914を参照して上で説明されたような、w個の異なるカテゴリに対してMPCクラスタによって導出されるw個の異なる関数のうちの1つに対応し得る。
図12は、MPCクラスタのコンピューティングシステムにおける性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的なプロセス1200を示す流れ図である。図12を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。プロセス1200の動作の少なくともいくつかは、たとえば図1のMPCクラスタ130のMPC1などの、MPCクラスタの第1のコンピューティングシステムによって実施されてもよく、図8を参照して上で説明された動作の1つまたは複数にも対応してもよい。しかしながら、プロセス1200では、ユーザデータのプライバシー保護をもたらすために、1つまたは複数の動作が秘密シェアにわたって実行され得る。一般に、以下で、および本明細書の他の箇所で記述されるような「シェア」は、少なくともいくつかの実装形態では、秘密シェアに相当し得る。他の構成も可能である。図12を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。
MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルと関連付けられる推測要求を受信する(1202)。たとえば、これは、図1を参照して上で説明されたような、MPCクラスタ130のMPC1がアプリケーション112から推測要求を受信することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの実装形態では、これは、図8を参照して上で説明されたような、ステップ802に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルに対する予測されるラベルを決定する(1204~1208)。ラベルは、ユーザプロファイルと関連付けられる属性ベースのユーザグループ識別子もしくは属性特徴であってもよく、またはそれを含んでもよい。いくつかの実装形態では、これは、図8を参照して上で説明されたような、ステップ804に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。しかしながら、ステップ1204~1208では、ユーザデータのプライバシー保護をもたらすために、所与のユーザプロファイルに対する予測されるラベルの決定は、秘密シェアにわたって実行され得る。所与のユーザプロファイルに対する予測されるラベルを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)所与のユーザプロファイルの第1のシェア、複数のユーザプロファイルを使用して訓練される第1の機械学習モデル、および、複数のユーザプロファイルに対する複数の真のラベルのうちの1つまたは複数に少なくとも一部基づいて、予測されるラベルの第1のシェアを決定し(1204)、(ii)MPCクラスタの第2のコンピューティングシステムから、所与のユーザプロファイルの第2のシェアおよび1つまたは複数の機械学習モデルの第1のセットに少なくとも一部基づいて、MPUクラスタの第2のコンピューティングシステムによって決定される予測されるラベルの第2のシェアを示すデータを受信し、(iii)予測されるラベルの第1および第2のシェアに少なくとも一部基づいて、予測されるラベルを決定する(1208)。たとえば、MPCクラスタの第2のコンピューティングシステムは、図1のMPCクラスタ130のMPC2に対応し得る。
この例では、複数のユーザプロファイルに対する複数の真のラベルは、暗号化されたラベルデータ626の一部として含まれる真のラベルに対応してもよく、これらは、第1の機械学習モデル620を訓練および/または評価するために使用された複数のユーザプロファイルに対する真のラベルである。いくつかの例では、複数の真のラベルは、真のラベルの別のセットのシェアに対応し得る。所与のユーザプロファイルに対する予測されるラベルの決定がそれに基づく、複数の真のラベルのうちの1つまたは複数の真のラベルは、たとえば、第1の機械学習モデル620のk-NNモデル622によって特定されるk個の最近傍ユーザプロファイルの各々に対する少なくとも1つの真のラベルを含み得る。いくつかの例では、複数の真のラベルの各々は、図6~図7の例と同じように暗号化される。k個の最近傍ユーザプロファイルに対する真のラベルが予測されるラベルを決定するために活用され得る様々な方法のうちのいくつかが、上で詳しく説明された。上記において明らかにされたように、そのような真のラベルが予測されるラベルを決定するために活用される方法または方式は、利用される推測技法のタイプ(たとえば、回帰技法、二項分類技法、多クラス分類技法など)に少なくとも一部依存し得る。k-NN計算に関連して実行され得る秘密シェアの交換に関する追加の詳細は、図1~図5を参照して上で与えられる。
MPCクラスタの第1のコンピューティングシステムは、予測されるラベルの予測される誤差を示す予測される残差値を決定する(1210~1214)。いくつかの実装形態では、これは、図8を参照して上で説明されたような、ステップ806に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。しかしながら、ステップ1210~1214では、ユーザデータのプライバシー保護をもたらすために、予測される残差値の決定は、秘密シェアにわたって実行され得る。予測される残差値を決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)所与のユーザプロファイルの第1のシェア、複数のユーザプロファイルを使用して訓練される第2の機械学習モデル、および、複数のユーザプロファイルに対する複数の真のラベルと第1の機械学習モデルを使用して複数のユーザプロファイルに対して決定されるような複数の予測されるラベルとの差を示すデータに少なくとも一部基づいて、所与のユーザプロファイルに対する予測される残差値の第1のシェアを決定し(1210)、(ii)MPCクラスタの第2のコンピューティングシステムから、所与のユーザプロファイルの第2のシェアおよび1つまたは複数の機械学習モデルの第2のセットに少なくとも一部基づいて、MPCクラスタの第2のコンピューティングシステムによって決定される所与のユーザプロファイルに対する予測される残差値の第2のシェアを示すデータを受信し(1212)、(iii)予測される残差値の第1および第2のシェアに少なくとも一部基づいて、所与のユーザプロファイルに対する予測される残差値を決定する(1214)。
MPCクラスタの第1のコンピューティングシステムは、予測されるラベルおよび予測される残差値に基づいて推測結果を表すデータを生成する(1216)。いくつかの実装形態では、これは、図8を参照して上で説明されたような、ステップ808に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの例では、推測結果は、予測されるラベルと予測される残差値の合計を含み、またはそれに対応する。
MPCクラスタの第1のコンピューティングシステムは、推測結果を表すデータをクライアントデバイスに提供する(1218)。いくつかの実装形態では、これは、図8を参照して上で説明されたような、ステップ810に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。たとえば、これは、図1-2を参照して上で説明されたような、アプリケーション112が実行されるクライアントデバイス110にMPCクラスタ130が推測結果を提供することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
いくつかの実装形態では、プロセス1200はさらに、MPCクラスタの第1のコンピューティングシステムが、所与のユーザプロファイルの第1のシェアに変換を適用して、所与のユーザプロファイルの第1の変換されたシェアを取得する、1つまたは複数の動作を含む。これらの実装形態では、予測されるラベルを決定するために、MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルの第1の変換されたシェアに少なくとも一部基づいて、予測されるラベルの第1のシェアを決定する。たとえば、これは、図6-8を参照して上で説明されたような、ランダム投影変換をユーザプロファイル609(Pi)に適用して変換されたユーザプロファイル619(Pi')を取得するためにランダム投影論理610が利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
前述の実装形態の少なくともいくつかでは、予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルの第1の変換されたシェアを入力として第1の機械学習モデルに提供して、所与のユーザプロファイルに対する予測されるラベルの第1のシェアを出力として取得する。たとえば、これは、図6~図7を参照して上で説明されたように、第1の機械学習モデル620が変換されたユーザプロファイル619(Pi')を入力として受信し、それに応答して少なくとも1つの予測されるラベル629
を生成することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
いくつかの例では、前述の変換はランダム投影であり得る。さらに、これらの例の少なくともいくつかにおいて、前述のランダム投影は、Johnson-Lindenstrauss(J-L)変換であり得る。
いくつかの実装形態では、J-L変換を適用するために、MPCクラスタは、暗号文で投影行列Rを生成することができる。n次元のPiをk次元に投影するために、MPCクラスタは、n×kのランダム行列Rを生成することができる。たとえば、第1のコンピューティングシステム(たとえば、MPC1)は、n×kのランダム行列Aを作成することができ、ここで50%の確率でAi,j=1であり、50%の確率でAi,j=0である。第1のコンピューティングシステムは、Aを2つのシェア[A1]および[A2]に分割し、Aを廃棄し、[A1]を機密扱いのままにし、[A2]を第2のコンピューティングシステム(たとえば、MPC2)に与えることができる。同様に、第2のコンピューティングシステムは、n×kのランダム行列Bを作成することができ、その要素は、Aの要素と同じ分布を有する。第2のコンピューティングシステムは、Bを2つのシェア[B1]および[B2]に分割し、Bを廃棄し、[B2]を機密扱いのままにし、[B1]を第1のコンピューティングシステムに与えることができる。
第1のコンピューティングシステムは次いで、2×([A1]==[B1])-1として[R1]を計算することができる。同様に、第2のコンピューティングシステムは次いで、2×([A2]==[B2])-1として[R2]を計算することができる。このようにして、[R1]および[R2]は、その要素が等しい確率で1または-1のいずれかであるRの2つの秘密シェアである。
実際のランダム投影は、次元1×nのPiの秘密シェアと次元n×kの投影行列Rとの間の投影であり、1×kの結果をもたらす。n>>kであると仮定すると、J-L変換は、訓練データの次元をnからkに下げる。暗号化されたデータにおいて上記の投影を行うために、第1のコンピューティングシステムは[Pi,1]・[Ri,1]を計算することができ、これは、2つのシェア間での乗算および2つのシェア間での加算を必要とする。
上で言及されたように、いくつかの実装形態では、第1の機械学習モデルは、MPCクラスタの第1のコンピューティングシステムによって維持されるk最近傍モデルを含み、1つまたは複数の機械学習モデルの第1のセットは、MPCクラスタの第2のコンピューティングシステムによって維持されるk最近傍モデルを含む。いくつかの例では、2つの前述のk最近傍モデルは互いに同一またはほぼ同一であり得る。すなわち、いくつかの例では、第1および第2のコンピューティングシステムは、同じk-NNモデルのコピーを維持し、各々が真のラベルの固有のシェアを記憶する。いくつかの例では、1つまたは複数のプロトタイプ方法に根ざすモデルが、前述のk最近傍モデルの一方または両方の代わりに実装され得る。
これらの実装形態の少なくともいくつかでは、予測されるラベルを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)所与のユーザプロファイルの第1のシェアおよびMPCクラスタの第1のコンピューティングシステムによって維持されるk最近傍モデルに少なくとも一部基づいて、最近傍ユーザプロファイルの第1のセットを特定し、(ii)MPCクラスタの第2のコンピューティングシステムから、所与のユーザプロファイルの第2のシェアおよびMPCクラスタの第2のコンピューティングシステムによって維持されるk最近傍モデルに少なくとも一部基づいて、MPCクラスタの第2のコンピューティングシステムによって特定される最近傍プロファイルの第2のセットを示すデータを受信し、(iii)最近傍プロファイルの第1および第2のセットに少なくとも一部基づいて、複数のユーザプロファイルの中で所与のユーザプロファイルに最も似ていると見なされる最近傍ユーザプロファイルの数kを特定し、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて、予測されるラベルの第1のシェアを決定する。たとえば、これは、図6~図8を参照して上で説明されたように、1つまたは複数の回帰および/または二項分類技法が利用される1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの例では、予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を含み、またはそれに対応する。
前述の実装形態のいくつかでは、予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1のシェアを決定し、(ii)MPCクラスタの第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対する真のラベルの合計の第2のシェアを受信し、(iii)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、図6~図8を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用される1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
いくつかの実装形態では、第2の機械学習モデルは、MPCクラスタの第1のコンピューティングシステムによって維持されるディープニューラルネットワーク(DNN)、勾配ブースティング決定木(GBDT)、およびランダムフォレストモデルのうちの少なくとも1つを含み、1つまたは複数の機械学習モデルの第2のセットは、MPCクラスタの第2のコンピューティングシステムによって維持されるDNN、GBDT、およびランダムフォレストモデルのうちの少なくとも1つを含む。いくつかの例では、第1および第2のコンピューティングシステムによって維持される2つのモデル(たとえば、DNN、GBDT、ランダムフォレストモデルなど)は、互いに同一またはほぼ同一であり得る。
いくつかの実装形態では、プロセス1200はさらに、MPCクラスタが、第1の機械学習モデルの性能を評価し、第1の機械学習モデルの性能を評価する際に、複数のユーザプロファイルに対して決定される予測される残差値を示すデータを使用して第2の機械学習モデルを訓練する、1つまたは複数の動作を含む。たとえば、これは、図8~図9を参照して上で説明されたような、MPCクラスタがステップ920を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。しかしながら、そのような実装形態では、ユーザデータのプライバシー保護をもたらすために、1つまたは複数の動作が秘密シェアにわたって実行され得る。これらの実装形態では、第1の機械学習モデルの性能を評価するために、複数のユーザプロファイルの各々に対して、MPCクラスタは、ユーザプロファイルに対する予測されるラベルを決定し、予測されるラベルの予測誤差を示すユーザプロファイルに対する残差値を決定する。ユーザプロファイルに対する予測されるラベルを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)ユーザプロファイルの第1のシェア、第1の機械学習モデル、および複数のユーザプロファイルに対する複数の真のラベルのうちの1つまたは複数に少なくとも一部基づいて、ユーザプロファイルに対する予測されるラベルの第1のシェアを決定し、(ii)MPCクラスタの第2のコンピューティングシステムから、ユーザプロファイルの第2のシェアおよびMPCクラスタの第2のコンピューティングシステムによって維持される1つまたは複数の機械学習モデルの第1のセットに少なくとも一部基づいて、MPCクラスタの第2のコンピューティングシステムによって決定されるユーザプロファイルに対する予測されるラベルの第2のシェアを示すデータを受信し、(iii)予測されるラベルの第1および第2のシェアに少なくとも一部基づいて、ユーザプロファイルに対する予測されるラベルを決定する。予測されるラベルの誤差を示すユーザプロファイルに対する残差値を決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)ユーザプロファイルに対して決定される予測されるラベルおよび複数の真のラベルに含まれるユーザプロファイルに対する真のラベルの第1の
シェアに少なくとも一部基づいて、ユーザプロファイルに対する残差値の第1のシェアを決定し、(ii)MPCクラスタの第2のコンピューティングシステムから、ユーザプロファイルに対して決定される予測されるラベルおよびユーザプロファイルに対する真のラベルの第2のシェアに少なくとも一部基づいて、MPCクラスタの第2のコンピューティングシステムによって決定されるユーザプロファイルに対する残差値の第2のシェアを示すデータを受信し、(iii)残差値の第1および第2のシェアに少なくとも一部基づいて、ユーザプロファイルに対する残差値を決定する。たとえば、これは、図11を参照して上で説明されたような、MPCクラスタがステップ1106~1108を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。加えて、これらの実装形態では、プロセス1200はさらに、MPCクラスタが、第1の機械学習モデルの性能を評価する際に、複数のユーザプロファイルに対して決定される残差値を示すデータを使用して第2の機械学習モデルを訓練する、1つまたは複数の動作を含む。たとえば、これは、図9を参照して上で説明されたような、MPCクラスタがステップ930を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
前述の実装形態の少なくともいくつかでは、ユーザプロファイルに対する残差値の第1のシェアは、第1の機械学習モデルによってユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルの第1のシェアとの値の差を示し、ユーザプロファイルに対する残差値の第2のシェアは、第1の機械学習モデルによってユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルの第2のシェアとの値の差を示す。たとえば、これは、回帰技法が利用される例に対して当てはまり得る。
前述の実装形態の少なくともいくつかにおいて、MPCクラスタが第1の機械学習モデルの性能を評価する前に、プロセス1200はさらに、MPCクラスタが、(i)関数を導出し、(ii)ユーザプロファイルが入力として与えられると、ユーザプロファイルに対する初期の予測されるラベルを生成し、関数をユーザプロファイルに対する初期の予測されるラベルに適用して、ユーザプロファイルに対する予測されるラベルの第1のシェアを出力として生成するように第1の機械学習モデルを構成する、1つまたは複数の動作を含む。たとえば、これは、図8~図9を参照して上で説明されたような、MPCクラスタがステップ914~916を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。関数を導出するために、MPCクラスタの第1のコンピューティングシステムは、(i)複数の真のラベルの各々の第1のシェアに少なくとも一部基づいて、関数の第1のシェアを導出し、(ii)MPCクラスタの第2のコンピューティングシステムから、複数の真のラベルの各々の第2のシェアに少なくとも一部基づいて、MPCクラスタの第2のコンピューティングシステムによって導出される関数の第2のシェアを示すデータを受信し、(iii)関数の第1および第2のシェアに少なくとも一部基づいて関数を導出する。たとえば、二項分類技法が利用される例では、これは、MPCクラスタが、入力としてユーザプロファイルが与えられると、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)を計算し、(ii)ユーザプロファイルに対する初期の予測されるラベルに関数(変換f)を適用して、ユーザプロファイルに対する予測されるラベル
を出力として生成するように、第1の機械学習モデルを構成する、1つまたは複数の動作に対応し得る。多クラス分類技法が利用される場合に対して、同様の動作が実行され得る。
秘密シェアにわたって実装されると、第1のコンピューティングシステム(たとえば、MPC1)は、
を計算することができる。
同様に、秘密シェアにわたって実装されると、第2のコンピューティングシステム(たとえば、MPC2)は、
を計算することができる。
MPCクラスタは次いで、上で説明されたようなsum0、count0、sum_of_square0を平文で再構築し、分散N(μ0,σ0
2)を計算することができる。
同様に、分散N(μ1,σ1
2)を計算するために、第1のコンピューティングシステム(たとえば、MPC1)は、
を計算することができる。
また、第2のコンピューティングシステム(たとえば、MPC2)は、
を計算することができる。
MPCクラスタは次いで、上で説明されたようなsum1、count1、sum_of_square1を平文で再構築し、分散N(μ1,σ1
2)を計算することができる。
前述の実装形態の少なくともいくつかにおいて、第1の機械学習モデルの性能を評価するとき、MPCクラスタは、1つまたは複数の固定点計算技法を利用して、各ユーザプロファイルに対する残差値を決定することができる。より具体的には、第1の機械学習モデルの性能を評価するとき、各ユーザプロファイルに対する残差値の第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、対応する真のラベルまたはそのシェアを、特定のスケーリング係数によってスケーリングし、特定のスケーリング係数によって関数と関連付けられる係数{a2,a1,a0}をスケーリングし、スケーリングされる係数を最も近い整数に丸める。そのような実装形態では、MPCクラスタの第2のコンピューティングシステムは、各ユーザプロファイルに対する残差値の第2のシェアを決定するために同様の動作を実行し得る。したがって、MPCクラスタは、秘密シェアを用いて残差値を計算し、2つの秘密シェアから平文の残差値を再構築し、平文の残差値をスケーリング係数で割ることができる。
前述の実装形態の少なくともいくつかでは、プロセス1200はさらに、複数の真のラベルの各々の第1のシェアに少なくとも一部基づいてMPCクラスタの第1のコンピューティングシステムが分布パラメータのセットの第1のシェアを推定する、1つまたは複数の動作を含む。いくつかのそのような実装形態では、複数の真のラベルの各々の第1のシェアに少なくとも一部基づいて関数の第1のシェアを導出するために、MPCクラスタの第1のコンピューティングシステムは、分布パラメータのセットの第1のシェアに少なくとも一部基づいて、関数の第1のシェアを導出する。たとえば、これは、図8~図9を参照して上で説明されたような、MPCクラスタがステップ912~914を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、分布パラメータの前述のセットは、複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、たとえば、複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の正規分布の平均(μ0)および分散(σ0)、ならびに、複数の真のラベルの中の第2の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、たとえば、複数の真のラベルの中の第2の異なる値の真のラベルに対する予測誤差の正規分布の平均(μ1)および分散(σ1)を含み得る。上で説明されたように、いくつかの例では、分布パラメータの前述のセットは、他のタイプのパラメータを含み得る。さらに、前述の実装形態の少なくともいくつかでは、関数は二次多項式関数であり、たとえばf(x)=a2x2+a1x+a0であり、ここでf'(x)=2a2x+a1であるが、いくつかの例では、他の関数が利用され得る。
いくつかの例では、予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1のシェアを決定し、(ii)MPCクラスタの第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対する真のラベルの合計の第2のシェアを受信し、(iii)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、回帰技法または二項分類技法が利用される実装形態に対して当てはまり得る。前述の例のいくつかでは、予測されるラベルの第1のシェアは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に対応し得る。たとえば、これは、回帰分類技法が利用される実装形態に対して当てはまり得る。
他のそのような例では、予測されるラベルの第1のシェアを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に関数を適用して、所与のユーザプロファイルに対する予測されるラベルを生成する。たとえば、これは、二項分類技法が利用される実装形態に対して当てはまり得る。
上で言及されたように、前述の実装形態のいくつかでは、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットの第1のシェアを決定する。予測されるラベルのセットの第1のシェアを決定するために、セットの中の各カテゴリに対して、MPCクラスタの第1のコンピューティングシステムは、(i)k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第1のシェアを決定し、(ii)k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第2のシェアを受信し、(iii)k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定する。そのような動作は、MPCクラスタの第1のコンピューティングシステムが、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するような、1つまたは複数の動作を含み得る。たとえば、これは、図6~図8を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用される1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
前述の実装形態の少なくともいくつかでは、予測されるラベルのセットの第1のシェアを決定するために、セットの中の各カテゴリに対して、MPCクラスタの第1のコンピューティングシステムは、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度に、カテゴリに対応する関数を適用して、所与のユーザプロファイルに対するカテゴリに対応する予測されるラベルの第1のシェアを生成する。たとえば、それぞれの関数は、図8~図9のステップ914を参照して上で説明されたような、w個の異なるカテゴリに対してMPCクラスタによって導出されるw個の異なる関数のうちの1つに対応し得る。
多クラス分類問題では、第1の機械学習モデルの性能(たとえば、品質)を評価するとき、各訓練例/クエリに対して、MPCクラスタは、k個の最近傍を見つけ、秘密シェアにわたってそれらのラベルの頻度を計算することができる。
たとえば、多クラス分類問題に対してw個の有効なラベル(たとえば、クラス){l1,l2,...lW}があると仮定される例を考える。{id1,id2,...idk}によって特定されるk個の近傍の中で、第1のコンピューティングシステム(たとえば、MPC1)は、第jのラベル[lj,1]の頻度を
として計算することができる。
第1のコンピューティングシステムは、真のラベル[label1]から
として頻度を計算することができる。
したがって、第1のコンピューティングシステムは、
を計算することができる。
そして、[Residuej,1]は
と等価である。
同様に、第2のコンピューティングシステム(たとえば、MPC2)は、
を計算することができる。
二項分類および回帰の場合、各推測に対して、残差値は整数型の秘密メッセージであり得る。逆に、多クラス分類の場合、各推測に対して、残差値は、上で示されたように、整数ベクトルの秘密メッセージであり得る。
属性報告
デジタルコンポーネント提供者160は、異なるデジタルコンポーネントを伴うことがあるいくつかのキャンペーン(たとえば、デジタルコンポーネント配信キャンペーン)を有することがある。各キャンペーンおよび様々なユーザにクライアントデバイス110上で表示されるデジタルコンポーネントに対して、デジタルコンポーネント提供者160は、そのデジタルコンポーネントの、またはそのデジタルコンポーネントを含むキャンペーンの実績を示すフィードバックを望むことがある。そのようなフィードバックを提供するために、コンテンツプラットフォーム150は、属性報告を実施して、様々な属性ベースのユーザグループに対する各キャンペーンおよび/または各デジタルコンポーネントの有効性を示す報告を生成し、デジタルコンポーネント提供者160に提供することができる。一例では、報告は、Table7(表7)に示されるものなどの表と、表に示されるデータと関連付けられる分析とを含み得る。各コンテンツ提供者160は、その特定のコンテンツ提供者160に対するキャンペーンおよび/またはデジタルコンポーネントに固有の1つまたは複数の報告を表示される。
報告を示されるデジタルコンポーネント提供者160は、1つまたは複数のデジタルコンポーネントを伴う複数のキャンペーンを含むものとして説明されるが、他の実装形態では、あらゆるデジタルコンポーネント提供者160が、任意の数のキャンペーン、あらゆる属性カテゴリ(たとえば、年齢範囲、性別、親であるかどうか、世帯収入、テクノフィリア、スポーツファン、料理愛好家などのライフスタイルの関心事、製品購入への関心などの購買意向の強いセグメント、および/または任意の他のカテゴリ)、およびイベントの任意のタイプまたは組合せ(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如)を有してもよい。各報告に対して生成される分析は、それに従って変化し得る。属性カテゴリは、拡大または自己報告によって様々なユーザが割り当てられたユーザグループに対応し得る。
表(たとえば、Table7(表7))の中のデータは、単一のユーザに対して個別にではなく、ユーザのすべてに対して全体として計算されるので、個々のユーザのプライバシーが守られる。
いくつかの実装形態では、以下で説明されるような、差分ノイズ追加、記録の匿名化、k-匿名性、粒度ベースの技法などの、属性報告のための追加のまたは代替のプライバシー保護対策を実施することができる。差分ノイズ追加では、アプリケーション112、セキュアMPCクラスタ130、コンテンツプラットフォーム150、および/またはアグリゲーションシステム180は、あらかじめ設定された分布(たとえば、ラプラスまたはガウシアン分布)から、ユーザの私的なデータ(たとえば、IPアドレスおよび/またはタイムスタンプなどの情報を特定する)を伴う1つまたは複数の関数へと、制御された量の差分ノイズを追加することができる。記録の匿名化では、アプリケーション112は、IPアドレスおよび/またはタイムスタンプなどのどのような識別情報も伴わずに、記録のセットを単に送信することができる。記録を匿名化するために、アプリケーション112および/またはコンテンツプラットフォーム150は、識別情報を取り除いてもよい。k-匿名性では、アプリケーション112、セキュアMPCクラスタ130、コンテンツプラットフォーム150、および/またはアグリゲーションシステム180は、k-匿名化技法を実施することができ、ユーザデータ内のユーザ属性の少なくとも「k」個の値を、プライバシーを高めるために匿名化することができ、匿名化されたデータに対して、アグリゲーションなどの動作を実行することができる。k-匿名性は、報告が所与のキー上で集約され、キーが少なくともk個の記録と共有される場合にのみ明らかにされることを必要とする。粒度ベースの技法では、アプリケーション112は、報告が要求される粒度(たとえば、1日または1時間などの時間ベースの粒度、特定の州、地方、都市、または国などの地理的な粒度)をデジタルコンポーネント提供者160が指定することを可能にするようにプログラムされてもよく、アプリケーション112、セキュアMPCクラスタ130、コンテンツプラットフォーム150、および/またはアグリゲーションシステム180は、指定された粒度で計算を実行することができる。
属性報告のためのシステム
報告において提示されるデータ(たとえば、様々な属性カテゴリの各々の中での、インプレッション、クリックおよび/もしくはコンバージョンの数、ならびに/またはそれらの欠如/不在)は、サードパーティのクッキーを使用して生成され得る。しかしながら、クッキーを避けてユーザプライバシーを守るために、報告は環境100のシステム(フレームワークとも呼ばれ得る)を使用して実行される。
コンテンツプラットフォーム150(たとえば、DSPまたはSSP、およびいくつかの実装形態では別個の報告プラットフォーム)は、デジタルコンポーネント提供者160から、デジタルコンポーネントを伴うキャンペーンと、属性報告がデジタルコンポーネント提供者160により望まれる1つまたは複数の属性カテゴリの第1のセットとを特定するデータを、受信することができる。デジタルコンポーネント提供者160は、このデータをアプリケーション、たとえばブラウザまたはネイティブアプリケーションに入力することができる。カテゴリの第1のセットは、たとえば、女性および$100,000より多い収入を含み得る。いくつかの実装形態では、キャンペーンおよび1つまたは複数の属性カテゴリの第1のセットを特定するデータは、アグリゲーションキーに含まれてもよく、これは、複数の値もしくは値の複数の列を有する合成キーまたは連結キーであり得る。値がキャンペーンを特定するデータであってもよく、各列が異なる属性カテゴリを表してもよい。
コンテンツプラットフォーム150(たとえば、DSPまたはSSP、およびいくつかの実装形態では、コンテンツプラットフォーム150に結合される別個の報告プラットフォーム)は、デジタルコンポーネントが表示されている(表示されることになる)クライアントデバイス110のユーザを、1つまたは複数の属性カテゴリの第2のセットと関連付けることができる。一例では、1つまたは複数の属性カテゴリの第2のセットは、女性、親、および$100,000より多い収入を含む。この関連付けは、以下の2つの方法の少なくとも1つで実行され得る。第1の方法では、コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、クライアントデバイス110で実装されるアプリケーション112上でユーザにより提供される、1つまたは複数の属性カテゴリの第2のセットの自己識別を受け取ることができ、次いでコンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、1つまたは複数の属性カテゴリの第2のセットにユーザをマッピングして、関連付けを実行することができる。第2の方法では、コンテンツプラットフォーム150は、MPCクラスタ130に、ユーザのブラウジング履歴を送信することができ(たとえば、ブラウジング履歴は、コンテンツプラットフォーム150が図2のプロセス210および212においてMPCクラスタ130に送信できるユーザプロファイルであってもよく、またはそれを含んでもよい)、次いでコンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)が、MPCクラスタ130内の機械学習モデルから、属性カテゴリの第2のセットを含むその機械学習モデルにより出力される推測を受け取ることができ、続いてコンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)が、1つまたは複数の属性カテゴリの第2のセットにユーザをマッピングして、関連付けを実行することができる。
この機械学習モデルは、k最近傍モデルであってもよく、属性ベースのデジタルコンポーネントの配信に関して上で説明されたモデリング技法を使用することができる。しかしながら、様々な目的で属性ベースのデジタルコンポーネントの配信と報告のために機械学習が使用されるので、報告のために使用されるこの機械学習モデルは、属性ベースのデジタルコンポーネントの配信のために使用される1つまたは複数の機械学習モデルとは異なるデータを使用して訓練されてもよい。たとえば、属性ベースのデジタルコンポーネントの配信の場合、機械学習の目的は、ユーザが関心を持つ関連のあるデジタルコンポーネントをユーザに表示できるように、ユーザまたはユーザのアプリケーション(たとえば、ブラウザ)にユーザグループを提案することであり、一方で属性報告の場合には、機械学習の目的は、デジタルコンポーネント提供者160への報告において、デジタルコンポーネントを表示されたユーザを置くことができるカテゴリ(バケットとも呼ばれ得る)を決定することである。これらの異なる目的を考慮すると、属性ベースのデジタルコンポーネントの配信と報告のための機械学習モデルは異なるように訓練されるので、異なる出力を生成する(すなわち、同じ確率出力を異なるカテゴリへと分ける、すなわちユーザを異なるように分類する)。たとえば、属性ベースのデジタルコンポーネントの配信のための機械学習モデルは、男性である確率が95%である出力を常に男性として分類してもよいが、報告モデルは、そのすべてが95%の確率で男性である100人のユーザを95人の男性および5人の女性として報告してもよい。そのような例では、MPCクラスタ130は、属性ベースのデジタルコンポーネントの配信を目的とする場合よりも、報告を目的とする場合において、特定のラベルへの関与がより緩やかである(すなわち、より寛大である、または厳しくない)ことがある。コンテンツプラットフォーム150は、属性ベースのデジタルコンポーネントの配信および/または報告のために、MPCクラスタ130において実装される機械学習モデルの分類についてのそのような厳密性を制御し、または変化させることができる。いくつかの実装形態では、別個の報告プラットフォームが、報告のためにMPCクラスタ130において実装される機械学習モデルの分類のためのそのような厳密性を制御し、または変化させることができる。
機械学習モデルは、属性ベースのデジタルコンポーネントの配信および属性報告に対して異なるように訓練されるものとして説明されるが、いくつかの実装形態では、それらの機械学習モデルは、似たように訓練され、または同じ方式で訓練されることすらある。さらに、属性ベースのデジタルコンポーネントの配信および属性報告のための機械学習モデルは、MPCクラスタ130に存在するものとして示されているが、いくつかの他の実装形態では、属性ベースのデジタルコンポーネントの配信および/または報告のための機械学習モデルは、クライアントデバイス110上で実装され得るので、属性グループへのユーザの分類は、MPCクラスタ130ではなくクライアントデバイス110で行われる。これらの実装形態は一般に、クライアントデバイス110が十分な記憶容量および計算能力を持つ場合に実装される。そのような代替の実装形態は有利なことに、MPCクラスタ130との大量の通信を防ぐことにより帯域幅を節約することができる。
1つまたは複数の属性カテゴリの第1のセット(デジタルコンポーネント提供者160によるアプリケーション112への入力データとして、属性報告がデジタルコンポーネント提供者160によって望まれる属性カテゴリ、たとえば女性および$100,000より多い収入を表す)および1つまたは複数の属性カテゴリの第2のセット(機械学習によって生成されるユーザのユーザグループの推測、またはアプリケーション112上でユーザによって自己識別されるユーザグループのいずれか、たとえば女性、親、および$100,000より多い収入を表す)が共通の少なくとも1つの属性カテゴリ(たとえば、女性および$100,000より多い収入という属性カテゴリ)を有する場合、コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、クライアントデバイス110上で入力されるブラウジングイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)および少なくとも1つの共通の属性カテゴリをアグリゲーションAPIに送信することができる。1つまたは複数の属性カテゴリの第1のセットおよび1つまたは複数の属性カテゴリの第2のセットについて上で与えられた例では、女性および$Xより多い収入というカテゴリが共通であることに留意されたい。したがって、そのような例では、コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、クライアントデバイス110に入力されるブラウジングイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)および共通の属性カテゴリを特定するデータを、アグリゲーションAPIに送信する。
いくつかの実装形態では、報告は、デジタルコンテンツ提供者160による要求に応答したものであり得る。いくつかの実装形態では、報告は、コンテンツプラットフォーム150からの要求に応答したものであり得る。いくつかの実装形態では、報告は、特定のタイプのユーザ対話(たとえば、コンテンツアイテムなどの特定のデジタルコンテンツの表示、デジタルコンテンツアイテムの1回または複数回のクリック、デジタルコンテンツアイテムを使用して宣伝される製品を購入するための製品購入ウェブページに進むことなどのデジタルコンテンツアイテムと関連付けられるコンバージョンなど)に応答したものであり得る。
アグリゲーションAPIは、ブラウジングイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)および少なくとも1つの共通の属性カテゴリを、他のユーザの少なくとも1つのブラウジングイベントおよび1つまたは複数の属性カテゴリの第1のセットのうちの1つである関連する少なくとも1つの属性カテゴリと組み合わせて、集約されたデータを生成する。上で使用される例では、アグリゲーションAPIは、女性および$Xより多い収入というカテゴリに対するブラウジングイベントのためのデータを、女性および$Xより多い収入というカテゴリ内にある、このデジタルコンポーネントに関する他のユーザのブラウジングイベントと組み合わせる。この例では、アグリゲーションは、親という共通ではないカテゴリ(すなわち、1つまたは複数の属性カテゴリの第1のセットと1つまたは複数の属性カテゴリの第2のセットとの間で共通ではない)を考慮せず、それは、デジタルコンポーネント提供者が、親というカテゴリではなく、女性および$Xより多い収入という指定されたカテゴリだけの報告を望むからである。いくつかの例では、集約されたデータは、上で論じられたTable7(表7)と同じまたは類似する表であり得る。アグリゲーションは、あらかじめ設定された長さの時間(たとえば、1時間、12時間、1日、2日、5日、1カ月、または任意の他の期間)データを集約することができる。たとえば、Table7(表7)では、インプレッション、クリック、およびコンバージョンのカウントは1日ごとである。
アグリゲーションは、不正を防ぎユーザプライバシーを保護するためにセキュアな方式で次のように実行される。アグリゲーションAPIがアグリゲーションシステム180と通信する。アグリゲーションシステム180は、コンテンツプラットフォーム150、別個の報告プラットフォーム、クライアントデバイス110、ウェブサイト142、発行者140、および/またはデジタルコンポーネント提供者160に通信可能に結合される1つまたは複数のコンピュータであり得る。アグリゲーションシステム180は、クライアントデバイス110から受信されるデータに基づいて、集約されたネットワーク測定結果を生成することができる。いくつかの実装形態では、集約されることになるデータは、ウェブブラウザまたはネイティブアプリケーションであり得るアプリケーション112によって、アグリゲーションシステムに送信される。少数の実装形態では、集約されることになるデータは、クライアントデバイス110のオペレーティングシステムによってアグリゲーションシステムに送信され得る。そのような実装形態では、クライアントデバイス110上のウェブブラウザおよび/またはネイティブアプリケーションは、オペレーティングシステムにインプレッション、クリック、および/またはコンバージョンを報告するように構成され得る。オペレーティングシステムは、アプリケーション112によって実行されるものとして以下で説明されるインプレッションおよびコンバージョンを報告するための、動作の各々を実行することができる。
クライアントデバイス110上のアプリケーション112は、アグリゲーションシステム180に、ネットワークデータを表す暗号化されたデータを含む測定データ要素を提供することができる。ネットワークデータは、インプレッション、クリック、および/またはコンバージョンについてのデータを含み得る。たとえば、アプリケーション112は、それについてのコンバージョンデータがクライアントデバイス110に記憶される各コンバージョンのための測定データ要素を生成し、アグリゲーションシステム180に送信することができる。集約されたネットワーク測定結果は、1つまたは複数のデジタルコンポーネントの各々に対する、複数のクライアントデバイス110にわたるデジタルコンポーネントについてのインプレッション、クリック、および/またはコンバージョンの総数を含み得る。
アプリケーション112、セキュアMPCクラスタ130、コンテンツプラットフォーム150、および/またはアグリゲーションシステム180は、以下で説明されるように、閾値方式または二者間もしくは他のMPC計算システムなどの様々な技法を実装することによって、プライバシーを保護することができる。
いくつかの実装形態では、アプリケーション112は、(t,n)閾値方式を使用して、測定データ要素の中のデータを生成することができる。いくつかの実装形態では、アプリケーション112がコンバージョンを検出するとき、またはコンバージョンのためのコンバージョンデータを受け取るとき、アプリケーション112は、インプレッション、クリック、および/またはコンバージョンについてのデータに基づいて、グループキー(たとえば、多項式関数)を生成する。アプリケーション112は次いで、グループメンバーキーを生成することができ、グループメンバーキーは、グループキーの一部を表し、インプレッション、クリック、およびコンバージョンの同じセットに対する十分な数のグループメンバーキーが受信されるときにのみグループキーを再生成するために使用され得る。この例では、コンバージョンのための測定データ要素は、アプリケーション112によって生成されるグループメンバーキーと、インプレッション、クリック、およびコンバージョンのセットに対応するタグとを含み得る。インプレッション、クリック、およびコンバージョンの各々の固有のセットは対応する固有のタグを有し得るので、アグリゲーションシステム180は、インプレッション、クリック、および/またはコンバージョンの各セットに対する測定データ要素を、そのタグを使用して集約することができる。
(t,n)-閾値暗号方式では、アグリゲーションサーバは、インプレッションおよびコンバージョンのデータを復号することが可能になるように、インプレッション、クリック、および/またはコンバージョンの同じセットに対する少なくともt個のグループメンバーキーを受信する必要がある。t個未満のグループメンバーキーが受信される場合、アグリゲーションサーバは、インプレッション、クリック、および/またはコンバージョンについてのデータを復号することができない。同じインプレッションとコンバージョンのペアに対する少なくともt個の測定データ要素がクライアントデバイス110から受信されると、アグリゲーションシステム180は、少なくともt個のグループメンバーキーからグループキーを決定し、グループキーからインプレッションおよびコンバージョンのデータを取得することができる。
(t,n)-閾値暗号方式などの閾値暗号化技法は、グループキーを生成するためのシードとして、ネットワークデータ(たとえば、インプレッション、クリック、および/またはコンバージョンデータ)またはその一部またはその派生物を使用することができ、グループキーは次いで、測定されているネットワークデータを報告する複数のクライアントデバイスの複数のアプリケーション(たとえば、ウェブブラウザまたはネイティブアプリケーション)の間で分割される。これは、アプリケーション(またはクライアントデバイス)間での連携なしで、および中央システムがキーを各アプリケーションに分配する必要なく、同じネットワークデータを使用してネットワークデータを暗号化する同じグループキーを、異なるクライアントデバイス上で実行されるアプリケーションの各々が生成することを可能にする。代わりに、ネットワークイベント(たとえば、インプレッションおよび関連するコンバージョン)が発生する各アプリケーションは、たとえばデジタルコンポーネントおよび/またはリモートサーバから受信するネットワークデータを使用して、ネットワークデータを暗号化するグループキーを生成することができる。
各アプリケーションは、十分な数の他のグループメンバーキーと組み合わせられるとグループキーまたはグループキーの別の表現を再生成するために使用され得るグループメンバーキーを生成するために、異なる情報を使用することができる。たとえば、各アプリケーションは、アプリケーションの固有の識別子を使用してそのグループメンバーキーを生成することができるので、各アプリケーションは、アプリケーション間の連携なしで、各々の他のアプリケーションとは異なるグループメンバーキーを生成する。各アプリケーションによる異なるグループメンバーキーのこの生成は、合計で少なくとも閾値の数「t」個のグループメンバーキーになるグループメンバーキーの任意の組合せが受信されるとき、グループキーが再生成されることを可能にする。したがって、ネットワークデータは、少なくともt個のグループメンバーキーが受信されるときには復号できるが、t個未満のグループメンバーキーが受信される場合には復号できない。アプリケーション間の連携なしでアプリケーション間でのそのような秘密分散を可能にすることは、ユーザのデバイス間の通信を不可能にすることによってユーザプライバシーを保護し、そのような通信によって消費される帯域幅を減らし、単に単一の秘密鍵が各アプリケーションに渡される場合に起き得る測定の不正を防ぐ。
アグリゲーションシステム180は、インプレッション、クリック、および/またはコンバージョンのセットに対する、インプレッション、クリック、および/またはコンバージョンについてのデータを含む、受信される測定データ要素の数に基づいて、インプレッションに対するクリックおよび/またはコンバージョンの量を決定することができる。たとえば、少なくともt個のグループメンバーキーを使用してインプレッション、クリック、およびコンバージョンのデータを取得した後、アグリゲーションシステム180は、コンバージョンの量として、インプレッション、クリック、および/またはコンバージョンのセットのために受信されるグループメンバーキーの数のカウントを決定することができる。アグリゲーションシステム180は、インプレッション、クリック、および/またはコンバージョンについてのデータを、アグリゲーションAPIを介してコンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)に報告することができる。
コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、アグリゲーションAPIから集約されたデータを受信することができる。報告を生成するために、コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、集約されたデータを使用することができる。報告を生成するために、コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、集約されたデータを表(たとえば、Table7(表7)の表、または同様の表)の中で並べ、表の中の集約されたデータに基づいて分析を生成し、表および分析を報告において組み合わせて提示することができる。表(たとえば、Table7(表7))ならびに報告の中のデータは、単一のユーザに対して個別にではなく、ユーザのすべてに対して全体として計算されるので、および、そのような表または報告は、アプリケーション112、ベンダー、プライバシーの専門家、またはいずれの他のそのようなエンティティによっても制御されないので、そのような報告は、クッキーの使用を避けながら、ユーザプライバシーを守り、ユーザデータの漏洩を防ぐ。コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、デジタルコンポーネント提供者160のアプリケーション(たとえば、ブラウザまたはネイティブアプリケーション)に報告および集約されたデータを送信することができる。報告は、デジタルコンポーネント提供者160のコンピューティングデバイス上で実装されるアプリケーションによって表示されるユーザインターフェースに提示され得る。
コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、報告を生成せよとの要求に応答して報告を生成することができる。いくつかの実装形態では、コンテンツプラットフォーム150(またはいくつかの実装形態では別個の報告プラットフォーム)は、デジタルコンテンツ提供者160から報告に対する要求を受け取ることができる。これらの実装形態と一貫する一例では、デジタルコンポーネント提供者160は、そのデジタルコンポーネント提供者160の特定のデジタルコンポーネントに対する報告を要求してもよい。別の例では、デジタルコンポーネント提供者は、そのデジタルコンポーネント提供者160のいくつかのデジタルコンポーネントに対する報告を要求してもよい。さらに別の例では、デジタルコンポーネント提供者は、そのデジタルコンポーネント提供者160の1つまたは複数のキャンペーンに対する報告を要求してもよい。いくつかの例では、デジタルコンポーネント提供者160は、1つまたは複数のキャンペーンID、1つまたは複数のデジタルコンポーネントID、1つまたは複数の属性ユーザグループID、および/または、報告が望まれる1つまたは複数のイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)を指定することによって、報告を要求してもよい。他の実装形態では、報告の生成に対する要求は自動的に生成され得る。スクリプトによる要求の自動生成は、(a)あらかじめ設定された間隔で、および/または、(b)コンテンツ提供者160のデジタルコンポーネントまたはキャンペーンと関連付けられる1つまたは複数のイベント、たとえばインプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在のカウントが特定の閾値を超えるとき(たとえば、女性によるクリックの回数が1000を超えるとき)、行われ得る。いくつかの実装形態では、スクリプトは、(a)コンテンツ提供者からの要求に応答して、および/または(b)自動的に、要求を生成することができる。一般に、報告はレイテンシの影響を受けず、報告を生成するのに1分以上かかることは不利ではないことがある。
閾値方式が上で説明されたが、いくつかの実装形態では、アグリゲーションシステム180は、セキュアマルチパーティ(たとえば、二者間)計算システムであり得る。アグリゲーションシステム180は、複数の場所にわたる情報を単一のプライバシーを保護する報告へと折りたたむことを可能にでき、これは、多数のクライアントデバイス110にわたってアグリゲーション閾値に達した後に報告の終点にデータを流す、書き込み専用の生成元ごとの(per-origin)データストアにより可能にされる。すなわち、データは、ブラウザまたは他のアプリケーションユーザにわたって十分に集約される場合にのみ、サーバ側のアグリゲーションサービスを使用して報告される。
属性報告のための技法
図13は、コンテンツプラットフォーム150によって実行されるような、属性報告のための例示的なプロセス1300を示す図である。報告はコンテンツプラットフォーム150によって実行されるものとして説明されているが、いくつかの実装形態では、上でも示されたように、報告は別個の報告プラットフォームによって実行され得る。コンテンツプラットフォーム150は、1302において、デジタルコンポーネント提供者160のアプリケーション(たとえば、ブラウザまたはネイティブアプリケーション)から、デジタルコンポーネントを伴うキャンペーンと、そのための属性報告がデジタルコンポーネント提供者により望まれる1つまたは複数の属性カテゴリの第1のセットとを特定する、データを受け取ることができる。デジタルコンポーネント提供者160は、このデータをそのようなアプリケーションに入力することができる。カテゴリの第1のセットは、たとえば、女性および$Xより多い収入を含み得る。いくつかの実装形態では、キャンペーンと1つまたは複数の属性カテゴリの第1のセットとを特定するデータは、アグリゲーションキーに含まれてもよく、これは、複数の値もしくは値の複数の列を有する合成キーまたは連結キーであり得る。
コンテンツプラットフォーム150は、1304において、デジタルコンポーネントが表示されている(または表示されることになる)クライアントデバイス110のユーザを、1つまたは複数の属性カテゴリの第2のセットと関連付けることができる。一例では、1つまたは複数の属性カテゴリの第2のセットは、女性、親、および$Xより多い収入を含む。この関連付けは、以下の2つの方法の少なくとも1つで実行され得る。第1の方法では、コンテンツプラットフォーム150は、クライアントデバイス110で実装されるアプリケーション112上でユーザにより提供される、1つまたは複数の属性カテゴリの第2のセットの自己識別を受け取ることができ、次いでコンテンツプラットフォーム150は、1つまたは複数の属性カテゴリの第2のセットにユーザをマッピングして、関連付けを実行することができる。第2の方法では、コンテンツプラットフォーム150は、MPCクラスタ130に、ユーザのブラウジング履歴を送信することができ、次いでコンテンツプラットフォーム150が、MPCクラスタ130内の機械学習モデルから、属性カテゴリの第2のセットを含むその機械学習モデルにより出力される推測を受け取ることができ、続いてコンテンツプラットフォームが、1つまたは複数の属性カテゴリの第2のセットにユーザをマッピングして、関連付けを実行することができる。
1つまたは複数の属性カテゴリの第1のセット(デジタルコンポーネント提供者160によるアプリケーション112への入力データとして、属性報告がデジタルコンポーネント提供者160によって望まれる属性カテゴリ、たとえば女性および$100,000より多い収入を表す)および1つまたは複数の属性カテゴリの第2のセット(機械学習によって生成されるユーザのユーザグループの推測、またはアプリケーション112上でユーザによって自己識別されるユーザグループのいずれか、たとえば女性、親、および$100,000より多い収入を表す)が共通の少なくとも1つの属性カテゴリ(たとえば、女性および$100,000より多い収入という属性カテゴリ)を有する場合、コンテンツプラットフォーム150は、1306において、クライアントデバイス110上で入力されるブラウジングイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)および少なくとも1つの共通の属性カテゴリをアグリゲーションAPIに送信することができる。1つまたは複数の属性カテゴリの第1のセットおよび1つまたは複数の属性カテゴリの第2のセットについて上で与えられた例では、女性および$Xより多い収入というカテゴリが共通であることに留意されたい。したがって、そのような例では、コンテンツプラットフォーム150は、クライアントデバイス110に入力されるブラウジングイベント(たとえば、インプレッション、クリックおよび/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)および共通の属性カテゴリを特定するデータを、アグリゲーションAPIに送信する。
アグリゲーションAPIは、ブラウジングイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)および少なくとも1つの共通の属性カテゴリを、他のユーザの少なくとも1つのブラウジングイベントおよび1つまたは複数の属性カテゴリの第1のセットのうちの1つである関連する少なくとも1つの属性カテゴリと組み合わせて、集約されたデータを生成する。上で使用される例では、アグリゲーションAPIは、女性および$Xより多い収入というカテゴリに対するブラウジングイベントのためのデータを、女性および$Xより多い収入というカテゴリ内にある、このデジタルコンポーネントに関する他のユーザのブラウジングイベントと組み合わせる。この例では、アグリゲーションは、親という共通ではないカテゴリ(すなわち、1つまたは複数の属性カテゴリの第1のセットと1つまたは複数の属性カテゴリの第2のセットとの間で共通ではない)を考慮せず、それは、デジタルコンポーネント提供者が、親というカテゴリではなく、女性および$Xより多い収入という指定されたカテゴリだけの報告を望むからである。いくつかの例では、集約されたデータは、上で論じられたTable7(表7)と同じまたは類似する表であり得る。アグリゲーションは、あらかじめ設定された長さの時間(たとえば、1時間、12時間、1日、2日、5日、1カ月、または任意の他の期間)のデータを集約することができる。たとえば、Table7(表7)では、インプレッション、クリック、およびコンバージョンのカウントは1日ごとである。
アグリゲーションAPIは詳しく上で説明されている。
コンテンツプラットフォーム150は、1308において、アグリゲーションAPIから集約されたデータを受信することができる。報告を生成するために、コンテンツプラットフォーム150は、集約されたデータを使用することができる。報告を生成するために、コンテンツプラットフォーム150は、集約されたデータを表(たとえば、Table7(表7)の表、または同様の表)の中で並べ、表の中の集約されたデータに基づいて分析を生成し、表および分析を報告において組み合わせて提示することができる。表(たとえば、Table7(表7))ならびに報告の中のデータは、単一のユーザに対して個別にではなく、ユーザのすべてに対して全体として計算されるので、および、そのような表または報告は、アプリケーション112、ベンダー、プライバシーの専門家、またはいずれの他のそのようなエンティティによっても制御されないので、そのような報告は、クッキーの使用を避けながら、ユーザプライバシーを守り、ユーザデータの漏洩を防ぐ。
コンテンツプラットフォーム150は、報告を生成せよとの要求に応答して報告を生成することができる。いくつかの実装形態では、コンテンツプラットフォーム150は、デジタルコンテンツ提供者160から報告に対する要求を受け取ることができる。これらの実装形態と一貫する一例では、デジタルコンポーネント提供者160は、そのデジタルコンポーネント提供者160の特定のデジタルコンポーネントに対する報告を要求してもよい。別の例では、デジタルコンポーネント提供者は、そのデジタルコンポーネント提供者160のいくつかのデジタルコンポーネントに対する報告を要求してもよい。さらに別の例では、デジタルコンポーネント提供者は、そのデジタルコンポーネント提供者160の1つまたは複数のキャンペーンに対する報告を要求してもよい。いくつかの例では、デジタルコンポーネント提供者160は、1つまたは複数のキャンペーンID、1つまたは複数のデジタルコンポーネントID、1つまたは複数の属性ユーザグループID、および/または報告が望まれる1つまたは複数のイベント(たとえば、インプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在)を指定することによって、報告を要求してもよい。他の実装形態では、報告の生成に対する要求は自動的に生成され得る。スクリプトによる要求の自動生成は、(a)あらかじめ設定された間隔で、および/または、(b)コンテンツ提供者160のデジタルコンポーネントまたはキャンペーンと関連付けられる1つまたは複数のイベント、たとえばインプレッション、クリック、および/もしくはコンバージョン、ならびに/またはそれらの欠如/不在のカウントが特定の閾値を超えるとき(たとえば、女性によるクリックの回数が1000を超えるとき)、行われ得る。いくつかの実装形態では、スクリプトは、(a)コンテンツ提供者からの要求に応答して、および/または(b)自動的に、要求を生成することができる。
コンテンツプラットフォーム150は、1310において、デジタルコンポーネント提供者160のアプリケーション(たとえば、ブラウザまたはネイティブアプリケーション)に報告および集約されたデータを送信することができる。報告は、デジタルコンポーネント提供者160のコンピューティングデバイス上で実装されるアプリケーションによって表示されるユーザインターフェースに表示され得る。一般に、報告はレイテンシの影響を受けない。たとえば、報告を生成するのに1分以上かかることは、不利ではないことがある。
図14は、属性ベースのデジタルコンポーネントの配信および属性報告を促進するためにクライアントデバイス110によって実行される例示的なプロセス1400を示す図である。クライアントデバイス110のアプリケーション112は、1402において1つまたは複数のコンピュータ(たとえば、2つのコンピューティングシステムMPC1およびMPC2を含むMPCクラスタ130)から、アプリケーションのユーザの推測される属性特徴を特定するデータを受信することができる。アプリケーション112は、1404において、デジタルコンポーネントに関する報告イベントに対するコンピュータ可読コードを含むデジタルコンテンツと、許可される属性ベースのユーザグループ識別子のセットおよびデジタルコンポーネントに対するキャンペーン識別子を指定するデータとを表示することができる。報告が実行されているデジタルコンテンツは、電子リソースのコンテンツ、たとえばウェブページの、またはネイティブアプリケーションのコンテンツであり得る。別の例では、報告が実行されているデジタルコンテンツは、電子リソースのデジタルコンポーネントスロットに表示されているデジタルコンポーネントであり得る。
アプリケーション112は、1406において、属性ベースのユーザグループ識別子の許可されるリストからの所与の許可される属性ベースのユーザグループ識別子と所与の推測される特徴が一致すると決定することができる。属性ベースのユーザグループ識別子の許可されるリストは、報告がデジタルコンテンツに対して許可される属性ベースのユーザグループ識別子を含み得る。たとえば、リストは、ユーザグループの所有者がデジタルコンテンツに対する報告を有効にした1つまたは複数のユーザグループを含み得る。このリストはデジタルコンテンツのスクリプトに含まれ得る。一致があるかどうかを決定するために、アプリケーション112は、ユーザをメンバーとして含むユーザグループに対するユーザグループ識別子のリストと、許可される属性ベースのユーザグループ識別子を比較することができる。
所与の推測される属性特徴が所与の許可される属性ベースのユーザグループ識別子と一致すると決定したことに応答して、アプリケーション112は、コンピュータ可読コードを使用して1408において、デジタルコンポーネントに対する1つまたは複数のイベントカウントおよび所与の許可される属性ベースのユーザグループ識別子を更新せよとの要求を生成して送信することができる。たとえば、この要求は、デジタルコンテンツを提示された、デジタルコンテンツと対話した、たとえばそれを選択した、またはデジタルコンテンツに関して何らかの他の活動を実行した、所与の許可された属性ベースのユーザグループ識別子によって識別される属性ベースのユーザグループの中のユーザの数を増やす、たとえばインクリメントすることであり得る。
1402におけるアプリケーション112のユーザの推測される属性特徴を特定するデータの受信は、クライアントデバイス110においてユーザを追加すべき属性ベースのユーザグループに対する推測される属性ベースのユーザグループ識別子を受信することを含む。いくつかの実装形態では、ユーザのユーザプロファイルを含む推測要求は、1つまたは複数のコンピュータに送信され得る。いくつかの実装形態では、2つ以上のコンピュータは、セキュアマルチパーティ計算を実施することが必要とされる。そのような推測要求は、ユーザのユーザプロファイルを含み得る。推測される属性ユーザグループ識別子は、推測要求に応答して1つまたは複数のコンピュータから受信され得る。
1つまたは複数のコンピュータへの推測要求の送信は、1つまたは複数のコンピュータを形成する各MPCコンピューティングシステム(たとえば、MPCサーバ)にユーザプロファイルのそれぞれの秘密シェアを送信することを含み得る。MPCクラスタ130は、推測される属性ベースのユーザグループ識別子の秘密シェアを生成するために1つまたは複数の機械学習モデルを使用してセキュアMPCプロセスを実行し、推測される属性ベースのユーザグループ識別子の秘密シェアをアプリケーション112に送信する。
デジタルコンポーネントを表示したことに応答して、アプリケーション112は、1つまたは複数のコンピュータに、アプリケーション112のユーザの推測される属性特徴を特定するデータに対する推測要求を送信することができる。推測要求は、ユーザのユーザプロファイルと、(i)デジタルコンポーネントが表示されるデジタルコンポーネントスロット、または(ii)デジタルコンポーネントのうちの少なくとも1つに関するコンテクスチュアル信号とを含んでもよく、推測される属性ユーザグループ識別子は、推測要求に応答して1つまたは複数のコンピュータから受信される。いくつかの例では、コンテクスチュアル信号は、リソースのuniform resource locator (URL)、クライアントデバイス110の位置、アプリケーション112の自然言語設定、デジタルコンポーネントスロットの数、折り畳みの上または下などの、コンテクスチュアルレベル信号を含み得る。いくつかの事例では、デジタルコンポーネントに対するコンテクスチュアル信号は、デジタルコンポーネントについての情報、デジタルコンポーネントのフォーマット(たとえば、画像、ビデオ、オーディオなど)、デジタルコンポーネントのサイズなどの、創造的な信号を含み得る。
コンピュータ可読コードを使用した、デジタルコンポーネントに対する1つまたは複数のイベントカウントおよび所与の許可される属性ベースのユーザグループ識別子を更新せよとの要求の生成と送信は、(i)キャンペーン識別子および所与の許可される属性ベースのユーザグループ識別子を含むアグリゲーションキーを生成することと、(ii)アグリゲーションキーを要求とともに送信することとを含み得る。
コンピュータ可読コードを使用した、デジタルコンポーネントに対する1つまたは複数のイベントカウントおよび所与の許可される属性ベースのユーザグループ識別子を更新せよとの要求の生成と送信は、アプリケーション112のアプリケーションプログラミングインターフェース(API)を呼び出して要求を送信することを含み得る。
いくつかの実装形態では、プロセス1400は、正しくない可能性のあるイベントカウントを更新するために使用され得る。たとえば、ユーザがデジタルコンテンツを提示されたことを報告するときに、ユーザは第1の属性ベースのユーザグループのメンバーであると推測された可能性がある。しかしながら、ある時間後に、ユーザは、第1の属性ベースのユーザグループと異なる第2の属性ベースのユーザグループの中にあると推測された。この例では、要求は、第1の属性ベースのユーザグループに対するイベントカウントをデクリメントし、第2の属性ベースのユーザグループに対するイベントカウントをインクリメントすることであり得る。
図15は、上で説明された動作を実行するために使用され得る例示的なコンピュータシステム1500のブロック図である。システム1500は、プロセッサ1510、メモリ1520、記憶デバイス1530、および入出力デバイス1540を含む。構成要素1510、1520、1530、および1540の各々は、たとえば、システムバス1550を使用して、相互接続され得る。プロセッサ1510は、システム1500内で実行するための命令を処理することが可能である。いくつかの実装形態では、プロセッサ1510は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ1510は、マルチスレッドプロセッサである。プロセッサ1510は、メモリ1520または記憶デバイス1530に記憶された命令を処理することが可能である。
メモリ1520は、システム1500内に情報を記憶する。一実装形態では、メモリ1520は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ1520は、揮発性メモリユニットである。別の実装形態では、メモリ1520は、不揮発性メモリユニットである。
記憶デバイス1530は、システム1500に大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス1530はコンピュータ可読媒体である。様々な異なる実装形態において、記憶デバイス1530は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
入出力デバイス1540は、システム1500のための入出力動作を提供する。いくつかの実装形態では、入出力デバイス1540は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス1560、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成されたドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどの、他の実装形態も使用され得る。
例示的な処理システムが図15で説明されているが、本明細書において説明される主題の実装形態および機能的動作は、他のタイプのデジタル電子回路において、または本明細書において開示される構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの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つまたは複数の特徴は、場合によっては、その組合せから削除されてもよく、特許請求される組合せは、副組合せまたは副組合せの変形を対象としてもよい。
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に行われること、または例示したすべての動作が行われることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは一般に、単一のソフトウェア製品に一緒に組み込まれてもよく、または複数のソフトウェア製品にパッケージ化されてもよいことを理解されたい。
このようにして、主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲に列挙される活動は、異なる順序で行われ、それでも望ましい結果を達成し得る。加えて、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。