(57)【要約】【課題】ニューラルネットワークモデルにおいて暗号化データを容易且つ適切に使用できるようにする。【解決手段】ニューラルネットワークモデルにより所定の推論処理を実行する推論装置２０において、暗号化データを受け付ける受信部２８と、ニューラルネットワークモデル２２Ａを用いて暗号化データに対して所定の推論処理を実行する推論部２１と、を備え、ニューラルネットワークモデル２２Ａを、前段から入力される複数の暗号化データ（第１暗号化データ）から、復号すると暗号化データ（第１暗号化データ）に対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる暗号化データ(第２暗号化データ）を生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第２暗号化データに対して非線形関数を適用しないように構成する。【選択図】図９
2019095635.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>
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ニューラルネットワークモデルにおいて、暗号化データのままで処理するようにすることは、不可能であったり、処理負荷が多大となり困難であったりする。例えば、非特許文献1の技術では、活性化関数の演算の都度、クライアントとのデータのやり取りが発生するとともに、クライアント側での処理が発生するために、通信量が多くなると共に、処理時間が長期化してしまう。
【００１２】
また、より多くの演算に対応することのできる準同型暗号である完全準同型暗号や、ＳｏｍｅＷｈａｔ準同型暗号等を用いることも考えられるが、このような暗号による暗号化データは、データ量が多くなるので、処理負荷が多大となるという問題がある。
【００１３】
本発明は、上記事情に鑑みなされたものであり、その目的は、ニューラルネットワークモデルにおいて暗号化データを容易且つ適切に使用できる技術を提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、第１の観点に係る処理装置は、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置であって、暗号化データを受け付ける入力部と、ニューラルネットワークモデルを用いて暗号化データに対して所定の処理を実行する処理実行部と、を備え、ニューラルネットワークモデルは、前段から入力される複数の第１暗号化データから、復号すると第１暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第２暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第２暗号化データに対して非線形分離関数を適用しないように構成されている。
【００１５】
上記目的を達成するため、第２の観点に係る推論装置は、ニューラルネットワークモデルにより所定の推論処理を実行する推論装置であって、暗号化データを受け付ける入力部と、ニューラルネットワークモデルを用いて暗号化データに対して所定の推論処理を実行する推論部と、を備え、ニューラルネットワークモデルは、前段から入力される複数の第１暗号化データから、復号すると第１暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第２暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第２暗号化データに対して非線形関数を適用しないように構成されている。
【００１６】
上記目的を達成するため、第３の観点に係る学習装置は、所定の学習用データに基づいてニューラルネットワークモデルにおける設定値を学習する学習装置であって、学習対象のニューラルネットワークモデルを用いて、学習用データに基づいて、学習対象のニューラルネットワークモデルにおける設定値を学習する学習部と、学習部により学習された学習対象のニューラルネットワークの設定値を記憶する学習結果記憶部と、を備え、学習部は、正伝播を実行する場合には、学習対象のニューラルネットワークモデルとして、前段から入力される第１平文データに対して、剰余演算付き演算を実行する第１処理レイヤーを有し、第１処理レイヤーの後段において、第１処理レイヤーの演算結果に対して非線形関数を適用しないように構成されているニューラルネットワークモデルを使用し、学習対象のニューラルネットワークモデルにおける設定値を更新するために逆伝播を実行する場合には、学習対象のニューラルネットワークモデルとして、第１処理レイヤーに代えて、第１処理レイヤーにおける前記剰余演算付き演算から剰余演算を除いた演算を行う第２処理レイヤーと、第２処理レイヤーの後段に配置され、微分可能な活性化関数による処理を行う活性化関数レイヤーとを含むニューラルネットワークモデルを使用し、正伝播を実行した場合に出力された出力データを入力として用いる。
【００１７】
上記学習装置において、学習部は、逆伝播を実行する場合には、少なくとも１つの活性化関数レイヤーにおける活性化関数を、連続的に増加して一部の値でのみ非連続に減少する波形、又は連続的に減少して一部の値でのみ非連続に増加する波形に近似された微分可能な近似関数としてもよい。
【００１８】
上記学習装置において、近似関数は、双曲線関数であってもよい。
【００１９】
上記目的を達成するため、第４の観点に係る処理システムは、所定の学習用データに基づいて第１ニューラルネットワークモデルにおける設定値を学習する学習装置と、第１ニューラルネットワークモデルの少なくとも一部に対応する第２ニューラルネットワークモデルにより所定の推論処理を実行する推論装置とを備える処理システムであって、学習用データは、暗号化データであり、学習装置は、第１ニューラルネットワークモデルを用いて、学習用データに基づいて、第１ニューラルネットワークモデルにおける設定値を学習する学習部と、学習部により学習された第１ニューラルネットワークの設定値を記憶する学習結果記憶部と、を備え、学習部は、正伝播を実行する場合には、第１ニューラルネットワークモデルとして、前段から入力される複数の第１暗号化データから、復号すると第１暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第２暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、前記第２暗号化データに対して非線形関数を適用しないように構成されているニューラルネットワークモデルを使用し、第１ニューラルネットワークモデルにおける設定値を更新するために逆伝播を実行する場合には、第１ニューラルネットワークモデルとして、平文データに対して所定の処理を実行するためのニューラルネットワークモデルを使用し、正伝播を実行した場合に出力された出力データを復号した復号データを入力として用い、推論装置は、暗号化データを受け付ける入力部と、第２ニューラルネットワークモデルを用いて暗号化データに対して所定の推論処理を実行する推論部と、を備え、第２ニューラルネットワークモデルは、前段から入力される複数の第３暗号化データから、復号すると前記第３暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第４暗号化データを生成して出力する処理を実行する処理レイヤーを有し、前記処理レイヤーの後段において、前記第４暗号化データに対して非線形関数を適用しないように構成されている。
【００２０】
上記目的を達成するため、第５の観点に係る処理方法は、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置による処理方法であって、ニューラルネットワークモデルを用いて、暗号化データに対して所定の処理を実行し、ニューラルネットワークモデルは、前段から入力される複数の第１暗号化データから、復号すると第１暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第２暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、前記第２暗号化データに対して非線形関数を適用しないように構成されている。
【００２１】
上記目的を達成するため、第６の観点に係る処理プログラムは、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置を構成するコンピュータに実行させるための処理プログラムであって、コンピュータを、暗号化データを受け付ける入力部と、ニューラルネットワークモデルを用いて暗号化データに対して所定の処理を実行する処理実行部と、して機能させ、ニューラルネットワークモデルは、前段から入力される複数の第１暗号化データから、復号すると第１暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第２暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第２暗号化データに対して非線形関数を適用しないように構成されている。
【００２２】
上記目的を達成するため、第７の観点に係る処理装置は、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置であって、平文データを受け付ける入力部と、
前記ニューラルネットワークモデルを用いて前記平文データに対して所定の処理を実行する処理実行部と、を備え、ニューラルネットワークモデルは、前段から入力される第１平文データに対して、剰余演算付き演算を実行する処理レイヤーを有し、処理レイヤーの後段において、処理レイヤーの演算結果に対して非線形関数を適用しないように構成されている。
【発明の効果】
【００２３】
本発明によれば、ニューラルネットワークモデルにおいて暗号化データを容易且つ適切に使用できる。
【図面の簡単な説明】
【００２４】
【図１】図１は、第１実施形態に係る処理システムの全体構成図である。
【図２】図２は、第１実施形態に係る学習装置の機能構成図である。
【図３】図３は、第１実施形態に係る活性化関数として用いる剰余演算関数の一例を説明する図である。
【図４】図４は、第１実施形態に係る推論装置の機能構成図である。
【図５】図５は、第１実施形態に係るクライアント装置の機能構成図である。
【図６】図６は、第１実施形態に係る処理システムの動作を示すシーケンス図である。
【図７】図７は、コンピュータ装置の一実施例を示すブロック図である。
【図８】図８は、第１実施形態に係る処理システムにおける画像認識における認識結果を説明する図である。
【図９】図９は、第２実施形態に係る推論装置の機能構成図である。
【図１０】図１０は、第２実施形態に係るクライアント装置の機能構成図である。
【図１１】図１１は、第２実施形態に係る処理システムの動作を示すシーケンス図である。
【図１２】図１２は、第３実施形態に係る学習装置の機能構成図である。
【発明を実施するための形態】
【００２５】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００２６】
まず、第１実施形態に係る処理システムについて説明する。
【００２７】
図１は、第１実施形態に係る処理システムの全体構成図である。
【００２８】
処理システム１は、処理装置の一例としての学習装置１０と、処理装置の一例としての推論装置２０と、クライアント装置３０とを備える。学習装置１０と推論装置２０とは、ネットワーク４０を介して接続されている。また、推論装置２０とクライアント装置３０とは、ネットワーク５０を介して接続されている。ネットワーク４０，５０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｏｗｏｒｋ）や、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等である。なお、図１では、ネットワーク４０と、ネットワーク５０とを別のネットワークとしているが、それらを同一のネットワークとしてもよい。
【００２９】
学習装置１０は、ニューラルネットワークモデルの学習を行う。推論装置２０は、学習装置１０によるニューラルネットワークモデルの学習結果（ニューラルネットワークモデルの係数（重みやバイアス）等の設定値）に基づいてニューラルネットワークモデルを設定し、推論処理を行う。クライアント装置３０は、例えば、ユーザにより利用される装置であり、推論装置２０に対して推論処理の対象となるデータ（対象データ）を送信し、推論装置２０からの推論処理の結果（推論結果）を受け取る。
【００３０】
図２は、第１実施形態に係る学習装置の機能構成図である。
【００３１】
学習装置１０は、処理実行部の一例としての学習部１１と、学習結果記憶部の一例としての記憶部１５と、通知部の一例としての設定値通知部１８とを備える。
【００３２】
学習部１１は、ニューラルネットワークモデル１２と、入力部の一例としての学習制御部１４とを備える。
【００３３】
ニューラルネットワークモデル１２は、例えば、処理対象とする画像データが何を表しているかを推論する推論処理を実行して推論結果を出力するための畳み込みニューラルネットワーク（ＣＮＮ）のモデルである。ニューラルネットワークモデル１２は、複数の処理レイヤー（レイヤー）により構成されている。なお、本実施形態では、ニューラルネットワークモデル１２は、設定値の学習のために使用される。図１の例では、ニューラルネットワークモデル１２は、レイヤー１〜レイヤーＮにより構成されている。各レイヤーにおける処理（部分処理）は、各処理部１３によって実行される。ニューラルネットワークモデル１２は、例えば、処理対象とする画像データが何を表しているか（例えば、人、犬、猫等の何が含まれているか）を推論する推論処理を実行して推論結果を出力するためのモデルである。ニューラルネットワークモデル１２におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【００３４】
ニューラルネットワークモデル１２の構成は、一例であるが、図２に示すように、レイヤー１の部分処理を実行する畳込処理部１３−１、レイヤー２（活性化関数レイヤー）の部分処理を実行する活性化関数処理部１３−２、レイヤー３の部分処理を実行するプーリング処理部１３−３、レイヤーＮ−２の部分処理を実行する活性化関数処理部１３−ｎ−２、レイヤーＮ−１の部分処理を実行するアフィン処理部１３−ｎ−１、レイヤーＮの部分処理を実行するＳｏｆｔＭａｘ処理部１３−ｎ等がある。
【００３５】
畳込処理部１３−１は、入力された画像データに対して、複数のフィルタデータ（設定値の一例）のそれぞれを用いて畳込処理を行う。活性化関数処理部１３−２、１３−ｎ−２等は、直前のレイヤーで生成されたデータを、活性化関数により変換する処理を実行する。活性化関数は、前のレイヤーと後ろのレイヤーとを非線形分離するための関数、言い換えれば、前のレイヤーと後ろのレイヤーとが線形関数として結合されないようにするための関数である。本実施形態では、活性化関数処理部１３−２、１３−ｎ−２等の少なくとも一つにおける活性化関数として、出力値が入力値に応じて有限範囲の値のいずれかの値をとる波形の関数、例えば、いわゆるノコギリの波状の波形となる関数（例えば、剰余演算を含む関数（剰余演算関数））や、このような波形に近似された微分可能な近似関数を用いている。ノコギリの波状の形状とは、連続的に増加（単調増加）して一部の値でのみ非連続に減少する波形、又は連続的に減少（単調減少）して一部の値でのみ非連続に増加する波形ということができる。ここで、単調増加（単調減少）には、傾きが一定な増加（減少）だけでなく、傾きが変化する増加（減少）を含んでもよい。波形に近似された微分可能な近似関数としては、例えば、双曲線関数（ｔａｎｈ等）としてもよく、高次（例えば、２０次等）の三角関数としてもよく、多項式としてもよい。なお、活性化関数として双曲線関数を用いた場合には、高次の三角関数を用いた場合や、多項式を用いた場合に比して処理量が少なく済み、必要な処理時間が短く済むという効果がある。
【００３６】
本実施形態では、ニューラルネットワークモデル１２における設定値を学習する方法として、例えば、誤差逆伝播法を用いており、ニューラルネットワークモデル１２における正伝播を実行する場合には、活性化関数として、上記した剰余演算関数を用いるようにし、設定値を更新するために逆伝播を実行する場合には、活性化関数として、誤差逆伝播法での計算が可能な微分可能な近似関数を用いるようにしている。なお、誤差逆伝播法を用いない場合には、正伝播を実行する場合と、逆伝播を実行する場合の両方の場合において、剰余演算関数を用いるようにしてもよい。
【００３７】
図３は、第１実施形態に係る活性化関数として用いる剰余演算関数の一例を説明する図である。図３において、横軸は、直前の処理レイヤーから入力される入力値を示し、縦軸は、剰余演算関数により出力される出力値を示している。
【００３８】
この剰余演算関数は、入力値の取り得る最小値が−５０００よりも大きく、入力値の取り得る最大値が５０００よりも小さい場合の剰余演算関数である。この剰余演算関数は、（入力値／１０００）  ｍｏｄ  １０と表せる。なお、Ａ  ｍｏｄ  Ｂは、ＡをＢ（除数）で除算した場合の余りを示している。なお、本実施形態では、余りを、小数を含むものとしているが、例えば、小数を切り捨てた整数としてもよい。
【００３９】
この剰余演算関数は、入力値が取り得る最小値から０（第１値の一例）までの範囲（第１範囲）においては、入力値が大きくなるほど出力値が最大値に近づくように変化し、入力値が０の場合には、出力値が０（出力値の最小値）となり、入力値が第１値から入力値の取り得る最大値までの範囲（第２範囲）においては、入力値が大きくなるほど出力値が最小値から離れるように変化する波形（いわゆるノコギリ波）となる関数である。また、この剰余演算関数においては、第１範囲における出力値と、第２範囲における出力値とは、同一の出力値をとらないようになっている。すなわち、大きく異なる値の入力値同士が同一の出力値に変換されてしまうことを適切に防止できる。本実施形態では、活性化関数処理部では、ノコギリ波となる関数のノコギリの１つの歯に相当する幅以下の範囲の関数を用いている。
【００４０】
図３に示す剰余演算関数は、−５０００よりも大きく、５０００よりも小さい範囲を取り得る入力値を１０００で除算し、その除算後の値を剰余演算する関数となっている。この剰余演算関数によると、入力値の除算後の値の取り得る範囲の幅を剰余演算で用いる除数（すなわち、１０）よりも小さくすることができる。なお、この入力値を除算する処理は、入力値の取り得る範囲の幅が、剰余演算における１周期分（入力値の増加に伴って最小値から最大値となる範囲）の幅内に収まるようにする処理である。このように、入力値の除算後の値の取り得る範囲の幅を剰余演算で用いる除数よりも小さくすることができるので、大きく値の異なる入力値が、同一の出力値に変換されてしまうことを適切に防止することができる。
【００４１】
なお、入力値を除算する値や、剰余演算の除数は、上記に限られない。例えば、入力値を除算する値は、各活性化関数処理部に入力される入力値（すなわち、直前のレイヤーの処理部の出力値）の取り得る範囲に基づいて決定すればよい。また、入力値を除算しないようにしてもよい。この場合には、剰余演算の除数を入力値に応じて大きな値とすればよい。
【００４２】
図２の説明に戻り、プーリング処理部１３−３は、入力データについてダウンサンプリングする処理を実行する。アフィン処理部１３−ｎ−１は、入力データについてのアフィン変換処理を実行する。ＳｏｆｔＭａｘ処理部１３−ｎは、入力データについてソフトマックス関数による処理を実行する。
【００４３】
学習制御部１４は、記憶部１５に格納されている学習用データ１６をニューラルネットワークモデル１２に入力し、ニューラルネットワークモデル１２から出力される推論結果に基づいて、ニューラルネットワークモデル１２における設定値を学習する。本実施形態では、学習制御部１４は、学習時の正伝播を実行する場合には、ニューラルネットワークモデル１２の活性化関数処理部１３−２、１３−ｎ−２等の少なくとも一つにおける活性化関数を、剰余演算関数とし、学習時の逆伝播を実行する場合には、ニューラルネットワークモデル１２の活性化関数処理部１３−２、１３−ｎ−２等の少なくとも一つにおける活性化関数を、近似関数とする。学習制御部１４は、学習用データ１６による学習を終えた場合には、学習によって得られた設定値を記憶部１５に格納する。
【００４４】
記憶部１５は、学習部１１のニューラルネットワークモデル１２の学習に使用する学習用データ１６と、ニューラルネットワークモデル１２の係数等の設定値に関する情報である設定値情報１７とを記憶する。なお、学習用データ１６を、学習用データ１６に対応する推論結果データと対応付けた教師データとして記憶部１５に格納するようにしてもよい。設定値情報１７に含まれる設定値としては、例えば、畳込処理部１３−１等で使用されるフィルタの係数や、アフィン処理部１３−ｎ−１等で用いられる重み等がある。
【００４５】
設定値通知部１８は、記憶部１５に格納されている設定値情報１７を、推論装置２０に送信する。
【００４６】
次に、推論装置２０について詳細に説明する。
【００４７】
図４は、第１実施形態に係る推論装置の機能構成図である。
【００４８】
推論装置２０は、処理実行部の一例としての推論部２１と、記憶部２５と、入力部の一例としての受信部２８と、推論結果送信部２９とを備える。
【００４９】
推論部２１は、ニューラルネットワークモデル２２と、推論制御部２４とを備える。
【００５０】
ニューラルネットワークモデル２２は、例えば、処理対象とする画像データが何を表しているかを推論する推論処理を実行して推論結果を出力するための畳み込みニューラルネットワーク（ＣＮＮ）のモデルであり、複数の処理レイヤー（レイヤー）により構成されている。本実施形態では、ニューラルネットワークモデル２２は、学習装置１０のニューラルネットワークモデル１２に対応する構成（本実施形態では、同一の構成）である。すなわち、図４の例では、ニューラルネットワークモデル２２は、レイヤー１〜レイヤーＮにより構成されている。各レイヤーにおける処理（部分処理）は、各処理部２３によって実行される。ニューラルネットワークモデル２２は、例えば、処理対象とする画像データが何を表しているか（例えば、人、犬、猫等の何が含まれているか）を推論する推論処理を実行して推論結果を出力するためのモデルである。ニューラルネットワークモデル２２におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【００５１】
図４に示すニューラルネットワークモデル２２の構成は、一例であり、図４に示す例では、ニューラルネットワークモデル２２は、レイヤー１の部分処理を実行する畳込処理部２３−１、レイヤー２（活性化関数レイヤー）の部分処理を実行する活性化関数処理部２３−２、レイヤー３の部分処理を実行するプーリング処理部２３−３、レイヤーＮ−２の部分処理を実行する活性化関数処理部２３−ｎ−２、レイヤーＮ−１の部分処理を実行するアフィン処理部２３−ｎ−１、レイヤーＮの部分処理を実行するＳｏｆｔＭａｘ処理部２３−ｎ等がある。畳込処理部２３−１、活性化関数処理部２３−２、プーリング処理部２３−３、活性化関数処理部２３−ｎ−２、アフィン処理部２３−ｎ−１、ＳｏｆｔＭａｘ処理部２３−ｎは、それぞれ、図２に示す畳込処理部１３−１、活性化関数処理部１３−２、プーリング処理部１３−３、活性化関数処理部１３−ｎ−２、アフィン処理部１３−ｎ−１、ＳｏｆｔＭａｘ処理部１３−ｎに対応し、同様な処理を実行する。
【００５２】
活性化関数処理部２３−２、２３−ｎ−２等は、直前のレイヤーで生成されたデータを、活性化関数により変換する処理を実行する。本実施形態では、活性化関数処理部２３−２、２３−ｎ−２等の少なくとも一つにおける活性化関数として、出力値が入力値に応じて有限範囲の値のいずれかの値をとる関数、例えば、剰余演算を含む剰余演算関数を用いている。本実施形態では、活性化関数処理部２３−２、２３−ｎ−２等の活性化関数としては、学習装置１０における対応する活性化関数処理部の活性化関数と同じ活性化関数としている。
【００５３】
推論制御部２４は、記憶部２５に格納されている設定値情報２７に基づいて、ニューラルネットワークモデル２２の設定を行う、すなわち、処理レイヤーにおける係数等を設定する。また、推論制御部２４は、処理対象のデータである対象データ２６をニューラルネットワークモデル２２に入力し、ニューラルネットワークモデル２２による推論処理を実行させる。
【００５４】
記憶部２５は、推論部２１のニューラルネットワークモデル２２で推論処理を実行させる対象の対象データ２６と、ニューラルネットワークモデル２２の係数等の設定値に関する情報である設定値情報２７とを記憶する。設定値情報２７に含まれる設定値としては、例えば、畳込処理部２３−１等で使用されるフィルタの係数や、アフィン処理部２３−ｎ−１等で用いられる重み等がある。
【００５５】
受信部２８は、学習装置１０から送信される設定値情報を受信して記憶部２５に格納する。また、受信部２８は、クライアント装置３０から送信される対象データ２６を受信して記憶部２５に格納する。
【００５６】
推論結果送信部２９は、推論部２１のニューラルネットワークモデル２２による推論処理の結果（推論結果）をクライアント装置３０に送信する。
【００５７】
入出力Ｉ／Ｆ２０７は、例えば、マウス、キーボード等の入力装置２０９と接続されており、入力装置２０９からの推論装置２０の管理者による操作入力を受け付ける。
【００５８】
表示装置２０８は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【００５９】
次に、クライアント装置３０について詳細に説明する。
【００６０】
図５は、第１実施形態に係るクライアント装置の機能構成図である。
【００６１】
クライアント装置３０は、結果表示部３１と、送信部３２と、記憶部３３と、受信部３６と備える。
【００６２】
記憶部３３は、推論処理を実行させる対象データ３４と、推論処理の推論結果３５とを記憶する。なお、推論結果３５は、推論装置２０から推論結果が送信された場合に格納されるものであり、推論装置２０による推論処理が行われていない対象データ３４に対する推論結果については、存在しない。
【００６３】
送信部３２は、推論装置２０に推論処理の対象データを送信する。受信部３６は、推論装置２０から推論処理の推論結果を受信して記憶部３３に格納する。結果表示部３１は、記憶部３３に格納された推論結果３５に基づいて各種情報を表示出力する。結果表示部３１は、推論結果３５をそのまま表示してもよく、推論結果３５に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。
【００６４】
図６は、第１実施形態に係る処理システムの動作を示すシーケンス図である。
図６を参照して、本実施形態に係る処理システム１における処理動作について説明する。
【００６５】
学習装置１０の学習制御部１４が記憶部１５に格納されている学習用データ１６を用いて、学習部１１のニューラルネットワークモデル１２により推論処理を実行させることで、ニューラルネットワークモデル１２の処理レイヤー１３における各種設定値の学習を行う（Ｓ１０１）。次いで、学習制御部１４は、学習によって得られた設定値に関する設定値情報を記憶部１５に格納する（Ｓ１０２）。
【００６６】
次いで、設定値通知部１８は、記憶部１５に格納された設定値情報１７を読み出して、推論装置２０に送信する（Ｓ１０３）。
【００６７】
推論装置２０の受信部２８は、学習装置１０から送信された設定値情報１７を受信して、記憶部２５に格納する（Ｓ１０４）。また、クライアント装置３０の送信部３２は、対象データを推論装置２０に送信する（Ｓ１０５）。推論装置２０の受信部２８は、クライアント装置３０から推論対象の対象データを受信し、記憶部２５に格納する（Ｓ１０６）。なお、設定値情報１７を受信する時点と、対象データを受信する時点とは、いずれが先であってもよく、要は、推論処理を実行するまでに両方がそろっていればよい。
【００６８】
推論処理２０の推論制御部２４は、記憶部２５から設定値情報２７を取得し、ニューラルネットワークモデル２２の対応する処理部２３に対して、設定値を設定する（Ｓ１０７）。次いで、推論制御部２４は、記憶部２５から対象データ２６を読み出して、ニューラルネットワークモデル２２の最初の処理レイヤー（レイヤー１）の処理部２３に入力する。この結果、ニューラルネットワークモデル２２において、対象データ２６を対象とした推論処理が実行されて、最終の処理レイヤー（レイヤーＮ）の処理部２３から推論結果が推論結果送信部２９に出力されることとなる（Ｓ１０８）。
【００６９】
次いで、推論装置２０の推論結果送信部２９は、ニューラルネットワークモデル２２から渡された推論結果を対象データの推論処理を要求したクライアント装置３０に対して送信する（Ｓ１０９）。
【００７０】
クライアント装置３０の受信部３６は、推論装置２０から推論結果を受信し、記憶部３３に格納する（Ｓ１１０）。その後、結果表示部３１が、記憶部３３に格納された推論結果３５に基づいて、推論結果を表示出力する（Ｓ１１１）。
【００７１】
上記した学習装置１０、推論装置２０、クライアント装置３０は、それぞれコンピュータ装置により構成することができる。
図７は、コンピュータ装置の一実施例を示すブロック図である。なお、本実施形態では、学習装置１０、推論装置２０、及びクライアント装置３０は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、同様な構成を有するものとすることができるので、以下の説明では、便宜的に図７に示すコンピュータ装置を用いて、学習装置１０、推論装置２０、及びクライアント装置３０を構成するコンピュータ装置について説明することとする。
【００７２】
コンピュータ装置１００は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎ  Ｕｎｉｔ）１０１と、メインメモリ１０２と、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３と、リーダライタ１０４と、通信インターフェース（通信Ｉ／Ｆ）１０５と、補助記憶装置１０６と、入出力インターフェース（入出力Ｉ／Ｆ）１０７と、表示装置１０８と、入力装置１０９とを備える。ＣＰＵ１０１、メインメモリ１０２、ＧＰＵ１０３、リーダライタ１０４、通信Ｉ／Ｆ１０５、補助記憶装置１０６、入出力Ｉ／Ｆ１０７、及び表示装置１０８は、バス１１０を介して接続されている。学習装置１０と、推論装置２０と、クライアント装置３０とは、それぞれコンピュータ装置１００に記載の構成要素の一部または全てを適宜選択して構成される。
【００７３】
ここで、メインメモリ１０２又は補助記憶装置１０６の少なくとも一方が、学習装置１０の記憶部１５、推論装置２０の記憶部２５、及びクライアント装置３０の記憶部３３として機能する。
【００７４】
学習装置１０を構成するコンピュータ装置１００のＣＰＵ１０１は、学習装置１０の全体を統括制御する。ＣＰＵ１０１は、補助記憶装置１０６に格納されているプログラムをメインメモリ１０２に読み出して実行することにより各種処理を実行する。学習装置１０において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、学習部１１のニューラルネットワークモデル１２を構成する。また、推論装置２０を構成するコンピュータ装置１００において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、推論部２１のニューラルネットワークモデル２２を構成する。さらに、クライアント装置３０を構成するコンピュータ装置１００において、ＣＰＵ１０１は、補助記憶装置１０６に格納された処理プログラムを実行することにより、例えば、結果表示部３１を構成する。なお、推論装置２０を構成するコンピュータ装置１００のＣＰＵ１０１は、クライアント装置３０を構成するコンピュータ装置１００のＣＰＵ１０１よりも処理性能が良いものとしてもよい。
【００７５】
メインメモリ１０２は、例えば、ＲＡＭ、ＲＯＭ等であり、ＣＰＵ１０１に実行されるプログラム（処理プログラム等）や、各種情報を記憶する。補助記憶装置１０６は、例えば、ＨＤＤ（Ｈａｒｄ  ＤＩＳＫ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の非一時的記憶デバイス（不揮発性記憶デバイス）であり、ＣＰＵ１０１で実行されるプログラムや、各種情報を記憶する。学習装置１０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、学習データ１６や設定値情報１７を記憶する。推論装置２０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、対象データ２６や設定値情報２７を記憶する。クライアント装置３０を構成するコンピュータ装置１００では、メインメモリ１０２は、例えば、対象データ３４や推論結果３５を記憶する。
【００７６】
ＧＰＵ１０３は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、ＧＰＵ１０３は、ＣＰＵ１０１の指示に従って所定の処理を実行する。学習装置１０を構成するコンピュータ装置１００において、ＧＰＵ１０３は、例えば、畳込処理部１３-１等を構成する。また、推論装置２０を構成するコンピュータ装置１００において、ＧＰＵ１０３は、例えば、畳込処理部２３-１等を構成する。
【００７７】
リーダライタ１０４は、記録媒体１１１を着脱可能であり、記録媒体１１１からのデータの読み出し、及び記録媒体１１１へのデータの書き込みを行う。記録媒体１１１としては、例えば、ＳＤメモリーカード、ＦＤ（フロッピーディスク：登録商標）、ＣＤ、ＤＶＤ、ＢＤ（登録商標）、フラッシュメモリ等の非一時的記録媒体（不揮発性記録媒体）がある。本実施形態においては、記録媒体１１１に、処理プログラムを格納しておき、リードライタ１０４により、これを読み出して、利用するようにしてもよい。また、学習装置１０を構成するコンピュータ装置１００において、記録媒体１１１に、学習用データを格納しておき、リードライタ１０４により、これを読み出して利用するようにしてもよい。また、クライアント装置３０を構成するコンピュータ装置１００において、記録媒体１１１に、処理対象データを格納しておき、リードライタ１０４により、これを読み出して記憶部３３に格納するようにしてもよい。
【００７８】
通信Ｉ／Ｆ１０５は、ネットワーク４０、５０に接続されており、ネットワーク４０、５０に接続された他の装置との間でのデータの送受信を行う。学習装置１０は、例えば、通信Ｉ／Ｆ１０５を介してネットワーク４０に接続された推論装置２０に設定値情報を送信する。学習装置１０の設定値通知部１８、推論装置２０の受信部２８及び推論結果送信部２９、並びにクライアント装置３０の送信部３２及び受信部３６は、それぞれを構成するコンピュータ装置１００の通信Ｉ／Ｆ１０５及びＣＰＵ１０１によって構成される。
【００７９】
入出力Ｉ／Ｆ１０７は、例えば、マウス、キーボード等の入力装置１０９と接続されている。学習装置１０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、学習装置１０の管理者による操作入力を受け付ける。また、推論装置２０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、推論装置２０の管理者による操作入力を受け付ける。さらに、クライアント装置３０を構成するコンピュータ装置１００において、入出力Ｉ／Ｆ１０７は、入力装置１０９を用いた、クライアント装置３０のユーザによる操作入力を受け付ける。
【００８０】
表示装置１０８は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【００８１】
次に、本実施形態に係る処理システム１における画像データを対象にした推論処理における推論結果、すなわち、画像認識における認識結果について説明する。
【００８２】
図８は、第１実施形態に係る処理システムにおける画像認識における認識結果を説明する図である。図８は、ニューラルネットワークモデルにおける各活性化関数処理部で使用する活性化関数を、本実施形態に係る剰余演算関数及び近似関数とした例（実施例１及び実施例２）と、既存の活性化関数を近似多項式で表した関数とした例（参考例１）と、Ｒｅｌｕ関数とした例（参考例２）とにおける画像認識の結果を示している。
【００８３】
実施例１においては、学習時及び推論時において使用するニューラルネットワークモデル１２，２２として、先頭のレイヤーから順に、畳込処理部、活性化関数処理部、プーリング処理部、畳込処理部、活性化関数処理部、プーリング処理部、畳込処理部、活性化関数処理部、アフィン処理部、活性化関数処理部、アフィン処理部、及びＳｏｆｔＭａｘ処理部で構成されたニューラルネットワークモデルを用い、各活性化関数処理部の活性化関数を、学習における正伝播時及び推論時には、図３に示したような剰余演算関数を用い、学習における逆伝播時には、剰余演算関数の波形に近似する双曲線関数を近似関数としている。
【００８４】
そして、ＭＮＩＳＴデータセットの中の学習用データを用いてニューラルネットワークモデル１２における学習処理を行い、その学習処理によって得られた設定値が設定されたニューラルネットワークモデル２２に、ＭＮＩＳＴデータセットのテスト用データを入力して画像認識行い、得られた認識結果についての正答率を測定した。実施例１においては、正答率の最小が９０．０％、正答率の最大が９８．０％、正答率の平均が９４．５％となった。
【００８５】
実施例２においては、各活性化関数処理部の活性化関数を、学習における正伝播時及び推論時には、図３に示したような剰余演算関数を用い、学習における逆伝播時には、剰余演算関数の波形に近似する、高次の三角関数を近似関数としている。
【００８６】
そして、ＭＮＩＳＴデータセットの中の学習用データを用いてニューラルネットワークモデル１２における学習処理を行い、その学習処理によって得られた設定値が設定されたニューラルネットワークモデル２２に、ＭＮＩＳＴデータセットのテスト用データを入力して画像認識行い、得られた認識結果についての正答率を測定した。実施例２においては、正答率の最小が８９．５％、正答率の最大が９８．０％、正答率の平均が９４．４％となった。
【００８７】
参考例１においては、ニューラルネットワークモデル１２，２２における各活性化関数処理部の活性化関数として、既存の活性化関数（Ｒｅｌｕ関数等）を近似多項式とした関数を用いて、実施例と同様に学習処理及び推論処理を行い、得られた認識結果についての正答率を測定した。参考例１においては、正答率の最小が８４．５％、正答率の最大が９４．０％、正答率の平均が９０．３％となった。
【００８８】
参考例２においては、ニューラルネットワークモデル１２，２２における各活性化関数処理部の活性化関数として、Ｒｅｌｕ関数を用いて、実施例と同様に学習処理及び推論処理を行い、得られた推論結果についての正答率を測定した。参考例２においては、正答率の最小が９２．０％、正答率の最大が９８．５％、正答率の平均が９５．５％となった。
【００８９】
実施例１、実施例２、参考例１、及び参考例２における正答率を参照すると、実施例１及び実施例２においては、Ｒｅｌｕ関数や、近似多項式の関数を用いた場合と同様に比較的高い正答率を実現することができることがわかる。したがって、ニューラルネットワークにおける活性化関数として剰余演算関数や剰余演算関数の波形の近似関数を使用できる、すなわち、十分に使用に耐えうることがわかる。
【００９０】
次に、第２実施形態に係る処理システムについて説明する。なお、以下においては、第１実施形態に係る処理システムと異なる点を中心に説明する。
【００９１】
まず、第２実施形態に係る処理システムの概要について説明する。
【００９２】
第２実施形態に係る処理システムは、第１実施形態に係る処理システムの推論装置におけるニューラルネットワークモデルの或る処理レイヤー(前処理レイヤー)と、その処理レイヤーの次の活性化関数処理を行う処理レイヤー(活性化関数レイヤー)との組に着目してなされたものである。
【００９３】
例えば、前処理レイヤーで処理をした後に、活性化関数レイヤーにおける活性化関数を剰余演算関数とする活性化関数処理を実行することは、例えば、前処理レイヤーにおいて剰余演算付きの加減算処理を行うことと同じである。このことから、前処理レイヤーにおいて、剰余演算付きの加減算処理を行うようにすると、活性化関数レイヤーにおける処理を省略しても同様な結果が得られるようにすることができることがわかる。
【００９４】
ここで、前処理レイヤーの入力データとして、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われたデータ(暗号化データ)とする場合を考える。有限巡回群上の演算に対して準同型な性質を持っている準同型暗号とは、暗号化データが有限巡回群上のデータとなる性質をもった暗号方式であり、加法準同型暗号においては、例えば、Ｐａｉｌｌｉｅｒ暗号や、ｌｉｆｔｅｄ−ＥｌＧａｍａｌ暗号が、これに該当する。
【００９５】
ここで、加法準同型暗号とは、暗号化されていないデータ（平文データ）に対して平文データ空間上の加法演算により得られる結果が、暗号化データに対して、加法演算に対応する暗号化データ空間上の演算（対応演算）を行って得られた結果を復号することにより得られる技術である。すなわち、加法準同型暗号は、暗号化データに対して対応演算を行って復号することにより、平文データに対して加法演算をした結果が得られる技術である。例えば、Ｐａｉｌｌｉｅｒ暗号においては、平文データ空間上の剰余演算付き加減算は、暗号化データ空間上においては、剰余演算付き乗算演算となる。ここで、剰余演算付きとは、演算の結果の全体に対して剰余演算が行われることを意味する。
【００９６】
上記した有限巡回群上の演算に対して準同型な性質を持っている準同型暗号（例えば、Ｐａｉｌｌｉｅｒ暗号やｌｉｆｔｅｄ−ＥｌＧａｍａｌ暗号）、で暗号化された暗号化データを前処理レイヤーの入力データとする。そして、前処理レイヤーにおいて、暗号化データに対して剰余演算付き乗算を行った結果は、平文データの剰余演算付き加減算を行ったものと同一の性質を持つこととなる。剰余演算付き乗算は、平文データの剰余演算付き加減算に対応する暗号空間上の演算(対応演算)である。
【００９７】
したがって、前処理レイヤーにおいて、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われた暗号化データに対して、平文データの剰余演算付き和演算に対応する暗号化データ空間上の演算を行うことにより、その後ろ（直後又は、処理前までに非線形分離が必要な次の処理レイヤーとの間）の活性化関数処理を行う処理レイヤー、すなわち、平文データにおける活性化関数を実行する活性化関数レイヤーに対応する処理レイヤー(活性化関数対応レイヤー)を省略することができることがわかる。
【００９８】
そこで、本実施形態の推論装置２０Ａは、図４に示す第１実施形態の推論装置２０のニューラルネットワークモデル２２の各処理レイヤーに対応する暗号化データ用の処理レイヤーを持つニューラルネットワークモデルにおいて、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われた暗号化データに対して、平文データの和演算に対応する暗号化データ空間上の演算を行う処理レイヤーの次の活性化関数対応レイヤーの少なくとも１つを省略したニューラルネットワークモデル２２Ａを用いて処理をするようにしている。なお、学習装置１０側のニューラルネットワークモデル１２における、省略された活性化関数対応レイヤーに対応する活性化関数レイヤーで使用される活性化関数は、第１実施形態で示した活性化関数であって、ニューラルネットワークモデル２２Ａの構成及び使用される暗号化データの構成等に応じて、活性化関数対応レイヤーを省略した場合に同様な処理結果が得られるような活性化関数に設定する必要がある。
【００９９】
次に、第２実施形態に係る処理システムについて詳細に説明する。
【０１００】
第２実施形態に係る処理システムは、推論装置２０に代えて推論装置２０Ａ(図９参照)を備え、クライアント装置３０に代えてクライアント装置３０Ａ(図１０参照)を備えている。
【０１０１】
図９は、第２実施形態に係る推論装置の機能構成図である。なお、推論装置２０Ａのハードウェア構成は、推論装置２０と同様である。
【０１０２】
推論装置２０Ａは、ニューラルネットワークモデル２２Ａを備える。ニューラルネットワークモデル２２Ａは、第１実施形態に係るニューラルネットワークモデル２２における活性化関数レイヤー以外の処理レイヤー(主処理レイヤー)に対応する処理レイヤー(対応主処理レイヤー)を含んでいる。例えば、ニューラルネットワークモデル２２Ａは、ニューラルネットワークモデル２２における主処理レイヤーである、レイヤー１の畳込処理部２３−１、レイヤー３のプーリング処理部２３−３、レイヤーＮ−１のアフィン処理部２３−ｎ−１等のそれぞれに対応する暗号化データ空間上の演算処理を実行する対応主処理レイヤーである、畳込処理部２３Ａ−１、プーリング処理部２３Ａ−３、アフィン処理部２３Ａ−ｎ−１等を含んでいる。なお、本実施形態においては、ニューラルネットワークモデル２２における最後尾の一部のレイヤー（本例では、レイヤーＮのＳｏｆｔＭａｘ処理部２３−ｎ）における処理は、暗号化データ空間上の演算処理として実行することはできないので、ニューラルネットワークモデル２２Ａには、レイヤーＮのＳｏｆｔＭａｘ処理部２３−ｎに対応する処理レイヤーを含めず、レイヤーＮの処理については、後述するようにクライアント装置３０Ａで実行するようにしている。
【０１０３】
ニューラルネットワークモデル２２Ａにおいては、第１実施形態に係るニューラルネットワークモデル２２における、直前に平文データの和演算の処理を実行する処理レイヤー（本実施形態では、例えば、レイヤー１、レイヤー３、レイヤＮ−１等がこれに該当するものとする）が存在する活性化関数レイヤーに対応する処理レイヤー(活性化関数対応レイヤー)の少なくとも１つについては、上述したように、平文データの剰余演算付き和演算に対応する暗号化データ空間上の演算を行う処理レイヤーによる処理により、活性化関数レイヤーとその直前の処理レイヤーとの組の処理と同様な結果を得られるようにすることができるので、省略されている。したがって、ニューラルネットワークモデル２２Ａにおいては、例えば、レイヤー１の畳込処理部２３Ａ−１と、プーリング処理部２３Ａ−３とのように、主処理レイヤー同士が直接接続された構成部分を含んでいる。なお、学習装置１０のニューラルネットワークモデル１２における、省略された活性化関数対応レイヤーに対応する活性化関数レイヤーで使用される活性化関数は、第１実施形態で示した活性化関数であって、ニューラルネットワークモデル２２Ａ側の対応する部分での処理結果が、同一又はより近い結果が得られるように設定されている。
【０１０４】
本実施形態に係る推論装置２０Ａでは、入力部の一例としての受信部２８がクライアント装置３０Ａから、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われた暗号化データを対象データとして受信し、記憶部２５に格納し、推論制御部２４が記憶部２５から対象データを取得し、ニューラルネットワークモデル２２Ａに入力して推論処理を実行する。ニューラルネットワークモデル２２ＡのレイヤーＮ−１のアフィン処理部２３Ａ−ｎ−１による推論結果(推論結果(途中))が推論結果送信部２９に出力され、推論結果送信部２９が推論結果(途中)をクライアント装置３０Ａに送信する。
【０１０５】
次に、ニューラルネットワークモデル２２Ａにおける或るアフィン処理レイヤーにおける処理の具体例について説明する。アフィン処理レイヤーは、直前のレイヤーから入力された複数のデータの総和を算出する処理を実行するレイヤーである。
【０１０６】
ここで、アフィン処理レイヤーには、直前のレイヤーからＰａｉｌｌｉｅｒ暗号による複数の暗号化データ（第１暗号化データ、第３暗号化データ）が入力されるものとして説明する。なお、本説明においては、説明を容易にするために入力される暗号化データが２つとしているが、３つ以上の暗号化データが入力される場合も同様な処理となる。
【０１０７】
暗号に係る処理で使用する各種設定を以下に示すように決定しておく。すなわち、暗号において使用する安全な素数ｐ及びｑを用意する。なお、素数の決定における手順や注意点は、ＲＳＡ暗号と同じでよい。また、Ｎ＝ｐ×ｑとする。また、ｋを０≦ｋ≦Ｎ−１の範囲で任意に設定する。ｇ＝１＋ｋＮとする。ここで、ｐ、ｑは、秘密鍵、ｇ、Ｎは、公開鍵、兼システムパラメータである。
【０１０８】
アフィン処理レイヤーに入力される暗号化データＣ１、Ｃ２は、以下の式（１）、（２）に示すように表される。なお、暗号化データＣ１は、平文データｍ１（０≦ｍ１≦Ｎ−１）をＰａｉｌｌｉｅｒ暗号により暗号化した暗号化データであり、暗号化データＣ２は、平文データｍ２（０≦ｍ２≦Ｎ−１）をＰａｉｌｌｉｅｒ暗号により暗号化した暗号化データである。
Ｃ１＝ｇｍ１×ｒ１Ｎ  ｍｏｄ  Ｎ２      ・・・（１）
Ｃ２＝ｇｍ２×ｒ２Ｎ  ｍｏｄ  Ｎ２      ・・・（２）
ここで、ｒ１（０≦ｒ１≦Ｎ−１）、及びｒ２（０≦ｒ２≦Ｎ−１）は、乱数である。
【０１０９】
アフィン処理レイヤーでは、以下の式（３）に示す演算を行って処理結果Ｃ３（第２暗号化データ、第４暗号化データ）を算出する。
Ｃ３＝Ｃ１  ×  Ｃ２  ｍｏｄ  Ｎ２      ・・・（３）
式（３）を変形すると、以下の式（４）に示すように表される。
Ｃ３＝Ｃ１  ×  Ｃ２  ｍｏｄＮ２ 
＝（ｇｍ１×ｒ１Ｎ）×（ｇｍ２×ｒ２Ｎ）  ｍｏｄ  Ｎ２ 
＝ｇｍ１＋ｍ２×（ｒ１×ｒ２）Ｎ  ｍｏｄ  Ｎ２ 
＝（ｇｍ１＋ｍ２  ｍｏｄ  Ｎ２×（ｒ１×ｒ２）Ｎ  ｍｏｄ  Ｎ２）  ｍｏｄ  Ｎ２      ・・・（４）
【０１１０】
ここで、ｇｘ  ｍｏｄ  Ｎ２を二項定理に従って展開すると、以下の式（５）に示すように表すことができる。
ｇｘ  ｍｏｄ  Ｎ２＝（１＋ｋＮ）Ｘ  ｍｏｄ  Ｎ２＝１＋ｘｋＮ＋ｘ（ｘ−１）／２×ｋ２Ｎ２＋・・・・ｍｏｄ  Ｎ２  ・・・（５）
式（５）の右辺については、第３項以降は、必ずＮ２が係数として掛かっているため、ｍｏｄ  Ｎ２では、０となる。
この結果、以下の式（６）に示す関係が得られる。
ｇｘ  ｍｏｄ  Ｎ２＝１＋ｘｋＮ  ｍｏｄ  Ｎ２  ・・・（６）
式（６）において、ｘ＝Ｎとすると、以下の式（７）に示す関係が成り立つ。
ｇＮ  ｍｏｄ  Ｎ２＝１＋ＮｋＮ  ｍｏｄ  Ｎ２  ＝１・・・（７）
式（７）によると、以下の式（８）が成り立つことがわかる。
ｇｘ＋ｙＮ  ｍｏｄ  Ｎ２＝ｇｘ×ｇｙＮ  ｍｏｄＮ２  ＝ｇｘ×（ｇＮ）ｙ  ｍｏｄ  Ｎ２＝ｇｘ×１ｙ  ｍｏｄ  Ｎ２＝ｇｘ  ｍｏｄ  Ｎ２・・・（８）
ここで、ｙは、任意の整数である。
【０１１１】
式（８）にｘ＝ｍ１＋ｍ２を代入すると、以下の式（９）が得られる。
ｇｍ１＋ｍ２  ｍｏｄ  Ｎ２＝ｇｍ１＋ｍ２＋ｙＮ  ｍｏｄＮ２  ・・・（９）
式（９）を式（４）に代入すると、Ｃ３は、以下の式（１０）に示すようになる。
Ｃ３＝（ｇｍ１＋ｍ２＋ｙＮ  ｍｏｄ  Ｎ２×（ｒ１×ｒ２）Ｎ  ｍｏｄ  Ｎ２）  ｍｏｄ  Ｎ２  ・・・（１０）
ｍ１及びｍ２の値域により、ｍ１＋ｍ２の値域は、以下の式（１１）に示すようになる。
０≦ｍ１＋ｍ２≦２Ｎ−２  ・・・（１１）
したがって、ｍ１＋ｍ２＋ｙＮの値域は、ｙを０又は−１とすれば、式（１２）を満たすに示すようになる。
０≦ｍ１＋ｍ２＋ｙＮ≦Ｎ−１  ・・・（１２）
このようなｙであるとすると、ｍ１＋ｍ２＋ｙＮ＝ｍ１＋ｍ２  ｍｏｄ  Ｎと表現できる。
【０１１２】
この結果、式（１０）は、式（１３）に示すように表される。
Ｃ３＝（ｇｍ１＋ｍ２  ｍｏｄ  Ｎ  ｍｏｄ  Ｎ２×（ｒ１×ｒ２）Ｎ  ｍｏｄ  Ｎ２）  ｍｏｄ  Ｎ２  ・・・（１３）
【０１１３】
次に、アフィン処理レイヤーによる式（１３）に示す処理結果Ｃ３を復号する場合について説明する。
【０１１４】
Ｃ３を復号するために以下の式（１４）に示す復号用データＤ’が算出される。
Ｄ’＝Ｃ３（ｐ−１）（ｑ−１）  ｍｏｄ  Ｎ２・・・（１４）
式（１４）に、式（１３）を代入すると、復号用データＤ’は、式（１５）に示すように表される。
Ｄ’＝（ｇｍ１＋ｍ２ ｍｏｄ Ｎ×（ｐ−１）×（ｑ−１）  ｍｏｄ  Ｎ２×（ｒ１×ｒ２）Ｎ×（ｐ−１）×（ｑ−１）  ｍｏｄ  Ｎ２）  ｍｏｄ  Ｎ２・・・（１５）
オイラーのトーシエント関数を計算すると、
φ（Ｎ２）＝φ（ｐ２ｑ２）＝ｐ（ｐ−１）ｑ（ｑ−１）＝Ｎ（ｐ−１）（ｑ−１）であるので、オイラーの定理によって、任意のａに対して、以下の式（１６）が成り立つ。
ａＮ×（ｐ−１）×（ｑ−１）Ｎ１  ｍｏｄ  Ｎ２  ＝１  ・・・（１６）
式（１６）によると、（ｒ１×ｒ２）Ｎ×（ｐ−１）×（ｑ−１）  ｍｏｄ  Ｎ２）  ｍｏｄ  Ｎ２＝１となる。
したがって、式（１５）は、以下の式（１７）に示すように表される。
Ｄ’＝（ｇｍ１＋ｍ２  ｍｏｄ  Ｎ×（ｐ−１）×（ｑ−１）  ｍｏｄ  Ｎ２・・・（１７）
式（６）の関係を用いると、式（１７）は、以下の式（１８）に変形できる。
Ｄ’＝１＋（ｍ１＋ｍ２  ｍｏｄ  Ｎ）×（ｐ−１）×（ｑ−１）ｋＮ  ｍｏｄ  Ｎ２・・・（１８）
【０１１５】
次に、復号データＤを以下の式（１９）により算出する。
Ｄ＝（Ｄ’−１）／Ｎ×（ｋ×（ｐ−１）×（ｑ−１））−１  ｍｏｄ  Ｎ・・・（１９）
ここで、任意のａに対するａ−１は、ａのｍｏｄ  Ｎにおける逆元（言い換えれば、ａ×ａ−１  ｍｏｄ  Ｎ  ＝１を満たす値）を示す。なお、Ｎについては、ｍｏｄ  Ｎ２における逆元が存在しないため、単純に除算を行う式となっている。
式（１９）に式（１８）に示すＤ’を代入すると、復号データＤは、式(２０)に示すように表される。
Ｄ＝ｍ１＋ｍ２  ｍｏｄ  Ｎ・・・（２０）
【０１１６】
式（２０）に示すように、アフィン処理レイヤーによる処理結果Ｃ３は、復号することによって、平文データｍ１と平文データｍ２に対してｍｏｄ  Ｎ演算を行った結果となる。
【０１１７】
したがって、暗号空間上での上記したアフィン処理レイヤーの処理を実行し、その後に活性化関数レイヤーに対応する処理(非線形分離するための関数による処理）を行うことなく、平文データの加減演算を行う処理レイヤー及びｍｏｄ演算を行う活性化関数レイヤーを実行した処理結果に対応する暗号空間上の処理結果を得ることができる。
【０１１８】
本実施形態に係る推論装置２０Ａでは、ニューラルネットワークモデル２２Ａにおいては、少なくとも１つの活性化関数対応レイヤーが省略されているので、ニューラルネットワークモデル２２Ａによる処理の処理負荷を軽減することができる。また、対象データが暗号化データであり、ニューラルネットワークモデル２２Ａでは、暗号化データのままでの処理が実行されるので、推論装置２０Ａから情報が漏えいしてしまうことを適切に防止することができる。
【０１１９】
次に、クライアント装置３０Ａについて詳細に説明する。
【０１２０】
図１０は、第２実施形態に係るクライアント装置の機能構成図である。なお、クライアント装置３０Ａのハードウェア構成は、クライアント装置３０と同様である。
【０１２１】
クライアント装置３０Ａは、クライアント装置３０に対して、更に、暗号部３７と、復号部３８と、ＳｏｆｔＭａｘ処理部２３−ｎとを備える。
【０１２２】
暗号部３７は、記憶部３３に格納されている暗号化されていない対象データ３４を、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号（例えば、Ｐａｉｌｌｉｅｒ暗号）による暗号化を行い、送信部３２に渡す。
【０１２３】
復号部３８は、受信部３６を介して、推論装置２０Ａから送信された推論結果（途中）を受け取り、推論結果(途中)に対して暗号部３７の暗号方式に対応する復号化を行い、復号された推論結果(途中)をＳｏｆｔＭａｘ処理部２３−ｎに渡す。
【０１２４】
ＳｏｆｔＭａｘ処理部２３−ｎは、第１実施形態に係るニューラルネットワークモデル２２のＳｏｆｔＭａｘ処理部２３−ｎと同じ処理を実行する処理部であり、復号された推論結果（途中）を入力として、ソフトマックス関数による処理を実行し、最終的な推論結果(推論結果(最終))を記憶部３３に格納する。
【０１２５】
次に、第２実施形態に係る処理システム１における処理動作について説明する。
【０１２６】
図１１は、第２実施形態に係る処理システムの動作を示すシーケンス図である。なお、図６に示す第１実施形態に係る処理システムの動作と同一部分には同一の符号を付し、重複する説明を省略する。
【０１２７】
クライアント装置３０Ａの暗号部３７は、記憶部３３から対象データ３４を取得し、対象データ３４を所定の暗号により暗号化し(Ｓ１１２)、送信部３２は、暗号化した対象データを推論装置２０Ａに送信する（Ｓ１１３）。
【０１２８】
推論処理２０Ａの推論制御部２４は、記憶部２５から暗号化された対象データ２６を読み出して、ニューラルネットワークモデル２２Ａの最初の処理レイヤー（レイヤー１）の処理部２３に入力する。この結果、ニューラルネットワークモデル２２において、対象データ２６を対象とした推論処理が実行されて、処理レイヤー（レイヤーＮ−１）の処理部２３Ａ（アフィン処理部２３Ａ−ｎ−１）から推論結果(途中)が推論結果送信部２９に出力されることとなる（Ｓ１０８）。
【０１２９】
次いで、推論装置２０Ａの推論結果送信部２９は、ニューラルネットワークモデル２２Ａから渡された推論結果(途中)を対象データの推論処理を要求したクライアント装置３０Ａに対して送信する（Ｓ１１４）。
【０１３０】
クライアント装置３０Ａの受信部３６は、推論装置２０Ａから推論結果(途中)を受信して復号部３８に渡し、復号部３８が推論結果(途中)を復号化し（Ｓ１１５）、ＳｏｆｔＭａｘ処理部２３−ｎに渡す。ＳｏｆｔＭａｘ処理部２３−ｎは、推論結果(途中)を入力として、推論処理の残りの処理を実行して推論結果(最終)を得て（Ｓ１１６）、推論結果(最終)を記憶部３３に格納する（Ｓ１１７）。
【０１３１】
以上説明したように、第２実施形態に係る処理システムによると、推論装置２０Ａでは、ニューラルネットワークモデル２２Ａにおいては、少なくとも一部の活性化関数レイヤーに対応する処理レイヤーが省略されているので、ニューラルネットワークモデル２２Ａによる処理の処理負荷を軽減でき、処理時間を短縮することができる。また、推論装置２０Ａでは、対象データを暗号化データとしているので、推論装置２０Ａから情報が漏えいしてしまうことを適切に防止することができる。
【０１３２】
次に、第３実施形態に係る処理システムについて説明する。なお、以下においては、第１実施形態及び第２実施形態に係る処理システムと異なる点を中心に説明する。
【０１３３】
第３実施形態に係る処理システムは、第２実施形態に係る処理システムにおいて、学習装置１０に代えて、学習装置１０Ａを備え、学習装置１０Ａにおいて、暗号化された学習用データを用いて学習を行うようにしたものである。
【０１３４】
図１２は、第３実施形態に係る学習装置の機能構成図である。なお、第１実施形態に係る学習装置と同様な構成については同一の符号を付している。また、学習装置１０Ａのハードウェア構成は、学習装置１０と同様である。
【０１３５】
学習装置１０Ａは、ニューラルネットワークモデル１２に代えて、ニューラルネットワーク１２Ａを備え、暗号部１９１と、復号部１９２とをさらに備える。
【０１３６】
暗号部１９１は、学習用データを、クライアント装置３０Ａにおける対象データに対する暗号方式と同じ暗号方式により暗号化して、ニューラルネットワークモデル１２Ａに入力する。
【０１３７】
ニューラルネットワーク１２Ａは、正伝播を実行する場合の構成と、逆伝播を実行する場合の構成とが異なっている。
【０１３８】
正伝播を実行する場合には、ニューラルネットワーク１２Ａは、推論装置２０Ａのニューラルネットワークモデル２２Ａと同様な処理レイヤーを構成する処理部（レイヤー１の畳込処理部１３Ａ−１、レイヤー３のプーリング処理部１３Ａ−３、レイヤーＮ−１のアフィン処理部１３Ａ−ｎ−１等）と、復号部１９２と、レイヤーＮのＳｏｆｔＭａｘ処理部１３−ｎとを含むモデルとして利用される。正伝播時における畳込処理部１３Ａ−１、プーリング処理部１３Ａ−３、アフィン処理部１３Ａ−ｎ−１等は、推論装置２０Ａのニューラルネットワークモデル２２Ａの畳込処理部２３Ａ−１、プーリング処理部２３Ａ−３、アフィン処理部２３Ａ−ｎ−１等と同様な処理を実行する。復号部１９２は、レイヤーＮから出力される推論結果（途中）を受け取り、推論結果(途中)に対して暗号部１９１の暗号方式に対応する復号化を行い、復号された推論結果(途中)をＳｏｆｔＭａｘ処理部１３−ｎに渡す。
【０１３９】
一方、逆伝播を実行する場合には、ニューラルネットワーク１２Ａは、学習装置１０のニューラルネットワークモデル１２の逆伝播を実行する場合の構成と同様なモデルとして利用される。すなわち、逆伝播時における畳込処理部１３Ａ−１、プーリング処理部１３Ａ−３、アフィン処理部１３Ａ−ｎ−１等は、学習装置１０のニューラルネットワークモデル１２の畳込処理部１３−１、プーリング処理部１３−３、アフィン処理部１３−ｎ−１と同様な処理を実行する。それぞれの活性化関数処理部１３における活性化関数は、第１実施形態における逆伝播時の活性化関数と同様な活性化関数、すなわち、ノコギリ波に近似された近似関数（例えば、双曲線関数）となっている。
【０１４０】
上記した学習装置１０Ａによると、正伝播の実行時には、推論装置２０Ａで使用する対象データと同じ暗号化により暗号化された学習用データを用いて、推論装置２０Ａのニューラルネットワーク２２Ａと同じ構成又は同じ構成部分を含むニューラルネットワークモデル１２Ａにより処理を行うことができるので、推論装置２０Ａのニューラルネットワークモデル２２Ａと同様な処理結果を出力することができ、この出力に基づいて、逆伝播を行って設定値を学習することができる。これにより、推論装置２０Ａで使用されるニューラルネットワークモデル２２Ａにより適した設定値を学習することができ、結果として推論装置２０Ａを用いた推論処理の精度を向上することができる。
【０１４１】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【０１４２】
例えば、上記実施形態では、画像認識を行うＣＮＮが構成される処理システムに対して本発明を適用した例を示していたが、本発明は、画像認識以外の推論処理を実行するニューラルネットワークが構成される処理システムに対しても適用することができる。
【０１４３】
また、上記実施形態においては、活性化関数を剰余演算関数としていたが、本発明はこれに限られず、同様な変化をする関数であれば、剰余演算関数でなくてもよい。
【０１４４】
また、上記実施形態において、活性化関数を、入力値が取り得る最小値から第１値までの範囲（第１範囲）においては、入力値が大きくなるほど出力値の最小値に近づくように変化し、入力値が第１値の場合には、出力値が出力値の最大値となり、入力値が第１値から入力値の取り得る最大値までの範囲（第２範囲）においては、入力値が大きくなるほど出力値が最大値から離れるように変化する波形の関数又はこの波形に近似された関数としてもよい。すなわち、活性化関数は、入力値の取り得る値の最小値から第１値までの第１範囲においては、入力値が大きくなるほど出力値が出力値の最大値又は最小値の一方に近づくように変化し、入力値が第１値から入力値の取り得る最大値までの第２範囲においては、入力値が大きくなるほど出力値が出力値の最大値又は最小値の他方から離れるように変化し、第１範囲における出力値と、第２範囲における出力値とは、同一の出力値をとらないような波形の関数又はこの波形に近似された波形としてもよい。
【０１４５】
また、上記実施形態においては、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号であれば、完全準同型暗号や、ＳｏｍｅＷｈａｔ準同型暗号を用いてもよい。いずれの準同型暗号を用いても、推論処理における処理の負荷を軽減することができる。また、ＳｏｍｅＷｈａｔ準同型暗号を用いた場合には、活性化関数対応レイヤーを省略することにより、演算回数を低減することができるので、ＳｏｍｅＷｈａｔ準同型暗号における演算回数の制限内でより多くの処理を実行することができる。
【０１４６】
また、例えば、学習装置１０や推論装置２０で、平文データを用いて処理をする場合において、処理レイヤーにおいて、平文データに対する加減算演算等の演算を行い、次の処理レイヤーで活性化関数による処理を行うようにしていたが、本発明はこれに限られず、例えば、処理レイヤーにおいて、平文データに対する剰余演算付きの演算を行うようにして、後ろの処理レイヤー（直後の処理レイヤー又は、実行前までに非線形分離が必要な次の処理レイヤーよりも前の処理レイヤー）において剰余演算付きの演算の演算結果に対する活性化関数による処理（非線形分離を行う関数の処理）を行わないようにしてもよい。
【０１４７】
また、上記第２実施形態において、活性化関数レイヤー以外の処理レイヤーの直後の活性化関数レイヤーを省略するようにしていたが、本発明はこれに限られず、活性化関数レイヤー以外の処理レイヤーよりも後ろに配置され、その実行前までに非線形分離が必要な次の処理レイヤーよりも前の活性化関数レイヤーを省略するようにしてもよい。
【０１４８】
また、上記実施形態において、学習装置１０（１０Ａ）、推論装置２０（２０Ａ）、又はクライアント装置３０（３０Ａ）のＣＰＵ１０１がプログラムを実行することにより構成していた機能部の少なくとも一部を、各装置内の他のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。また、学習装置１０（１０Ａ）のＧＰＵ１０３により構成していた処理部１３（畳込処理部１３−１等）を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、推論装置２０（２０Ａ）のＧＰＵ１０３により構成していた処理部２３（畳込処理部２３−１等）を、ＣＰＵ１０１により構成するようにしてもよく、別のハードウェア回路で構成してもよい。
【０１４９】
また、上記実施形態では、対象データを受け付ける入力部の一例として通信部２８を例に挙げていたが、本発明はこれに限られず、例えば、入力部として、対象データが格納された記録媒体から対象データを読み取るリーダライタとしてもよく、また、対象データとなる画像データを取り込むカメラとしてもよい。
【０１５０】
また、上記実施形態では、学習装置１０（１０Ａ）と推論装置２０（２０Ａ）を別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、同一のハードウェアにより構成してもよい。
【０１５１】
また、上記実施形態では、推論装置２０（２０Ａ）とクライアント装置３０（３０Ａとを別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、例えば、クライアント装置３０の処理能力が十分であれば、推論処理２０（２０Ａ）とクライアント装置３０（３０Ａ）とを同一のハードウェアにより構成してもよい。
【符号の説明】
【０１５２】
１…処理システム、１０，１０Ａ…学習装置、１１…学習部、１２，１２Ａ…ニューラルネットワークモデル、１３…処理部、１４…学習制御部、１５…記憶部、１６…学習用データ、１７…設定値情報、１８…設定値通知部、２０，２０Ａ…推論装置、２１…推論部、２２，２２Ａ…ニューラルネットワークモデル、２３…処理部、２４…推論制御部、２５…記憶部、２６…対象データ、２７…設定値情報、２８…受信部、２９…推論結果送信部、３０，３０Ａ…クライアント装置、３７，１９１…暗号部、３８，１９２…復号部、１０１…ＣＰＵ
【図１】
2019095635.tif 000003
【図２】
2019095635.tif 000004
【図３】
2019095635.tif 000005
【図４】
2019095635.tif 000006
【図５】
2019095635.tif 000007
【図６】
2019095635.tif 000008
【図７】
2019095635.tif 000009
【図８】
2019095635.tif 000010
【図９】
2019095635.tif 000011
【図１０】
2019095635.tif 000012
【図１１】
2019095635.tif 000013
【図１２】
2019095635.tif 000014