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