(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-05
(45)【発行日】2023-10-16
(54)【発明の名称】勾配ブースティングを介したプライバシーを守る機械学習
(51)【国際特許分類】
G06N 20/00 20190101AFI20231006BHJP
【FI】
G06N20/00 130
(21)【出願番号】P 2022537713
(86)(22)【出願日】2021-10-08
(86)【国際出願番号】 US2021054183
(87)【国際公開番号】W WO2022076826
(87)【国際公開日】2022-04-14
【審査請求日】2022-07-08
(32)【優先日】2020-10-09
(33)【優先権主張国・地域又は機関】IL
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】イラン・マオ
(72)【発明者】
【氏名】ガン・ワン
(72)【発明者】
【氏名】マルセル・エム・モティ・ユン
【審査官】北川 純次
(56)【参考文献】
【文献】特開2017-207839(JP,A)
【文献】米国特許出願公開第2020/0242466(US,A1)
【文献】米国特許出願公開第2019/0073608(US,A1)
【文献】KANAGAVELU, Renuga et al.,Two-Phase Multi-Party Computation Enabled Privacy-Preserving Federated Learning,arXiv.org [online],2020年05月25日,pp. 1-11,[検索日 2023.08.29], インターネット:<URL:https://arxiv.org/pdf/2005.11901v1.pdf>,DOI:10.48550/arXiv.2005.11901
【文献】LIU, Lin et al.,Towards an Efficient Privacy-Preserving Decision Tree Evaluation Service in the Internet of Things,SYMMETRY [online],Vol. 12, No. 1,2020年01月06日,pp. 1-16,[検索日 2023.08.29], インターネット:<URL:https://www.mdpi.com/2073-8994/12/1/103>,DOI:10.3390/sym12010103
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
G06N 3/02-3/10
G09C 1/00
H04L 9/00
(57)【特許請求の範囲】
【請求項1】
複数のマルチパーティ計算(MPC)コンピューティングシステムの第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェアを備える推測要求を受信するステップと、
複数のユーザプロファイルを使用して訓練される第1の機械学習モデルに少なくとも一部基づいて、前記所与のユーザプロファイルに対する予測されるラベルを決定するステップと、
前記予測されるラベルの予測される誤差を示す前記所与のユーザプロファイルに対する予測される残差値を決定するステップであって、
前記第1のコンピューティングシステムによって、前記第1の機械学習モデルを使用して、前記所与のユーザプロファイルの前記第1のシェア、および前記複数のユーザプロファイルを使用して訓練される第2の機械学習モデル、および前記複数のユーザプロファイルに対する複数の真のラベルと前記複数のユーザプロファイルに対して決定されるような複数の予測されるラベルとの差を示すデータに少なくとも一部基づいて、前記所与のユーザプロファイルに対する前記予測される残差値の第1のシェアを決定するステップと、
前記第1のコンピューティングシステムによって前記複数のMPCコンピューティングシステムの第2のコンピューティングシステムから、前記所与のユーザプロファイルの第2のシェアおよび1つまたは複数の機械学習モデルの第2のセットに少なくとも一部基づいて、前記第2のコンピューティングシステムによって決定される前記所与のユーザプロファイルに対する前記予測される残差値の第2のシェアを示すデータを受信するステップと、
前記予測される残差値の前記第1および第2のシェアに少なくとも一部基づいて、前記所与のユーザプロファイルに対する前記予測される残差値を決定するステップと
を備える、ステップと、
前記第1のコンピューティングシステムによって、前記所与のユーザプロファイルに対して決定される前記予測されるラベルおよび前記予測される残差値に少なくとも一部基づいて、推測結果の第1のシェアを生成するステップと、
前記第1のコンピューティングシステムによってクライアントデバイスに、前記推測結果の前記第1のシェアおよび前記第2のコンピューティングシステムから受信された前記推測結果の第2のシェアを提供するステップとを備える、コンピュータで実施される方法。
【請求項2】
前記所与のユーザプロファイルに対する前記予測されるラベルを決定するステップが、
前記第1のコンピューティングシステムによって、(i)前記所与のユーザプロファイルの前記第1のシェア、(ii)前記複数のユーザプロファイルを使用して訓練される前記第1の機械学習モデル、および(iii)前記複数のユーザプロファイルに対する前記複数の真のラベルのうちの1つまたは複数に少なくとも一部基づいて、前記予測されるラベルの第1のシェアを決定するステップであって、前記複数の真のラベルが、前記複数のユーザプロファイルの中の各ユーザプロファイルに対する1つまたは複数の真のラベルを含む、ステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記所与のユーザプロファイルの第2のシェアおよび1つまたは複数の機械学習モデルの第1のセットに少なくとも一部基づいて、前記第2のコンピューティングシステムによって決定される前記予測されるラベルの第2のシェアを示すデータを受信するステップと、
前記予測されるラベルの前記第1および第2のシェアに少なくとも一部基づいて、前記予測されるラベルを決定するステップとを備える、請求項1に記載のコンピュータで実施される方法。
【請求項3】
前記第1のコンピューティングシステムによって、前記所与のユーザプロファイルの前記第1のシェアに変換を適用して、前記所与のユーザプロファイルの第1の変換されたシェアを取得するステップをさらに備え、前記第1のコンピューティングシステムによって、前記予測されるラベルの前記第1のシェアを決定するステップが、
前記第1のコンピューティングシステムによって、前記所与のユーザプロファイルの前記第1の変換されたシェアに少なくとも一部基づいて、前記予測されるラベルの第1のシェアを決定するステップ
を備える、請求項1または2に記載のコンピュータで実施される方法。
【請求項4】
前記変換がJohnson-Lindenstrauss(J-L)変換を備える、請求項3に記載のコンピュータで実施される方法。
【請求項5】
前記第1のコンピューティングシステムによって、前記予測されるラベルの前記第1のシェアを決定するステップが、
前記第1のコンピューティングシステムによって、前記所与のユーザプロファイルの前記第1の変換されたシェアを入力として前記第1の機械学習モデルに提供して、前記所与のユーザプロファイルに対する前記予測されるラベルの第1のシェアを出力として取得するステップを備える、請求項3に記載のコンピュータで実施される方法。
【請求項6】
前記第1の機械学習モデルの性能を評価するステップであって、前記複数のユーザプロファイルの各々に対して、
前記ユーザプロファイルに対する予測されるラベルを決定するステップであって、
前記第1のコンピューティングシステムによって、(i)前記ユーザプロファイルの第1のシェア、(ii)前記第1の機械学習モデル、および(iii)前記複数のユーザプロファイルに対する前記複数の真のラベルのうちの1つまたは複数に少なくとも一部基づいて、前記ユーザプロファイルに対する予測されるラベルの第1のシェアを決定するステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記ユーザプロファイルの第2のシェアおよび前記第2のコンピューティングシステムによって維持される1つまたは複数の機械学習モデルの第1のセットに少なくとも一部基づいて、前記第2のコンピューティングシステムによって決定される前記ユーザプロファイルに対する前記予測されるラベルの第2のシェアを示すデータを受信するステップと、
前記予測されるラベルの前記第1および第2のシェアに少なくとも一部基づいて、前記ユーザプロファイルに対する前記予測されるラベルを決定するステップと
を備える、ステップと、
前記予測されるラベルの誤差を示す前記ユーザプロファイルに対する残差値を決定するステップであって、
前記第1のコンピューティングシステムによって、前記ユーザプロファイルに対して決定される前記予測されるラベルおよび前記複数の真のラベルに含まれる前記ユーザプロファイルに対する真のラベルの第1のシェアに少なくとも一部基づいて、前記ユーザプロファイルに対する前記残差値の第1のシェアを決定するステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記ユーザプロファイルに対して決定される前記予測されるラベルおよび前記ユーザプロファイルに対する前記真のラベルの第2のシェアに少なくとも一部基づいて、前記第2のコンピューティングシステムによって決定される前記ユーザプロファイルに対する前記残差値の第2のシェアを示すデータを受信するステップと、
前記残差値の前記第1および第2のシェアに少なくとも一部基づいて、前記ユーザプロファイルに対する前記残差値を決定するステップと
を備える、ステップと
を備える、ステップと、
前記第1の機械学習モデルの前記性能を評価する際に、前記複数のユーザプロファイルに対して決定される前記残差値を示すデータを使用して前記第2の機械学習モデルを訓練するステップとをさらに備える、請求項1から5のいずれか一項に記載のコンピュータで実施される方法。
【請求項7】
前記第1の機械学習モデルの前記性能を評価する前に、
関数のパラメータのセットを導出するステップであって、
前記第1のコンピューティングシステムによって、前記複数の真のラベルの各々の第1のシェアに少なくとも一部基づいて、前記関数のパラメータの前記セットの第1のシェアを導出するステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記複数の真のラベルの各々の第2のシェアに少なくとも一部基づいて、前記第2のコンピューティングシステムによって導出される前記関数のパラメータの前記セットの第2のシェアを示すデータを受信するステップと、
前記関数のパラメータの前記セットの前記第1および第2のシェアに少なくとも一部基づいて、前記関数のパラメータの前記セットを導出するステップと
を備える、ステップと、
ユーザプロファイルが入力として与えられると、前記ユーザプロファイルに対する初期の予測されるラベルを生成し、パラメータの前記導出されたセットに基づいて定義されるように、前記関数を前記ユーザプロファイルに対する前記初期の予測されるラベルに適用して、前記ユーザプロファイルに対する予測されるラベルの第1のシェアを出力として生成するように前記第1の機械学習モデルを構成するステップとをさらに備える、請求項6に記載のコンピュータで実施される方法。
【請求項8】
前記第1のコンピューティングシステムによって、前記複数の真のラベルの各々の前記第1のシェアに少なくとも一部基づいて分布パラメータのセットの第1のシェアを推定するステップをさらに備え、前記第1のコンピューティングシステムによって、前記複数の真のラベルの各々の前記第1のシェアに少なくとも一部基づいて前記関数のパラメータの前記セットの前記第1のシェアを導出するステップが、
前記第1のコンピューティングシステムによって、分散パラメータの前記セットの前記第1のシェアに少なくとも一部基づいて、前記関数のパラメータの前記セットの第1のシェアを導出するステップを備える、請求項7に記載のコンピュータで実施される方法。
【請求項9】
分布パラメータの前記セットが、前記複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、および前記複数の真のラベルの中の第2の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータを含み、前記第2の値が前記第1の値と異なる、請求項8に記載のコンピュータで実施される方法。
【請求項10】
前記ユーザプロファイルに対する前記残差値の前記第1のシェアが、前記ユーザプロファイルに対して決定される前記予測されるラベルと前記ユーザプロファイルに対する前記真のラベルの前記第1のシェアとの値の差を示し、
前記ユーザプロファイルに対する前記残差値の前記第2のシェアが、前記ユーザプロファイルに対して決定される前記予測されるラベルと前記ユーザプロファイルに対する前記真のラベルの前記第2のシェアとの値の差を示す、請求項6に記載のコンピュータで実施される方法。
【請求項11】
前記第1の機械学習モデルが、前記第1のコンピューティングシステムによって維持されるk最近傍モデルを含み、
1つまたは複数の機械学習モデルの第1のセットが、前記第2のコンピューティングシステムによって維持されるk最近傍モデルを含み、
前記第2の機械学習モデルが、前記第1のコンピューティングシステムによって維持されるディープニューラルネットワーク(DNN)および前記第1のコンピューティングシステムによって維持される勾配ブースティング決定木(GBDT)のうちの少なくとも1つを含み、
1つまたは複数の機械学習モデルの前記第2のセットが、前記第2のコンピューティングシステムによって維持されるDNNおよび前記第2のコンピューティングシステムによって維持されるGBDTのうちの少なくとも1つを含む、請求項1または2に記載のコンピュータで実施される方法。
【請求項12】
前記第1のコンピューティングシステムによって、前記予測されるラベルの前記第1のシェアを決定するステップが、
前記第1のコンピューティングシステムによって、前記所与のユーザプロファイルの前記第1のシェアおよび前記第1のコンピューティングシステムによって維持される前記k最近傍モデルに少なくとも一部基づいて、最近傍ユーザプロファイルの第1のセットを特定するステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記所与のユーザプロファイルの前記第2のシェアおよび前記第2のコンピューティングシステムによって維持される前記k最近傍モデルに少なくとも一部基づいて、前記第2のコンピューティングシステムによって特定される最近傍プロファイルの第2のセットを示すデータを受信するステップと、
最近傍プロファイルの前記第1および第2のセットに少なくとも一部基づいて、前記複数のユーザプロファイルの中から前記所与のユーザプロファイルに最も似ていると見なされる最近傍ユーザプロファイルの数kを特定するステップと、
前記第1のコンピューティングシステムによって、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて、前記予測されるラベルの前記第1のシェアを決定するステップとを備える、請求項11に記載のコンピュータで実施される方法。
【請求項13】
前記第1のコンピューティングシステムによって、前記予測されるラベルの前記第1のシェアを決定するステップがさらに、
前記第1のコンピューティングシステムによって、前記k個の最近傍ユーザプロファイルに対する前記真のラベルの合計の第1のシェアを決定するステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記k個の最近傍ユーザプロファイルに対する前記真のラベルの前記合計の第2のシェアを受信するステップと、
前記k個の最近傍ユーザプロファイルに対する前記真のラベルの前記合計の前記第1および第2のシェアに少なくとも一部基づいて、前記k個の最近傍ユーザプロファイルに対する前記真のラベルの前記合計を決定するステップとを備える、請求項12に記載のコンピュータで実施される方法。
【請求項14】
前記第1のコンピューティングシステムによって、前記予測されるラベルの前記第1のシェアを決定するステップがさらに、
前記k個の最近傍ユーザプロファイルに対する前記真のラベルの前記合計に関数を適用して、前記所与のユーザプロファイルに対する前記予測されるラベルの前記第1のシェアを生成するステップを備える、請求項13に記載のコンピュータで実施される方法。
【請求項15】
前記所与のユーザプロファイルに対する前記予測されるラベルの前記第1のシェアが、前記k個の最近傍ユーザプロファイルに対する前記真のラベルの前記合計を備える、請求項13に記載のコンピュータで実施される方法。
【請求項16】
前記第1のコンピューティングシステムによって、前記k個の最近傍ユーザプロファイルの各々に対する前記真のラベルに少なくとも一部基づいて、前記予測されるラベルの前記第1のシェアを決定するステップが、
前記第1のコンピューティングシステムによって、カテゴリのセットに対応する前記k個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットの第1のシェアを決定するステップを備え、決定する前記ステップが、前記セットの中の各カテゴリに対して、それぞれ、
前記k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルの前記セットの中の前記カテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第1のシェアを決定するステップと、
前記第1のコンピューティングシステムによって前記第2のコンピューティングシステムから、前記k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルの前記セットの中の前記カテゴリに対応する真のラベルが前記第1の値の真のラベルである頻度の第2のシェアを受信するステップと、
前記k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルの前記セットの中の前記カテゴリに対応する真のラベルが前記第1の値の真のラベルである前記頻度の前記第1および第2のシェアに少なくとも一部基づいて、前記k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルの前記セットの中の前記カテゴリに対応する真のラベルが前記第1の値の真のラベルである前記頻度を決定するステップと
を備える、請求項12に記載のコンピュータで実施される方法。
【請求項17】
前記第1のコンピューティングシステムによって、予測されるラベルの前記セットの前記第1のシェアを決定するステップが、前記セットの中の各カテゴリに対して、
前記k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルの前記セットの中の前記カテゴリに対応する真のラベルが前記第1の値の真のラベルである前記頻度に、前記カテゴリに対応する関数を適用して、前記所与のユーザプロファイルに対する前記カテゴリに対応する予測されるラベルの第1のシェアを生成するステップを備える、請求項16に記載のコンピュータで実施される方法。
【請求項18】
前記クライアントデバイスが、前記クライアントデバイスのユーザのイベントに関連する特徴値および各特徴ベクトルに対する減衰率を各々含む、複数の特徴ベクトルを使用して前記所与のユーザプロファイルを計算する、請求項1に記載のコンピュータで実施される方法。
【請求項19】
前記クライアントデバイスが、前記クライアントデバイスのユーザのイベントに関連する特徴値を各々含む、複数の特徴ベクトルを使用して前記所与のユーザプロファイルを計算し、前記所与のユーザプロファイルを計算するステップが、
前記複数の特徴ベクトルのうちの1つまたは複数を疎特徴ベクトルとして分類するステップと、
前記複数の特徴ベクトルのうちの1つまたは複数を密特徴ベクトルとして分類するステップとを備え、
前記疎特徴ベクトルおよび密特徴ベクトルを使用して、前記1つまたは複数の第2のコンピューティングシステムに対する前記所与のユーザプロファイルの前記第1のシェアおよび前記所与のユーザプロファイルのそれぞれの第2のシェアを生成するステップをさらに備え、前記所与のユーザプロファイルの前記第1のシェアおよび前記それぞれ
の第2のシェアを生成するステップが、Function Secret Sharing(FSS)技法を使用して前記疎特徴ベクトルを分割するステップを備える、請求項1に記載のコンピュータで実施される方法。
【請求項20】
1つまたは複数のプロセッサと、
命令を記憶した1つまたは複数の記憶デバイスと
を備え、前記命令が、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から19のいずれか一項に記載の方法を実行させる、システム。
【請求項21】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から19のいずれか一項に記載の方法を実行させる命令を
記憶する、コンピュータ可読記憶媒体。
【請求項22】
コンピュータによって実行されると、前記コンピュータに、請求項1から19のいずれか一項に記載の方法のステップを実行させる命令を備える、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年10月9日に出願されたイスラエル出願第277910号の優先権を主張する。前述の出願の開示は、全体が参照によって本明細書に組み込まれる。
【0002】
本明細書は、セキュアなマルチパーティ計算を使用して機械学習モデルを訓練して使用する、プライバシーを保護する機械学習プラットフォームに関する。
【背景技術】
【0003】
一部の機械学習モデルは、たとえば複数のウェブサイトおよび/またはネイティブアプリケーションにわたり、複数のソースから収集されたデータに基づいて訓練される。しかしながら、このデータは、他の関係者に共有されるべきではない、または他の関係者に漏洩することが許容されるべきではない、私的なまたは機密扱いのデータを含み得る。
【発明の概要】
【課題を解決するための手段】
【0004】
全般に、本明細書において説明される主題の1つの革新的な態様は、マルチパーティ計算(MPC)計算システムの第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェアを含む推測要求を受信するステップと、複数のユーザプロファイルを使用して訓練される第1の機械学習モデルに少なくとも一部基づいて、所与のユーザプロファイルに対する予測されるラベルを決定するステップと、予測されるラベルの予測される誤差を示す所与のユーザプロファイルに対する予測される残差値を決定するステップと、第1のコンピューティングシステムによって、所与のユーザプロファイルおよび予測される残差値に対して決定される予測されるラベルに少なくとも一部基づいて、推測結果の第1のシェアを生成するステップと、第1のコンピューティングシステムによってクライアントデバイスに、推測結果の第1のシェアおよび第2のコンピューティングシステムから受信される推測結果の第2のシェアを提供するステップとを含む、方法において具現化され得る。所与のユーザプロファイルに対する予測される残差値を決定するステップは、第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェア、ユーザプロファイルを使用して訓練される第2の機械学習モデル、および、ユーザプロファイルに対する真のラベルと第1の機械学習モデルを使用してユーザプロファイルに対して決定されるような予測されるラベルとの差を示すデータに少なくとも一部基づいて、所与のユーザプロファイルに対する予測される残差値の第1のシェアを決定するステップと、第1のコンピューティングシステムによって第2のコンピューティングシステムから、所与のユーザプロファイルの第2のシェアおよび1つまたは複数の機械学習モデルの第2のセットに少なくとも一部基づいて、第2のコンピューティングシステムによって決定される所与のユーザプロファイルに対する予測される残差値の第2のシェアを示すデータを受信するステップと、予測される残差値の第1および第2のシェアに少なくとも一部基づいて、所与のユーザプロファイルに対する予測される残差値を決定するステップとを含む。この態様の他の実装形態は、コンピュータ記憶デバイスに符号化された方法の態様を実行するように構成された、対応する装置、システム、およびコンピュータプログラムを含む。
【0005】
これらのおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。いくつかの態様では、所与のユーザプロファイルに対する予測されるラベルを決定するステップは、第1のコンピューティングシステムによって、(i)所与のユーザプロファイルの第1のシェア、(ii)複数のユーザプロファイルを使用して訓練される第1の機械学習モデル、および、(iii)ユーザプロファイルに対する複数の真のラベルのうちの1つまたは複数に少なくとも一部基づいて、予測されるラベルの第1のシェアを決定するステップであって、真のラベルが複数のユーザプロファイルの中の各ユーザプロファイルに対する1つまたは複数の真のラベルを含む、ステップと、第1のコンピューティングシステムによってMPCコンピューティングシステムの第2のコンピューティングシステムから、所与のユーザプロファイルの第2のシェアおよび1つまたは複数の機械学習モデルの第1のセットに少なくとも一部基づいて、第2のコンピューティングシステムによって決定される予測されるラベルの第2のシェアを示すデータを受信するステップと、予測されるラベルの第1および第2のシェアに少なくとも一部基づいて、予測されるラベルを決定するステップとを含む。
【0006】
いくつかの実装形態では、方法はさらに、第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェアに変換を適用して、所与のユーザプロファイルの第1の変換されたシェアを取得するステップを含む。そのような実装形態では、第1のコンピューティングシステムによって、予測されるラベルの第1のシェアを決定するステップは、第1のコンピューティングシステムによって、所与のユーザプロファイルの第1の変換されたシェアに少なくとも一部基づいて、予測されるラベルの第1のシェアを決定するステップを含む。いくつかのそのような実装形態では、この変換は、Johnson-Lindenstrauss(J-L)変換などのランダム投影である。前述の実装形態のいくつかでは、第1のコンピューティングシステムによって、予測されるラベルの第1のシェアを決定するステップは、第1のコンピューティングシステムによって、所与のユーザプロファイルの第1の変換されたシェアを入力として第1の機械学習モデルに提供して、所与のユーザプロファイルに対する予測されるラベルの第1のシェアを出力として取得するステップを含む。
【0007】
いくつかの例では、方法はさらに、第1の機械学習モデルの性能を評価するステップと、第1の機械学習モデルの性能を評価する際に決定されるデータを使用して第2の機械学習モデルを訓練するステップとを含む。これらの例では、第1の機械学習モデルの性能を評価するステップは、複数のユーザプロファイルの各々に対して、ユーザプロファイルに対する予測されるラベルを決定するステップと、予測されるラベルの誤差を示すユーザプロファイルに対する残差値を決定するステップとを含む。また、これらの例では、ユーザプロファイルに対する予測されるラベルを決定するステップは、第1のコンピューティングシステムによって、(i)ユーザプロファイルの第1のシェア、(ii)第1の機械学習モデル、および、(iii)ユーザプロファイルに対する真のラベルのうちの1つまたは複数に少なくとも一部基づいて、ユーザプロファイルに対する予測されるラベルの第1のシェアを決定するステップと、第1のコンピューティングシステムによって第2のコンピューティングシステムから、ユーザプロファイルの第2のシェアおよび第2のコンピューティングシステムによって維持される1つまたは複数の機械学習モデルの第1のセットに少なくとも一部基づいて、第2のコンピューティングシステムによって決定されるユーザプロファイルに対する予測されるラベルの第2のシェアを示すデータを受信するステップと、予測されるラベルの第1および第2のシェアに少なくとも一部基づいて、ユーザプロファイルに対する予測されるラベルを決定するステップとを含む。加えて、そのような例では、ユーザプロファイルに対する残差値を決定するステップは、第1のコンピューティングシステムによって、ユーザプロファイルに対して決定される予測されるラベルおよび真のラベルに含まれるユーザプロファイルに対する真のラベルの第1のシェアに少なくとも一部基づいて、ユーザプロファイルに対する残差値の第1のシェアを決定するステップと、第1のコンピューティングシステムによって第2のコンピューティングシステムから、ユーザプロファイルに対して決定される予測されるラベルおよびユーザプロファイルに対する真のラベルの第2のシェアに少なくとも一部基づいて、第2のコンピューティングシステムによって決定されるユーザプロファイルに対する残差値の第2のシェアを示すデータを受信するステップと、残差値の第1および第2のシェアに少なくとも一部基づいて、ユーザプロファイルに対する残差値を決定するステップとを含む。前述の例では、第1の機械学習モデルの性能を評価する際に決定されるデータを使用して第2の機械学習モデルを訓練するステップは、第1の機械学習モデルの性能を評価する際にユーザプロファイルに対して決定される残差値を示すデータを使用して、第2の機械学習モデルを訓練するステップを含む。
【0008】
前述の例のいくつかにおいて、第1の機械学習モデルの性能を評価する前に、方法はさらに、関数のパラメータのセットを導出するステップと、ユーザプロファイルが入力として与えられると、ユーザプロファイルに対する初期の予測されるラベルを生成し、パラメータの導出されたセットに基づいて定義されるように、関数をユーザプロファイルに対する初期の予測されるラベルに適用して、ユーザプロファイルに対する予測されるラベルの第1のシェアを出力として生成するように第1の機械学習モデルを構成するステップとを含む。これらの例の少なくともいくつかでは、関数のパラメータのセットを導出するステップは、(i)第1のコンピューティングシステムによって、複数の真のラベルの各々の第1のシェアに少なくとも一部基づいて、関数のパラメータのセットの第1のシェアを導出するステップと、(ii)第1のコンピューティングシステムによって第2のコンピューティングシステムから、複数の真のラベルの各々の第2のシェアに少なくとも一部基づいて、第2のコンピューティングシステムによって導出される関数のパラメータのセットの第2のシェアを示すデータを受信するステップと、(iii)関数のパラメータのセットの第1および第2のシェアに少なくとも一部基づいて、関数のパラメータのセットを導出するステップとを含む。前述の例の少なくともいくつかでは、関数は二次多項式関数である。
【0009】
いくつかのそのような例では、方法はさらに、第1のコンピューティングシステムによって、複数の真のラベルの各々の第1のシェアに少なくとも一部基づいて、分布パラメータのセットの第1のシェアを推定するステップを含む。これらの例では、第1のコンピューティングシステムによって、複数の真のラベルの各々の第1のシェアに少なくとも一部基づいて関数のパラメータのセットの第1のシェアを導出するステップは、第1のコンピューティングシステムによって、分布パラメータのセットの第1のシェアに少なくとも一部基づいて、関数のパラメータのセットの第1のシェアを導出するステップを含む。前述の例の少なくともいくつかでは、分布パラメータのセットは、(i)複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、および(ii)複数の真のラベルの中の第2の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータを含む。これらの例では、第2の値は第1の値と異なる。さらに、前述の例の少なくともいくつかでは、ユーザプロファイルに対する残差値の第1のシェアは、ユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルの第1のシェアとの値の差を示し、ユーザプロファイルに対する残差値の第2のシェアは、ユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルの第2のシェアとの値の差を示す。
【0010】
いくつかの実装形態では、(i)第1の機械学習モデルは、第1のコンピューティングシステムによって維持されるk最近傍モデルを含み、(ii)1つまたは複数の機械学習モデルの第1のセットは、第2のコンピューティングシステムによって維持されるk最近傍モデルを含み、(iii)第2の機械学習モデルは、第1のコンピューティングシステムによって維持されるディープニューラルネットワーク(DNN)および第1のコンピューティングシステムによって維持される勾配ブースティング決定木(GBDT)のうちの少なくとも1つを含み、ならびに/または、(iv)1つまたは複数の機械学習モデルの第2のセットは、第2のコンピューティングシステムによって維持されるDNNおよび第2のコンピューティングシステムによって維持されるGBDTのうちの少なくとも1つを含む。
【0011】
これらの実装形態の少なくともいくつかでは、第1のコンピューティングシステムによって、予測されるラベルの第1のシェアを決定するステップは、(i)第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェアおよび第1のコンピューティングシステムによって維持されるk最近傍モデルに少なくとも一部基づいて、最近傍ユーザプロファイルの第1のセットを特定するステップと、(ii)第1のコンピューティングシステムによって第2のコンピューティングシステムから、所与のユーザプロファイルの第2のシェアおよび第2のコンピューティングシステムによって維持されるk最近傍モデルに少なくとも一部基づいて、第2のコンピューティングシステムによって特定される最近傍プロファイルの第2のセットを示すデータを受信するステップと、(iii)最近傍プロファイルの第1および第2のセットに少なくとも一部基づいて、ユーザプロファイルの中で所与のユーザプロファイルに最も似ていると見なされるk個の最近傍ユーザプロファイルを特定するステップと、(iv)第1のコンピューティングシステムによって、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて、予測されるラベルの第1のシェアを決定するステップとを含む。
【0012】
前述の実装形態の少なくともいくつかでは、第1のコンピューティングシステムによって、予測されるラベルの第1のシェアを決定するステップはさらに、(i)第1のコンピューティングシステムによって、k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1のシェアを決定するステップと、(ii)第1のコンピューティングシステムによって第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対する真のラベルの合計の第2のシェアを受信するステップと、(iii)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定するステップとを含む。さらに、いくつかのそのような実装形態では、第1のコンピューティングシステムによって、予測されるラベルの第1のシェアを決定するステップはさらに、k個の最近傍ユーザプロファイルに対する真のラベルの合計に関数を適用して、所与のユーザプロファイルに対する予測されるラベルの第1のシェアを生成するステップを含む。前述の実装形態のいくつかでは、所与のユーザプロファイルに対する予測されるラベルの第1のシェアは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を含む。
【0013】
前述の実装形態のいくつかでは、第1のコンピューティングシステムによって、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルの第1のシェアを決定するステップは、第1のコンピューティングシステムによって、それぞれ、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットの第1のシェアを決定するステップを含む。これらの実装形態では、第1のコンピューティングシステムによって、予測されるラベルのセットの第1のシェアを決定するステップは、セットの中の各カテゴリに対して、(i)k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第1のシェアを決定するステップと、(ii)第1のコンピューティングシステムによって第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第2のシェアを受信するステップと、(iii)k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するステップとを含む。これらの実装形態のいくつかでは、第1のコンピューティングシステムによって、予測されるラベルのセットの第1のシェアを決定するステップは、セットの中の各カテゴリに対して、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度に、カテゴリに対応する関数を適用して、所与のユーザプロファイルに対するカテゴリに対応する予測されるラベルの第1のシェアを生成するステップを含む。
【0014】
本明細書において説明される主題の別の革新的な態様は、コンピューティングシステムのセキュアMPCクラスタによって、所与のユーザプロファイルと関連付けられる推測要求を受信するステップと、MPCクラスタによって、複数のユーザプロファイルを使用して訓練される第1の機械学習モデルに少なくとも一部基づいて、所与のユーザプロファイルに対する予測されるラベルを決定するステップと、MPCクラスタによって、所与のユーザプロファイル、ユーザプロファイルを使用して訓練される第2の機械学習モデル、および、ユーザプロファイルに対する真のラベルと第1の機械学習モデルを使用してユーザプロファイルに対して決定されるような予測されるラベルとの差を示すデータに少なくとも一部基づいて、予測されるラベルの予測される誤差を示す所与のユーザプロファイルに対する予測される残差値を決定するステップと、MPCクラスタによって、所与のユーザプロファイルに対して決定される予測されるラベルおよび予測される残差値に少なくとも一部基づいて、推測結果を表すデータを生成するステップと、MPCクラスタによって、推測結果を表すデータをクライアントデバイスに提供するステップとを含む、方法において具現化され得る。この態様の他の実装形態は、コンピュータ記憶デバイスに符号化された方法の態様を実行するように構成された、対応する装置、システム、およびコンピュータプログラムを含む。
【0015】
これらのおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。いくつかの態様では、推測要求は、第2のコンピューティングシステムの暗号鍵を使用して暗号化された所与のユーザプロファイルの暗号化された第2のシェアを含む。いくつかの態様は、所与のユーザプロファイルの暗号化された第2のシェアを第2のコンピューティングシステムに送信するステップを含み得る。
【0016】
いくつかの態様では、所与のユーザプロファイルに対する予測されるラベルを決定するステップは、MPCクラスタによって、(i)所与のユーザプロファイル、(ii)ユーザプロファイルを使用して訓練される第1の機械学習モデル、および(iii)ユーザプロファイルに対する真のラベルのうちの1つまたは複数に少なくとも一部基づいて、所与のユーザプロファイルに対する予測されるラベルを決定するステップを含み、真のラベルは、複数のユーザプロファイルの中の各ユーザプロファイルに対する1つまたは複数の真のラベルを含む。
【0017】
いくつかの実装形態では、方法はさらに、MPCクラスタによって、所与のユーザプロファイルに変換を適用して、所与のユーザプロファイルの変換されたバージョンを取得するステップを含む。これらの実装形態では、MPCクラスタによって、予測されるラベルを決定するステップは、MPCクラスタによって、所与のユーザプロファイルの変換されたバージョンに少なくとも一部基づいて、予測されるラベルを決定するステップを含む。いくつかのそのような実装形態では、この変換は、Johnson-Lindenstrauss(J-L)変換などのランダム投影である。前述の実装形態の少なくともいくつかでは、MPCクラスタによって、予測されるラベルを決定するステップは、MPCクラスタによって、所与のユーザプロファイルの変換されたバージョンを入力として第1の機械学習モデルに提供して、所与のユーザプロファイルに対する予測されるラベルを出力として取得するステップを含む。
【0018】
いくつかの例では、方法はさらに、第1の機械学習モデルの性能を評価するステップと、第1の機械学習モデルの性能を評価する際に決定されるデータを使用して第2の機械学習モデルを訓練するステップとを含む。そのような例では、(1)MPCクラスタによって、(i)ユーザプロファイル、(ii)第1の機械学習モデル、および(iii)ユーザプロファイルに対する真のラベルのうちの1つまたは複数に少なくとも一部基づいて、ユーザプロファイルに対する予測されるラベルを決定するステップと、(2)MPCクラスタによって、ユーザプロファイルに対して決定される予測されるラベルおよび真のラベルに含まれるユーザプロファイルに対する真のラベルに少なくとも一部基づいて、予測されるラベルの予測される誤差を示すユーザプロファイルに対する残差値を決定するステップ。前述の例では、第1の機械学習モデルの性能を評価する際に決定されるデータを使用して第2の機械学習モデルを訓練するステップは、第1の機械学習モデルの性能を評価する際にユーザプロファイルに対して決定される残差値を示すデータを使用して、第2の機械学習モデルを訓練するステップを含む。
【0019】
前述の例の少なくともいくつかにおいて、第1の機械学習モデルの性能を評価する前に、方法はさらに、MPCクラスタによって、真のラベルに少なくとも一部基づいて関数のパラメータのセットを導出するステップと、ユーザプロファイルが入力として与えられると、ユーザプロファイルに対する初期の予測されるラベルを生成し、パラメータの導出されたセットに基づいて定義されるように、関数をユーザプロファイルに対する初期の予測されるラベルに適用して、ユーザプロファイルに対する予測されるラベルを出力として生成するように第1の機械学習モデルを構成するステップとを含む。いくつかのそのような例では、方法はさらに、MPCクラスタによって、真のラベルに少なくとも一部基づいて、正規分布パラメータのセットを推定するステップを含む。これらの例では、MPCクラスタによって、真のラベルに少なくとも一部基づいて関数のパラメータのセットを導出するステップは、MPCクラスタによって、正規分布パラメータの推定されるセットに少なくとも一部基づいて、関数のパラメータのセットを導出するステップを含む。前述の例のいくつかでは、分布パラメータのセットは、真のラベルの中の第1の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、および真のラベルの中の第2の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータを含み、第2の値は第1の値と異なる。さらに、前述の例のいくつかでは、関数は二次多項式関数である。前述の例の少なくともいくつかでは、ユーザプロファイルに対する残差値は、ユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルとの値の差を示す。
【0020】
いくつかの実装形態では、第1の機械学習モデルはk最近傍モデルを含む。これらの実装形態のいくつかでは、MPCクラスタによって、予測されるラベルを決定するステップは、(i)MPCクラスタによって、所与のユーザプロファイルおよびk最近傍モデルに少なくとも一部基づいて、ユーザプロファイルの中で所与のユーザプロファイルに最も似ていると見なされるk個の最近傍ユーザプロファイルを特定するステップと、(ii)MPCクラスタによって、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて、予測されるラベルを決定するステップとを含む。
【0021】
前述の実装形態の少なくともいくつかでは、MPCクラスタによって、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するステップは、MPCクラスタによって、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定するステップを含む。いくつかのそのような実装形態では、MPCクラスタによって、予測されるラベルを決定するステップはさらに、k個の最近傍ユーザプロファイルに対する真のラベルの合計に関数を適用して、所与のユーザプロファイルに対する予測されるラベルを生成するステップを含む。さらに、前述の実装形態のいくつかでは、所与のユーザプロファイルに対する予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を含む。
【0022】
前述の実装形態の少なくともいくつかでは、MPCクラスタによって、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するステップは、MPCクラスタによって、それぞれ、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットを決定するステップを含む。これらの実装形態では、MPCクラスタによって、予測されるラベルのセットを決定するステップは、セットの中の各カテゴリに対して、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するステップを含む。これらの実装形態のいくつかでは、MPCクラスタによって、予測されるラベルのセットを決定するステップは、セットの中の各カテゴリに対して、カテゴリに対応する関数を決定された頻度に適用して、所与のユーザプロファイルに対するカテゴリに対応する予測されるラベルを生成するステップを含む。
【0023】
いくつかの例では、真のラベルの各々は暗号化される。いくつかの実装形態では、推測結果は、予測されるラベルと予測される残差値の合計を含む。いくつかの例では、第2の機械学習モデルは、ディープニューラルネットワーク、勾配ブースティング決定木、およびランダムフォレストモデルのうちの少なくとも1つを含む。
【0024】
いくつかの例では、クライアントデバイスは、クライアントデバイスのユーザのイベントに関連する特徴値および各特徴ベクトルに対する減衰率を各々含む、複数の特徴ベクトルを使用して所与のユーザプロファイルを計算する。
【0025】
いくつかの例では、クライアントデバイスは、クライアントデバイスのユーザのイベントに関連する特徴値を各々含む、複数の特徴ベクトルを使用して所与のユーザプロファイルを計算する。所与のユーザプロファイルを計算することは、特徴ベクトルのうちの1つまたは複数を疎特徴ベクトルとして分類し、特徴ベクトルのうちの1つまたは複数を密特徴ベクトルとして分類することを含み得る。一部の態様は、疎特徴ベクトルおよび密特徴ベクトルを使用して、1つまたは複数の第2のコンピューティングシステムに対する所与のユーザプロファイルの第1のシェアおよび所与のユーザプロファイルのそれぞれの第2のシェアを生成するステップを含み得る。所与のユーザプロファイルの第1のシェアおよびそれぞれの1つまたは複数の第2のシェアを生成することは、Function Secret Sharing(FSS)技法を使用して疎特徴ベクトルを分割することを含み得る。
【0026】
本明細書において説明される主題のさらに別の革新的な態様は、複数のMPCシステムの第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェアを備える推測要求を受信するステップと、複数のユーザプロファイルのうちで所与のユーザプロファイルに最も似ていると見なされるk個の最近傍ユーザプロファイルを特定するステップであって、第1のコンピューティングシステムによって、所与のユーザプロファイルの第1のシェアおよびユーザプロファイルを使用して訓練される第1のk最近傍モデルに基づいて、最近傍ユーザプロファイルの第1のセットを特定するステップを含む、ステップと、第1のコンピューティングシステムによって、複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムの各々から、所与のユーザプロファイルのそれぞれの第2のシェアおよび第2のコンピューティングシステムによって訓練されるそれぞれの第2のk最近傍モデルに基づいて、第2のコンピューティングシステムによって特定される最近傍プロファイルのそれぞれの第2のセットを示すデータを受信するステップと、第1のコンピューティングシステムによって、最近傍ユーザプロファイルの第1のセットおよび最近傍ユーザプロファイルの各々の第2のセットに基づいて、最近傍ユーザプロファイルの数kを特定するステップと、第1のコンピューティングシステムによって、k個の最近傍ユーザプロファイルの各々に対するそれぞれのラベルに基づいて推測結果の第1のシェアを生成するステップであって、各ユーザプロファイルに対するラベルが、ユーザプロファイルに対応するユーザが追加される1つまたは複数のユーザグループを予測するものであり、推測結果が、所与のユーザプロファイルに対応する所与のユーザが所与のユーザグループに追加されるべきであるかどうかを示す、ステップと、第1のコンピューティングシステムによってクライアントデバイスに、推測結果の第1のシェアおよび1つまたは複数の第2のコンピューティングシステムの各々から受信される推測結果のそれぞれの第2のシェアを提供するステップとを含む、方法において具現化され得る。この態様の他の実装形態は、コンピュータ記憶デバイスに符号化された方法の態様を実行するように構成された、対応する装置、システム、およびコンピュータプログラムを含む。
【0027】
これらのおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。いくつかの態様では、推測要求は、第2のコンピューティングシステムの暗号鍵を使用して暗号化された所与のユーザプロファイルの暗号化された第2のシェアを含む。いくつかの態様は、所与のユーザプロファイルの暗号化された第2のシェアを第2のコンピューティングシステムに送信するステップを含み得る。
【0028】
いくつかの態様では、推測結果の第2のシェアは、クライアントデバイスのアプリケーションの暗号鍵を使用して暗号化される。いくつかの態様では、各ユーザプロファイルに対するラベルは、二項分類のためにブーリアン型である。推測結果の第1のシェアを生成することは、k個の最近傍ユーザプロファイルに対するラベルの合計の第1のシェアを決定することと、第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対するラベルの合計の第2のシェアを受信することと、ラベルの合計の第1のシェアおよびラベルの合計の第2のシェアに基づいて、ラベルの合計を決定することと、ラベルの合計が閾値を超えると決定することと、ラベルの合計が閾値を超えると決定したことに応答して、推測結果として所与のユーザを所与のユーザグループに追加すると決定することと、推測結果に基づいて推測結果の第1のシェアを生成することとを含み得る。
【0029】
いくつかの態様では、各ユーザプロファイルに対するラベルは数値を有する。推測結果の第1のシェアを生成することは、k個の最近傍ユーザプロファイルに対するラベルの合計の第1のシェアを決定することと、第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対するラベルの合計の第2のシェアを受信することと、ラベルの合計の第1のシェアおよびラベルの合計の第2のシェアに基づいて、ラベルの合計を決定することと、推測結果として、ラベルの合計に基づいて、所与のユーザが所与のユーザグループに入るべきであると決定するステップと、推測結果に基づいて推測結果の第1のシェアを生成するステップとを含み得る。
【0030】
いくつかの態様では、各ユーザプロファイルに対するラベルはカテゴリ値を有する。推測結果の第1のシェアを生成することは、ラベルのセットの中の各ラベルに対して、k個の最近傍プロファイルの中のユーザプロファイルがラベルを有する頻度の第1のシェアを決定することと、第2のコンピューティングシステムから、k個の最近傍プロファイルの中のユーザプロファイルがラベルを有する頻度の第2のシェアを受信することと、k個の最近傍プロファイルの中のユーザプロファイルがラベルを有する頻度の第1のシェアおよび第2のシェアに基づいて、k個の最近傍プロファイルの中のユーザプロファイルがラベルを有する頻度を決定することとを含み得る。いくつかの態様は、最高の頻度を有するラベルを特定することと、推測結果として、最高の頻度を有するラベルに対応する所与のユーザグループに入るように所与のユーザを割り当てることと、推測結果に基づいて推測結果の第1のシェアを生成することとを含み得る。
【0031】
いくつかの態様は、第1のk最近傍モデルを訓練することを含み得る。訓練することは、第2のコンピューティングシステムと連携して、ランダムビット反転パターンの第1のシェアを作成することと、ユーザプロファイルの中の各ユーザプロファイルの第1のシェアをランダム投影平面のセットへと投影することによって、ビット行列の第1のシェアを生成することと、ビット反転パターンの第1のシェアを使用してビット行列の第1のシェアの1つまたは複数のビットを修正することによって、ビット行列の第1のシェアを修正することと、ビット行列の修正された第1のシェアの第1の部分を第2のコンピューティングシステムに提供することと、第2のコンピューティングシステムから、複数のユーザプロファイルの中のユーザプロファイルの第2のシェアおよびランダムビット反転パターンの第2のシェアを使用して第2のコンピューティングシステムによって生成されるビット行列の修正された第2のシェアの第2の半分を受信することと、第1のコンピューティングシステムによって、ビット行列の修正された第1のシェアの第2の半分およびビット行列の修正された第2のシェアの第2の半分を使用して、第1のビット行列の第2の半分に対するビットベクトルを再構築することとを含む。第2のコンピューティングシステムと連携して、ランダムビット反転パターンの第1のシェアを作成することは、0または1の値を各々有する複数の第1の要素を備える第1のm次元ベクトルを生成することと、第1のm次元ベクトルを2つのシェアへと分割することと、第1のm次元ベクトルの第1のシェアを第2のコンピューティングシステムに提供することと、第2のm次元ベクトルの第1のシェアを第2のコンピューティングシステムから受信することと、第2のコンピューティングシステムと連携して、第1および第2のm次元ベクトルのシェアを使用してランダムビット反転パターンの第1のシェアを計算することとを含み得る。いくつかの態様では、複数のMPCコンピューティングシステムは、2つより多くのMPCコンピューティングシステムを含む。
【0032】
本明細書において説明される主題は、以下の利点のうちの1つまたは複数を実現するために特定の実施形態で実装され得る。本文書において説明される機械学習技法は、関心事が類似しているユーザを特定し、ユーザのプライバシーを保護しながら、たとえばユーザのオンライン活動をいずれのコンピューティングシステムにも漏洩することなく、ユーザグループのメンバー数を拡大することができる。これは、そのようなプラットフォームに関するユーザのプライバシーを保護し、送信の間の違反、またはプラットフォームから、データのセキュリティを保つ。セキュアマルチパーティ計算(MPC)などの暗号学的な技法は、サードパーティのクッキーを使用することなく、ユーザプロファイルの類似性に基づいてユーザグループの拡大を可能にし、これは、ユーザグループを拡大する能力に悪影響を及ぼすことなくユーザのプライバシーを守り、場合によっては、サードパーティのクッキーを使用して達成可能であるものより完全なプロファイルに基づいて、さらなるユーザグループの拡大をもたらす。MPC技法は、MPCクラスタの中のコンピューティングシステムのうちの1つが善良である限り、コンピューティングシステムまたは別の関係者のいずれもが、ユーザデータを平文で取得できないことを確実にすることができる。したがって、特許請求される方法は、ユーザデータ間の関係を決定するためにサードパーティのクッキーの使用を必要とすることなく、セキュアな方式でユーザデータの特定、グループ化、および送信を可能にする。これは、データ間の関係を決定するためにサードパーティのクッキーを一般に必要とする、以前の既知の方法とは異なるアプローチである。このようにユーザデータをグループ化することによって、特定のユーザに関連しないデータコンテンツを送信する必要がないので、データコンテンツをユーザデバイスに送信することの効率が向上する。具体的には、サードパーティのクッキーが必要とされないので、サードパーティのクッキーの記憶がなくなり、メモリ使用量を改善する。ユーザプロファイルを形成するために必要とされる生データのデータサイズを減らし、それにより、データストレージが非常に限られていることの多いクライアントデバイスのデータストレージ要件を下げるために、指数関数的減衰技法を使用して、クライアントデバイスにおいてユーザプロファイルを形成することができる。たとえばユーザグループ拡大のための分類の正確さは、別のモデル、たとえばk最近傍モデルに基づいて、より強いモデル、たとえばディープニューラルネットワークモデルを訓練することによって改善され得る。すなわち、本文書において説明される技法は、より弱い学習者に基づいて強い学習者を訓練することによって正確さを改善することができる。
【0033】
前述の主題の様々な特徴および利点は、以下で、図面に関して説明される。追加の特徴および利点は、本明細書において説明される主題および特許請求の範囲から明らかである。
【図面の簡単な説明】
【0034】
【
図1】セキュアMPCクラスタが機械学習モデルを訓練し、ユーザグループを拡大するために機械学習モデルが使用される環境のブロック図である。
【
図2】機械学習モデルを訓練し、機械学習モデルを使用してユーザをユーザグループに追加するための、例示的なプロセスのスイムレーン図である。
【
図3】ユーザプロファイルを生成し、ユーザプロファイルのシェアをMPCクラスタに送信するための、例示的なプロセスを示す流れ図である。
【
図4】機械学習モデルを生成するための例示的なプロセスを示す流れ図である。
【
図5】機械学習モデルを使用してユーザをユーザグループに追加するための例示的なプロセスを示す流れ図である。
【
図6】ユーザプロファイルに対する推測結果を生成するための例示的な枠組みの概念図である。
【
図7】性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的な枠組みの概念図である。
【
図8】MPCクラスタにおける性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的なプロセスを示す流れ図である。
【
図9】MPCクラスタにおける推測性能を向上させるための第2の機械学習モデルを準備してその訓練を行うための例示的なプロセスを示す流れ図である。
【
図10】第1の機械学習モデルの性能を評価するための例示的な枠組みの概念図である。
【
図11】MPCクラスタにおける第1の機械学習モデルの性能を評価するための例示的なプロセスを示す流れ図である。
【
図12】MPCクラスタのコンピューティングシステムにおける性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的なプロセスを示す流れ図である。
【
図13】例示的コンピュータシステムのブロック図である。
【発明を実施するための形態】
【0035】
様々な図面における同じ参照番号および名称は、同様の要素を示す。
【0036】
一般に、本文書は、ユーザのプライバシーを保護しデータセキュリティを確保しながらユーザグループのメンバー数を拡大するように、機械学習モデルを訓練して使用するための、システムおよび技法を説明する。一般に、コンテンツプラットフォームなどの他のエンティティのコンピューティングシステムにおいてユーザプロファイルを作成して維持するのではなく、ユーザプロファイルはユーザのクライアントデバイスにおいて維持される。機械学習モデルを訓練するために、ユーザのクライアントデバイスは、他のデータとともに、それらの暗号化されたユーザプロファイル(たとえば、ユーザプロファイルの秘密シェアとして)を、任意選択でコンテンツプラットフォームを介して、セキュアマルチパーティ計算(MPC)クラスタの複数のコンピューティングシステムに送信することができる。たとえば、各クライアントデバイスは、ユーザプロファイルの2つ以上の秘密シェアを生成し、それぞれの秘密シェアを各コンピューティングシステムに送信することができる。MPCクラスタのコンピューティングシステムは、MPCクラスタ(またはユーザ自身ではない他の関係者)のコンピューティングシステムがユーザのプロファイルを平文で取得するのを防ぎ、それによりユーザのプライバシーを守るような方法で、ユーザのプロファイルに基づいてユーザに対するユーザグループを提案するための機械学習モデルを訓練するために、MPC技法を使用することができる。たとえば、本文書において説明される秘密シェアおよびMPC技法を使用すると、各ユーザのユーザプロファイルデータがユーザのデバイスの外部にあるとき、そのデータが常に暗号化されている間に、機械学習モデルの訓練と使用が可能になる。機械学習モデルは、k最近傍(k-NN)モデルであり得る。
【0037】
機械学習モデルが訓練された後、ユーザのプロファイルに基づいて各ユーザに対する1つまたは複数のユーザグループを提案するために、機械学習モデルが使用され得る。たとえば、ユーザのクライアントデバイスは、そのユーザに対する提案されるユーザグループについてMPCクラスタにクエリし、またはユーザが特定のユーザグループに追加されるべきであるかどうかを決定することができる。二項分類、回帰(たとえば、算術平均または二乗平均平方根を使用した)、および/またはユーザグループを特定するためのマルチクラス分類などの、様々な推測技法が使用され得る。ユーザのユーザグループメンバーシップが、プライバシー保護、およびコンテンツをユーザに提供するためのセキュアな方法において使用され得る。
【0038】
機械学習モデルを生成して使用するための例示的なシステム
図1は、セキュアMPCクラスタ130が機械学習モデルを訓練し、ユーザグループを拡大するために機械学習モデルが使用される環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアMPCクラスタ130、発行者140、ウェブサイト142、およびコンテンツプラットフォーム150を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアMPCクラスタ130、発行者140、ウェブサイト142、およびコンテンツプラットフォーム150を含み得る。
【0039】
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送信し、受信することができる他のデバイスを含む。クライアントデバイスはまた、マイクロフォンを介してオーディオ入力を受け入れ、スピーカを介してオーディオ出力を出力するデジタルアシスタントデバイスも含み得る。デジタルアシスタントは、オーディオ入力を受け入れるためにマイクロフォンを起動する「ホットワード」または「ホットフレーズ」を検出すると、聴取モードになり得る(たとえば、オーディオ入力を受け入れる準備ができている)。デジタルアシスタントデバイスはまた、画像をキャプチャし、情報を視覚的に提示するためのカメラおよび/またはディスプレイも含み得る。デジタルアシスタントは、ウェアラブルデバイス(たとえば、腕時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスで実装され得る。クライアントデバイスはまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイに差し込まれるストリーミングデバイス、またはゲームデバイス、またはゲームコンソールを含み得る。
【0040】
クライアントデバイス110は通常、ネットワーク105を介してデータを送信すること、および受信することを円滑にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)のために開発されたアプリケーションである。発行者140は、ネイティブアプリケーションを開発し、クライアントデバイス110に提供する、たとえばダウンロード可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザが、ウェブブラウザのアドレスバーにリソース145のリソースアドレスを入力したこと、またはリソースアドレスを参照するリンクを選択したことに応答して、発行者140のウェブサイト142をホストするウェブサーバからのリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者のリモートサーバからのアプリケーションコンテンツを要求することができる。
【0041】
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、デジタルコンポーネントにリソース145またはアプリケーションページを提示するためのデジタルコンポーネントスロットを含み得る。本明細書全体にわたって使用されるように、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの一種である。たとえば、デジタルコンポーネントは、アプリケーション112によって提示されるウェブページまたは他のリソースのコンテンツを補足することが意図されるコンテンツであってもよい。より具体的には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含み得る(たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連し得る)。したがって、デジタルコンポーネントの提供は、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
【0042】
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードすると、アプリケーション112は、各スロットのデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112に、デジタルコンポーネントを選択しクライアントデバイス110のユーザへの提示のためにデジタルコンポーネントをアプリケーション112に提供するデジタルコンポーネント配信システムからデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含み得る。
【0043】
コンテンツプラットフォーム150は、供給側プラットフォーム(SSP)および需要側プラットフォーム(SSP)を含み得る。一般に、コンテンツプラットフォーム150は、発行者140およびデジタルコンポーネント提供者160の代わりに、デジタルコンポーネントの選択と分散を管理する。
【0044】
一部の発行者140は、SSPを使用して、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットのためのデジタルコンポーネントを取得するプロセスを管理する。SSPは、リソースおよび/またはアプリケーションのためのデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各発行者140は、対応するSSPまたは複数のSSPを有し得る。一部の発行者140は、同じSSPを使用することがある。
【0045】
デジタルコンポーネント提供者160は、発行者のリソースおよびアプリケーションのデジタルコンポーネントスロットに提示されるデジタルコンポーネントを作成(または別様に発行)することができる。デジタルコンポーネント提供者160は、DSPを使用して、デジタルコンポーネントスロットにおいて提示するためにそのデジタルコンポーネントのプロビジョニングを管理することができる。DSPは、リソースおよび/またはアプリケーションを用いて提示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSPは、デジタルコンポーネント提供者160に代わって複数の供給側プラットフォーム(SSP)と対話して、複数の異なる発行者140のリソースおよび/またはアプリケーションを用いて提示するためのデジタルコンポーネントを提供することができる。一般に、DSPは、デジタルコンポーネントに対する要求を(たとえば、SSPから)受信し、要求に基づいて1つまたは複数のデジタルコンポーネント提供者によって作成された1つまたは複数のデジタルコンポーネントに対する選択パラメータを生成(または選択)し、デジタルコンポーネントに関するデータ(たとえば、デジタルコンポーネント自体)および選択パラメータをSSPに提供することができる。次いで、SSPは、クライアントデバイス110での提示のためのデジタルコンポーネントを選択し、クライアントデバイス110にデジタルコンポーネントを提示させるデータをクライアントデバイス110に提供することができる。
【0046】
いくつかの場合、ウェブページ、アプリケーションページ、または、以前にユーザが訪問した、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザグループ、たとえばユーザ関心グループ、類似するユーザのコホート、または類似するユーザデータに関わる他のグループタイプに割り当てられ得る。たとえば、ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定の行動を実行する(たとえば、ウェブページに提示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザ関心グループに割り当てられ得る。別の例では、ユーザは、活動の履歴、たとえば訪問したリソースの履歴および/またはリソースにおいて実行される行動に基づいて、ユーザグループに割り当てられ得る。いくつかの実装形態では、ユーザグループはデジタルコンポーネント提供者160によって生成され得る。すなわち、各デジタルコンポーネント提供者160は、ユーザがデジタルコンポーネント提供者160の電子リソースを訪れるとき、ユーザを自分のユーザグループに割り当てることができる。
【0047】
ユーザのプライバシーを保護するために、ユーザのグループメンバーシップは、デジタルコンポーネント提供者、コンテンツプラットフォーム、または他の関係者によってではなく、たとえばアプリケーション112のうちの1つ、またはクライアントデバイス110のオペレーティングシステムによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、信頼されるプログラム(たとえば、ウェブブラウザ)またはオペレーティングシステムは、ウェブブラウザまたは別のアプリケーションを使用して、ユーザのためのユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、ユーザが追加された各ユーザグループのためのグループ識別子を含み得る。ユーザグループを作成するデジタルコンポーネント提供者160は、それらのユーザグループのためのユーザグループ識別子を指定することができる。ユーザグループのためのユーザグループ識別子は、グループを記述するもの(たとえば、ガーデニンググループ)またはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザのためのユーザグループリストは、クライアントデバイス110のセキュアなストレージに記憶されてもよく、および/または、他者がリストにアクセスするのを防ぐために、記憶されるときに暗号化されてもよい。
【0048】
アプリケーション112がデジタルコンポーネント提供者160に関するリソースもしくはアプリケーションコンテンツを提示するとき、またはウェブサイト142上のウェブページを提示するとき、リソースは、1つまたは複数のユーザグループ識別子をユーザグループリストに追加するようにアプリケーション112に要求することができる。それに応答して、アプリケーション112は、1つまたは複数のユーザグループ識別子をユーザグループリストに追加し、ユーザグループリストをセキュアに記憶することができる。
【0049】
コンテンツプラットフォーム150は、ユーザのユーザグループメンバーシップを使用して、ユーザの関心の対象であり得るデジタルコンポーネントもしくは他のコンテンツを選択することができ、または、別の方法でユーザ/ユーザデバイスにとって有益であることがある。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザ体験を改善する、ユーザデバイスの動作を改善する、または何らかの他の方法でユーザもしくはユーザデバイスに利益をもたらす、データを備え得る。しかしながら、ユーザのユーザグループリストのユーザグループ識別子は、コンテンツプラットフォーム150がユーザグループ識別子を特定のユーザと相関付けるのを防ぎ、それにより、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザのプライバシーを守るような方法で、提供され得る。
【0050】
アプリケーション112は、コンテンツプラットフォーム150またはユーザ自身ではない任意の他のエンティティがユーザの完全なユーザグループメンバーシップを知るのを防ぐような方法で、ユーザグループメンバーシップに基づいてクライアントデバイス110において提示するためのデジタルコンポーネントを選択するために、コンテンツプラットフォーム150と対話する信頼されるコンピューティングシステムにユーザグループリストからのユーザグループ識別子を提供することができる。
【0051】
いくつかの場合、すでにユーザグループのメンバーであるユーザとして、類似する関心または他の類似するデータを有するユーザを含めるように、ユーザグループを拡大することが、ユーザおよびデジタルコンポーネント提供者にとって有益である。
【0052】
有利なことに、ユーザは、サードパーティのクッキーを使用することなくユーザグループに追加され得る。上で説明されたように、ユーザプロファイルは、クライアントデバイス110において維持され得る。これは、ユーザのクロスドメインブラウジング履歴を外部の関係者と共有できないようにすることによってユーザのプライバシーを守り、ネットワーク105を介してクッキーを送信することにより消費される帯域幅(これは、数百万人のユーザにわたって集約されると相当な量である)を減らし、通常はそのような情報を記憶するコンテンツプラットフォーム150のストレージ要件を減らし、クッキーを維持して送信するためにクライアントデバイス110によって使用される電池消費を減らす。
【0053】
たとえば、第1のユーザは雪山でのスキーに関心があることがあり、特定のスキーリゾートのためのユーザグループのメンバーであることがある。第2のユーザもスキーに関心があることがあるが、このスキーリゾートを知らず、スキーリゾートのメンバーではないことがある。これらの2人のユーザが類似する関心またはデータ、たとえば類似するユーザプロファイルを有する場合、スキーリゾートに関連し、第2のユーザまたはそのユーザデバイスの関心の対象であり得る、もしくは別様にそれらに有益であり得るコンテンツ、たとえばデジタルコンポーネントを第2のユーザが受信するように、第2のユーザがスキーリゾートのためのユーザグループに追加され得る。言い換えると、ユーザグループは、類似するユーザデータを有する他のユーザを含むように拡大され得る。
【0054】
セキュアMPCクラスタ130は、ユーザのプロファイルに基づいて、ユーザグループをユーザ(またはユーザのアプリケーション112)に提案する、またはその提案を生成するために使用され得る、機械学習モデルを訓練することができる。セキュアMPCクラスタ130は、機械学習モデルを訓練するためにセキュアMPC技法を実行する、2つのコンピューティングシステムMPC1およびMPC2を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、1つより多くのコンピューティングシステムをMPCクラスタ130が含む限り、より多くのコンピューティングシステムも使用され得る。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な数のコンピューティングシステムを含み得る。MPCクラスタ130の中のより多くのコンピューティングシステムを使用することは、さらなるセキュリティおよび誤り耐性をもたらすことができるが、MPCプロセスの複雑さも向上させることがある。
【0055】
コンピューティングシステムMPC1およびMPC2は、異なるエンティティによって運用され得る。このようにすると、各エンティティは、平文の完全なユーザプロファイルにアクセスすることができない。平文は、鍵もしくは他の復号デバイス、または他の復号プロセスを必要とせずに閲覧または使用することができる形式の、計算的にタグ付けされていない、特別にフォーマットされていない、または暗号で書かれていないテキスト、またはバイナリファイルを含むデータである。たとえば、コンピューティングシステムMPC1またはMPC2のうちの1つは、ユーザ、発行者140、コンテンツプラットフォーム150、およびデジタルコンポーネント提供者160とは異なる信頼される関係者により運用され得る。たとえば、業界団体、政府団体、またはブラウザ開発者が、コンピューティングシステムMPC1およびMPC2のうちの1つを維持して運用し得る。他のコンピューティングシステムは、これらのグループのうちのある異なるグループにより運用されることがあるので、異なる信頼される関係者が各コンピューティングシステムMPC1およびMPC2を運用する。好ましくは、異なるコンピューティングシステムMPC1およびMPC2を運用する異なる関係者には、共謀してユーザのプライバシーを脅かすような動機がない。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、アーキテクチャが分離されており、本文書において説明されるセキュアMPCプロセスを実行すること以外に互いに通信しないように監視される。
【0056】
いくつかの実装形態では、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に示され、以下で説明される。
【0057】
コンテンツプラットフォーム150のためのk-NNモデルを訓練した後、コンテンツプラットフォーム150は、クライアントデバイス110のユーザのための1つまたは複数のユーザグループを特定するようにk-NNモデルにクエリすることができ、または、そのクエリをクライアントデバイス110のアプリケーション112に行わせることができる。たとえば、コンテンツプラットフォーム150は、ユーザに最も近い閾値の「k」個のユーザプロファイルが特定のユーザグループのメンバーであるかどうかを決定するように、k-NNモデルにクエリすることができる。そうである場合、コンテンツプラットフォーム150はユーザをそのユーザグループに追加し得る。ユーザグループがユーザのために特定される場合、コンテンツプラットフォーム150またはMPCクラスタ130は、ユーザをユーザグループに追加するようにアプリケーション112に要求することができる。ユーザおよび/またはアプリケーション112によって承認される場合、アプリケーション112は、クライアントデバイス110に記憶されているユーザグループリストにユーザグループのためのユーザグループ識別子を追加することができる。
【0058】
いくつかの実装形態では、アプリケーション112は、ユーザが割り当てられるユーザグループをユーザが管理することを可能にするユーザインターフェースを提供することができる。たとえば、ユーザインターフェースは、ユーザが、ユーザグループ識別子を削除すること、すべてのまたは特定のリソース145、発行者140、コンテンツプラットフォーム150、デジタルコンポーネント提供者160、および/またはMPCクラスタ130がユーザをユーザグループに追加するのを防ぐこと(たとえば、アプリケーション112によって維持されるユーザグループ識別子のリストにエンティティがユーザグループ識別子を追加するのを防ぐこと)を可能にできる。これは、さらなる透明性、選択/同意、およびユーザの制御権をもたらす。
【0059】
本文書全体の説明に加えて、ユーザには、本明細書において説明されるシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会的な行動もしくは活動、職業、ユーザの選好、またはユーザの現在の位置についての情報)の収集を可能にし得るかどうか、およびいつそれを可能にし得るかということと、サーバからのコンテンツまたは通信がユーザに送信されるかどうかということとの両方に関しての選択を、ユーザが行うことを可能にする制御権(たとえば、ユーザが対話できるユーザインターフェース要素)が与えられ得る。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われ得る。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的な位置を決定できないように、位置情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
【0060】
機械学習モデルを生成して使用するための例示的なプロセス
図2は、機械学習モデルを訓練し、機械学習モデルを使用してユーザをユーザグループに追加するための、例示的なプロセス200のスイムレーン図である。プロセス200の動作は、たとえば、クライアントデバイス110、MPCクラスタ130のコンピューティングシステムMPC
1およびMPC
2、ならびにコンテンツプラットフォーム150によって実施され得る。プロセス200の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させ得る。プロセス200および以下の他のプロセスは、2つのコンピューティングシステムMPCクラスタ130に関して説明されるが、2つより多くのコンピューティングシステムを有するMPCクラスタも、同様のプロセスを実行するために使用され得る。
【0061】
コンテンツプラットフォーム150は、クライアントデバイス110上で実行されるアプリケーション112に、それらのそれぞれのユーザのためのユーザプロファイルを生成し、ユーザプロファイルの秘密分散されたおよび/または暗号化されたバージョンをMPCクラスタ130にアップロードするように要求することによって、機械学習モデルのうちの1つの訓練および/または更新を開始することができる。本文書では、ユーザプロファイルの秘密シェアは、秘密シェアが平文ではないので、ユーザプロファイルの暗号化されたバージョンであると見なされ得る。一般に、各アプリケーション112は、ユーザプロファイルのためのデータを記憶し、コンテンツプラットフォーム150から要求を受信したことに応答して、更新されたユーザプロファイルを生成することができる。ユーザプロファイルのコンテンツおよび機械学習モデルは、異なるコンテンツプラットフォーム150に対して異なるので、ユーザのクライアントデバイス110上で実行されるアプリケーション112は、複数のユーザプロファイルのためのデータを維持し、特定のコンテンツプラットフォームに各々固有である複数のユーザプロファイル、または特定のコンテンツプラットフォームによって所有される特定のモデルを生成することができる。
【0062】
クライアントデバイス110上で実行されるアプリケーション112は、クライアントデバイス110のユーザのためのユーザプロファイルを形成する(202)。ユーザのためのユーザプロファイルは、電子リソース、たとえばウェブページまたはアプリケーションコンテンツに関してユーザによって開始されるイベント、および/または、ユーザによって開始された可能性のあるイベントに関するデータを含み得る。イベントは、電子リソースの閲覧、デジタルコンポーネントの閲覧、電子リソースもしくはデジタルコンポーネントとのユーザ対話(またはその選択)もしくはユーザ対話の欠如、電子リソースとのユーザ対話の後で発生する変換、および/または、ユーザと電子リソースに関する他の適切なイベントを含み得る。
【0063】
ユーザのためのユーザプロファイルは、コンテンツプラットフォーム150に固有であってもよく、またはコンテンツプラットフォーム150によって所有される選択された機械学習モデルであってもよい。たとえば、
図3を参照して以下でより詳しく説明されるように、各コンテンツプラットフォーム150は、そのコンテンツプラットフォーム150に固有のユーザプロファイルを生成または更新するようにアプリケーション112に要求することができる。
【0064】
ユーザのためのユーザプロファイルは、特徴ベクトルの形式であり得る。たとえば、ユーザプロファイルは、n次元の特徴ベクトルであり得る。n次元の各々は特定の特徴に対応してもよく、各次元の値はユーザのための特徴の値であってもよい。たとえば、ある次元は、特定のデジタルコンポーネントがユーザに提示された(またはユーザにより操作された)かどうかのためのものであり得る。この例では、その特徴の値は、デジタルコンポーネントがユーザに提示された(またはユーザにより操作された)場合は「1」であってもよく、または、デジタルコンポーネントがユーザに提示されていない(またはユーザにより操作されていない)場合は「0」であってもよい。ユーザのためのユーザプロファイルを生成するための例示的なプロセスが、
図3に示され、以下で説明される。
【0065】
いくつかの実装形態では、コンテンツプラットフォーム150は、コンテクスチュアル信号、特定のデジタルコンポーネントに関連する信号、または、アプリケーション112が認識していない可能性のあるユーザに関連する信号、もしくはユーザの位置における現在の天気などのアプリケーション112がアクセスできない可能性のあるユーザに関連する信号などの、追加の信号に基づいて、機械学習モデルを訓練することを望み得る。たとえば、コンテンツプラットフォーム150は、特定のデジタルコンポーネントが特定の文脈においてユーザに提示される場合に、ユーザがそのデジタルコンポーネントと対話するかどうかを予測するように、機械学習モデルを訓練することを望むことがある。この例では、コンテクスチュアル信号は、ユーザへのデジタルコンポーネントの各提示に対して、その時間におけるクライアントデバイス110の地理的位置(ユーザにより許可されている場合)、デジタルコンポーネントがそれを用いて提示される電子リソースの内容を記述する信号、および、デジタルコンポーネントを記述する信号、たとえば、デジタルコンポーネントの内容、デジタルコンポーネントのタイプ、電子リソース上のどこでデジタルコンポーネントが提示されるかなどを含み得る。別の例では、ある次元は、ユーザに提示されるデジタルコンポーネントがある特定のタイプであるかどうかのためのものであり得る。この例では、値は、旅行に対しては1、料理に対しては2、映画に対しては3などであり得る。以後の説明を簡単にするために、Piは、i番目のユーザプロファイルと関連付けられるユーザプロファイルと追加の信号(たとえば、コンテクスチュアル信号および/またはデジタルコンポーネントレベル信号)の両方を表す。
【0066】
アプリケーション112は、ユーザのためのユーザプロファイルPiのシェアを生成する(204)。この例では、アプリケーション112は、ユーザプロファイルPiの2つのシェアを、MPCクラスタ130の各コンピューティングシステムに対して1つずつ生成する。各シェア自体は、それ自体はユーザプロファイルについて何も明らかにしないランダムな変数であり得ることに留意されたい。ユーザプロファイルを得るには、両方のシェアを組み合わせる必要がある。MPCクラスタ130が、機械学習モデルの訓練に参加するより多くのコンピューティングシステムを含む場合、アプリケーション112は、より多くのシェアを、各コンピューティングシステムに対して1つずつ生成する。いくつかの実装形態では、ユーザのプライバシーを保護するために、アプリケーション112は、疑似ランダム関数を使用して、ユーザプロファイルPiを複数のシェアへと分割することができる。すなわち、アプリケーション112は、疑似ランダム関数PRF(Pi)を使用して2つのシェア{[Pi,1],[Pi,2]}を生成することができる。厳密な分割は、アプリケーション112により使用される秘密分散アルゴリズムおよび暗号ライブラリに依存し得る。
【0067】
いくつかの実装形態では、アプリケーション112は、1つまたは複数のラベルをMPCクラスタ130にも提供することができる。ラベルはあるアーキテクチャの機械学習モデル(たとえば、k-NN)の訓練においては使用されないことがあるが、モデル訓練プロセスを制御するハイパーパラメータ(たとえば、kの値)を精密に調整するために、または訓練される機械学習モデルの品質を評価するために、または予測を行う、すなわちユーザのためのユーザグループを提案するかどうかを決定するために、ラベルが使用され得る。ラベルは、たとえば、ユーザのための、コンテンツプラットフォーム150がアクセス権を有するユーザグループ識別子のうちの1つまたは複数を含み得る。すなわち、ラベルは、コンテンツプラットフォーム150によって管理される、またはコンテンツプラットフォーム150が読取りのアクセス権を有するユーザグループのユーザグループ識別子を含み得る。いくつかの実装形態では、単一のラベルは、ユーザのための複数のユーザグループ識別子を含む。いくつかの実装形態では、ユーザのためのラベルは、異種であってもよく、メンバーとしてユーザを含むすべてのユーザグループと、追加の情報、たとえばユーザが所与のデジタルコンポーネントと対話したかどうかとを含んでもよい。これにより、別のユーザが所与のデジタルコンポーネントと対話するかどうかを予測するためにk-NNモデルを使用することが可能になる。各ユーザプロファイルのためのラベルは、ユーザプロファイルに対応するユーザのためのユーザグループメンバーシップを示し得る。
【0068】
ユーザプロファイルのためのラベルは、入力に対応するユーザが追加される、または追加されるべきであるユーザグループを予測するものである。たとえば、入力ユーザプロファイルに対するk個の最近傍ユーザプロファイルに対応するラベルは、たとえばユーザプロファイル間の類似性に基づいて、入力ユーザプロファイルに対応するユーザが入る、または入るべきであるユーザグループを予測するものである。これらの予測ラベルは、ユーザにユーザグループを提案するために、または、ラベルに対応するユーザグループにユーザを追加するようにアプリケーションに要求するために使用され得る。
【0069】
ラベルが含まれる場合、アプリケーション112は、各labeliをシェア、たとえば[labeli,1]および[labeli,2]に分割することもできる。このようにして、コンピューティングシステムMPC1とMPC2との共謀がなければ、コンピューティングシステムMPC1もMPC2も、[Pi,1]もしくは[Pi,2]からPiを再構築できず、または[labeli,1]もしくは[labeli,2]からlabeliを再構築できない。
【0070】
アプリケーション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)、またはプロトコルバッファを表す。
【0071】
アプリケーション112は、暗号化されたシェアをコンテンツプラットフォーム150に提供する(208)。たとえば、アプリケーション112は、ユーザプロファイルおよびラベルの暗号化されたシェアをコンテンツプラットフォーム150に送信することができる。各シェアはコンピューティングシステムMPC1またはMPC2の暗号鍵を使用して暗号化されるので、コンテンツプラットフォーム150はユーザのユーザプロファイルまたはラベルにアクセスすることができない。
【0072】
コンテンツプラットフォーム150は、複数のクライアントデバイスからユーザプロファイルのシェアおよびラベルのシェアを受信することができる。コンテンツプラットフォーム150は、コンピューティングシステムMPC1およびMPC2にユーザプロファイルのシェアをアップロードすることによって、機械学習モデルの訓練を開始することができる。ラベルは訓練プロセスにおいて使用されないことがあるが、コンテンツプラットフォーム150は、モデル品質を評価するとき、またはモデルに後でクエリするときに使用するために、コンピューティングシステムMPC1およびMPC2にラベルのシェアをアップロードすることができる。
【0073】
コンテンツプラットフォーム150は、各クライアントデバイス110から受信された第1の暗号化されたシェア(たとえば、PubKeyEncrypt([Pi,1] || [labeli,1], MPC1))をコンピューティングシステムMPC1にアップロードする(210)。同様に、コンテンツプラットフォーム150は、第2の暗号化されたシェア(たとえば、PubKeyEncrypt([Pi,2] || [labeli,2], MPC2))をコンピューティングシステムMPC2にアップロードする(212)。両方のアップロードが、バッチであってもよく、機械学習モデルを訓練するための特定の期間に受信されたユーザプロファイルおよびラベルの暗号化されたシェアを含んでもよい。
【0074】
いくつかの実装形態では、コンテンツプラットフォーム150が第1の暗号化されたシェアをコンピューティングシステムMPC1にアップロードする順序は、コンテンツプラットフォーム150が第2の暗号化されたシェアをコンピューティングシステムMPC2にアップロードする順序と一致しなければならない。これにより、コンピューティングシステムMPC1およびMPC2が、同じ秘密の2つのシェア、たとえば同じユーザプロファイルの2つのシェアを適切に照合することが可能になる。
【0075】
いくつかの実装形態では、コンテンツプラットフォーム150は、照合を容易にするために、同じ疑似ランダムにまたは逐次生成された識別子を、同じ秘密のシェアに明確に割り当ててもよい。一部のMPC技法は入力または中間結果のランダムなシャッフルを利用し得るが、本文書において説明されるMPC技法は、そのようなランダムなシャッフルを含まないことがあり、代わりに照合のためにアップロード順序を利用することがある。
【0076】
いくつかの実装形態では、動作208、210、および212は、アプリケーション112が[Pi,1] || [labeli,1]をMPC1に、および[Pi,2] || [labeli,2]をMPC2に直接アップロードする代替のプロセスにより置き換えられ得る。この代替のプロセスは、動作208、210、および212をサポートするためのコンテンツプラットフォーム150のインフラストラクチャコストを減らし、MPC1およびMPC2において機械学習モデルの訓練または更新を開始するためのレイテンシを減らすことができる。たとえば、これは、その後でコンテンツプラットフォーム150がMPC1およびMPC2に送信するデータの、コンテンツプラットフォーム150への伝送をなくす。そうすることで、ネットワーク105を介して送信されるデータの量が減り、そのようなデータを扱う際のコンテンツプラットフォーム150の論理の複雑さが下がる。
【0077】
コンピューティングシステムMPC1およびMPC2は、機械学習モデルを生成する(214)。新しい機械学習モデルがユーザプロファイルに基づいて生成されるたびに、データは訓練セッションと呼ばれ得る。コンピューティングシステムMPC1およびMPC2は、クライアントデバイス110から受信されたユーザプロファイルの暗号化されたシェアに基づいて、機械学習モデルを訓練することができる。たとえば、コンピューティングシステムMPC1およびMPC2は、MPC技法を使用して、ユーザプロファイルのシェアに基づいてk-NNモデルを訓練することができる。
【0078】
暗号計算、およびしたがって、モデル訓練と推測の両方の間にユーザのプライバシーとデータを保護するためにコンピューティングシステムMPC1およびMPC2に課される計算負荷を最小限にするために、または少なくとも減らすために、MPCクラスタ130は、ランダム投影技法、たとえばSimHashを使用して、2つのユーザプロファイルPiとPjの類似性を高速に、セキュアに、および確率的に定量化することができる。SimHashは、2つのデータセット間の類似性の高速な推定を可能にする技法である。2つのユーザプロファイルPiとPjの類似性は、2つのユーザプロファイルPiとPjを表す2ビットベクトル間のハミング距離を決定することによって決定されてもよく、このハミング距離は、高い確率で2つのユーザプロファイル間のコサイン距離に反比例する。
【0079】
概念的に、各訓練セッションに対して、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というビット値は負の符号を表す。
【0080】
多段階の計算の各々の最後において、2つのコンピューティングシステムMPC1とMPC2の各々は、平文の各ユーザプロファイルのためのビットベクトル、各ユーザプロファイルのシェア、および各ユーザプロファイルのためのラベルのシェアを含む中間結果を生成する。たとえば、計算システムMPC1に対する中間結果は、以下のTable 1(表1)に示されるデータであり得る。計算システムMPC2は、類似しているが各ユーザプロファイルおよび各ラベルのシェアが異なっている、中間結果を有する。追加のプライバシー保護をもたらすために、MPCクラスタ130の中の2つのサーバの各々は、m次元のビットベクトルの半分しか平文で得ることができず、たとえば、コンピューティングシステムMPC1が、すべてのm次元ビットベクトルの第1のm/2次元を得て、コンピューティングシステムMPC2が、すべてのm次元ビットベクトルの第2のm/2次元を得る。
【0081】
【0082】
単位長i≠jの2つの任意のユーザプロファイルベクトルPiおよびPjが与えられると、ランダム投影mの回数が十分に多いと仮定すると、2つのユーザプロファイルベクトルPiおよびPjに対するビットベクトルBiとBjの間のハミング距離は、高い確率でユーザプロファイルベクトルPiとPjの間のコサイン距離に比例することが示されている。
【0083】
上で示された中間結果に基づいて、および、ビットベクトルB
iは平文であるので、各コンピューティングシステムMPC
1およびMPC2は、たとえば訓練によって、k-NNアルゴリズムを使用してそれぞれのk-NNモデルを独立に作成することができる。コンピューティングシステムMPC
1およびMPC
2は、同じまたは異なるk-NNアルゴリズムを使用することができる。k-NNモデルを訓練するための例示的なプロセスが、
図4に示され、以下で説明される。k-NNモデルが訓練されると、アプリケーション112は、ユーザをユーザグループに追加するかどうかを決定するために、k-NNモデルにクエリすることができる。
【0084】
アプリケーション112は、推測要求をMPCクラスタ130に出す(216)。この例では、アプリケーション112は、推測要求をコンピューティングシステムMPC1に送信する。他の例では、アプリケーション112は、推測要求をコンピューティングシステムMPC2に送信することができる。アプリケーション112は、推測要求を出せというコンテンツプラットフォーム150からの要求に応答して、推測要求を出すことができる。たとえば、コンテンツプラットフォーム150は、クライアントデバイス110のユーザが特定のユーザグループに追加されるべきであるかどうかを決定するためにk-NNモデルにクエリするように、アプリケーション112に要求することができる。この要求は、ユーザがユーザグループに追加されるべきであるかどうかを推測するための推測要求と呼ばれ得る。
【0085】
推測要求を開始するために、コンテンツプラットフォーム150は、アプリケーション112に、推測要求トークンMinferを送信することができる。推測要求トークンMinferは、特定のドメインによって所有される特定の機械学習モデルをクエリすることをアプリケーション112が認められていることを、MPCクラスタ130の中のサーバが確認することを可能にする。モデルアクセス制御が任意選択である場合、推測要求トークンMinferは任意選択である。推測要求トークンMinferは、以下のTable 2(表2)において示され説明される以下の項目を有し得る。
【0086】
【0087】
この例では、推測要求トークンMinferは、7つの項目と、コンテンツプラットフォーム150の秘密鍵を使用して7つの項目に基づいて生成されるデジタル署名とを含む。eTLD+1は、有効なトップレベルドメイン(eTLD)に、パブリックサフィックスよりも1つ多いレベルを加えたものである。例示的なeTLD+1は、「example.com」であり、「.com」は、トップレベルドメインである。
【0088】
特定のユーザに対する推測を要求するために、コンテンツプラットフォーム150は、推測要求トークンMinferを生成し、ユーザのクライアントデバイス110上で実行されるアプリケーション112にトークンを送信することができる。いくつかの実装形態では、コンテンツプラットフォーム150は、アプリケーション112だけがアプリケーション112の公開鍵に対応する機密の秘密鍵を使用して推測要求トークンMinferを復号できるように、その公開鍵を使用して推測要求トークンMinferを暗号化する。すなわち、コンテンツプラットフォームは、PubKeyEnc(Minfer, application_public_key)をアプリケーション112に送信することができる。
【0089】
アプリケーション112は、推測要求トークンMinferを復号して検証することができる。アプリケーション112は、その秘密鍵を使用して、暗号化された推測要求トークンMinferを復号することができる。アプリケーション112は、(i)デジタル署名を生成するために使用されたコンテンツプラットフォーム150の秘密鍵に対応するコンテンツプラットフォーム150の公開鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえば、タイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の長さの時間以内にあることを確実にすることによって、推測要求トークンMinferを検証することができる。推測要求トークンMinferが有効である場合、アプリケーション112はMPCクラスタ130にクエリすることができる。
【0090】
概念的に、推測要求は、機械学習モデルのモデル識別子、現在のユーザプロファイル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を再構築することを可能にする。
【0091】
以下でより詳しく説明されるように、コンピューティングシステムMPC1およびMPC2は連携して、ユーザプロファイルPiに対するk個の最近傍を計算する。計算システムMPC1およびMPC2は次いで、いくつかの可能な機械学習技法(たとえば、二項分類、多クラス分類、回帰など)のうちの1つを使用して、k個の最近傍ユーザプロファイルに基づいて、ユーザグループにユーザを追加するかどうかを決定することができる。たとえば、集約関数は機械学習技法(たとえば、二項、多クラス、回帰)を特定することができ、集約関数パラメータは集約関数に基づき得る。集約関数は、計算、たとえば合計、論理積もしくは論理和、またはパラメータを使用して実行される別の適切な関数を定義することができる。たとえば、集約関数は、関数を含む式およびその式において使用されるパラメータの形式であり得る。
【0092】
いくつかの実装形態では、集約関数パラメータは、コンテンツプラットフォーム150がユーザのためのk-NNモデルをクエリしているユーザグループのユーザグループ識別子を含み得る。たとえば、コンテンツプラットフォーム150は、ハイキングに関連しておりユーザグループ識別子「ハイキング」を有するユーザグループにユーザを追加するかどうかを知るのを望むことがある。この例では、集約関数パラメータは、「ハイキング」というユーザグループ識別子を含み得る。一般に、コンピューティングシステムMPC1およびMPC2は、ユーザグループのメンバーであるk個の最近傍の数に基づいて、たとえばそれらのラベルに基づいて、ユーザグループにユーザを追加するかどうかを決定することができる。
【0093】
MPCクラスタ130は、推測結果をアプリケーション112に提供する(218)。この例では、クエリを受信したコンピューティングシステムMPC
1は、推測結果をアプリケーション112に送信する。推測結果は、アプリケーション112がユーザを0個以上のユーザグループに追加すべきかどうかを示すことができる。たとえば、ユーザグループ結果は、ユーザグループのユーザグループ識別子を指定することができる。しかしながら、この例では、コンピューティングシステムMPC
1は、ユーザグループを知るであろう。これを防ぐために、コンピューティングシステムMPC
1は推測結果のシェアを計算することができ、コンピューティングシステムMPC
2は同じ推測結果の別のシェアを計算することができる。コンピューティングシステムMPC
2は、コンピューティングシステムMPC
1にそのシェアの暗号化されたバージョンを提供することができ、シェアはアプリケーション112の公開鍵を使用して暗号化される。コンピューティングシステムMPC
1は、推測結果のシェアおよびユーザグループ結果のコンピューティングシステムMPC
2のシェアの暗号化されたバージョンを、アプリケーション112に提供することができる。アプリケーション112は、コンピューティングシステムMPC
2のシェアを復号し、2つのシェアから推測結果を計算することができる。ユーザをユーザグループに追加するかどうかを決定するためにk-NNモデルにクエリするための例示的なプロセスが、
図5に示され、以下で説明される。いくつかの実装形態では、コンピューティングシステムMPC
2の結果をコンピューティングシステムMPC
1が改竄するのを防ぐために、コンピューティングシステムMPC
2は、アプリケーション112の公開鍵を使用してその結果を暗号化する前または後のいずれかに、結果にデジタル署名する。アプリケーション112は、MPC
2の公開鍵を使用して、コンピューティングシステムMPC
2のデジタル署名を検証する。
【0094】
アプリケーション112は、ユーザのためのユーザグループリストを更新する(220)。たとえば、推測結果が、ユーザを特定のユーザグループに追加すべきであるというものである場合、アプリケーション112はユーザをユーザグループに追加することができる。いくつかの実装形態では、アプリケーション112は、ユーザをユーザグループに追加するための許可をユーザにプロンプトで求めることができる。
【0095】
アプリケーション112は、コンテンツに対する要求を送信する(222)。たとえば、アプリケーション112は、デジタルコンポーネントスロットを有する電子リソースをロードしたことに応答して、デジタルコンポーネントに対する要求をコンテンツプラットフォーム150に送信することができる。いくつかの実装形態では、要求は、ユーザをメンバーとして含むユーザグループの1つまたは複数のユーザグループ識別子を含み得る。たとえば、アプリケーション112は、ユーザグループリストから1つまたは複数のユーザグループ識別子を取得し、要求とともにユーザグループ識別子を提供することができる。いくつかの実装形態では、コンテンツプラットフォームが、ユーザグループ識別子を、ユーザ、アプリケーション112、および/または要求の受信元のクライアントデバイス112と関連付けることが可能になるのを防ぐための、技法が使用され得る。
【0096】
コンテンツプラットフォーム150は、アプリケーション112にコンテンツを送信する(224)。たとえば、コンテンツプラットフォーム150は、ユーザグループ識別子に基づいてデジタルコンポーネントを選択し、デジタルコンポーネントをアプリケーション112に提供することができる。いくつかの実装形態では、コンテンツプラットフォーム150は、アプリケーション112と連携して、アプリケーション112からユーザグループ識別子が漏洩することなく、ユーザグループ識別子に基づいてデジタルコンポーネントを選択する。
【0097】
アプリケーション112は、受信されたコンテンツを表示し、または別様に実装する(226)。たとえば、アプリケーション112は、電子リソースのデジタルコンポーネントスロットにおいて受信されたデジタルコンポーネントを表示することができる。
【0098】
ユーザプロファイルを生成するための例示的なプロセス
図3は、ユーザプロファイルを生成し、ユーザプロファイルのシェアをMPCクラスタに送信するための、例示的なプロセス300を示す流れ図である。プロセス300の動作は、たとえば、クライアントデバイス110上で実行されるアプリケーション112によって、
図1のクライアントデバイス110によって実施され得る。プロセス300の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。
【0099】
ユーザのクライアントデバイス110上で実行されるアプリケーション112は、イベントのためのデータを受信する(302)。イベントは、たとえば、クライアントデバイス110における電子リソースの提示、クライアントデバイス110におけるデジタルコンポーネントの提示、クライアントデバイス110における電子リソースもしくはデジタルコンポーネントとのユーザ対話、またはデジタルコンポーネントの変換、または、提示される電子リソースもしくはデジタルコンポーネントとのユーザ対話もしくは変換の欠如であり得る。イベントが発生するとき、コンテンツプラットフォーム150は、ユーザのためのユーザプロファイルを生成するときに使用するために、イベントに関連するデータをアプリケーション112に提供することができる。
【0100】
アプリケーション112は、各コンテンツプラットフォーム150に対する異なるユーザプロファイルを生成することができる。すなわち、ユーザの、および特定のコンテンツプラットフォーム150のためのユーザプロファイルは、特定のコンテンツプラットフォーム150から受信されたイベントデータのみを含み得る。このことは、他のコンテンツプラットフォームのイベントに関連するデータをコンテンツプラットフォームと共有しないことによって、ユーザのプライバシーを守る。いくつかの実装形態では、アプリケーション112は、コンテンツプラットフォーム150の要求ごとに、コンテンツプラットフォーム150によって所有される各機械学習モデルに対する異なるユーザプロファイルを生成し得る。設計目標に基づいて、異なる機械学習モデルは異なる訓練データを必要とし得る。たとえば、ユーザをユーザグループに追加するかどうかを決定するために、第1のモデルが使用され得る。ユーザがデジタルコンポーネントと対話するかどうかを予測するために、第2のモデルが使用され得る。この例では、第2のモデルのためのユーザプロファイルは、第1のモデルのためのユーザプロファイルが有しない追加のデータ、たとえばユーザがデジタルコンポーネントと対話したかどうかを含み得る。
【0101】
コンテンツプラットフォーム150は、プロファイル更新トークンMupdateの形式でイベントデータを送信することができる。プロファイル更新トークンMupdateは、以下のTable 3(表3)において示され説明される以下の項目を有する。
【0102】
【0103】
モデル識別子は、その訓練のためにユーザプロファイルが使用される、またはユーザグループ推測を行うために使用される、機械学習モデル、たとえばk-NNモデルを特定する。プロファイル記録は、イベントに固有のデータ、たとえばイベントのタイプ、電子リソースもしくはデジタルコンポーネント、イベントが発生した時間、および/または、機械学習モデルを訓練する際およびユーザグループ推測を行う際にコンテンツプラットフォーム150が使用することを望む、他の適切なインベントデータを含む、n次元特徴ベクトルである。デジタル署名は、コンテンツプラットフォーム150の秘密鍵を使用して7つの項目に基づいて生成される。
【0104】
いくつかの実装形態では、送信の間に更新トークンMupdateを保護するために、コンテンツプラットフォーム150は、更新トークンMupdateをアプリケーション112に送信する前に更新トークンMupdateを暗号化する。たとえば、コンテンツプラットフォーム150は、アプリケーションの公開鍵、たとえばPubKeyEnc(Mupdate, application_public_key)を使用して、更新トークンMupdateを暗号化することができる。
【0105】
いくつかの実装形態では、コンテンツプラットフォーム150は、プロファイル更新トークンMupdateの形式でイベントデータまたは更新要求を符号化することなく、イベントデータをアプリケーション112に送信することができる。たとえば、アプリケーション112の内側で実行されるコンテンツプラットフォーム150に由来するスクリプトは、スクリプトAPIを介してイベントデータおよび更新要求をアプリケーション112に直接送信することができ、アプリケーション112は、World Wide Web Consortium(W3C)に由来するセキュリティモデルおよび/または(Hypertext Transfer Protocol Secure)HTTPSに依拠して、改竄または漏洩からイベントデータおよび更新要求を保護する。
【0106】
アプリケーション112は、イベントのためのデータを記憶する(304)。イベントデータが暗号化される場合、アプリケーション112は、イベントデータを暗号化するために使用される公開鍵に対応する秘密鍵を使用して、イベントデータを復号することができる。イベントデータが更新トークンMupdateの形式で送信される場合、アプリケーション112は、イベントデータを記憶する前に更新トークンMupdateを検証することができる。アプリケーション112は、(i)デジタル署名を生成するために使用されたコンテンツプラットフォーム150の秘密鍵に対応するコンテンツプラットフォーム150の公開鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえば、タイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の長さの時間以内にあることを確実にすることによって、更新トークンMupdateを検証することができる。更新トークンMupdateが有効である場合、アプリケーション112は、たとえばn次元のプロファイル記録を記憶することによって、イベントデータを記憶することができる。いずれの検証も失敗する場合、アプリケーション112は、たとえば、イベントデータを記憶しないことによって、更新要求を無視し得る。
【0107】
各機械学習モデルに対して、たとえば各々の固有のモデル識別子に対して、アプリケーション112は、そのモデルのためのイベントデータを記憶することができる。たとえば、アプリケーション112は、各々の一意なモデル識別子に対して、n次元の特徴ベクトル(たとえば、更新トークンのプロファイル記録)のセットを含むデータ構造を維持し、各特徴ベクトルに対して、期限切れ時間を維持することができる。各特徴ベクトルは、クライアントデバイス110のユーザに対する、イベントに関連する特徴の特徴値を含み得る。モデル識別子の例示的なデータ構造が以下のTable 4(表4)に示される。
【0108】
【0109】
有効な更新トークンMupdateを受信すると、アプリケーション112は、特徴ベクトルおよび更新トークンMupdateの期限切れ時間をデータ構造に追加することによって、更新トークンMupdateに含まれるモデル識別子のデータ構造を更新することができる。定期的に、アプリケーション112は、データ構造から期限切れの特徴ベクトルを排除し、記憶サイズを減らすことができる。
【0110】
アプリケーション112は、ユーザプロファイルを生成するかどうかを決定する(306)。たとえば、アプリケーション112は、コンテンツプラットフォーム150からの要求に応答して、特定の機械学習モデルのためのユーザプロファイルを生成し得る。この要求は、ユーザプロファイルを生成し、ユーザプロファイルのシェアをコンテンツプラットフォーム150に返すことであり得る。いくつかの実装形態では、アプリケーション112は、たとえば生成されたユーザプロファイルをコンテンツプラットフォーム150に送信するのではなく、それらをMPCクラスタ130に直接アップロードし得る。ユーザプロファイルのシェアを生成して返すための要求のセキュリティを確保するために、コンテンツプラットフォーム150は、アップロードトークンMuploadをアプリケーション112に送信することができる。
【0111】
アップロードトークンMuploadは、更新トークンMupdateと類似しているが異なる動作を伴う(たとえば、「ユーザプロファイルを蓄積する」の代わりに「サーバを更新する」)構造を有し得る。アップロードトークンMuploadは、動作遅延のための追加の項目も含み得る。動作遅延は、アプリケーション112がより多くのイベントデータ、たとえばより多くの特徴ベクトルを蓄積する間、ユーザプロファイルのシェアの計算とアップロードを遅らせるように、アプリケーション112に指示することができる。これにより、機械学習モデルは、何らかの重要なイベント、たとえばユーザグループへの加入の前および後で直ちにユーザイベントデータを獲得することが可能になる。動作遅延は遅延期間を指定することができる。この例では、デジタル署名が、コンテンツプラットフォームの秘密鍵を使用して、Table 3(表3)の他の7つの項目および動作遅延に基づいて生成され得る。コンテンツプラットフォーム150は、送信の間にアップロードトークンMuploadを保護するためにアプリケーションの公開鍵を使用して、更新トークンMupdateと同様の方式で、たとえばPubKeyEnc(Mupload, application_public_key)により、アップロードトークンMuploadを暗号化することができる。
【0112】
アプリケーション112は、アップロードトークンMuploadを受信し、アップロードトークンMuploadが暗号化されている場合はそれを復号し、アップロードトークンMuploadを検証することができる。この検証は、更新トークンMupdateが検証される方法と似ていてもよい。アプリケーション112は、(i)デジタル署名を生成するために使用されたコンテンツプラットフォーム150の秘密鍵に対応するコンテンツプラットフォーム150の公開鍵を使用してデジタル署名を検証し、(ii)トークン作成タイムスタンプが古くないこと、たとえば、タイムスタンプによって示される時間が、検証が行われる現在の時間から閾値の長さの時間以内にあることを確実にすることによって、アップロードトークンMuploadを検証することができる。アップロードトークンMuploadが有効である場合、アプリケーション112はユーザプロファイルを生成することができる。いずれの検証も失敗する場合、アプリケーション112は、たとえばユーザプロファイルを生成しないことによって、アップロード要求を無視し得る。
【0113】
いくつかの実装形態では、コンテンツプラットフォーム150は、プロファイルアップロードトークンMuploadの形式でアップロード要求を符号化することなく、ユーザプロファイルをアップロードするようにアプリケーション112に要求することができる。たとえば、アプリケーション115の内側で実行されるコンテンツプラットフォーム150に由来するスクリプトは、スクリプトAPIを介してアップロード要求をアプリケーション115に直接送信することができ、アプリケーション115は、W3Cに由来するセキュリティモデルおよび/またはHTTPSに依拠して、改竄または漏洩からアップロード要求を保護する。
【0114】
ユーザプロファイルを生成しないという決定が行われる場合、プロセス300は、動作302に戻り、コンテンツプラットフォーム150からの追加のイベントデータを待機することができる。ユーザプロファイルを生成するという決定が行われる場合、アプリケーション112はユーザプロファイルを生成する(308)。
【0115】
アプリケーション112は、記憶されているイベントデータ、たとえばTable 4(表4)に示されるデータ構造に記憶されているデータに基づいて、ユーザプロファイルを生成することができる。アプリケーション112は、要求に含まれるモデル識別子、たとえば、アップロードトークンMuploadの項目1のコンテンツプラットフォームeTLD+1ドメインおよび項目2のモデル識別子に基づいて、適切なデータ構造にアクセスすることができる。
【0116】
アプリケーション112は、まだ期限切れになっていない学習期間におけるデータ構造の中のn次元特徴ベクトルを集約することによって、ユーザプロファイルを計算することができる。たとえば、ユーザプロファイルは、まだ期限切れになっていない学習期間におけるデータ構造の中のn次元特徴ベクトルの平均であり得る。結果は、プロファイル空間においてユーザを表すn次元特徴ベクトルである。任意選択で、アプリケーション112は、たとえばL2正規化を使用して、n次元特徴ベクトルを単位長に正規化してもよい。コンテンツプラットフォーム150は、任意選択の学習期間を指定してもよい。
【0117】
いくつかの実装形態では、減衰率は、ユーザプロファイルを計算するために使用され得る。機械学習モデルを訓練するためにMPCクラスタ130を使用する多数のコンテンツプラットフォーム150があることがあり、各コンテンツプラットフォーム150は複数の機械学習モデルを有することがあるので、ユーザ特徴ベクトルデータを記憶することは、かなりのデータストレージ要件をもたらし得る。減衰技法を使用することで、機械学習モデルを訓練するためにユーザプロファイルを生成する目的で各クライアントデバイス110に記憶されるデータの量をかなり減らすことができる。
【0118】
所与の機械学習モデルに対して、k個の特徴ベクトル{F1, F2, ... Fk}があり、その各々がn次元ベクトルおよびそれらの対応する古さ(record_age_in_secondsi)であると仮定する。アプリケーション112は、以下の関係1を使用してユーザプロファイルを計算することができる。
【0119】
【0120】
この関係において、パラメータrecord_age_in_secondsiは、プロファイル記録がクライアントデバイス110に記憶されている秒単位の時間の長さであり、パラメータdecay_rate_in_secondsは、秒単位のプロファイル記録の減衰率(たとえば、更新トークンMupdateの項目6において受信される)である。このようにして、より新しい特徴ベクトルがより大きな重みを与えられる。これはまた、アプリケーション112が特徴ベクトルを記憶するのを避け、一定の記憶容量を用いてプロファイル記録のみを記憶することを可能にする。アプリケーション112は、各モデル識別子に対して複数の個々の特徴ベクトルを記憶するのではなく、各モデル識別子に対してn次元ベクトルPおよびタイムスタンプuser_profile_timeを記憶するだけでよい。これは、クライアントデバイス110において記憶されなければならないデータの量をかなり減らし、多くのクライアントデバイスはデータストレージ容量が通常は限られている。
【0121】
n次元ベクトルのユーザプロファイルPおよびタイムスタンプを初期化するために、アプリケーションは、各次元の値が0であるようなn次元のベクトルにベクトルPを設定し、user_profile_timeをエポックに設定することができる。任意の時間において新しい特徴ベクトルFxを用いてユーザプロファイルPを更新するために、アプリケーション112は以下の関係2を使用することができる。
【0122】
【0123】
アプリケーション112はまた、関係2を用いてユーザプロファイルを更新するとき、ユーザプロファイル時間を現在の時間(current_time)に更新することができる。アプリケーション112が上記の減衰率アルゴリズムを用いてユーザプロファイルを計算する場合、動作304および308は省略されることに留意されたい。
【0124】
アプリケーション112は、ユーザプロファイルのシェアを生成する(310)。アプリケーション112は、疑似ランダム関数を使用して、ユーザプロファイルPi(たとえば、n次元ベクトルP)をシェアへと分割することができる。すなわち、アプリケーション112は、疑似ランダム関数PRF(Pi)を使用して、ユーザプロファイルPiの2つのシェア{[Pi,1],[Pi,2]}を生成することができる。厳密な分割は、アプリケーション112により使用される秘密分散アルゴリズムおよび暗号ライブラリに依存し得る。いくつかの実装形態では、アプリケーションは、Shamirの秘密分散方式を使用する。1つまたは複数のラベルのシェアが提供されている場合、アプリケーション112はラベルのシェアも生成することができる。
【0125】
アプリケーション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は省略されることに留意されたい。
【0126】
機械学習モデルを生成して使用するための例示的なプロセス
図4は、機械学習モデルを生成するための例示的なプロセス400を示す流れ図である。プロセス400の動作は、たとえば、
図1のMPCクラスタ130によって実施され得る。プロセス400の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
【0127】
MPCクラスタ130は、ユーザプロファイルのシェアを取得する(402)。コンテンツプラットフォーム150は、ユーザプロファイルのシェアをMPCクラスタ130に送信することによって機械学習モデルを訓練するようにMPCクラスタ130に要求することができる。コンテンツプラットフォーム150は、所与の期間にわたって機械学習モデルのためにクライアントデバイス110から受信される暗号化されたシェアにアクセスし、それらのシェアをMPCクラスタ130にアップロードすることができる。
【0128】
たとえば、コンテンツプラットフォーム150は、各ユーザプロファイルPiに対する、ユーザプロファイルの暗号化された第1のシェアおよびそのラベルの暗号化された第1のシェア(たとえば、PubKeyEncrypt([Pi,1] || [labeli,1], MPC1))を、コンピューティングシステムMPC1に送信することができる。同様に、コンテンツプラットフォーム150は、各ユーザプロファイルPiに対する、ユーザプロファイルの暗号化された第2のシェアおよびそのラベルの暗号化された第2のシェア(たとえば、PubKeyEncrypt([Pi,2] || [labeli,2], MPC2))を、コンピューティングシステムMPC2に送信することができる。
【0129】
アプリケーション112がユーザプロファイルの秘密シェアをMPCクラスタ130に直接送信するいくつかの実装形態では、コンテンツプラットフォーム150は、訓練要求をMPCクラスタ130に送信することによって機械学習モデルを訓練するようにMPCクラスタ130に要求することができる。
【0130】
コンピューティングシステムMPC1およびMPC2は、ランダム投影平面を作成する(404)。コンピューティングシステムMPC1およびMPC2は、m個のランダム投影平面U={U1,U2,...,Um}を連携して作成することができる。これらのランダム投影平面は、2つのコンピューティングシステムMPC1とMPC2の間の秘密シェアのままであるべきである。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、ランダム投影平面を作成し、Diffie-Hellman鍵交換技法を使用してそれらの秘密を維持する。
【0131】
以下でより詳しく説明されるように、コンピューティングシステムMPC1およびMPC2は、各ユーザプロファイルのそれらのシェアを各ランダム投影平面に投影し、各ランダム投影平面に対して、ユーザプロファイルのシェアがランダム投影平面の一方の側にあるかどうかを決定する。各コンピューティングシステムMPC1およびMPC2は、各ランダム投影の結果に基づいて、ユーザプロファイルの秘密シェアから秘密シェアの中のビットベクトルを形成することができる。ユーザのためのビットベクトルの部分的な知識、たとえば、ユーザプロファイルPiが投影平面Ukの一方の側にあるかどうかは、コンピューティングシステムMPC1またはMPC2のいずれかが、Piの分布についての何らかの知識を獲得することを可能にし、これは、ユーザプロファイルPiが単位長を有するという以前の知識に付加するものである。コンピューティングシステムMPC1およびMPC2がこの情報へのアクセスを得るのを防ぐために(たとえば、これがユーザプライバシーおよび/もしくはデータセキュリティのために要求される、または好ましい実装形態では)、いくつかの実装形態では、ランダム投影平面は秘密シェアの中にあるので、コンピューティングシステムMPC1もMPC2も、平文でランダム投影平面にアクセスすることができない。他の実装形態では、任意選択の動作406~408において説明されたように、ランダムビット反転パターンが、秘密シェアアルゴリズムを使用してランダム投影結果にわたって適用され得る。
【0132】
秘密シェアを介してビットをどのように反転させるかを示すために、同じ確率で値が0または1のいずれかである2つの秘密xおよびyがあると仮定する。等値演算[x]==[y]は、y==0である場合xのビットを反転させ、y==1である場合xのビットを保つ。この例では、演算は50%の確率でビットxをランダムに反転させる。この演算は、2つのコンピューティングシステムMPC1とMPC2の間のリモートプロシージャコール(RPC)を必要とすることがあり、ラウンドの回数はデータサイズおよび選択される秘密シェアアルゴリズムに依存する。
【0133】
各コンピューティングシステム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}を廃棄することができる。
【0134】
コンピューティングシステム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}を廃棄することができる。
【0135】
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がビットベクトルの中のビットを反転させることを可能にする。
【0136】
各コンピューティングシステム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つのベクトルのドット積を示す。
【0137】
ビット反転が使用される場合、コンピューティングシステムMPC1は、コンピューティングシステムMPC1とMPC2との間で秘密分散されるビット反転パターンを使用して、行列の中の要素Ri,jのうちの1つまたは複数の値を修正することができる。行列Rの中の各要素Ri,jに対して、コンピューティングシステムMPC1は、要素Ri,jの値として、[STj,1]==sign(Ri,j)を計算することができる。したがって、要素Ri,jの符号は、ビット反転パターンの中のビット[STj,1]の中の対応するビットが0という値を有する場合、反転される。この計算は、コンピューティングシステムMPC2への複数のRPCを必要とし得る。
【0138】
同様に、コンピューティングシステムMPC2がシェアを受信した各ユーザプロファイルに対して、コンピューティングシステムMPC2は、シェア[Pi,2]を各投影平面Ujに投影することができる。ユーザプロファイルの各シェアに対して、および各ランダム投影平面Ujに対してこの演算を実行すると、z×m次元の行列R'が生じ、zは利用可能なユーザプロファイルの数であり、mはランダム投影平面の数である。行列R'の中の各要素Ri,j'は、投影平面Ujとシェア[Pi,2]とのドット積を計算することによって決定することができ、たとえば、Ri,j'=Uj・[Pi,2]である。演算・は、等しい長さの2つのベクトルのドット積を示す。
【0139】
ビット反転が使用される場合、コンピューティングシステムMPC2は、コンピューティングシステムMPC1とMPC2との間で秘密分散されるビット反転パターンを使用して、行列の中の要素Ri,j'のうちの1つまたは複数の値を修正することができる。行列Rの中の各要素Ri,j'に対して、コンピューティングシステムMPC2は、要素Ri,j'の値として、[STj,2]==sign(Ri,j')を計算することができる。したがって、要素Ri,j'の符号は、ビット反転パターンの中のビットSTjの中の対応するビットが0という値を有する場合、反転される。この計算は、コンピューティングシステムMPC1への複数のRPCを必要とし得る。
【0140】
コンピューティングシステムMPC1およびMPC2は、ビットベクトルを再構築する(412)。コンピューティングシステムMPC1およびMPC2は、厳密に同じサイズを有する行列RおよびR'に基づいて、ユーザプロファイルのためのビットベクトルを再構築することができる。たとえば、コンピューティングシステムMPC1は、コンピューティングシステムMPC2に行列Rの列の一部分を送信することができ、コンピューティングシステムMPC2は、MPC1に行列R'の列の残りの部分を送信することができる。特定の例では、コンピューティングシステムMPC1は、コンピューティングシステムMPC2に行列Rの列の第1の半分を送信することができ、コンピューティングシステムMPC2は、MPC1に行列R'の列の第2の半分を送信することができる。この例では、列が、水平方向の再構築のために使用され、ユーザのプライバシーを保護するために好まれるが、垂直方向の再構築のための他の例では、行が使用され得る。
【0141】
この例では、コンピューティングシステム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の半分を平文で所有する。
【0142】
しかしながら、ビット反転が使用される場合、コンピューティングシステムMPC1およびMPC2は、機械学習モデルのために固定されたランダムパターンの中の行列RおよびR'の要素の反転されたビットを有する。このランダムビット反転パターンは、2つのコンピューティングシステムMPC1およびMPC2のいずれかには見えないので、コンピューティングシステムMPC1もMPC2も、投影結果のビットベクトルから元のユーザプロファイルを推測することができない。この暗号設計はさらに、MPC1またはMPC2が、ビットベクトルを水平方向に区分することによって元のユーザプロファイルを推測するのを防ぎ、すなわち、コンピューティングシステムMPC1が投影結果のビットベクトルの第2の半分を平文で保持し、コンピューティングシステムMPC2が投影結果のビットベクトルの第1の半分を平文で保持する。
【0143】
コンピューティングシステムMPC1およびMPC2は、機械学習モデルを生成する(414)。コンピューティングシステムMPC1は、ビットベクトルの第2の半分を使用してk-NNモデルを生成することができる。同様に、コンピューティングシステムMPC2は、ビットベクトルの第1の半分を使用してk-NNモデルを生成することができる。行列のビット反転および水平区分を使用したモデルの生成により、多層防御原理が適用されて、モデルを生成するために使用されるユーザプロファイルの秘密を保護する。
【0144】
一般に、各k-NNモデルは、ユーザのセットのユーザプロファイル間のコサイン類似性(または距離)を表す。コンピューティングシステムMPC1によって生成されるk-NNモデルは、ビットベクトルの第2の半分間の類似性を表し、コンピューティングシステムMPC2によって生成されるk-NNモデルは、ビットベクトルの第1の半分間の類似性を表す。たとえば、各k-NNモデルは、ビットベクトルのその半分間のコサイン類似性を定義することができる。
【0145】
コンピューティングシステムMPC1およびMPC2によって生成される2つのk-NNモデルはk-NNモデルと呼ばれることがあり、これは上で説明されたような一意なモデル識別子を有する。コンピューティングシステムMPC1およびMPC2は、それらのモデルと、モデルを生成するために使用される各ユーザプロファイルに対するラベルのシェアとを記憶することができる。コンテンツプラットフォーム150は次いで、ユーザのためのユーザグループについて推測を行うようにモデルにクエリすることができる。
【0146】
機械学習モデルを使用してユーザグループを推測するための例示的なプロセス
図5は、機械学習モデルを使用してユーザをユーザグループに追加するための例示的なプロセス500を示す流れ図である。プロセス500の動作は、たとえば
図1のMPCクラスタ130およびクライアントデバイス110、たとえばクライアントデバイス110上で実行されるアプリケーション112によって実施され得る。プロセス500の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。
【0147】
MPCクラスタ130は、所与のユーザプロファイルに対する推測要求を受信する(502)。ユーザのクライアントデバイス110上で実行されるアプリケーション112は、たとえばコンテンツプラットフォーム150からの要求に応答して、推測要求をMPCクラスタ130に送信することができる。たとえば、コンテンツプラットフォーム150は、推測要求をMPCクラスタ130に出すようにアプリケーション112に要求するために、アップロードトークンMinferをアプリケーション112に送信することができる。推測要求は、ユーザが任意の数のユーザグループに追加されるべきであるかどうかをクエリするためのものであり得る。
【0148】
推測要求トークンMinferは、ユーザの所与のユーザプロファイルのシェア、機械学習モデル(たとえば、k-NNモデル)のモデル識別子および推測のために使用されるべき所有者ドメイン、推測のために使用されるべき所与のユーザプロファイルの最近傍の数k、追加の信号(たとえば、コンテクスチュアル信号またはデジタルコンポーネント信号)、推測のために使用されるべき集約関数および推測のために使用されるべき任意の集約関数パラメータ、ならびに、所有者ドメイン機密秘密鍵を使用して所有者ドメインにより作成される上記の情報すべてにわたる署名を含み得る。
【0149】
上で説明されたように、コンピューティングシステム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において計算、帯域幅、および電池の節約をもたらす。
【0150】
他の実装形態では、アプリケーション112は、所与のユーザプロファイルの第1のシェア[Pi,1]をコンピューティングシステムMPC1に送信し、所与のユーザプロファイルの第2のシェア[Pi,2]をコンピューティングシステムMPC2に送信することができる。コンピューティングシステムMPC1を通ることなく、所与のユーザプロファイルの第2のシェア[Pi,2]をコンピューティングシステムMPC2に送信することによって、コンピューティングシステムMPC1が所与のユーザプロファイルの第2のシェア[Pi,2]にアクセスするのを防ぐために、第2のシェアが暗号化される必要はない。
【0151】
各コンピューティングシステムMPC
1およびMPC
2は、秘密分散表現で、所与のユーザプロファイルに対するk個の最近傍を特定する(504)。コンピューティングシステムMPC
1は、所与のユーザプロファイルの第1のシェア[P
i,1]を使用して、所与のユーザプロファイルのビットベクトルの半分を計算することができる。ビットベクトルを生成するために、コンピューティングシステムMPC
1は、
図4のプロセス400の動作410および412を使用することができる。すなわち、コンピューティングシステムMPC
1は、k-NNモデルのために生成されたランダム投影ベクトルを使用して、所与のユーザプロファイルのシェア[P
i,1]を投影し、所与のユーザプロファイルのためのビットベクトルの秘密シェアを作成することができる。k-NNモデルを生成するためにビット反転が使用された場合、コンピューティングシステムMPC
1は次いで、k-NNモデルを生成するために使用されたビット反転パターンの第1のシェア{[ST
1,1],[ST
2,1],...[ST
m,1]}を使用して、所与のユーザプロファイルのためのビットベクトルの秘密シェアの要素を修正することができる。
【0152】
同様に、コンピューティングシステムMPC
1は、所与のユーザプロファイルの暗号化された第2のシェアPubKeyEncrypt([P
i,2],MPC
2)を、コンピューティングシステムMPC
2に提供することができる。コンピューティングシステムMPC
2は、その秘密鍵を使用して所与のユーザプロファイルの第2のシェア[P
i,2]を復号し、所与のユーザプロファイルの第2のシェア[P
i,2]を使用して所与のユーザプロファイルのためのビットベクトルの半分を計算することができる。すなわち、コンピューティングシステムMPC
2は、k-NNモデルのために生成されたランダム投影ベクトルを使用して、所与のユーザプロファイルのシェア[P
i,2]を投影し、所与のユーザプロファイルのためのビットベクトルを作成することができる。k-NNモデルを生成するためにビット反転が使用された場合、コンピューティングシステムMPC
2は次いで、k-NNモデルを生成するために使用されたビット反転パターンの第2のシェア{[ST
1,2],[ST
2,2],...[ST
m,2]}を使用して、所与のユーザプロファイルのためのビットベクトルの要素を修正することができる。コンピューティングシステムMPC
1およびMPC
2は次いで、
図4の動作412において説明されたように、水平方向の区分を用いてビットベクトルを再構築する。再構築の完了の後、コンピューティングシステムMPC
1は、所与のユーザプロファイルのためのビットベクトル全体の第1の半分を有し、コンピューティングシステムMPC
2は、所与のユーザプロファイルのためのビットベクトル全体の第2の半分を有する。
【0153】
各コンピューティングシステムMPC1およびMPC2は、所与のユーザプロファイルのためのビットベクトルのその半分およびそのk-NNモデルを使用して、k'個の最近傍ユーザプロファイルを特定し、k'=a×kであり、aは実際の生産データおよび統計分析に基づいて経験的に決定される。たとえば、a=3または別の適切な数である。コンピューティングシステムMPC1は、ビットベクトル全体の第1の半分と、k-NNモデルの各ユーザプロファイルに対するビットベクトルとの間のハミング距離を計算することができる。コンピューティングシステムMPC1は次いで、計算されたハミング距離に基づいて、k'個の最近傍、たとえば最低のハミング距離を有するk'個のユーザプロファイルを特定する。言い換えると、コンピューティングシステムMPC1は、所与のユーザプロファイルのシェアおよび複数のユーザプロファイルを使用して訓練されるk最近傍モデルに基づいて、最近傍ユーザプロファイルのセットを特定する。表形式の例示的な結果が、以下のTable 5(表5)に示される。
【0154】
【0155】
Table 5(表5)において、各行は、特定の最近傍ユーザプロファイルのためのものであり、各ユーザプロファイルに対するビットベクトルの第1の半分と、コンピューティングシステムMPC1によって計算される所与のユーザプロファイルに対するビットベクトルとの間のハミング距離を含む。特定の最近傍ユーザプロファイルのための行はまた、そのユーザプロファイルの第1のシェアと、そのユーザプロファイルと関連付けられるラベルの第1のシェアとを含む。
【0156】
同様に、コンピューティングシステムMPC2は、ビットベクトル全体の第2の半分と、k-NNモデルの各ユーザプロファイルに対するビットベクトルとの間のハミング距離を計算することができる。コンピューティングシステムMPC2は次いで、計算されたハミング距離に基づいて、k'個の最近傍、たとえば最低のハミング距離を有するk'個のユーザプロファイルを特定する。表形式の例示的な結果が、以下のTable 6(表6)に示される。
【0157】
【0158】
Table 6(表6)において、各行は、特定の最近傍ユーザプロファイルのためのものであり、そのユーザプロファイルと、コンピューティングシステムMPC2によって計算される所与のユーザプロファイルとの間のハミング距離を含む。特定の最近傍ユーザプロファイルのための行はまた、そのユーザプロファイルの第2のシェアと、そのユーザプロファイルと関連付けられるラベルの第2のシェアとを含む。
【0159】
コンピューティングシステム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個の最近傍以外のものは何も明らかにしない。
【0160】
ユーザをユーザグループに追加するかどうかの決定が行われる(506)。この決定は、k個の最近傍プロファイルおよびそれらの関連するラベルに基づいて行われ得る。この決定はまた、使用される集約関数およびその集約関数のための任意の集約パラメータに基づく。集約関数は、機械学習問題の性質、たとえば二項分類、回帰(たとえば、算術平均または二乗平均平方根を使用した)、多クラス分類、および加重k-NNに基づいて選ばれ得る。以下でより詳しく説明されるように、ユーザをユーザグループに追加するかどうかを決定する各々の方法は、MPCクラスタ130とクライアント110上で実行されるアプリケーション112との間の異なる対話を含み得る。
【0161】
ユーザをユーザグループに追加しないという決定が行われる場合、アプリケーション112は、ユーザをユーザグループに追加しなくてもよい(508)。ユーザをユーザグループに追加するという決定が行われる場合、アプリケーション112は、たとえばユーザグループのユーザグループ識別子を含むようにクライアントデバイス110に記憶されているユーザグループリストを更新することによって、ユーザをユーザグループに追加することができる(510)。
【0162】
例示的な二項分類推測技法
二項分類では、推測要求は、集約関数パラメータとして、threshold、Ltrue、およびLfalseを含み得る。ラベル値はブーリアン型、すなわち真または偽のいずれかである。thresholdパラメータは、k個の最近傍プロファイルの閾値の百分率を表すことができ、ユーザがユーザグループLtrueに追加されるには、この閾値の百分率のk個の最近傍プロファイルが真の値というラベルを有しなければならない。それ以外の場合、ユーザはユーザグループLfalseに追加される。あるアプローチでは、MPCクラスタ130は、真というラベル値を有する最近傍ユーザプロファイルの数がthresholdとkの積より大きい場合、ユーザをユーザグループLtrueに(それ以外の場合はLfalseに)追加するようにアプリケーション112に指示してもよい。しかしながら、コンピューティングシステムMPC1は、推測結果、たとえばユーザが入るべきユーザグループを知る。
【0163】
ユーザのプライバシーを守るために、推測要求は、平文の閾値、コンピューティングシステム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]を含み得る。
【0164】
第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]を復号することができる。
【0165】
アプリケーション112は次いで、第1のシェア[Lresult,1]および第2のシェア[Lresult,2]から推測結果Lresultを再構築することができる。デジタル署名を使用することで、アプリケーション112は、たとえばコンピューティングシステムMPC1による、コンピューティングシステムMPC2からの結果の偽造を検出することが可能になる。望まれるセキュリティのレベル、どの関係者がMPCクラスタ130のコンピューティングシステムを運用するか、および想定されるセキュリティモデルによっては、デジタル署名は必要とされないことがある。
【0166】
コンピューティングシステム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
【0167】
合計を得るために、コンピューティングシステムMPC1は、ID(すなわち、{id1,...idk})をコンピューティングシステムMPC2に送信する。コンピューティングシステムMPC2は、k-匿名性を確保するために、IDの中の行識別子の数が閾値より大きいことを検証することができる。コンピューティングシステムMPC2は次いで、以下の関係4を使用してラベルの合計の第2のシェア[sum_of_labels2]を計算することができる。
関係4: [sum_of_labels2] =Σi∈{id1,…idk}[labeli,2]
【0168】
コンピューティングシステムMPC1はまた、以下の関係5を使用してラベルの合計の第1のシェア[sum_of_labels1]を計算することができる。
関係5: [sum_of_labels1] =Σi∈{id1,…idk}[labeli,1]
【0169】
ラベルの合計sum_of_labelsが、コンピューティングシステムMPC1およびMPC2が可能な限り知るべきではない機密情報である場合、コンピューティングシステム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]を計算することができる。
【0170】
ラベルの合計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という値に設定することができる。
【0171】
パラメータ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に返すことができる。
【0172】
同様に、コンピューティングシステム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つのシェアに基づいて推測結果を計算することができる。
【0173】
例示的な多クラス分類推測技法
多クラス分類では、各ユーザプロファイルと関連付けられるラベルはカテゴリ特徴量であり得る。コンテンツプラットフォーム150は、あらゆるあり得るカテゴリ値を対応するユーザグループ識別子と対応付けるルックアップテーブルを指定することができる。ルックアップテーブルは、推測要求に含まれる集約関数パラメータのうちの1つであり得る。
【0174】
見つかったk個の最近傍の中で、MPCクラスタ130は最頻のラベル値を見つける。MPCクラスタ130は次いで、ルックアップテーブルにおいて、最頻ラベル値に対応するユーザグループ識別子を見つけ、たとえばユーザグループ識別子をクライアントデバイス110に記憶されているユーザグループリストに追加することによって、ユーザグループ識別子に対応するユーザグループにユーザを追加するようにアプリケーション112に要求することができる。
【0175】
二項分類と同様に、コンピューティングシステム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)を使用して暗号化され得る。
【0176】
コンピューティングシステム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を再構築することができる。
【0177】
多クラス分類問題に対して、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]を計算することができる。
【0178】
【0179】
同様に、コンピューティングシステムMPC1は、以下の関係7を使用して定義されるj番目のラベル[lj,1]の第1の頻度シェア[frequencyj,1]を計算する。
【0180】
【0181】
k個の最近傍内のラベルの頻度(frequencyi)が取扱いに注意を要するものではないと仮定すると、コンピューティングシステムMPC1およびMPC2は、そのラベルのための2つのシェア[frequencyi,1]および[frequencyi,2]からfrequencyiを再構築することができる。コンピューティングシステムMPC1およびMPC2は次いで、インデックスパラメータ(index)を決定することができ、ここでfrequencyindexが最大の値を有し、たとえばindex=argmaxi(frequencyi)である。
【0182】
コンピューティングシステム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つのシェアに基づいて推測結果を計算し、推測結果によって特定されるユーザグループにユーザを追加することができる。
【0183】
例示的な回帰推測技法
回帰では、各ユーザプロファイルPと関連付けられるラベルは数値でなければならない。コンテンツプラットフォーム150は、閾値の順序付けられたリスト、たとえば(-∞< t0< t1<…< tn<∞)、およびユーザグループ識別子のリスト、たとえば{L0,L1,...Ln,Ln+1}を指定することができる。加えて、コンテンツプラットフォーム150は、集約関数、たとえば算術平均または二乗平均平方根を指定することができる。
【0184】
見つかった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
【0185】
すなわち、resultが閾値t0以下である場合、推測結果LresultはL0である。resultが閾値tnより大きい場合、推測結果LresultはLn+1である。そうではなく、resultが閾値txより大きく、閾値tx+1以下である場合、推測結果LresultはLx+1である。コンピューティングシステムMPC1は次いで、たとえば、推測結果Lresultを含む推測応答をアプリケーション112に送信することによって、推測結果Lresultに対応するユーザグループにユーザを追加するようにアプリケーション112に要求する。
【0186】
上で説明された他の分類技法と同様に、推測結果Lresultは、コンピューティングシステムMPC1およびMPC2から隠され得る。そうするために、アプリケーション112からの推測要求は、コンピューティングシステムMPC1のためのラベルの第1のシェア[Li,1]およびコンピューティングシステムMPC2のためのラベルの暗号化された第2のシェア[Li,2](たとえば、PubKeyEncrypt(L0,2 || … || Ln+1,2 || application_public_key, MPC2))を含み得る。
【0187】
コンピューティングシステム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を再構築することができる。
【0188】
集約関数が算術平均であるとき、コンピューティングシステムMPC1およびMPC2は、二項分類と同様に、ラベルの合計sum_of_labelsを計算する。ラベルの合計が取扱いに注意を要するものではない場合、コンピューティングシステムMPC1およびMPC2は、2つのシェア[sum_of_lables1]および[sum_of_labels2]を計算し、そして2つのシェアに基づいてsum_of_labelsを再構築することができる。コンピューティングシステムMPC1およびMPC2は次いで、最近傍ラベルの量、たとえばkでラベルの合計を割ることによって、ラベルの平均を計算することができる。
【0189】
コンピューティングシステム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によって特定されるユーザグループにユーザを追加することができる。
【0190】
ラベルの合計が取扱いに注意を要するものである場合、コンピューティングシステムMPC1およびMPC2は、sum_of_labelsを平文で構築することが可能ではないことがある。代わりに、コンピューティングシステムMPC1は、すべてのi∈[0,n]に対してマスク[maski,1]=[sum_of_labels1]>ti×kを計算することができる。この計算は、コンピューティングシステムMPC1とMPC2との間の複数のラウンドトリップを必要とし得る。次に、コンピューティングシステムMPC1は、
【0191】
【0192】
を計算することができ、コンピューティングシステムMPC2は、
【0193】
【0194】
を計算することができる。この演算における等値テストは、コンピューティングシステムMPC1とMPC2との間の複数のラウンドトリップを必要とし得る。
【0195】
加えて、コンピューティングシステムMPC1は、
【0196】
【0197】
を計算することができ、コンピューティングシステムMPC2は、
【0198】
【0199】
を計算することができる。MPCクラスタ130は次いで、すべてのi∈[0,n]に対してacci==1である場合にのみLiを返し、use_default==1である場合Ln+1を返す。この条件は、以下の関係9により表され得る。
【0200】
【0201】
対応する暗号学的な実装形態は、以下の関係10および11により表され得る。
【0202】
【0203】
これらの計算は、Liが平文である場合、コンピューティングシステムMPC1とMPC2との間のどのようなラウンドトリップ計算も必要とせず、Liが秘密シェアの中にある場合、1つのラウンドトリップ計算を伴う。コンピューティングシステムMPC1は、結果の2つのシェア(たとえば、[Lresult,1]および[Lresult,2])をアプリケーション112に提供することができ、上で説明されたように、第2のシェアは、コンピューティングシステムMPC2によって暗号化され、任意選択でデジタル署名される。このようにして、アプリケーション112は、即刻のまたは最後の結果についてコンピューティングシステムMPC1またはMPC2が何も知ることなく、推測結果Lresultを決定することができる。
【0204】
二乗平均平方根では、コンピューティングシステムMPC1は、ID(すなわち、{id1,...idk})をコンピューティングシステムMPC2に送信する。コンピューティングシステムMPC2は、k-匿名性を確保するために、IDの中の行識別子の数が閾値より大きいことを検証することができる。コンピューティングシステムMPC2は、以下の関係12を使用してsum_of_square_labelsパラメータ(たとえば、ラベル値の二乗の合計)の第2のシェアを計算することができる。
【0205】
【0206】
同様に、コンピューティングシステムMPC1は、以下の関係13を使用してsum_of_square_labelsパラメータの第1のシェアを計算することができる。
【0207】
【0208】
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を割り、次いで平方根を計算することによって、ラベルの二乗平均平方根を計算することができる。
【0209】
平均が算術平均を介して計算されるか、または二乗平均平方根を介して計算されるかにかかわらず、コンピューティングシステム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は、算術平均の例において使用されるものと同様の暗号プロトコルを実行して、推測結果のシェアを計算することができる。
【0210】
分類および回帰問題の結果を推測するための上記の技法において、すべてのk個の最近傍は、最終的な推測結果に対して等しい影響、たとえば等しい重みを有する。多くの分類および回帰問題では、k個の近傍の各々が、近傍とクエリパラメータPiとの間のハミング距離が増大すると単調減少する重みを割り当てられる場合、モデル品質は改善され得る。この性質を伴う一般的なカーネル関数は、Epanechnikov(放物線)カーネル関数である。ハミング距離と重みの両方が、平文で計算され得る。
【0211】
疎特徴ベクトルユーザプロファイル
電子リソースの特徴がユーザプロファイルに含まれ、機械学習モデルを生成するために使用されるとき、得られる特徴ベクトルは、ドメイン、URL、およびIPアドレスなどの、高濃度のカテゴリ特徴量を含み得る。これらの特徴ベクトルは疎であり、要素の大半が0という値を有する。アプリケーション112は、2つ以上の密特徴ベクトルへと特徴ベクトルを分割し得るが、機械学習プラットフォームは、実用的であるにはあまりにも多くのクライアントデバイスのアップロード帯域幅を消費するであろう。この問題を防ぐために、上で説明されたシステムおよび技法は、疎特徴ベクトルをよりうまく扱うように適合され得る。
【0212】
クライアントデバイスにイベントのための特徴ベクトルを提供するとき、電子リソースに含まれるコンテンツプラットフォーム150のコンピュータ可読コード(たとえば、スクリプト)は、イベントのための特徴ベクトルを指定するためにアプリケーション(たとえば、ブラウザ)APIを呼び出すことができる。このコード、またはコンテンツプラットフォーム150は、特徴ベクトル(のある部分)が密であるか疎であるかを決定することができる。特徴ベクトル(またはそのある部分)が密である場合、コードはAPIパラメータとして数値のベクトルを渡すことができる。特徴ベクトル(またはその一部)が疎である場合、コードは、マップ、たとえば、特徴値が0ではない特徴要素のためのインデクシングされた鍵/値のペアを渡すことができ、鍵はそのような特徴要素の名称またはインデックスである。特徴ベクトル(またはその一部)が疎であり、0ではない特徴値が常に同じ値、たとえば1である場合、コードは集合を渡すことができ、その集合の要素はそのような特徴要素の名称またはインデックスである。
【0213】
特徴ベクトルを集約してユーザプロファイルを生成するとき、アプリケーション112は、密特徴ベクトルと疎特徴ベクトルを異なるように扱うことができる。密ベクトルから計算されたユーザプロファイル(またはその一部)は、密ベクトルのままである。マップから計算されたユーザプロファイル(またはその一部)は、マップがストレージコストをこれ以上節約しないほど十分にフィルレートが高くなるまで、マップのままである。その時点で、アプリケーション112は、疎ベクトル表現を密ベクトル表現へと変換する。
【0214】
いくつかの実装形態では、アプリケーション112は、特徴ベクトルのいくつか、または特徴ベクトルのいくつかの部分を疎特徴ベクトルとして分類し、いくつかを密特徴ベクトルとして分類することができる。アプリケーション112は次いで、ユーザプロファイルおよび/またはユーザプロファイルのシェアを生成する際に、特徴ベクトルの各タイプを異なるように扱うことができる。
【0215】
集合から計算されたユーザプロファイル(またはその一部)は、集約関数が合計である場合、マップであり得る。たとえば、各特徴ベクトルは、カテゴリ特徴量「domain visited」を有し得る。集約関数、すなわち合計は、ユーザが発行者ドメインを訪れた回数を計算する。集合から計算されたユーザプロファイル(またはその一部)は、集約関数が論理和である場合、集合のままであり得る。たとえば、各特徴ベクトルは、カテゴリ特徴量「domain visited」を有し得る。集約関数、すなわち論理和は、訪問の頻度とは無関係に、ユーザが訪れたすべての発行者ドメインを計算する。
【0216】
ML訓練および予測のためにMPCクラスタ130にユーザプロファイルを送信するために、アプリケーション112は、秘密シェアをサポートする任意の標準的な暗号ライブラリを用いてユーザプロファイルの密な部分を分割し得る。クライアントデバイスのアップロード帯域幅および計算コストを大きく増やすことなくユーザプロファイルの疎な部分を分割するために、Function Secret Sharing(FSS)技法が使用され得る。この例では、コンテンツプラットフォーム150は、1から始まって逐次、ユーザプロファイルの疎な部分の中の各々のあり得る要素に一意なインデックスを割り当てる。インデックスの有効な範囲は、両端を含めて[1,N]の範囲にあると仮定する。
【0217】
アプリケーションによって計算されるユーザプロファイルの中の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
【0218】
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へと詰め込むことができる。
【0219】
加えて、アプリケーション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ビットよりはるかに少ないことがある。
【0220】
コンピューティングシステム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
【0221】
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つの秘密シェアである。
【0222】
機械学習訓練プロセスのランダム投影動作の間に、コンピューティングシステムMPC1は、[P1]とGの両方からユーザプロファイルのための秘密シェアのベクトルを独立に組み立てることができる。上記の説明により、|G|=nであることが知られており、nはユーザプロファイルの疎な部分の中の0ではない要素の数である。加えて、ユーザプロファイルの疎な部分がN次元であり、n<<Nであることが知られている。
【0223】
G={g1,…gn}であると仮定する。1≦j≦Nであるj番目の次元、および1≦k≦nに対して、
【0224】
【0225】
とする。同様に、H={h1,…hn}とする。コンピューティングシステムMPC2は、
【0226】
【0227】
を独立に計算することができる。[SPj,1]および[SPj,2]がSPjの秘密シェアであること、すなわちユーザプロファイルの元の疎な部分の中のj番目の要素の秘密値であることを証明するのは、簡単である。
【0228】
[SP1]={[SP1,1],…[SPN,1]}、すなわち、ユーザプロファイルの疎な部分の密な表現における再構築された秘密シェアであるとする。[P1]および[SP1]を連結することによって、コンピューティングシステムMPC1は、元のユーザプロファイルの完全な秘密シェアを再構築することができる。コンピューティングシステムMPC1は次いで、[P1] || [SP1]をランダムに投影することができる。同様に、コンピューティングシステムMPC2は、[P2] || [SP2]をランダムに投影することができる。投影の後、上で説明された技法が、同様の方式で機械学習モデルを生成するために使用され得る。
【0229】
図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番目のユーザプロファイル(P
j)のための少なくとも1つの真のラベル(L
j)、n個のユーザプロファイルの中のk番目のユーザプロファイル(P
k)のための少なくとも1つの真のラベル(L
k)、n個のユーザプロファイルの中のl番目のユーザプロファイル(P
l)のための少なくとも1つの真のラベル(L
l)を含んでもよく、1≦j,k,l≦nであり、以下同様である。第1の機械学習モデル620を生成または訓練するために使用されたユーザプロファイルと関連付けられ、暗号化されたラベルデータセット626の一部として含まれるような真のラベルは、暗号化され、たとえば秘密シェアとして表され得る。加えて、いくつかの例では、最終結果計算論理640は、
図2のステップ218を参照して上で説明されたもののうちの1つまたは複数などの、推測結果を生成するための1つまたは複数の動作を実行することに関連して利用される論理に対応し得る。第1の機械学習モデル620および最終結果計算論理640は、二項分類、回帰、および/または多クラス分類技法を含む1つまたは複数の推測技法を利用するように構成され得る。
【0230】
図6の例では、システム600は、推測時間において1つまたは複数の動作を実行するものとして図示される。ランダム投影論理610は、ランダム投影変換をユーザプロファイル609(P
i)に適用して、変換されたユーザプロファイル619(P
i')を取得するために利用され得る。ランダム投影論理610を利用することによって得られるような変換されたユーザプロファイル619は、平文であり得る。たとえば、ランダム投影論理610は、ユーザのプライバシーを保護するためのランダムノイズを用いて、ユーザプロファイル609および他のユーザプロファイルに含まれまたはそれらにおいて示される特徴ベクトルなどの特徴ベクトルを難読化することを少なくとも一部目的として、利用され得る。
【0231】
第1の機械学習モデル620は、変換されたユーザプロファイル619を入力として受け取り、それに応答して少なくとも1つの予測されるラベル629
【0232】
【0233】
を生成するように訓練され、続いて活用され得る。第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を決定する際に受信および/または生成するデータに、ソフトマックス関数を適用することができる。
【0234】
第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を参照して以下で提供される。
【0235】
第1の機械学習モデル620および最終結果計算論理640が多クラス分類技法を利用するように構成される実装形態では、少なくとも1つの予測されるラベル629は、ラベル予測器624によって決定されるようなベクトルまたは予測されるラベルのセットに対応し得る。そのようなベクトルまたは予測されるラベルのセットの中の各々の予測されるラベルは、それぞれのカテゴリに対応してもよく、少なくとも一部、多数決で、または、ラベル予測器624によって決定されるような、ベクトルの中のそれぞれのカテゴリに対応する真のラベルもしくはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットが第1の値(たとえば、1)の真のラベルである頻度に基づいて、ラベル予測器624によって決定されてもよい。多クラス分類の場合、二項分類のように、各ベクトルの中の各々の真のラベルまたはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットは、0または1のいずれかのバイナリ値であり得る。第1の機械学習モデル620と最終結果計算論理640が多クラス分類技法を利用するように構成される実装形態に対する、少なくとも1つの予測されるラベル629の性質、および少なくとも1つの予測されるラベル629が決定され得る方法に関する追加の詳細が、
図9~
図11を参照して以下で提供される。
【0236】
最終結果計算論理640は、少なくとも1つの予測されるラベル629に基づいて推測結果649(Resulti)を生成するために利用され得る。たとえば、最終結果計算論理640は、1つまたは複数の閾値に対して少なくとも1つの予測されるラベル629を評価し、評価結果に基づいて推測結果649を決定するために利用され得る。いくつかの例では、推測結果649は、ユーザプロファイル609と関連付けられるユーザが1つまたは複数のユーザグループに追加されるべきかどうかを示すものであり得る。いくつかの実装形態では、少なくとも1つの予測されるラベル629は、推測結果649に含まれ、またはそれにおいて別様に示され得る。
【0237】
いくつかの実装形態では、
図6に示されるように、システム600は、
図1のMPCクラスタ130などのMPCクラスタによって実装されるようなシステムを表すことができる。したがって、これらの実装形態の少なくともいくつかでは、
図6に示される要素を参照して本明細書において説明される機能の一部またはすべてが、MPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得ることが理解されるべきである。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、
図6を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、
図6を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、並列に動作して秘密シェアを交換し得る。前述の実装形態の少なくともいくつかでは、ユーザプロファイル609は、ユーザプロファイルのシェアを表し得る。そのような実装形態では、他のデータまたは
図6を参照して本明細書において説明される量のうちの1つまたは複数も、それらの秘密シェアを表すものであり得る。
図6を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば
図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。一般に、以下で、および本明細書の他の箇所で記述されるような「シェア」は、少なくともいくつかの実装形態では、秘密シェアに相当し得る。
【0238】
k-NNモデル622などのk-NNモデルのための訓練プロセスは、ラベルの知識が必要とされないという点で比較的高速であり簡単であり得るが、そのようなモデルの品質は、いくつかの状況では改善の余地を残していることがある。したがって、いくつかの実装形態では、以下でさらに詳しく説明されるシステムおよび技法のうちの1つまたは複数が、第1の機械学習モデル620の性能を向上させるために活用され得る。
【0239】
図7は、システム700における、性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的な枠組みの概念図である。いくつかの実装形態では、
図7に示されるような要素609~629のうちの1つまたは複数は、それぞれ、
図6を参照して上で説明されたような要素609~629のうちの1つまたは複数と同様であり、または等価であり得る。システム600のように、システム700は、ランダム投影論理610および第1の機械学習モデル620を含み、推測時間において1つまたは複数の動作を実行するものとして示されている。
【0240】
しかしながら、システム600とは異なり、システム700はさらに、変換されたユーザプロファイル619を入力として受信し、少なくとも1つの予測されるラベル629の予測される誤差の量を示す予測される残差値739(Residuei)を出力として生成することによって、第1の機械学習モデル620の性能を向上させるために訓練され、続いて活用される、第2の機械学習モデル730を含む。たとえば、第2の機械学習モデルの正確さは、第1の機械学習モデルの正確さより高いことがある。第2の機械学習モデル730を使用して得られるような、予測される残差値739は、平文であり得る。最終結果計算論理640の代わりにシステム700に含まれる最終結果計算論理740は、少なくとも1つの予測されるラベル629に基づいて、かつ予測される残差値739にさらに基づいて、推測結果749(Resulti)を生成するために利用され得る。予測される残差値739が少なくとも1つの予測されるラベル629の予測される誤差の量を示すものであると仮定すると、少なくとも1つの予測されるラベル629と、予測される残差値739を併せて利用することで、最終結果計算論理740が、少なくとも1つの予測されるラベル629に現れ得る誤差の少なくとも一部を実質的にオフセットし、または打ち消すことが可能になり得るので、システム700により生み出される推測結果749の正確さと信頼性の一方または両方が向上する。
【0241】
たとえば、最終結果計算論理740は、少なくとも1つの予測されるラベル629と予測される残差値739の合計を計算するために利用され得る。いくつかの例では、最終結果計算論理740はさらに、1つまたは複数の閾値に対してそのような計算された合計を評価し、評価の結果に基づいて推測結果749を決定するために利用され得る。いくつかの実装形態では、少なくとも1つの予測されるラベル629と予測される残差値739のそのような計算された合計が、
図6の推測結果649または
図7の推測結果749に含まれてもよく、もしくはそれらにおいて別様に示されてもよい。
【0242】
第2の機械学習モデル730は、ディープニューラルネットワーク(DNN)、勾配ブースティング決定木、およびランダムフォレストモデルのうちの1つまたは複数を含んでもよく、またはそれらに相当してもよい。すなわち、第1の機械学習モデル620および第2の機械学習モデル730は、アーキテクチャが互いに異なり得る。いくつかの実装形態では、第2の機械学習モデル730は、1つまたは複数の勾配ブースティングアルゴリズム、1つまたは複数の勾配降下アルゴリズム、またはこれらの組合せを使用して訓練され得る。
【0243】
本文書においてより詳しく説明されるような残差を一般に利用するブースティングアルゴリズムを使用すると、より強い機械学習モデル、たとえばDNNを訓練するために、より弱い機械学習モデル、たとえばk最近傍モデルを使用することができる。弱い学習者のための訓練プロセスとは異なり、強い学習者のための訓練ラベルは弱い学習者の残差である。そのような残差を使用することで、より正確で強い学習者の訓練が可能になる。
【0244】
第2の機械学習モデル730は、第1の機械学習モデル620を訓練するために使用されたのと同じユーザプロファイルのセット、および、第1の機械学習モデル620を使用して決定されるようなユーザプロファイルのそのようなセットに対する真のラベルとユーザプロファイルのそのようなセットに対する予測されるラベルとの差を示すデータを使用して、訓練され得る。したがって、第2の機械学習モデル730を訓練するプロセスは、第1の機械学習モデル620を訓練するプロセスの少なくとも一部分が実行された後で実行される。第1の機械学習モデル620を使用して決定される予測されるラベルと真のラベルとの差を示すデータなどの、第2の機械学習モデル730を訓練するために使用されるデータは、訓練される第1の機械学習モデル620の性能を評価するプロセスを通じて生成され、または別様に取得され得る。そのようなプロセスの例は、
図10~
図11を参照して以下でさらに詳しく説明される。
【0245】
上で言及されたように、システム600および700に含まれるようなランダム投影論理610は、ユーザのプライバシーを保護するためのランダムノイズを用いて、ユーザプロファイル609および他のユーザプロファイルに含まれまたはそれらにおいて示される特徴ベクトルなどの特徴ベクトルを難読化することを少なくとも一部目的として、利用され得る。機械学習訓練および予測を可能にするために、ランダム投影論理610によって適用されるランダム投影変換は、特徴ベクトル間の距離という概念を維持する必要がある。ランダム投影論理610において利用され得るランダム投影技法の一例は、SimHash技法を含む。この技法および上で説明された他の技法は、そのような特徴ベクトル間のコサイン距離を維持しながら、特徴ベクトルを難読化する役割を果たすことができる。
【0246】
第1の機械学習モデル620のk-NNモデル622などのk-NNモデルを訓練して使用するには、特徴ベクトル間のコサイン距離の維持で十分であることが判明することがあるが、それは、第2の機械学習モデル730の1つまたは複数のモデルなどの、他のタイプのモデルを訓練して使用するにはあまり理想的ではないことがある。したがって、いくつかの実装形態では、そのような特徴ベクトル間の幾何学的距離を維持しながら、特徴ベクトルを難読化する役割を果たすことができる、ランダム投影論理610の中のランダム投影技法を利用するのが望ましいことがある。そのようなランダム投影技法の一例は、Johnson-Lindenstrauss(J-L)技法または変換を含む。
【0247】
上で言及されたように、J-L変換の1つの性質は、特徴ベクトル間の幾何学的距離をある確率で維持するというものである。加えて、J-L変換は有損失であり、不可逆であり、ランダムノイズを含む。したがって、2つ以上のサーバまたはMPCクラスタのコンピューティングシステムが共謀したとしても、それらは、J-L変換技法を使用して得られたユーザプロファイルの変換されたバージョン(Pi')から、元のユーザプロファイル(Pi)の厳密な再構築を得ることが可能ではない。このようにして、本明細書において説明されるシステムのうちの1つまたは複数においてユーザプロファイルを変換する目的でJ-L変換技法を利用することは、ユーザプライバシーの保護をもたらす役割を果たし得る。さらに、J-L変換技法は、次元低減技法として使用され得る。したがって、本明細書において説明されるシステムのうちの1つまたは複数においてユーザプロファイルを変換する目的でJ-L変換技法を利用することの1つの有利な副産物は、後続の処理ステップがそのようなシステムによって実行され得る速度を大きく向上させる役割を実際に果たし得るということである。
【0248】
一般に、任意の小さいε>0が与えられると、任意の1≦i,j≦nに対して、PiをPi'に、PjをPj'に変換するために適用され得るJ-L変換が存在し、nは訓練の例の数であり、
【0249】
【0250】
である。すなわち、J-L変換を適用することは、2つの任意に選択された訓練の例の間の幾何学的距離を、ごく少量のεより大きく変えることはないことがある。少なくとも前述の理由で、いくつかの実装形態では、J-L変換技法が、本明細書において説明されたようなランダム投影論理610において利用され得る。
【0251】
いくつかの実装形態では、
図7に示されるように、システム700は、
図1のMPCクラスタ130などのMPCクラスタによって実装されるようなシステムを表すことができる。したがって、これらの実装形態の少なくともいくつかでは、
図7に示される要素を参照して本明細書において説明される機能の一部またはすべてが、MPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得ることが理解されるべきである。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、
図7を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、
図7を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、並列に動作して秘密シェアを交換し得る。前述の実装形態の少なくともいくつかでは、ユーザプロファイル609は、ユーザプロファイルの秘密シェアを表し得る。そのような実装形態では、他のデータまたは
図7を参照して本明細書において説明される量のうちの1つまたは複数も、それらの秘密シェアを表すものであり得る。
図7を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば
図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。
【0252】
図8は、MPCクラスタにおける性能が向上した、たとえば正確さがより高い、ユーザプロファイルに対する推測結果を生成するための例示的なプロセス800を示す流れ図である。
図8を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。プロセス800の動作は、たとえば
図1のMPCクラスタ130などのMPCクラスタによって実施されてもよく、
図7を参照して上で説明された動作の1つまたは複数にも対応してもよい。
図8を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。
【0253】
いくつかの実装形態では、
図8に示される要素を参照して本明細書において説明される機能の一部またはすべてが、
図1のMPCクラスタ130などのMPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得る。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、
図8を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、
図8を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、並列に動作して秘密シェアを交換し得る。
図8を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば
図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。プロセス800の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス800の動作を実行させ得る。
【0254】
MPCクラスタは、特定のユーザプロファイルと関連付けられる推測要求を受信する(802)。たとえば、これは、
図1を参照して上で説明されたような、MPCクラスタ130がアプリケーション112から推測要求を受信することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0255】
MPCクラスタは、特定のユーザプロファイル、複数のユーザプロファイルを使用して訓練された第1の機械学習モデル、および複数のユーザプロファイルに対する複数の真のラベルのうちの1つまたは複数に基づいて、特定のユーザプロファイルのための予測されるラベルを決定する(804)。たとえば、これは、
図6~
図7を参照して上で説明されたように、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
【0256】
【0257】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0258】
この例では、複数のユーザプロファイルに対する複数の真のラベルは、暗号化されたラベルデータ626の一部として含まれる真のラベルに対応してもよく、これらは、第1の機械学習モデル620を訓練するために使用された複数のユーザプロファイルに対する真のラベルである。特定のユーザプロファイルに対する予測されるラベルの決定がそれに基づく、複数の真のラベルのうちの1つまたは複数の真のラベルは、たとえば、第1の機械学習モデル620のk-NNモデル622によって特定されるk個の最近傍ユーザプロファイルの各々に対する少なくとも1つの真のラベルを含み得る。いくつかの例では、複数の真のラベルの各々は、
図6~
図7の例と同じように暗号化される。k個の最近傍ユーザプロファイルに対する真のラベルが予測されるラベルを決定するために活用され得る様々な方法のうちのいくつかが、上で詳しく説明された。上記において明らかにされたように、そのような真のラベルが予測されるラベルを決定するために活用される方法または方式は、利用される推測技法のタイプ(たとえば、回帰技法、二項分類技法、多クラス分類技法など)に少なくとも一部依存し得る。
【0259】
MPCクラスタは、特定のユーザプロファイル、複数のユーザプロファイルを使用して訓練された第2の機械学習モデル、および、複数のユーザプロファイルに対する複数の真のラベルと、第1の機械学習モデルを使用して複数のユーザプロファイルに対して決定されるような複数の予測されるラベルとの差を示すデータに基づいて、予測されるラベルの予測される誤差を示す予測される残差値を決定する(806)。たとえば、これは、
図7を参照して上で説明されたような、第2の機械学習モデル730が予測される残差値739(Residue
i)を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの実装形態では、第2の機械学習モデルは、ディープニューラルネットワーク、勾配ブースティング決定木、およびランダムフォレストモデルのうちの少なくとも1つを含む。
【0260】
MPCクラスタは、予測されるラベルおよび予測される残差値に基づいて推測結果を表すデータを生成する(808)。たとえば、これは、
図7を参照して上で説明されたような、最終結果計算論理740が推測結果749(Result
i)を生成するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの例では、推測結果は、予測されるラベルと予測される残差値の合計を含み、またはそれに対応する。
【0261】
MPCクラスタは、推測結果を表すデータをクライアントデバイスに提供する(810)。たとえば、これは、
図1-2を参照して上で説明されたような、アプリケーション112が実行されるクライアントデバイス110にMPCクラスタ130が推測結果を提供することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0262】
いくつかの実装形態では、プロセス800はさらに、MPCクラスタが変換を特定のユーザプロファイルに適用して特定のユーザプロファイルの変換されたバージョンを取得するような、1つまたは複数の動作を含む。これらの実装形態では、予測されるラベルを決定するために、MPCクラスタは、特定のユーザプロファイルの変換されたバージョンに少なくとも一部基づいて、予測されるラベルを決定する。たとえば、これは、
図6-7を参照して上で説明されたような、ランダム投影変換をユーザプロファイル609(P
i)に適用して変換されたユーザプロファイル619(P
i')を取得するためにランダム投影論理610が利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの例では、前述の変換はランダム投影であり得る。さらに、これらの例の少なくともいくつかにおいて、前述のランダム投影は、Johnson-Lindenstrauss(J-L)変換であり得る。前述の実装形態の少なくともいくつかでは、予測されるラベルを決定するために、MPCクラスタは、特定のユーザプロファイルの変換されたバージョンを入力として第1の機械学習モデルに提供して、特定のユーザプロファイルに対する予測されるラベルを出力として取得する。たとえば、これは、
図6~
図7を参照して上で説明されたように、第1の機械学習モデル620が変換されたユーザプロファイル619(Pi')を入力として受信し、それに応答して少なくとも1つの予測されるラベル629
【0263】
【0264】
を生成することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0265】
上で言及されたように、いくつかの実装形態では、第1の機械学習モデルはk最近傍モデルを含む。これらの実装形態の少なくともいくつかでは、予測されるラベルを決定するために、MPCクラスタは、特定のユーザプロファイルおよびk最近傍モデルに少なくとも一部基づいて、複数のユーザプロファイルの中で特定のユーザプロファイルに最も似ていると見なされる最近傍ユーザプロファイルの数kを特定し、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて、予測されるラベルを決定する。いくつかのそのような実装形態では、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、
図6~
図7を参照して上で説明されたように、1つまたは複数の回帰および/または二項分類技法が利用される1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
【0266】
【0267】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの例では、予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を含み、またはそれに対応する。
【0268】
前述の実装形態のいくつかでは、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、それぞれ、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットを決定し、予測されるラベルのセットを決定するために、MPCクラスタはセットの中の各カテゴリに対する動作を実行する。そのような動作は、MPCクラスタが、多数決を決定するような、またはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するような、1つまたは複数の動作を含み得る。たとえば、これは、
図6~
図7を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用されるような1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
【0269】
【0270】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0271】
図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の動作を実行させ得る。
【0272】
MPCクラスタは、複数のユーザプロファイルを使用して第1の機械学習モデルを訓練する(910)。たとえば、上で説明されたように、第1の機械学習モデルは、第1の機械学習モデル620に対応し得る。同様に、上で説明されたように、第1の機械学習モデルの訓練において使用される複数のユーザプロファイルは、第1の機械学習モデル620を訓練するために使用されるn個のユーザプロファイルに相当してもよく、そのための真のラベルは、暗号化されたラベルデータセット626に含まれてもよい。
【0273】
MPCクラスタは、複数のユーザプロファイルを使用して訓練されるような第1の機械学習モデルの性能を評価する(920)。そのような評価が何を伴い得るかに関する追加の詳細が、
図10~
図11を参照して以下で与えられる。
【0274】
いくつかの実装形態では、そのような評価において生成されるデータは、第1の機械学習モデル620などの第1の機械学習モデルの性能が、たとえば、第2の機械学習モデル730などの第2の機械学習モデルによるブースティングを保証するかどうかを決定するために、MPCクラスタまたはMPCクラスタと通信している別のシステムによって利用され得る。このように利用され得るそのような評価において生成されるデータの例は、
図10のプロファイルおよび残差データセット1070ならびに
図11のステップ1112を参照して以下でさらに詳しく説明される。
【0275】
たとえば、いくつかの状況では、MPCクラスタまたはMPCクラスタと通信している別のシステムは、そのような評価において生成されるデータに基づいて、第1の機械学習モデルの性能(たとえば、予測の正確さ)が1つまたは複数の閾値を満たし、したがってブースティングを保証しないと決定し得る。そのような状況では、MPCクラスタは、この決定に基づいて第2の機械学習モデルを訓練して実装するのを控え得る。しかしながら、他の状況では、MPCクラスタまたはMPCクラスタと通信している別のシステムは、そのような評価において生成されるデータに基づいて、第1の機械学習モデルの性能(たとえば、予測の正確さ)が1つまたは複数の閾値を満たし、したがってブースティングを保証すると決定し得る。これらの状況では、MPCクラスタは、この決定に基づいて、
図6から
図7を参照して上で説明されたような、システム600からシステム700に遷移する際に得られる機能の向上に匹敵する、機能の向上を受けることができる。そのような機能の向上を受けるために、MPCクラスタは、残差値を使用して第1の機械学習モデルの性能、たとえば正確さを高めるために、第2の機械学習モデル730などの第2の機械学習モデルを訓練して実装することに進み得る。いくつかの例では、そのような評価において生成されるデータは、追加または代替として、MPCクラスタと関連付けられる1つまたは複数のエンティティに提供され得る。いくつかのそのような例では、1つまたは複数のエンティティは、第1の機械学習モデルの性能がブースティングを保証するかどうかに関する固有の決定を行い、それに従って進行することができる。他の構成も可能である。
【0276】
MPCクラスタは、第2の機械学習モデルを訓練するために、第1の機械学習モデルの性能の評価において生成されるデータを含むデータのセットを使用する(930)。そのようなデータの例は、
図10のプロファイルおよび残差データセット1070ならびに
図11のステップ1112を参照して以下で説明されるものを含み得る。
【0277】
いくつかの実装形態では、プロセス900はさらに追加のステップ912~916を含み、それらは以下でさらに詳しく説明される。そのような実装形態では、ステップ912~916は、ステップ920および930の前に実行されるが、ステップ910の後に実行され得る。
【0278】
図10は、システム1000における第1の機械学習モデルの性能を評価するための例示的な枠組みの概念図である。いくつかの実装形態では、
図10に示されるような要素609~629のうちの1つまたは複数は、それぞれ、
図6~
図7を参照して上で説明されたような要素609~629のうちの1つまたは複数と同様であり、または等価であり得る。いくつかの例では、
図10を参照して本明細書において説明される動作のうちの1つまたは複数は、
図9のステップ920を参照して上で説明されたもののうちの1つまたは複数に対応し得る。システム600および700のように、システム1000は、ランダム投影論理610および第1の機械学習モデル620を含む。
【0279】
しかしながら、システム600および700と異なり、システム1000はさらに、残差計算論理1060を含む。また、
図10の例では、ユーザプロファイル609(P
i)は、第1の機械学習モデル620を訓練するために使用された複数のユーザプロファイルのうちの1つに対応し、一方、
図6および
図7の例では、ユーザプロファイル609(P
i)は、第1の機械学習モデル620を訓練するために使用された複数のユーザプロファイルのうちの1つに必ずしも対応しないことがあるが、代わりに、推測時間において受信される推測要求と関連付けられるユーザプロファイルに単に対応することがある。第1の機械学習モデル620を訓練するために使用された前述の複数のユーザプロファイルは、いくつかの例では、
図9のステップ910を参照して上で説明された複数のユーザプロファイルに対応し得る。残差計算論理1060は、少なくとも1つの予測されるラベル629および少なくとも1つの真のラベル1059(L
i)に基づいて、少なくとも1つの予測されるラベル629の誤差の量を示す残差値1069(Residue
i)を生成するために利用され得る。少なくとも1つの予測されるラベル629
【0280】
【0281】
と少なくとも1つの真のラベル1059(Li)の両方が暗号化され得る。たとえば、残差計算論理1060は、少なくとも1つの予測されるラベル629と少なくとも1つの真のラベル1059との間の値の差を計算するために、秘密シェアを利用することができる。いくつかの実装形態では、残差値1069は、前述の値の差に対応し得る。
【0282】
残差値1069は、たとえばプロファイルおよび残差データセット1070の一部としてメモリに、変換されたユーザプロファイル619に関連して記憶され得る。いくつかの例では、プロファイルおよび残差データセット1070に含まれるデータは、
図9のステップ930を参照して上で説明されたようなデータと、
図11のステップ1112を参照して下で説明されるようなデータの一方または両方に対応し得る。いくつかの実装形態では、残差値1069は、ユーザプライバシーおよびデータセキュリティを保護するための秘密シェアの形式である。
【0283】
いくつかの実装形態では、
図10に示されるように、システム1000は、
図1のMPCクラスタ130などのMPCクラスタによって実装されるようなシステムを表すことができる。したがって、これらの実装形態の少なくともいくつかでは、
図10に示される要素を参照して本明細書において説明される機能の一部またはすべてが、MPCクラスタの2つ以上のコンピューティングシステムによってセキュアで分散された方式で提供され得ることが理解されるべきである。たとえば、MPCクラスタの2つ以上のコンピューティングシステムの各々は、
図10を参照して本明細書において説明される機能のそれぞれのシェアを提供し得る。この例では、2つ以上のコンピューティングシステムは、
図10を参照して本明細書において説明されるものと同様のまたは等価な動作を連携して実行するために、並列に動作して秘密シェアを交換し得る。前述の実装形態の少なくともいくつかでは、ユーザプロファイル609は、ユーザプロファイルの秘密シェアを表し得る。そのような実装形態では、他のデータまたは
図10を参照して本明細書において説明される量のうちの1つまたは複数も、それらの秘密シェアを表すものであり得る。
図10を参照して本明細書において説明される機能を提供する際に、ユーザのプライバシーを保護する目的で2つ以上のコンピューティングシステムによって追加の動作が実行され得ることが理解されるべきである。前述の実装形態のうちの1つまたは複数の例が、たとえば
図12を参照して、および本明細書の他の箇所で、以下でさらに詳しく説明される。
【0284】
図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の動作を実行させ得る。
【0285】
MPCクラスタは、i番目のユーザプロファイルおよび少なくとも1つの対応する真のラベル([Pi,Li])を選択し、iは最初に1という値に設定され(1102~1104)、iがnに等しくなるまで再帰を通じてインクリメントされ(1114~1116)、nは第1の機械学習モデルを訓練するために使用されたユーザプロファイルの総数である。言い換えると、プロセス1100は、以下で説明されたように、第1の機械学習モデルを訓練するために使用されたn個のユーザプロファイルの各々に対してステップ1106~1112を実行するステップを含む。
【0286】
いくつかの実装形態では、第iのユーザプロファイルは、ユーザプロファイルの秘密シェアを表し得る。そのような実装形態では、他のデータまたは
図11を参照して本明細書において説明される量のうちの1つまたは複数も、それらのシェアを表すものであり得る。
【0287】
MPCクラスタは、第iのユーザプロファイル(P
i)にランダム投影を適用し、第iのユーザプロファイルの変換されたバージョン(P
i')を取得する(1106)。たとえば、これは、
図10を参照して上で説明されたような、ランダム投影変換をユーザプロファイル609(P
i)に適用して変換されたユーザプロファイル619(P
i')を取得するためにランダム投影論理610が利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0288】
MPCクラスタは、第iのユーザプロファイルの変換されたバージョン(Pi')を第1の機械学習モデルへの入力として提供し、第iのユーザプロファイルの変換されたバージョン(Pi')に対する少なくとも1つの予測されるラベル
【0289】
【0290】
を出力として取得する(1108)。たとえば、これは、
図10を参照して上で説明されたように、第1の機械学習モデル620が変換されたユーザプロファイル619(Pi')を入力として受信し、それに応答して少なくとも1つの予測されるラベル629
【0291】
【0292】
を生成することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0293】
MPCクラスタは、第iのユーザプロファイル(Pi)に対する少なくとも1つの真のラベル(Li)および少なくとも1つの予測されるラベル
【0294】
【0295】
に少なくとも一部基づいて、残差値(Residue
i)を計算する(1110)。たとえば、これは、
図10を参照して上で説明されたように、残差計算論理1060が、少なくとも1つの真のラベル1059(L
i)および少なくとも1つの予測されるラベル629
【0296】
【0297】
に少なくとも一部基づいて残差値1069(Residuei)を計算するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0298】
MPCクラスタは、第iのユーザプロファイルの変換されたバージョン(Pi')に関連して計算された残差値(Residue
i)を記憶する(1112)。たとえば、これは、
図10を参照して上で説明されたような、残差値1069(Residue
i)が、たとえばプロファイルおよび残差データセット1070の一部としてメモリに、変換されたユーザプロファイル619(P
i')と関連付けられて記憶されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの例では、このデータは、
図9のステップ930を参照して上で説明されたようなデータに対応し得る。したがって、これらの例では、このステップで記憶されるデータの一部またはすべてが、第2の機械学習モデル730などの第2の機械学習モデルを訓練するためのデータとして活用され得る。
【0299】
ステップ1108~1110を再び参照すると、第1の機械学習モデルが回帰技法を利用するように構成される少なくともいくつかの実装形態では、MPCクラスタがステップ1108において取得する少なくとも1つの予測されるラベル
【0300】
【0301】
は、整数を表す単一の予測されるラベルに対応し得る。これらの実装形態では、MPCクラスタがステップ1110において計算する残差値(Residuei)は、少なくとも1つの真のラベル(Li)と少なくとも1つの予測されるラベル
【0302】
【0303】
との間の値の差を示す整数に対応し得る。前述の実装形態の少なくともいくつかでは、ステップ1108において、第1の機械学習モデルは、第iのユーザプロファイルの変換されたバージョン(Pi')に最も似ていると見なされるk個の最近傍ユーザプロファイルを特定し、k個の最近傍ユーザプロファイルの各々に対する少なくとも1つの真のラベルを特定し、k個の最近傍ユーザプロファイルに対する真のラベルの合計を計算し、この合計を少なくとも1つの予測されるラベル
【0304】
【0305】
として使用する。上で言及されたように、このステップにおいて決定されるようなk個の最近傍ユーザプロファイルに対する真のラベルのそのような合計は、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価である。いくつかの例では、この合計は、k個の最近傍ユーザプロファイルに対する真のラベルの平均の代わりに、少なくとも1つの予測されるラベル
【0306】
【0307】
として利用され得るので、除算演算は実行されなくてもよい。少なくとも1つの予測されるラベル
【0308】
【0309】
が、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価であるとすると、第1の機械学習モデルが回帰技法を利用するように構成される少なくともいくつかの実装形態では、ステップ1110においてMPCクラスタによって実行される計算は、
【0310】
【0311】
により与えられる。
【0312】
同様に、第1の機械学習モデルが二項分類技法を利用するように構成される少なくともいくつかの実装形態では、MPCクラスタがステップ1108において取得する少なくとも1つの予測されるラベル
【0313】
【0314】
は、たとえば、k個の最近傍ユーザプロファイルに対する真のラベルの合計に少なくとも一部基づいて決定される整数を表す、単一の予測されるラベルに対応し得る。第1の機械学習モデルが回帰技法を利用するように構成される実装形態を参照して上で言及されたように、k個の最近傍ユーザプロファイルに対する真のラベルのそのような合計は、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価である。
【0315】
しかしながら、第1の機械学習モデルが回帰技法を利用するように構成される実装形態とは異なり、第1の機械学習モデルが二項分類技法を利用するように構成される実装形態では、k個の最近傍ユーザプロファイルに対する真のラベルの各々は、0または1のいずれかのバイナリ値であり得るので、前述の平均は0と1の間の整数値(たとえば、0.3、0.8など)であり得る。二項分類技法が利用される実装形態では、MPCクラスタは、ステップ1108においてk個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)を計算して少なくとも1つの予測されるラベル
【0316】
【0317】
として使用し、数学的に実行可能である回帰技法がステップ1110において残差値(Residuei)を取得するために利用される実装形態を参照して上で説明された式
【0318】
【0319】
を使用し得るが、そのような残差値(Residuei)は、たとえば、第1の機械学習モデルのブースティングが保証されるかどうかを決定するために使用されるときに後で、または、第2の機械学習モデル730などの第2の機械学習モデルを訓練するために使用されるときに後で、プライバシーの問題をもたらす可能性があり得る。より具体的には、k個の最近傍ユーザプロファイルに対する真のラベルの各々は0または1のいずれかのバイナリ値であり得るので、二項分類技法が利用される実装形態では、そのような残差値(Residuei)の符号は、場合によっては少なくとも1つの真のラベル(Li)の値を示すものであることがあり、したがって、場合によっては、ステップ1112以降に残差値(Residuei)を示すデータを扱うことができる1つまたは複数のシステムおよび/またはエンティティによってある程度推測されることがある。
【0320】
たとえば、二項分類技法が利用されることになり、Li=1、k=15、および
【0321】
【0322】
である第1の例を考える。この第1の例では、少なくとも1つの予測されるラベル
【0323】
【0324】
は、k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)に対応し、これは、kという係数によりスケーリングされるようなk個の最近傍ユーザプロファイルに対する真のラベルの平均と実質的に等価であり、前述の平均は0.8という非整数値である。上で説明されたものと同じ式
【0325】
【0326】
が、たとえばステップ1110において残差値(Residuei)を計算するためにこの第1の例において利用されることになる場合、この第1の例の残差値(Residuei)は、Residuei=(15)(1)-12=3により与えられる。したがって、この第1の例では、残差値(Residuei)は(正の)3という値に等しい。ここで、二項分類技法が利用されることになり、Li=0であるがkおよび
【0327】
【0328】
がそれぞれ再び15および12という値に等しいような第2の例を考える。再び、上で説明されたものと同じ式
【0329】
【0330】
が、たとえばステップ1110において残差値(Residuei)を計算するためにこの第2の例において利用されることになる場合、この第2の例の残差値(Residuei)は、Residuei=(15)(0)-12=-12により与えられる。したがって、この第1の例では、残差値(Residuei)は-12という値に等しい。実際に、上で説明された第1および第2の例の場合、正の残差値(Residuei)はLi=1に相関し得るが、負の残差値(Residuei)はLi=0に相関し得る。
【0331】
ResidueiからLiを推測することがなぜ可能かを理解するために、その真のラベルが0に等しい第1の機械学習モデルを訓練するために使用されるユーザプロファイルに対する残差が、
【0332】
【0333】
という表記の正規分布を満たすと仮定され、ここで、μ0およびσ0が、それぞれ、0に等しく第1の機械学習モデルを訓練するために使用されたユーザプロファイルと関連付けられる真のラベルに対する予測誤差(たとえば、残差値)の正規分布の平均および標準偏差であり、そのラベルが1に等しい訓練例に対する残差が
【0334】
【0335】
を満たすと仮定され、ここで、μ1およびσ1が、それぞれ、1に等しく第1の機械学習モデルを訓練するために使用されたユーザプロファイルと関連付けられる真のラベルに対する予測誤差の正規分布の平均および標準偏差であるという、例を考える。そのような仮定のもとでは、μ0<0、μ1>0であることが明らかであり、σ0=σ1である保証はない。
【0336】
上記を考慮すると、以下で説明されるように、いくつかの実装形態では、二項分類技法が利用される実装形態に対してステップ1108~1110と関連付けられる1つまたは複数の動作を実行することに、異なるアプローチを採用することができる。いくつかの実装形態では、訓練例の2つのクラスに対する残差が同じ正規分布を有するようにするために、MPCクラスタは、Liおよび
【0337】
【0338】
に基づいて計算された残差値を、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の導関数である。
【0339】
そのような実装形態において利用され得る上記の特性を伴う変換の一例は、形状の二次多項式変換f(x)=a2x2 + a1x+a0であり、f'(x)=2a2x+a1である。いくつかの例では、MPCクラスタは、次のような3つの制約からの3つの線形式に基づいて、係数{a2,a1,a0}の値を決定論的に見つけることができる。
【0340】
【0341】
として
(i) a2'=σ0-σ1
(ii) a1'=2(σ1μ1-σ0μ0)
(iii) a0'=μ0(μ0σ0+μ0σ1-2μ1σ1)
【0342】
これらの例では、MPCクラスタは、係数{a2,a1,a0}を{a2,a1,a0}=D×{a2',a1',a0'}として計算することができる。MPCクラスタは、たとえば秘密シェアにわたり、加算および乗算を使用して、{a2',a1',a0'}およびDを計算することができる。変換f(x)=a2x2+a1x+a0はまた、
【0343】
【0344】
の周囲で線対称である。
【0345】
前述の係数およびそれに依存する他の値を計算するために、MPCクラスタはまず、0に等しい真のラベルに対する予測誤差(たとえば、残差値)の確率分布の平均と標準偏差、それぞれμ0およびσ0を推定し、ならびに、1に等しい真のラベルに対する予測誤差(たとえば、残差値)の確率分布の平均と標準偏差、それぞれμ1およびσ1を推定し得る。いくつかの例では、0に等しい真のラベルに対する予測誤差の確率分布の分散σ0
2が、標準偏差σ0に加えて、またはその代わりに決定されてもよく、1に等しい真のラベルに対する予測誤差の確率分布の分散σ1
2が、標準偏差σ1に加えて、またはその代わりに決定されてもよい。
【0346】
いくつかの事例では、予測誤差の所与の確率分布は正規分布に対応してもよく、他の事例では、予測誤差の所与の確率分布は、ベルヌーイ分布、一様分布、二項分布、超幾何分布、幾何分布、指数分布などの、正規分布以外の確率分布に対応してもよい。そのような他の事例では、推定される分布パラメータは、いくつかの例では、予測誤差の所与の確率分布の特性に固有の1つまたは複数のパラメータなどの、平均、標準偏差、および分散以外のパラメータを含み得る。たとえば、一様分布に対応する予測誤差の所与の確率分布に対して推定される分布パラメータは、最小値パラメータおよび最大値パラメータ(aおよびb)を含んでもよく、一方、指数分布に対応する予測誤差の所与の確率分布に対して推定される分布パラメータは、少なくとも1つのレートパラメータ(λ)を含んでもよい。いくつかの実装形態では、第1の機械学習モデルの予測誤差を示すデータがそのような分布パラメータを推定するために取得され利用され得るように、
図11のプロセス1110に関連して実行される1つまたは複数の動作と同様の1つまたは複数の動作が実行され得る。前述の実装形態の少なくともいくつかにおいて、第1の機械学習モデルの予測誤差を示すデータは、(i)いくつかの異なるタイプの確率分布(たとえば、正規分布、ベルヌーイ分布、一様分布、二項分布、超幾何分布、幾何分布、指数分布など)の中から、データにより示される予測誤差の所与のサブセットの確率分布の形状に最もよく対応する特定のタイプの確率分布を識別し、(ii)識別された特定のタイプの確率分布に従って、データにより示される予測誤差の所与のサブセットの確率分布の1つまたは複数のパラメータを推定するために、取得され利用され得る。他の構成も可能である。
【0347】
推定される分布パラメータが平均および標準偏差を含む例を再び参照すると、これらの例では、0に等しい真のラベルに対してそのような分布パラメータを推定するために、MPCクラスタは、
【0348】
【0349】
を計算することができ、ここで、
【0350】
【0351】
である。
【0352】
いくつかの例では、MPCクラスタは、分散σ0
2に基づいて、たとえば分散σ0
2の平方根を計算することによって、標準偏差σ0を計算する。同様に、1に等しい真のラベルに対するそのような分散パラメータを推定するために、MPCクラスタは、
【0353】
【0354】
を計算することができ、ここで、
【0355】
【0356】
である。
【0357】
いくつかの例では、MPCクラスタは、分散σ1
2に基づいて、たとえば分散σ1
2の平方根を計算することによって、標準偏差σ1を計算する。
【0358】
そのような分布パラメータが推定されると、係数{a2,a1,a0}が、計算され、記憶され、k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)に対応する変換fを適用するために後で利用され得る。いくつかの例では、これらの係数は、第1の機械学習モデルを構成するために利用され、それは、その構成が進行すると、第1の機械学習モデルが、対応する変換fを、入力に応答してk個の最近傍ユーザプロファイルに対する真のラベルの合計に適用するように行われる。
【0359】
多クラス分類の場合、二項分類のように、各ベクトルの中の各々の真のラベルまたはk個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットは、0または1のいずれかのバイナリ値であり得る。この理由で、二項分類を参照して上で説明されたものと同様のアプローチを、多クラス分類技法の実装形態においてもとることができるので、Liおよび
【0360】
【0361】
に基づいて計算された残差値を、Liを予測するために使用することができない。しかしながら、多クラス分類の場合、それぞれの関数または変換fが、各カテゴリに対して定義され利用され得る。たとえば、各ユーザプロファイルに対する真のラベルの各ベクトルまたはセットが、w個の異なるカテゴリにそれぞれ対応するw個の異なる真のラベルを含むとすると、w個の異なる変換fが決定され利用され得る。また、真のラベルの合計を計算する代わりに、多クラス分類の場合、頻度値が各カテゴリに対して計算される。そのような頻度値がどのように計算され得るかについてのさらなる詳細が、上で与えられ、すぐ下でも与えられる。他の構成も可能である。
【0362】
任意に選ばれた第jのラベルに対して、MPCクラスタは、ljが訓練例に対する訓練ラベルであるかどうかに基づいて、訓練例を2つのグループへと区分することができる。ljが訓練ラベルである訓練例のグループに対して、MPCクラスタは、frequencyiが正規分布であると仮定し、平均μ1および分散σ1を計算することができる。一方、ljが訓練ラベルではない訓練例のグループに対して、MPCクラスタは、frequencyiが正規分布であると仮定し、平均μ0および分散σ0を計算することができる。
【0363】
二項分類と同様に、多クラス分類の場合、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の導関数である。
【0364】
上記の3つの性質は、二項分類の場合の対応する性質と非常に似ている。多クラス分類の場合、利用され得る上記の特性を伴う変換の一例は、形状の二次多項式変換f(x)=a2x2 + a1x+a0であり、f'(x)=2a2x+a1である。いくつかの例では、MPCクラスタは、次のような3つの制約からの3つの線形式に基づいて、係数{a2,a1,a0}の値を決定論的に計算することができる。
【0365】
【0366】
として
(i) a'2=σ0-σ1
(ii) a'1=2(σ1μ1-σ0μ0)
(iii) a'0=μ0(μ0σ0+μ0σ1-2μ1σ1)
【0367】
二項分類に対する変換と多クラス分類に対する変換はほぼ同じであり、唯一の違いは、k-NNモデルを用いた多クラス分類では、Dの値が、いくつかの実装形態ではkという係数により拡大され得ることであることに留意されたい。
【0368】
再び
図9を参照すると、いくつかの実装形態では、ステップ912~916のうちの1つまたは複数は、MPCクラスタによって利用され得る少なくとも1つの関数または変換を定義するためのアプローチを用いた上で説明された動作のうちの1つまたは複数に対応し得るので、L
iおよび
【0369】
【0370】
に基づいて計算された残差値を、Liを予測するために使用することができない。具体的には、ステップ912~916は、1つまたは複数の二項分類および/または多クラス分類技法が利用されるべき実装形態のために実行され得る。上で言及されたように、ステップ912~916は、ステップ920および930の前に実行され、ステップ910の後に実行され得る。
【0371】
MPCクラスタは、複数のユーザプロファイルに対する複数の真のラベルに基づいて分布パラメータのセットを推定する(912)。たとえば、これは、MPCクラスタが、上で説明されたように、ステップ910において利用されるものと同じユーザプロファイルと関連付けられる真のラベルに基づいて、パラメータμ0、σ0
2
、σ0、μ1、σ1
2、およびσ1のうちの1つまたは複数を計算することに関連して実行される、1つまたは複数の動作と同様または等価である1つまたは複数の動作に対応し得る。
【0372】
MPCクラスタは、分布パラメータの推定されるセットに基づいて関数を導出する(914)。たとえば、これは、MPCクラスタが、関数を実質的に定義する{a2, a1, a0}などのパラメータまたは係数を計算することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの実装形態では、ステップ914において関数を導出するために、MPCクラスタは関数のパラメータのセット、たとえば{a2, a1, a0}を導出する。
【0373】
MPCクラスタは、入力としてユーザプロファイルが与えられると、初期の予測されるラベルを生成し、導出された関数を初期の予測されるラベルに適用して、ユーザプロファイルに対する予測されるラベルを出力として生成するように、第1の機械学習モデルを構成する(916)。たとえば、これは、第1の機械学習モデルをMPCクラスタが構成することに関連して実行される1つまたは複数の動作と同様または等価である1つまたは複数の動作に対応してもよく、その構成することは、進行すると、第1の機械学習モデルが、対応する変換fを、(二項分類の場合)入力に応答してk個の最近傍ユーザプロファイルに対する真のラベルの合計に適用するように行われる。多クラス分類の場合、変換fは、w個の異なる関数のうちの1つを表すことがあり、MPCクラスタは、そのw個の異なる関数のうちの1つを、w個の異なるカテゴリに対応するベクトルまたはセットの中のw個の異なる値のそれぞれ1つに適用するように、第1の機械学習モデルを構成する。上で説明されたように、これらのw個の異なる値の各々1つが頻度値に対応し得る。
【0374】
ステップ912~916が実行され、第1の機械学習モデルがそのような方式で構成されると、ステップ920において生成され、後で、たとえばステップ930において利用されるデータは、真のラベル(Li)を予測するために使用されないことがある。
【0375】
再び
図8を参照すると、いくつかの実装形態では、プロセス800は、
図9~
図11を参照して上で説明された動作のうちの1つまたは複数に対応する1つまたは複数のステップを含み得る。
【0376】
いくつかの実装形態では、プロセス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つまたは複数の動作に対応し得る。
【0377】
前述の実装形態の少なくともいくつかでは、ユーザプロファイルに対する残差値は、ユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルとの値の差を示す。たとえば、これは、回帰技法が利用される例に対して当てはまり得る。
【0378】
前述の実装形態の少なくともいくつかでは、MPCクラスタが第1の機械学習モデルの性能を評価する前に、プロセス800はさらに、複数の真のラベルに少なくとも一部基づいてMPCクラスタが関数を導出する1つまたは複数の動作を含み、入力としてユーザプロファイルが与えられると、関数を使用してユーザプロファイルに対する予測されるラベルを出力として生成するように、第1の機械学習モデルを構成する。たとえば、これは、
図9を参照して上で説明されたような、MPCクラスタがステップ914~916を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの実装形態では、このステップにおいて関数を導出するために、MPCクラスタは関数のパラメータのセット、たとえば{a
2, a
1, a
0}を導出する。
【0379】
前述の実装形態の少なくともいくつかでは、プロセス800はさらに、複数の真のラベルに少なくとも一部基づいてMPCクラスタが分布パラメータのセットを推定する、1つまたは複数の動作を含む。そのような実装形態では、複数の真のラベルに少なくとも一部基づいて関数を導出するために、MPCクラスタは、分布パラメータの推定されるセットに少なくとも一部基づいて関数を導出する。たとえば、これは、
図9を参照して上で説明されたような、MPCクラスタがステップ912~914を実行することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、分布パラメータの前述のセットは、複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、たとえば、複数の真のラベルの中の第1の値の真のラベルに対する予測誤差の正規分布の平均(μ
0)および分散(σ
0)、ならびに、複数の真のラベルの中の第2の値の真のラベルに対する予測誤差の確率分布の1つまたは複数のパラメータ、たとえば、複数の真のラベルの中の第2の異なる値の真のラベルに対する予測誤差の正規分布の平均(μ
1)および分散(σ
1)を含み得る。上で説明されたように、いくつかの例では、分布パラメータの前述のセットは、他のタイプのパラメータを含み得る。さらに、前述の実装形態の少なくともいくつかでは、関数は二次多項式関数であり、たとえばf(x)=a
2x
2+a
1x+a
0であり、ここでf'(x)=2a
2x+a
1である。
【0380】
前述の実装形態の少なくともいくつかでは、ユーザプロファイルが入力として与えられると、関数を使用してユーザプロファイルに対する予測されるラベルを出力として生成するように第1の機械学習モデルを構成するために、MPCクラスタは、入力としてユーザプロファイルが与えられると、(i)ユーザプロファイルに対する初期の予測されるラベルを生成し、(ii)ユーザプロファイルに対する初期の予測されるラベルに関数を適用して、ユーザプロファイルに対する予測されるラベルを出力として生成するように、第1の機械学習モデルを構成する。たとえば、二項分類技法が利用される例では、これは、MPCクラスタが、入力としてユーザプロファイルが与えられると、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計(sum_of_labels)を計算し、(ii)ユーザプロファイルに対する初期の予測されるラベルに関数(変換f)を適用して、ユーザプロファイルに対する予測されるラベル
【0381】
【0382】
を出力として生成するように、第1の機械学習モデルを構成する、1つまたは複数の動作に対応し得る。マルチクラス分類技法が利用される場合に対して、同様の動作が実行され得る。いくつかの実装形態では、ユーザプロファイルに対する初期の予測されるラベルに関数を適用するために、MPCクラスタは、パラメータの導出されたセット、たとえば{a2,a1,a0}に基づいて定義されるように関数を適用する。いくつかの例では、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、回帰技法または二項分類技法が利用される実装形態に対して当てはまり得る。前述の例のいくつかでは、特定のユーザプロファイルに対する予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に対応し得る。たとえば、これは、回帰分類技法が利用される実装形態に対して当てはまり得る。
【0383】
【0384】
他のそのような例では、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に関数を適用して、特定のユーザプロファイルに対する予測されるラベルを生成する。たとえば、これは、二項分類技法が利用される実装形態に対して当てはまり得る。
【0385】
【0386】
上で言及されたように、前述の実装形態のいくつかでは、k個の最近傍ユーザプロファイルの各々に対する真のラベルに少なくとも一部基づいて予測されるラベルを決定するために、MPCクラスタは、それぞれ、カテゴリのセットに対応するk個の最近傍ユーザプロファイルの各々に対する真のラベルのセットに少なくとも一部基づいて、予測されるラベルのセットを決定し、予測されるラベルのセットを決定するために、MPCクラスタはセットの中の各カテゴリに対する動作を実行する。そのような動作は、MPCクラスタが、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度を決定するような、1つまたは複数の動作を含み得る。たとえば、これは、
図6~
図7を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用されるような1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
【0387】
【0388】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。前述の実装形態の少なくともいくつかでは、予測されるラベルのセットを決定するために、セットの中の各カテゴリに対して、MPCクラスタは、カテゴリに対応する関数を決定された頻度に適用して、特定のユーザプロファイルに対するカテゴリに対応する予測されるラベルを生成する。たとえば、それぞれの関数は、
図9のステップ914を参照して上で説明されたような、w個の異なるカテゴリに対してMPCクラスタによって導出されるw個の異なる関数のうちの1つに対応し得る。
【0389】
図12は、MPCクラスタのコンピューティングシステムにおける性能が向上した、ユーザプロファイルに対する推測結果を生成するための例示的なプロセス1200を示す流れ図である。
図12を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。プロセス1200の動作の少なくともいくつかは、たとえば
図1のMPCクラスタ130のMPC
1などの、MPCクラスタの第1のコンピューティングシステムによって実施されてもよく、
図8を参照して上で説明された動作の1つまたは複数にも対応してもよい。しかしながら、プロセス1200では、ユーザデータのプライバシー保護をもたらすために、1つまたは複数の動作が秘密シェアにわたって実行され得る。一般に、以下で、および本明細書の他の箇所で記述されるような「シェア」は、少なくともいくつかの実装形態では、秘密シェアに相当し得る。他の構成も可能である。
図12を参照して説明される動作の1つまたは複数は、たとえば推測時間において実行され得る。
【0390】
MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルと関連付けられる推測要求を受信する(1202)。たとえば、これは、
図1を参照して上で説明されたような、MPCクラスタ130のMPC
1がアプリケーション112から推測要求を受信することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの実装形態では、これは、
図8を参照して上で説明されたような、ステップ802に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0391】
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のMPC
2に対応し得る。
【0392】
この例では、複数のユーザプロファイルに対する複数の真のラベルは、暗号化されたラベルデータ626の一部として含まれる真のラベルに対応してもよく、これらは、第1の機械学習モデル620を訓練および/または評価するために使用された複数のユーザプロファイルに対する真のラベルである。いくつかの例では、複数の真のラベルは、真のラベルの別のセットのシェアに対応し得る。所与のユーザプロファイルに対する予測されるラベルの決定がそれに基づく、複数の真のラベルのうちの1つまたは複数の真のラベルは、たとえば、第1の機械学習モデル620のk-NNモデル622によって特定されるk個の最近傍ユーザプロファイルの各々に対する少なくとも1つの真のラベルを含み得る。いくつかの例では、複数の真のラベルの各々は、
図6~
図7の例と同じように暗号化される。k個の最近傍ユーザプロファイルに対する真のラベルが予測されるラベルを決定するために活用され得る様々な方法のうちのいくつかが、上で詳しく説明された。上記において明らかにされたように、そのような真のラベルが予測されるラベルを決定するために活用される方法または方式は、利用される推測技法のタイプ(たとえば、回帰技法、二項分類技法、多クラス分類技法など)に少なくとも一部依存し得る。k-NN計算に関連して実行され得る秘密シェアの交換に関する追加の詳細は、
図1~
図5を参照して上で与えられる。
【0393】
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)。
【0394】
MPCクラスタの第1のコンピューティングシステムは、予測されるラベルおよび予測される残差値に基づいて推測結果を表すデータを生成する(1216)。いくつかの実装形態では、これは、
図8を参照して上で説明されたような、ステップ808に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。したがって、いくつかの例では、推測結果は、予測されるラベルと予測される残差値の合計を含み、またはそれに対応する。
【0395】
MPCクラスタの第1のコンピューティングシステムは、推測結果を表すデータをクライアントデバイスに提供する(1218)。いくつかの実装形態では、これは、
図8を参照して上で説明されたような、ステップ810に関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。たとえば、これは、
図1-2を参照して上で説明されたような、アプリケーション112が実行されるクライアントデバイス110にMPCクラスタ130が推測結果を提供することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0396】
いくつかの実装形態では、プロセス1200はさらに、MPCクラスタの第1のコンピューティングシステムが、所与のユーザプロファイルの第1のシェアに変換を適用して、所与のユーザプロファイルの第1の変換されたシェアを取得する、1つまたは複数の動作を含む。これらの実装形態では、予測されるラベルを決定するために、MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルの第1の変換されたシェアに少なくとも一部基づいて、予測されるラベルの第1のシェアを決定する。たとえば、これは、
図6-8を参照して上で説明されたような、ランダム投影変換をユーザプロファイル609(P
i)に適用して変換されたユーザプロファイル619(P
i')を取得するためにランダム投影論理610が利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0397】
前述の実装形態の少なくともいくつかでは、予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、所与のユーザプロファイルの第1の変換されたシェアを入力として第1の機械学習モデルに提供して、所与のユーザプロファイルに対する予測されるラベルの第1のシェアを出力として取得する。たとえば、これは、
図6~
図7を参照して上で説明されたように、第1の機械学習モデル620が変換されたユーザプロファイル619(Pi')を入力として受信し、それに応答して少なくとも1つの予測されるラベル629
【0398】
【0399】
を生成することに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0400】
いくつかの例では、前述の変換はランダム投影であり得る。さらに、これらの例の少なくともいくつかにおいて、前述のランダム投影は、Johnson-Lindenstrauss(J-L)変換であり得る。
【0401】
いくつかの実装形態では、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のコンピューティングシステムに与えることができる。
【0402】
第1のコンピューティングシステムは次いで、2×([A1]==[B1])-1として[R1]を計算することができる。同様に、第2のコンピューティングシステムは次いで、2×([A2]==[B2])-1として[R2]を計算することができる。このようにして、[R1]および[R2]は、その要素が等しい確率で1または-1のいずれかであるRの2つの秘密シェアである。
【0403】
実際のランダム投影は、次元1×nのPiの秘密シェアと次元n×kの投影行列Rとの間の投影であり、1×kの結果をもたらす。n>>kであると仮定すると、J-L変換は、訓練データの次元をnからkに下げる。暗号化されたデータにおいて上記の投影を行うために、第1のコンピューティングシステムは[Pi,1]・[Ri,1]を計算することができ、これは、2つのシェア間での乗算および2つのシェア間での加算を必要とする。
【0404】
上で言及されたように、いくつかの実装形態では、第1の機械学習モデルは、MPCクラスタの第1のコンピューティングシステムによって維持されるk最近傍モデルを含み、1つまたは複数の機械学習モデルの第1のセットは、MPCクラスタの第2のコンピューティングシステムによって維持されるk最近傍モデルを含む。いくつかの例では、2つの前述のk最近傍モデルは互いに同一またはほぼ同一であり得る。すなわち、いくつかの例では、第1および第2のコンピューティングシステムは、同じk-NNモデルのコピーを維持し、各々が真のラベルの固有のシェアを記憶する。いくつかの例では、1つまたは複数のプロトタイプ方法に根ざすモデルが、前述のk最近傍モデルの一方または両方の代わりに実装され得る。
【0405】
これらの実装形態の少なくともいくつかでは、予測されるラベルを決定するために、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
【0406】
【0407】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。いくつかの例では、予測されるラベルは、k個の最近傍ユーザプロファイルに対する真のラベルの合計を含み、またはそれに対応する。
【0408】
前述の実装形態のいくつかでは、予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1のシェアを決定し、(ii)MPCクラスタの第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対する真のラベルの合計の第2のシェアを受信し、(iii)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、
図6~
図8を参照して上で説明されたように、1つまたは複数の多クラス分類技法が利用される1つまたは複数の実装形態において、第1の機械学習モデル620が少なくとも1つの予測されるラベル629
【0409】
【0410】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0411】
いくつかの実装形態では、第2の機械学習モデルは、MPCクラスタの第1のコンピューティングシステムによって維持されるディープニューラルネットワーク(DNN)、勾配ブースティング決定木(GBDT)、およびランダムフォレストモデルのうちの少なくとも1つを含み、1つまたは複数の機械学習モデルの第2のセットは、MPCクラスタの第2のコンピューティングシステムによって維持されるDNN、GBDT、およびランダムフォレストモデルのうちの少なくとも1つを含む。いくつかの例では、第1および第2のコンピューティングシステムによって維持される2つのモデル(たとえば、DNN、GBDT、ランダムフォレストモデルなど)は、互いに同一またはほぼ同一であり得る。
【0412】
いくつかの実装形態では、プロセス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つまたは複数の動作に対応し得る。
【0413】
前述の実装形態の少なくともいくつかでは、ユーザプロファイルに対する残差値の第1のシェアは、第1の機械学習モデルによってユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルの第1のシェアとの値の差を示し、ユーザプロファイルに対する残差値の第2のシェアは、第1の機械学習モデルによってユーザプロファイルに対して決定される予測されるラベルとユーザプロファイルに対する真のラベルの第2のシェアとの値の差を示す。たとえば、これは、回帰技法が利用される例に対して当てはまり得る。
【0414】
前述の実装形態の少なくともいくつかにおいて、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)を適用して、ユーザプロファイルに対する予測されるラベル
【0415】
【0416】
を出力として生成するように、第1の機械学習モデルを構成する、1つまたは複数の動作に対応し得る。多クラス分類技法が利用される場合に対して、同様の動作が実行され得る。
【0417】
秘密シェアにわたって実装されると、第1のコンピューティングシステム(たとえば、MPC1)は、
【0418】
【0419】
を計算することができる。
【0420】
同様に、秘密シェアにわたって実装されると、第2のコンピューティングシステム(たとえば、MPC2)は、
【0421】
【0422】
を計算することができる。
【0423】
MPCクラスタは次いで、上で説明されたようなsum0、count0、sum_of_square0を平文で再構築し、分散
【0424】
【0425】
を計算することができる。
【0426】
同様に、分散
【0427】
【0428】
を計算するために、第1のコンピューティングシステム(たとえば、MPC1)は、
【0429】
【0430】
を計算することができる。
【0431】
また、第2のコンピューティングシステム(たとえば、MPC2)は、
【0432】
【0433】
を計算することができる。
【0434】
MPCクラスタは次いで、上で説明されたようなsum1、count1、sum_of_square1を平文で再構築し、分散
【0435】
【0436】
を計算することができる。
【0437】
前述の実装形態の少なくともいくつかにおいて、第1の機械学習モデルの性能を評価するとき、MPCクラスタは、1つまたは複数の固定点計算技法を利用して、各ユーザプロファイルに対する残差値を決定することができる。より具体的には、第1の機械学習モデルの性能を評価するとき、各ユーザプロファイルに対する残差値の第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、対応する真のラベルまたはそのシェアを、特定のスケーリング係数によってスケーリングし、特定のスケーリング係数によって関数と関連付けられる係数{a2,a1,a0}をスケーリングし、スケーリングされる係数を最も近い整数に丸める。そのような実装形態では、MPCクラスタの第2のコンピューティングシステムは、各ユーザプロファイルに対する残差値の第2のシェアを決定するために同様の動作を実行し得る。したがって、MPCクラスタは、秘密シェアを用いて残差値を計算し、2つの秘密シェアから平文の残差値を再構築し、平文の残差値をスケーリング係数で割ることができる。
【0438】
前述の実装形態の少なくともいくつかでは、プロセス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)=a
2x
2+a
1x+a
0であり、ここでf'(x)=2a
2x+a
1であるが、いくつかの例では、他の関数が利用され得る。
【0439】
いくつかの例では、予測されるラベルの第1のシェアを決定するために、MPCクラスタの第1のコンピューティングシステムは、(i)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1のシェアを決定し、(ii)MPCクラスタの第2のコンピューティングシステムから、k個の最近傍ユーザプロファイルに対する真のラベルの合計の第2のシェアを受信し、(iii)k個の最近傍ユーザプロファイルに対する真のラベルの合計の第1および第2のシェアに少なくとも一部基づいて、k個の最近傍ユーザプロファイルに対する真のラベルの合計を決定する。たとえば、これは、回帰技法または二項分類技法が利用される実装形態に対して当てはまり得る。前述の例のいくつかでは、予測されるラベルの第1のシェアは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に対応し得る。たとえば、これは、回帰分類技法が利用される実装形態に対して当てはまり得る。
【0440】
【0441】
他のそのような例では、予測されるラベルの第1のシェアを決定するために、MPCクラスタは、k個の最近傍ユーザプロファイルに対する真のラベルの合計に関数を適用して、所与のユーザプロファイルに対する予測されるラベルを生成する。たとえば、これは、二項分類技法が利用される実装形態に対して当てはまり得る。
【0442】
【0443】
上で言及されたように、前述の実装形態のいくつかでは、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
【0444】
【0445】
を取得するために利用されていることに関連して実行される1つまたは複数の動作と同様または等価である、1つまたは複数の動作に対応し得る。
【0446】
前述の実装形態の少なくともいくつかでは、予測されるラベルのセットの第1のシェアを決定するために、セットの中の各カテゴリに対して、MPCクラスタの第1のコンピューティングシステムは、k個の最近傍ユーザプロファイルの中のユーザプロファイルに対する真のラベルのセットの中のカテゴリに対応する真のラベルが第1の値の真のラベルである頻度に、カテゴリに対応する関数を適用して、所与のユーザプロファイルに対するカテゴリに対応する予測されるラベルの第1のシェアを生成する。たとえば、それぞれの関数は、
図8~
図9のステップ914を参照して上で説明されたような、w個の異なるカテゴリに対してMPCクラスタによって導出されるw個の異なる関数のうちの1つに対応し得る。
【0447】
多クラス分類問題では、第1の機械学習モデルの性能(たとえば、品質)を評価するとき、各訓練例/クエリに対して、MPCクラスタは、k個の最近傍を見つけ、秘密シェアにわたってそれらのラベルの頻度を計算することができる。
【0448】
たとえば、多クラス分類問題に対してw個の有効なラベル(たとえば、クラス){l1,l2,...lW}があると仮定される例を考える。{id1,id2,...idk}によって特定されるk個の近傍の中で、第1のコンピューティングシステム(たとえば、MPC1)は、第jのラベル[lj,1]の頻度を
【0449】
【0450】
として計算することができる。
【0451】
第1のコンピューティングシステムは、真のラベル[label1]から
[expected_frequencyj,1]=k×([label1]==j)
として頻度を計算することができる。
【0452】
したがって、第1のコンピューティングシステムは、
[Residuej,1]=[expected_frequencyj,1]-[frequencyj,1]
を計算することができる。
【0453】
そして、[Residuej,1]は
【0454】
【0455】
と等価である。
【0456】
同様に、第2のコンピューティングシステム(たとえば、MPC2)は、
【0457】
【0458】
を計算することができる。
【0459】
二項分類および回帰の場合、各推測に対して、残差値は整数型の秘密メッセージであり得る。逆に、多クラス分類の場合、各推測に対して、残差値は、上で示されたように、整数ベクトルの秘密メッセージであり得る。
【0460】
図13は、上で説明された動作を実行するために使用され得る例示的なコンピュータシステム1300のブロック図である。システム1300は、プロセッサ1310、メモリ1320、記憶デバイス1330、および入出力デバイス1340を含む。構成要素1310、1320、1330、および1340の各々は、たとえば、システムバス1350を使用して、相互接続され得る。プロセッサ1310は、システム1300内で実行するための命令を処理することが可能である。いくつかの実装形態では、プロセッサ1310は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ1310は、マルチスレッドプロセッサである。プロセッサ1310は、メモリ1320または記憶デバイス1330に記憶された命令を処理することが可能である。
【0461】
メモリ1320は、システム1300内に情報を記憶する。一実装形態では、メモリ1320は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ1320は、揮発性メモリユニットである。別の実装形態では、メモリ1320は、不揮発性メモリユニットである。
【0462】
記憶デバイス1330は、システム1300に大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス1330は、コンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス1330は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
【0463】
入出力デバイス1340は、システム1300のための入出力動作を提供する。いくつかの実装形態では、入出力デバイス1340は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス1360、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成されたドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどの、他の実装形態も使用され得る。
【0464】
例示的な処理システムが
図13で説明されているが、本明細書において説明される主題の実装形態および機能的動作は、他のタイプのデジタル電子回路において、または本明細書において開示される構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。
【0465】
主題の実施形態および本明細書において説明される動作は、デジタル電子回路で、または本明細書において開示される構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械で生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
【0466】
本明細書において説明される動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
【0467】
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つまたは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分布コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0468】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、またはモジュールとして、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットを含む任意の形態で展開されてもよい。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプト)を保持するファイルの一部分に、当該のプログラム専用の単一のファイルに、または複数の協調ファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で実行されるか、または、1つのサイトに配置されるかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
【0469】
本明細書において説明されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって活動を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローが、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行されてもよく、装置が、それらとしても実装されてもよい。
【0470】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの必須要素は、命令に従って活動を実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクも含むか、あるいは、それらからデータを受信することもしくはそれらにデータを転送することまたはその両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
【0471】
ユーザとの対話を提供するために、本明細書において説明される主題の実施形態は、ユーザに情報を表示するための、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。
【0472】
本明細書において説明される主題の実施形態は、バックエンド構成要素、たとえば、データサーバを含む、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、またはフロントエンド構成要素、たとえば、それを通じてユーザが本明細書において説明される主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含む、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、デジタルデータ通信の任意の形態の媒体、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0473】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントとサーバとは、一般に、互いに離れており、典型的には、通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、そのユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
【0474】
本明細書は多くの特定の実装形態の詳細を含んでいるが、これらは任意の発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々にまたは任意の適切な部分組合せで実装され得る。さらに、特徴はいくつかの組合せにおいて働くものとして上で説明され、そのようなものとして最初に特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除されてもよく、特許請求される組合せは、副組合せまたは副組合せの変形を対象としてもよい。
【0475】
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に行われること、または例示したすべての動作が行われることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラム構成要素およびシステムは一般に、単一のソフトウェア製品に一緒に組み込まれてもよく、または複数のソフトウェア製品にパッケージ化されてもよいことを理解されたい。
【0476】
このようにして、主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲に列挙される活動は、異なる順序で行われ、それでも望ましい結果を達成し得る。加えて、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0477】
105 ネットワーク
110 クライアントデバイス
112 アプリケーション
130 セキュアMPCクラスタ
140 発行者
142 ウェブサイト
145 リソース
150 コンテンツプラットフォーム
160 デジタルコンポーネント提供者
620 第1の機械学習モデル
622 k-NNモデル
624 ラベル予測器
730 第1の機械学習モデル
1060 残差計算論理
1310 プロセッサ
1320 メモリ
1330 記憶デバイス
1340 入力/出力デバイス
1350 システムバス
1360 外部デバイス