(58)【調査した分野】(Int.Cl.,DB名)
活性化関数に非線形関数を採用した第1ニューラルネットワークを用いて、ニューラルネットワークに含まれる各ニューロン間の結合の重み及びバイアスの少なくとも一方を含むパラメータを調整した学習済みモデルを取得する取得部と、
前記学習済みモデルにしたがって、活性化関数に前記非線形関数の近似多項式を採用した第2ニューラルネットワークにパラメータを設定する設定部と、
暗号化されたデータが入力されたとき、前記第2ニューラルネットワークを用いて、前記暗号化されたデータを暗号化したまま推論処理を実行する推論部と、
を備えることを特徴とする推論装置。
活性化関数に非線形関数を採用した第1ニューラルネットワークを用いて、ニューラルネットワークに含まれる各ニューロン間の結合の重み及びバイアスの少なくとも一方を含むパラメータを調整した学習済みモデルを取得し、
前記学習済みモデルにしたがって、活性化関数に前記非線形関数の近似多項式を採用した第2ニューラルネットワークにパラメータを設定し、
暗号化されたデータが入力されたとき、前記第2ニューラルネットワークを用いて、前記暗号化されたデータを暗号化したまま推論処理を実行する、
処理をコンピュータに実行させることを特徴とする推論プログラム。
【背景技術】
【0002】
サーバ・クライアントモデルにおいて、サーバ装置側でデータを処理するとき、個人情報などの機密性の高い情報の流出を防止するために、サーバ・クライアント間で暗号化したデータを送受信する技術が知られている。
【0003】
サーバ・クライアントモデルでは、サーバ装置とクライアント装置との間でデータを暗号化して送受信することが行われている。この場合には、サーバ装置は、クライアント装置から受信した暗号化されたデータを
復号してから各種処理を実行する。そして、サーバ装置は、処理結果を暗号化してクライアント装置に送信する。クライアント装置は、サーバ装置から受信した暗号化された処理結果を
復号して平文の処理結果を得る。
【0004】
さらに、情報の流出を防止するために、サーバ装置において、暗号化したままのデータを
復号せずに処理することが行われている。データを暗号化したまま処理する技術としては、準同型暗号が知られている。
【0005】
サーバ装置は、準同型暗号を用いることにより、データを暗号化したままの状態で処理することが可能になる。また、クライアント装置は、サーバ装置から処理後の暗号化されたデータを取得し、取得した暗号化されたデータを復号する。これにより、クライアント装置は、データを平文で処理したときと同じ処理結果を得ることができる。以下の説明では、暗号化したままの状態を単に暗号化状態ともいう。
【0006】
サーバ・クライアントモデルを用いた処理を求められている技術分野の一つに、ニューラルネットワーク(Neural Network:NN)を用いた推論処理がある。これは、ニューラルネットワークの学習済みモデルのパラメータの規模が大きくなり、推論処理で実行する演算をクライアント装置の資源で実行するのが困難になってきたためである。したがって、サーバ・クライアントモデルを用いることにより、大規模な演算が可能であるサーバ装置の資源を利用して、サーバ装置で推論処理を実行することが求められている。
【0007】
ニューラルネットワークとは、ニューロンを複数結合し、入力層、中間層、及び出力層を構成するものである。ニューラルネットワークは、中間層を複数含んでいてもよい。また、中間層を複数含むニューラルネットワークを用いて機械学習することを、ディープラーニングという。ディープラーニングは、画像、文字、及び音声などの認識処理に用いられている。
【0008】
関連する技術として、暗号文処理装置は、第1のテキストデータが第1の順で多項式化されて第1の公開鍵で暗号化された第1の多項式を取得する。また、暗号文処理装置は、第1のテキストデータの各成分の2乗値ベクトルデータが第1の順で多項式化されて第1の公開鍵で暗号化された第1の2乗値多項式を取得する。さらに、暗号文処理装置は、第2のテキストデータが第2の順で多項式化されて第1の公開鍵で暗号化された第2の多項式と、第2のテキストデータの各成分の2乗値ベクトルデータが第2の順で多項式化されて第1の公開鍵で暗号化された第2の2乗値多項式とを取得する。そして、暗号文処理装置は、第1の多項式および第1の2乗値多項式と、第2の多項式および第2の2乗値多項式とを用いて、第2のテキストデータが第1のテキストデータに含まれるかを判定する技術が知られている。
【0009】
関連する他の技術として、サーバ装置は、活性化関数以外の演算部分について、準同型暗号を用いてデータを暗号化したまま演算を実行する。また、クライアント装置は、活性化関数に係る演算部分について、データを
復号して演算を実行する。サーバ装置は、活性化関数の演算をするたびに、クライアント側に演算結果を問い合わせるという技術が知られている。
【0010】
関連する他の技術として、準同型暗号のなかには、Somewhat準同型暗号(Somewhat Homomorphic Encryption:SHE)という種類がある。Somewhat準同型暗号は、所定回数の加算と乗算が暗号化状態で成立するという準同型暗号である。例えば、ベクトルの内積の計算は、一次の乗算とそれらの複数の加算で構成されるので、Somewhat準同型暗号が利用できる。そこで、ニューラルネットワークに含まれる非線形関数を、Somewhat準同型暗号で演算することが可能な回数の加算及び乗算で表現された線形関数に近似する。これにより、ニューラルネットワークで実行される各種処理を、データが暗号化された状態で実行することができるという技術が知られている(例えば、特許文献1
、特許文献
2、及び非特許文献
1参照)。
【発明を実施するための形態】
【0018】
[実施形態]
実施形態の推論装置について説明する。
【0019】
図1は、ニューラルネットワークの一実施例の構成を示す図である。
図1を参照して、ニューラルネットワークで行われる演算処理について説明する。
【0020】
入力層のニューロンの出力は、それぞれ重み係数w1で重み付けされて、中間層の各ニューロンに入力される。中間層のニューロンは、入力された各重み付きの値の総和をとることにより、a1、a2、a3を算出する。例えば、a1は、式(1)で算出される。
a1=x1×w1(11)+x2×w1(12) ・・・(1)
【0021】
また、中間層のニューロンの出力は、それぞれ重み係数w2で重み付けされて、各出力層に入力される。出力層の各ニューロンは、入力された各重み付きの値の総和をとることにより、y1、y2を算出する。例えば、y1は、式(2)で算出される。
y1=σ(a1)×w2(11)+σ(a2)×w2(12)
+σ(a3)×w2(13) ・・・(2)
【0022】
中間層の各ニューロンでは、
図1に示すように、演算結果a1、a2、a3に対して活性化関数σを用いて所定の演算を実行する。活性化関数は、入力信号の総和を出力信号に変換する関数である。
【0023】
ニューラルネットワークにおいて、活性化関数には、非線形関数が用いられる。これは、活性化関数に線形関数を用いた場合、出力が線形結合の形となる。すると、中間層を複数含むニューラルネットワークが中間層のないニューラルネットワークと同等になってしまうためである。
【0024】
活性化関数の種類には、式(3)に示すシグモイド(Sigmoid)関数、及び式(4)に示すReLU(Rectified Linear Unit)関数などがある。
σ(u)=1/(1+exp(−u)) ・・・(3)
σ(u)=u(u>0)、0(u≦0) ・・・(4)
【0025】
ニューラルネットワークのシステムを用いた推論処理では、情報の流出を防止するため、準同型暗号を用いることにより、データを暗号化した状態で処理することが考えられる。
しかし、上述したように、ニューラルネットワークの演算には、非線形関数の演算が含まれている。したがって、乗算と加算しかできない準同型暗号では、ニューラルネットワークの演算処理を実行することができない。
【0026】
そこで、ニューラルネットワークに含まれる活性化関数に、非線形関数の近似多項式を用いることにより、ニューラルネットワークの演算を準同型暗号上で実行することが考えられる。しかしながら、学習装置と、推論装置とを含む、ニューラルネットワークのシステムにおいて、活性化関数に準同型暗号を用いると、システム負荷が増大するという問題があった。
【0027】
上述の問題を解決するため、実施形態の推論装置は、活性化関数に非線形関数を採用したニューラルネットワークを用いて調整された学習済みモデルのパラメータを、活性化関数に非線形関数の近似多項式を採用したニューラルネットワークに設定する。そして、推論装置は、推論処理を実行する。以下の説明では、活性化関数に非線形関数の近似多項式を採用したニューラルネットワークのことを単に第2ニューラルネットワークともいう。
【0028】
これにより、実施形態の推論装置は、学習装置で実行される機械学習の負荷を小さくする。すなわち、実施形態の推論装置は、情報の流出を防止するために、推論処理に準同型暗号を用いたニューラルネットワークのシステムにおいて、システム負荷を抑制することができる。
【0029】
準同型暗号の方式は、近似多項式を計算可能な準同型暗号であればよい。近似多項式が四則演算を含む場合には、暗号文の乗算と加算とを演算可能なSomewhat準同型暗号、または完全準同型暗号などを用いてもよい。また、近似多項式が乗算及び加算のみを含む場合には、暗号文の加算を演算可能な加法準同型暗号、Somewhat準同型暗号、または完全準同型暗号を用いてもよい。
【0030】
なお、Somewhat準同型暗号、または完全準同型暗号は、乗算と加算とが可能なので、任意の演算を実行することが可能である。また、加法準同型暗号では、複数回の加算処理をすることにより、乗算を実行することが可能である。
【0031】
図2は、ニューラルネットワークのシステムの一実施例を示す機能ブロック図である。
図2を参照して、実施形態のニューラルネットワークのシステム(推論システム)について説明する。以下の説明では、画像認識処理に用いられるニューラルネットワークを一例として説明する。これに限らず、実施例のニューラルネットワークのシステムは、会話、運転支援、及び予測などの他の処理にも適用可能である。
【0032】
ニューラルネットワークのシステム100は、学習装置1と、推論装置2と、クライアント装置3とを含む。学習装置1は、例えば、推論処理のサービス提供者が有する情報処理装置である。また、推論装置2は、例えば、サーバ・クライアントモデルにおいてサーバ装置として利用される情報処理装置である。そして、クライアント装置3は、例えば、推論処理を利用するユーザが有する情報処理装置である。
学習装置1と、推論装置2と、クライアント装置3とは、例えば、ネットワークを介して互いに通信可能に接続される。
【0033】
学習装置1は、受付部11と、作成部12とを含む。
受付部11は、例えば、入力値に対応する目標値を示す組合せのセットが格納された学習セットの入力を受け付ける。
【0034】
作成部12は、活性化関数に非線形関数を採用した第1ニューラルネットワークを用いて、ニューラルネットワークに含まれる各ニューロン間の結合の重み及びバイアスの少なくとも一方を含むパラメータを調整した学習済みモデル40を作成する。学習済みモデル40に含まれるパラメータは、入力値を重み付けするための各ニューロン間の結合の重みと、出力信号の活性化を偏らせるためのバイアスとの少なくとも一方を含む。以下の説明では、活性化関数に非線形関数を採用した第1ニューラルネットワークのことを単に第1ニューラルネットワークともいう。
【0035】
作成部12は、受付部11により入力が受け付けられた学習セットを用いて、第1ニューラルネットワークのパラメータを調整する教師あり学習を実行する。作成部12は、例えば、学習セットを用いて学習処理をするとき、誤差逆伝播を用いて、入力値に対して対応する目標値が出力されるように、ニューラルネットワークのパラメータを繰り返し調整する。これにより、作成部12は、調整済みのパラメータを学習済みモデル40として出力する。
【0036】
なお、作成部12は、正解のないデータを読み込み、第1ニューラルネットワークのパラメータを調整する教師なし学習を実行し、学習済みモデル40を作成してもよい。また、作成部12は、将来の価値を最大化するように、第1ニューラルネットワークのパラメータを調整する強化学習を実行し、学習済みモデル40を作成してもよい。学習装置
1は、教師あり学習、教師なし学習、及び強化学習の少なくとも一つを実行してもよい。
【0037】
上述のように、学習装置1は、作成部12において、活性化関数に非線形関数を採用した第1ニューラルネットワークを用いて学習処理を実行している。これは、機械学習は、学習装置1で処理されるものであり、ネットワーク及びサーバ装置に情報を送信することがないためである。したがって、学習装置1は、ネットワーク及びサーバ装置上における情報の流出の防止よりも、学習処理における演算量を少なくすることを優先している。
【0038】
すなわち、実施形態のニューラルネットワークのシステムでは、学習処理において、第1ニューラルネットワークを用いて学習処理における演算量を少なくする。学習処理は、誤差逆伝播を用いてパラメータの調整を繰り返す演算を実行するため、正伝播で処理される推論処理よりも演算量が多くなる。したがって、実施形態のニューラルネットワークのシステムでは、学習処理において第1ニューラルネットワークを用いる。これにより、実施形態のニューラルネットワークのシステムは、繰り返しの演算の一回あたりの演算量を少なくし、ニューラルネットワークのシステム負荷を効率よく抑制する。
【0039】
推論装置2は、取得部21と、設定部22と、推論部23と、出力部24と、記憶部25とを含む。記憶部25は、学習済みモデル40を記憶する。
取得部21は、活性化関数に非線形関数を採用した第1ニューラルネットワークを用いて、ニューラルネットワークに含まれる各ニューロン間の結合の重み及びバイアスの少なくとも一方を含むパラメータを調整した学習済みモデル40を取得する。そして、取得部21は、取得した学習済みモデル40を記憶部25に記憶させてもよい。
【0040】
設定部22は、学習済みモデル40にしたがって、活性化関数に非線形関数の近似多項式を採用した第2ニューラルネットワークにパラメータを設定する。すなわち、設定部22は、第2ニューラルネットワークに含まれる各ニューロン間の結合の重み及びバイアスの少なくとも一方を設定する。
【0041】
推論部23は、暗号化されたデータが入力されたとき、第2ニューラルネットワークを用いて、暗号化されたデータを暗号化したまま推論処理を実行する。このとき、推論部23は、暗号化されたデータを暗号化されたまま用いて準同型暗号の演算を行うことにより、推論処理を実行する。暗号化されたデータは、準同型暗号を用いて、暗号化処理及び復号処理を実行するクライアント装置3から入力される。
【0042】
第1ニューラルネットワーク及び第2ニューラルネットワークは、例えば、畳み込み演算を実行する畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)である。畳み込みニューラルネットワークは、二次元的な入力に対して、フィルタによる畳み込み処理を実行することにより、入力データの特徴を抽出する畳み込み層、圧縮処理を行うプーリング層、及び最終段の全結合層を用いて推論処理を実行する。畳み込みニューラルネットワークは、主に画像認識に用いられる。
【0043】
推論部23は、畳み込みニューラルネットワークを用いた演算を実行する。畳み込み演算は、デジタル信号処理において、加算及び乗算で表現できる。これにより、推論部
23は、加算及び乗算のみを実行できる準同型暗号を用いて推論処理を実行することができる。なお、推論部23は、畳み込みニューラルネットワークに限らず、準同型暗号で計算可能な範囲内で、他のニューラルネットワークを用いた演算を実行してもよい。
【0044】
他のニューラルネットワークには、例えば、Recurrent Neural Network(RNN)、及び全結合型(フィードフォワード)などの教師ありニューラルネットワークがある。また、他のニューラルネットワークには、オートエンコーダ、及びボルツマンマシンなどの教師なしニューラルネットワークがある。
【0045】
準同型暗号には、前述したように、加法準同型暗号、somewhat準同型暗号、及び完全準同型暗号などの種類がある。加法準同型暗号は、加算のみが実行できる。somewhat準同型暗号は、加算及び有限回数の乗算を実行できる。完全準同型暗号は、加算及び乗算が実行できる。したがって、完全準同型暗号は、加算及び乗算を組み合わせることで、任意の処理を実行できる。処理速度は、加法準同型暗号が最も速く、somewhat準同型暗号、完全準同型暗号の順で遅くなる。
【0046】
推論部23では、推論処理の処理速度の向上及び処理負荷の抑制を優先するために加法準同型暗号を用いるとき、乗算の代わりに複数回の加算を実行してもよい。これにより、推論部23は、加法準同型暗号を用いて、畳み込みニューラルの演算を実行することができる。
【0047】
推論部23では、畳み込みニューラルネットワーク及び他のニューラルネットワークを実行するとき、somewhat準同型暗号を用いてもよい。推論部23では、somewhat準同型暗号を用いるとき、推論処理の処理速度の向上及び処理負荷の抑制と、処理精度とのどちらを優先するかにより、第2ニューラルネットワークの演算に含まれる非線形関数の近似多項式の次数及び加算回数
を調整してもよい。
【0048】
すなわち、第2ニューラルネットワークの演算に含まれる非線形関数の近似多項式は、推論処理の処理速度の向上及び処理負荷の抑制を優先するとき、次数を低くする及び加算回数を少なくする、の少なくとも一方の調整がされる。また、第2ニューラルネットワークの演算に含まれる非線形関数の近似多項式は、推論処理の処理精度の向上を優先するとき、次数を高くする及び加算回数を多くする、の少なくとも一方の調整がされる。近似多項式の次数を高くし、加算回数を多くすると、近似多項式がより元の非線形関数に近似するので、推論処理の精度が向上する。
【0049】
推論部23では、畳み込みニューラルネットワークと比較して、複雑な演算が含まれる他のニューラルネットワークを実行するとき、完全準同型暗号を用いてもよい。また、推論部23では、畳み込みニューラルネットワークを実行するときにおいても、完全準同型暗号を用いてもよい。
【0050】
推論部23は、暗号化されたデータで暗号化したまま推論処理を実行した結果、暗号化された状態の推論結果を出力する。推論部23では、準同型暗号を用いて暗号化されたデータを暗号化したまま推論処理するので、推論結果も暗号化された状態で出力される。
出力部24は、推論処理により得られる暗号化された推論結果をクライアント装置3に出力する。
【0051】
クライアント装置3は、取得部31と、暗号化部32と、
復号部33と、出力部34と、記憶部35とを含む。記憶部35は、推論結果50を記憶する。
取得部31は、推論処理の対象のデータを取得する。推論処理の対象のデータとは、例えば、画像、文字、及び音声などの認識対象のデータである。
暗号化部32は、推論処理の対象のデータに対して、準同型暗号の暗号化処理を実行する。これにより、暗号化部32は、暗号化されたデータを出力する。
【0052】
復号部33は、暗号化された推論結果が入力されたとき、暗号化された推論結果に対して、準同型暗号の
復号処理を実行する。そして、
復号部33は、
復号した推論結果50を記憶部35に記憶させてもよい。
出力部34は、暗号化部32により得られる暗号化されたデータを推論装置2に出力する。出力部34は、推論結果50を外部に出力してもよい。
【0053】
図3は、ニューラルネットワークのシステムにおける処理の一例を示すフローチャートである。
図4は、ニューラルネットワークに含まれるニューロンの一実施例を示す図である。
図5は、非線形関数の近似多項式の一実施例を示す図である。
【0054】
図3から
図5を参照して、ニューラルネットワークのシステムにおける処理について説明する。ニューラルネットワークのシステムにおける処理は、例えば、学習装置1、推論装置2、及びクライアント装置3のプロセッサによって実行される。以下の説明では、学習処理1のプロセッサ、推論処理2のプロセッサ、及びクライアント装置3のプロセッサのことを、単に学習装置1、推論装置2、及びクライアント装置3ともいう。
【0055】
図3を参照して説明する。
学習装置1は、学習セットが入力されると(S101)、学習セットの入力を受け付ける(S102)。そして、学習装置1は、活性化関数に非線形関数を採用した第1ニューラルネットワークを用いて、ニューラルネットワークに含まれる各ニューロン間の結合の重み及びバイアスの少なくとも一方を含むパラメータを調整した学習済みモデル40を取得する(S103)。そして、学習装置1は、作成した学習済みモデル40を推論装置に出力する(S104)。
【0056】
図4及び
図5を参照して説明する。
学習装置1における学習済みモデル40の作成処理では、暗号化されていない学習セットのデータを用いる。したがって、学習装置1は、例えば、
図4(a)に示すように、各ニューロンの活性化関数σに非線形関数を採用することができる。例えば、活性化関数σとしてシグモイド関数を採用した場合には、学習装置1は、式(3)に対応する
図5(a)の点線で示す関数を用いて学習済みモデル40を作成する。活性化関数σとしてReLU関数を採用した場合には、学習装置1は、式(4)に対応する
図5(b)の点線で示す関数を用いて学習済みモデル40を作成する。
【0057】
図3を参照して説明する。
推論装置2は、学習済みモデル40を取得する(S105)。このとき、推論装置2は、学習済みモデル40を記憶部25に記憶させてもよい。そして、推論装置2は、学習済みモデル40にしたがって、活性化関数に非線形関数の近似多項式を採用した第2ニューラルネットワークのパラメータを設定する(S106)。推論装置2は、推論処理が実行可能となったことをクライアント装置3に通知する(S107)。
【0058】
クライアント装置3は、推論装置2から推論が可能になったことを通知されると、推論処理の対象のデータの入力を受け付ける。そして、クライアント装置3は、推論処理の対象のデータが入力されると(S108)、推論処理の対象のデータを取得する(S109)。推論処理の対象のデータは、例えば、画像、文字、及び音声などである。推論処理の対象のデータは、例えば、カメラなどの撮影装置、キーボードなどの入力装置、及びマイクなどの集音装置を用いて、ユーザにより入力されてもよい。以下の説明では、推論処理の対象のデータのことを単に対象のデータともいう。
【0059】
クライアント装置3は、対象のデータに対して、準同型暗号の暗号化処理を実行する(S110)。そして、クライアント措置3は、暗号化された対象のデータを推論装置2に出力する(S111)。以下の説明において、暗号化された対象のデータのことを単に暗号化されたデータともいう。
推論装置2は、暗号化されたデータが入力されたとき、第2ニューラルネットワークを用いて、暗号化されたデータを暗号化したまま推論処理を実行する(S112)。そして、推論装置2は、推論処理により得られる暗号化された推論結果をクライアント装置に出力する(S113)。
【0060】
図4及び
図5を参照して説明する。
推論装置2における推論処理では、暗号化されたデータを暗号化したまま演算する処理をする。したがって、推論装置2は、例えば、
図4(b)に示すように、各ニューロンの活性化関数として非線形関数である活性化関数σの近似多項式fを採用する。例えば、活性化関数としてシグモイド関数の近似多項式fを採用した場合には、推論装置2は、下記式(5)に対応する
図5(a)の実線で示す関数を用いて推論処理を実行する。
【0061】
f
sig(x)=8*10
−15x
6+2*10
−5x
5−1*10
−12x
4−0.0028x
3+4*10
−11x
2+0.1672x+0.5 ・・・(5)
【0062】
活性化関数としてReLU関数の近似多項式fを採用した場合には、推論装置2は、下記式(6)に対応する
図5(b)の実線で示す関数を用いて推論処理を実行する。
f
re(x)=5*10
−8x
6−9*10
−20x
5−8*10
−5x
4+9*10
−17x
3+0.0512x
2+0.5x ・・・(6)
上述のように、活性化関数を多項式に近似することより、推論装置2は、準同型暗号を用いて対象のデータを暗号化したまま推論処理ができる。
【0063】
図3を参照して説明する。
クライアント装置3は、暗号化された推論結果が入力されたとき、暗号された推論結果に対して、準同型暗号の
復号処理を実行する(S114)。そして、クライアント装置3は、例えば、表示装置などに、推論結果を出力する(S115)。
【0064】
なお、S108〜S111は、S101〜S107よりも先に行われてもよい。この場合には、推論装置2は、暗号化されたデータを取得したとき、暗号化されたデータを記憶部25に記憶してもよい。そして、推論装置2は、S112において推論処理を実行するときに、記憶部25に記憶している暗号化されたデータを用いて推論処理を実行する。この場合には、S107において、推論装置2は、推論が実行可能になったことをクライアント装置3に通知しなくてもよい。
【0065】
図6は、コンピュータ装置の一実施例を示すブロック図である。
図6を参照して、コンピュータ装置100の構成について説明する。
コンピュータ装置100は、制御回路101と、記憶装置102と、読書装置103と、記録媒体104と、通信インターフェイス105と、入出力インターフェイス106と、入力装置107と、表示装置108とを含む情報処理装置である。また、通信インターフェイス105は、ネットワーク109と接続される。そして、各構成要素は、バス110により接続される。学習装置1、推論装置2、及びクライアント装置3は、コンピュータ装置100に記載の構成要素の一部または全てを適宜選択して構成することができる。
【0066】
制御回路101は、コンピュータ装置100全体の制御をする。そして、制御回路101は、例えば、CPU(Central Processing Unit)、FPGA(Field Programmable Gate Array)およびPLD(Programmable Logic Device)などのプロセッサである。
【0067】
制御回路101は、例えば、
図2の学習装置1において、受付部11及び作成部12として機能する。制御回路101は、例えば、
図2の推論装置2において、取得部21、設定部22、推論部23、及び出力部24として機能する。さらに、制御回路101は、例えば、
図2のクライアント装置3において、取得部31、暗号化部32、
復号部33、及び出力部34として機能する。
【0068】
記憶装置102は、各種データを記憶する。そして、記憶装置102は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)などのメモリや、HD(Hard Disk)などである。また、記憶装置102は、例えば、
図2の推論装置2において、記憶部25として機能する。さらに、記憶装置102は、例えば、
図2のクライアント装置3において、記憶部35として機能する。
【0069】
また、ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、制御回路101のワークエリアとして使用される。HDは、OS、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
【0070】
記憶装置102は、制御回路101を、例えば、学習装置1の受付部11及び作成部12として機能させる学習プログラムを記憶してもよい。記憶装置102は、制御回路101を、例えば、推論装置2の取得部21、設定部22、推論部23、及び出力部24として機能させる推論プログラムを記憶してもよい。そして、記憶装置102は、制御回路101を、例えば、クライアント装置3の取得部31、暗号化部32、
復号部33、及び出力部34として機能させるクライアントプログラムを記憶してもよい。
【0071】
学習装置1、推論装置2、及びクライアント装置3は、各種処理をするとき、記憶装置102に記憶されたプログラムをRAMに読み出す。RAMに読み出されたプログラムを制御回路101で実行することにより、学習装置1、推論装置2、及びクライアント装置3は、それぞれ、学習処理、推論処理、及びクライアント処理を実行する。
【0072】
学習処理は、例えば、学習装置1で実行される受付処理、及び作成処理を含む。推論処理は、例えば、推論装置2で実行される取得処理、設定処理、推論処理、及び出力処理を含む。クライアント処理は、例えば、クライアント装置3で実行される取得処理、暗号化処理、
復号処理、及び出力処理を含む。
【0073】
なお、上述の各プログラムは、制御回路101が通信インターフェイス105を介してアクセス可能であれば、ネットワーク109上のサーバが有する記憶装置に記憶されていてもよい。
【0074】
読書装置103は、制御回路101に制御され、着脱可能な記録媒体104のデータのリード/ライトを行なう。そして、読書装置103は、例えば、各種Disk DriveおよびUSB(Universal Serial Bus)などである。
【0075】
記録媒体104は、各種データを保存する。記録媒体104は、例えば、学習プログラム、推論プログラム、及びクライアントプログラムの少なくとも一方を記憶する。さらに、記録媒体104は、
図2に示す、学習セットと、学習済みモデル40と、推論結果50との少なくとも一方を記憶してもよい。推論結果50は、暗号化された状態で記録媒体104に記憶されてもよい。そして、記録媒体104は、読書装置103を介してバス110に接続され、制御回路101が読書装置103を制御することにより、データのリード/ライトが行なわれる。
【0076】
学習済みモデル40が記録媒体104に記録される場合、推論装置2は、記録媒体104から学習済みモデルを読み出すことにより、学習済みモデルを取得してもよい。推論結果50が記録媒体104に記録される場合、クライアント装置3は、記録媒体104から推論結果50を読み出すことにより、推論結果50を取得してもよい。
【0077】
また、記録媒体104は、例えば、SDメモリーカード(SD Memory Card)、FD(Floppy Disk)、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu−ray Disk:登録商標)、およびフラッシュメモリなどの非一時的記録媒体である。
【0078】
通信インターフェイス105は、ネットワーク109を介してコンピュータ装置100と他の装置とを通信可能に接続する。また、通信インターフェイス105は、無線LANの機能を有するインターフェイス、および近距離無線通信機能を有するインターフェイスを含んでもよい。そして、無線LANインターフェイスは、例えば、無線LAN規格として、Wi−Fi(登録商標)をサポートしてもよい。近距離無線インターフェイスは、例えば、近距離無線通信規格として、Bluetooth(登録商標)をサポートしてもよい。LANは、Local Area Networkの略である。
【0079】
通信インターフェイス105は、例えば、
図2の推論装置2において、取得部21及び出力部24として機能する。さらに、通信インターフェイス105は、例えば、
図2のクライアント装置3において、取得部31及び出力部34として機能する。
【0080】
入出力インターフェイス106は、例えば、キーボード、マウス、およびタッチパネルなどの入力装置107と接続され、接続された入力装置107から各種情報を示す信号が入力されると、バス110を介して入力された信号を制御回路101に出力する。また、入出力インターフェイス106は、制御回路101から出力された各種情報を示す信号がバス110を介して入力されると、接続された各種装置にその信号を出力する。
【0081】
入出力インターフェイス106は、例えば、
図2の学習装置1において、受付部11として機能する。また、入出力インターフェイス106は、例えば、
図2の推論装置2において、取得部21及び出力部24として機能する。さらに、入出力インターフェイス106は、例えば、
図2のクライアント装置3において、取得部31及び出力部34として機能する。
【0082】
学習装置1は、入力装置107を介して学習セットなどの入力を受けてもよい。推論装置2は、入力装置107を介して、推論処理実行の要求などの入力を受け付けてもよい。クライアント装置3は、入力装置107を介して、推論処理の対象のデータの入力などを受け付けてもよい。
【0083】
表示装置108は、各種情報を表示する。表示装置108は、タッチパネルでの入力を受け付けるための情報を表示してもよい。表示装置108は、例えば、
図2の出力部34と接続されて、
復号部33で
復号された推論結果50に対応する情報を表示しもよい。
【0084】
また、入出力インターフェイス106、入力装置107、及び表示装置108は、GUI(Graphical User Interface)として機能してもよい。これにより、コンピュータ装置100は、タッチパネルやマウスなどによる直感的な操作を受け付ける。
ネットワーク109は、例えば、LAN、無線通信、またはインターネットなどであり、コンピュータ装置100と他の装置とを通信接続する。学習装置1、推論装置2、及びクライアント装置3は、ネットワーク109を介して互いに通信可能に接続されてもよい。
【0085】
以上のように、推論装置
2は、活性化関数に非線形関数を採用したニューラルネットワークの演算により得られた学習済みモデルを用いて、活性化関数に非線形関数の近時多項式を採用したニューラルネットワークの演算により推論処理を実行する。推論装置
2は、推論処理において、近似多項式を活性化関数として採用したので、準同型暗号の演算により推論処理が可能となる。これにより、推論装置
2は、準同型暗号を用いたニューラルネットワークのシステムにおいて、学習装置における処理の負荷を低減し、システム負荷を小さくすることができる。
【0086】
推論装置
2は、準同型暗号の暗号化処理及び復号処理を実行するクライアント装置3から入力された暗号化されたデータを、暗号化したまま推論処理を実行する。そして、推論装置
2は、推論処理により得られる暗号化された推論結果をクライアント装置に出力する。これにより、推論装置
2は、準同型暗号を用いたニューラルネットワークのシステムにおいて、準同型暗号を用いて暗号化したまま推論処理を実行するので、情報の流出を防止することができる。
【0087】
推論装置
2は、畳み込みニューラルネットワークを用いた演算を実行する。そして、畳み込み演算は、デジタル信号処理においては、加算及び乗算で表現できる。これにより、推論装置
2は、準同型暗号の中では比較的処理速度が速くなる、加算及び乗算の少なくとも一方のみを実行できる準同型暗号を用いて、推論処理を実行することができる。
【0088】
図7は、ニューラルネットワークを用いた画像認識処理の正答率を示す図である。
図7を参照して、実施形態のニューラルネットワークのシステムにおける推論処理の正答率について説明する。
正答率表200は、畳み込みニューラルネットワークを用いた画像認識処理において、学習処理と推論処理とのそれぞれで採用する活性化関数と、正答率との関係を示す表である。正答率表200には、複数回の画像認識処理を実行する実験をすることで得られた、正答率の平均値、最小値、及び最大値が示されている。
【0089】
正答率表200の多項式−多項式のカラムは、学習処理及び推論処理において非線形関数であるRelu関数の近似多項式を活性化関数として採用したときの正答率を示す。正答率表200のRelu−Reluのカラムは、学習処理及び推論処理において非線形関数であるRelu関数を活性化関数として採用したときの正答率を示す。正答率表200のRelu−多項式のカラムは、学習処理において非線形関数であるRelu関数を活性化関数として採用し、推論処理においてRelu関数の近似多項式を活性化関数として採用したときの正答率を示す。
【0090】
Relu−多項式のカラムを参照すると、学習処理にRelu関数、推論処理に近似多項式を用いて画像認識処理をしたときの正答率は、平均85.2%、最小79.5%、最大92.0%であったことがわかる。したがって、正答率表200に示す実験結果は、学習処理にRelu関数、推論処理に近似多項式を用いたニューラルネットワークのシステムを用いて、画像の認識が可能であることを示している。
【0091】
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。