(57)【要約】【課題】演算処理の高速化を図ることが可能な情報処理装置等を提供する。【解決手段】コンピュータ１は、ニューラルネットワークを複数に分割する分割部と、分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定する特定部と、特定後の各多項式ニューラルネットワークを連結する連結部とを備える。コンピュータ１は、多項式ニューラルネットワークに対応する対応値が、所定条件を満たさない場合、前記パラメータを変更する。【選択図】図１
2018097612.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを複数に分割する分割部と、
分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定する特定部と、
特定後の各多項式ニューラルネットワークを連結する連結部と
備える情報処理装置。
【請求項２】
前記特定部は、
前記多項式ニューラルネットワークに対応する対応値が、所定条件を満たさない場合、前記パラメータを変更する
請求項１に記載の情報処理装置。
【請求項３】
前記パラメータは前記多項式ニューラルネットワークの次数及び中間素子数を含み、
前記特定部は、
前記中間素子数の上限数を超えない範囲で、各多項式ニューラルネットワークの次数及び中間素子数を特定する
請求項１または２に記載の情報処理装置。
【請求項４】
前記特定部は、
分割したニューラルネットワークの入出力特性に基づき、前記多項式ニューラルネットワークの損失関数を算出し、
算出した損失関数が閾値より大きいか否か判断し、
閾値より大きいと判断した場合に、前記次数及び中間素子数を変更する
請求項３に記載の情報処理装置。
【請求項５】
コンピュータに、
ニューラルネットワークを複数に分割し、
分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定し、
特定後の各多項式ニューラルネットワークを連結する
処理を実行させるプログラム。
【請求項６】
コンピュータに、
ニューラルネットワークを複数に分割し、
分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定し、
特定後の各多項式ニューラルネットワークを連結する
処理を実行させる情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム及び情報処理方法に関する。
【背景技術】
【０００２】
従来、深層のニューラルネットワークを用いた信号処理技術が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１３９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では層数の増加に伴い演算処理性能が低下するという問題がある。
【０００５】
一つの側面では、演算処理の高速化を図ることが可能な情報処理装置等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、ニューラルネットワークを複数に分割する分割部と、分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定する特定部と、特定後の各多項式ニューラルネットワークを連結する連結部とを備える。
【発明の効果】
【０００７】
一つの側面では、演算処理の高速化を図ることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】処理の概要を示す説明図である。
【図２】コンピュータのハードウェア構成を示すブロック図である。
【図３】深層ニューラルネットワークを示す説明図である。
【図４】３層のニューラルネットワークにおける関数近似の概念を示す説明図である。
【図５】目標とする関数が滑らかで小刻みな変化をする場合の例を示す説明図である。
【図６】目標とする関数が滑らかで小刻みな変化をする場合の例を示す説明図である。
【図７】目標とする関数がx2に比例する場合の例を示す説明図である。
【図８】深層ニューラルネットワーク及び多項式ニューラルネットワークを示す説明図である。
【図９】多項式ニューラルネットワークの構成及び中間層の出力を示す説明図である。
【図１０】３層多項式ニューラルネットワークにおける関数近似の概念を示す説明図である。
【図１１】関数近似能力を比較する説明図である。
【図１２】深層ニューラルネットワークを示す説明図である。
【図１３】分割状態を示す説明図である。
【図１４】分割処理の手順を示すフローチャートである。
【図１５】学習処理の手順を示すフローチャートである。
【図１６】学習処理の手順を示すフローチャートである。
【図１７】再分割処理の手順を示すフローチャートである。
【図１８】再分割処理を示す説明図である。
【図１９】上述した形態のコンピュータの動作を示す機能ブロック図である。
【図２０】実施の形態３に係るコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は処理の概要を示す説明図である。情報処理装置１は、例えばサーバコンピュータ、パーソナルコンピュータ、タブレット、スマートフォンまたは携帯電話機等である。以下では情報処理装置１をコンピュータ１と読み替えて説明する。コンピュータ１は深層のニューラルネットワークを取得する。コンピュータ１は取得したニューラルネットワークを複数に分割する。コンピュータ１は分割した各ニューラルネットワークに対応する多項式ニューラルネットワークを生成する。コンピュータ１は分割したニューラルネットワークから得られた入出力特性に基づき、多項式ニューラルネットワークについて学習処理を行い、パラメータを特定する。コンピュータ１は、パラメータを特定した複数の多項式ニューラルネットワークを連結する。以下詳細を説明する。
【００１０】
図２はコンピュータ１のハードウェア構成を示すブロック図である。コンピュータ１は制御部としてのＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memor）１２、入力部１３、表示部１４、記憶部１５、時計部１８、及び、通信部１６等を含む。ＣＰＵ１１は、バス１７を介してハードウェア各部と接続されている。ＣＰＵ１１は記憶部１５に記憶された制御プログラム１５Ｐに従いハードウェア各部を制御する。なお、ＣＰＵ１１は複数のプロセッサコアを搭載したマルチコアプロセッサであっても良い。ＲＡＭ１２は例えばＳＲＡＭ（Static RAM）、ＤＲＡＭ(Dynamic RAM)、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１１】
入力部１３はマウス、キーボード、タッチパネル、ボタン等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、ＣＰＵ１１の指示に従い各種情報を表示する。通信部１６はルータ等の通信モジュールであり、図示しない他のコンピュータ等と間で、インターネットまたは公衆回線網等の通信網Ｎを介して、情報の送受信を行う。時計部１８は日時情報をＣＰＵ１１へ出力する。記憶部１５は大容量メモリであり、制御プログラム１５Ｐ等を記憶している。
【００１２】
図３は深層ニューラルネットワークを示す説明図である。図３に示すニューラルネットワークでは第１層目が入力層、第Ｌ層が出力層であり、入力層と出力層との間に複数の中間層が存在する。入力層にはＸ1〜ＸM(1)がそれぞれ入力される。層は中間層（第１層）を含め、全体で１層〜Ｌ層まで存在する。なお、本実施形態で示す深層ニューラルネットワークは一例であり、これに限るものではない。少なくとも４層以上の深層ニューラルネットワークであればよい。出力層からはＹ1〜ＹM(L)がそれぞれ出力される。深層ニューラルネットワークの入出力関係は、入力をＸ、出力をＹとした場合、下記式（１）及び式（２）で表すことができる。
【００１３】
【数１】
2018097612.tif 000003
【００１４】
【数２】
2018097612.tif 000004
【００１５】
ここで、Ｗ(i)は行列、ｂiはベクトルであり、重みパラメータである。また、σは活性化関数、ｚlは中間層（第１層）の出力である。活性化関数σは下記式（３）で表すことができる。
【００１６】
【数３】
2018097612.tif 000005
【００１７】
同様に、中間層（第１層）の出力を下記式（４）により定義する。ここで、第１層の出力はＭ(l)次元の実数値ベクトルになる。
【００１８】
【数４】
2018097612.tif 000006
【００１９】
深層ニューラルネットワークをハードウェアに実装する場合、中間層の演算を行う素子は、中間素子と呼ばれる。中間素子は通常、加算回路、乗算回路、メモリ等により構成される。
【００２０】
ニューラルネットワークの深層化は認識性能の改善に大きく寄与するため、ニューラルネットワークの深層化はさらに進むこととなる。ニューラルネットワークの層数Ｌが増加した場合、層数Ｌに比例して逐次的に演算数が増加する。この場合、並列演算が困難となり、演算処理性能が低下する。図２に示すように、第１＋１層の出力結果を得る場合、前段の第１層の出力結果が必要となる。最終層の出力結果を得る場合、初段から順番に計算を実行する必要があり、各層の計算を独立に実行することができない。
【００２１】
数学的には、３層のニューラルネットワークでも中間素子が無限個、すなわち２層目の出力の次元Ｍ(2)を無限に大きくできるのであれば、任意の関数を近似することができる。従って、３層のニューラルネットワークでも、中間素子が無限個あれば、深層のニューラルネットワークと同一の機能を実現することができると考えられる。そのため、深層のニューラルネットワークを、３層のニューラルネットワークで近似し、並列演算することで演算処理性能を高くするということが考えられる。
【００２２】
図４は、３層のニューラルネットワークにおける関数近似の概念を示す説明図である。活性化関数により三角波形を作り、ずらした三角波形の重ね合わせにより関数を近似している例である。
【００２３】
図５および図６は、目標とする関数が滑らかで小刻みな変化をする場合の例を示す説明図である。図５または図６に示す関数を表現するためには、多くの鋭い三角波形が必要である。一つの三角波形を作成する場合、中間素子は少なくとも２つ必要となり、結果的に多くの中間素子が必要となる。
【００２４】
図７は、目標とする関数がｘ2に比例する場合の例を示す説明図である。図７の場合、中間素子を相当数増加させても、目標とする関数を表現することができない。従ってハードウェアの制約が厳しく、中間素子が十分に用意できない場合、深層ニューラルネットの演算処理性能を高めるために、深層のニューラルネットを３層のニューラルネットで近似して並列で演算するという手法は有効でないということが理解できる。
【００２５】
図８は深層ニューラルネットワーク及び多項式ニューラルネットワークを示す説明図である。コンピュータ１のＣＰＵ１１は、目標とする深層ニューラルネットワークを、例えば中央で２つに分割する。ＣＰＵ１１は、分割した２つのニューラルネットワークを、それぞれ３層の多項式ニューラルネットワークで近似する。
【００２６】
図９は多項式ニューラルネットワークの構成及び中間層の出力を示す説明図である。３層の多項式ニューラルネットワークの入力および出力は下記式（５）及び式（６）により表すことができる。
【００２７】
【数５】
2018097612.tif 000007
【００２８】
【数６】
2018097612.tif 000008
【００２９】
ここで、各ｗは重みパラメータであり、ｆは活性化関数である。パラメータの一つであるｄは３層の多項式ニューラルネットワークの次数である。なお、次数ｄは通常２以上であり、詳細は後述する。
【００３０】
図１０は、３層多項式ニューラルネットワークにおける関数近似の概念を示す説明図である。図１１は、関数近似能力を比較する説明図である。活性化関数によりインパルス波形を作成し、ずらしたインパルス波形の重ね合わせにより関数を近似している例を示す。３層のニューラルネットワークで作成されるインパルス波形は三角波形だけであったが、３層の多項式ニューラルネットワークで作成されるインパルス波形には、三角波形以外のものも含まれる。そのため、３層のニューラルネットワークよりも３層の多項式ニューラルネットの方が、関数近似能力が高いといえる。図１１Ａに示すように、目標とする関数が２次関数の場合、３層のニューラルネットワークでは多くの中間素子で関数近似を行うことになる。一方、図１１Ｂに示すように、多項式ニューラルネットワークであれば、一つの中間素子で済ませることができ、目標とする関数に、一つの中間素子の出力Ｙが適切に近似することとなる。このように、多項式ニューラルネットワークの関数近似能力の方が、３層のニューラルネットワークよりも高いことが理解できる。
【００３１】
３層の多項式ニューラルネットワークの演算には、３層のニューラルネットワークとは違い、次数２以上の多変数多項式の演算が含まれている。そのため、中間素子数が同一の場合、演算量は従来の３層のニューラルネットワークよりも大きくなるが、多変数多項式の演算の各項の計算は独立に実行することができるため、並列した演算を実行することが可能である。従って、並列演算を行うことによりニューラルネットワークよりも演算処理性能を高めることができる。多変数多項式の演算を並列で演算する場合に必要となる乗算回路の個数(=乗算回数)は、下記（式７）で表すことができる。
【００３２】
【数７】
2018097612.tif 000009
【００３３】
また加算回路の個数（＝加算回数）も以下の下記（式８）で表すことができる。
【００３４】
【数８】
2018097612.tif 000010
【００３５】
ここで、Ｍ(1)は入力データの次元、Ｍ(2)は中間素子（乗算回路、加算回路）の数である。dは３層の多項式ニューラルネットワークの次数であり、ｄ＝１の場合、３層のニューラルネットワークと等しくなる。（式７）及び（式８）から明らかなとおり、次数ｄが小さく中間素子の数Ｍ(2)が小さいほど、必要となるハードウェアのリソース(乗算回路、加算回路)は少なく済む。しかしながら、次数ｄと中間素子の数Ｍ(2)とを極端に小さくした場合、多項式ニューラルネットワークの関数近似能力が低くなってしまうため、単純に小さくすることはできない。そのため、ハードウェアのリソース(乗算回路、加算回路)に制限がある場合、多項式ニューラルネットワークの関数近似能力が低くなり過ぎないように、次数ｄと中間素子の数Ｍ(2)を小さく調整する。
【００３６】
図１２は深層ニューラルネットワークを示す説明図である。実施形態では層数は３より大きいものとして説明する。ＣＰＵ１１は、記憶部１５から目標とする深層ニューラルネットワーク及び当該深層ニューラルネットワークの学習時に使用した入力データを読み出す。ＣＰＵ１１は、読み出した入力データｘ1〜ｘ3を、目標とする深層ニューラルネットワークに入力する。ＣＰＵ１１は、深層ニューラルネットワークの出力層の出力データＹ＝Ｚ(l)、及び、各中間層の出力データＺ(i)を取得する。Ｗ(1)〜Ｗ(L-1)は各層間の重み行列である。
【００３７】
ここで、中間層の出力データは下記（式９）で表現でき、出力層の出力データＹは下記（式１０）で表現できる。なお、ｆL、ｆL=1は活性化関数である。ＣＰＵ１１は、入力データと、算出した中間層及び出力層の出力データをＲＡＭ１２に記憶する。
【００３８】
【数９】
2018097612.tif 000011
【００３９】
【数１０】
2018097612.tif 000012
【００４０】
次いで、ＣＰＵ１１は、深層ニューラルネットワークの分割処理を行う。図１３は分割状態を示す説明図である。ＣＰＵ１１は、深層ニューラルネットワークがＬ層（Ｌ＞３）の場合、第１層から第Ｌ／２層のニューラルネットワークと、第Ｌ／２層から第Ｌ層のニューラルネットワークに２分割し、２つの深層ニューラルネットワークを生成する。なお、実施形態では２分割する例を示すがこれに限るものではない。３分割または４分割としてもよい。また層数に応じて分割数を変更させてもよい。例えば、ＣＰＵ１１は、層数が第２閾値（１００）を超えた場合、２分割から４分割に変更し、層数が第２閾値（２００）を超えた場合、４分割から８分割にしてもよい。
【００４１】
図１３の例では、Ｚ1〜Ｚ(L/2)の第１深層ニューラルネットワークと、Ｚ(L/2)〜Ｚ(L)の第２深層ニューラルネットワークとに分割されている。次いで、ＣＰＵ１１は、各ニューラルネットワークの入出力データを取得する。本実施形態では、ＣＰＵ１１は、第１深層ニューラルネットワークのための第１学習データ及び第２深層ニューラルネットワークのための第２学習データを取得する。第１学習データの入力データは第１層に入力されたデータであり、第１学習データの出力データは第Ｌ／２層で出力されるデータである。ＣＰＵ１１は、ＲＡＭ１２から第１の学習データを取得し、ＲＡＭ１２に記憶する。第２学習データの入力データは第Ｌ／２層で出力されたデータであり、第２学習データの出力データは第Ｌ層で出力されるデータである。ＣＰＵ１１は、ＲＡＭ１２から第２の学習データを取得し、ＲＡＭ１２に記憶する。
【００４２】
ＣＰＵ１１は、（式７）〜（式１０）に、重みパラメータの初期値、多項式の次数ｄの初期値（例えば１または２）、中間素子の個数の初期値（例えば１または２）を設定する。ＣＰＵ１１は、初期値の設定により第１深層ニューラルネットワークに対応する第１多項式ニューラルネットワーク、及び、第２深層ニューラルネットワークに対応する第２多項式ニューラルネットワークを生成する。ＣＰＵ１１は、第１学習データに基づき、第１多項式ニューラルネットワークを学習させる。同様に、ＣＰＵ１１は、第２学習データに基づき、第２多項式ニューラルネットワークを学習させる。すなわち、学習を通じてパラメータである重みパラメータ、次数及び中間素子数を特定する。
【００４３】
ＣＰＵ１１は、学習処理にあたり、勾配法を用いる。なお、勾配法は一例であり、その他の方法であってもよい。例えばＳＡ(Simulated Annealing)法、または、遺伝的アルゴリズム法を用いれば良い。多項式ニューラルネットワークに対応する対応値としての勾配法に基づく損失関数Ｅ（Ｘ，Ｗ(2)，Ｗ(3)）には、下記（式１１）に示す２乗損失を使用する。
【００４４】
【数１１】
2018097612.tif 000013
【００４５】
ここで、Ｘn（ｎ＝１，２，，，）は学習データの入力データ、ｙjは学習データの出力データ、Ｗ(2)，Ｗ(3)は３層の多項式ニューラルネットワークが持つ重みパラメータである。ＣＰＵ１１は、また損失関数のＥ（Ｗ(2)，Ｗ(3)）の勾配は例えば、下記（式１２）により表される。
【００４６】
【数１２】
2018097612.tif 000014
【００４７】
ＣＰＵ１１は、算出した勾配に基づき、重みパラメータを更新する。重みパラメータの更新は、例えば下記（式１３）により算出する。
【００４８】
【数１３】
2018097612.tif 000015
【００４９】
ＣＰＵ１１は、学習の結果、損失関数Ｅ（Ｗ(2)，Ｗ(3)）の値が記憶部１５に記憶した閾値より大きいか否か判断する。ＣＰＵ１１は、損失関数の値が閾値より大きい場合、下記（式１４）に基づき、多項式ニューラルネットワークの次数ｄ及び中間素子の数Ｍ(2)を変更する。
【００５０】
【数１４】
2018097612.tif 000016
【００５１】
ここで、Ｍmaxは中間素子の上限数である。なお、中間素子の上限数は、入力部１３から適宜の値を設定することが可能である。ＣＰＵ１１は、上述した処理を第１多項式ニューラルネットワーク及び第２多項式ニューラルネットワークの双方について実行する。ＣＰＵ１１は、損失関数が閾値より大きくない場合、最終的な重みパラメータ、次数及び中間素子数を有する第１多項式ニューラルネットワーク及び第２多項式ニューラルネットワークをＲＡＭ１２に記憶する。ＣＰＵ１１は、第１多項式ニューラルネットワークの出力層と第２多項式ニューラルネットワークの入力層とを連結する。ＣＰＵ１１は、連結した多項式ニューラルネットワークを表示部１４に出力、または、通信部１６を介して他のコンピュータ（図示せず）へ出力する。
【００５２】
以上のハードウェア群においてソフトウェア処理を、フローチャートを用いて説明する。図１４は分割処理の手順を示すフローチャートである。コンピュータ１のＣＰＵ１１は、入力部１３または記憶部１５から、学習済みの深層ニューラルネットワークの重みパラメータを取得する(ステップＳ１４１)。ＣＰＵ１１は、対象とする深層ニューラルネットワークを記憶部１５から読み出す(ステップＳ１４２)。ＣＰＵ１１は、学習用の入力データを深層ニューラルネットワークへ入力する(ステップＳ１４３)。ＣＰＵ１１は、出力層及び中間層の出力データを取得し、ＲＡＭ１２に記憶する(ステップＳ１４４)。
【００５３】
ＣＰＵ１１は、深層ニューラルネットワークを、第１深層ニューラルネットワーク及び第２深層ニューラルネットワークに分割し、分割した第１深層ニューラルネットワーク及び第２深層ニューラルネットワークをＲＡＭ１２に記憶する(ステップＳ１４５)。ＣＰＵ１１は、入力データ及び第１多項式ニューラルネットワークの出力データを、第１の学習データとしてＲＡＭ１２に記憶する(ステップＳ１４６)。ＣＰＵ１１は、第２多項式ニューラルネットワークの入力データ及び出力層の出力データを、第２の学習データとしてＲＡＭ１２に記憶する(ステップＳ１４７)。
【００５４】
図１５及び図１６は学習処理の手順を示すフローチャートである。ＣＰＵ１１は、多項式ニューラルネットワークの次数及び中間素子数の初期値を、記憶部１５から読み出す(ステップＳ１５１)。ＣＰＵ１１は、記憶部１５からあらかじめ設定された中間素子数の上限を読み出す(ステップＳ１５２)。ＣＰＵ１１は、多項式ニューラルネットワークの重みパラメータの初期値を読み出す(ステップＳ１５３)。ＣＰＵ１１は、ＲＡＭ１２に記憶した第１の学習データ及び第１深層ニューラルネットワークを読み出す(ステップＳ１５４)。
【００５５】
ＣＰＵ１１は、（式５）〜（式１１）及び第１の学習データに基づき、第１多項式ニューラルネットワークの学習処理を行う。具体的には、ＣＰＵ１１は、第１の学習データに基づき、第１多項式ニューラルネットワークの損失関数を算出する(ステップＳ１５５)。ＣＰＵ１１は、算出した損失関数の勾配を、（式１２）に基づき算出する(ステップＳ１５６)。ＣＰＵ１１は、算出した損失関数の勾配及び（式１３）に基づき、重みパラメータを更新する(ステップＳ１５７)。ＣＰＵ１１は、更新後の重みパラメータをＲＡＭ１２に記憶する。
【００５６】
ＣＰＵ１１は、記憶部１５から閾値を読み出す(ステップＳ１５８)。ＣＰＵ１１は、算出した損失関数が閾値より大きいか否かを判断する(ステップＳ１５９)。ＣＰＵ１１は、損失関数が閾値より大きいと判断した場合(ステップＳ１５９でＹＥＳ)、処理をステップＳ１６１へ移行させる。ＣＰＵ１１は、中間素子数の上限数が入力された（式１４）に基づき、次数及び中間素子数を変更する(ステップＳ１６１)。ＣＰＵ１１は、変更後の次数及び中間素子数をＲＡＭ１２に記憶する。
【００５７】
その後、ＣＰＵ１１は、処理をステップＳ１５５に戻す。以上の処理を繰り返すことにより、学習が進み損失関数が閾値より小さくなる。ＣＰＵ１１は、損失関数が閾値より大きくないと判断した場合(ステップＳ１５９でＮＯ)、処理をステップＳ１６２へ移行させる。ＣＰＵ１１は、ＲＡＭ１２に記憶した更新済みの重みパラメータ、変更後の次数及び中間素子数を読み出す。ＣＰＵ１１は、読み出した重みパラメータ、次数及び中間素子数が特定された学習済みの第１多項式ニューラルネットワークを生成する(ステップＳ１６２)。
【００５８】
ＣＰＵ１１は、ステップＳ１５４〜Ｓ１６２の処理を、第２の学習データを用いて、同様に第２多項式ニューラルネットワークの学習処理を行う。ＣＰＵ１１は、最終的に重みパラメータ、次数及び中間素子数が特定された第２多項式ニューラルネットワークを生成する(ステップＳ１６３)。ＣＰＵ１１は、生成した第１多項式ニューラルネットワーク及び第２多項式ニューラルネットワークを連結する(ステップＳ１６４)。ＣＰＵ１１は、連結した多項式ニューラルネットワークを、表示部１４へ出力する(ステップＳ１６５)。これにより、演算処理の高速化を図ることが可能となる。また中間素子数の制約の範囲内で演算処理が可能となる。
【００５９】
実施の形態２
実施の形態２は再分割する形態に関する。図１７は再分割処理の手順を示すフローチャートである。コンピュータ１のＣＰＵ１１は、ステップＳ１５９でＹＥＳの後、すなわち損失関数が閾値より大きい場合、中間素子数が、上限数に達したか否かを判断する(ステップＳ１７１)。ＣＰＵ１１は、上限数に達していない場合(ステップＳ１７１でＮＯ)、処理をステップＳ１７２へ移行させる。ＣＰＵ１１は、実施の形態１で述べたように次数及び中間素子数を変更する(ステップＳ１７２)。その後ＣＰＵ１１は、処理を実施の形態１で述べたステップＳ１５５へ移行させる。
【００６０】
ＣＰＵ１１は、中間素子数が上限に達したと判断した場合(ステップＳ１７１でＹＥＳ)、処理をステップＳ１７４へ移行させる。本実施形態では第１深層ニューラルネットワーク側の中間素子数が上限に達しても損失関数の閾値より大きい例を挙げて説明する。ＣＰＵ１１は、分割後の第１深層ニューラルネットワークを再分割し、第１再分割深層ニューラルネットワーク及び第２再分割深層ニューラルネットワークを生成する(ステップＳ１７４)。
【００６１】
図１８は再分割処理を示す説明図である。図１８に示すように、Ｚ(1)〜Ｚ(L/2)の第１深層ニューラルネットワークの損失関数が閾値より大きいものとして説明する。この場合、ＣＰＵ１１は、Ｚ(L/4)を境に、第１深層ニューラルネットワークを２つに再分割する。なお、分割例は一例であり、３分割以上としてもよい。一方第２深層ニューラルネットワークは損失関数が閾値以下であるため、実施の形態１で述べた処理により、第２多項式ニューラルネットワークの学習処理が完了する。
【００６２】
第１深層ニューラルネットワークは、Ｚ(1)〜Ｚ(L/4)の第１再分割深層ニューラルネットワーク、及び、Ｚ(L/4)〜Ｚ(L/2)の第２再分割深層ニューラルネットワークの２つに分割される。ＣＰＵ１１は、第１再分割深層ニューラルネットワークに対応する第１再分割学習データをＲＡＭ１２に記憶する(ステップＳ１７５)。具体的には、入力データがＺ(1)、出力データがＺ(L/4)となる。ＣＰＵ１１は、同様に第２再分割深層ニューラルネットワークに対応する第２再分割学習データをＲＡＭ１２に記憶する(ステップＳ１７６)。具体的には、入力データがＺ(L/4)、出力データがＺ(L/2)となる。
【００６３】
ＣＰＵ１１は、実施の形態１で述べたステップＳ１５４〜Ｓ１６２の処理により、第１再分割深層ニューラルネットワークに対応する第１再分割多項式ニューラルネットワークを、第１再分割学習データを使用して学習する(ステップＳ１７７)。ＣＰＵ１１は、同様に、第２再分割深層ニューラルネットワークに対応する第２再分割多項式ニューラルネットワークを、第２再分割学習データを使用して学習する(ステップＳ１７８)。
【００６４】
ＣＰＵ１１は、学習済みの第１再分割多項式ニューラルネットワーク、第２再分割多項式ニューラルネットワーク及び第２多項式ニューラルネットワークを連結する(ステップＳ１７９)。ＣＰＵ１１は、連結後の多項式ニューラルネットワークを表示部１４へ出力する(ステップＳ１７１０)。これにより、中間素子数の上限数が十分でない場合でも、再分割を行うことで、適切に多項式ニューラルネットワークを学習させることが可能となる。
【００６５】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００６６】
実施の形態３
図１９は上述した形態のコンピュータ１の動作を示す機能ブロック図である。ＣＰＵ１１が制御プログラム１５Ｐを実行することにより、コンピュータ１は以下のように動作する。分割部１９１は、ニューラルネットワークを複数に分割する。特定部１９２は、分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定する。連結部１９３は特定後の各多項式ニューラルネットワークを連結する。
【００６７】
図２０は実施の形態３に係るコンピュータ１のハードウェア群を示すブロック図である。コンピュータ１を動作させるためのプログラムは、ディスクドライブ、メモリーカードスロット等の読み取り部１０ＡにＣＤ−ＲＯＭ、ＤＶＤディスク、メモリーカード、またはＵＳＢメモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【００６８】
図２０に示すコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したコンピュータ１として機能する。
【００６９】
本実施の形態３は以上の如きであり、その他は実施の形態１または２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。なお、以上述べた各実施形態は適宜組み合わせることが可能である。
【００７０】
以上の実施の形態１から３を含む実施形態に関し、さらに以下の付記を開示する。
【００７１】
（付記１）
ニューラルネットワークを複数に分割する分割部と、
分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定する特定部と、
特定後の各多項式ニューラルネットワークを連結する連結部と
備える情報処理装置。
（付記２）
前記特定部は、
前記多項式ニューラルネットワークに対応する対応値が、所定条件を満たさない場合、前記パラメータを変更する
付記１に記載の情報処理装置。
（付記３）
前記パラメータは前記多項式ニューラルネットワークの次数及び中間素子数を含み、
前記特定部は、
前記中間素子数の上限数を超えない範囲で、各多項式ニューラルネットワークの次数及び中間素子数を特定する
付記１または２に記載の情報処理装置。
（付記４）
前記特定部は、
分割したニューラルネットワークの入出力特性に基づき、前記多項式ニューラルネットワークの損失関数を算出し、
算出した損失関数が閾値より大きいか否か判断し、
閾値より大きいと判断した場合に、前記次数及び中間素子数を変更する
付記３に記載の情報処理装置。
（付記５）
前記パラメータは重みパラメータを含み、
前記損失関数の勾配を算出する勾配算出部と、
算出した勾配に基づき、重みパラメータを算出する重み算出部と
を備える付記４に記載の情報処理装置。
（付記６）
次数及び中間素子数を変更した後の損失関数が閾値より大きい場合に、分割した多項式ニューラルネットワークをさらに分割する再分割部
を備える付記４または５に記載の情報処理装置。
（付記７）
前記連結部は、
損失関数が閾値以下となるパラメータにて特定された各多項式ニューラルネットワークを連結する
付記４から６のいずれか一つに記載の情報処理装置。
（付記８）
コンピュータに、
ニューラルネットワークを複数に分割し、
分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定し、
特定後の各多項式ニューラルネットワークを連結する
処理を実行させるプログラム。
（付記９）
コンピュータに、
ニューラルネットワークを複数に分割し、
分割したニューラルネットワークの入出力特性に基づいて、分割した各ニューラルネットワークに対応する各多項式ニューラルネットワークのパラメータを特定し、
特定後の各多項式ニューラルネットワークを連結する
処理を実行させる情報処理方法。
【符号の説明】
【００７２】
１      コンピュータ
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
１０Ａ  読み取り部
１１    ＣＰＵ
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５Ｐ  制御プログラム
１６    通信部
１８    時計部
Ｎ      通信網
【図１】
2018097612.tif 000017
【図２】
2018097612.tif 000018
【図３】
2018097612.tif 000019
【図４】
2018097612.tif 000020
【図５】
2018097612.tif 000021
【図６】
2018097612.tif 000022
【図７】
2018097612.tif 000023
【図８】
2018097612.tif 000024
【図９】
2018097612.tif 000025
【図１０】
2018097612.tif 000026
【図１１】
2018097612.tif 000027
【図１２】
2018097612.tif 000028
【図１３】
2018097612.tif 000029
【図１４】
2018097612.tif 000030
【図１５】
2018097612.tif 000031
【図１６】
2018097612.tif 000032
【図１７】
2018097612.tif 000033
【図１８】
2018097612.tif 000034
【図１９】
2018097612.tif 000035
【図２０】
2018097612.tif 000036