(57)【特許請求の範囲】
【請求項１】
マルチパーティセキュアロジスティック回帰モデルを訓練するためのコンピュータで実装される方法であって、
複数のセキュア計算ノード(SCN)のうちの第1のSCNによって、乱数提供器から複数の乱数のうちの第1の乱数を受信するステップと、
前記第1のSCNによって、前記第1の乱数を使用して前記SCNに記憶されているデータを暗号化して、第1の暗号化されたデータを生成するステップと、
前記第1のSCNによって、前記複数のSCNのうちの第2のSCNに前記第1の暗号化されたデータを送信するステップと、
前記第1のSCNによって前記第2のSCNから、前記乱数提供器から前記複数の乱数のうちの第2の乱数を使用して暗号化された第2の暗号化されたデータを受信するステップと、
前記第1のSCNによって、前記第1の暗号化されたデータおよび前記第2の暗号化されたデータを使用して複数の割当て分に分割された暫定の計算結果を生成することによって、セキュアロジスティック回帰モデル(SLRM)を反復的に更新するステップであって、前記複数の割当て分が、前記複数のSCNに送信されて、それぞれの割当て分に適用されたシグモイドフィッティング関数とミニバッチ確率的勾配降下法のサンプルのラベルとの間の差として予測誤差の列ベクトルを決定するために、前記SLRMへの入力として使用され、元のデータが前記複数の割当て分のうちの一つの割当て分を使用することによって復元できないように、前記複数の割当て分の各々が元のデータを隠す、ステップと、
前記SLRMを反復的に更新した後で、前記SLRMの結果を出力するステップとを備え、前記結果が、サービスが前記複数のSCNの各SCNによって実行されることを可能にするように構成され、
前記複数の乱数が、ランダム行列u、ランダムベクトルv、および乱数zであるとともに、前記第1のSCNと前記第2のSCNとの間で分散され、前記第1の暗号化されたデータおよび前記第2の暗号化されたデータは、前記第1のSCNと前記第2のSCNにおいて取得された、前記ランダム行列u、前記ランダムベクトルvの割当て分v0とv1、および前記乱数zの割当て分z0とz1を使用して暗号化されたデータであり、前記乱数zの割当て分が準同型計算によって生成され、対応する乱数の割当て分が相関しており、z0+z1=u*v=u*(v0+v1)と表される、コンピュータで実装される方法。
【請求項２】
各乱数が、数、ベクトル、または行列のうちの少なくとも1つである、請求項1に記載のコンピュータで実装される方法。
【請求項３】
前記乱数のうちの少なくとも1つが第三者のエージェントによって生成される、請求項1に記載のコンピュータで実装される方法。
【請求項４】
前記SLRMを反復的に更新するステップが秘密共有(SS)方式に基づく、請求項1に記載のコンピュータで実装される方法。
【請求項５】
前記SLRMを反復的に更新するステップが、
サービスプロセスの一部分が完了したという通知を受信するステップと、
前記通知を受信することに応答して、前記サービスプロセスの第2の部分を開始するステップと
を含む、請求項1に記載のコンピュータで実装される方法。
【請求項６】
前記乱数提供器から複数の乱数を受信する前に、前記SLRMと関連付けられるパラメータを初期化するステップをさらに備える、請求項1に記載のコンピュータで実装される方法。
【請求項７】
2つの連続する反復結果の間の差が所定の閾値未満になるまで前記SLRMを反復的に更新するステップが継続する、請求項1に記載のコンピュータで実装される方法。
【請求項８】
動作を実行するためにコンピュータシステムによって実行可能な1つまたは複数の命令を記憶する非一時的コンピュータ可読媒体であって、前記動作が、
複数のセキュア計算ノード(SCN)のうちの第1のSCNによって、乱数提供器から複数の乱数の第1の乱数を受信する動作と、
前記第1のSCNによって、前記第1の乱数を使用して前記SCNに記憶されているデータを暗号化して、第1の暗号化されたデータを生成する動作と、
前記第1のSCNによって、前記複数のSCNのうちの第2のSCNに前記第1の暗号化されたデータを送信する動作と、
前記第1のSCNによって前記第2のSCNから、前記乱数提供器から前記複数の乱数のうちの第2の乱数を使用して暗号化された第2の暗号化されたデータを受信する動作と、
前記第1のSCNによって、前記第1の暗号化されたデータおよび前記第2の暗号化されたデータを使用して複数の割当て分に分割された暫定の計算結果を生成することによって、セキュアロジスティック回帰モデル(SLRM)を反復的に更新する動作であって、前記複数の割当て分が、前記複数のSCNに送信されて、それぞれの割当て分に適用されたシグモイドフィッティング関数とミニバッチ確率的勾配降下法のサンプルのラベルとの間の差として予測誤差の列ベクトルを決定するために、前記SLRMへの入力として使用され、元のデータが前記複数の割当て分のうちの一つの割当て分を使用することによって復元できないように、前記複数の割当て分の各々が元のデータを隠す、動作と、
前記SLRMを反復的に更新した後で、前記SLRMの結果を出力する動作とを備え、前記結果が、サービスが前記複数のSCNの各SCNによって実行されることを可能にするように構成され、
前記複数の乱数が、ランダム行列u、ランダムベクトルv、および乱数zであるとともに、前記第1のSCNと前記第2のSCNとの間で分散され、前記第1の暗号化されたデータおよび前記第2の暗号化されたデータは、前記第1のSCNと前記第2のSCNにおいて取得された、前記ランダム行列u、前記ランダムベクトルvの割当て分v0とv1、および前記乱数zの割当て分z0とz1を使用して暗号化されたデータであり、前記乱数zの割当て分が準同型計算によって生成され、対応する乱数の割当て分が相関しており、z0+z1=u*v=u*(v0+v1)と表される、非一時的コンピュータ可読媒体。
【請求項９】
各乱数が、数、ベクトル、または行列のうちの少なくとも1つである、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記乱数のうちの少なくとも1つが第三者のエージェントによって生成される、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記SLRMを反復的に更新する動作が秘密共有(SS)方式に基づく、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記SLRMを反復的に更新する動作が、
サービスプロセスの一部分が完了したという通知を受信する動作と、
前記通知を受信することに応答して、前記サービスプロセスの第2の部分を開始する動作と
を含む、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記動作が、
前記乱数提供器から前記複数の乱数を受信する前に、前記SLRMと関連付けられるパラメータを初期化する動作を含む、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１４】
2つの連続的な反復結果の間の差が所定の閾値未満になるまで、前記SLRMを反復的に更新することが継続する、請求項8に記載の非一時的コンピュータ可読媒体。
【請求項１５】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに相互動作可能に結合され、前記1つまたは複数のコンピュータによって実行されると1つまたは複数の動作を実行する1つまたは複数の命令を記憶する有形の非一時的機械可読媒体を有する、1つまたは複数のコンピュータメモリデバイスとを備え、前記1つまたは複数の動作が、
複数のセキュア計算ノード(SCN) のうちの第1のSCNによって、乱数提供器から複数の乱数のうちの第1の乱数を受信する動作と、
前記第1のSCNによって、前記第1の乱数を使用して前記SCNに記憶されているデータを暗号化して、第1の暗号化されたデータを生成する動作と、
前記第1のSCNによって、前記複数のSCNのうちの第2のSCNに前記第1の暗号化されたデータを送信する動作と、
前記第1のSCNによって前記第2のSCNから、前記乱数提供器から前記複数の乱数のうちの第2の乱数を使用して暗号化された第2の暗号化されたデータを受信する動作と、
前記第1のSCNによって、前記第1の暗号化されたデータおよび前記第2の暗号化されたデータを使用して複数の割当て分に分割された暫定の計算結果を生成することによって、セキュアロジスティック回帰モデル(SLRM)を反復的に更新する動作であって、前記複数の割当て分が、前記複数のSCNに送信されて、それぞれの割当て分に適用されたシグモイドフィッティング関数とミニバッチ確率的勾配降下法のサンプルのラベルとの間の差として予測誤差の列ベクトルを決定するために、前記SLRMへの入力として使用され、元のデータが前記複数の割当て分のうちの一つの割当て分を使用することによって復元できないように、前記複数の割当て分の各々が元のデータを隠す、動作と、
前記SLRMを反復的に更新した後で、前記SLRMの結果を出力する動作とを備え、
前記結果が、サービスが前記複数のSCNの各SCNによって実行されることを可能にするように構成され、
前記複数の乱数が、ランダム行列u、ランダムベクトルv、および乱数zであるとともに、前記第1のSCNと前記第2のSCNとの間で分散され、前記第1の暗号化されたデータおよび前記第2の暗号化されたデータは、前記第1のSCNと前記第2のSCNにおいて取得された、前記ランダム行列u、前記ランダムベクトルvの割当て分v0とv1、および前記乱数zの割当て分z0とz1を使用して暗号化されたデータであり、前記乱数zの割当て分が準同型計算によって生成され、対応する乱数の割当て分が相関しており、z0+z1=u*v=u*(v0+v1)と表される、コンピュータによって実装されるシステム。
【請求項１６】
各乱数が、数、ベクトル、または行列のうちの少なくとも1つである、請求項15に記載のコンピュータによって実装されるシステム。
【請求項１７】
前記乱数のうちの少なくとも1つが第三者のエージェントによって生成される、請求項15に記載のコンピュータによって実装されるシステム。
【請求項１８】
前記SLRMを反復的に更新することが秘密共有(SS)方式に基づく、請求項15に記載のコンピュータによって実装されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プライバシー保護のための分散型マルチパーティセキュリティモデル訓練フレームワークに関する。
【背景技術】
【０００２】
機械学習は、知見を導き予測を行うために統計モデルを使用する、データサイエンスの一分野である。データの交換および協調を促進するために、異なる当事者が協働して機械学習モデルを確立することがある。従来の機械学習プロジェクトは、複数の当事者から得られた訓練データを1つの場所に集約する。次いで、機械学習プロセスの訓練段階において、訓練モデルは、均一に訓練され得るように、集約されたデータに基づいて機械学習ツールを使用して構築される。訓練データは、任意の参加者によって、またはすべての参加者によって信頼され選択される第三者によって、集約され得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示は、プライバシー保護のための分散型マルチパーティセキュリティモデル訓練フレームワークを説明する。
【０００４】
全般に、本明細書で説明される主題の1つの革新的な態様は、複数のセキュア計算ノード(SCN: secure computation node)において、乱数提供器から複数の乱数を受信し、各SCNにおいて、受信された乱数を使用してSCNに記憶されているデータを暗号化し、各SCNからの暗号化されたデータを使用することによってセキュアロジスティック回帰モデル(SLRM: secure logistic regression model)を反復的に更新し、SLRMを反復的に更新した後で、SLRMの結果を出力するという、活動を含む方法において具現化されてよく、この結果は各SCNによってサービスが実行されることを可能にするように構成される。この態様の他の実施形態は、各々が方法のその活動を実行するように構成される、対応するコンピュータシステム、装置、および1つまたは複数のコンピュータ記憶デバイスに記憶されたコンピュータプログラムを含む。
【０００５】
前述の実施形態および他の実施形態は各々任意選択で、以下の特徴のうちの1つまたは複数を、単独または組合せで含み得る。具体的には、1つの実施形態はすべての以下の特徴を組合せで含む。
【０００６】
本明細書はまた、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶した、1つまたは複数の非一時的コンピュータ可読記憶媒体を提供する。
【０００７】
本明細書はさらに、本明細書で提供される方法を実装するためのシステムを提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶した、コンピュータ可読記憶媒体とを含む。
【０００８】
本明細書による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることが理解される。すなわち、本明細書による方法は、本明細書で具体的に説明される態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【０００９】
本明細書の1つまたは複数の実装形態の詳細が、添付の図面および以下の説明に記載される。本明細書の他の特徴および利点は、この説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本明細書の実装形態による、秘密共有を使用してマルチパーティ機械学習セキュアロジスティック回帰モデル(SLRM)を訓練するための環境の例を示す図である。
【図２Ａ】本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセスの例を示す図である。
【図２Ｂ】本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセスの例を示す図である。
【図３】本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセスの例を示す図である。
【図４Ａ】本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセスの例を示す図である。
【図４Ｂ】本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセスの例を示す図である。
【図５】本明細書の実装形態による、SLRMのパラメータの更新の反復を終了するかどうかを決定するためのプロセスの例を示す図である。
【図６】本明細書の実装形態による、イベントドリブンの対話型セキュアモデリング手順を使用してマルチパーティSLRMを訓練するためのプロセスの例を示す図である。
【図７】本明細書の実装形態に従って実行され得るプロセスの例を示す図である。
【図８】本明細書の実装形態に従って実行され得るプロセスの例を示す図である。
【図９】本明細書の実装形態による、装置のモジュールを示す図の例である。
【発明を実施するための形態】
【００１１】
様々な図面における同様の参照番号および指定は同様の要素を示す。
【００１２】
以下の詳細な説明は、プライバシー保護のための分散型マルチパーティセキュリティモデル訓練フレームワークを説明し、1つまたは複数の特定の実装形態の文脈で当業者が開示される主題を作成および使用することを可能にするために提示される。開示される実装形態の様々な修正、変更、および置換を行うことができ、これらは当業者に容易に明らかとなり、定義される一般的な原理は、本開示から逸脱することなく、他の実装形態および応用に適用され得る。いくつかの事例では、説明される主題の理解を得るのに不要な詳細は、そのような詳細が当業者の技能の範囲内にある限り、不要な詳細により1つまたは複数の説明される実装形態を不明瞭にしないように省略され得る。本開示は、説明または例示される実装形態に限定されることは意図されず、説明される原理および特徴と一致する最も広い範囲を認められるべきである。
【００１３】
「ビッグデータ」と呼ばれることがある、消費者についての大量の情報のセットが、消費者の習慣のより良い理解、マーケティングキャンペーンのより良いターゲティング、運営効率の改善、より低いコスト、リスクの低減を他の利点とともにもたらすために、活用されている。ビッグデータエコシステムの技術的進歩により、異なる組織間でのデータの交換および協調が、より頻繁になり、洗練され、複雑になっている。したがって、一部の組織は、セキュアデータ訓練モデルを構築して組織間でのデータ交換を促進するために、協調的なデータラボを設立している。データ協調プロセスの間に、機械学習モデルが、異なる参加する組織から得られるデータに基づいて構築される。組織は、自身のデータを集約して集約されたデータを1つの場所に物理的に置き、そして、成熟した機械学習ツールを使用して、集約されたデータに基づくモデルを構築することができる。集約されたデータは、参加する組織において、またはすべての参加者によって信頼される第三者において記憶され得る。
【００１４】
データプライバシーの保護を確実にするようにそのようなモデルを訓練するために、準同型暗号または差分プライバシーに基づく機械学習方式を実装することができる。たとえば、準同型暗号またはmicromorphic暗号に基づく機械学習方式は、両方の当事者からのデータが完全に準同型に暗号化されることを可能にし、そして、暗号文に基づいてモデル訓練を完了するために暗号化されたデータを一緒に集約する。暗号が準同型であるので、このモデル訓練は、復号されると、暗号化されていない訓練データを用いた訓練から得られるであろう訓練結果と一致する、暗号化された結果を生み出す。モデル訓練の出力結果は、参加者が最終的な結果を復号して取得できるように、参加者に返される。
【００１５】
現在のデータ協調技術には様々な問題がある。第1に、現在の手法では、各当事者が自身のデータを他の当事者にさらす必要があり、特に高度に敏感なデータについて、データプライバシー漏洩のリスクを生み出す。第2に、多くのデータラボが、データプライバシーを確保するために、クラウドコンピューティング、マルチテナント分離、データ脱感作、データ監査などの技法を実装しているが、それでも当事者はデータが自身の領域を出た後のセキュリティの保障について確信していない。したがって、データを集約して集約されたデータを処理するという参加者または中立な第三者の選択が、当事者間の信頼の欠如により難しいことがある。第3に、両方の当事者が互いに信頼し、サンプル出力に合意する場合でも、データ協調のための基準およびガイドラインが業界に欠けているので、各当事者により実装される技術のセキュリティのレベルが異なることがあり、サンプルデータ暗号化、データ脱感作、データ衝突、セキュリティ承認などのための、大量の時間および通信コストが生じる。第4に、準同型暗号または差分プライバシーに基づく機械学習方式は依然として、エンジニアリングの実装において非効率であり不正確な出力を生成する、集中型のモデリング法である。たとえば、準同型暗号に基づく機械学習方式の計算速度は遅い。現在の準同型技術は成熟しておらず、依然として、長い訓練時間、低い作業効率、複雑な暗号鍵の管理などの問題を抱える。同様に、差分プライバシーに基づく機械学習方式は、データ協調プロセスにおいて使用されるデータのプライバシー漏洩のリスクを低減し得るが、得られるモデルは、データの変換により正確度と精度の低下を被る。第5に、従来のモデリングツールおよびプロセスは、強力であるが、モデラに対して過酷であり、訓練モデルを構築するために大量の時間と労力を必要とする。
【００１６】
本開示の実装形態は、SSおよびイベントドリブンの対話型セキュアモデリング手順を使用することによって、SLRMを訓練する新しい手法を導入する。説明される実装形態は、ロジスティック回帰に基づくSLRMモデルを適用し、両方の当事者から受信される訓練データを供給することによって反復的に更新され得る。ロジスティック回帰は、一般化された線形回帰であり、1つのタイプの分類および予測アルゴリズムである。ロジスティック回帰アルゴリズムは、一連の既知の従属変数から離散値を推定し、データを論理関数へとフィッティングすることによってイベントの発生の確率を推定する。ロジスティック回帰は、スパム電子メールの分類、信用リスク予測の分類などの、分類のために主に使用される。
【００１７】
サンプル訓練データのソースは独立のセキュア計算ノード(SCN)であり、各SCNは秘密共有(SS)方式を使用して自身の訓練データを他のノードから秘密のままにする。前に説明されたように、訓練データは異なるSCNによって供給されるので、SCN間での共有のために訓練データをセキュアにすることが非常に重要である。具体的には、そのような協調を強固にするために、説明される技法は、各SCNが他のSCNから自身の秘密の訓練データを守ることを可能にするために、乱数を導入する。説明される技法は、データ協調プロセスにおける当事者間の相互の信頼の欠如などの問題に対処し、両方の当事者から受信される訓練データの漏洩を防ぎ、機械学習モデルを構築する際の当事者間の協調を効果的に促進することができる。
【００１８】
加えて、SCN間での訓練データの共有は、イベントドリブンの統合セキュアモデリング手順によって制御され得る。いくつかの実装形態では、イベントドリブンの対話型セキュアモデリング手順は、イベントドリブンモデル(またはいわゆる「発行-購読」モデル)に基づく。このモデルは、自身のタスクを完了するために互いに依存する、当事者を分離することができる。このモデルを使用することによって、両方の当事者が自身のサービスプロセスに集中することができる。一方の当事者(「発行者」)は、そのサービスプロセスが完了したときに通知を送信する。他方の当事者(「購読者」)はその通知を監視し、通知が受信されると、そのサービスプロセスがそれに従ってトリガされ得る。訓練プロセスの間、各SCNは、他の当事者からデータを受信するためのメッセージキューを維持し、それに応答して、対応するモデリングステップによるSLRMの継続をトリガする。
【００１９】
説明される技法は様々な適用例を有し得る。たとえば、技法は、複数の金融機関の間で、金融機関と政府機関の間で、または他の組織の間でのデータ協調に適用され得る。
【００２０】
いくつかの実装形態では、開示されるフレームワークは、セキュアロジスティック回帰モデル(SLRM)および秘密共有(SS)方式を使用する。SS方式は、マルチパーティ協調を伴うシナリオにおいて使用される暗号化のタイプである。あるSS方式では、秘密(たとえば、暗号鍵またはデータセット)が所定の方式でいくつかの異なる割当て分へと分割され、各割当て分が異なる参加者に提供される。秘密を単一の参加者によって回復または復元することはできず、このようにして、秘密の秘匿性およびセキュリティが確保される。本開示の目的では、SLRMによって使用される訓練を保護するために使用されるアルゴリズムはSSに限定されない。準同型暗号と比較すると、全体の計算効率は秘密共有を使用することによって大きく改善される。さらに、生の訓練データが変換されないので、訓練プロセスは生の訓練データに基づく正確な計算であり、訓練の出力モデル結果は、生の訓練データに基づく正確に訓練されたモデルである。
【００２１】
いくつかの実装形態では、分散型モデル訓練フレームワークが実装され、このフレームワークは独立の第三者の乱数サービスを導入する。これらの実装形態では、このフレームワークは、生のデータが訓練モデルに入力される前に、第三者の乱数サービスによって生成され分散される乱数と一緒に計算プロセスを経る。そのような実装形態では、分散型モデルの効率を高めるために、イベントドリブンの対話型セキュア手順がさらに採用される。このようにして、生のデータの情報漏洩を防ぐことができ、モデリング結果の完全性およびモデルの精度が確保される。
【００２２】
図1は、本明細書の実装形態による、秘密共有を使用するマルチパーティ機械学習セキュアロジスティック回帰モデル(SLRM)を訓練するための環境100の例を示す。データ協調サービスは、データ協調のためのプラットフォーム/環境を組織に提供する、1つまたは複数のサーバによって行われ得る。例示的な環境100は、ユーザ102、セキュリティ管理エージェント104、ノード管理エージェント106、乱数提供器108、ネットワーク110、および少なくとも2つのセキュア計算ノード(SCN)SCN A 112およびSCN B 114を含む。例示的な環境100は、追加のユーザ、セキュア計算ノードコンピュータ、ネットワーク、システム、または他の構成要素を含み得る。いくつかの実装形態では、環境100は別の方式で構成され得る。
【００２３】
いくつかの実装形態では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらもしくは他のネットワークの組合せを含む。ネットワーク110は、ワイヤレスネットワークまたは有線ネットワークのうちの1つまたは複数を含み得る。ネットワーク110は、コンピューティングデバイス(たとえば、サーバ104〜108)およびセキュア計算ノード(たとえば、SCN112、114)を接続する。いくつかの実装形態では、ネットワーク110は、有線通信リンクおよび/またはワイヤレス通信リンクを介してアクセスされ得る。
【００２４】
いくつかの場合、訓練プロセスの開始の前に、ユーザ102は、SLRMと関連付けられる様々なパラメータおよび設定を事前に決定することができる。これらのパラメータは、たとえば、訓練データのサイズ、訓練データおよび対応するデータ処理設定の特徴、またはモデルのハイパーパラメータ(すなわち、以前の分散のパラメータ)を含み得る。モデル設定を初期化した後で、モデルと関連付けられる情報がセキュリティ管理エージェント104に送信され、セキュリティ管理エージェント104は続いて、特定のモデリング論理を完了するためにSCNと協調することができる。
【００２５】
いくつかの実装形態では、セキュリティ管理エージェント104およびノード管理エージェント106は、モデリングプロセス、ならびにプロセスに参加するSCN(たとえば、112、114)を管理して制御するための、単一の構成要素として統合され得る。セキュリティ管理エージェント104およびノード管理エージェント106はまた、図1に示されるような別個の構成要素であり得る。
【００２６】
いくつかの実装形態では、セキュリティ管理エージェント104は、構成、モデリング、反復的計算を含むSLRMの訓練を管理し、訓練モデルの管理を処理するように構成され得る。具体的には、セキュリティ管理エージェント104は、たとえば、各反復サイクルを初期化すること、およびある数の反復サイクルの後で訓練モデルが収束するかどうかを決定することを含む、SCN112、114によって一緒に行われるモデリングプロセスを促進することができる。加えて、セキュリティ管理エージェント104はまた、各SCNから特定のデータ構造および訓練データと関連付けられる他の情報を取得することができる。たとえば、訓練データのソース、訓練データの特徴(たとえば、各訓練データセットの行および列の数)などの情報を取得する。
【００２７】
いくつかの実装形態では、ノード管理エージェント106は、ノード選択、ノード管理、プロジェクトデータ管理などを実行するように構成され得る。たとえば、セキュリティ管理エージェント104が、SCN A 112およびSCN B 114からモデリング要求を受信し、SCN AおよびBの対応するデータ情報を収集すると、ノード管理エージェント106は、セキュリティ管理エージェント104を通じて、各SCNが協働する必要のある他のSCNの識別情報、追加の訓練データを取得するための位置を各SCNに知らせ、訓練プロセスに参加する各SCNに対応するパラメータを分散することができる。加えて、ノード管理エージェント106はまた、SCN AおよびBに乱数提供器108の位置を通知する。
【００２８】
図示される例では、SCN A 112およびSCN B 114は、互いとのデータ交換またはデータ協調を促進することを求める別々のユーザについてのデータセットを保持する、別々の組織によって運営され得る。たとえば、SCN A 112およびSCN B 114を運営する組織は、それぞれ訓練データセットP0およびP1を保持することができ、P0とP1の両方が機械学習モデルに入力される。訓練モデルの出力結果は、たとえば、SCN A 112またはSCN B 114の顧客に融資を行うことのリスクの予測などの、あるサービスを行うためにSCN A 112とSCN B 114の両方によって使用され得る予測結果であり得る。SCN A 112およびB 114がセキュリティ管理エージェント104からモデルパラメータおよび設定を受信した後で、それらは、互いとのネットワーク通信を通じてモデリングタスクを完了する必要がある。セキュリティの目的で、特に各SCNによって所有される訓練データが高度に敏感なプライバシーデータである場合、SCN A 112およびB 114は、互いから訓練データの部分を隠し、または難読化することができる。訓練データを難読化するために、SCN A 112およびB 114は、乱数提供器108からの乱数を要求し、自身の訓練データおよび受信された乱数を使用した計算(たとえば、乱数とデータの部分の加算または乗算)を実行することができる。乱数は、訓練データの難読化または暗号化を行うために使用され得る。いくつかの場合、高度に敏感なプライバシーデータ(たとえば、ユーザの個人情報)を含む訓練データの一部のみを、難読化または暗号化することができるので、訓練のためにデータの敏感ではない部分を他の当事者が使用することを可能にしながら、高度に敏感なプライバシーデータに他の当事者がアクセスすることを可能にしない。RSA、DES/TripleDES、他のよく知られている暗号化方式などの、任意の適切な暗号化方式が使用され得る。いくつかの実装形態では、乱数は、数、ベクトル、または行列などであり得る。いくつかの実装形態では、乱数はSCN112、114のいずれかによって生成され得る。いくつかの実装形態では、共有および訓練の間に他のSCNが秘密のデータを明らかにできないことを確実にするために、独立の第三者によって乱数が提供され得る。いくつかの実装形態では、乱数提供器108に関するサービス、セキュリティ管理エージェント104、およびノード管理エージェント106は、相互に選択され信頼される第三者のエージェントによって提供され実行され得る。
【００２９】
各SCNに対して、データが乱数を使用することによって暗号化された後で、暗号化されたデータは他のSCNに送信され得る。SCN112、114間で送信されるデータは暗号化されるので、データの敏感な情報は曝露されない。いくつかの実装形態では、SCN A 112およびB 114からの計算結果が、機械学習モデルの訓練に使用される。具体的には、各SCNは、SLRMが基礎とするロジスティック回帰関数のパラメータを反復的に更新するために、受信された暗号化されたデータをSLRMへの入力として使用する。ある回数の反復の後で、この訓練は所定の条件に基づいて終了し得る。いくつかの実装形態では、ローカルのデータ管理は、各SCN112、114によって実行され、データベースの中のデータのストレージ、オブジェクトストア、インメモリデータストア(たとえば、Redis)、または他のタイプのストレージを含み得る。
【００３０】
図2Aは、本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセス200aの例を示す。
【００３１】
図示される例では、SLRMの目的関数を最適化するために、ミニバッチ確率的勾配降下(SGD)法が使用される。SGDは、勾配降下最適化の確率的近似に基づいて微分可能な目的関数を最適化するための反復的な方法である。本開示では、目的関数を最適化するために、SGD法は以下の反復を実行する。
【００３２】
【数１】
0006825138.tif 000002
【００３３】
ここで、mはミニバッチSGDのサンプルサイズを表す。この例では、Xはm*kのサンプル行列である。行列Xの各行はサンプルを表し、Xiは行列Xのi番目の行を表し、[j]はベクトルXiのj番目の要素を表し、θはパラメータ列ベクトルを表す。Yiはミニバッチサンプルのi番目のサンプルのラベルを表し、ここでYiは0または1であり得る。αおよびλは、機械学習ネットワーク構造を決定しそのネットワークがどのように訓練されるかを決定する、ハイパーパラメータである。それらは訓練の前にユーザによって設定され得る。
【００３４】
この図示される例では、SSを使用することによって、式(1)において使用されるすべてのサンプルの訓練データセットが2つの割当て分に分割される。すなわち、SLRMのためのサンプル訓練データは、SCN P0およびSCN P1という2つのソースから来る。具体的には、サンプルデータ行列XはXLおよびXRに分割されるので、サンプルデータXLはSCN P0に属し、一方でXRはSCN P1に属す。SCN P0およびSCN P1の中のサンプルデータは、それぞれ特徴k0およびk1を有し、k=k0+k1であると仮定する。サンプルデータセットXiに対して、SCN P0は、Xi,[1]、Xi,[2]、... Xi,[k0]と表現されるXiの要素を含み、一方でSCN P1は、Xi,[k0+1]、Xi,[k0+2]、... Xi,[k]と表現されるXiの要素を含む。同様に、パラメータ列ベクトルθはまた、θLおよびθRへと分割され得る。したがって、これらの再定義されたパラメータを使用して、垂直方向のデータ分割のもとで、式(1)を次のように表現することができる。
【００３５】
【数２】
0006825138.tif 000003
【００３６】
ここで、XおよびYは保護されるべき入力データである。Xは特徴データを表し、Yは特徴データに基づいて行われる予測を表す。たとえば、ローンを借りるシナリオでは、Xは収入、学歴、クレジットヒストリーなどであり得る。この情報に基づいて、銀行は予測Yを行うことができ、これは、ローンの借り手のリスクが、融資を行うのに十分低いかどうかである。θは保護される必要のある暫定の結果であり、訓練プロセスが終了した後では、θは訓練結果の最終出力でもある。式(2)に列挙される他のパラメータは、決まって使用されるよく知られているパラメータである。
【００３７】
SLRMにおいて使用されるセキュアロジスティック回帰訓練アルゴリズムは、2次の正則化を有するミニバッチSGDに基づき、2者のABYセキュアード計算フレームワークの数学的回路(A)およびGarbled Circuit (Yao)を適用する。数学的回路(A)は、multiplication tripleおよびSSに基づき、加算、減算、および乗算を計算するために使用できるので、アルゴリズムにおいて使用される多項式、ドット積、および行列乗算を計算することができる。一方、Garbled Circuit (Yao)は、他のタイプの計算を実行するために使用され得る。この計算フレームワークでは、各SCNはセキュアな計算のためにSSを使用する。各計算ステップの後で、暫定の計算結果が生成され、複数の割当て分(等しいことも等しくないこともある)に分割され、一方で各SCNは暫定の計算結果の1つの割当て分を得る。各ステップの後で、両方のSCNが得られた割当て分を使用して次のステップに入り、最終的には、反復が終了するときに最後の生成された割当て分を組み合わせる。
【００３８】
反復ループが開始する前に、モデルを更新するために使用されるすべてのパラメータが、まず初期化される。初期化プロセスの間に、両方のSCNが、初期化されたパラメータ列ベクトルθの割当て分としてランダム列ベクトルを生成し、ここでdim(θ)=(k0+k1+1,1)、dim(θL)=(k0+1,1)、dim(θR)=(k1,1)である。初期化されたパラメータ列ベクトルθは、その割当て分によって次のように表され得る。
θL=<θL>0+<θL>1
eq.3
θR=<θR>0+<θR>1
eq.4
ここで<>は割当て分を表し、[i]はベクトルのi番目の要素を表す(すなわち、θ[i]=<θ[i]>0+<θ[i]>1)。したがって、SCN P0における生成されたランダム列ベクトルは、以下の式として表され得る。
<θ>0=(<θ[1]>0,<θ[2]>0,<θ[3]>0...<θ[k]>0)                      eq.5
【００３９】
各サンプルデータセットは垂直方向に分割されるので、<θ>0はさらに以下の2つの列ベクトルによって分割され得る。
<θL>0=(<θL[1]>0,<θL[2]>0,<θL[3]>0...<θL[k0]>0)                eq.6
<θR>0=(<θR[1]>0,<θR[2]>0,<θR[3]>0...<θR[k1]>0)                eq.7
ここで<θ>0=<θL>0||<θR>0であり、||は連結関係を表す。
【００４０】
同様に、SCN P1における生成されたランダム列ベクトルは、以下の式として表され得る。
<θ>1=(<θ[1]>1,<θ[2]>1,<θ[3]>1...<θ[k]>1)
eq.8
【００４１】
各サンプルデータセットは垂直方向に分割されるので、<θ>1はさらに以下の2つの列ベクトルによって分割され得る。
<θL>1=(<θL[1]>1,<θL[2]>1,<θL[3]>1...<θL[k0]>1)
eq.9
<θR>1=(<θR[1]>1,<θR[2]>1,<θR[3]>1...<θR[k1]>1)
eq.10
ここで<θ>1=<θL>1||<θR>1であり、||は連結関係を表す。
【００４２】
反復のプロセスは図2〜図6による例示である。前に説明されたように、反復の目的は式(2)に示されるパラメータθを更新することである。
【００４３】
図2Aは、1回の反復の間の反復サイクルの第1のステップ(本明細書では「ステップ1」)の第1のサブステップ(本明細書では「ステップ1.1」)を示す。ステップ1において、各SCNはまず、以下の式に基づいてAの割当て分を計算する。
A=Xθ=XLθL+XRθR
eq.11
ここでAはパラメータθの列ベクトルと乗算されたミニバッチサンプルベクトルXを使用して計算される。
【００４４】
いくつかの実装形態では、XLおよびXRは、反復サイクルのステップ3においてパラメータを更新するためにも使用される。いくつかの実装形態では、同じミニバッチサンプルデータが、より後の反復における計算のために使用され得る。
【００４５】
図2A(ステップ1.1)は、multiplication tripleおよびSSを使用した、XLθLの値の計算を示す。図2Aに示されるように、SCN P0は元のデータを提供する当事者である。元のデータを隠すために、SCN P0およびSCN P1はまず乱数を取得する。いくつかの実装形態では、乱数は、数、ベクトル、または行列であり得る。いくつかの実装形態では、乱数はSCNによって生成され得る。いくつかの実装形態では、第三者のエージェンシ、たとえば図1に示される乱数提供器108から、乱数が要求および受信され得る。
【００４６】
図2Aに示されるように、得られた乱数は、ランダム行列u、ランダムベクトルv、および乱数zを含む。得られた乱数は、SCN P0とSCN P1との間で分散される。いくつかの実装形態では、SCN P0は、ランダム行列u、v0として表されるvの割当て分、z0として表されるzの割当て分を取得する。SCN P1は、v1として表されるvの割当て分、およびz1として表されるzの割当て分を取得する。いくつかの実装形態では、zの割当て分は準同型計算によって生成され得る。いくつかの実装形態では、ランダムベクトルuはSCN P0によって生成されるが、ランダムベクトルvの割当て分v0およびv1はそれぞれSCN P0およびSCN P1によって生成される。いくつかの実装形態では、u、v、およびzとそれらの対応する割当て分はすべて、信頼される第三者のコモディティサーバによって生成される。乱数の各々、および対応する乱数の割当て分が相関しており、それらの間の関係は次のように表され得る。
z0+z1=u*v=u*(v0+v1)
eq.12
【００４７】
a=XL、およびb0=<θL>0と仮定する。SCN P0のデータを隠すために、uを使用することによって、たとえばaとuの加算、減算、または乗算を実行することによって、aを暗号化する。いくつかの実装形態では、ランダム行列uは、より後の反復において同じXLを隠すときに同じであり得る。同様に、<θL>0は、ランダムベクトルv0を使用することによって暗号化される。図2Aに示されるように、SCN P0は暗号化されたXL(e=a-uと表される)および暗号化された<θL>0((b0-v0)として表される)をSCN P1に送信する。いくつかの実装形態では、同じランダム行列uがより後の反復において同じXLを隠すために使用される場合、暗号化されたXL(e=a-u)は再送信される必要がない。SCN P1の側において、b1=<θL>1と仮定する。この場合、ランダムベクトルの割当て分v1が<θL>1の値を隠すために使用され、(b1-v1)がSCN P1からSCN P0に送信される。
【００４８】
SCN P0とSCN P1との間のデータ交換の後で、SCN P0におけるステップ1.1のデータキューは次のように更新される。
c0=u*f+e*b0+z0                               eq.13
ここでf=b-v
【００４９】
そしてSCN P1におけるステップ1.1のデータキューは次のように更新される。
c1=e*b1+z1                                     eq.14
ここでc0とc1の各々はXLθLの割当て分である。
【００５０】
上の式に基づいて、XLθLは次のように計算され得る。
XLθL=c0+c1                                    eq.15
c0+c1=u*f+e*b+u*v                              eq.16
c0+c1=u*b-u*v+a*b-u*b+u*v                     eq.17
【００５１】
図2Bは、本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセス200bの例を示す。
【００５２】
具体的には、図2Bは、反復サイクルのステップ1の第2のサブステップ(本明細書ではステップ1.2)を示す。ステップ1.2において、XRθRの値はmultiplication tripleおよびSSを使用して計算される。図2Bに示されるように、SCN P1は元のデータを提供する当事者である。元のデータを隠すために、SCN P1およびSCN P0はまず乱数を取得する。
【００５３】
図2Bに示されるように、得られた乱数は、ランダム行列u、ランダムベクトルv、および乱数zを含む。得られた乱数は、SCN P1とSCN P0との間で分散される。SCN P1は、ランダム行列u、v0として表されるvの割当て分、z0として表されるzの割当て分を取得する。SCN P0は、v1として表されるvの割当て分、およびz1として表されるzの割当て分を取得する。いくつかの実装形態では、zの割当て分は準同型計算によって生成され得る。いくつかの実装形態では、ランダムベクトルuはSCN P1によって生成されるが、ランダムベクトルvの割当て分v0およびv1はそれぞれSCN P1およびSCN P0によって生成される。いくつかの実装形態では、u、v、およびzとそれらの割当て分はすべて、信頼される第三者のコモディティサーバによって生成される。乱数の各々、および対応する乱数の割当て分が相関しており、式(12)に示されるような関係を満たす。
【００５４】
a=XR、およびb0=<θR>0と仮定し、aのデータ情報を隠すために、SCN P1はまず、uによってaを暗号化し、たとえば、aとuとの加算、減算、または乗算を実行する。いくつかの実装形態では、ランダム行列uは、より後の反復において同じXRを隠すときに同じであり得る。同様に、<θR>0はまず、ランダムベクトルv0を使用することによって暗号化される。図2Bに示されるように、SCN P1は暗号化されたXR(e=a-uと表される)および暗号化された<θR>0((b0-v0)として表される)をSCN P0に送信する。いくつかの実装形態では、同じランダム行列uがより後の反復において同じXLを隠すために使用される場合、暗号化されたXL(e=a-u)は再送信される必要がない。SCN P0の側において、b1=<θR>1と仮定する。この場合、ランダムベクトルの割当て分v1が<θR>1の値を隠すために使用され、(b1-v1)がSCN P0からSCN P1に送信される。
【００５５】
SCN P1とSCN P0との間のデータ交換の後で、SCN P1におけるステップ1.2のデータキューは式(13)によって更新され、SCN P0におけるステップ1.2のデータキューは式(14)によって更新される。上の式に基づいて、XLθLは、式(16)および式(17)、ならびに
XRθR=c0+c1                                    eq.18
によって計算され得る。
【００５６】
したがって、1つの反復サイクルのステップ1が完了し、式(15)と式(18)の結果を組み合わせることによって式(11)が計算され得る。
【００５７】
図3は、本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセス300の例を示す。具体的には、図3は反復サイクルにおける第2のステップ(本明細書では「ステップ2」と呼ばれる)を示す。
【００５８】
ステップ2において、予測誤差の列ベクトルが、式
E=g(A)-Yi
eq.19
を使用することによって計算される。
ここで、Aはステップ1において説明された式(11)と同じ値である。gはシグモイド関数のフィッティング関数であり、これは多項式関数のフィッティングであり得る。すなわち、g()は多項式関数であってよく、その最高の次数はdである。本開示の図示される例では、d=7に設定し、g(x)は以下の式によって表され得る。
g(x)=0.5+1.73496*(x/8)-4.19407*(x/8)3+5.43402*(x/8)5-2.50739*(x/8)7     eq.20
ここで、g(A)はg(A[1])、g(A[2])、...g(A[m])によって構成される列ベクトルを表す。
【００５９】
multiplication tripleおよびSSを使用して、SCN P0およびSCN P1の各々はg(<A[i]0>+<A[i]1>)を計算する必要がある。p=<A[i]0>、およびq=<A[i]1>と仮定する。多項式関数g(p+q)は次の関数として拡張され得る。
g(p+q)=h0(q)+h1(q)p+h2(q)p2+...+hd(q)pd
eq.21
ここで、h0、h1、...hdの各々がqの多項式関数であり、SCN P1によって計算されることが可能であり、一方でp、p2、p3...pdは、SCN P0によって計算されることが可能である。
【００６０】
ベクトルa=(p,p2,p3...pd)およびベクトルb=(h1(q),h2(q),...hd(q))であるので、g(p+q)=a・b+h0(q)であると仮定し、ここでドット積(a・b)は図3に示されるプロセスによって計算することができ、これは最適化されたmultiplication tripleおよびSSを含む。Eの最終的な結果は、SSに基づいて加算を実行することによって計算することができる。
【００６１】
図3に示されるように、得られた乱数は、ランダム行列u、ランダムベクトルv、および乱数zを含む。得られた乱数は、SCN P0とSCN P1との間で分散される。SCN P0は、ランダム行列u、z0として表されるzの割当て分を取得する。SCN P1は、ランダムベクトルv、z1として表されるzの割当て分を取得する。乱数の各々および対応する乱数の割当て分は相関しており、それらの間の関係は次のように表され得る。
z0+z1=u*v                                      eq.22
【００６２】
次いで、図3に示されるように、SCN P0はまず暗号化されたデータe=a-uをSCN P1に送信し、SCN P1は暗号化されたデータf=b-vをSCN P0に送信する。ステップおよび計算はステップ1のものと同様であり、詳細については図2Aおよび図2Bの以前の説明を参照されたい。
【００６３】
SCN P0とSCN P1との間のデータ交換の後で、SCN P0におけるステップ2のデータキューは次のように更新される。
c0=u*f+z0                                      eq.23
【００６４】
そしてSCN P1におけるステップ2のデータキューは次のように更新される。
c1=e*b+z1                                      eq.24
【００６５】
上の式に基づいて、(a・b)は次のように計算され得る。
(a・b)=c0+c1                                    eq.25
c0+c1=u*f+e*b+u*v                              eq.26
c0+c1=u*b-u*v+a*b-u*b+u*v                     eq.27
【００６６】
図4Aは、本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセス400aの例を示す。図4Bは、本明細書の実装形態による、SLRMのパラメータを反復的に更新するためのサブプロセス400bの例を示す。具体的には、図4Aおよび図4Bは、1つの反復サイクルの第3のステップ(本明細書では「ステップ3」)を実行するためのプロセスを示す。
【００６７】
ステップ3において、列ベクトルθ、およびSCN P0およびSCN P1の各々は、更新されたθの割当て分を取得することができる。このステップにおいて、更新されたθは次のように表され得る。
【００６８】
【数３】
0006825138.tif 000004
【００６９】
ここでEはステップ2の式(19)と同じEであり、
XTE=(XL)TE||(XR)TE                            eq.29
である。
【００７０】
(XL)TEを計算するための方法はXLθLを計算する方法と同じであるが、(XR)TEを計算するための方法はXRθRを計算する方法と同じであり、ここでは繰り返されない。式(29)において、Xは複数のサンプルの特徴データを含む行列を表し、Eは誤差ベクトルを表す。
【００７１】
ステップ3の後で、1つの反復サイクルが完了し、訓練プロセスは、以下でさらに詳細に説明されるように、次の反復サイクルに入ってステップ1〜3を繰り返すか、条件が満たされる場合に終了するかのいずれかである。
【００７２】
図5は、本明細書の実装形態による、SLRMのパラメータを更新することの反復を終了するかどうかを決定するためのプロセス500の例を示す。
【００７３】
いくつかの実装形態では、完了した反復サイクルの数が所定の数に達するとき、反復は終了し得る。いくつかの実装形態では、閾値があらかじめ決められており、2つの連続的な反復結果の間の差がその閾値未満であるとき、反復は終了する。
【００７４】
具体的には、たとえば、ある反復サイクルの前と後のパラメータがθおよびθ'であると仮定し、SSを使用して差D=(θ'-θ)を計算する。a0=<DT>0、a1=<DT>1、b0=<D>0、b1=<D>1と仮定する。SCN P0およびSCN P1の各々は、multiplication tripleおよびSSを使用してDTDの割当て分を計算し、各結果を組み合わせてDを得る。
【００７５】
図5に示されるように、いくつかの実装形態では、SCN P0はランダム行列u0およびv0を生成し、SCN P1はランダム行列u1およびv1を生成する。後続の計算の方法は、図2および図4において前に説明された方法と同様であり、ここでは繰り返されない。SCN P0とSCN P1との間でデータが交換された後で、SCN P0における計算結果は
c0=-e*f+a0*f+eb0+z0                             eq.30
であり、ここでf=b-vである。
【００７６】
SCN P1における計算結果は
c1=a1*f+eb1+z1                                 eq.31
であり、ここでc0とc1の各々がDTDの割当て分である。
【００７７】
上の式に基づいて、DTDは次のように計算され得る。
DTD=c0+c1                                     eq.32
c0+c1=e*f+a*f+e*b+u*v                          eq.33
c0+c1=u*f+a*b-u*b+u*v                         eq.34
c0+c1=u*b-u*v+a*b-u*b+u*v                     eq.35
【００７８】
図6は、本明細書の実装形態による、イベントドリブンの対話型セキュアモデリング手順を使用してマルチパーティSLRMを訓練するためのプロセス600の例を示す。
【００７９】
いくつかの実装形態では、方法600の様々なステップは、並列に、組合せで、ループで、または任意の順序で実行され得る。提示をわかりやすくするために、以下の説明は全般に、本説明中の他の図の文脈で方法600を説明する。しかしながら、方法600は、たとえば、任意の適切なシステム、環境、ソフトウェア、およびハードウェア、または、システム、環境、ソフトウェア、およびハードウェアの組合せによって、適宜実行され得ることが理解されるであろう。たとえば、方法600は、SSを使用して機械学習アルゴリズムを実行するように構成される1つまたは複数のデータ処理装置によって実行され得る。データ処理装置は、たとえば、GPU、FPGA、およびさらにはカスタムASICプロセッサなどの、汎用CPUもしくはハードウェアアクセラレータのうちの1つまたは複数を含んでよく、またはそれらによって実装されてもよい。
【００８０】
いくつかの実装形態では、図6に示されるように、プロセス600a(ステップ602a〜622aを含む)はデータベースと連携してノードAによって実行されるが、プロセス600b(ステップ602b〜624bを含む)はデータベースと連携してノードBによって実行される。データベースは、Remote Dictionary Server (Redis)であってよく、ノードAおよびBのためのデータの送信と一次記憶をサポートする。いくつかの実装形態では、データは、データベースを経ることなくSCN A 112とB 114との間で送信されることが可能であり、購読キューがノードAとノードBの各々においてローカルに記憶され更新され得る。反復プロセスが開始する前に、ノードAとノードBの各々は、独立のモデリングプロセスに入り、1つのバッチ反復を開始する。ノードAとノードBの各々がデータを発行および購読することができるので、ノードAとノードBの各々が発行者(または「作成者」)であり購読者(または「消費者」)でもある。この例のイベントドリブンモデルのもとでは、ノードAとノードBが互いに返答しても、それらのモデリングプロセス600aおよび600bは独立であり、別々に処理される。
【００８１】
602aおよび602bにおいて、ノードAおよびノードBは各々、1つの独立のバッチ反復に入る。602aおよび602bは同時にまたは連続的に発生し得る。602aの後で、プロセス600aは604aに進む。602bの後で、プロセス600bは604bに進む。
【００８２】
604aにおいて、ノードAはステップ1のデータをノードBに発行する。いくつかの実装形態では、ステップ1のデータは暗号化されたサンプルデータをデータベースに送信することによって発行されるので、データベースは購読者キューを記憶して更新することができる。ノードAがこのステップを完了すると、ノードAからのステップ1のデータの発行が完了したことをノードBに知らせるために、通知がノードBに送信され得る。604aの後で、プロセス600aは606aに進む。
【００８３】
606aにおいて、ノードAはノードBからのステップ1のデータを購読する。いくつかの場合、SLRMはSSに基づいて訓練されるので、ノードAは訓練を単独で完了することはできず、ノードAとノードBからの両方のデータがモデルへの入力として使用される。いくつかの実装形態では、ノードAは、ノードBからのステップ1のデータを要求することによってそのような購読を行う。データベースの中のデータキューがノードBからのステップ1のデータによって更新される場合、ノードAは通知を受信しない。この時点ではノードAはノードBから通知を受信していないので、600aの次のステップをトリガすることはできず、プロセス600aは一時的に中断する。
【００８４】
一方、604bにおいて、ノードBがステップ1のデータをノードAに発行する。いくつかの実装形態では、ステップ1のデータは暗号化されたサンプルデータをデータベースに送信することによって発行されるので、データベースは購読者キューを記憶して更新することができる。ノードBがこのステップを完了すると、ノードBからのステップ1のデータの発行が完了したことをノードAに知らせるために、通知がノードAに送信され得る。604bの後で、プロセス600bは606bに進む。
【００８５】
606bにおいて、ノードBはノードAからのステップ1のデータを購読する。この時点でノードAはすでにステップ1のデータを発行しており、ノードBはすでにノードAからの通知を受信しているので、次のステップがトリガされ、606bの後で、プロセス600bは608bに進む。
【００８６】
608bにおいて、ノードBは、自身のデータおよびノードAから受信されたステップ1のデータを使用することによって、ステップ1の結果をローカルに計算する。このステップの式および詳細なステップについては、前に説明された図2Bを参照することができる。608bの後で、プロセス600bは610bに進む。
【００８７】
両方のステップ610bと612bがノードBによって独立に実行され得るので、ノードBは、ノードAの活動に依存することなく、これらの2つのステップを一緒にまたは連続的に実行することができる。ステップ610bおよび612bの後で、データベースの中の購読者キューは、ノードBによって発行されるステップ2のデータを使用して更新され、発行の通知がノードAに送信される。ステップ612bの後で、ノードBはノードAからの通知を受信していないので、次のステップをトリガすることはできず、プロセス600bは一時的に中断する。
【００８８】
プロセス600aのステップ606aに戻る。ノードBがステップ604bをすでに実行しており、ノードAがすでにノードBから通知を受信している場合、プロセス600aの次のステップがトリガされ、606aの後で、プロセス600aは608aに進む。
【００８９】
ステップ608a〜612aはノードBからのデータなしでノードAによって独立に実行され得るので、ノードAはこれらのステップを連続的に実行することができる。ステップ610aの後で、データベースの中の購読者キューは、ノードAによって発行されるステップ2のデータを使用することによって更新され、発行の通知がノードBに送信される。ステップ612aの後で、ノードBがすでにステップ610bを実行しておりノードAが対応する通知を受信している場合、600aの次のステップがトリガされ、プロセス600aは614aに進む。それ以外の場合、プロセス600aはステップ610bが実行されるまで一時的に中断する。
【００９０】
ステップ614a〜618aはノードAによって独立に実行され得るので、ノードAはこれらのステップを連続的に実行することができる。ステップ614aおよび616aの後で、データベースの中の購読者キューは、ノードAによって発行されるステップ3のデータを使用することによって更新され、発行の通知がノードBに送信される。ステップ618aの後で、ノードAはノードBから通知を受信していないので、プロセス600aはノードBからの通知が受信されるまで一時的に中断し得る。
【００９１】
プロセス600bに戻る。ノードAがステップ2のデータを発行し、対応する通知を送信したステップ610aの後で、プロセス600bの次のステップがトリガされ、プロセス600bは614bに進むことができる。614bにおいて、ノードBは、自身のデータおよびノードAから受信されたステップ2のデータを使用することによって、ステップ2の結果をローカルに計算する。計算ステップの式および詳細なステップについては、前に説明された図3を参照することができる。614bの後で、プロセス600bは616bに進む。
【００９２】
616b〜620bの各ステップはノードBによって独立に実行され得るので、ノードBはこれらの3つのステップを連続的に実行することができる。616bにおいて、シグモイド(wx)-yの値が式(20)を使用することによって計算される。ステップ618bおよび620bの後で、データベースの中の購読者キューは、ノードBによって発行されるステップ3のデータを使用することによって更新され、発行の通知がノードAに送信される。ステップ620bの後で、ノードAが616aをすでに実行しており、ノードBがノードAから通知を受信している場合、600bの次のステップがトリガされ、プロセス600bは622bに進む。
【００９３】
622bにおいて、ノードBは、自身のデータおよびノードAから受信されたステップ3のデータを使用してステップ3の結果をローカルに計算する。計算の式および詳細なステップは、前に説明された図4Bにおいて詳述される。622bの後で、次の反復に入るかどうかがノードAおよびノードBによって共同で決定されるので、および622bの後で、ノードBがノードBからの通知を受信していないので、プロセス600bは一時的に中断する。
【００９４】
プロセス600aに戻ると、ノードBがステップ3のデータを発行して対応する通知を送信したステップ618bの後で、プロセス600aの次のステップがトリガされ、プロセス600aは620aに進むことができる。620aにおいて、ノードAは、自身のデータおよびノードAから受信されたステップ3のデータを使用することによって、ステップ3の結果をローカルに計算する。計算ステップの式および詳細なステップについては、前に説明された図3を参照することができる。620aの後で、ノードAとノードBの両方が反復サイクルを完了している。
【００９５】
図4において前に説明されたように、反復サイクルを終了するかどうかは、所定の条件が満たされるかどうかに依存する。満たされる場合、プロセス600aと600bの両方が622aと624aに進み、602a〜620aおよび602b〜622bからのステップを再び繰り返す。満たされない場合、反復は終了し、プロセス600aと600bの両方がそれぞれ618aと622bにおいて停止する。
【００９６】
図7は、本明細書の実装形態に従って実行され得るプロセス700の例を示す。いくつかの実装形態では、方法700の様々なステップは、並列に、組合せで、ループで、または任意の順序で実行され得る。提示をわかりやすくするために、以下の説明は全般に、本説明中の他の図面の文脈で方法700を説明する。しかしながら、方法700は、たとえば、任意の適切なシステム、環境、ソフトウェア、およびハードウェア、または、システム、環境、ソフトウェア、およびハードウェアの組合せによって、適宜実行され得ることが理解されるであろう。たとえば、方法700は、SSを使用して機械学習アルゴリズムを実行するように構成される1つまたは複数のデータ処理装置によって実行され得る。データ処理装置は、たとえば、GPU、FPGA、およびさらにはカスタムASICプロセッサなどの、汎用CPUもしくはハードウェアアクセラレータのうちの1つまたは複数を含んでよく、またはそれらによって実装されてもよい。
【００９７】
702において、SLRMのためのサンプル訓練データはSSを使用して2つの割当て分に分割され、各割当て分はSCNに分散される。いくつかの実装形態では、サンプルデータ行列XはXLおよびXRへと分割され、サンプルデータ行列XLはSCN1に属し、サンプルデータ行列XRはSCN2に属す。702の後で、プロセス700は704に進む。
【００９８】
704において、SLRMのパラメータは、サンプル訓練データの各割当て分を使用して反復的に更新される。いくつかの実装形態では、SLRMの目的関数は、ミニバッチ確率的勾配降下(SGD)法を使用することによって最適化される。
【００９９】
いくつかの実装形態では、SLRMは、次のように表され得るロジスティック回帰関数に基づく。
【０１００】
【数４】
0006825138.tif 000005
【０１０１】
ここで、mはミニバッチSGDのサンプルサイズを表す。Xはm*kのサンプル行列を表す。行列Xの各行はサンプルを表し、Xiは行列Xのi番目の行を表し、[j]はベクトルXiのj番目の要素を表す。サンプルデータ行列XはXLおよびXRに分割され、サンプルデータXLはSCN P0に属し、一方でXRはSCN P1に属す。θはパラメータ列ベクトルを表し、列ベクトルθはθLおよびθRへと垂直方向に分割され得る。
【０１０２】
いくつかの実装形態では、SLRMを訓練することはイベントドリブンモデルを使用することを含む。704の後で、プロセス700は706に進む。
【０１０３】
706において、各SCNに対して、Aの割当て分が以下に基づいて計算される。
【０１０４】
A=Xθ=XLθL+XRθR
【０１０５】
いくつかの実装形態では、XLθLとXRθRを計算することは、乱数を使用することによって各SCNから提供される元のデータを隠すことと、SCN間で隠されたデータを交換することとを含む。いくつかの実装形態では、元のデータを隠す前に、乱数は各SCNによって得られる。いくつかの実装形態では、乱数は、数、ベクトル、または行列であり得る。いくつかの実装形態では、乱数はSCNによって生成され得る。いくつかの実装形態では、乱数は第三者のエージェンシから要求され受信され得る。706の後で、プロセス700は708に進む。
【０１０６】
708において、予測誤差の列ベクトルは
E=g(A)-Yi
に基づいて計算され、ここでgはシグモイド関数のフィッティング関数であり、これは多項式関数のフィッティングであり得る。いくつかの実装形態では、g(x)の次数が7である場合、g(x)を式
g(x)=0.5+1.73496*(x/8)-4.19407*(x/8)3+5.43402*(x/8)5-2.50739*(x/8)7
によって表すことができ、ここでg(A)はg(A[1])、g(A[2])、...g(A[m])によって構成される列ベクトルを表す。708の後で、プロセス700は710に進む。
【０１０７】
710において、更新された列ベクトルθを次のように表され得る。
【０１０８】
【数５】
0006825138.tif 000006
【０１０９】
ここでXTE=(XL)TE||(XR)TEである。710の後で、プロセス700は712に進む。
【０１１０】
712において、所定の条件が満たされる場合、反復は終了する。いくつかの実装形態では、完了した反復サイクルの数が所定の数に達すると、反復は終了することができる。
【０１１１】
いくつかの実装形態では、閾値はあらかじめ決められており、2つの連続的な反復結果の間の差がその閾値未満であるとき、反復は終了する。712の後で、プロセス700は停止することができる。
【０１１２】
図8は、本明細書の実装形態に従って実行され得るプロセス800の例を示す。いくつかの実装形態では、方法800の様々なステップは、並列に、組合せで、ループで、または任意の順序で実行され得る。提示をわかりやすくするために、以下の説明は全般に、本説明中の他の図面の文脈で方法800を説明する。しかしながら、方法800は、たとえば、任意の適切なシステム、環境、ソフトウェア、およびハードウェア、または、システム、環境、ソフトウェア、およびハードウェアの組合せによって、適宜実行され得ることが理解されるであろう。たとえば、方法800は、SSを使用して機械学習アルゴリズムを実行するように構成される1つまたは複数のデータ処理装置によって実行され得る。データ処理装置は、たとえば、GPU、FPGA、およびさらにはカスタムASICプロセッサなどの、汎用CPUもしくはハードウェアアクセラレータのうちの1つまたは複数を含んでよく、またはそれらによって実装されてもよい。
【０１１３】
802において、SLRMは、SLRMと関連付けられるパラメータの数を決定することによってユーザにより初期化される。いくつかの実装形態では、パラメータは、SLRMの設定、SLRMのハイパーパラメータに対応する、訓練データのサイズ、訓練データと関連付けられる特徴を含み得る。
【０１１４】
いくつかの実装形態では、ユーザがSLRMを初期化した後、SLRMと関連付けられる情報がセキュリティ管理エージェントに送信される。いくつかの実装形態では、セキュリティ管理エージェントは、SLRMとモデルに供給される訓練データとを処理する。いくつかの実装形態では、ノード管理エージェントは、訓練に参加するSCNを選択して管理するように構成される。いくつかの実装形態では、セキュリティ管理エージェントおよびノード管理エージェントの両方が、第三者のエージェントとして構成され得る。802の後で、プロセス800は804に進む。
【０１１５】
804において、乱数は乱数提供器から少なくとも2つのSCNによって要求され、要求された乱数は各SCNに記憶されているデータを暗号化するために使用される。いくつかの実装形態では、乱数は、数、ベクトル、または行列などであり得る。いくつかの実装形態では、乱数は少なくとも1つのSCNによって生成され得る。いくつかの実装形態では、乱数は独立の第三者によって提供され得る。
【０１１６】
いくつかの実装形態では、データを暗号化することは、データおよび受信された乱数を使用して計算を実行することを含む。いくつかの実装形態では、実行される計算は、加算、減算、および乗算のうちの少なくとも1つである。802の後で、プロセス800は804に進む。
【０１１７】
806において、暗号化されたデータは、SSに基づいてSLRMのパラメータを反復的に更新するための入力として使用される。このステップの詳細が図7においてさらに説明される。806の後で、プロセス800は808に進む。
【０１１８】
808において、訓練されたSLRMの出力が各SCNのためのサービスを実行するために使用される。いくつかの実装形態では、サービスは予測サービスまたは分類サービスであり得る。808の後で、プロセス800は停止する。
【０１１９】
図9は、本明細書の実装形態による、装置のモジュールを示す図900の例を示す。装置900は、マルチパーティセキュアロジスティック回帰モデルを訓練するための装置の例示的な実装形態であり得る。装置900は、上で説明された実装形態に対応することができ、装置900は、複数のセキュア計算ノード(SNC)において、乱数提供器から複数の乱数を受信するための受信器または受信ユニット902と、各SCNにおいて、受信された乱数を使用してSCNに記憶されているデータを暗号化するための暗号化器または暗号化ユニット904と、各SCNからの暗号化されたデータを使用することによってセキュアロジスティック回帰モデル(SLRM)を反復的に更新するための更新器または更新ユニット906と、SLRMの結果を出力するための出力器または出力ユニット908とを含み、結果は、SLRMを反復的に更新した後で各SCNによってサービスが実行されることを可能にするように構成される。
【０１２０】
ある任意選択の実装形態では、各乱数は、数、ベクトル、または行列のうちの少なくとも1つである。
【０１２１】
ある任意選択の実装形態では、乱数のうちの少なくとも1つが第三者のエージェントによって生成される。
【０１２２】
ある任意選択の実装形態では、更新器または更新ユニット906は、秘密共有(SS)方式に基づいてSLRMを反復的に更新するために使用される。
【０１２３】
ある任意選択の実装形態では、更新器または更新ユニット906は、イベントドリブンモデルに基づいてSLRMを反復的に更新するために使用される。
【０１２４】
ある任意選択の実装形態では、更新器または更新ユニット906は、式(19)に基づいて予測誤差の列ベクトルを決定することによってSLRMを反復的に更新するために使用される。
【０１２５】
ある任意選択の実装形態では、装置900はさらに、乱数提供器から複数の乱数を受信する前にSLRMと関連付けられるパラメータを初期化するための、初期化器または初期化ユニットを含む。
【０１２６】
ある任意選択の実装形態では、SLRMを反復的に更新することは、2つの連続的な反復結果の間の差が所定の閾値未満になるまで継続する。
【０１２７】
以前の実装形態において示されるシステム、装置、モジュール、またはユニットは、コンピュータチップもしくはエンティティを使用することによって実装されることが可能であり、または、ある機能を有する製品を使用することによって実装されることが可能である。典型的な実装デバイスはコンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ電話、スマートフォン、携帯情報端末、メディアプレーヤー、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであり得る。
【０１２８】
装置の中の各ユニットの機能および役割の実装プロセスについては、前の方法における対応するステップの実装プロセスに対して参照を行うことができる。詳細は簡潔にするためにここでは省略される。
【０１２９】
装置の実装形態は、方法の実装形態に基本的に対応するので、関連する部分については、方法の実装形態の関連する説明を参照することができる。以前に説明された装置の実装形態は例にすぎない。別々の部分として説明されるユニットは、物理的に別々であることもないこともあり、ユニットとして表示される部分は物理的なユニットであることもないこともあり、1つの場所に位置することがあり、またはいくつかのネットワークユニット上に分散されることがある。モジュールの一部またはすべては、本明細書の解決法の目的を達成するための実際の需要に基づいて選択され得る。当業者は、創造的な努力を伴わずに、本出願の実装形態を理解して実装することができる。
【０１３０】
図9を再び参照すると、これは、プライバシー保護のための分散型マルチパーティセキュリティモデル訓練フレームワークを使用してデータを処理するための装置の内部機能モジュールおよび構造を示すものとして解釈され得る。実行装置は、データ処理を可能にするように構成される装置の例であり得る。
【０１３１】
本明細書で説明される主題および活動および動作の実装形態は、本明細書で開示される構造およびそれらの構造的な等価物を含む、デジタル電子回路、有形に具現化されるコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェアにおいて、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。本明細書で説明される主題の実装形態は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、コンピュータプログラム担体に符号化された1つまたは複数のコンピュータプログラム、たとえばコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。担体は、有形な非一時的コンピュータ記憶媒体であり得る。代わりに、または加えて、担体は、人工的に生成された伝播信号、たとえば、データ処理装置による実行のための適切な受信機装置への送信のために情報を符号化するために生成される、機械で生成された電気信号、光学信号、または電磁気信号であり得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはこれらの1つまたは複数の組合せであってよく、またはそれらの一部であってよい。コンピュータ記憶媒体は伝播信号ではない。
【０１３２】
「データ処理装置」という用語は、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを例として含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。データ処理装置は、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィクス処理装置)を含み得る。装置はまた、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1つまたは複数の組合せからなるコードを含み得る。
【０１３３】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、もしくはコードも呼ばれることがあり、またはそのように説明されることもあるコンピュータプログラムは、コンパイル型言語もしくはインタプリタ型言語、または宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で書かれてよく、スタンドアロンプログラム、または、モジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境における実行に適した他のユニットを含む、任意の形式で展開されてよく、この環境は、1つまたは複数の位置においてデータ通信ネットワークによって相互接続される1つまたは複数のコンピュータを含み得る。
【０１３４】
コンピュータプログラムは、ファイルシステムの中のファイルに対応することがあるが、そうである必要はない。コンピュータプログラムは、他のプログラムまたはデータ、たとえばマークアップ言語文書に記憶される1つまたは複数のスクリプトを保持するファイルの一部分に、対象のプログラムに専用の単一のファイルに、または、複数の協調したファイル、たとえば1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルに、記憶され得る。
【０１３５】
本明細書で説明されるプロセスおよび論理フローは、入力データに対して操作して出力を生成することによって、動作を実行するように1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のコンピュータによって実行され得る。このプロセスおよび論理フローはまた、専用の論理回路、たとえば、FPGA、ASIC、もしくはGPUによって、または、専用の論理回路と1つまたは複数のプログラムされたコンピュータの組合せによって実行され得る。
【０１３６】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくは両方、または任意の他の種類の中央処理装置に基づき得る。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたは両方から、命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとを含み得る。中央処理装置およびメモリは、専用の論理回路によって補助され、またはそれに組み込まれ得る。
【０１３７】
一般に、コンピュータはまた、1つまたは複数の大容量記憶デバイスを含み、または、それからデータを受信し、もしくはそれにデータを転送するように動作可能に結合される。大容量記憶デバイスは、たとえば、磁気ディスク、磁気光学ディスク、もしくは光学ディスク、またはソリッドステートドライブであり得る。しかしながら、コンピュータはそのようなデバイスを有する必要はない。その上、コンピュータは、いくつか挙げると、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、たとえばuniversal serial bus (USB)フラッシュドライブに組み込まれ得る。
【０１３８】
ユーザとの対話を可能にするために、本明細書で説明される主題の実装形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばLCD(液晶ディスプレイ)モニタと、ユーザがそれによってコンピュータに入力を提供できる入力デバイス、たとえば、キーボードおよびポインティングデバイス、たとえばマウス、トラックボール、またはタッチパッドとを有する、コンピュータ上で実装され、またはそれと通信するように構成され得る。ユーザとの対話を可能にするために他の種類のデバイスを使用することもでき、たとえば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってよく、ユーザからの入力は、音響入力、発話入力、または触覚入力を含む任意の形式で受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信しそれから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送信することによって、または、ユーザのデバイス、たとえばスマートフォンまたは電子タブレット上で実行されるアプリと対話することによって、ユーザと対話することができる。また、コンピュータは、個人デバイス、たとえばメッセージングアプリケーションを実行しているスマートフォンにテキストメッセージまたは他の形式のメッセージを送信し、返信としてユーザからの応答メッセージを受信することによって、ユーザと対話することができる。
【０１３９】
本明細書は多数の具体的な実装形態の詳細を含むが、これらは、特許請求の範囲自体によって定められる、特許請求されるものの範囲に対する制限として解釈されるべきではなく、むしろ、特定の実装形態に特有であり得る特徴の説明として解釈されるべきである。別個の実装形態の文脈で本明細書で説明されるいくつかの特徴は、単一の実装形態において組合せで実現されてもよい。逆に、単一の実装形態の文脈で説明される様々な特徴は、複数の実装形態において別々に、または任意の適切な部分組合せで実現されてもよい。その上、特徴は、ある組合せで活動するものとして上で説明されることがあり、最初はそのように特許請求されることすらあるが、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合にはその組合せから削除されてよく、特許請求の範囲は、部分組合せまたは部分組合せの変形を対象とすることがある。
【０１４０】
同様に、動作は、特定の順序で図面において図示され、特許請求の範囲に記載されるが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序で実行されること、もしくは連続的な順序で実行されること、またはすべての示される動作が実行されることを要求するものとして理解されるべきではない。いくつかの状況では、マルチタスキング処理および並列処理が有利であり得る。その上、上で説明された実装形態における様々なシステムモジュールおよびコンポーネントの分離は、そのような分離をすべての実装形態において要求するものとして理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムは一般に、単一のソフトウェア製品において一緒に統合され、または複数のソフトウェア製品へとパッケージングされ得ることを理解されたい。
【０１４１】
本主題の特定の実装形態が説明された。他の実装形態が以下の特許請求の範囲内にある。たとえば、特許請求の範囲に記載される活動は、異なる順序で実行されてよく、それでも望ましい結果を達成することができる。一例として、添付の図面に図示されるプロセスは、望ましい結果を達成するために、必ずしも示される特定の順序または連続的な順序を必要としない。いくつかの場合、マルチタスキング処理および並列処理が有利であり得る。
【符号の説明】
【０１４２】
102  ユーザ
104  セキュリティ管理エージェント
106  ノード管理エージェント
108  乱数提供器
110  ネットワーク
112  セキュア計算ノードA
114  セキュア計算ノードB
900  図、装置
902  受信器
904  暗号化器
906  更新器
908  出力器
【図１】
0006825138.tif 000007
【図２Ａ】
0006825138.tif 000008
【図２Ｂ】
0006825138.tif 000009
【図３】
0006825138.tif 000010
【図４Ａ】
0006825138.tif 000011
【図４Ｂ】
0006825138.tif 000012
【図５】
0006825138.tif 000013
【図６】
0006825138.tif 000014
【図７】
0006825138.tif 000015
【図８】
0006825138.tif 000016
【図９】
0006825138.tif 000017