(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-28
(45)【発行日】2022-07-06
(54)【発明の名称】処理装置、推論装置、学習装置、処理システム、処理方法、及び処理プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20220629BHJP
G06N 3/02 20060101ALI20220629BHJP
G06F 21/60 20130101ALI20220629BHJP
【FI】
G09C1/00 650Z
G09C1/00 620Z
G06N3/02
G06F21/60 360
(21)【出願番号】P 2021005277
(22)【出願日】2021-01-15
(62)【分割の表示】P 2017225462の分割
【原出願日】2017-11-24
【審査請求日】2021-01-18
(73)【特許権者】
【識別番号】398034168
【氏名又は名称】株式会社アクセル
(74)【代理人】
【識別番号】110000279
【氏名又は名称】特許業務法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】星月 優佑
(72)【発明者】
【氏名】道上 将志
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2017-139646(JP,A)
【文献】米国特許出願公開第2016/0350648(US,A1)
【文献】特開平04-311254(JP,A)
【文献】HESAMIFARD, E., TAKABI, H. and GHASEMI, M.,CryptoDL: Deep Neural Networks over Encrypted Data,arXiv,[online],2017年11月14日,1711.05189,p.1-21,https://arxiv.org/abs/1711.05189v1,[2020年3月9日検索]
【文献】瓜田健司 他,周期的連続値出力関数を有するニューロンモデルとその応用,電子情報通信学会技術研究報告,1994年03月15日,第93巻 第512号,p.53-58
【文献】ORLANDI, C., PIVA, A. and BARNI, M.,Oblivious Neural Network Computing via Homomorphic Encryption,EURASIP Journal on Information Security,[online],2007年,Vol. 2007,p.1-11,URL: https://link.springer.com/article/10.1155/2007/37343,2018年2月16日検索
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/60
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークモデルを用いて所定の処理を実行する処理装置であって、
有限巡回群上での演算に対して準同型な構造を有
し、平文データに対する加減算に対応する演算を暗号化した状態で行える準同型暗号により暗号化された暗号化データを受け付ける入力部と、
前記ニューラルネットワークモデルを用いて前記暗号化データに対して暗号化したまま所定の処理を実行する処理実行部と、を備え、
前記ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データを用いて生成される第2暗号化データであって、前記第1暗号化データに対応する平文データに対して有限巡回群上での演算
である剰余演算付きの加減算を実行した処理結果が暗号化された前記第2暗号化データを生成する処理レイヤーを有し、前記処理レイヤーと、非線形分離された前記処理結果が暗号化された前記第2暗号化データの入力を受け付ける次の処理レイヤーとの間において、前記処理レイヤーの出力である前記第2暗号化データに対して活性化関数を適用しないように構成されている
処理装置。
【請求項2】
ニューラルネットワークモデルを用いて所定の推論処理を実行する推論装置であって、
有限巡回群上の演算に対して準同型な構造を有
し、平文データに対する加減算に対応する演算を暗号化した状態で行える準同型暗号により暗号化された暗号化データを受け付ける入力部と、
前記ニューラルネットワークモデルを用いて前記暗号化データに対して暗号化したまま所定の推論処理を実行する推論部と、を備え、
前記ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データを用いて生成される第2暗号化データであって、前記第1暗号化データに対応する平文データに対して有限巡回群上での演算
である剰余演算付きの加減算を実行した処理結果が暗号化された前記第2暗号化データを生成する処理レイヤーを有し、前記処理レイヤーと、非線形分離された前記処理結果が暗号化された前記第2暗号化データの入力を受け付ける次の処理レイヤーとの間において、前記処理レイヤーの出力である前記第2暗号化データに対して活性化関数を適用しないように構成されている
推論装置。
【請求項3】
ニューラルネットワークモデルを用いて所定の処理を実行する処理装置による処理方法であって、
前記ニューラルネットワークモデルを用いて、有限巡回群上での演算に対して準同型な構造を有
し、平文データに対する加減算に対応する演算を暗号化した状態で行える準同型暗号により暗号化された暗号化データに対して暗号化したまま所定の処理を実行し、
前記ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データを用いて生成される第2暗号化データであって、前記第1暗号化データに対応する平文データに対して有限巡回群上での演算
である剰余演算付きの加減算を実行した処理結果が暗号化された前記第2暗号化データを生成する処理レイヤーを有し、前記処理レイヤーと、非線形分離された前記処理結果が暗号化された前記第2暗号化データの入力を受け付ける次の処理レイヤーとの間において、前記処理レイヤーの出力である前記第2暗号化データに対して活性化関数を適用しないように構成されている
処理方法。
【請求項4】
ニューラルネットワークモデルを用いて所定の処理を実行する処理装置を構成するコンピュータに実行させるための処理プログラムであって、
前記コンピュータを、
有限巡回群上での演算に対して準同型な構造を有
し、平文データに対する加減算に対応する演算を暗号化した状態で行える準同型暗号により暗号化された暗号化データを受け付ける入力部と、
前記ニューラルネットワークモデルを用いて前記暗号化データに対して暗号化したまま所定の処理を実行する処理実行部と、して機能させ、
前記ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データを用いて生成される第2暗号化データであって、前記第1暗号化データに対応する平文データに対して有限巡回群上での演算
である剰余演算付きの加減算を実行した処理結果が暗号化された前記第2暗号化データを生成する処理レイヤーを有し、前記処理レイヤーと、非線形分離された前記処理結果が暗号化された前記第2暗号化データの入力を受け付ける次の処理レイヤーとの間において、前記処理レイヤーの出力である前記第2暗号化データに対して活性化関数を適用しないように構成されている
処理プログラム。
【請求項5】
前記準同型暗号は、完全準同型暗号又はSomeWhat準同型暗号である
請求項1に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワーク(Neural Network:NN)を用いて情報を処理する技術に関する。
【背景技術】
【0002】
従来、機械学習のアーキテクチャの1つであるニューラルネットワークモデルを用いることにより、画像、文字、及び音声などの認識処理(推論処理)が行われている。
【0003】
ニューラルネットワークモデルにおける学習済みの係数データは、規模が大きく、クライアント装置のみで処理を行うには負荷が大きかったり、処理の実行が困難であったりという問題がある。これに対して、サーバ・クライアントモデルを用いることにより、大規模な演算が可能なクラウド資源をニューラルネットワークモデルによる推論処理等に利用したいという要求が存在している。
【0004】
サーバ・クライアントモデルを用いると、データをクライアントからサーバに送信することになるため、個人情報等の機密性の高い情報が流出してしまう虞がある。
【0005】
上述の問題に対処するため、サーバに対して暗号化したデータ(暗号化データ)を送信し、暗号化データのまま演算を行うことができる準同型暗号を用いてサーバ側で暗号化データを処理することが考えられる。
【0006】
しかし、ニューラルネットワークモデルで使用されるシグモイド関数や、ReLU関数(Rectified Linear Unit Rectifier:正規化線形関数)等の一般的な活性化関数は、既に知られている準同型暗号で行える演算の範疇を超えるため、準同型暗号による暗号化データに対する演算が不可能である。
【0007】
例えば、特許文献1には、活性化関数として近似多項式を用いるニューラルネットワークに関する技術が開示されている。
【0008】
また、非特許文献1には、ニューラルネットワークモデルにおける活性化関数の演算時に都度クライアントに問合せることにより、準同型暗号を用いた処理を実現する技術が開示されている。
【先行技術文献】
【特許文献】
【0009】
【文献】米国特許出願公開第2016/0350648号明細書
【非特許文献】
【0010】
【文献】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>
【発明の概要】
【発明が解決しようとする課題】
【0011】
ニューラルネットワークモデルにおいて、暗号化データのままで処理するようにすることは、不可能であったり、処理負荷が多大となり困難であったりする。例えば、非特許文献1の技術では、活性化関数の演算の都度、クライアントとのデータのやり取りが発生するとともに、クライアント側での処理が発生するために、通信量が多くなると共に、処理時間が長期化してしまう。
【0013】
本発明は、上記事情に鑑みなされたものであり、その目的は、ニューラルネットワークモデルにおいて暗号化データを容易且つ適切に使用できる技術を提供することにある。
【課題を解決するための手段】
【0014】
上記目的を達成するため、第1の観点に係る処理装置は、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置であって、暗号化データを受け付ける入力部と、ニューラルネットワークモデルを用いて暗号化データに対して所定の処理を実行する処理実行部と、を備え、ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データから、復号すると第1暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第2暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第2暗号化データに対して非線形分離関数を適用しないように構成されている。
【0015】
上記目的を達成するため、第2の観点に係る推論装置は、ニューラルネットワークモデルにより所定の推論処理を実行する推論装置であって、暗号化データを受け付ける入力部と、ニューラルネットワークモデルを用いて暗号化データに対して所定の推論処理を実行する推論部と、を備え、ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データから、復号すると第1暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第2暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第2暗号化データに対して非線形関数を適用しないように構成されている。
【0016】
上記目的を達成するため、第3の観点に係る学習装置は、所定の学習用データに基づいてニューラルネットワークモデルにおける設定値を学習する学習装置であって、学習対象のニューラルネットワークモデルを用いて、学習用データに基づいて、学習対象のニューラルネットワークモデルにおける設定値を学習する学習部と、学習部により学習された学習対象のニューラルネットワークの設定値を記憶する学習結果記憶部と、を備え、学習部は、正伝播を実行する場合には、学習対象のニューラルネットワークモデルとして、前段から入力される第1平文データに対して、剰余演算付き演算を実行する第1処理レイヤーを有し、第1処理レイヤーの後段において、第1処理レイヤーの演算結果に対して非線形関数を適用しないように構成されているニューラルネットワークモデルを使用し、学習対象のニューラルネットワークモデルにおける設定値を更新するために逆伝播を実行する場合には、学習対象のニューラルネットワークモデルとして、第1処理レイヤーに代えて、第1処理レイヤーにおける前記剰余演算付き演算から剰余演算を除いた演算を行う第2処理レイヤーと、第2処理レイヤーの後段に配置され、微分可能な活性化関数による処理を行う活性化関数レイヤーとを含むニューラルネットワークモデルを使用し、正伝播を実行した場合に出力された出力データを入力として用いる。
【0017】
上記学習装置において、学習部は、逆伝播を実行する場合には、少なくとも1つの活性化関数レイヤーにおける活性化関数を、連続的に増加して一部の値でのみ非連続に減少する波形、又は連続的に減少して一部の値でのみ非連続に増加する波形に近似された微分可能な近似関数としてもよい。
【0018】
上記学習装置において、近似関数は、双曲線関数であってもよい。
【0019】
上記目的を達成するため、第4の観点に係る処理システムは、所定の学習用データに基づいて第1ニューラルネットワークモデルにおける設定値を学習する学習装置と、第1ニューラルネットワークモデルの少なくとも一部に対応する第2ニューラルネットワークモデルにより所定の推論処理を実行する推論装置とを備える処理システムであって、学習用データは、暗号化データであり、学習装置は、第1ニューラルネットワークモデルを用いて、学習用データに基づいて、第1ニューラルネットワークモデルにおける設定値を学習する学習部と、学習部により学習された第1ニューラルネットワークの設定値を記憶する学習結果記憶部と、を備え、学習部は、正伝播を実行する場合には、第1ニューラルネットワークモデルとして、前段から入力される複数の第1暗号化データから、復号すると第1暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第2暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、前記第2暗号化データに対して非線形関数を適用しないように構成されているニューラルネットワークモデルを使用し、第1ニューラルネットワークモデルにおける設定値を更新するために逆伝播を実行する場合には、第1ニューラルネットワークモデルとして、平文データに対して所定の処理を実行するためのニューラルネットワークモデルを使用し、正伝播を実行した場合に出力された出力データを復号した復号データを入力として用い、推論装置は、暗号化データを受け付ける入力部と、第2ニューラルネットワークモデルを用いて暗号化データに対して所定の推論処理を実行する推論部と、を備え、第2ニューラルネットワークモデルは、前段から入力される複数の第3暗号化データから、復号すると前記第3暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第4暗号化データを生成して出力する処理を実行する処理レイヤーを有し、前記処理レイヤーの後段において、前記第4暗号化データに対して非線形関数を適用しないように構成されている。
【0020】
上記目的を達成するため、第5の観点に係る処理方法は、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置による処理方法であって、ニューラルネットワークモデルを用いて、暗号化データに対して所定の処理を実行し、ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データから、復号すると第1暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第2暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、前記第2暗号化データに対して非線形関数を適用しないように構成されている。
【0021】
上記目的を達成するため、第6の観点に係る処理プログラムは、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置を構成するコンピュータに実行させるための処理プログラムであって、コンピュータを、暗号化データを受け付ける入力部と、ニューラルネットワークモデルを用いて暗号化データに対して所定の処理を実行する処理実行部と、して機能させ、ニューラルネットワークモデルは、前段から入力される複数の第1暗号化データから、復号すると第1暗号化データに対応する平文データに対して剰余演算付きの演算を行うことにより得られる処理結果が得られる第2暗号化データを生成して出力する処理を実行する処理レイヤーを有し、処理レイヤーの後段において、第2暗号化データに対して非線形関数を適用しないように構成されている。
【0022】
上記目的を達成するため、第7の観点に係る処理装置は、ニューラルネットワークモデルを用いて所定の処理を実行する処理装置であって、平文データを受け付ける入力部と、
前記ニューラルネットワークモデルを用いて前記平文データに対して所定の処理を実行する処理実行部と、を備え、ニューラルネットワークモデルは、前段から入力される第1平文データに対して、剰余演算付き演算を実行する処理レイヤーを有し、処理レイヤーの後段において、処理レイヤーの演算結果に対して非線形関数を適用しないように構成されている。
【発明の効果】
【0023】
本発明によれば、ニューラルネットワークモデルにおいて暗号化データを容易且つ適切に使用できる。
【図面の簡単な説明】
【0024】
【
図1】
図1は、第1実施形態に係る処理システムの全体構成図である。
【
図2】
図2は、第1実施形態に係る学習装置の機能構成図である。
【
図3】
図3は、第1実施形態に係る活性化関数として用いる剰余演算関数の一例を 説明する図である。
【
図4】
図4は、第1実施形態に係る推論装置の機能構成図である。
【
図5】
図5は、第1実施形態に係るクライアント装置の機能構成図である。
【
図6】
図6は、第1実施形態に係る処理システムの動作を示すシーケンス図である 。
【
図7】
図7は、コンピュータ装置の一実施例を示すブロック図である。
【
図8】
図8は、第1実施形態に係る処理システムにおける画像認識における認識結 果を説明する図である。
【
図9】
図9は、第2実施形態に係る推論装置の機能構成図である。
【
図10】
図10は、第2実施形態に係るクライアント装置の機能構成図である。
【
図11】
図11は、第2実施形態に係る処理システムの動作を示すシーケンス図で ある。
【
図12】
図12は、第3実施形態に係る学習装置の機能構成図である。
【発明を実施するための形態】
【0025】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0026】
まず、第1実施形態に係る処理システムについて説明する。
【0027】
図1は、第1実施形態に係る処理システムの全体構成図である。
【0028】
処理システム1は、処理装置の一例としての学習装置10と、処理装置の一例としての推論装置20と、クライアント装置30とを備える。学習装置10と推論装置20とは、ネットワーク40を介して接続されている。また、推論装置20とクライアント装置30とは、ネットワーク50を介して接続されている。ネットワーク40,50は、例えば、LAN(Local Area Netowork)や、WAN(Wide Area Network)等である。なお、
図1では、ネットワーク40と、ネットワーク50とを別のネットワークとしているが、それらを同一のネットワークとしてもよい。
【0029】
学習装置10は、ニューラルネットワークモデルの学習を行う。推論装置20は、学習装置10によるニューラルネットワークモデルの学習結果(ニューラルネットワークモデルの係数(重みやバイアス)等の設定値)に基づいてニューラルネットワークモデルを設定し、推論処理を行う。クライアント装置30は、例えば、ユーザにより利用される装置であり、推論装置20に対して推論処理の対象となるデータ(対象データ)を送信し、推論装置20からの推論処理の結果(推論結果)を受け取る。
【0030】
図2は、第1実施形態に係る学習装置の機能構成図である。
【0031】
学習装置10は、処理実行部の一例としての学習部11と、学習結果記憶部の一例としての記憶部15と、通知部の一例としての設定値通知部18とを備える。
【0032】
学習部11は、ニューラルネットワークモデル12と、入力部の一例としての学習制御部14とを備える。
【0033】
ニューラルネットワークモデル12は、例えば、処理対象とする画像データが何を表しているかを推論する推論処理を実行して推論結果を出力するための畳み込みニューラルネットワーク(CNN)のモデルである。ニューラルネットワークモデル12は、複数の処理レイヤー(レイヤー)により構成されている。なお、本実施形態では、ニューラルネットワークモデル12は、設定値の学習のために使用される。
図1の例では、ニューラルネットワークモデル12は、レイヤー1~レイヤーNにより構成されている。各レイヤーにおける処理(部分処理)は、各処理部13によって実行される。ニューラルネットワークモデル12は、例えば、処理対象とする画像データが何を表しているか(例えば、人、犬、猫等の何が含まれているか)を推論する推論処理を実行して推論結果を出力するためのモデルである。ニューラルネットワークモデル12におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【0034】
ニューラルネットワークモデル12の構成は、一例であるが、
図2に示すように、レイヤー1の部分処理を実行する畳込処理部13-1、レイヤー2(活性化関数レイヤー)の部分処理を実行する活性化関数処理部13-2、レイヤー3の部分処理を実行するプーリング処理部13-3、レイヤーN-2の部分処理を実行する活性化関数処理部13-n-2、レイヤーN-1の部分処理を実行するアフィン処理部13-n-1、レイヤーNの部分処理を実行するSoftMax処理部13-n等がある。
【0035】
畳込処理部13-1は、入力された画像データに対して、複数のフィルタデータ(設定値の一例)のそれぞれを用いて畳込処理を行う。活性化関数処理部13-2、13-n-2等は、直前のレイヤーで生成されたデータを、活性化関数により変換する処理を実行する。活性化関数は、前のレイヤーと後ろのレイヤーとを非線形分離するための関数、言い換えれば、前のレイヤーと後ろのレイヤーとが線形関数として結合されないようにするための関数である。本実施形態では、活性化関数処理部13-2、13-n-2等の少なくとも一つにおける活性化関数として、出力値が入力値に応じて有限範囲の値のいずれかの値をとる波形の関数、例えば、いわゆるノコギリの波状の波形となる関数(例えば、剰余演算を含む関数(剰余演算関数))や、このような波形に近似された微分可能な近似関数を用いている。ノコギリの波状の形状とは、連続的に増加(単調増加)して一部の値でのみ非連続に減少する波形、又は連続的に減少(単調減少)して一部の値でのみ非連続に増加する波形ということができる。ここで、単調増加(単調減少)には、傾きが一定な増加(減少)だけでなく、傾きが変化する増加(減少)を含んでもよい。波形に近似された微分可能な近似関数としては、例えば、双曲線関数(tanh等)としてもよく、高次(例えば、20次等)の三角関数としてもよく、多項式としてもよい。なお、活性化関数として双曲線関数を用いた場合には、高次の三角関数を用いた場合や、多項式を用いた場合に比して処理量が少なく済み、必要な処理時間が短く済むという効果がある。
【0036】
本実施形態では、ニューラルネットワークモデル12における設定値を学習する方法として、例えば、誤差逆伝播法を用いており、ニューラルネットワークモデル12における正伝播を実行する場合には、活性化関数として、上記した剰余演算関数を用いるようにし、設定値を更新するために逆伝播を実行する場合には、活性化関数として、誤差逆伝播法での計算が可能な微分可能な近似関数を用いるようにしている。なお、誤差逆伝播法を用いない場合には、正伝播を実行する場合と、逆伝播を実行する場合の両方の場合において、剰余演算関数を用いるようにしてもよい。
【0037】
図3は、第1実施形態に係る活性化関数として用いる剰余演算関数の一例を説明する図である。
図3において、横軸は、直前の処理レイヤーから入力される入力値を示し、縦軸は、剰余演算関数により出力される出力値を示している。
【0038】
この剰余演算関数は、入力値の取り得る最小値が-5000よりも大きく、入力値の取り得る最大値が5000よりも小さい場合の剰余演算関数である。この剰余演算関数は、(入力値/1000) mod 10と表せる。なお、A mod Bは、AをB(除数)で除算した場合の余りを示している。なお、本実施形態では、余りを、小数を含むものとしているが、例えば、小数を切り捨てた整数としてもよい。
【0039】
この剰余演算関数は、入力値が取り得る最小値から0(第1値の一例)までの範囲(第1範囲)においては、入力値が大きくなるほど出力値が最大値に近づくように変化し、入力値が0の場合には、出力値が0(出力値の最小値)となり、入力値が第1値から入力値の取り得る最大値までの範囲(第2範囲)においては、入力値が大きくなるほど出力値が最小値から離れるように変化する波形(いわゆるノコギリ波)となる関数である。また、この剰余演算関数においては、第1範囲における出力値と、第2範囲における出力値とは、同一の出力値をとらないようになっている。すなわち、大きく異なる値の入力値同士が同一の出力値に変換されてしまうことを適切に防止できる。本実施形態では、活性化関数処理部では、ノコギリ波となる関数のノコギリの1つの歯に相当する幅以下の範囲の関数を用いている。
【0040】
図3に示す剰余演算関数は、-5000よりも大きく、5000よりも小さい範囲を取り得る入力値を1000で除算し、その除算後の値を剰余演算する関数となっている。この剰余演算関数によると、入力値の除算後の値の取り得る範囲の幅を剰余演算で用いる除数(すなわち、10)よりも小さくすることができる。なお、この入力値を除算する処理は、入力値の取り得る範囲の幅が、剰余演算における1周期分(入力値の増加に伴って最小値から最大値となる範囲)の幅内に収まるようにする処理である。このように、入力値の除算後の値の取り得る範囲の幅を剰余演算で用いる除数よりも小さくすることができるので、大きく値の異なる入力値が、同一の出力値に変換されてしまうことを適切に防止することができる。
【0041】
なお、入力値を除算する値や、剰余演算の除数は、上記に限られない。例えば、入力値を除算する値は、各活性化関数処理部に入力される入力値(すなわち、直前のレイヤーの処理部の出力値)の取り得る範囲に基づいて決定すればよい。また、入力値を除算しないようにしてもよい。この場合には、剰余演算の除数を入力値に応じて大きな値とすればよい。
【0042】
図2の説明に戻り、プーリング処理部13-3は、入力データについてダウンサンプリングする処理を実行する。アフィン処理部13-n-1は、入力データについてのアフィン変換処理を実行する。SoftMax処理部13-nは、入力データについてソフトマックス関数による処理を実行する。
【0043】
学習制御部14は、記憶部15に格納されている学習用データ16をニューラルネットワークモデル12に入力し、ニューラルネットワークモデル12から出力される推論結果に基づいて、ニューラルネットワークモデル12における設定値を学習する。本実施形態では、学習制御部14は、学習時の正伝播を実行する場合には、ニューラルネットワークモデル12の活性化関数処理部13-2、13-n-2等の少なくとも一つにおける活性化関数を、剰余演算関数とし、学習時の逆伝播を実行する場合には、ニューラルネットワークモデル12の活性化関数処理部13-2、13-n-2等の少なくとも一つにおける活性化関数を、近似関数とする。学習制御部14は、学習用データ16による学習を終えた場合には、学習によって得られた設定値を記憶部15に格納する。
【0044】
記憶部15は、学習部11のニューラルネットワークモデル12の学習に使用する学習用データ16と、ニューラルネットワークモデル12の係数等の設定値に関する情報である設定値情報17とを記憶する。なお、学習用データ16を、学習用データ16に対応する推論結果データと対応付けた教師データとして記憶部15に格納するようにしてもよい。設定値情報17に含まれる設定値としては、例えば、畳込処理部13-1等で使用されるフィルタの係数や、アフィン処理部13-n-1等で用いられる重み等がある。
【0045】
設定値通知部18は、記憶部15に格納されている設定値情報17を、推論装置20に送信する。
【0046】
次に、推論装置20について詳細に説明する。
【0047】
図4は、第1実施形態に係る推論装置の機能構成図である。
【0048】
推論装置20は、処理実行部の一例としての推論部21と、記憶部25と、入力部の一例としての受信部28と、推論結果送信部29とを備える。
【0049】
推論部21は、ニューラルネットワークモデル22と、推論制御部24とを備える。
【0050】
ニューラルネットワークモデル22は、例えば、処理対象とする画像データが何を表しているかを推論する推論処理を実行して推論結果を出力するための畳み込みニューラルネットワーク(CNN)のモデルであり、複数の処理レイヤー(レイヤー)により構成されている。本実施形態では、ニューラルネットワークモデル22は、学習装置10のニューラルネットワークモデル12に対応する構成(本実施形態では、同一の構成)である。すなわち、
図4の例では、ニューラルネットワークモデル22は、レイヤー1~レイヤーNにより構成されている。各レイヤーにおける処理(部分処理)は、各処理部23によって実行される。ニューラルネットワークモデル22は、例えば、処理対象とする画像データが何を表しているか(例えば、人、犬、猫等の何が含まれているか)を推論する推論処理を実行して推論結果を出力するためのモデルである。ニューラルネットワークモデル22におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
【0051】
図4に示すニューラルネットワークモデル22の構成は、一例であり、
図4に示す例では、ニューラルネットワークモデル22は、レイヤー1の部分処理を実行する畳込処理部23-1、レイヤー2(活性化関数レイヤー)の部分処理を実行する活性化関数処理部23-2、レイヤー3の部分処理を実行するプーリング処理部23-3、レイヤーN-2の部分処理を実行する活性化関数処理部23-n-2、レイヤーN-1の部分処理を実行するアフィン処理部23-n-1、レイヤーNの部分処理を実行するSoftMax処理部23-n等がある。畳込処理部23-1、活性化関数処理部23-2、プーリング処理部23-3、活性化関数処理部23-n-2、アフィン処理部23-n-1、SoftMax処理部23-nは、それぞれ、
図2に示す畳込処理部13-1、活性化関数処理部13-2、プーリング処理部13-3、活性化関数処理部13-n-2、アフィン処理部13-n-1、SoftMax処理部13-nに対応し、同様な処理を実行する。
【0052】
活性化関数処理部23-2、23-n-2等は、直前のレイヤーで生成されたデータを、活性化関数により変換する処理を実行する。本実施形態では、活性化関数処理部23-2、23-n-2等の少なくとも一つにおける活性化関数として、出力値が入力値に応じて有限範囲の値のいずれかの値をとる関数、例えば、剰余演算を含む剰余演算関数を用いている。本実施形態では、活性化関数処理部23-2、23-n-2等の活性化関数としては、学習装置10における対応する活性化関数処理部の活性化関数と同じ活性化関数としている。
【0053】
推論制御部24は、記憶部25に格納されている設定値情報27に基づいて、ニューラルネットワークモデル22の設定を行う、すなわち、処理レイヤーにおける係数等を設定する。また、推論制御部24は、処理対象のデータである対象データ26をニューラルネットワークモデル22に入力し、ニューラルネットワークモデル22による推論処理を実行させる。
【0054】
記憶部25は、推論部21のニューラルネットワークモデル22で推論処理を実行させる対象の対象データ26と、ニューラルネットワークモデル22の係数等の設定値に関する情報である設定値情報27とを記憶する。設定値情報27に含まれる設定値としては、例えば、畳込処理部23-1等で使用されるフィルタの係数や、アフィン処理部23-n-1等で用いられる重み等がある。
【0055】
受信部28は、学習装置10から送信される設定値情報を受信して記憶部25に格納する。また、受信部28は、クライアント装置30から送信される対象データ26を受信して記憶部25に格納する。
【0056】
推論結果送信部29は、推論部21のニューラルネットワークモデル22による推論処理の結果(推論結果)をクライアント装置30に送信する。
【0057】
入出力I/F207は、例えば、マウス、キーボード等の入力装置209と接続されており、入力装置209からの推論装置20の管理者による操作入力を受け付ける。
【0058】
表示装置208は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【0059】
次に、クライアント装置30について詳細に説明する。
【0060】
図5は、第1実施形態に係るクライアント装置の機能構成図である。
【0061】
クライアント装置30は、結果表示部31と、送信部32と、記憶部33と、受信部36と備える。
【0062】
記憶部33は、推論処理を実行させる対象データ34と、推論処理の推論結果35とを記憶する。なお、推論結果35は、推論装置20から推論結果が送信された場合に格納されるものであり、推論装置20による推論処理が行われていない対象データ34に対する推論結果については、存在しない。
【0063】
送信部32は、推論装置20に推論処理の対象データを送信する。受信部36は、推論装置20から推論処理の推論結果を受信して記憶部33に格納する。結果表示部31は、記憶部33に格納された推論結果35に基づいて各種情報を表示出力する。結果表示部31は、推論結果35をそのまま表示してもよく、推論結果35に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。
【0064】
図6は、第1実施形態に係る処理システムの動作を示すシーケンス図である。
図6を参照して、本実施形態に係る処理システム1における処理動作について説明する。
【0065】
学習装置10の学習制御部14が記憶部15に格納されている学習用データ16を用いて、学習部11のニューラルネットワークモデル12により推論処理を実行させることで、ニューラルネットワークモデル12の処理レイヤー13における各種設定値の学習を行う(S101)。次いで、学習制御部14は、学習によって得られた設定値に関する設定値情報を記憶部15に格納する(S102)。
【0066】
次いで、設定値通知部18は、記憶部15に格納された設定値情報17を読み出して、推論装置20に送信する(S103)。
【0067】
推論装置20の受信部28は、学習装置10から送信された設定値情報17を受信して、記憶部25に格納する(S104)。また、クライアント装置30の送信部32は、対象データを推論装置20に送信する(S105)。推論装置20の受信部28は、クライアント装置30から推論対象の対象データを受信し、記憶部25に格納する(S106)。なお、設定値情報17を受信する時点と、対象データを受信する時点とは、いずれが先であってもよく、要は、推論処理を実行するまでに両方がそろっていればよい。
【0068】
推論処理20の推論制御部24は、記憶部25から設定値情報27を取得し、ニューラルネットワークモデル22の対応する処理部23に対して、設定値を設定する(S107)。次いで、推論制御部24は、記憶部25から対象データ26を読み出して、ニューラルネットワークモデル22の最初の処理レイヤー(レイヤー1)の処理部23に入力する。この結果、ニューラルネットワークモデル22において、対象データ26を対象とした推論処理が実行されて、最終の処理レイヤー(レイヤーN)の処理部23から推論結果が推論結果送信部29に出力されることとなる(S108)。
【0069】
次いで、推論装置20の推論結果送信部29は、ニューラルネットワークモデル22から渡された推論結果を対象データの推論処理を要求したクライアント装置30に対して送信する(S109)。
【0070】
クライアント装置30の受信部36は、推論装置20から推論結果を受信し、記憶部33に格納する(S110)。その後、結果表示部31が、記憶部33に格納された推論結果35に基づいて、推論結果を表示出力する(S111)。
【0071】
上記した学習装置10、推論装置20、クライアント装置30は、それぞれコンピュータ装置により構成することができる。
図7は、コンピュータ装置の一実施例を示すブロック図である。なお、本実施形態では、学習装置10、推論装置20、及びクライアント装置30は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、同様な構成を有するものとすることができるので、以下の説明では、便宜的に
図7に示すコンピュータ装置を用いて、学習装置10、推論装置20、及びクライアント装置30を構成するコンピュータ装置について説明することとする。
【0072】
コンピュータ装置100は、例えば、CPU(Central Processin Unit)101と、メインメモリ102と、GPU(Graphics Processing Unit)103と、リーダライタ104と、通信インターフェース(通信I/F)105と、補助記憶装置106と、入出力インターフェース(入出力I/F)107と、表示装置108と、入力装置109とを備える。CPU101、メインメモリ102、GPU103、リーダライタ104、通信I/F105、補助記憶装置106、入出力I/F107、及び表示装置108は、バス110を介して接続されている。学習装置10と、推論装置20と、クライアント装置30とは、それぞれコンピュータ装置100に記載の構成要素の一部または全てを適宜選択して構成される。
【0073】
ここで、メインメモリ102又は補助記憶装置106の少なくとも一方が、学習装置10の記憶部15、推論装置20の記憶部25、及びクライアント装置30の記憶部33として機能する。
【0074】
学習装置10を構成するコンピュータ装置100のCPU101は、学習装置10の全体を統括制御する。CPU101は、補助記憶装置106に格納されているプログラムをメインメモリ102に読み出して実行することにより各種処理を実行する。学習装置10において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、学習部11のニューラルネットワークモデル12を構成する。また、推論装置20を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、推論部21のニューラルネットワークモデル22を構成する。さらに、クライアント装置30を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、結果表示部31を構成する。なお、推論装置20を構成するコンピュータ装置100のCPU101は、クライアント装置30を構成するコンピュータ装置100のCPU101よりも処理性能が良いものとしてもよい。
【0075】
メインメモリ102は、例えば、RAM、ROM等であり、CPU101に実行されるプログラム(処理プログラム等)や、各種情報を記憶する。補助記憶装置106は、例えば、HDD(Hard DISK Drive)、SSD(Solid State Drive)等の非一時的記憶デバイス(不揮発性記憶デバイス)であり、CPU101で実行されるプログラムや、各種情報を記憶する。学習装置10を構成するコンピュータ装置100では、メインメモリ102は、例えば、学習データ16や設定値情報17を記憶する。推論装置20を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ26や設定値情報27を記憶する。クライアント装置30を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ34や推論結果35を記憶する。
【0076】
GPU103は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、GPU103は、CPU101の指示に従って所定の処理を実行する。学習装置10を構成するコンピュータ装置100において、GPU103は、例えば、畳込処理部13-1等を構成する。また、推論装置20を構成するコンピュータ装置100において、GPU103は、例えば、畳込処理部23-1等を構成する。
【0077】
リーダライタ104は、記録媒体111を着脱可能であり、記録媒体111からのデータの読み出し、及び記録媒体111へのデータの書き込みを行う。記録媒体111としては、例えば、SDメモリーカード、FD(フロッピーディスク:登録商標)、CD、DVD、BD(登録商標)、フラッシュメモリ等の非一時的記録媒体(不揮発性記録媒体)がある。本実施形態においては、記録媒体111に、処理プログラムを格納しておき、リードライタ104により、これを読み出して、利用するようにしてもよい。また、学習装置10を構成するコンピュータ装置100において、記録媒体111に、学習用データを格納しておき、リードライタ104により、これを読み出して利用するようにしてもよい。また、クライアント装置30を構成するコンピュータ装置100において、記録媒体111に、処理対象データを格納しておき、リードライタ104により、これを読み出して記憶部33に格納するようにしてもよい。
【0078】
通信I/F105は、ネットワーク40、50に接続されており、ネットワーク40、50に接続された他の装置との間でのデータの送受信を行う。学習装置10は、例えば、通信I/F105を介してネットワーク40に接続された推論装置20に設定値情報を送信する。学習装置10の設定値通知部18、推論装置20の受信部28及び推論結果送信部29、並びにクライアント装置30の送信部32及び受信部36は、それぞれを構成するコンピュータ装置100の通信I/F105及びCPU101によって構成される。
【0079】
入出力I/F107は、例えば、マウス、キーボード等の入力装置109と接続されている。学習装置10を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、学習装置10の管理者による操作入力を受け付ける。また、推論装置20を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、推論装置20の管理者による操作入力を受け付ける。さらに、クライアント装置30を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、クライアント装置30のユーザによる操作入力を受け付ける。
【0080】
表示装置108は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
【0081】
次に、本実施形態に係る処理システム1における画像データを対象にした推論処理における推論結果、すなわち、画像認識における認識結果について説明する。
【0082】
図8は、第1実施形態に係る処理システムにおける画像認識における認識結果を説明する図である。
図8は、ニューラルネットワークモデルにおける各活性化関数処理部で使用する活性化関数を、本実施形態に係る剰余演算関数及び近似関数とした例(実施例1及び実施例2)と、既存の活性化関数を近似多項式で表した関数とした例(参考例1)と、Relu関数とした例(参考例2)とにおける画像認識の結果を示している。
【0083】
実施例1においては、学習時及び推論時において使用するニューラルネットワークモデル12,22として、先頭のレイヤーから順に、畳込処理部、活性化関数処理部、プーリング処理部、畳込処理部、活性化関数処理部、プーリング処理部、畳込処理部、活性化関数処理部、アフィン処理部、活性化関数処理部、アフィン処理部、及びSoftMax処理部で構成されたニューラルネットワークモデルを用い、各活性化関数処理部の活性化関数を、学習における正伝播時及び推論時には、
図3に示したような剰余演算関数を用い、学習における逆伝播時には、剰余演算関数の波形に近似する双曲線関数を近似関数としている。
【0084】
そして、MNISTデータセットの中の学習用データを用いてニューラルネットワークモデル12における学習処理を行い、その学習処理によって得られた設定値が設定されたニューラルネットワークモデル22に、MNISTデータセットのテスト用データを入力して画像認識行い、得られた認識結果についての正答率を測定した。実施例1においては、正答率の最小が90.0%、正答率の最大が98.0%、正答率の平均が94.5%となった。
【0085】
実施例2においては、各活性化関数処理部の活性化関数を、学習における正伝播時及び推論時には、
図3に示したような剰余演算関数を用い、学習における逆伝播時には、剰余演算関数の波形に近似する、高次の三角関数を近似関数としている。
【0086】
そして、MNISTデータセットの中の学習用データを用いてニューラルネットワークモデル12における学習処理を行い、その学習処理によって得られた設定値が設定されたニューラルネットワークモデル22に、MNISTデータセットのテスト用データを入力して画像認識行い、得られた認識結果についての正答率を測定した。実施例2においては、正答率の最小が89.5%、正答率の最大が98.0%、正答率の平均が94.4%となった。
【0087】
参考例1においては、ニューラルネットワークモデル12,22における各活性化関数処理部の活性化関数として、既存の活性化関数(Relu関数等)を近似多項式とした関数を用いて、実施例と同様に学習処理及び推論処理を行い、得られた認識結果についての正答率を測定した。参考例1においては、正答率の最小が84.5%、正答率の最大が94.0%、正答率の平均が90.3%となった。
【0088】
参考例2においては、ニューラルネットワークモデル12,22における各活性化関数処理部の活性化関数として、Relu関数を用いて、実施例と同様に学習処理及び推論処理を行い、得られた推論結果についての正答率を測定した。参考例2においては、正答率の最小が92.0%、正答率の最大が98.5%、正答率の平均が95.5%となった。
【0089】
実施例1、実施例2、参考例1、及び参考例2における正答率を参照すると、実施例1及び実施例2においては、Relu関数や、近似多項式の関数を用いた場合と同様に比較的高い正答率を実現することができることがわかる。したがって、ニューラルネットワークにおける活性化関数として剰余演算関数や剰余演算関数の波形の近似関数を使用できる、すなわち、十分に使用に耐えうることがわかる。
【0090】
次に、第2実施形態に係る処理システムについて説明する。なお、以下においては、第1実施形態に係る処理システムと異なる点を中心に説明する。
【0091】
まず、第2実施形態に係る処理システムの概要について説明する。
【0092】
第2実施形態に係る処理システムは、第1実施形態に係る処理システムの推論装置におけるニューラルネットワークモデルの或る処理レイヤー(前処理レイヤー)と、その処理レイヤーの次の活性化関数処理を行う処理レイヤー(活性化関数レイヤー)との組に着目してなされたものである。
【0093】
例えば、前処理レイヤーで処理をした後に、活性化関数レイヤーにおける活性化関数を剰余演算関数とする活性化関数処理を実行することは、例えば、前処理レイヤーにおいて剰余演算付きの加減算処理を行うことと同じである。このことから、前処理レイヤーにおいて、剰余演算付きの加減算処理を行うようにすると、活性化関数レイヤーにおける処理を省略しても同様な結果が得られるようにすることができることがわかる。
【0094】
ここで、前処理レイヤーの入力データとして、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われたデータ(暗号化データ)とする場合を考える。有限巡回群上の演算に対して準同型な性質を持っている準同型暗号とは、暗号化データが有限巡回群上のデータとなる性質をもった暗号方式であり、加法準同型暗号においては、例えば、Paillier暗号や、lifted-ElGamal暗号が、これに該当する。
【0095】
ここで、加法準同型暗号とは、暗号化されていないデータ(平文データ)に対して平文データ空間上の加法演算により得られる結果が、暗号化データに対して、加法演算に対応する暗号化データ空間上の演算(対応演算)を行って得られた結果を復号することにより得られる技術である。すなわち、加法準同型暗号は、暗号化データに対して対応演算を行って復号することにより、平文データに対して加法演算をした結果が得られる技術である。例えば、Paillier暗号においては、平文データ空間上の剰余演算付き加減算は、暗号化データ空間上においては、剰余演算付き乗算演算となる。ここで、剰余演算付きとは、演算の結果の全体に対して剰余演算が行われることを意味する。
【0096】
上記した有限巡回群上の演算に対して準同型な性質を持っている準同型暗号(例えば、Paillier暗号やlifted-ElGamal暗号)、で暗号化された暗号化データを前処理レイヤーの入力データとする。そして、前処理レイヤーにおいて、暗号化データに対して剰余演算付き乗算を行った結果は、平文データの剰余演算付き加減算を行ったものと同一の性質を持つこととなる。剰余演算付き乗算は、平文データの剰余演算付き加減算に対応する暗号空間上の演算(対応演算)である。
【0097】
したがって、前処理レイヤーにおいて、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われた暗号化データに対して、平文データの剰余演算付き和演算に対応する暗号化データ空間上の演算を行うことにより、その後ろ(直後又は、処理前までに非線形分離が必要な次の処理レイヤーとの間)の活性化関数処理を行う処理レイヤー、すなわち、平文データにおける活性化関数を実行する活性化関数レイヤーに対応する処理レイヤー(活性化関数対応レイヤー)を省略することができることがわかる。
【0098】
そこで、本実施形態の推論装置20Aは、
図4に示す第1実施形態の推論装置20のニューラルネットワークモデル22の各処理レイヤーに対応する暗号化データ用の処理レイヤーを持つニューラルネットワークモデルにおいて、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われた暗号化データに対して、平文データの和演算に対応する暗号化データ空間上の演算を行う処理レイヤーの次の活性化関数対応レイヤーの少なくとも1つを省略したニューラルネットワークモデル22Aを用いて処理をするようにしている。なお、学習装置10側のニューラルネットワークモデル12における、省略された活性化関数対応レイヤーに対応する活性化関数レイヤーで使用される活性化関数は、第1実施形態で示した活性化関数であって、ニューラルネットワークモデル22Aの構成及び使用される暗号化データの構成等に応じて、活性化関数対応レイヤーを省略した場合に同様な処理結果が得られるような活性化関数に設定する必要がある。
【0099】
次に、第2実施形態に係る処理システムについて詳細に説明する。
【0100】
第2実施形態に係る処理システムは、推論装置20に代えて推論装置20A(
図9参照)を備え、クライアント装置30に代えてクライアント装置30A(
図10参照)を備えている。
【0101】
図9は、第2実施形態に係る推論装置の機能構成図である。なお、推論装置20Aのハードウェア構成は、推論装置20と同様である。
【0102】
推論装置20Aは、ニューラルネットワークモデル22Aを備える。ニューラルネットワークモデル22Aは、第1実施形態に係るニューラルネットワークモデル22における活性化関数レイヤー以外の処理レイヤー(主処理レイヤー)に対応する処理レイヤー(対応主処理レイヤー)を含んでいる。例えば、ニューラルネットワークモデル22Aは、ニューラルネットワークモデル22における主処理レイヤーである、レイヤー1の畳込処理部23-1、レイヤー3のプーリング処理部23-3、レイヤーN-1のアフィン処理部23-n-1等のそれぞれに対応する暗号化データ空間上の演算処理を実行する対応主処理レイヤーである、畳込処理部23A-1、プーリング処理部23A-3、アフィン処理部23A-n-1等を含んでいる。なお、本実施形態においては、ニューラルネットワークモデル22における最後尾の一部のレイヤー(本例では、レイヤーNのSoftMax処理部23-n)における処理は、暗号化データ空間上の演算処理として実行することはできないので、ニューラルネットワークモデル22Aには、レイヤーNのSoftMax処理部23-nに対応する処理レイヤーを含めず、レイヤーNの処理については、後述するようにクライアント装置30Aで実行するようにしている。
【0103】
ニューラルネットワークモデル22Aにおいては、第1実施形態に係るニューラルネットワークモデル22における、直前に平文データの和演算の処理を実行する処理レイヤー(本実施形態では、例えば、レイヤー1、レイヤー3、レイヤN-1等がこれに該当するものとする)が存在する活性化関数レイヤーに対応する処理レイヤー(活性化関数対応レイヤー)の少なくとも1つについては、上述したように、平文データの剰余演算付き和演算に対応する暗号化データ空間上の演算を行う処理レイヤーによる処理により、活性化関数レイヤーとその直前の処理レイヤーとの組の処理と同様な結果を得られるようにすることができるので、省略されている。したがって、ニューラルネットワークモデル22Aにおいては、例えば、レイヤー1の畳込処理部23A-1と、プーリング処理部23A-3とのように、主処理レイヤー同士が直接接続された構成部分を含んでいる。なお、学習装置10のニューラルネットワークモデル12における、省略された活性化関数対応レイヤーに対応する活性化関数レイヤーで使用される活性化関数は、第1実施形態で示した活性化関数であって、ニューラルネットワークモデル22A側の対応する部分での処理結果が、同一又はより近い結果が得られるように設定されている。
【0104】
本実施形態に係る推論装置20Aでは、入力部の一例としての受信部28がクライアント装置30Aから、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号による暗号化が行われた暗号化データを対象データとして受信し、記憶部25に格納し、推論制御部24が記憶部25から対象データを取得し、ニューラルネットワークモデル22Aに入力して推論処理を実行する。ニューラルネットワークモデル22AのレイヤーN-1のアフィン処理部23A-n-1による推論結果(推論結果(途中))が推論結果送信部29に出力され、推論結果送信部29が推論結果(途中)をクライアント装置30Aに送信する。
【0105】
次に、ニューラルネットワークモデル22Aにおける或るアフィン処理レイヤーにおける処理の具体例について説明する。アフィン処理レイヤーは、直前のレイヤーから入力された複数のデータの総和を算出する処理を実行するレイヤーである。
【0106】
ここで、アフィン処理レイヤーには、直前のレイヤーからPaillier暗号による複数の暗号化データ(第1暗号化データ、第3暗号化データ)が入力されるものとして説明する。なお、本説明においては、説明を容易にするために入力される暗号化データが2つとしているが、3つ以上の暗号化データが入力される場合も同様な処理となる。
【0107】
暗号に係る処理で使用する各種設定を以下に示すように決定しておく。すなわち、暗号において使用する安全な素数p及びqを用意する。なお、素数の決定における手順や注意点は、RSA暗号と同じでよい。また、N=p×qとする。また、kを0≦k≦N-1の範囲で任意に設定する。g=1+kNとする。ここで、p、qは、秘密鍵、g、Nは、公開鍵、兼システムパラメータである。
【0108】
アフィン処理レイヤーに入力される暗号化データC1、C2は、以下の式(1)、(2)に示すように表される。なお、暗号化データC1は、平文データm1(0≦m1≦N-1)をPaillier暗号により暗号化した暗号化データであり、暗号化データC2は、平文データm2(0≦m2≦N-1)をPaillier暗号により暗号化した暗号化データである。
C1=gm1×r1N mod N2 ・・・(1)
C2=gm2×r2N mod N2 ・・・(2)
ここで、r1(0≦r1≦N-1)、及びr2(0≦r2≦N-1)は、乱数である。
【0109】
アフィン処理レイヤーでは、以下の式(3)に示す演算を行って処理結果C3(第2暗号化データ、第4暗号化データ)を算出する。
C3=C1 × C2 mod N2 ・・・(3)
式(3)を変形すると、以下の式(4)に示すように表される。
C3=C1 × C2 modN2
=(gm1×r1N)×(gm2×r2N) mod N2
=gm1+m2×(r1×r2)N mod N2
=(gm1+m2 mod N2×(r1×r2)N mod N2) mod N2 ・・・(4)
【0110】
ここで、gx mod N2を二項定理に従って展開すると、以下の式(5)に示すように表すことができる。
gx mod N2=(1+kN)X mod N2=1+xkN+x(x-1)/2×k2N2+・・・・mod N2 ・・・(5)
式(5)の右辺については、第3項以降は、必ずN2が係数として掛かっているため、mod N2では、0となる。
この結果、以下の式(6)に示す関係が得られる。
gx mod N2=1+xkN mod N2 ・・・(6)
式(6)において、x=Nとすると、以下の式(7)に示す関係が成り立つ。
gN mod N2=1+NkN mod N2 =1・・・(7)
式(7)によると、以下の式(8)が成り立つことがわかる。
gx+yN mod N2=gx×gyN modN2 =gx×(gN)y mod
N2=gx×1y mod N2=gx mod N2・・・(8)
ここで、yは、任意の整数である。
【0111】
式(8)にx=m1+m2を代入すると、以下の式(9)が得られる。
gm1+m2 mod N2=gm1+m2+yN modN2 ・・・(9)
式(9)を式(4)に代入すると、C3は、以下の式(10)に示すようになる。
C3=(gm1+m2+yN mod N2×(r1×r2)N mod N2) mod N2 ・・・(10)
m1及びm2の値域により、m1+m2の値域は、以下の式(11)に示すようになる。
0≦m1+m2≦2N-2 ・・・(11)
したがって、m1+m2+yNの値域は、yを0又は-1とすれば、式(12)を満たすに示すようになる。
0≦m1+m2+yN≦N-1 ・・・(12)
このようなyであるとすると、m1+m2+yN=m1+m2 mod Nと表現できる。
【0112】
この結果、式(10)は、式(13)に示すように表される。
C3=(gm1+m2 mod N mod N2×(r1×r2)N mod N2) mod N2 ・・・(13)
【0113】
次に、アフィン処理レイヤーによる式(13)に示す処理結果C3を復号する場合について説明する。
【0114】
C3を復号するために以下の式(14)に示す復号用データD’が算出される。
D’=C3(p-1)(q-1) mod N2・・・(14)
式(14)に、式(13)を代入すると、復号用データD’は、式(15)に示すように表される。
D’=(gm1+m2 mod N×(p-1)×(q-1) mod N2×(r1×r2)N×(p-1)×(q-1) mod N2) mod N2・・・(15)
オイラーのトーシエント関数を計算すると、
φ(N2)=φ(p2q2)=p(p-1)q(q-1)=N(p-1)(q-1)であるので、オイラーの定理によって、任意のaに対して、以下の式(16)が成り立つ。
aN×(p-1)×(q-1)N1 mod N2 =1 ・・・(16)
式(16)によると、(r1×r2)N×(p-1)×(q-1) mod N2) mod N2=1となる。
したがって、式(15)は、以下の式(17)に示すように表される。
D’=(gm1+m2 mod N×(p-1)×(q-1) mod N2・・・(17)
式(6)の関係を用いると、式(17)は、以下の式(18)に変形できる。
D’=1+(m1+m2 mod N)×(p-1)×(q-1)kN mod N2・・・(18)
【0115】
次に、復号データDを以下の式(19)により算出する。
D=(D’-1)/N×(k×(p-1)×(q-1))-1 mod N・・・(19)
ここで、任意のaに対するa-1は、aのmod Nにおける逆元(言い換えれば、a×a-1 mod N =1を満たす値)を示す。なお、Nについては、mod N2における逆元が存在しないため、単純に除算を行う式となっている。
式(19)に式(18)に示すD’を代入すると、復号データDは、式(20)に示すように表される。
D=m1+m2 mod N・・・(20)
【0116】
式(20)に示すように、アフィン処理レイヤーによる処理結果C3は、復号することによって、平文データm1と平文データm2に対してmod N演算を行った結果となる。
【0117】
したがって、暗号空間上での上記したアフィン処理レイヤーの処理を実行し、その後に活性化関数レイヤーに対応する処理(非線形分離するための関数による処理)を行うことなく、平文データの加減演算を行う処理レイヤー及びmod演算を行う活性化関数レイヤーを実行した処理結果に対応する暗号空間上の処理結果を得ることができる。
【0118】
本実施形態に係る推論装置20Aでは、ニューラルネットワークモデル22Aにおいては、少なくとも1つの活性化関数対応レイヤーが省略されているので、ニューラルネットワークモデル22Aによる処理の処理負荷を軽減することができる。また、対象データが暗号化データであり、ニューラルネットワークモデル22Aでは、暗号化データのままでの処理が実行されるので、推論装置20Aから情報が漏えいしてしまうことを適切に防止することができる。
【0119】
次に、クライアント装置30Aについて詳細に説明する。
【0120】
図10は、第2実施形態に係るクライアント装置の機能構成図である。なお、クライアント装置30Aのハードウェア構成は、クライアント装置30と同様である。
【0121】
クライアント装置30Aは、クライアント装置30に対して、更に、暗号部37と、復号部38と、SoftMax処理部23-nとを備える。
【0122】
暗号部37は、記憶部33に格納されている暗号化されていない対象データ34を、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号(例えば、Paillier暗号)による暗号化を行い、送信部32に渡す。
【0123】
復号部38は、受信部36を介して、推論装置20Aから送信された推論結果(途中)を受け取り、推論結果(途中)に対して暗号部37の暗号方式に対応する復号化を行い、復号された推論結果(途中)をSoftMax処理部23-nに渡す。
【0124】
SoftMax処理部23-nは、第1実施形態に係るニューラルネットワークモデル22のSoftMax処理部23-nと同じ処理を実行する処理部であり、復号された推論結果(途中)を入力として、ソフトマックス関数による処理を実行し、最終的な推論結果(推論結果(最終))を記憶部33に格納する。
【0125】
次に、第2実施形態に係る処理システム1における処理動作について説明する。
【0126】
図11は、第2実施形態に係る処理システムの動作を示すシーケンス図である。なお、
図6に示す第1実施形態に係る処理システムの動作と同一部分には同一の符号を付し、重複する説明を省略する。
【0127】
クライアント装置30Aの暗号部37は、記憶部33から対象データ34を取得し、対象データ34を所定の暗号により暗号化し(S112)、送信部32は、暗号化した対象データを推論装置20Aに送信する(S113)。
【0128】
推論処理20Aの推論制御部24は、記憶部25から暗号化された対象データ26を読み出して、ニューラルネットワークモデル22Aの最初の処理レイヤー(レイヤー1)の処理部23に入力する。この結果、ニューラルネットワークモデル22において、対象データ26を対象とした推論処理が実行されて、処理レイヤー(レイヤーN-1)の処理部23A(アフィン処理部23A-n-1)から推論結果(途中)が推論結果送信部29に出力されることとなる(S108)。
【0129】
次いで、推論装置20Aの推論結果送信部29は、ニューラルネットワークモデル22Aから渡された推論結果(途中)を対象データの推論処理を要求したクライアント装置30Aに対して送信する(S114)。
【0130】
クライアント装置30Aの受信部36は、推論装置20Aから推論結果(途中)を受信して復号部38に渡し、復号部38が推論結果(途中)を復号化し(S115)、SoftMax処理部23-nに渡す。SoftMax処理部23-nは、推論結果(途中)を入力として、推論処理の残りの処理を実行して推論結果(最終)を得て(S116)、推論結果(最終)を記憶部33に格納する(S117)。
【0131】
以上説明したように、第2実施形態に係る処理システムによると、推論装置20Aでは、ニューラルネットワークモデル22Aにおいては、少なくとも一部の活性化関数レイヤーに対応する処理レイヤーが省略されているので、ニューラルネットワークモデル22Aによる処理の処理負荷を軽減でき、処理時間を短縮することができる。また、推論装置20Aでは、対象データを暗号化データとしているので、推論装置20Aから情報が漏えいしてしまうことを適切に防止することができる。
【0132】
次に、第3実施形態に係る処理システムについて説明する。なお、以下においては、第1実施形態及び第2実施形態に係る処理システムと異なる点を中心に説明する。
【0133】
第3実施形態に係る処理システムは、第2実施形態に係る処理システムにおいて、学習装置10に代えて、学習装置10Aを備え、学習装置10Aにおいて、暗号化された学習用データを用いて学習を行うようにしたものである。
【0134】
図12は、第3実施形態に係る学習装置の機能構成図である。なお、第1実施形態に係る学習装置と同様な構成については同一の符号を付している。また、学習装置10Aのハードウェア構成は、学習装置10と同様である。
【0135】
学習装置10Aは、ニューラルネットワークモデル12に代えて、ニューラルネットワーク12Aを備え、暗号部191と、復号部192とをさらに備える。
【0136】
暗号部191は、学習用データを、クライアント装置30Aにおける対象データに対する暗号方式と同じ暗号方式により暗号化して、ニューラルネットワークモデル12Aに入力する。
【0137】
ニューラルネットワーク12Aは、正伝播を実行する場合の構成と、逆伝播を実行する場合の構成とが異なっている。
【0138】
正伝播を実行する場合には、ニューラルネットワーク12Aは、推論装置20Aのニューラルネットワークモデル22Aと同様な処理レイヤーを構成する処理部(レイヤー1の畳込処理部13A-1、レイヤー3のプーリング処理部13A-3、レイヤーN-1のアフィン処理部13A-n-1等)と、復号部192と、レイヤーNのSoftMax処理部13-nとを含むモデルとして利用される。正伝播時における畳込処理部13A-1、プーリング処理部13A-3、アフィン処理部13A-n-1等は、推論装置20Aのニューラルネットワークモデル22Aの畳込処理部23A-1、プーリング処理部23A-3、アフィン処理部23A-n-1等と同様な処理を実行する。復号部192は、レイヤーNから出力される推論結果(途中)を受け取り、推論結果(途中)に対して暗号部191の暗号方式に対応する復号化を行い、復号された推論結果(途中)をSoftMax処理部13-nに渡す。
【0139】
一方、逆伝播を実行する場合には、ニューラルネットワーク12Aは、学習装置10のニューラルネットワークモデル12の逆伝播を実行する場合の構成と同様なモデルとして利用される。すなわち、逆伝播時における畳込処理部13A-1、プーリング処理部13A-3、アフィン処理部13A-n-1等は、学習装置10のニューラルネットワークモデル12の畳込処理部13-1、プーリング処理部13-3、アフィン処理部13-n-1と同様な処理を実行する。それぞれの活性化関数処理部13における活性化関数は、第1実施形態における逆伝播時の活性化関数と同様な活性化関数、すなわち、ノコギリ波に近
似された近似関数(例えば、双曲線関数)となっている。
【0140】
上記した学習装置10Aによると、正伝播の実行時には、推論装置20Aで使用する対象データと同じ暗号化により暗号化された学習用データを用いて、推論装置20Aのニューラルネットワーク22Aと同じ構成又は同じ構成部分を含むニューラルネットワークモデル12Aにより処理を行うことができるので、推論装置20Aのニューラルネットワークモデル22Aと同様な処理結果を出力することができ、この出力に基づいて、逆伝播を行って設定値を学習することができる。これにより、推論装置20Aで使用されるニューラルネットワークモデル22Aにより適した設定値を学習することができ、結果として推論装置20Aを用いた推論処理の精度を向上することができる。
【0141】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【0142】
例えば、上記実施形態では、画像認識を行うCNNが構成される処理システムに対して本発明を適用した例を示していたが、本発明は、画像認識以外の推論処理を実行するニューラルネットワークが構成される処理システムに対しても適用することができる。
【0143】
また、上記実施形態においては、活性化関数を剰余演算関数としていたが、本発明はこれに限られず、同様な変化をする関数であれば、剰余演算関数でなくてもよい。
【0144】
また、上記実施形態において、活性化関数を、入力値が取り得る最小値から第1値までの範囲(第1範囲)においては、入力値が大きくなるほど出力値の最小値に近づくように変化し、入力値が第1値の場合には、出力値が出力値の最大値となり、入力値が第1値から入力値の取り得る最大値までの範囲(第2範囲)においては、入力値が大きくなるほど出力値が最大値から離れるように変化する波形の関数又はこの波形に近似された関数としてもよい。すなわち、活性化関数は、入力値の取り得る値の最小値から第1値までの第1範囲においては、入力値が大きくなるほど出力値が出力値の最大値又は最小値の一方に近づくように変化し、入力値が第1値から入力値の取り得る最大値までの第2範囲においては、入力値が大きくなるほど出力値が出力値の最大値又は最小値の他方から離れるように変化し、第1範囲における出力値と、第2範囲における出力値とは、同一の出力値をとらないような波形の関数又はこの波形に近似された波形としてもよい。
【0145】
また、上記実施形態においては、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、有限巡回群上の演算に対して準同型な性質を持っている準同型暗号であれば、完全準同型暗号や、SomeWhat準同型暗号を用いてもよい。いずれの準同型暗号を用いても、推論処理における処理の負荷を軽減することができる。また、SomeWhat準同型暗号を用いた場合には、活性化関数対応レイヤーを省略することにより、演算回数を低減することができるので、SomeWhat準同型暗号における演算回数の制限内でより多くの処理を実行することができる。
【0146】
また、例えば、学習装置10や推論装置20で、平文データを用いて処理をする場合において、処理レイヤーにおいて、平文データに対する加減算演算等の演算を行い、次の処理レイヤーで活性化関数による処理を行うようにしていたが、本発明はこれに限られず、例えば、処理レイヤーにおいて、平文データに対する剰余演算付きの演算を行うようにして、後ろの処理レイヤー(直後の処理レイヤー又は、実行前までに非線形分離が必要な次の処理レイヤーよりも前の処理レイヤー)において剰余演算付きの演算の演算結果に対する活性化関数による処理(非線形分離を行う関数の処理)を行わないようにしてもよい。
【0147】
また、上記第2実施形態において、活性化関数レイヤー以外の処理レイヤーの直後の活性化関数レイヤーを省略するようにしていたが、本発明はこれに限られず、活性化関数レイヤー以外の処理レイヤーよりも後ろに配置され、その実行前までに非線形分離が必要な次の処理レイヤーよりも前の活性化関数レイヤーを省略するようにしてもよい。
【0148】
また、上記実施形態において、学習装置10(10A)、推論装置20(20A)、又はクライアント装置30(30A)のCPU101がプログラムを実行することにより構成していた機能部の少なくとも一部を、各装置内の他のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。また、学習装置10(10A)のGPU103により構成していた処理部13(畳込処理部13-1等)を、CPU101により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、推論装置20(20A)のGPU103により構成していた処理部23(畳込処理部23-1等)を、CPU101により構成するようにしてもよく、別のハードウェア回路で構成してもよい。
【0149】
また、上記実施形態では、対象データを受け付ける入力部の一例として通信部28を例に挙げていたが、本発明はこれに限られず、例えば、入力部として、対象データが格納された記録媒体から対象データを読み取るリーダライタとしてもよく、また、対象データとなる画像データを取り込むカメラとしてもよい。
【0150】
また、上記実施形態では、学習装置10(10A)と推論装置20(20A)を別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、同一のハードウェアにより構成してもよい。
【0151】
また、上記実施形態では、推論装置20(20A)とクライアント装置30(30Aとを別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、例えば、クライアント装置30の処理能力が十分であれば、推論処理20(20A)とクライアント装置30(30A)とを同一のハードウェアにより構成してもよい。
【符号の説明】
【0152】
1…処理システム、10,10A…学習装置、11…学習部、12,12A…ニューラルネットワークモデル、13…処理部、14…学習制御部、15…記憶部、16…学習用データ、17…設定値情報、18…設定値通知部、20,20A…推論装置、21…推論部、22,22A…ニューラルネットワークモデル、23…処理部、24…推論制御部、25…記憶部、26…対象データ、27…設定値情報、28…受信部、29…推論結果送信部、30,30A…クライアント装置、37,191…暗号部、38,192…復号部、101…CPU