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