(57)【要約】      （修正有）【課題】準同型暗号の暗号化データを用いてより広範な処理を実行する処理装置、処理方法、処理プログラム及び暗号処理システムを提供する。【解決手段】準同型暗号による暗号化データを入力として、秘匿状態を維持した状態で所定の処理を実行する処理装置は、暗号化データに所定の処理を実行する推論部２１を備える。推論部２１は、１以上の処理部２３を有し、処理部２３は、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部２３−１である。乗算対応処理部２３−１は、所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、入力される第１暗号化データに対して平文データの乗数のうちの第１乗数成分以外の第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、第１演算結果と第２演算結果とを対応付けて出力する。【選択図】図３
2019113777.tif 000002
【特許請求の範囲】
【請求項１】
準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置であって、
前記暗号化データを受け付ける入力部と、
前記暗号化データを用いて前記所定の処理を実行する処理実行部と、を備え、
前記処理実行部は、１以上の処理部を有し、
前記処理部の少なくとも１つは、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部であり、
前記乗算対応処理部は、前記所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、前記所定の乗数のうちの前記第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して前記平文データの前記第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、前記第１演算結果と前記第２演算結果とを対応付けて出力する
処理装置。
【請求項２】
前記乗算対応処理部は、前段から前記第１演算結果が入力されている場合には、入力された前記第１演算結果に対して前記第１乗数成分を乗算して出力する前記第１演算結果を生成する
請求項１に記載の処理装置。
【請求項３】
前記乗算対応処理部は、複数の第１暗号化データのそれぞれに対して、所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部であり、
前記乗算対応処理部は、前段から入力される複数の第１暗号化データに対応する複数の第２演算結果に対して、１つの第１演算結果を対応付けて出力する
請求項１又は請求項２に記載の処理装置。
【請求項４】
前記第１乗数成分は、前記所定の乗数のうち、除数として扱われる成分である
請求項１から請求項３のいずれか一項に記載の処理装置。
【請求項５】
前記処理部の少なくとも１つは、複数の第１暗号化データに対して、平文データの加算に対応する演算を実行する際に、一の第１暗号化データに対応付けられている第１演算結果と、他の第１暗号化データに対応付けられている第１演算結果とを同一の値とするために、少なくとも一の第２暗号化データを調整すべき平文データの演算における乗数を特定し、特定した乗数による平文データに対する乗算に対応する演算を、対応する第２演算結果に実行し、演算後の複数の第２演算結果に対して、平文データの加算に対応する演算を実行し、この演算の結果を出力するとともに、前記同一の値を前記第１演算結果として出力する
請求項１から４のいずれか一項に記載の処理装置。
【請求項６】
準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置による処理方法であって、
平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行する際に、前記所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、前記所定の乗数のうちの前記第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して前記平文データの前記第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、前記第１演算結果と前記第２演算結果とを対応付けて出力する
処理方法。
【請求項７】
準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置を構成するコンピュータに実行させる処理プログラムであって、
前記処理プログラムは、
前記コンピュータに、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行させる際に、前記所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成させるとともに、前記所定の乗数のうちの前記第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して前記平文データの前記第２乗数成分の乗算に対応する暗号文空間上の演算を実行させて第２演算結果を生成させ、前記第１演算結果と前記第２演算結果とを対応付けて出力させる
処理プログラム。
【請求項８】
準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置と、前記処理装置による処理結果を入力して、平文データに対応する処理結果を生成する処理を実行する結果生成装置とを備える暗号処理システムであって、
前記暗号化データを受け付ける入力部と、
前記暗号化データを用いて前記所定の処理を実行する処理実行部と、を備え、
前記処理実行部は、１以上の処理部を有し、
前記処理部の少なくとも１つは、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部であり、
前記乗算対応処理部は、前記所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、前記所定の乗数のうちの前記第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して前記平文データの前記第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、前記第１演算結果と前記第２演算結果とを対応付けて出力し、
前記結果生成装置は、
前記処理装置から前記第１処理結果と、前記第２処理結果とを受信する処理結果受信部と、
前記第２処理結果を復号する復号部と、
前記復号部で復号された平文データに対して、前記第１処理結果を反映させる反映処理を実行する反映処理部と
を備える暗号処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、準同型暗号を用いて情報を処理する技術に関する。
【背景技術】
【０００２】
従来、機械学習のアーキテクチャの１つであるニューラルネットワークモデルを用いることにより、画像、文字、及び音声などの認識処理（推論処理）が行われている。
【０００３】
ニューラルネットワークモデルにおける学習済みの係数データは、規模が大きく、クライアント装置のみで処理を行うには負荷が大きかったり、処理の実行が困難であったりという問題がある。これに対して、サーバ・クライアントモデルを用いることにより、大規模な演算が可能なクラウド資源をニューラルネットワークモデルによる推論処理等に利用したいという要求が存在している。
【０００４】
サーバ・クライアントモデルを用いると、データをクライアントからサーバに送信することになるため、個人情報等の機密性の高い情報が流出してしまう虞がある。
【０００５】
上述の問題に対処するため、サーバに対して暗号化したデータ(暗号化データ)を送信し、暗号化データのまま演算を行うことができる準同型暗号を用いてサーバ側で暗号化データを処理することが考えられる。
【０００６】
しかし、ニューラルネットワークモデルで使用されるシグモイド関数や、ＲｅＬＵ関数（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ  Ｒｅｃｔｉｆｉｅｒ：正規化線形関数）等の一般的な活性化関数は、既に知られている準同型暗号で行える演算の範疇を超えるため、準同型暗号による暗号化データに対する演算が不可能である。
【０００７】
例えば、特許文献１には、活性化関数として近似多項式を用いるニューラルネットワークに関する技術が開示されている。
【０００８】
また、非特許文献１には、ニューラルネットワークモデルにおける活性化関数の演算時に都度クライアントに問合せることにより、準同型暗号を用いた処理を実現する技術が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願公開第２０１６／０３５０６４８号明細書
【非特許文献】
【００１０】
【非特許文献１】C.Orlandi, A.Piva, and M.Barni Research Article Oblivious Neural Network Computing via Homomorphic Encryption, インターネット<http://clem.dii.unisi.it/~vipp/files/publications/S1687416107373439.pdf>
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ニューラルネットワークモデルにおいて、暗号化データのままで処理するようにすることは、不可能であったり、処理負荷が多大となり困難であったりする。例えば、非特許文献１の技術では、活性化関数の演算の都度、クライアントとのデータのやり取りが発生するとともに、クライアント側での処理が発生するために、通信量が多くなるとともに、処理時間が長期化してしまう。
【００１２】
また、より多くの演算に対応することのできる準同型暗号である完全準同型暗号や、ＳｏｍｅＷｈａｔ準同型暗号等を用いることも考えられるが、このような暗号による暗号化データは、データ量が多くなるので、処理負荷が多大となるという問題がある。
【００１３】
処理負荷を抑える点を考慮すると、加法準同型暗号を用いて処理をすることが好ましいが、加法準同型暗号を用いる場合には、利用できる演算が限定されており、実行できる処理が限られてしまう。例えば、加法準同型暗号を用いると、整数以外の乗算（例えば、１未満の数の乗算（除算に相当）も含む）を行う処理が実行できない。
【００１４】
また、加法準同型暗号を用いて処理を行う場合には、ニューラルネットワークモデルを使用した処理に限らず、ニューラルネットワークモデルを使用しない処理においても、同様に、実行できる処理が限られてしまうという問題が生じる。
【００１５】
本発明は、上記事情に鑑みなされたものであり、その目的は、準同型暗号による暗号化データを用いてより広範な処理を実行することのできる技術を提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、第１の観点に係る処理装置は、準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置であって、暗号化データを受け付ける入力部と、暗号化データを用いて前記所定の処理を実行する処理実行部と、を備え、処理実行部は、１以上の処理部を有し、処理部の少なくとも１つは、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部であり、乗算対応処理部は、乗算対応処理部は、所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、所定の乗数のうちの第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して平文データの第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、第１演算結果と第２演算結果とを対応付けて出力する。
【００１７】
上記処理装置において、乗算対応処理部は、前段から第１演算結果が入力されている場合には、入力された第１演算結果に対して第１乗数成分を積算して出力する第１演算結果を生成してもよい。
【００１８】
また、上記処理装置において、乗算対応処理部は、複数の第１暗号化データのそれぞれに対して、所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部であり、乗算対応処理部は、前段から入力される複数の第１暗号化データに対応する複数の第２演算結果に対して、１つの第１演算結果を対応付けて出力するようにしてもよい。
【００１９】
また、上記処理装置において、第１乗数成分は、所定の乗数のうち、除数として扱われる成分であってもよい。
【００２０】
また、上記処理装置において、処理部の少なくとも１つは、複数の第１暗号化データに対して、平文データの加算に対応する演算を実行する際に、一の第１暗号化データに対応付けられている第１演算結果と、他の第１暗号化データに対応付けられている第１演算結果とを同一の値とするために少なくとも一の第２暗号化データを調整すべき平文データの演算における乗数を特定し、特定した乗数による平文データに対する乗算に対応する演算を、対応する第２演算結果に実行し、演算後の複数の第２演算結果に対して、平文データの加算に対応する演算を実行し、この演算の結果を出力するとともに、前記同一の値を前記第１演算結果として出力してもよい。
【００２１】
上記目的を達成するため、第２の観点に係る処理方法は、準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置による処理方法であって、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行する際に、所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、所定の乗数のうちの第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して平文データの第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、第１演算結果と第２演算結果とを対応付けて出力する
【００２２】
上記目的を達成するため、第３の観点に係る処理プログラムは、準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置を構成するコンピュータに実行させる処理プログラムであって、コンピュータに、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行させる際に、所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成させるとともに、前記所定の乗数のうちの前記第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して前記平文データの前記第２乗数成分の乗算に対応する暗号文空間上の演算を実行させて第２演算結果を生成させ、前記第１演算結果と前記第２演算結果とを対応付けて出力させる。
【００２３】
上記目的を達成するため、第４の観点に係る暗号処理システムは、準同型暗号による暗号化データを入力として、暗号化による秘匿状態を維持した状態で所定の処理を実行するための処理装置と、処理装置による処理結果を入力して、平文データに対応する処理結果を生成する処理を実行する結果生成装置とを備える暗号処理システムであって、暗号化データを受け付ける入力部と、暗号化データを用いて所定の処理を実行する処理実行部と、を備え、処理実行部は、１以上の処理部を有し、処理部の少なくとも１つは、平文データに対して所定の乗数により乗算を行う処理に対応する演算を実行するための乗算対応処理部であり、乗算対応処理部は、乗算対応処理部は、所定の乗数のうちの暗号化データによる演算実行対象としない第１乗数成分に基づいて第１演算結果を生成するとともに、所定の乗数のうちの前記第１乗数成分以外の第２乗数成分について、入力される第１暗号化データに対して平文データの第２乗数成分の乗算に対応する暗号文空間上の演算を実行して第２演算結果を生成し、第１演算結果と第２演算結果とを対応付けて出力し、結果生成装置は、処理装置から第１処理結果と、第２処理結果とを受信する処理結果受信部と、第２処理結果を復号する復号部と、復号部で復号された平文データに対して、第１処理結果を反映させる反映処理を実行する反映処理部とを備える。
【発明の効果】
【００２４】
本発明によれば、準同型暗号による暗号化データを用いてより広範な処理を実行することができるようになる。
【図面の簡単な説明】
【００２５】
【図１】図１は、一実施形態に係る処理システムの全体構成図である。
【図２】図２は、一実施形態に係る学習装置の機能構成図である。
【図３】図３は、一実施形態に係る推論装置の機能構成図である。
【図４】図４は、一実施形態に係るクライアント装置の機能構成図である
【図５】図５は、一実施形態に係る処理システムの一例の機能構成図である。
【図６】図６は、一実施形態に係る処理システムの動作を示すシーケンス図である。
【図７】図７は、一実施形態に係るコンピュータ装置の構成図である。
【図８】図８は、第１変形例に係る処理システムの機能構成図である。
【図９】図９は、第２変形例に係る処理システムの機能構成図である。
【図１０】図１０は、第３変形例に係る処理システムの機能構成図である。
【図１１】図１１は、第４変形例に係る処理システムの学習装置の機能構成図である。
【図１２】図１２は、第４変形例に係る処理システムの推論装置及びクライアント装置の機能構成図である。
【図１３】図１３は、第５変形例に係る処理システムの推論装置及びクライアント装置の機能構成図である。
【発明を実施するための形態】
【００２６】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２７】
まず、一実施形態に係る処理システムについて説明する。
【００２８】
図１は、一実施形態に係る処理システムの全体構成図である。
【００２９】
処理システム１は、暗号処理システムの一例であり、学習装置１０と、処理装置の一例としての推論装置２０と、結果生成装置の一例としてのクライアント装置３０とを備える。学習装置１０と推論装置２０とは、ネットワーク４０を介して接続されている。また、推論装置２０とクライアント装置３０とは、ネットワーク５０を介して接続されている。ネットワーク４０，５０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｏｗｏｒｋ）や、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等である。なお、図１では、ネットワーク４０と、ネットワーク５０とを別のネットワークとしているが、それらを同一のネットワークとしてもよい。
【００３０】
学習装置１０は、ニューラルネットワークモデルの学習を行う。推論装置２０は、学習装置１０によるニューラルネットワークモデルの学習結果（ニューラルネットワークモデルの係数（重みやバイアス）等の設定値）に基づいてニューラルネットワークモデルを設定し、推論処理を行う。クライアント装置３０は、例えば、ユーザにより利用される装置であり、推論装置２０に対して推論処理の対象となるデータ（対象データ）を暗号化して送信し、推論装置２０による推論処理の結果（推論結果）を受け取る。
【００３１】
図２は、一実施形態に係る学習装置の機能構成図である。
【００３２】
学習装置１０は、学習部１１と、記憶部１５と、設定値通知部１８とを備える。
【００３３】
学習部１１は、ニューラルネットワークモデル１２と、学習制御部１４とを備える。
【００３４】
ニューラルネットワークモデル１２は、例えば、所定の推論処理を実行して推論結果を出力するためのニューラルネットワークモデルである。ニューラルネットワークモデル１２は、１以上の処理レイヤー（レイヤー）により構成されている。なお、本実施形態では、ニューラルネットワークモデル１２は、設定値の学習のために使用される。図２の例では、ニューラルネットワークモデル１２は、レイヤー１〜レイヤーＮ（Ｎは、１以上の整数）により構成されている。各レイヤーにおける処理（部分処理）は、各処理部１３によって実行される。ニューラルネットワークモデル１２は、例えば、処理対象とする画像データが何を表しているか（例えば、人、犬、猫等の何が含まれているか）を推論する推論処理を実行して推論結果を出力するモデルであってもよい。ニューラルネットワークモデル１２におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【００３５】
ニューラルネットワークモデル１２のレイヤーを構成する処理部１３としては、例えば、入力された画像データに対して、複数のフィルタデータ（設定値の一例）のそれぞれを用いて畳込処理を行う畳込処理部や、入力されたデータを活性化関数により変換する処理を実行する活性化関数部や、入力データについてダウンサンプリングする処理を実行するプーリング処理部や、入力データについてのアフィン変換処理を実行するアフィン処理部や、入力データについてソフトマックス関数による処理を実行するＳｏｆｔＭａｘ処理部等がある。
【００３６】
学習制御部１４は、記憶部１５に格納されている学習用データ１６を受け付けて、ニューラルネットワークモデル１２に入力し、ニューラルネットワークモデル１２から出力される推論結果に基づいて、ニューラルネットワークモデル１２における設定値を学習する。学習制御部１４は、学習用データ１６による学習を終えた場合には、学習によって得られた設定値に関する情報を記憶部１５に格納する。
【００３７】
記憶部１５は、学習部１１のニューラルネットワークモデル１２の学習に使用する学習用データ１６と、ニューラルネットワークモデル１２の係数等の設定値に関する情報である設定値情報１７とを記憶する。なお、学習用データ１６を、学習用データ１６に対応する推論結果データと対応付けた教師データとして記憶部１５に格納するようにしてもよい。学習用データ１６は、例えば、暗号化されていないデータ（平文データ）であってもよい。設定値情報１７に含まれる設定値としては、例えば、畳込処理部で使用されるフィルタの係数や、アフィン処理部で用いられる重み等があり、これらは、例えば処理部１３の乗算において乗数として用いられる。
【００３８】
設定値通知部１８は、記憶部１５に格納されている設定値情報１７を、推論装置２０に送信する。
【００３９】
次に、推論装置２０について詳細に説明する。
【００４０】
図３は、一実施形態に係る推論装置の機能構成図である。
【００４１】
推論装置２０は、処理実行部の一例としての推論部２１と、記憶部２５と、入力部の一例としての受信部２８と、推論結果送信部２９とを備える。
【００４２】
推論部２１は、ニューラルネットワークモデル２２と、推論制御部２４とを備える。
【００４３】
ニューラルネットワークモデル２２は、例えば、加法準同型暗号（例えば、Ｐａｉｌｌｉｅｒ暗号やｌｉｆｔｅｄ−ＥｌＧａｍａｌ暗号）による暗号化が行われた暗号化データを入力として、所定の推論処理を実行して推論結果を出力するためのニューラルネットワークモデルである。ニューラルネットワークモデル２２は、１以上の処理レイヤー（レイヤー）により構成されている。なお、本実施形態では、ニューラルネットワークモデル２２は、学習装置１０のニューラルネットワークモデル１２に対応する処理を暗号化データに対して実行する構成であり、例えば、ニューラルネットワーク１２のそれぞれの処理部１３に、ニューラルネットワーク２２のそれぞれの処理部２３が対応する。図３の例では、ニューラルネットワークモデル２２は、レイヤー１〜レイヤーＮにより構成されている。各レイヤーにおける処理（部分処理）は、各処理部２３によって実行される。ニューラルネットワークモデル２２は、例えば、処理対象とする画像データが何を表しているか（例えば、人、犬、猫等の何が含まれているか）を推論する推論処理を実行して推論結果を出力するモデルであってもよい。ニューラルネットワークモデル２２におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【００４４】
ニューラルネットワークモデル２２のレイヤーを構成する処理部２３としては、入力された画像データに対して、複数のフィルタデータ（設定値の一例）のそれぞれを用いて畳込処理を行う畳込処理部や、入力されたデータを活性化関数により変換する処理を実行する活性化関数部や、入力データについてダウンサンプリングする処理を実行するプーリング処理部や、入力データについてのアフィン変換処理を実行するアフィン処理部や、入力データについてソフトマックス関数による処理を実行するＳｏｆｔＭａｘ処理部等がある。
【００４５】
推論制御部２４は、記憶部２５に格納されている設定値情報２７に基づいて、ニューラルネットワークモデル２２の設定を行う、すなわち、処理レイヤーの処理部２３における係数等を設定する。本実施形態では、例えば、処理部２３に対する乗数の設定値を、分子及び分母を整数とする仮分数の形式とした場合の分母を、暗号化データに対する演算で使用する対象（演算実行対象）としない成分（第１乗数成分）とし、分子（整数）を、演算実行対象とする成分（第２乗数成分）としている。そこで、本実施形態では、例えば、推論制御部２４は、乗数の設定値を仮分数の形式とした場合の分母を、前段からの平文データである非反映値（前段からの入力がない場合には、非反映値の初期値（例えば、１））に対して乗算して非反映値（第１演算結果）を算出するように処理部２３を設定する。また、推論制御部２４は、処理部２３における暗号文空間上での演算が、平文空間上における仮分数の分子の乗算に対応するように、処理部２３に仮分数の分子に対応する値を用いた処理を設定する。このように設定された処理部２３（乗算対応処理部）は、分母を前段からの非反映値に対して乗算して非反映値（第１演算結果）を算出する。また、処理部２３は、入力された暗号化データに対して、平文データに対する分子（整数）を乗数とする乗算の演算に対応する、暗号文空間上の演算を実行して第２演算結果を算出する。処理部２３は、非反映値（第１演算結果）と、第２演算結果とを対応付けて、後段に出力する。
【００４６】
ここで、本実施形態で使用した準同型暗号について説明する。なお、ここでは、加法準同型暗号であるＰａｉｌｌｉｅｒ暗号を例に挙げて説明する。
【００４７】
暗号に係る処理を行う場合には、以下のような各種設定を決定しておく。すなわち、暗号において使用する安全な素数ｐ及びｑを用意する。なお、素数の決定における手順や注意点は、ＲＳＡ暗号と同じでよい。また、Ｎ＝ｐ×ｑとする。また、ｋを０≦ｋ≦Ｎ−１の範囲で任意に設定する。ｇ＝１＋ｋＮとする。ここで、ｐ、ｑは、秘密鍵、ｇ、Ｎは、公開鍵、兼システムパラメータである。
【００４８】
例えば、平文データをＡ、Ｂ（０≦Ａ≦Ｎ−１、０≦Ｂ≦Ｎ−１）とすると、それぞれを暗号化した暗号化データｅＡ、ｅＢは、以下の式（１）、（２）に示すように表される。
ｅＡ＝ｇＡ×ｒ１Ｎ  ｍｏｄ  Ｎ２      ・・・（１）
ｅＢ＝ｇＢ×ｒ２Ｎ  ｍｏｄ  Ｎ２      ・・・（２）
ここで、ｒ１（０≦ｒ１≦Ｎ−１）、及びｒ２（０≦ｒ２≦Ｎ−１）は、乱数である。
【００４９】
Ｐａｉｌｌｉｅｒ暗号の暗号化データは、平文データ同士の和演算に対応する演算を、暗号化データの乗算として実行可能である。
暗号化データの乗算、すなわち、ｅＡ×ｅＢは、式（３）に示すようになる。
ｅＡ×ｅＢ＝ｇＡ×ｇＢ×ｒ１Ｎ×ｒ２Ｎ  ｍｏｄ  Ｎ２ 
＝ｇＡ＋Ｂ×ｒ１Ｎ×ｒ２Ｎ  ｍｏｄ  Ｎ２ 
＝ｅＡ＋Ｂ    ・・・・（３）
式（３）に示すｅＡ＋Ｂは、復号すると、Ａ＋Ｂとなる。したがって、暗号化データの乗算は、平文データの和演算に対応していることがわかる。
【００５０】
また、Ｐａｉｌｌｉｅｒ暗号の暗号化データは、平文データと、平文データの整数との乗算に対応する演算を実行可能である。
平文データＡと整数Ｃとの乗算であるＡ×Ｃは、ＡをＣ回加算するという和演算に対応する。したがって、この和演算のそれぞれについて、暗号化データの乗算を行うことにより、暗号化データに対して平文データＡと整数Ｃとの乗算に対応する演算を実行することができる。
具体的には、ｅＡ×ｅＡ×・・・、すなわち暗号化データの累乗（整数Ｃ乗）を行えばよいこととなり、式（４）に示すようになる。
ｅＡ×ｅＡ×・・・＝ｅＡ＋Ａ＋・・・＝ｅＡＣ      ・・・（４）
式（４）に示すｅＡＣは、復号すると、ＡＣとなり、平文データＡと整数Ｃとの乗算の結果となる。したがって、Ｐａｉｌｌｉｅｒ暗号の同じ暗号化データを累乗する演算が、平文データと、平文データの整数との乗算に対応する演算であることがわかる。
【００５１】
また、推論制御部２４は、処理対象のデータである対象データ２６をニューラルネットワークモデル２２に入力し、ニューラルネットワークモデル２２による推論処理を実行させる。本実施形態では、対象データ２６は、準同型暗号で暗号化された暗号化データである。
【００５２】
記憶部２５は、推論部２１のニューラルネットワークモデル２２で推論処理を実行させる対象の対象データ２６と、ニューラルネットワークモデル２２の係数等の設定値に関する情報である設定値情報２７とを記憶する。設定値情報２７に含まれる設定値としては、例えば、処理部２３で乗数として使用されるフィルタの係数や、重み等がある。
【００５３】
受信部２８は、学習装置１０から送信される設定値情報を受信して記憶部２５に格納する。また、受信部２８は、クライアント装置３０から送信される暗号化された対象データ２６を受信して記憶部２５に格納する。
【００５４】
推論結果送信部２９は、推論部２１のニューラルネットワークモデル２２による推論処理の結果、すなわち、最後段の処理部２３から出力される第１推論結果及び第２推論結果（推論結果（途中））をクライアント装置３０に送信する。
【００５５】
次に、クライアント装置３０について詳細に説明する。
【００５６】
図４は、一実施形態に係るクライアント装置の機能構成図である。
【００５７】
クライアント装置３０は、結果表示部３１と、送信部３２と、記憶部３３と、処理結果受信部の一例としての受信部３６と、暗号部３７と、復号部３８と、反映処理部３９と備える。
【００５８】
記憶部３３は、推論処理を実行させる平文データである対象データ３４と、推論処理の推論結果３５とを記憶する。なお、推論結果３５は、推論装置２０から推論結果が送信されて所定の処理が行われた場合に格納されるものであり、推論装置２０による推論処理が行われていない対象データ３４に対する推論結果については、存在しない。
【００５９】
暗号部３７は、記憶部３３に格納されている暗号化されていない対象データ３４を、準同型暗号（例えば、Ｐａｉｌｌｉｅｒ暗号）による暗号化を行って暗号化データとし、暗号化データを送信部３２に渡す。
【００６０】
送信部３２は、暗号部３７から渡された暗号化データを、推論処理の対象データとして推論装置２０に送信する。受信部３６は、推論装置２０から推論結果（途中）を受信して復号部３８に渡す。
【００６１】
復号部３８は、受信部３６から渡された推論結果（途中）を受け取り、推論結果(途中)に含まれる第２推論結果に対して暗号部３７の暗号方式に対応する復号化を行い、復号された第２推論結果と、第１推論結果とを反映処理部３９に渡す。
【００６２】
反映処理部３９は、復号された第２推論結果に対して、第１推論結果を反映させる反映処理を実行することにより、最終的な推論結果（推論結果（最終））を生成し、生成した推論結果(最終)を記憶部３３に格納する。本実施形態では、反映処理部３９は、復号された第２推論結果を、第１推論結果で除算することにより、推論結果（最終）を静止する。
【００６３】
結果表示部３１は、記憶部３３に格納された推論結果３５（推論結果（最終））に基づいて各種情報を表示出力する。結果表示部３１は、推論結果３５をそのまま表示してもよく、推論結果３５に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。
【００６４】
次に、処理システム１のより具体的な例を説明する。
【００６５】
図５は、一実施形態に係る処理システムの一例の機能構成図である。
【００６６】
学習装置１０は、処理レイヤー１を構成する処理部１３−１と、処理レイヤー２を構成する処理部１３−２とを有する。
【００６７】
処理部１３−１は、入力されるデータに対して、１／２倍する乗算処理を行う。なお、１／２は、学習装置１０による学習によって処理部１３−１での演算に用いる設定値として得られたものである。例えば、平文データＡが処理部１３−１に入力されると、処理部１３−１では、Ａ×（１／２）が演算されて、１／２・Ａが出力される。なお、学習された処理部１３−１用の設定値（本例では、１／２）は、設定値通知部１８により推論装置２０に送信される。
【００６８】
処理部１３−２は、入力されるデータに対して、３／４倍する乗算処理を行って出力する。なお、３／４は、学習装置１０による学習によって処理部１３−２での演算に用いる設定値として得られたものである。例えば、処理部１３−１から出力された平文データである１／２・Ａが処理部１３−２に入力されると、処理部１３−２では、１／２・Ａ×３／４が演算されて、３／８・Ａが出力される。なお、学習された処理部１３−２用の設定値（本例では、３／４）は、設定値通知部１８により推論装置２０に送信される。
【００６９】
推論装置２０は、処理レイヤー１を構成する処理部２３−１と、処理レイヤー２を構成する処理部２３−２と、推論制御部２４とを有する。
【００７０】
推論制御部２４は、学習装置１０から送信された各設定値について、乗数の設定値を仮分数の形式とした場合の分母を、前段からの平文データである非反映値（前段からの入力がない場合には、非反映値の初期値（例えば、１））に対して乗算して非反映値を算出するように処理部２３−１，２３−２を設定する。また、推論制御部２４は、処理部２３における暗号文空間上での演算が、平文空間上における仮分数の分子の乗算に対応するように、処理部２３−１，２３−２に仮分数の分子に対応する値を用いた処理を設定する。
【００７１】
本例では、処理部２３−１用の設定値は、１／２であり、処理部１３−２用の設定値は、３／４となっている。本例においては、推論調整部２４は、処理部２３−１に対して、非反映値に対する乗数（第１乗数成分）を２に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定する。また、推論調整部２４は、処理部２３−２に対して、非反映値に対する乗数を４に設定し、暗号化データの演算に使用する乗数を３に設定する。
【００７２】
処理部２３−１は、暗号化データの演算に使用する、平文データに対する乗数（同図では、１）を乗算する処理に対応する暗号文空間上の演算（対応演算）を、入力される暗号化データに対して行う。例えば、Ｐａｉｌｌｉｅｒ暗号を用いている場合には、処理部２３−１は、対応演算として、入力された暗号化データを、平文データに対する乗数だけ累乗する演算を行うことにより第２推論結果を算出する。また、処理部２３−１は、非反映値の初期値（例えば、１）に対して乗数（第１乗数成分）を乗算することにより第１推論結果を算出する。また、処理部２３−１は、第１推論結果と、第２推論結果とを後段に出力する。本例では、処理部２３−１は、入力された暗号化データｅＡ（ｅＡは、平文データＡを暗号化した値を示す）を、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出する。また、処理部２３−１は、非反映値の初期値（例えば、１）に対して乗数（本例では、２）を乗算することにより、第１推論結果として２を算出する。そして、処理部２３−１は、第１推論結果及び第２推論結果（ｅＡ，２）を出力する。ｅＡは、復号すると、平文データＡとなり、これを、第２推論結果である２で除算することにより、処理部１３−１の出力結果である１／２・Ａと同じ結果となる。
【００７３】
処理部２３−２は、暗号化データの演算に使用する、平文データに対する乗数（同図では、３）を乗算する処理に対応する暗号文空間上の演算（対応演算）を、入力される暗号化データに対して行う。例えば、Ｐａｉｌｌｉｅｒ暗号を用いている場合には、処理部２３−２は、対応演算として、入力された暗号化データを、平文データに対する乗数だけ累乗する演算を行うことにより第２推論結果を算出する。また、処理部２３−１は、前段から入力される非反映値（第２推論結果）に対して乗数（第１乗数成分）を乗算することにより第１推論結果を算出する。また、処理部２３−２は、第１推論結果と、第２推論結果とを後段に出力する。本例では、処理部２３−２は、入力された暗号化データｅＡを、設定された乗数だけ累乗（本例では、３乗）することにより、ｅ３Ａを算出する。また、処理部２３−２は、入力された非反映値（本例では、２）に対して乗数（本例では、４）を乗算することにより、第１推論結果として８を算出する。そして、処理部２３−２は、第１推論結果及び第２推論結果（ｅ３Ａ，８）を出力する。ｅ３Ａは、復号すると、平文データ３Ａとなり、これを、第２推論結果である８で除算することにより、処理部１３−２の出力結果である３／８・Ａと同じ結果となる。処理部２３−２の処理結果（推論結果（途中））は、推論結果送信部２９によりクライアント装置３０に送信される。
【００７４】
クライアント装置３０では、復号部３８は、推論装置２０から送信される推論結果（途中）を取得し、推論結果（途中）に含まれる第２推論結果に対して、暗号化データの暗号方式に対応する復号を行って、平文データの第２推論結果を得て、第１推論結果とともに反映処理部３９に渡す。例えば、本例では、復号部３８は、ｅ３Ａを復号して、３Ａを得て、（３Ａ，８）を反映処理部３９に渡す。
【００７５】
反映処理部３９は、復号部３８から受け取った平文データの第２推論結果（本例では、３Ａ）を、第１推論結果（本例では、８）で除算することにより、第１推論結果を反映させた推論結果（本例では、３／８・Ａ）を生成する。これにより、クライアント装置３０では、平文データに対して学習装置１０の処理部１３−１、１３−２の処理を実行した実行結果と同じ値を得ることができる。
【００７６】
以上説明したように、処理システム１では、推論装置２０においては、暗号化データを用いて秘匿状態を維持したまま処理を行うことができ、クライアント装置３０において、平文データに対する処理結果と同じ結果を得ることができる。
【００７７】
次に、一実施形態に係る処理システム１における処理動作について説明する。
【００７８】
図６は、一実施形態に係る処理システムの動作を示すシーケンス図である。
【００７９】
学習装置１０の学習制御部１４が記憶部１５に格納されている学習用データ１６を用いて、学習部１１のニューラルネットワークモデル１２により推論処理を実行させることで、ニューラルネットワークモデル１２の処理部１３における各種設定値の学習を行う（Ｓ１０１）。次いで、学習制御部１４は、学習によって得られた設定値に関する設定値情報を記憶部１５に格納する（Ｓ１０２）。
【００８０】
次いで、設定値通知部１８は、記憶部１５に格納された設定値情報１７を読み出して、推論装置２０に送信する（Ｓ１０３）。
【００８１】
推論装置２０の受信部２８は、学習装置１０から送信された設定値情報１７を受信して、記憶部２５に格納する（Ｓ１０４）。一方、クライアント装置３０の暗号部３７は、記憶部３３から対象データ３４を取得し、対象データ３４を所定の暗号により暗号化し(Ｓ１０５)、送信部３２は、暗号化した対象データを推論装置２０に送信する（Ｓ１０６）。
【００８２】
推論装置２０の受信部２８は、クライアント装置３０から推論対象の対象データを受信し、記憶部２５に格納する（Ｓ１０７）。なお、設定値情報１７を受信する時点と、対象データを受信する時点とは、いずれが先であってもよく、要は、推論処理を実行するまでに両方がそろっていればよい。
【００８３】
推論処理２０の推論制御部２４は、記憶部２５から設定値情報２７を取得し、設定値情報２７に基づいて、各処理部２３を設定する（Ｓ１０８）。次いで、推論制御部２４は、記憶部２５から暗号化データである対象データ２６を読み出して、ニューラルネットワークモデル２２の最初の処理レイヤー（レイヤー１）の処理部２３に入力する。この結果、ニューラルネットワークモデル２２において、対象データ２６を対象とした推論処理が実行されて、最終の処理レイヤー（レイヤーＮ）の処理部２３から推論結果（途中）が推論結果送信部２９に出力されることとなる（Ｓ１０９）。
【００８４】
次いで、推論装置２０の推論結果送信部２９は、ニューラルネットワークモデル２２から渡された推論結果（途中）を対象データの推論処理を要求したクライアント装置３０に対して送信する（Ｓ１１０）。
【００８５】
クライアント装置３０の受信部３６は、推論装置２０から推論結果（途中）を受信して復号部３８に渡し、復号部３８が推論結果(途中)に含まれている第２推論結果を復号化し、第１推論結果とともに反映処理部３９に渡す（Ｓ１１１）。反映処理部３９は、復号された第２推論結果に対して、第１推論結果を反映する処理を実行することにより、最終的な推論結果（推論結果（最終））を生成し（Ｓ１１２）、生成した推論結果(最終)３５を記憶部３３に格納する（Ｓ１１３）。その後、結果表示部３１が、記憶部３３に格納された推論結果３５に基づいて、推論結果を表示出力する（Ｓ１１４）。
【００８６】
以上説明したように、本実施形態に係る処理システムによると、平文データに対する乗算処理を行う場合において、推論装置２０側では、乗算処理を平文データに対する乗算処理として、又は、平文データに対する乗算処理及び暗号化データに対する演算処理として実行する。このため、平文に対する整数以外の乗算処理を含む処理であっても、推論装置２０側では、暗号化データによる秘匿状態を維持したままで処理をすることができる。これにより、推論装置２０から情報が漏えいしてしまうことを適切に防止することができる。
【００８７】
上記した学習装置１０、推論装置２０、クライアント装置３０は、それぞれコンピュータ装置により構成することができる。
【００８８】
図７は、コンピュータ装置の一実施例を示すブロック図である。なお、本実施形態では、学習装置１０、推論装置２０、及びクライアント装置３０は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、同様な構成を有するものとすることができる。以下の説明では、便宜的に図７に示すコンピュータ装置を用いて、学習装置１０、推論装置２０、及びクライアント装置３０のそれぞれを構成するコンピュータ装置について説明することとする。
【００８９】
コンピュータ装置１００は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎ  Ｕｎｉｔ）１０１と、メインメモリ１０２と、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３と、リーダライタ１０４と、通信インターフェース（通信Ｉ／Ｆ）１０５と、補助記憶装置１０６と、入出力インターフェース（入出力Ｉ／Ｆ）１０７と、表示装置１０８と、入力装置１０９とを備える。ＣＰＵ１０１、メインメモリ１０２、ＧＰＵ１０３、リーダライタ１０４、通信Ｉ／Ｆ１０５、補助記憶装置１０６、入出力Ｉ／Ｆ１０７、及び表示装置１０８は、バス１１０を介して接続されている。学習装置１０と、推論装置２０と、クライアント装置３０とは、それぞれコンピュータ装置１００に記載の構成要素の一部または全てを適宜選択して構成される。
【００９０】
ここで、メインメモリ１０２又は補助記憶装置１０６の少なくとも一方が、学習装置１０の記憶部１５、推論装置２０の記憶部２５、及びクライアント装置３０の記憶部３３として機能する。
【００９１】
学習装置１０を構成するコンピュータ装置１００のＣＰＵ１０１は、学習装置１０の全体を統括制御する。ＣＰＵ１０１は、補助記憶装置１０６に格納されているプログラムをメインメモリ１０２に読み出して実行することにより各種処理を実行する。学習装置１０において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、学習部１１のニューラルネットワークモデル１２を構成する。また、推論装置２０を構成するコンピュータ装置１００において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、推論部２１のニューラルネットワークモデル２２を構成する。また、クライアント装置３０を構成するコンピュータ装置１００において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、結果表示部３１、暗号部３７、復号部３８、及び反映処理部３９を構成する。なお、推論装置２０を構成するコンピュータ装置１００のＣＰＵ１０１は、クライアント装置３０を構成するコンピュータ装置１００のＣＰＵ１０１よりも処理性能が良いものとしてもよい。
【００９２】
メインメモリ１０２は、例えば、ＲＡＭ、ＲＯＭ等であり、ＣＰＵ１０１に実行されるプログラム（処理プログラム等）や、各種情報を記憶する。補助記憶装置１０６は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の非一時的記憶デバイス（不揮発性記憶デバイス）であり、ＣＰＵ１０１で実行されるプログラムや、各種情報を記憶する。学習装置１０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、学習データ１６や設定値情報１７を記憶する。推論装置２０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、対象データ２６や設定値情報２７を記憶する。クライアント装置３０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、対象データ３４や推論結果３５を記憶する。
【００９３】
ＧＰＵ１０３は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、ＧＰＵ１０３は、ＣＰＵ１０１の指示に従って所定の処理を実行する。学習装置１０を構成するコンピュータ装置１００において、ＧＰＵ１０３は、少なくとも１つの処理部１３を構成してもよい。また、推論装置２０を構成するコンピュータ装置１００において、ＧＰＵ１０３は、少なくとも１つの処理部２３を構成してもよい。
【００９４】
リーダライタ１０４は、記録媒体１１１を着脱可能であり、記録媒体１１１からのデータの読み出し、及び記録媒体１１１へのデータの書き込みを行う。記録媒体１１１としては、例えば、ＳＤメモリーカード、ＦＤ（フロッピーディスク：登録商標）、ＣＤ、ＤＶＤ、ＢＤ（登録商標）、フラッシュメモリ等の非一時的記録媒体（不揮発性記録媒体）がある。本実施形態においては、記録媒体１１１に、処理プログラムを格納しておき、リードライタ１０４により、これを読み出して、利用するようにしてもよい。また、学習装置１０を構成するコンピュータ装置１００において、記録媒体１１１に、学習用データを格納しておき、リードライタ１０４により、これを読み出して利用するようにしてもよい。また、クライアント装置３０を構成するコンピュータ装置１００において、記録媒体１１１に、対象データを格納しておき、リードライタ１０４により、これを読み出して記憶部３３に格納するようにしてもよい。
【００９５】
通信Ｉ／Ｆ１０５は、ネットワーク４０、５０に接続されており、ネットワーク４０、５０に接続された他の装置との間でのデータの送受信を行う。学習装置１０は、例えば、通信Ｉ／Ｆ１０５を介してネットワーク４０に接続された推論装置２０に設定値情報を送信する。学習装置１０の設定値通知部１８、推論装置２０の受信部２８及び推論結果送信部２９、並びにクライアント装置３０の送信部３２及び受信部３６は、それぞれを構成するコンピュータ装置１００の通信Ｉ／Ｆ１０５及びＣＰＵ１０１によって構成される。
【００９６】
入出力Ｉ／Ｆ１０７は、例えば、マウス、キーボード等の入力装置１０９と接続されている。学習装置１０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、学習装置１０の管理者による操作入力を受け付ける。また、推論装置２０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、推論装置２０の管理者による操作入力を受け付ける。さらに、クライアント装置３０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、クライアント装置３０のユーザによる操作入力を受け付ける。
【００９７】
表示装置１０８は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【００９８】
次に、第１変形例に係る処理システムについて説明する。
【００９９】
図８は、第１変形例に係る処理システムの機能構成図である。
【０１００】
第１変形例に係る処理システム１Ａは、上記した図５に示す処理システム１において、推論装置２０に代えて、推論装置２０Ａを備え、クライアント装置３０に代えて、クライアント装置３０Ａを備えるようにしたものである。なお、上記実施形態と同様な部分については、同一番号を付し、重複する説明を省略する。
【０１０１】
推論装置２０Ａは、推論制御部２４に代えて推論制御部２４Ａを備える。推論制御部２４Ａは、乗数の設定値の全体を暗号化データに対する演算で使用する対象（演算実行対象）としない成分（第１乗数成分）としている。この結果、第２乗算成分は、存在しない。そこで、本実施形態では、推論制御部２４Ａは、乗数を、前段からの平文データである非反映値（入力がない場合には、非反映値の初期値（例えば、１））に対して乗算して非反映値（第１演算結果）を算出するように処理部２３Ａ−１，２３Ａ−２を設定する。また、推論制御部２４Ａは、処理部２３における暗号文空間上での演算が、乗算を行わないことを示す値１を平文データに乗算する演算に対応するように、処理部２３Ａ−１，２３Ａ−２に１に対応する値を用いた処理を設定する。このように設定された処理部２３Ａ−１，２３Ａ−２は、乗数を前段からの非反映値に対して乗算して非反映値（第１演算結果）を算出する。また、処理部２３は、入力された暗号化データをそのまま第２演算結果とする。処理部２３は、非反映値（第１演算結果）と、第２演算結果とを対応付けて、後段に出力する。
【０１０２】
本例では、処理部２３Ａ−１用の設定値は、１／２であり、処理部２３Ａ−２用の設定値は、３／４となっている。本例においては、推論調整部２４Ａは、処理部２３Ａ−１に対して、非反映値に対する乗数（第１乗数成分）を１／２に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定する。また、推論調整部２４は、処理部２３−２に対して、非反映値に対する乗数を３／４に設定し、暗号化データの演算に使用する乗数を１に設定する。
【０１０３】
本例では、処理部２３Ａ−１は、入力された暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出する。また、処理部２３−１は、非反映値の初期値（例えば、１）に対して乗数（本例では、１／２）を乗算することにより、第１推論結果として１／２を算出する。そして、処理部２３−１は、第１推論結果及び第２推論結果（ｅＡ，１／２）を出力する。ｅＡは、復号すると、平文データＡとなり、これを、第１推論結果である１／２を乗算することにより、処理部１３−１の出力結果である１／２・Ａと同じ結果となる。
【０１０４】
本例では、処理部２３Ａ−２は、入力された第２演算結果である暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出する。また、処理部２３Ａ−２は、入力された非反映値（本例では、１／２）に対して乗数（本例では、３／４）を乗算することにより、第１推論結果として３／８を算出する。そして、処理部２３Ａ−２は、第１推論結果及び第２推論結果（ｅＡ，３／８）を出力する。ｅＡは、復号すると、平文データＡとなり、これを、第１推論結果である３／８を乗算することにより、処理部１３−２の出力結果である３／８・Ａと同じ結果となる。処理部２３Ａ−２の処理結果（推論結果（途中））は、推論結果送信部２９によりクライアント装置３０に送信される。
【０１０５】
クライアント装置３０Ａの反映処理部３９は、復号部３８から受け取った平文データの第２推論結果（本例では、Ａ）に、第１推論結果（本例では、３／８）を乗算することにより、第１推論結果を反映させた推論結果（本例では、３／８・Ａ）を生成する。これにより、クライアント装置３０では、平文データに対して学習装置１０の処理部１３−１、１３−２の処理を実行した実行結果と同じ値を得ることができる。
【０１０６】
この処理システム１Ａによると、推論装置２０Ａ側では、乗算において、平文データの乗算に対応する暗号化データの累乗（２乗以上）を行わずに済むので、暗号化データに対する演算の処理負荷が軽減される。
【０１０７】
次に、第２変形例に係る処理システムについて説明する。
【０１０８】
図９は、第２変形例に係る処理システムの機能構成図である。
【０１０９】
第２変形例に係る処理システム１Ｂは、上記した図５に示す処理システム１において、学習装置１０に代えて、学習装置１０Ｂを備え、推論装置２０に代えて、推論装置２０Ｂを備え、クライアント装置３０に代えて、クライアント装置３０Ｂを備えるようにしたものである。
【０１１０】
学習装置１０Ｂは、処理部１３Ｂ−１と、処理部１３Ｂ−２とを備える。本例では、処理部１３Ｂ−１の設定値は、１／４であり、処理部１３−２の設定値は、３となっている。
【０１１１】
推論装置２０Ｂは、推論装置２０において、推論制御部２４に代えて推論制御部２４Ｂを備える。推論制御部２４Ｂは、乗数の設定値の全体を暗号化データに対する演算実行対象としない成分（第１乗数成分）としている。この結果、第２乗算成分は、存在しない。本実施形態では、推論制御部２４Ｂは、前段からの平文データである非反映値（前段からの入力がない場合には、非反映値の初期値（例えば、１））を、乗数の設定値で除算して非反映値（第１演算結果）を算出するように処理部２３Ｂ−１，２３Ｂ−２を設定する。本実施例では、非反映値は、最終的に除算する値として用いられる。また、推論制御部２４Ｂは、処理部２３における暗号文空間上の演算が、乗算を行わないことを示す値１を平文データに乗算する演算に対応するように、処理部２３Ｂ−１，２３Ｂ−２に１に対応する値を用いた処理を設定する。このように設定された処理部２３Ｂ−１、２３Ｂ−２は、前段からの非反映値を設定値で除算して非反映値（第１演算結果）を算出する。また、処理部２３は、入力された暗号化データをそのまま第２演算結果とする。処理部２３は、非反映値（第１演算結果）と、第２演算結果とを対応付けて、後段に出力する。
【０１１２】
本例においては、推論調整部２４Ａは、処理部２３Ｂ−１に対して、非反映値に対する乗数（第１乗数成分）を４に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定する。また、推論調整部２４Ａは、処理部２３Ｂ−２に対して、非反映値に対する除数を３（乗数でいうと１／３）に設定し、暗号化データの演算に使用する乗数を１に設定する。
【０１１３】
本例では、処理部２３Ｂ−１は、入力された暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出する。また、処理部２３−１は、非反映値の初期値（例えば、１）に対して乗数（本例では、４）を乗算することにより、第１推論結果として４を算出する。そして、処理部２３Ｂ−１は、第１推論結果及び第２推論結果（ｅＡ，４）を出力する。ｅＡは、復号すると、平文データＡとなり、これを、第２推論結果である４で除算することにより、処理部１３Ｂ−１の出力結果である１／４・Ａと同じ結果となる。
【０１１４】
本例では、処理部２３Ｂ−２は、入力された第２演算結果である暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出する。また、処理部２３Ｂ−２は、入力された非反映値（本例では、４）を除数（本例では、３）で除算することにより、第１推論結果として４／３を算出する。そして、処理部２３Ｂ−２は、第１推論結果及び第２推論結果（ｅＡ，４／３）を出力する。ｅＡは、復号すると、平文データＡとなり、これを、第１推論結果である４／３で除算することにより、処理部１３Ｂ−２の出力結果である３／４・Ａと同じ結果となる。処理部２３Ｂ−２の処理結果（推論結果（途中））は、推論結果送信部２９によりクライアント装置３０Ｂに送信される。
【０１１５】
クライアント装置３０Ｂの反映処理部３９Ｂは、復号部３８から受け取った平文データの第２推論結果（本例では、Ａ）を、第１推論結果（本例では、４／３）で除算することにより、第１推論結果を反映させた推論結果（本例では、３／４・Ａ）を生成する。これにより、クライアント装置３０Ｂでは、平文データに対して学習装置１０Ｂの処理部１３Ｂ−１、１３Ｂ−２の処理を実行した実行結果と同じ値を得ることができる。
【０１１６】
この処理システム１Ｂによると、推論装置２０Ｂ側では、乗算において、平文データの乗算に対応する暗号化データの累乗（２乗以上）を行わずに済むので、暗号化データに対する演算の処理負荷が軽減される。
【０１１７】
次に、第３変形例に係る処理システムについて説明する。
【０１１８】
図１０は、第３変形例に係る処理システムの機能構成図である。
【０１１９】
第３変形例に係る処理システム１Ｃは、上記した図９に示す処理システム１Ｂにおいて、推論装置２０Ｂに代えて、推論装置２０Ｃを備え、クライアント装置３０Ｂに代えて、クライアント装置３０Ｃを備えるようにしたものである。
【０１２０】
推論装置２０Ｃは、推論装置２０Ｂにおいて、推論制御部２４Ｂに代えて推論制御部２４Ｃを備える。推論制御部２４Ｃは、乗数の設定値を仮分数の形式とした場合の分母を、暗号化データに対する演算で使用する対象（演算実行対象）としない成分（第１乗数成分）とし、分子（整数）を、演算実行対象とする成分（第２乗数成分）としている。そこで、本実施形態では、例えば、推論制御部２４は、乗数の設定値を仮分数の形式とした場合の分母分の１（１／分母）を、前段からの平文データである非反映値（前段からの入力がない場合には、非反映値の初期値（例えば、１））に対して乗算して非反映値（第１演算結果）を算出するように処理部２３Ｃ−１，２３Ｃ−２を設定する。また、推論制御部２４Ｃは、乗数の設定値を仮分数の形式とした場合の分子を、処理部２３における暗号文空間上での演算が、平文空間上における仮分数の分子の乗算に対応するように、処理部２３Ｃ−１，２３Ｃ−２に仮分数の分子に対応する値を用いた処理を設定する。このように設定された処理部２３Ｃ−１、２３Ｃ−２は、前段からの非反映値に対して１／分母を乗算して非反映値（第１演算結果）を算出する。また、処理部２３Ｃ−１、２３Ｃ−２は、入力された暗号化データに対して、平文データに対する分子（整数）を乗数とする乗算の演算に対応する暗号文空間上の演算を実行して第２演算結果を算出する。処理部２３は、非反映値（第１演算結果）と、第２演算結果とを対応付けて、後段に出力する。
【０１２１】
本例においては、推論調整部２４Ｂは、処理部２３Ｃ−１に対して、非反映値に対する乗数（第１乗数成分）を１／４に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定する。また、推論調整部２４Ｂは、処理部２３Ｃ−２に対して、非反映値に対する乗数を１に設定し、暗号化データの演算に使用する乗数を３に設定する。
【０１２２】
本例では、処理部２３Ｃ−１は、入力された暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出する。また、処理部２３Ｃ−１は、非反映値の初期値（例えば、１）に対して乗数（本例では、１／４）を乗算することにより、第１推論結果として１／４を算出する。そして、処理部２３Ｃ−１は、第１推論結果及び第２推論結果（ｅＡ，１／４）を出力する。ｅＡは、復号すると、平文データＡとなり、これを、第２推論結果である１／４で乗算することにより、処理部１３Ｃ−１の出力結果である１／４・Ａと同じ結果となる。
【０１２３】
本例では、処理部２３Ｃ−２は、入力された第２演算結果である暗号化データｅＡを、設定された乗数だけ累乗（本例では、３乗）することにより、ｅ３Ａを算出する。また、処理部２３Ｃ−２は、入力された非反映値（本例では、１／４）を乗数（本例では、１）で乗算することにより、第１推論結果として１／４を算出する。そして、処理部２３Ｃ−２は、第１推論結果及び第２推論結果（ｅ３Ａ，１／４）を出力する。ｅ３Ａは、復号すると、平文データ３Ａとなり、これを、第１推論結果である１／４で乗算することにより、処理部１３Ｃ−２の出力結果である３／４・Ａと同じ結果となる。処理部２３Ｃ−２の処理結果（推論結果（途中））は、推論結果送信部２９によりクライアント装置３０Ｃに送信される。
【０１２４】
クライアント装置３０Ｃの反映処理部３９Ｃは、復号部３８から受け取った平文データの第２推論結果（本例では、３Ａ）に、第１推論結果（本例では、１／４）で乗算することにより、第１推論結果を反映させた推論結果（本例では、３／４・Ａ）を生成する。これにより、クライアント装置３０Ｃでは、平文データに対して学習装置１０Ｂの処理部１３Ｂ−１、１３Ｂ−２の処理を実行した実行結果と同じ値を得ることができる。
【０１２５】
次に、第４変形例に係る処理システムについて説明する。
【０１２６】
図１１は、第４変形例に係る処理システムの学習装置の機能構成図である。
【０１２７】
第４変形例に係る処理システムの学習装置１０Ｃは、処理レイヤー１を構成する処理部１３Ｃ−１と、処理レイヤー２を構成する処理部１３Ｃ−２とを有する。
【０１２８】
処理部１３Ｃ−１は、３つの入力されるデータに対して、それぞれ乗算処理を行う。本例では、処理部１３Ｃ−１は、１番目のデータに対して、１／８倍する乗算処理を行い、２番目のデータに対して、１／４倍する乗算処理を行い、３番目のデータに対して、１／８倍する乗算処理を行う。なお、３つの乗算処理における乗数は、学習装置１０による学習によって処理部１３Ｃ−１での演算に用いる設定値として得られたものである。例えば、平文データＡ、Ｂ、Ｃが処理部１３Ｃ−１に入力されると、処理部１３Ｃ−１では、Ａ×（１／８）、Ｂ×（１／４）、Ｃ×（１／８）が演算されて、１／８・Ａ、１／４・Ｂ、１／８・Ｃが出力される。なお、学習された処理部１３Ｃ−１用の設定値（本例では、１／８，１／４，１／８）は、設定値通知部１８により推論装置２０に送信される。
【０１２９】
処理部１３Ｃ−２は、処理部１３Ｃ−１から入力される３つのデータを加算する処理を行って出力する。例えば、処理部１３Ｃ−１から出力された平文データである１／８・Ａ、１／４・Ｂ、１／８・Ｃが処理部１３Ｃ−２に入力されると、処理部１３Ｃ−２では、１／８・Ａ、１／４・Ｂ、１／８・Ｃを加算する演算が実行されて、（Ａ＋２Ｂ＋Ｃ）／８が出力される。
【０１３０】
次に、第４変形例に係る処理システムの推論装置及びクライアント装置の機能構成について説明する。
【０１３１】
図１２は、第４変形例に係る処理システムの推論装置及びクライアント装置の機能構成図である。
【０１３２】
推論装置２０Ｄは、推論制御部２４Ｄと、処理レイヤー１を構成する処理部２３Ｄ−１と、処理レイヤー２を構成する処理部２３Ｄ−２と、処理レイヤー３を構成する処理部２３Ｄ−３と、処理レイヤー４を構成する処理部２３Ｄ−４と、処理レイヤー５を構成する処理部２３Ｄ−５とを有する。本例においては、学習装置１０Ｃの処理レイヤー１と、推論装置２０Ｄの処理レイヤー１が対応し、学習装置１０Ｃの処理レイヤー２と、推論装置２０Ｄの処理レイヤー２〜５とが対応している。
【０１３３】
推論制御部２４Ｄは、乗数の設定値の全体を暗号化データに対する演算実行対象としない成分（第１乗数成分）としている。この結果、第２乗算成分は、存在しない。本実施形態では、推論制御部２４Ｄは、同一の処理部で乗算が行われる各入力データのそれぞれについて、前段からの平文データである非反映値（前段から入力されない場合には、非反映値の初期値（例えば、１））を、乗数の設定値で乗算して非反映値（第１演算結果）を算出するように処理部２３Ｄ−１を設定する。本例では、非反映値は、最終的に乗算する値として用いられる。また、推論制御部２４Ｄは、処理部２３における暗号文空間上の演算が、乗算を行わないことを示す値１を平文データに対する乗算する演算に対応するように、処理部２３Ｄ−１に１に対応する値を用いた処理を設定する。このように設定された処理部２３Ｄ−１は、入力される暗号化データのそれぞれについて、非反映値の初期値を設定値で除算して非反映値（第１演算結果）を算出する。また、処理部２３は、入力された暗号化データをそのまま第２演算結果とする。処理部２３Ｄ−１は、それぞれの入力毎に、非反映値（第１演算結果）と、第２演算結果とを対応付けて、後段に出力する。
【０１３４】
本例においては、推論調整部２４Ｄは、処理部２３Ｄ−１の１番目の入力に対して、非反映値に対する乗数（第１乗数成分）を１／８に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定し、処理部２３Ｄ−１の２番目の入力に対して、非反映値に対する乗数（第１乗数成分）を１／４に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定し、処理部２３Ｄ−１の３番目の入力に対して、非反映値に対する乗数（第１乗数成分）を１／４に設定し、暗号化データの演算に使用する乗数（第２乗数成分）を１に設定する。
【０１３５】
本例では、処理部２３Ｄ−１は、入力された１番目の暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出し、また、１番目のデータに対応する非反映値の初期値（例えば、１）に対して乗数（本例では、１／８）を乗算することにより、第１推論結果として１／８を算出する。そして、処理部２３Ｄ−１は、１番目の暗号化データｅＡに対応する第１推論結果及び第２推論結果（ｅＡ，１／８）を処理部２３Ｄ−２に出力する。
【０１３６】
また、処理部２３Ｄ−１は、入力された２番目の暗号化データｅＢを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＢを算出し、また、２番目のデータに対応する非反映値の初期値（例えば、１）に対して乗数（本例では、１／４）を乗算することにより、第１推論結果として１／４を算出する。そして、処理部２３Ｄ−１は、２番目の暗号化データｅＢに対応する第１推論結果及び第２推論結果（ｅＢ，１／４）を処理部２３Ｄ−２に出力する。
【０１３７】
また、処理部２３Ｄ−１は、入力された３番目の暗号化データｅＣを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＣを算出し、また、３番目のデータに対応する非反映値の初期値（例えば、１）に対して乗数（本例では、１／８）を乗算することにより、第１推論結果として１／８を算出する。そして、処理部２３Ｄ−１は、３番目の暗号化データｅＣに対応する第１推論結果及び第２推論結果（ｅＣ，１／８）を処理部２３Ｄ−４に出力する。
【０１３８】
処理部２３Ｄ−２は、１番目の暗号化データに基づいて出力される第１推論結果及び第２推論結果（ｅＡ，１／８）と、２番目の暗号化データに基づいて出力される第１推論結果及び第２推論結果（ｅＢ，１／４）とを入力し、これらの間の通分処理を実行して、実行結果を処理部２３Ｄ−３に出力する。具体的には、処理部２３Ｄ−２は、２つの入力データにおける第１推論結果（分母に相当）を同一の値とするように通分するための、それぞれの第２推論結果（分子に相当）に対する乗数（通分用乗数）を決定し、それぞれの第１推論結果について、同一の値を第１推論結果とし、２つの入力データのそれぞれの第２推論結果に対して、平文データに対して通分用乗数を乗算する演算に対応する暗号文空間上の演算を実行し、その結果をこの処理部におけるそれぞれの第２推論結果とする。本例においては、処理部２３Ｄ−２は、１番目の入力データである（ｅＡ，１／８）については、通分用乗数が１と決定されるので、新たな第１推論結果及び第２推論結果は、（ｅＡ，１／８）となり、２番目の入力データである（ｅＢ，１／４）については、通分用乗数が２と決定されるので、新たな第１推論結果及び第２推論結果は、（ｅ２Ｂ，１／８）となる。
処理部２３Ｄ−２は、通分処理により得られた、１番目と、２番目の入力データに対応する第１推論結果及び第２推論結果（（ｅＡ，１／８）及び（ｅ２Ｂ，１／８））をそれぞれ処理部２３Ｄ−３に出力する。
【０１３９】
処理部２３Ｄ−３は、１番目と、２番目の暗号化データに対応する第１推論結果及び第２推論結果（（ｅＡ，１／８）及び（ｅ２Ｂ，１／８））に対して、平文データにおける加算処理に対応する処理を実行する。処理部２３Ｄ−３は、２つの入力データの第２推論結果を平文データの加算に対応する暗号文空間上の演算（本例では、暗号化データの乗算）を実行した結果（本例では、ｅＡ＋２Ｂ）を新たな第２推論結果とし、第１推論結果及び第２推論結果（ｅＡ＋２Ｂ，１／８）を処理部２３Ｄ−４に出力する。
【０１４０】
処理部２３Ｄ−４は、処理部２３Ｄ−３から出力された第１推論結果及び第２推論結果（ｅＡ＋２Ｂ，１／８）と、処理部２３Ｄ−１から出力された３番目の暗号化データに対応する第１推論結果及び第２推論結果（ｅＣ，１／８）とを入力し、これらの間の通分処理を実行して、実行結果を処理部２３Ｄ−５に出力する。具体的には、処理部２３Ｄ−４は、２つの入力データにおける第１推論結果（分母に相当）を同一の値とするように通分するための、それぞれの第２推論結果（分子に相当）に対する乗数（通分用乗数）を決定し、それぞれの第１推論結果について、同一の値を第１推論結果とし、２つの入力データのそれぞれの第２推論結果に対して、平文データに対して通分用乗数を乗算する演算に対応する暗号文空間上の演算を実行し、その結果をこの処理部におけるそれぞれの第２推論結果とする。本例においては、処理部２３Ｄ−４は、一方の入力データである（ｅＡ＋２Ｂ，１／８）については、通分用乗数が１と決定されるので、新たな第１推論結果及び第２推論結果は、（ｅＡ＋２Ｂ，１／８）となり、他方の入力データである（ｅＣ，１／８）については、通分用乗数が１と決定されるので、新たな第１推論結果及び第２推論結果は、（ｅＣ，１／８）となる。処理部２３Ｄ−４は、通分処理により得られた、２つの第１推論結果及び第２推論結果（（ｅＡ＋２Ｂ，１／８）及び（ｅＣ，１／８））をそれぞれ処理部２３Ｄ−５に出力する。
【０１４１】
処理部２３Ｄ−５は、処理部２３Ｄ−４から入力される２つの第１推論結果及び第２推論結果（（ｅＡ＋２Ｂ，１／８）及び（ｅＣ，１／８））に対して、平文データにおける加算処理に対応する処理を実行する。処理部２３Ｄ−５は、２つの入力データの第２推論結果を平文データの加算に対応する暗号文空間上の演算（本例では、暗号化データの乗算）を実行した結果（本例では、ｅＡ＋２Ｂ＋Ｃ）を新たな第２推論結果とし、第１推論結果及び第２推論結果（ｅＡ＋２Ｂ＋Ｃ，１／８）を、推論結果送信部２９を介して、クライアント装置３０Ａに出力する。
【０１４２】
クライアント装置３０Ａでは、復号部３８が、推論装置２０Ｄから受信した第１推論結果及び第２推論結果（ｅＡ＋２Ｂ＋Ｃ，１／８）のうちの第２推論結果を復号して、復号した第２推論結果（Ａ＋２Ｂ＋Ｃ）と第２推論結果を反映処理部３９Ａに出力する。
【０１４３】
反映処理部３９Ａは、復号部３８から受け取った平文データの第２推論結果（本例では、Ａ＋２Ｂ＋Ｃ）に、第１推論結果（本例では、１／８）を乗算することにより、第１推論結果を反映させた推論結果（本例では、（Ａ＋２Ｂ＋Ｃ）／８）を生成する。これにより、クライアント装置３０Ａでは、平文データに対して学習装置１０Ｃの処理部１３Ｃ−１、１３Ｃ−２の処理を実行した実行結果と同じ値を得ることができる。
【０１４４】
次に、第５変形例に係る処理システムについて説明する。
【０１４５】
図１３は、第５変形例に係る処理システムの推論装置及びクライアント装置の機能構成図である。
【０１４６】
第５変形例に係る処理システムは、図１２に示す第４変形例に係る処理システムにおける推論装置２０Ｄに代えて、推論装置２０Ｅを備え、クライアント装置３０Ａに代えて、クライアント装置３０Ｂを備えるようにしたものである。なお、上記実施形態及び第１変形例〜第４変形例と同一部分については、同一符号を付し、重複する説明を省略する。
【０１４７】
推論装置２０Ｅは、推論制御部２４Ｅと、処理レイヤー１を構成する処理部２３Ｅ−１と、処理レイヤー２を構成する処理部２３Ｅ−２と、処理レイヤー３を構成する処理部２３Ｅ−３とを有する。本例においては、学習装置１０Ｃの処理レイヤー１と、推論装置２０Ｅの処理レイヤー１が対応し、学習装置１０Ｃの処理レイヤー２と、推論装置２０Ｅの処理レイヤー２及び３とが対応している。
【０１４８】
推論制御部２４Ｅは、同一の処理部に対する複数の乗算の設定値について、通分を行い、通分した結果の分母に相当する成分を暗号化データに対する演算実行対象としない成分（第１乗数成分）とし、通分後の分子（整数）を、演算実行対象とする成分（第２乗数成分）としている。そこで、本例では、推論制御部２４Ｅは、乗数の設定値を通分した際の共通の分母を、前段からの平文データである非反映値（前段から入力がない場合には、非反映値の初期値（例えば、１））に対して乗算して非反映値（第１演算結果）を算出するように処理部２３Ｅ−１を設定する。本実施形態では、複数の出力に対して、共通の１つの第１演算結果が算出されるように設定される。本例では、非反映値は、最終的に除算する値として用いられる。また、推論制御部２４Ｅは、処理部２３における暗号文空間上での演算が、平文空間上における通分後の各分子の乗算に対応するように、処理部２３Ｅ−１に通分後の各分子に対応する値を用いた処理を設定する。このように設定された処理部２３Ｅ−１は、初期値の非反映値に対して分母を乗算して非反映値（第１演算結果）を算出する。また、処理部２３Ｅ−１は、入力された複数の暗号化データのそれぞれに対して、対応する通分後の分子（整数）を乗数とする平文データの乗算の演算に対応する暗号文空間上の演算を実行して第２演算結果を算出する。処理部２３Ｅ−１は、１つの非反映値（第１演算結果）と、入力された各データに対応する複数の第２演算結果とを対応させて、後段に出力する。
【０１４９】
本例においては、推論調整部２４Ｅは、処理部２３Ｅ−１に対して、１番目の暗号化データの演算に使用する乗数（第２乗数成分）を１に設定し、２番目の暗号化データの演算に使用する乗数（第２乗数成分）を２に設定し、３番目の暗号化データの演算に使用する乗数（第２乗数成分）を１に設定し、非反映値に対する乗数（第１乗数成分）を８に設定する。
【０１５０】
本例では、処理部２３Ｅ−１は、入力された１番目の暗号化データｅＡを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＡを算出し、入力された２番目の暗号化データｅＢを、設定された乗数だけ累乗（本例では、２乗）することにより、ｅ２Ｂを算出し、入力された３番目の暗号化データｅＣを、設定された乗数だけ累乗（本例では、１乗）することにより、ｅＣを算出する。また、処理部２３Ｅ−１は、非反映値の初期値（例えば、１）に対して分母（本例では、８）を乗算することにより、第１推論結果として８を算出する。そして、処理部２３Ｅ−１は、各入力データに対応する第１推論結果（ｅＡ、ｅ２Ｂ、ｅＣ）及び第２推論結果（８）を出力する。
【０１５１】
処理部２３Ｅ−２は、１番目及び２番目の暗号化データに対応する第２推論結果（ｅＡ，ｅ２Ｂ）に対して、平文データにおける加算処理に対応する暗号文空間上の演算を実行し、その結果（本例では、ｅＡ＋２Ｂ）を新たな第２推論結果とし、演算から得られた第２推論結果と、入力された３番目の暗号化データに対する第２推論結果（ｅＣ）と、入力された第１推論結果（８）とを処理部２３Ｅ−３に出力する。
【０１５２】
処理部２３Ｅ−３は、処理部２３Ｅ−２での演算で得られた第２推論結果（ｅＡ＋２Ｂ）と、３番目の暗号化データに対応する第２推論結果（ｅＣ）とに対して、平文データにおける加算処理に対応する暗号文空間上の演算を実行し、その結果（ｅＡ＋２Ｂ＋Ｃ）を新たな第２推論結果とし、この第２推論結果と、入力された第１推論結果（８）とを推論結果送信部２９を介して、クライアント装置３０Ｂに出力する。
【０１５３】
クライアント装置３０Ｂでは、復号部３８が、推論装置２０Ｅから受信した第１推論結果及び第２推論結果（ｅＡ＋２Ｂ＋Ｃ，８）のうちの第２推論結果を復号して、復号した第２推論結果（Ａ＋２Ｂ＋Ｃ）と第２推論結果を反映処理部３９Ｂに出力する。
【０１５４】
反映処理部３９Ｂは、復号部３８から受け取った平文データの第２推論結果（本例では、Ａ＋２Ｂ＋Ｃ）を、第１推論結果（本例では、８）で除算することにより、第１推論結果を反映させた推論結果（本例では、（Ａ＋２Ｂ＋Ｃ）／８）を生成する。これにより、クライアント装置３０Ｂでは、平文データに対して学習装置１０Ｃの処理部１３Ｃ−１、１３Ｃ−２の処理を実行した実行結果と同じ値を得ることができる。
【０１５５】
本例に係る暗号処理システムでは、複数の暗号化データに対して乗算を行う場合に、乗算における共通の分母を非反映値として管理するようにしたので、これらデータに対して、平文データの加算に対応する暗号文空間上の演算を実行する場合において、通分処理（例えば、図１２の処理部２３Ｄ−２における処理）を実行しなくてもよく、処理の負荷や処理時間を短縮することができる。
【０１５６】
なお、本発明は、上述の実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１５７】
例えば、学習装置及び推論装置で使用するニューラルネットワークモデルは、上記した例に限られず、より多くの処理レイヤーを有してもよく、上記した例と異なる処理を実行する処理レイヤーを含んでいてもよい。
【０１５８】
また、上記実施形態及び変形例では、ニューラルネットワークモデルを用いた処理を実行する処理装置に適用される例を示していたが、本発明はこれに限られず、例えば、ニューラルネットワークモデルを用いずに処理を実行する処理装置に対しても同様に適用することができる。
【０１５９】
また、上記実施形態及び変形例においては、準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、完全準同型暗号や、ＳｏｍｅＷｈａｔ準同型暗号としてもよい。
【０１６０】
また、上記実施形態及び変形例において、学習装置１０（又は１０Ｂ，１０Ｃ）、推論装置２０（又は、２０Ａ〜２０Ｅ）又はクライアント装置３０（又は、３０Ａ〜３０Ｃ）のＣＰＵ１０１がプログラムを実行することにより構成していた機能部の少なくとも一部を、各装置内の他のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。また、学習装置１０（又は１０Ｂ，１０Ｃ）のＧＰＵ１０３により構成していた処理部１３を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、推論装置２０（又は、２０Ａ〜２０Ｅ）のＧＰＵ１０３により構成していた処理部２３を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。
【０１６１】
また、上記実施形態及び変形例では、対象データを受け付ける入力部の一例として受信部２８を例に挙げていたが、本発明はこれに限られず、例えば、入力部として、対象データが格納された記録媒体から対象データを読み取るリーダライタとしてもよく、また、対象データとなる画像データを取り込むカメラとしてもよい。
【０１６２】
また、上記実施形態及び変形例では、学習装置１０（又は１０Ｂ，１０Ｃ）と推論装置２０（又は、２０Ａ〜２０Ｅ）を別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、同一のハードウェアにより構成してもよい。
【０１６３】
また、上記実施形態では、推論装置２０（又は、２０Ａ〜２０Ｅ）とクライアント装置３０（又は、３０Ａ〜３０Ｃ）とを別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、例えば、クライアント装置３０の処理能力が十分であれば、推論処理２０（又は、２０Ａ〜２０Ｅ）とクライアント装置３０（又は、３０Ａ〜３０Ｃ）とを同一のハードウェアにより構成してもよい。
【符号の説明】
【０１６４】
１，１Ａ，１Ｂ，１Ｃ…処理システム、１０，１０Ｂ，１０Ｃ…学習装置、１１…学習部、１２…ニューラルネットワークモデル、１３…処理部、１４…学習制御部、１５…記憶部、１６…学習用データ、１７…設定値情報、１８，１８Ａ…設定値通知部、２０，２０Ａ，２０Ｂ，２０Ｃ，２０Ｄ，２０Ｅ…推論装置、２１…推論部、２２…ニューラルネットワークモデル、２３…処理部、２４…推論制御部、２５…記憶部、２６…対象データ、２７…設定値情報、２８…受信部、２９…推論結果送信部、３０，３０Ａ，３０Ｂ，３０Ｃ…クライアント装置、３３…記憶部、３７…暗号部、３８…復号部、３９，３９Ａ，３９Ｂ，３９Ｃ…反映処理部、１０１…ＣＰＵ
【図１】
2019113777.tif 000003
【図２】
2019113777.tif 000004
【図３】
2019113777.tif 000005
【図４】
2019113777.tif 000006
【図５】
2019113777.tif 000007
【図６】
2019113777.tif 000008
【図７】
2019113777.tif 000009
【図８】
2019113777.tif 000010
【図９】
2019113777.tif 000011
【図１０】
2019113777.tif 000012
【図１１】
2019113777.tif 000013
【図１２】
2019113777.tif 000014
【図１３】
2019113777.tif 000015