(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-08
(45)【発行日】2024-03-18
(54)【発明の名称】秘匿演算方法、秘匿演算システム及び秘匿演算管理装置
(51)【国際特許分類】
G09C 1/00 20060101AFI20240311BHJP
G06N 20/00 20190101ALI20240311BHJP
G06N 5/04 20230101ALI20240311BHJP
【FI】
G09C1/00 650Z
G06N20/00
G06N5/04
(21)【出願番号】P 2021020031
(22)【出願日】2021-02-10
【審査請求日】2023-02-09
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】松本 麻里
(72)【発明者】
【氏名】古田 雅則
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2017-207839(JP,A)
【文献】特開2019-215512(JP,A)
【文献】Anders Dalskov,Cats or Croissants? Techniques for Secure Inference,2020年11月11日,pp. 1-68,[2023年10月30日検索], インターネット<URL:https://anderspkd.github.io/res/files/thesis.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G09C 1/00
G06N 20/00
G06N 5/04
(57)【特許請求の範囲】
【請求項1】
秘匿演算管理装置と、前記秘匿演算管理装置と通信可能に接続されるn(nは、2以上の整数)個の計算装置とを備える秘匿演算システムが実行する秘匿演算方法であって、
前記秘匿演算管理装置が、前記秘匿演算管理装置に入力された第1データXに基づいて、X∈Qとなる整数環Qから選択される係数を決定することと、
前記秘匿演算管理装置が、前記第1データXに対して
Shamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第1データXから前記n個の計算装置の各々に対応するn個の第1断片データを生成することと、
前記n個の計算装置の各々が、当該計算装置に対応する第1断片データを当該計算装置が保持する学習モデルに学習させることと、
前記秘匿演算管理装置が、前記秘匿演算管理装置に入力された第2データZに対して
Shamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第2データZからn個の計算装置の各々に対応するn個の第2断片データを生成することと、
前記n個の計算装置の各々が、当該計算装置が保持する学習モデルを用いて当該計算装置に対応する第2断片データに基づく推論を実行することと、
前記秘匿演算管理装置が、前記n個の計算装置の各々のうちのk(kは、2以上、かつ、n以下の整数)個の計算装置の各々によって実行された推論の結果として得られるk個の推論結果データを
Shamirの秘密分散法に基づいて復号することによって復号データdecを取得することと
、
前記秘匿演算管理装置が、前記復号データdecが前記整数環Qの最大値の近傍となる場合、当該整数環Qの最大値に基づいて当該復号データdecを補正することと
を具備し、
前記係数は、
Shamirの秘密分散法に基づき、かつ、前記n個の第1断片データの各々が前記整数環Qの最大値未満となるように決定され
、
前記n個の計算装置の各々が保持する学習モデルは、当該学習モデルに入力されるデータと当該学習モデルから出力されるデータとが同一となるように学習したオートエンコーダを含む
秘匿演算方法。
【請求項2】
前記決定することは、k-1個のランダムな前記整数環Qの元である第1係数r
1,…,r
k-1と、n個の計算装置の各々に対応するn個のランダムな前記整数環Qの元である第2係数P
1,…,P
nとを前記係数として決定することを含み、
前記生成することは、前記第1データXを切片とするk-1次多項式
【数7】
に基づいてn個の第1断片データW(P
1),…,W(P
n)を生成することを含み、
前記第1係数及び前記第2係数は、前記n個の第1断片データW(P
1),…,W(P
n)のうちの最大値が前記整数環Qの最大値未満となるように決定される
請求項1記載の秘匿演算方法。
【請求項3】
前記補正することは、前記復号データdecを、前記整数環Qの最大値から当該復号データdecを減算した値に補正することを含む請求項
1記載の秘匿演算方法。
【請求項4】
前記n個の第1及び第2断片データは、Max-Min Normalization処理によって規格化される請求項1~
3のいずれか一項に記載の秘匿演算方法。
【請求項5】
前記秘匿演算管理装置が、前記k個の推論結果データを整数変換することを更に具備する請求項
4記載の秘匿演算方法。
【請求項6】
前記第2データZは、複数の要素z
1,…,z
d(dは、2以上の整数)を含み、
前記復号データdecは、前記複数の要素z
1,…,z
dに対応する複数の要素dec
1,…,dec
dを含み、
前記複数の要素dec
1,…,dec
dに対する前記整数環Qの最大値の近傍となる要素の割合が予め定められた値以上である場合、前記k個の推論結果データを復号することは、前記k個の計算装置とは異なる組み合わせのk個の計算装置の各々によって実行された推論の結果として得られる推論結果データを再度復号することを含む
請求項1記載の秘匿演算方法。
【請求項7】
前記第2データZは、複数の要素z
1,…,z
dを含み、
前記復号データdecは、前記複数の要素z
1,…,z
dに対応する複数の要素dec
1,…,dec
dを含み、
前記複数の要素dec
1,…,dec
dに対する前記整数環Qの最大値の近傍となる要素の割合が予め定められた値以上である場合、前記決定することは、前記係数とは異なる係数を再度決定することを含み、
前記生成することは、前記再度決定された係数に基づいて、前記n個の第2断片データを再度生成することを含む
請求項1記載の秘匿演算方法。
【請求項8】
秘匿演算管理装置と、前記秘匿演算管理装置と通信可能に接続されるn(nは、2以上の整数)個の計算装置とを備える秘匿演算システムにおいて、
前記秘匿演算管理装置は、決定手段と、第1生成手段と、第2生成手段と、復号手段と
、補正手段とを含み、
前記n個の計算装置の各々は、学習処理手段と、推論処理手段とを含み、
前記決定手段は、前記秘匿演算管理装置に入力された第1データXに基づいて、X∈Qとなる整数環Qから選択される係数を決定し、
前記第1生成手段は、前記第1データXに対して
Shamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第1データXから前記n個の計算装置の各々に対応するn個の第1断片データを生成し、
前記n個の計算装置の各々に含まれる学習処理手段は、当該計算装置に対応する第1断片データを当該計算装置が保持する学習モデルに学習させ、
前記第2生成手段は、前記秘匿演算管理装置に入力された第2データZに対して
Shamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第2データZからn個の計算装置の各々に対応するn個の第2断片データを生成し、
前記n個の計算装置の各々に含まれる推論処理手段は、当該計算装置が保持する学習モデルを用いて当該計算装置に対応する第2断片データに基づく推論を実行し、
前記復号手段は、前記n個の計算装置の各々のうちのk(kは、2以上、かつ、n以下の整数)個の計算装置の各々によって実行された推論の結果として得られるk個の推論結果データを
Shamirの秘密分散法に基づいて復号することによって復号データdecを取得し、
前記補正手段は、前記復号データdecが前記整数環Qの最大値の近傍となる場合、当該整数環Qの最大値に基づいて当該復号データdecを補正し、
前記係数は、
Shamirの秘密分散法に基づき、かつ、前記n個の第1断片データの各々が前記整数環Qの最大値未満となるように決定され
、
前記n個の計算装置の各々が保持する学習モデルは、当該学習モデルに入力されるデータと当該学習モデルから出力されるデータとが同一となるように学習したオートエンコーダを含む
秘匿演算システム。
【請求項9】
n(nは、2以上の整数)個の計算装置と通信可能に接続される秘匿演算管理装置において、
前記秘匿演算管理装置に入力された第1データXに基づいて、X∈Qとなる整数環Qから選択される係数を決定する決定手段と、
前記第1データXに対して
Shamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第1データXから前記n個の計算装置の各々に対応するn個の第1断片データを生成する第1生成手段と、
前記生成されたn個の第1断片データの各々を、当該第1断片データを学習する学習モデルを保持する前記n個の計算装置の各々に送信する第1送信手段と、
前記秘匿演算管理装置に入力された第2データZに対して
Shamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第2データZからn個の計算装置の各々に対応するn個の第2断片データを生成する第2生成手段と、
前記生成されたn個の第2断片データの各々を、前記学習モデルを用いて当該第2断片データに基づく推論を実行する前記n個の計算装置の各々に送信する第2送信手段と、
前記n個の計算装置の各々のうちのk(kは、2以上、かつ、n以下の整数)個の計算装置の各々によって実行された推論の結果として得られるk個の推論結果データを
Shamirの秘密分散法に基づいて復号することによって復号データdecを取得する復号手段と
、
前記復号データdecが前記整数環Qの最大値の近傍となる場合、当該整数環Qの最大値に基づいて当該復号データdecを補正する補正手段と
を具備し、
前記係数は、
Shamirの秘密分散法に基づき、かつ、前記n個の第1断片データの各々が前記整数環Qの最大値未満となるように決定され
、
前記n個の計算装置の各々が保持する学習モデルは、当該学習モデルに入力されるデータと当該学習モデルから出力されるデータとが同一となるように学習したオートエンコーダを含む
秘匿演算管理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、秘匿演算方法、秘匿演算システム及び秘匿演算管理装置に関する。
【背景技術】
【0002】
近年では、様々な情報がデジタル化され、当該情報を利用した高度な電気通信サービスが提供されている。このような電気通信サービスには、例えば工場の機器等に設置されたセンサから得られる情報を利用して当該機器の異常を検知する(つまり、故障予知を行う)サービス及びユーザのパーソナルデータ(個人情報)を利用して当該ユーザの趣味嗜好に応じたサービスのような各種サービスが含まれる。
【0003】
ところで、これらのサービスの提供を実現するために機械学習(により生成された学習モデル)を用いることが考えられる。機械学習の規模は拡大化する傾向にあり、近年ではクラウドコンピューティングサービスを提供する事業者(以下、クラウド事業者と表記)に当該機械学習に関する演算(計算)を委託し、大規模な機械学習を実現することが行われている。
【0004】
しかしながら、クラウド事業者に機械学習に関する演算を委託した場合、当該機械学習に用いる学習データが漏洩するリスクが生じる。
【0005】
これに対しては、上記した学習データ(入力データ)を秘匿しながら演算を実行させる秘匿演算技術が研究されている。なお、秘匿演算技術の1つに秘密分散法があるが、当該秘密分散法によれば、学習データを複数の計算装置に分散して機械学習を行うことができるため、当該学習データが漏洩するリスクを低減することができる。
【0006】
ここで、上記した各種サービスを提供する場合には、機械学習により生成された学習モデルに当該サービスを提供するためのデータ(以下、推論データ)を入力することによって推論(演算)を実行し、当該推論の結果として得られた推論結果データに基づく処理が実行される。上記したように学習データを複数の計算装置に分散して機械学習を行っている場合には、このようなサービスの提供時においても、上記した学習データと同様に、推論データを複数の計算装置に分散し、当該複数の計算装置に推論を実行させるが、この場合、当該複数の計算装置において得られた推論結果データを復号する必要がある。
【0007】
しかしながら、推論結果データの復号精度が低い場合には、質の高いサービスを提供することは困難である。
【先行技術文献】
【特許文献】
【0008】
【発明の概要】
【発明が解決しようとする課題】
【0009】
そこで、本発明が解決しようとする課題は、秘匿演算におけるデータの復号精度を向上させることが可能な秘匿演算方法、秘匿演算システム及び秘匿演算管理装置を提供することにある。
【課題を解決するための手段】
【0010】
実施形態によれば、秘匿演算管理装置と、前記秘匿演算管理装置と通信可能に接続されるn(nは、2以上の整数)個の計算装置とを備える秘匿演算システムが実行する秘匿演算方法が提供される。前記秘匿演算方法は、前記秘匿演算管理装置が、前記秘匿演算管理装置に入力された第1データXに基づいて、X∈Qとなる整数環Qから選択される係数を決定することと、前記秘匿演算管理装置が、前記第1データXに対してShamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第1データXから前記n個の計算装置の各々に対応するn個の第1断片データを生成することと、前記n個の計算装置の各々が、当該計算装置に対応する第1断片データを当該計算装置が保持する学習モデルに学習させることと、前記秘匿演算管理装置が、前記秘匿演算管理装置に入力された第2データZに対してShamirの秘密分散法に基づく秘密分散を実施し、前記決定された係数に基づいて当該第2データZからn個の計算装置の各々に対応するn個の第2断片データを生成することと、前記n個の計算装置の各々が、当該計算装置が保持する学習モデルを用いて当該計算装置に対応する第2断片データに基づく推論を実行することと、前記秘匿演算管理装置が、前記n個の計算装置の各々のうちのk(kは、2以上、かつ、n以下の整数)個の計算装置の各々によって行われた推論の結果として得られるk個の推論結果データをShamirの秘密分散法に基づいて復号することによって復号データdecを取得することと、前記秘匿演算管理装置が、前記復号データdecが前記整数環Qの最大値の近傍となる場合、当該整数環Qの最大値に基づいて当該復号データdecを補正することとを具備する。前記係数は、Shamirの秘密分散法に基づき、かつ、前記n個の第1断片データの各々が前記整数環Qの最大値未満となるように決定される。前記n個の計算装置の各々が保持する学習モデルは、当該学習モデルに入力されるデータと当該学習モデルから出力されるデータとが同一となるように学習したオートエンコーダを含む。
【図面の簡単な説明】
【0011】
【
図1】第1実施形態に係る秘匿演算システムのネットワーク構成の一例を示す図。
【
図2】秘匿演算管理装置のハードウェア構成の一例を示す図。
【
図3】秘匿演算管理装置の機能構成の一例を示すブロック図。
【
図4】計算装置の機能構成の一例を示すブロック図。
【
図5】秘匿演算管理装置に学習データが入力される際の処理手順の一例を示すシーケンスチャート。
【
図6】学習データに含まれるサブデータ毎に生成されるシェアについて説明するための図。
【
図7】秘匿演算管理装置に推論データが入力される際の処理手順の一例を示すシーケンスチャート。
【
図8】判定閾値を決定する際の処理手順の一例を示すシーケンスチャート。
【
図9】第2実施形態に係る秘匿演算管理装置に推論データが入力される際の処理手順の一例を示すシーケンスチャート。
【発明を実施するための形態】
【0012】
以下、図面を参照して、各実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。
図1は、第1実施形態に係る秘匿演算システムのネットワーク構成の一例を示す。
【0013】
図1に示すように、秘匿演算システム1は、秘匿演算管理装置10及び複数の計算装置(演算装置)20-1~20-n(nは、2以上の整数)を備える。秘匿演算管理装置10及び複数の計算装置20-1~20-nは、例えばインターネットのようなネットワーク30を介して通信可能に接続される。
【0014】
秘匿演算管理装置10は、例えばパーソナルコンピュータのような電子機器(情報処理装置)によって実現されるが、他の電子機器であってもよい。
【0015】
複数の計算装置20-1~20-nの各々は、例えばパーソナルコンピュータのような電子機器(情報処理装置)によって実現されるが、他の電子機器であってもよい。なお、複数の計算装置20-1~20-nは、例えば秘匿演算管理装置10に対してクラウドコンピューティングサービスを提供するクラウドサーバ装置として実現されていてもよい。
【0016】
ここで、本実施形態に係る秘匿演算システム1の使用態様について簡単に説明する。本実施形態に係る秘匿演算システム1は、機械学習により生成された学習モデルを用いた各種サービスを提供するために利用される。秘匿演算システム1において提供されるサービスには、例えば工場の機器等に設置されたセンサから得られるデータ(センサデータ)を利用して当該機器の異常を検知するようなサービスが含まれるが、他のサービスであってもよい。
【0017】
本実施形態においては、上記したサービスを提供する際に用いられる学習モデルに対する機械学習(学習処理)を他の事業者に委託する場合を想定している。
【0018】
しかしながら、学習データは有用なデータである場合が多く、他の事業者に学習処理を委託する場合には当該学習データが漏洩するリスクが懸念される。このため、本実施形態に係る秘匿演算システム1は、学習データを秘匿化しながら計算装置20-1~20-n(すなわち、複数の事業者)に学習処理を実行させるものとする。この場合、計算装置20-1~20-nの各々には、当該計算装置において学習処理が実行されることによって生成された学習モデルが保持される。
【0019】
また、上記したように計算装置20-1~20-nの各々に保持されている学習モデルを用いて例えばセンサデータから機器の異常を検知する(つまり、推論を実行する)ような場合においても、当該センサデータ(推論データ)を秘匿化しながら計算装置20-1~20-nに推論を実行させ、当該推論が実行されることによって得られる推論結果データを復号することによって、異常検知のようなサービスを実現することができる。
【0020】
ところで、上記したような秘匿化を実現する技術(秘匿演算技術)には、準同型暗号と秘密分散法とがあるが、一般的に、準同型暗号は、秘密分散法と比較して、演算量(計算量)が多くなる。このため、本実施形態において適用する秘匿演算技術としては、秘密分散法を用いる。
【0021】
秘密分散法は秘匿化されるデータ(秘匿情報)をシェアと称される複数の断片データに変換する方法であり、当該秘密分散法の一例としてはShamirの秘密分散法等が知られている。
【0022】
以下、Shamirの秘密分散法の概要について説明する。ここでは、秘匿化されるデータaの保有者が当該データaをn個に安全に分散する場合を考える。
【0023】
このような場合、Shamirの秘密分散法によれば、データ保有者はa∈Qとなる体(整数環)Qを選択し、秘密分散を実施する。
【0024】
具体的には、k-1(kは、2以上、かつ、n以下の整数)のランダムな体Qの元であるr
1,…,r
k-1を選択し、秘匿化されるデータaを切片とするk-1次多項式である以下の式(1)を構成する。
【数1】
【0025】
また、n個の体Qの元であるP1,…,Pnを選択し、当該P1,…,Pnをそれぞれ上記した式(1)のPに適用することによって、W(P1),…,W(Pn)を計算する。なお、上記したr1,…,rk-1及びP1,…,Pnは、式(1)における係数に相当する。また、P1,…,Pnはそれぞれ異なる値である。換言すれば、Pt(t=1,2,…,n)はPt´(t´=1,2,…,n、かつ、t≠t´)とは異なる。
【0026】
上記したように計算されたW(P1),…,W(Pn)は、上記した秘匿化されるデータaのシェア(断片データ)であり、例えば異なるn台のサーバ等に送信される。
【0027】
これにより、秘匿化されるデータaをn台のサーバにおいて安全に分散して保管させることができる。なお、n台のサーバをサーバS1,…,Snとし、サーバSt(t=1,2,…,n)に送信されたシェアをW(Pt)とすると、当該W(Pt)は、例えば[a]t:=W(Pt)と表される。
【0028】
次に、上記したように分散されたn個のシェアから上記したデータaを復元する場合を考える。この場合、上記したn台のサーバS1,…,Snのうちのk台のサーバ(以下、サーバSt1,…,Stkと表記)を選択し、当該選択されたサーバSt1,…,Stkの各々からシェアを受け取る。なお、サーバSt1,…,Stkから受け取られたシェアを[a]t1,…,[a]tkとする。
【0029】
この場合、上記したデータaは、上記したk個のシェア[a]
t1,…,[a]
tkから以下の式(2)により復元することができる。
【数2】
【0030】
なお、式(2)におけるλtjは、Lagrange補間法におけるLagrange係数である。
【0031】
上記したようにShamirの秘密分散法によれば、1つの秘匿化されるデータaからn個のシェア(断片データ)を生成し、n台のサーバ(機器)に分散して管理するとともに、当該分散されたシェアから予め定められたk個のシェアを集めて元のデータaを復元することができる。すなわち、Shamirの秘密分散法は、k≦nを満たすような2以上の整数n及びkについて、n-k個のシェアが消失したとしても元のデータaを復元することができる耐消失性と、k個未満のシェアからは元のデータaを復元できない機密性を併せ持つ。
【0032】
このような秘匿演算が本実施形態に適用されることによって、学習データをn個のシェアに分散してn個の計算装置の各々が保持する学習モデルに学習させることができるとともに、推論データをn個のシェアに分散してn個の計算装置の各々に当該学習モデルを用いた推論を実行させることができる。
【0033】
ここで、上記したようにシェアを用いた計算を行う秘匿演算(秘密分散法)は整数環上で行う必要がある。換言すれば、上記した秘匿化されるデータa及びシェアW(P1),…,W(Pn)等は全て整数で表現される。
【0034】
上記したように本実施形態においてはn個の計算装置20-1~20-nの各々に保持されている学習モデルを用いた推論が実行され、当該推論が実行されることによって得られるk個の推論結果データが復号されることになるが、当該学習モデルを用いた推論には実数による演算が必要となる。このような推論が実行された結果(推論結果データ)を秘匿演算において復号しようとすると復号精度が低下する場合がある。具体的には、推論に実数が使用されることによって秘匿演算における体Q(有限体)を超える推論結果データが得られた場合には、当該推論結果データを正しく復号することができない。
【0035】
そこで、本実施形態においては、上記した式(1)において用いられる係数r1,…,rk-1及びP1,…,Pnの範囲を限定することにより、推論結果データの復号精度を向上させる構成を採用する。具体的には、上記したShamirの秘密分散法によれば、単にk-1個のランダムな体Qの元であるr1,…,rk-1及びn個のランダムな体Qの元であるP1,…,Pnを係数として選択するものとして説明したが、本実施形態における秘匿演算(秘密分散法)においては、例えばW(P1),…,W(Pn)の各々(つまり、断片データの各々)が体Qの最大値未満となるように係数r1,…,rk-1及びP1,…,Pnが決定される。
【0036】
なお、例えばP
1,…,P
nがP
1<…<P
nの関係にあり、秘匿化されるデータaの最大値がA
maxであるものとすると、A
maxのシェアの中の最大値であるシェアW(P
n)は、以下の式(3)により表される。
【数3】
【0037】
本実施形態においては、このような式(3)により計算されるシェアW(Pn)が体Qの最大値未満(つまり、W(Pn)<Q)となるように係数が決定されるものとする。
【0038】
以下、本実施形態に係る秘匿演算システムについて詳細に説明する。
図2は、
図1に示す秘匿演算管理装置10のハードウェア構成の一例を示す。
【0039】
図2に示すように、秘匿演算管理装置10は、CPU11、不揮発性メモリ12、RAM13及び通信デバイス14等を備える。
【0040】
CPU11は、秘匿演算管理装置10内の様々なコンポーネントの動作を制御するためのプロセッサである。CPU11は、単一のプロセッサであってもよいし、複数のプロセッサで構成されていてもよい。CPU11は、不揮発性メモリ12からRAM13にロードされる様々なプログラムを実行する。これらのプログラムは、オペレーティングシステム(OS)や様々なアプリケーションプログラムを含む。このようにCPU11によって実行されるアプリケーションプログラムには、上記した秘匿演算に関する処理を実行するプログラムが含まれる。
【0041】
不揮発性メモリ12は、補助記憶装置として用いられる記憶媒体である。RAM13は、主記憶装置として用いられる記憶媒体である。
図2においては不揮発性メモリ12及びRAM13のみが示されているが、秘匿演算管理装置10は、例えばHDD(Hard Disk Drive)及びSSD(Solid State Drive)等の他の記憶装置を備えていてもよい。
【0042】
通信デバイス14は、秘匿演算管理装置10の外部の装置(例えば、計算装置20-1~20-n)との通信を実行するように構成されたデバイスである。
【0043】
ここでは秘匿演算管理装置10のハードウェア構成について説明したが、計算装置20-1~20-nについても秘匿演算管理装置10と同様のハードウェア構成を有するものとする。なお、計算装置20-1~20-nのハードウェア構成の詳細な説明については省略する。
【0044】
図3は、秘匿演算管理装置10の機能構成の一例を示すブロック図である。
図3に示すように、秘匿演算管理装置10は、係数決定部101,シェア生成部102、推論結果復号部103、復号データ補正部104、判定処理部105及び判定閾値決定部106を含む。
【0045】
本実施形態において、秘匿演算管理装置10に含まれる各部101~106の一部または全部は、CPU11(つまり、秘匿演算管理装置10のコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。なお、このCPU11によって実行されるプログラムは、コンピュータ読み取り可能な記憶媒体に格納して頒布されてもよいし、ネットワークを通じて秘匿演算管理装置10にダウンロードされてもよい。
【0046】
ここではCPU11に所定のプログラムを実行させることによって各部101~106が実現されるものとして説明したが、当該各部101~106の一部または全部は、例えばIC(Integrated Circuit)等のハードウェアによって実行されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
【0047】
ここで、本実施形態においては、上記したようにn個の計算装置20-1~20-nの各々において保持されている学習モデルを学習させる際には秘匿演算管理装置10に学習データ(群)Xが入力され、n個の計算装置20-1~20-nに保持されている学習モデルを用いた推論を実行させる際には秘匿演算管理装置10に推論データZが入力されるものとして説明する。なお、上記したように本実施形態に係る秘匿演算システム1が機器の異常を検知するようなサービスを提供するために利用される場合、学習データX及び推論データZは、例えば当該機器に設置されたセンサから得られるセンサデータである。
【0048】
秘匿演算管理装置10に学習データXが入力された場合、係数決定部101は、当該学習データXに基づいて、X∈Qとなる体(整数環)Qから選択される係数を決定する。なお、上記したように学習データXをn個の計算装置20-1~20-nに分散する場合には当該学習データXからn個のシェアが生成されるが、係数決定部101は、当該n個のシェアの各々(つまり、シェアの最大値)が体Qの最大値未満となるように係数を決定する。
【0049】
シェア生成部102は、学習データXに対して秘密分散を実施し、係数決定部101によって決定された係数に基づいて学習データXからn個の計算装置20-1~20-nの各々に対応するn個のシェア(断片データ)を生成する。
【0050】
秘匿演算管理装置10に推論データZが入力された場合、シェア生成部102は、当該推論データに対して秘密分散を実施し、当該推論データZからn個の計算装置20-1~20-nの各々に対応するn個のシェア(断片データ)を生成する。なお、この場合におけるn個のシェアは、上記したように係数決定部101によって学習データXに基づいて決定された係数に基づいて生成される。
【0051】
シェア生成部102によって生成されたn個のシェアの各々は、それぞれ対応する計算装置20-1~20-nに送信される。
【0052】
推論結果復号部103は、計算装置20-1~20-nのうちのk個の計算装置において推論が実行された結果(推論結果)として得られるk個の推論結果データを当該k個の計算装置から受信し、当該推論結果データを復号することによって、復号データを取得する。
【0053】
復号データ補正部104は、推論結果復号部103によって取得された復号データを補正する。なお、復号データの補正は、例えば秘匿演算における体Q(の最大値)に基づいて行われる。
【0054】
ここで、上記した計算装置20-1~20-nの各々において保持されている学習モデルは、例えばオートエンコーダであるものとする。オートエンコーダは、例えば当該オートエンコーダに対して入力されるデータ(入力データ)に対して、当該データを再現するようなデータ(出力データ)を出力するように学習した学習モデルである。なお、オートエンコーダは、例えば入力レイヤに含まれるノード数(入力ノード数)と、出力レイヤに含まれるノード数(出力ノード数)とが同一であり、隠れレイヤに含まれるノード数(隠れノード数)が入力レイヤ及び出力レイヤに含まれるノード数よりも少ない3レイヤ構造のニューラルネットワークである。なお、隠れレイヤに含まれるノード数及び隠れレイヤの数等は適宜設定可能である。また、計算装置20-1~20-nの各々において保持されている学習モデルの初期構成(入出力ノード数、隠れノード数及び隠れレイヤの数等)は同一であるものとする。
【0055】
上記したように計算装置20-1~20-nの各々において保持されている学習モデルがオートエンコーダである場合、判定処理部105は、推論データと復号データとの誤差値(差分)を閾値と比較し、当該推論データと復号データとの乖離度を判定する。具体的には、判定処理部105は、誤差値が閾値以上である場合、推論データと復号データとが同一でないと判定する。一方、判定処理部105は、誤差値が閾値未満である場合、推論データと復号データとが同一であると判定する。本実施形態においては、このような判定処理部105による判定結果に基づいて例えば機器が異常であるかどうかを検知することができる。
【0056】
判定閾値決定部106は、例えば上記した学習データ及び推論データと同様の検証用データに基づいて、上記した判定処理部105による判定処理に用いられる閾値を決定する。
【0057】
図4は、計算装置20-1~20-nのうちの計算装置20-t(t=1,2,…,n)の機能構成の一例を示すブロック図である。
図4に示すように、計算装置20-tは、学習データ格納部201、学習処理部202、学習モデル格納部203、推論データ格納部204、推論処理部205及び推論結果格納部206を含む。
【0058】
本実施形態において、計算装置20-tに含まれる学習データ格納部201、学習モデル格納部203、推論データ格納部204及び推論結果格納部206は、計算装置20-tに備えられる不揮発メモリまたは他の記憶装置等によって実現される。
【0059】
また、計算装置20-tに含まれる学習処理部202及び推論処理部205の一部または全部は、計算装置20-tに備えられるCPU(つまり、計算装置20-tのコンピュータ)に所定のプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。なお、このCPUによって実行されるプログラムは、コンピュータ読み取り可能な記憶媒体に格納して頒布されてもよいし、ネットワーク30を通じて計算装置20-tにダウンロードされてもよい。
【0060】
ここではCPUに所定のプログラムを実行させることによって学習処理部202及び推論処理部205が実現されるものとして説明したが、当該各部202及び205の一部または全部は、例えばIC等のハードウェアによって実行されてもよいし、ソフトウェア及びハードウェアの組み合わせによって実現されてもよい。
【0061】
学習データ格納部201には、上記した秘匿演算管理装置10に含まれるシェア生成部102によって学習データXから生成されたn個のシェアのうち、計算装置20-tに対応するシェアが格納される。
【0062】
学習処理部202は、学習データ格納部201に格納されたシェア(学習データXのシェア)に基づいて学習モデルを学習させる学習処理を実行する。
【0063】
学習モデル格納部203には、学習処理部202によって学習処理が実行されることによって得られた学習モデル(つまり、学習データXのシェアを学習した学習モデル)が格納される。なお、計算装置20-1~20-nの各々においては異なるシェアに基づいて学習処理が実行されるため、当該計算装置20-1~20-nの各々の学習モデル格納部203には、上記したように初期構成は同一であるが、学習内容が異なる学習モデル(つまり、パラメータが異なる学習モデル)が格納されることになる。
【0064】
推論データ格納部204には、上記した秘匿演算管理装置10に含まれるシェア生成部102によって推論データZから生成されたn個のシェアのうち、計算装置20-tに対応するシェアが格納される。
【0065】
推論処理部205は、推論データ格納部204に格納されたシェア(推論データZのシェア)に基づいて推論処理を実行する。なお、推論処理においては、推論データZのシェアを学習モデル格納部203に格納されている学習モデルに入力することによって、当該学習モデルから出力されるデータが推定結果データとして取得される。
【0066】
推論結果格納部206には、推論処理部205によって取得された推論結果データが格納される。推論結果格納部206に格納された推論結果データは、秘匿演算管理装置10に送信される。
【0067】
以下、本実施形態に係る秘匿演算システム1の動作について説明する。ここでは、秘匿演算管理装置10に学習データXが入力される(つまり、計算装置20-1~20-nに学習処理を実行させる)際の処理(以下、第1処理と表記)と、秘匿演算管理装置10に推論データZが入力される(つまり、計算装置20-1~20-nに推論処理を実行させる)際の処理(以下、第2処理と表記)とについて説明する。
【0068】
まず、
図5のシーケンスチャートを参照して、上記した第1処理の処理手順の一例について説明する。なお、
図5においては便宜的に計算装置20-1~20-nのうちの1つの計算装置20-tのみが示されているが、他の計算装置においても同様の処理が実行されるものとする。
【0069】
第1処理において、秘匿演算管理装置10は、上記したように学習データXを入力する(ステップS1)。なお、学習データXは、複数の学習データを含む学習データ群Xであってもよい。この場合、秘匿演算管理装置10は、学習データ群X={X1,…,Xm}を入力する。この学習データ群Xに含まれる学習データX1,…,Xmの各々は、例えば同じ種類の複数の機器(正常な状態にある機器)に設置されたセンサから同時刻に得られるセンサデータであってもよいし、同一の機器(正常な状態にある機器)に設置されたセンサから時系列に得られるセンサデータであってもよい。以下の説明においては、ステップS1において学習データ群X={X1,…,Xm}が入力されたものとして説明する。
【0070】
また、上記したように学習モデルがオートエンコーダであり、当該オートエンコーダの入力レイヤ及び出力レイヤのノード数がd(dは、2以上の整数)個である場合、学習データX1,…,Xmの各々は、d個のサブデータ(要素)を含む配列として構成されている。なお、学習データX1,…,Xmの各々を構成するd個のサブデータをx1,…,xdとすると、当該サブデータx1,…,xdは、例えば同一の機器に設置されたd種のセンサから同時刻に得られるセンサデータである。
【0071】
以下においては、便宜的に、学習データX1を構成するd個のサブデータをx11,…,x1d、学習データXmを構成するd個のサブデータをxm1,…,xmdとして説明する。他の学習データX2,…,Xm-1についても同様である。
【0072】
ステップS1の処理が実行されると、係数決定部101は、学習データ群Xに基づいて、当該学習データ群Xに含まれる学習データX1,…,Xmの各々のシェアを生成するための係数(体Qから選択される係数)を決定する(ステップS2)。
【0073】
ステップS2においては、学習データ群X(X
1,…,X
m)に含まれる全てのサブデータx
1,…,x
dの最大値をX
maxとした場合に、以下の式(4)を満たすような係数r
1,…,r
k-1及びP
1,…,P
nを決定する。
【数4】
【0074】
なお、式(4)は、上記した式(3)を学習データ群Xに適用したものであり、学習データ群Xに含まれる学習データX1,…,Xmの各々のシェア(サブデータのシェア)のうちの最大値(W(Pn))が体Qの最大値未満となるように係数r1,…,rk-1及びP1,…,Pnを決定することを意味している。また、式(4)のQは、体Qの最大値を示している。また、式(4)において、P1,…,Pnは、P1<…<Pnの関係にあるものとする。
【0075】
上記したステップS2において決定された係数は、後述する第2処理に用いるために係数決定部101内部に保持される。
【0076】
次に、シェア生成部102は、ステップS2において決定された係数に基づいて、学習データ群Xに含まれる学習データX1,…,Xmの各々から計算装置20-1~20-nの各々に対応するn個のシェアを生成する(ステップS3)。換言すれば、シェア生成部102は、学習データX1からn個のシェアを生成するとともに、学習データXnからもn個のシェアを生成する。他の学習データX2,…,Xm-1についても同様である。
【0077】
更に、本実施形態においては学習データX1,…,Xmの各々はサブデータx1,…,xdから構成されるが、この場合、上記したシェアは当該サブデータ毎に生成される。
【0078】
ここで、
図6に示すように、学習データX
1,…,X
mのうちの1つの学習データX
g(1≦g≦m)がサブデータx
g1,…,x
gdを含む配列から構成されている場合を想定する。この場合、シェア生成部102は、サブデータx
g1,…,x
gdの各々からn個のシェアを生成する。
【0079】
具体的には、サブデータxg1からはn個のシェアxg1(P1),…,xg1(Pn)が生成される。シェアxg1(P1)は、上記した式(1)の切片aをサブデータxg1とし、ステップS2において係数として決定されたr1,…,rk-1及びP1を適用した当該式(1)により計算されるシェアW(P1)に相当する。シェアxg1(Pn)は、上記した式(1)の切片aをサブデータxg1とし、ステップS2において係数として決定されたr1,…,rk-1及びPnを適用した式(1)により計算されるシェアW(Pn)に相当する。詳しい説明については省略するが、シェアxg1(P2),…,xg1(Pn-1)についても同様に計算される。
【0080】
また、サブデータxgdからはn個のシェアxgd(P1),…,xgd(Pn)が生成される。シェアxgd(P1)は、上記した式(1)の切片aをサブデータxgdとし、ステップS2において係数として決定されたr1,…,rk-1及びP1を適用した当該式(1)により計算されるシェアW(P1)に相当する。シェアxgd(Pn)は、上記した式(1)の切片aをサブデータxgdとし、ステップS2において係数として決定されたr1,…,rk-1及びPnを適用した当該式(1)により計算されるシェアW(Pn)に相当する。詳しい説明については省略するが、シェアxgd(P2),…,xgd(Pn-1)についても同様に計算される。
【0081】
ここではサブデータxg1及びxgdの各々から生成されるシェアについて説明したが、他のサブデータxg2,…,xgd-1の各々からも同様にn個のシェアが生成される。
【0082】
この場合、
図6に示すように、シェアx
g1(P
1),…,x
gd(P
1)は、計算装置20-1に対応するシェアX
g(P
1)である。また、シェアx
g1(P
n),…,x
gd(P
n)は、計算装置20-nに対応するシェアX
g(P
n)である。
【0083】
本実施形態においては、上記した処理が実行されることにより、学習データXgに対してはそれぞれサブデータのシェアを含むn個のシェアXg(P1),…,Xg(Pn)が上記した式(1)を用いて生成される。ここでは学習データXgについて説明したが、他の学習データについても同様にシェアが生成される。
【0084】
再び
図5に戻ると、シェア生成部102は、ステップS3において生成された学習データX
1,…,X
mの各々のシェア(に含まれるサブデータのシェア)の各々を規格化する(ステップS4)。この場合、シェア生成部102は、Max-Min Normalization処理を実行する。このMax-Min Normalizationによれば、以下の式(5)により値が0から1になるようにシェアが変換(規格化)される。
【数5】
【0085】
なお、上記した式(5)におけるxmmはステップS3において生成されたシェア(サブデータのシェア)の規格化された後の値を示し、当該式(5)におけるxは当該ステップS3において生成されたシェアを示す。
【0086】
また、式(5)におけるx
maxは、規格化されるサブデータのシェアxと同一のノード(オートエンコーダの入力レイヤに含まれる同一のノード)に入力される全てのサブデータのシェアのうちの最大値である。同様に、式(5)におけるx
minは、規格化されるサブデータのシェアxと同一のノード(オートエンコーダの入力レイヤに含まれる同一のノード)に入力される全てのサブデータのシェアのうちの最小値である。具体的には、上記した
図6に示すサブデータx
g1のシェアx
g1(P
1)を式(5)により規格化する場合、当該式(5)におけるx
maxは学習データX
1,…,X
mの各々を構成するサブデータx
1のシェアのうちの最大値であり、当該式(5)におけるx
minは学習データX
1,…,X
mの各々を構成するサブデータx
1のシェアのうちの最小値である。
【0087】
ステップS4においては、ステップS3において生成された学習データX1,…,Xmを構成するサブデータx1,…,xdのシェアの各々を式(5)に適用することによって、当該シェアの各々を規格化することができる。
【0088】
なお、ここではxmax及びxminが実データ(学習データX1,…,Xmを構成するサブデータx1,…,xdのシェア)から定められるものとして説明したが、例えばサブデータとして入力されるセンサデータの種類(つまり、センサの種類)等の条件から当該センサデータが取り得る値の範囲が定められている場合には、当該xmax及びxminは当該範囲に基づいて定められてもよい。
【0089】
また、ここではxmax及びxminがサブデータx1,…,xd毎に異なる値となるものとして説明したが、当該サブデータx1,…,xdのシェアの分布(範囲)が同程度である場合には、全てのサブデータx1,…,xdのシェアに共通なxmax及びxminが用いられてもよい。
【0090】
ステップS4の処理が実行されると、秘匿演算管理装置10は、当該ステップS4において規格化されたシェア(学習データX1,…,Xmを構成するサブデータx1,…,xdのシェアの各々)を、対応する計算装置20-1~20-nに送信する(ステップS5)。
【0091】
この場合、例えば計算装置20-1に送信される学習データXgのシェアXg(P1)は、上記したようにd個のサブデータのシェア(xg1(P1),…,xgd(P1))を含む。これによれば、上記したd個のサブデータを含む学習データXgと同様のデータ長(つまり、学習に必要なデータ長)のシェアを計算装置20-1に送信することができるため、当該計算装置20-1においては学習モデル(オートエンコーダ)の学習処理を適切に実行することができる。
【0092】
以下、計算装置20-1~20-nのうちの計算装置20-tの処理について説明する。ステップS5において送信された計算装置20-tに対応する学習データX1,…,Xmの各々のシェア(以下、X1(Pt),…,Xm(Pt)と表記)は、当該計算装置20-tにおいて受信され、学習データ格納部201に格納される。
【0093】
次に、学習処理部202は、学習データ格納部201に格納された学習データX1,…,XmのシェアX1(Pt),…,Xm(Pt)に基づいて学習モデルの学習処理を実行する(ステップS6)。
【0094】
ここで、学習データX1のシェアX1(Pt)を学習モデルに学習させる場合を想定する。この場合、シェアX1(Pt)はd個のサブデータのシェア(以下、x11(Pt),…,x1d(Pt)と表記)を含み、学習処理部202は、当該d個のサブデータのシェアx11(Pt),…,x1d(Pt)をオートエンコーダ(学習モデル)の入力レイヤに含まれるd個の入力ノードに入力する。
【0095】
オートエンコーダは上記したように入力データを再現するような出力データを出力するように構成されているため、例えば機器が正常な状態である場合に得られたセンサデータ(群)が上記した学習データ群Xとして入力されているのであれば、当該オートエンコードから出力される出力データは入力データと同一であるべきである。
【0096】
このため、上記したステップS6における学習処理においては、学習モデル(オートエンコーダ)入力されたシェアX1(Pt)と当該学習モデルから出力された出力データとの誤差を計算し、当該誤差が小さくなるように学習モデルのパラメータを更新する処理が実行される。
【0097】
これにより、学習モデルはシェアX1(Pt)を学習することができる。ここでは学習データX1のシェアX1(Pt)について説明したが、ステップS6においては、学習データ格納部201に格納された学習データX1,…,XmのシェアX1(Pt),…,Xm(Pt)の各々が学習モデルによって学習される。
【0098】
上記したステップS6の処理が実行されることによってパラメータが更新された学習モデル(つまり、学習データX1,…,Xmのシェアを学習した学習モデル)は、学習モデル格納部203に格納される(ステップS7)。
【0099】
次に、
図7のシーケンスチャートを参照して、上記した第2処理の処理手順の一例について説明する。なお、
図7においては、便宜的に、計算装置20-1~20-nのうちの1つの計算装置20-tのみが示されている。
【0100】
第2処理において、秘匿演算管理装置10は、上記したように推論データZを入力する(ステップS11)。なお、推論データZは、上記した学習データX1,…,Xmの各々と同様に、d個のサブデータを含む配列として構成されている。なお、推論データZを構成するd個のサブデータをz1,…,zdとすると、当該サブデータz1,…,zdは、例えば同一の機器(異常を判定する対象となる機器)に設置されたd種のセンサから同時刻に得られるセンサデータである。
【0101】
ステップS1の処理が実行されると、係数決定部101は、上記した第1処理において当該係数決定部101内部に保持されている係数r1,…,rk-1及びP1,…,Pnを読み出す(ステップS12)。
【0102】
次に、シェア生成部102は、ステップS2において読み出された係数に基づいて、推論データZからn個の計算装置20-1~20-nの各々に対応するn個のシェアを生成する(ステップS13)。なお、ステップS13の処理は上記した
図5に示すステップS13の処理に相当する処理であるので、ここではその詳しい説明を省略する。
【0103】
なお、ステップS13の処理が実行されることによって推論データZのシェアZ(P1),…,Z(Pn)が生成されるものとすると、推論データZのシェアZ(P1)は、当該推論データZを構成するサブデータz1,…,zdの各々のシェアz1(P1),…,zd(P1)を含む。他のシェアZ(P2),…,Z(Pn)についても同様である。
【0104】
次に、上記した
図5に示すステップS4及びS5の処理に相当するステップS14及びS15の処理が実行される。なお、ステップS14及びS15の処理は、
図5において説明した学習データX
1,…,X
mの各々のシェアを推論データZのシェアとした点以外は
図5に示すステップS4及びS5の処理と同様であるので、ここではその詳しい説明を省略する。
【0105】
以下、計算装置20-1~20-nのうちの計算装置20-tの処理について説明する。ステップS15において送信された計算装置20-tに対応する推論データZのシェア(以下、シェアZ(Pt)と表記)は、当該計算装置20-tにおいて受信され、推論データ格納部204に格納される。
【0106】
次に、推論処理部205は、学習モデル格納部に格納されている学習モデル(計算装置20-tにおいて学習処理が実行された学習モデル)を用いて、推論データZのシェアZ(Pt)に対する推論処理を実行する(ステップS16)。
【0107】
この場合、推論データZのシェアZ(Pt)はd個のサブデータのシェア(以下、z1(Pt),…,zd(Pt)と表記)を含み、推論処理部205は、当該d個のサブデータのシェアz1(Pt),…,zd(Pt)をオートエンコーダ(学習モデル)の入力レイヤに含まれるd個の入力ノードに入力することによって推論(処理)を実行する。これによれば、推論処理部205は、オートエンコーダ(の出力レイヤに含まれるd個の出力ノード)から出力される出力データを推論結果データとして取得することができる。
【0108】
なお、ステップS16の処理が実行されることによって取得される推論結果データをdec´(Pt)と表すものとすると、当該推論結果データdec´(Pt)は、d個のサブデータdec1´(Pt),…,decd´(Pt)を含む。
【0109】
ステップS16の処理が実行されると、推論結果データdec´(Pt)は、推論結果格納部206に格納される(ステップS17)。
【0110】
ここで、計算装置20-1~20-nの各々において実行された推論の結果を復号するためには、上記したようにk個の推論結果データが必要である。このため、秘匿演算管理装置10は、k個の推論結果データを取得(収集)するために計算装置20-1~20-nのうちのk個の計算装置を選択する。この場合、
図7には示されていないが、秘匿演算管理装置10は、選択されたk個の計算装置の各々に対して推論結果データの送信を指示する。
【0111】
秘匿演算管理装置10によって選択されたk個の計算装置に計算装置20-tが含まれている場合、当該計算装置20-tは、秘匿演算管理装置10からの指示に基づいて、推論結果格納部206に格納された推論結果データdec´(Pt)を当該秘匿演算管理装置10に送信する(ステップS18)。なお、上記した秘匿演算管理装置10によって選択されたk個の計算装置のうちの計算装置20-t以外の計算装置も同様に推論結果データを秘匿演算管理装置10に送信する。
【0112】
以下の説明においては、便宜的に、k個の計算装置として計算装置20-1~20-kの各々から推論結果データが送信されたものとする。ここでは計算装置20-1~20-kから推論結果データが送信されたものとして説明するが、k個の計算装置は任意に選択され得る。以下、計算装置20-1~20-kの各々から送信されたk個の推論結果データを、推論結果データdec´(P1),…,dec´(Pk)と称する。
【0113】
秘匿演算管理装置10は、上記したようにk個の計算装置から送信されたk個の推論結果データdec´(P1),…,dec´(Pk)を受信する。
【0114】
ここで、秘匿演算管理装置10において受信されたk個の推論結果データdec´(P1),…,dec´(Pk)の各々は、学習モデルを用いた推論データZのシェア(規格化された推論データZのシェア)に基づく推論(演算)の結果であるため、0から1の実数である。よって、秘匿演算管理装置10において受信されたk個の推論結果データdec´(P1),…,dec´(Pk)に対して秘匿演算における復号処理を実行するためには、当該k個の推論結果データdec´(P1),…,dec´(Pk)の各々を整数に変換する必要がある。
【0115】
この場合、推論結果復号部103は、上記した式(5)を用いて、k個の推論結果データdec´(P1),…,dec´(Pk)の各々を整数に変換する(ステップS19)。
【0116】
ここで、推論結果データdec´(Pt)(ここでは、1≦t≦k)を整数に変換する処理について説明する。上記したように推論結果データdec´(Pt)はd個のサブデータdec1´(Pt),…,decd´(Pt)を含むため、当該サブデータ毎に整数変換が実施される。
【0117】
この場合、例えばサブデータdec1´(Pt)を上記した式(5)の左辺に入力し、右辺のxを求めるような計算を行う。このように計算されたxが整数に変換されたサブデータdec1´(Pt)に相当する。なお、サブデータdec1´(Pt)を整数に変換する場合には、上記した推論データZのシェアZ(Pt)に含まれるサブデータz1のシェアz1(Pt)が規格化された際に用いられたmmax及びmmin(つまり、サブデータdec1´(Pt)に対応するmmax及びmmin)が用いられる。他のサブデータdec2´(Pt),…,decd´(Pt)を整数に変換する場合についても同様に、サブデータdec2´(Pt),…,decd´(Pt)の各々に対応するmmax及びmminが用いられる。
【0118】
なお、上記したように整数に変換された結果(つまり、式(5)により計算されたx)が整数でない場合は、小数点以下を四捨五入するものとする。
【0119】
このような処理が推論結果データdec´(P1),…,dec´(Pk)の各々に対して実行されることにより、当該推論結果データdec´(P1),…,dec´(Pk)(のサブデータ)の各々を整数に変換することができる。
【0120】
ステップS19の処理が実行されると、推論結果復号部103は、当該ステップS19において整数に変換されたk個の推論結果データdec´(P1),…,dec´(Pk)を復号する(ステップS20)。
【0121】
なお、k個の推論結果データを復号することによって得られる復号データを復号データdecとした場合、ステップS20においては、上記したLagrange補間法を用い、上記したデータaを復号データdec、[a]t1,…,[a]tkを推論結果データdec´(P1),…,dec´(Pk)とした式(2)により、当該復号データdecを復元することができる。
【0122】
なお、推論結果データdec´(P1),…,dec´(Pk)の各々は上記したようにd個のサブデータを含むところ、復号データdecは、上記した推論データZと同様に、d個のサブデータdec1,…,decdを含む。
【0123】
ここで、本実施形態においては、k個の推論結果データdec´(P1),…,dec´(Pk)を送信した計算装置20-1~20-kの各々が異なるシェアZ(P1),…,Z(Pk)に基づく推論を実行しているため、当該計算装置20-1~20-kの各々において得られた推論結果データdec´(P1),…,dec´(Pk)を復号した結果として得られる復号データdec(に含まれるサブデータ)には誤差が生じている可能性がある。特にゼロ近傍の値が解となる復号値に負の誤差が生じた場合、体Qに基づく秘匿演算を実施していることから、当該復号データdecに含まれるサブデータ(の値)は体Qの最大値の近傍(つまり、サブデータは体Qの最大値と概ね同様の値)となる。この場合、例えば上記した復号データdecに含まれるd個のサブデータのうちの1つが体Qの最大値の近傍であるものとすると、当該サブデータが他のサブデータに与える影響が大きくなり、適切な検知結果を得ることができない可能性がある。
【0124】
そこで、本実施形態において、復号データ補正部104は、上記した復号データdecに含まれるサブデータdec1,…,decdの各々が体Qの最大値の近傍である(つまり、復号データ≒Qである)か否かを判定する(ステップS21)。なお、サブデータdec1,…,decdの各々が体Qの最大値の近傍であると判定するための判定ライン(閾値)については、予め設定されているものとする。これによれば、サブデータdec1,…,decdと体Qの最大値との差分が閾値未満であれば、当該サブデータが体Qの最大値との近傍であると判定することができる。
【0125】
ここで、復号データdecに含まれるサブデータdec1が体Qの最大値の近傍であると判定された場合を想定する(ステップS21のYES)。この場合、復号データ補正部104は、復号データdecに含まれるサブデータdec1を補正する(ステップS22)。
【0126】
なお、上記したように解であるゼロ近傍の値に負の誤差が生じることによって当該解が負の値となるような場合、上記した推論結果復号部103による復号結果として得られるサブデータdec1(の値)は、体Qの最大値-α´(α´は、整数)のような値(つまり、体Qの最大値の近傍)となる。
【0127】
このため、ステップS22においては、サブデータdec1を、「体Qの最大値-サブデータdec1」のように補正する。上記したようにサブデータdec1が体Qの最大値-α´のような値である場合、当該サブデータdec1を「体Qの最大値-サブデータdec1」のように補正(変換)することにより、当該サブデータdec1を実質的にα´として扱うことができ、上記したサブデータdec1が体Qの近傍となった場合に生じる影響を緩和することができる。
【0128】
上記したようにステップS22の処理が実行されることによって例えばサブデータdec1が補正された場合、ステップS20の処理が実行されることによって得られた復号データdecに含まれるサブデータdec1を、当該補正されたサブデータdec1に置き換えることにより、復号データdec(のデータ列)を再構成する(ステップS23)。
【0129】
ここではサブデータdec1を補正する場合について説明したが、他のサブデータdec2,…,decdが体Qの最大値の近傍である場合については、当該サブデータも同様に補正される。
【0130】
なお、復号データdecに含まれる全てのサブデータdec1,…,decdが体Qの最大値の近傍でないと判定された場合(ステップS21のNO)、ステップS22及びS23の処理は実行されない。
【0131】
以下の説明においては、ステップS23において再構成された復号データdec、及びステップS22及びS23の処理が実行されない場合におけるステップS20において復号された結果として得られる復号データdecを、便宜的に、単に復号データdecと称する。
【0132】
次に、判定処理部105は、例えば機器の異常を検知するための閾値(以下、判定閾値Lthと表記)を用いて、推論データと復号データとの差分に基づく誤差値(再構成誤差)から当該機器が異常であるか否かを判定する判定処理を実行する(ステップS24)。
【0133】
ここで、上記したように計算装置20-1~20-nにおいて保持されている学習モデル(学習モデル格納部203に格納されている学習モデル)がオートエンコーダであるものとすると、当該オートエンコーダは、例えば機器が正常な状態にある場合には、入力されたデータと同一のデータを出力するように学習されている。換言すれば、オートエンコーダは、例えば機器が異常な状態にある場合には、入力されたデータと異なるデータを出力する。
【0134】
このため、ステップS24においては、推論データと復号データとの誤差値が判定閾値Lth以上である(つまり、乖離度が大きい)場合には機器が異常な状態にあると判定するような異常検知を実施するものとする。
【0135】
なお、上記したステップS24においては、上記した式(5)により規格化された推論データZ(秘密分散が実施される前の推論データZ)と復号データdecとの差分和を評価指標(つまり、誤差値)として用いる。差分和とは各ノードに対応するサブデータの差分の和であり、当該差分和zdは、以下の式(6)により計算される。
【数6】
【0136】
上記した式(6)におけるZiはd個のノードのうちのノードiに対応する推論データZの規格化されたサブデータであり、deciは当該ノードiに対応する復号データdecの規格化されたサブデータである。
【0137】
なお、
図7においては1つの推論データZが秘匿演算管理装置10に入力されるものとして説明したが、当該秘匿演算管理装置10には複数の推論データZ(つまり、推論データ群)が入力されてもよい。
【0138】
ここで、上記したステップS24においては判定閾値Lthが用いられるが、以下、
図8のシーケンスチャートを参照して、当該判定閾値Lthを決定する際の処理手順の一例について説明する。なお、
図8においては、上記した
図7と同様に、便宜的に、計算装置20-1~20-nのうちの1つの計算装置20-tのみが示されている。
【0139】
この場合、秘匿演算管理装置10は、上記した学習データとは異なる検証用データを入力する(ステップS21)。検証用データは、上記した学習データ(群)Xと同様に正常な状態にある機器に設置されたセンサから得られるセンサデータである。なお、検証用データは学習データXとは異なるデータであることが望ましいが、十分な数のデータを用意することができない場合には、学習データXを検証用データとして用いてもよい。
【0140】
ステップS1の処理が実行されると、上記した
図7に示すステップS12~S23の処理に相当するステップS32~S43が実行される。なお、ステップS32~S43の処理は
図7において説明した推論データZを検証用データとした点以外は当該
図7において説明した通りであるため、ここではその詳しい説明を省略する。
【0141】
次に、秘匿演算管理装置10に含まれる判定閾値決定部106は、検証用データと復号データとの差分に基づく誤差値(再構成誤差)から判定閾値Lthを決定する(ステップS44)。
【0142】
この場合、上記したように検証用データは正常な状態にある機器に設置されたセンサから得られたセンサデータに相当するため、当該検証用データ(及び復号データ)に基づいて上記した
図7に示すステップS24の処理が実行された場合には、機器が正常な状態にあるという判定結果が得られることが好ましい。
【0143】
したがって、ステップS44においては、検証用データと復号データとの誤差値に基づいて機器が正常な状態にあると判定されるような値(例えば、当該誤差値よりも大きな値)を判定閾値Lthとして決定する。
【0144】
ステップS44において決定された判定閾値Lthは、例えば判定処理部105内に保持され、上記した
図7に示すステップS24において用いられる。
【0145】
ここでは、説明の便宜上、1つの検証用データに基づいて判定閾値Lthが決定されるものとして説明したが、複数の検証用データ(検証用データ群)に基づいて判定閾値Lthを決定することにより、より精度の高い判定閾値Lthを決定することが可能となる。この場合、例えば検証用データと復号データとの誤差値に基づく判定結果の正解率が最も高くなる値を判定閾値Lthとして決定することが好ましい。
【0146】
上記したように本実施形態においては、秘匿演算管理装置10に入力された学習データ(第1データ)Xに基づいて、X∈Qとなる体(整数環)Qから選択される係数を決定し、当該学習データXに対して秘密分散を実施し、当該決定された係数に基づいて当該学習データXからn個の計算装置20-1~20-nの各々に対応するn個のシェア(第1断片データ)を生成し、当該n個の計算装置20-1~20-nの各々が当該計算装置に対応する学習データXのシェアを当該計算装置が有する学習モデルに学習させる。また、本実施形態においては、秘匿演算管理装置10に入力された推論データ(第2データ)Zに対して秘密分散を実施し、上記したように決定された係数に基づいて当該推論データZからn個の計算装置20-1~20-nの各々に対応するn個のシェア(第2断片データ)を生成し、当該n個の計算装置20-1~20-nの各々が当該計算装置が有する学習モデルを用いて当該計算装置に対応する推論データZのシェアに基づく推論(演算)を実行し、当該n個の計算装置20-1~20-nの各々のうちのk個の計算装置20-1~20-kの各々によって実行された推論の結果として得られる推論結果データ(演算結果データ)を復号する。なお、本実施形態における係数は、n個の学習データXのシェアの各々が体Qの最大値未満となるように決定される。
【0147】
本実施形態においては、このような構成により、秘匿演算におけるデータの復号精度を向上させることができる。具体的には、上記したように秘匿演算における体Q(有限体)を超える推定結果データが得られた場合には当該推定結果データを正しく復号することができないが、本実施形態においては、シェアを生成する際の係数に制限をかけることで当該推定結果データが体Qを超えることを抑制し、当該推定結果データを正しく復号することができない事態を回避することができる。
【0148】
なお、本実施形態においては、k-1個のランダムな体Qの元であるr1,…,rk-1(第1係数)と、n個の計算装置20-1~20-nの各々に対応するn個のランダムな体Qの元であるP1,…,Pn(第2係数)とを係数として決定し、上記した秘匿されるデータaを学習データXとした上記した式(1)(つまり、学習データXを切片とするk-1次多項式)に基づいてn個の学習データXのシェアW(P1),…,W(Pn)を生成する。この場合、上記したr1,…,rk-1及びP1,…,Pnは、n個の学習データXのシェアW(P1),…,W(Pn)のうちの最大値が体Qの最大値未満となるように決定される。
【0149】
また、本実施形態においては、k個の推論結果データを復号することによって得られる復号データdecが体Qの最大値の近傍となる場合、当該体Qの最大値に基づいて当該復号データdecを補正する構成を更に有する。この場合、復号データdec(のサブデータ)は、体Qの最大値から当該復号データdecを減算した値に補正される。
【0150】
本実施形態においては、このような構成により、より高い精度の復号データdecを得ることができるため、推論データZ及び復号データdecを用いた判定処理(例えば、機器の異常を検知する処理等)の精度を向上させることが可能となる。
【0151】
更に、本実施形態において、n個の学習データXのシェア及びn個の推論データZのシェアは、例えばMax-Min Normalization処理によって規格化されてn個の計算装置20-1~20-nに送信される。
【0152】
ここで、一般的に、秘匿演算(秘密分散法)においてはシェアを生成するために用いられる係数に制限がない方が高い安全性を実現することができるが、本実施形態においては、当該係数に制限をかける構成であるため、安全性が低下することが懸念される。しかしながら、本実施形態においては、係数に制限をかけることによって生じ得る安全性の低下を、上記したように計算装置20-1~20-nに送信する前にシェアを規格化することにより緩和することができる。
【0153】
また、本実施形態においてk個の推論結果データがk個の計算装置から受信された場合、当該k個の推論結果データは整数変換された後に復号される。このような構成によれば、秘密演算における復号処理を適切に実行することができる。
【0154】
また、本実施形態においては、n個の計算装置20-1及び20-nの各々が有する学習モデルが当該学習モデルに入力されるデータと当該学習モデルから出力されるデータとが同一となるように学習したオートエンコーダであるものとして説明したが、学習モデルは他のアルゴリズムによって生成されるものであってもよい。
【0155】
なお、本実施形態においては秘匿演算システム1が例えば工場の機器の異常を検知するようなサービスを提供する(つまり、機器の異常検知を実施する)ような場合について主に説明したが、当該秘匿演算システム1は、他のサービスを提供するものであってもよい。
【0156】
すなわち、本実施形態においては秘匿演算管理装置10が学習データX及び推論データZとして機器に設置されたセンサから得られたセンサデータを入力するものとして説明したが、当該学習データX及び推論データZは、上記した秘匿演算システム1が提供するサービスに応じて様々な種類のデータを用いることができる。
【0157】
(第2実施形態)
次に、第2実施形態について説明する。なお、本実施形態に係る秘匿演算システムのネットワーク構成、当該秘匿演算システムに備えられる秘匿演算管理装置及び複数の計算装置の各々のハードウェア構成及び機能構成については、前述した第1実施形態と同様であるため、ここではその詳しい説明を省略し、適宜、
図1~
図4を用いて説明する。また、本実施形態においては、前述した第1実施形態と異なる点について主に説明する。
【0158】
本実施形態においては、秘匿演算管理装置10に推論データが入力される際の処理(第2処理)が前述した第1実施形態とは異なる。
【0159】
以下、
図9のシーケンスチャートを参照して、本実施形態における第2処理の処理手順の一例について説明する。なお、
図9においては、前述した
図7と同様に、便宜的に、計算装置20-1~20-nのうちの1つの計算装置20-tのみが示されている。
【0160】
本実施形態における第2処理においては、前述した
図7に示すステップS11~S20の処理に相当するステップS51~S60の処理が実行される。なお、ステップS57の処理が実行された場合、前述した第1実施形態において説明したように秘匿演算管理装置10はk個の推論結果データを取得するためにk個の計算装置を選択するが、以下の説明においては、ここで選択されたk個の計算装置が計算装置20-1~20-kであるものとする。
【0161】
ここで、前述した第1実施形態においては復号データdecに含まれるd個のサブデータdec1,…,decdのうちの体Qの最大値の近傍であるサブデータを補正するものとして説明したが、当該体Qの最大値の近傍となるサブデータの数が多い場合には、多くの補正されたサブデータから再構成された復号データdecに基づいて判定処理が実行されることになり、高い精度の判定結果を得る(例えば、高い精度の異常検知結果を提供する)ことができない可能性がある。
【0162】
このため、本実施形態においては、ステップS60においてk個の推論結果データを復号することによって得られた復号データdecに含まれるd個のサブデータに対する体Qの最大値の近傍となるサブデータ(の数)の割合が閾値Pth以上であるか否かが判定される(ステップS61)。
【0163】
上記した割合が閾値Pth以上であると判定された場合(ステップS61のYES)、ステップS58に戻って処理が繰り返される。この場合、秘匿演算管理装置10は、上記したk個の計算装置20-1~20-kとは異なる組み合わせのk個の計算装置を選択し、当該選択されたk個の計算装置からk個の推論結果データを再度受信する。以下、再度受信されたk個の推論結果データに基づいて、ステップS59以降の処理が実行される。
【0164】
なお、k個の計算装置20-1~20-kとは異なる組み合わせのk個の計算装置とは、当該計算装置20-1~20-kのうちの少なくとも1つの計算装置が異なるk個の計算装置であればよい。
【0165】
また、n個の計算装置20-1~20-nからk個の計算装置を選択する場合の組み合わせの数はnCkであるが、当該k個の計算装置(の組み合わせ)を選択する順番(アルゴリズム)は任意でよい。
【0166】
上記した割合が閾値Pth以上でないと判定された場合(ステップS61のNO)、前述した
図7に示すステップS21~S24の処理に相当するステップS62~S65の処理が実行される。
【0167】
上記したように本実施形態においては、復号データdecがd個のサブデータ(要素)を含み、当該d個のサブデータに対する体(整数環)Qの最大値の近傍となるサブデータ(以下、補正が必要なサブデータと表記)の割合が閾値Pth(予め定められた値)以上である場合、異なる組み合わせのk個の計算装置から推論結果データを再度受信し、復号する。
【0168】
ここで、n個の計算装置20-1~20-nの各々において保持される学習モデルは、初期構成は同一であるものの、異なるシェアを学習することにより得られた学習モデルであることから、k個の計算装置の各々から送信される推論結果データを復号することによって得られた復号データに対して生じる誤差は、当該k個の計算装置の組み合わせによって異なると考えられる。
【0169】
このため、本実施形態においては、上記したようにd個のサブデータに対する補正が必要なサブデータの割合が閾値Pth以上である場合に、異なる組み合わせのk個の計算装置から推論結果データを再度受信することで、より誤差の影響が少ない復号データを得ることが可能であるため、復号データの精度を向上させることができる。
【0170】
なお、例えば複数の推論データZ(つまり、推論データ群)が秘匿演算管理装置10に入力されるような構成の場合には
図9に示すステップS60の処理が実行されることによって複数の推論データZに対応する複数の復号データdecが得られるが、この場合には、当該複数の復号データdecの各々に含まれるサブデータ全体に対する補正が必要なサブデータの割合が閾値Pth以上である場合に、異なる組み合わせのk個の計算装置から推論結果データを受信すればよい。
【0171】
また、本実施形態においては、復号データdecに含まれるd個のサブデータに対する補正が必要なサブデータの割合が閾値Pth以上である場合にk個の計算装置から推論結果データを再度受信するものとして説明したが、当該割合が閾値Pth以上である場合には、
図9に示すステップS52において読み出された係数を調整する構成としてもよい。
【0172】
具体的には、
図9に示すステップS52において読み出された係数r
1,…,r
k-1及びP
1,…,P
nは前述した第1実施形態において説明したように学習データ(群)Xのシェア(サブデータのシェア)の各々が体Qの最大値未満となるように決定されているが、復号データdecに含まれるd個のサブデータに対する補正が必要なサブデータの割合が閾値Pth以上である場合には、例えば学習データXのシェア(サブデータのシェア)の各々が体Qの最大値未満となる範囲内で、かつ、上記したステップS52において読み出された係数r
1,…,r
k-1とは異なる係数r
1´,…,r
k-1´を再度決定するものとする。
【0173】
この場合、再度決定されたr1´,…,rk-1´及びステップS52において読み出されたP1,…,Pnに基づいて、ステップS53以降の処理が実行されればよい。
【0174】
ここでは係数r1,…,rk-1が調整されるものとして説明したが、P1,…,Pnが調整される構成であってもよいし、r1,…,rk-1及びP1,…,Pnの両方が調整される構成であってもよい。
【0175】
以上述べた少なくとも1つの実施形態によれば、秘匿演算が行われた結果に対する復号精度を向上させることが可能な秘匿演算方法、秘匿演算システム及び秘匿演算装置を提供することができる。
【0176】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0177】
1…秘匿演算システム、10…秘匿演算管理装置、20-1~20-n…計算装置、30…ネットワーク、11…CPU、12…不揮発性メモリ、13…RAM、14…通信デバイス、101…係数決定部、102…シェア生成部、103…推論結果復号部、104…復号データ補正部、105…判定処理部、106…判定閾値決定部、201…学習データ格納部、202…学習処理部、203…学習モデル格納部、204…推論データ格納部、205…推論処理部、206…推論結果格納部。