(57)【要約】      （修正有）【課題】ニューラルネットワークにおける特定の層間の全結合の維持とパラメータ数の削減とを両立する。【解決手段】本情報処理装置は、第１の層１０１〜１０７と、第１の層１０１〜１０７からの出力を受け付ける第２の層１１１〜１１７と、第２の層からの出力を受け付ける第３の層１２１〜１２７とを含む多層ニューラルネットワークの順伝播の計算を実行する第１計算部と、順伝播の計算の結果に基づき、多層ニューラルネットワークの逆伝播の計算を実行する第２計算部とを有する。そして、第１の層の各ユニット１０１〜１０７からの出力が第２の層のユニット１１１〜１１７を経由して第３の層の全ユニット１２１〜１２７に入力される。また、第２の層のユニットの数は、第１の層の各ユニット１０１〜１０７と第２の層との間のエッジの数および第３の層の各ユニット１２１〜１２７と第２の層との間のエッジの数より多い。【選択図】図３
2018109870.tif 000002
【特許請求の範囲】
【請求項１】
第１の層と、前記第１の層からの出力を受け付ける第２の層と、前記第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行する第１計算部と、
前記順伝播の計算の結果に基づき、前記多層ニューラルネットワークの逆伝播の計算を実行する第２計算部と、
を有し、
前記第１の層の各ユニットからの出力が前記第２の層のユニットを経由して前記第３の層の全ユニットに入力され、
前記第２の層のユニットの数は、前記第１の層の各ユニットと前記第２の層との間のエッジの数および前記第３の層の各ユニットと前記第２の層との間のエッジの数より多い、
情報処理装置。
【請求項２】
前記第２計算部は、
前記順伝播の計算の結果と目標出力とを用いた前記逆伝播の計算により、前記第１の層と前記第２の層との間のエッジに対応する第１の重みの誤差の行列と、前記第２の層と前記第３の層との間のエッジに対応する第２の重みの誤差の行列とを算出し、
前記第１の重みの誤差の行列および前記第２の重みの誤差の行列に対するマスク処理により、前記第１の重みの誤差の行列を第１の疎行列に変換し且つ前記第２の重みの誤差の行列を第２の疎行列に変換し、
前記第１の疎行列に基づき、前記第１の重み行列を更新し、
前記第２の疎行列に基づき、前記第２の重み行列を更新する、
請求項１記載の情報処理装置。
【請求項３】
前記マスク処理において、
前記第１の重みの誤差の行列とマスク行列とのクロネッカー積と、前記第２の重みの誤差の行列と前記マスク行列とのクロネッカー積とを実行する、
請求項２記載の情報処理装置。
【請求項４】
前記第１計算部は、
前記第１の層からの出力と、前記第１の重みの行列との第１の行列積を計算し、
前記第１の行列積の結果と、前記第２の重みの行列との第２の行列積に基づき、前記第３の層からの出力を計算する、
請求項２又は３記載の情報処理装置。
【請求項５】
前記逆伝播の計算の結果を、前記情報処理装置を含む並列計算システムにおける他の情報処理装置に対して送信し、前記他の情報処理装置において実行された前記逆伝播の計算の結果を前記他の情報処理装置から受信する通信部
をさらに有する請求項１乃至４のいずれか１つ記載の情報処理装置。
【請求項６】
前記第１の層の各ユニットと前記第２の層との間のエッジ数、および、前記第３の層の各ユニットと前記第２の層との間のエッジ数が（ｎ（ｎは自然数）＋１）であり、
前記第２の層のユニットの数が（ｎ2＋ｎ＋１）である、
請求項１乃至５のいずれか１つ記載の情報処理装置。
【請求項７】
コンピュータが、
第１の層と、前記第１の層からの出力を受け付ける第２の層と、前記第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行し、
前記順伝播の計算の結果に基づき、前記多層ニューラルネットワークの逆伝播の計算を実行する、
処理を実行し、
前記第１の層の各ユニットからの出力が前記第２の層のユニットを経由して前記第３の層の全ユニットに入力され、
前記第２の層のユニットの数は、前記第１の層の各ユニットと前記第２の層との間のエッジの数および前記第３の層の各ユニットと前記第２の層との間のエッジの数より多い、
情報処理方法。
【請求項８】
コンピュータに、
第１の層と、前記第１の層からの出力を受け付ける第２の層と、前記第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行し、
前記順伝播の計算の結果に基づき、前記多層ニューラルネットワークの逆伝播の計算を実行する、
処理を実行させ、
前記第１の層の各ユニットからの出力が前記第２の層のユニットを経由して前記第３の層の全ユニットに入力され、
前記第２の層のユニットの数は、前記第１の層の各ユニットと前記第２の層との間のエッジの数および前記第３の層の各ユニットと前記第２の層との間のエッジの数より多い、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習技術に関する。
【背景技術】
【０００２】
多層ニューラルネットワーク（例えば、以下の文献に記載されている畳み込みニューラルネットワーク）は、画像データや音声データの分類に利用されている。分類器として利用される多層ニューラルネットワークにおいては、或る層における複数のユニットと隣接する別の層における複数のユニットとが全結合される。このような全結合が構築される層は全結合層と呼ばれる。
【０００３】
多層ニューラルネットワークにおいてはエッジ毎にパラメータ（具体的には、エッジの重み）が用意されるので、全結合層のパラメータ数は他の層のパラメータ数と比べて多く、多層ニューラルネットワークのパラメータのほとんどを全結合層のパラメータが占めることもある。但し、パラメータ数の増加はメモリ消費量の増加につながる。また、複数のコンピュータが並列で多層ニューラルネットワークの計算を行う場合、パラメータ数が増加するとコンピュータ間で転送される通信データ量が増加するため、最終的に計算が完了するまでの時間が長くなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−３３８０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、１つの側面では、ニューラルネットワークにおける特定の層間の全結合の維持とパラメータ数の削減とを両立するための技術を提供することである。
【課題を解決するための手段】
【０００６】
一態様に係る情報処理装置は、第１の層と、第１の層からの出力を受け付ける第２の層と、第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行する第１計算部と、順伝播の計算の結果に基づき、多層ニューラルネットワークの逆伝播の計算を実行する第２計算部とを有する。そして、第１の層の各ユニットからの出力が第２の層のユニットを経由して第３の層の全ユニットに入力される。また、第２の層のユニットの数は、第１の層の各ユニットと第２の層との間のエッジの数および第３の層の各ユニットと第２の層との間のエッジの数より多い。
【発明の効果】
【０００７】
１つの側面では、ニューラルネットワークにおける特定の層間の全結合の維持とパラメータ数の削減とを両立できるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、全結合の一例を示す図である。
【図２】図２は、全結合層のエッジと重み行列との対応関係を示す図である。
【図３】図３は、ラテン方陣全結合層の一例を示す図である。
【図４】図４は、第１の実施の形態の並列計算システムの概要を示す図である。
【図５】図５は、情報処理装置の機能ブロック図である。
【図６】図６は、順伝播および逆伝播について説明するための図である。
【図７】図７は、順伝播についての処理の処理フローを示す図である。
【図８】図８は、順伝播についての処理を説明するための図である。
【図９】図９は、順伝播についてのラテン方陣全結合層の処理の処理フローを示す図である。
【図１０】図１０は、通常の全結合層について実行される行列積について説明するための図である。
【図１１】図１１は、ラテン方陣全結合層について実行される行列積について説明するための図である。
【図１２】図１２は、逆伝播についての処理の処理フローを示す図である。
【図１３】図１３は、逆伝播についての処理を説明するための図である。
【図１４】図１４は、逆伝播についてのラテン方陣全結合層の処理の処理フローを示す図である。
【図１５】図１５は、マスク行列について説明するための図である。
【図１６】図１６は、マスク行列について説明するための図である。
【図１７】図１７は、マスク行列について説明するための図である。
【図１８】図１８は、マスク行列について説明するための図である。
【図１９】図１９は、マスク行列について説明するための図である。
【図２０】図２０は、マスク行列について説明するための図である。
【図２１】図２１は、マスク行列について説明するための図である。
【図２２】図２２は、マスク行列について説明するための図である。
【図２３】図２３は、逆伝播についての処理の処理フローを示す図である。
【図２４】図２４は、情報処理装置の台数と並列計算に要する時間との関係を示す図である。
【図２５】図２５は、エッジ数の削減について説明するための図である。
【図２６】図２６は、エッジ数の削減について説明するための図である。
【図２７】図２７は、ラテン方陣全結合層とマスク行列との対応関係を示す図である。
【図２８】図２８は、入力側のユニット数および出力側のユニット数の制御について説明するための図である。
【図２９】図２９は、第３の実施の形態のシステムの概要を示す図である。
【図３０】図３０は、ラテン方陣ファットツリーおよび有限射影平面について説明するための図である。
【図３１】図３１は、ラテン方陣ファットツリーおよび有限射影平面について説明するための図である。
【図３２】図３２は、ラテン方陣ファットツリーおよび有限射影平面について説明するための図である。
【図３３】図３３は、ラテン方陣ファットツリーおよび有限射影平面について説明するための図である。
【図３４】図３４は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【０００９】
［実施の形態１］
図１に、全結合の一例を示す。図１において、円はユニットを表し、ユニット間の線分はエッジを表す。図１においては、第（ｌ＋１）層の各ユニットは第ｌ層における全ユニットに接続される。各層のユニットの数は７であるので、エッジの数は４９（＝７＊７）である。機械学習においては各エッジのパラメータ（すなわち重み）が更新され、層間の重みは行列として表現させる。例えば図１の例であれば、重み行列は７行７列の行列である。図１における第（ｌ＋１）層への入力は、密行列である重み行列と第ｌ層の出力とを用いて計算される。
【００１０】
しかし、全結合層については、機械学習後の重み行列が疎行列になる。例えば図２（ａ）に示す、ユニット数が４である第ｌ層とユニット数が４である第（ｌ＋１）層との間の１６本のエッジのうち、機械学習後の重みの値が零（又はほぼ零）ではないエッジが太線のエッジであるとする。この場合、層間の重みに対応する重み行列は、図２（ｂ）に示すような疎行列である。図２（ｂ）においては、行方向の位置が第（ｌ＋１）層のユニットの位置に対応し、列方向の位置が第ｌ層のユニットの位置に対応する。重みの値が零（又はほぼ零）ではないエッジに対応する要素にハッチングが付されている。このように、多層ニューラルネットワーク（以下、ＤＮＮ（Deep Neural Network）と呼ぶ）における全結合層のエッジには潜在的に無駄なエッジが含まれると考えられる。
【００１１】
そこで本実施の形態においては、ＤＮＮにラテン方陣全結合層（ＬＳＦＣＬ：Latin Square Fully-Connected Layer）を導入する。図３に、ラテン方陣全結合層の一例を示す。ラテン方陣全結合層においては、第ｌ層の各ユニットからの出力が、第（ｌ＋２）層の全ユニットに入力されるようにエッジが設定される。例えば、第ｌ層におけるユニットｌ０１からの出力は、第（ｌ＋１）層におけるユニットｌ１１、ユニットｌ１２及びユニットｌ１３に入力される。さらに、ユニットｌ１１からの出力は、第（ｌ＋２）層におけるユニットｌ２１、ユニットｌ２２及びユニットｌ２３に入力される。ユニットｌ１２からの出力は、ユニットｌ２１、ユニットｌ２４及びユニットｌ２５に入力される。ユニットｌ１３からの出力は、ユニットｌ２１、ユニットｌ２６及びユニットｌ２７に入力される。これにより、ユニットｌ０１からの出力が第（ｌ＋２）層における全ユニットに入力される。第ｌ層における他のユニットについても同様である。
【００１２】
図３に示したラテン方陣全結合層のエッジ数は、４２（＝（３＊７）＊２）である。ラテン方陣全結合層のエッジ数は全結合層のエッジ数より少ないので、パラメータとしてメモリ等の記憶装置に保持される重みの値の数を減らすことができる。
【００１３】
なお、ラテン方陣に関連する事項については、付録を参照されたい。
【００１４】
以下では、本実施の形態の具体的な内容を説明する。図４に、本実施の形態の並列計算システム１０００の概要を示す。並列計算システム１０００は、ＤＮＮの計算を並列で実行するシステムであり、例えば物理サーバ或いはパーソナルコンピュータ等である情報処理装置１ａ乃至１ｃを有する。情報処理装置１ａ乃至１ｃは、例えばＬＡＮ（Local Area Network）であるネットワーク５に接続される。各情報処理装置は異なるデータに対して処理を行い、処理結果（例えば、パラメータの更新に使用されるデータ）を他の情報処理装置に送信すると共に、他の情報処理装置から処理結果を受信する。各情報処理装置は、収集した処理結果に基づきＤＮＮのパラメータを更新する。なお、図４においては情報処理装置の数は３であるが、数に限定はない。
【００１５】
図５に、情報処理装置１ａの機能ブロック図を示す。情報処理装置１ａは、第１計算部１０１と、第２計算部１０３と、通信部１０５と、データ格納部１１１と、目標出力格納部１１３と、ワークデータ格納部１１５とを含む。なお、情報処理装置１ｂおよび情報処理装置１ｃの機能ブロック図は、情報処理装置１ａの機能ブロック図と同様である。第１計算部１０１、第２計算部１０３及び通信部１０５は、図３４におけるＣＰＵ（Central Processing Unit）２５０３がプログラムを実行することで実現される。データ格納部１１１、目標出力格納部１１３及びワークデータ格納部１１５は、図３４におけるメモリ２５０１又はＨＤＤ２５０５（Hard Disk Drive）に設けられる。
【００１６】
データ格納部１１１は、機械学習および分類の対象であるデータ（例えば、画像データや音声データ等）を格納する。目標出力格納部１１３は、目標出力（ラベルとも呼ばれる）を格納する。第１計算部１０１は、データ格納部１１１に格納されているデータに対して順伝播の計算を実行し、計算結果をワークデータ格納部１１５に格納する。第２計算部１０３は、目標出力格納部１１３に格納されているデータおよびワークデータ格納部１１５に格納されているデータに基づき逆伝播の計算を実行し、処理結果（例えば、パラメータの誤差）をワークデータ格納部１１５に格納する。通信部１０５は、ワークデータ格納部１１５に格納されているデータを情報処理装置１ｂ及び１ｃに送信すると共に、情報処理装置１ｂ及び１ｃから受信したデータをワークデータ格納部１１５に格納する。第２計算部１０３は、ワークデータ格納部１１５に格納されているデータに基づきパラメータを更新する。
【００１７】
なお、図６に示すように、順伝播とは、ＤＮＮの入力から出力を計算する処理である。逆伝播とは、計算された出力と目標出力との誤差からパラメータの誤差を計算する処理である。算出されたパラメータの誤差に基づき、ＤＮＮのパラメータを更新する。図６に示すように、逆伝播の計算は順伝播の計算とは逆方向に進行する。
【００１８】
次に、図７乃至図２６を用いて、各情報処理装置が実行する処理を詳細に説明する。なお、以下では情報処理装置１ａが実行する処理を例として説明するが、情報処理装置１ａ以外の情報処理装置が実行する処理は情報処理装置１ａが実行する処理と同様である。
【００１９】
はじめに、図７乃至図１１を用いて、順伝播についての処理を説明する。
【００２０】
情報処理装置１ａの第１計算部１０１は、データ格納部１１１から処理対象のデータを読み出す（図７：ステップＳ１）。
【００２１】
第１計算部１０１は、層の番号を表す変数であるｉに０を設定する（ステップＳ３）。
【００２２】
第１計算部１０１は、第ｉ層がラテン方陣全結合層であるか判定する（ステップＳ５）。ここでは、第ｉ層が図３における第（ｌ＋１）層（すなわち中間の層）に相当する場合に第ｉ層がラテン方陣全結合層であると判定される。
【００２３】
第ｉ層がラテン方陣全結合層ではない場合（ステップＳ５：Ｎｏルート）、第１計算部１０１は、順伝播について第ｉ層の演算を実行し（ステップＳ７）、処理結果をワークデータ格納部１１５に格納する。そして処理はステップＳ１１に移行する。
【００２４】
図８を用いて、順伝播についての演算を説明する。メモリ２５０１には各層の処理に用いられるデータ及び各層の処理の結果が格納される。矢印はポインタを表す。ステップＳ１において読み出されたデータは領域「Ｄａｔａ−０」に格納される。
【００２５】
層０においては、領域「Ｄａｔａ−０」に格納されたデータを入力データとし且つ領域「Ｗｅｉｇｈｔ−０」に格納されたデータを重みとして処理が実行され、処理結果が出力データとして領域「Ｄａｔａ−１」に格納される。
【００２６】
上記計算は、バッチサイズが１である場合、以下のような式で表される。
【００２７】
【数１】
2018109870.tif 000003
【００２８】
ｕは入力を表し、ｗは重みを表し、ｚは出力を表す。バッチサイズがｍ（ｍは自然数）である場合、上記計算は以下のような式で表される。
【００２９】
【数２】
2018109870.tif 000004
【００３０】
層１においては、領域「Ｄａｔａ−１」に格納されたデータを入力データとし且つ領域「Ｗｅｉｇｈｔ−１」に格納されたデータを重みとして処理が実行され、処理結果が出力データとして領域「Ｄａｔａ−２」に格納される。
【００３１】
層２においては、領域「Ｄａｔａ−２」に格納されたデータを入力データとし且つ領域「Ｗｅｉｇｈｔ−２」に格納されたデータを重みとして処理が実行され、処理結果が出力データとして領域「Ｄａｔａ−３」に格納される。
【００３２】
層３においては、領域「Ｄａｔａ−３」に格納されたデータを入力データとし且つ領域「Ｗｅｉｇｈｔ−３」に格納されたデータを重みとして処理が実行され、処理結果が出力データとして領域「Ｄａｔａ−４」に格納される。
【００３３】
このように、ＤＮＮへの入力は鎖状のポインタの開始点に格納され、ＤＮＮからの出力は鎖状のポインタの終点に格納される。
【００３４】
図７の説明に戻り、第ｉ層がラテン方陣全結合層である場合（ステップＳ５：Ｙｅｓルート）、第１計算部１０１は、順伝播についてラテン方陣全結合層の演算を実行する（ステップＳ９）。ステップＳ９の処理については、図９乃至図１１を用いて説明する。
【００３５】
第１計算部１０１は、ワークデータ格納部１１５における、データの格納領域（すなわち、領域「Ｄａｔａ−ｉ」）からデータを入力データとして読み出す（図９：ステップＳ２１）。
【００３６】
第１計算部１０１は、ワークデータ格納部１１５における、重みの格納領域（すなわち、領域「Ｗｅｉｇｈｔ−ｉ」及び領域「Ｗｅｉｇｈｔ−（ｉ＋１）」）から第１の重み行列と第２の重み行列とを読み出す（ステップＳ２３）。
【００３７】
第１計算部１０１は、ステップＳ２１において読み出した入力データの行列と、ステップＳ２３において読み出した第１の重み行列との行列積を計算する（ステップＳ２５）。計算の結果は、ワークデータ格納部１１５における格納領域（例えば、領域「Ｄａｔａ−（ｉ＋１）」）に格納される。
【００３８】
第１計算部１０１は、ステップＳ２５の行列積の結果と、ステップＳ２３において読み出した第２の重み行列との行列積を計算する（ステップＳ２７）。
【００３９】
図１０及び図１１を用いて、ＤＮＮの計算において実行される行列積について説明する。図１０を用いて、通常の全結合層について実行される行列積について説明する。図１０においては、第ｌ層からの出力が第（ｌ＋１）層に入力されるようになっており、各出力には重みが乗じられる。具体的には、第ｌ層からの出力を入力Ｘとし、重み行列をＷとし、第（ｌ＋１）層への入力を出力Ｚとすると、Ｘ＊Ｗ→Ｚとして出力が計算される。
【００４０】
図１１を用いて、本実施の形態のラテン方陣全結合層について実行される行列積について説明する。図１１においては、第ｌ層からの各出力に重みが乗じられ、第（ｌ＋１）層に入力される。次に、第（ｌ＋１）層からの各出力に重みが乗じられ、第（ｌ＋２）層に入力される。つまり、行列積が２回実行される。１回目の行列積に使用される重みの行列を第１の重み行列（Ｍ1）とし、２回目の行列積に使用される重みの行列を第２の重み行列（Ｍ2）とする。すると、１回目の行列積においては、Ｘ＊Ｍ1→ＹとしてＹが計算され、２回目の行列積においては、Ｙ＊Ｍ2→ＺとしてＺが計算される。つまり、全体としては、Ｘ＊Ｍ1＊Ｍ2→ＺとしてＺが計算される。
【００４１】
本実施の形態においては、全結合が３つの層を用いて実現されるので、２つの重み行列を使用してＺが計算される。
【００４２】
図９の説明に戻り、第１計算部１０１は、ステップＳ２７において算出された行列積の結果をデータの格納領域（すなわち、領域「Ｄａｔａ−（ｉ＋２）」）に出力データとして書き込む（ステップＳ２９）。
【００４３】
第１計算部１０１は、２層分の処理を実行したので、ｉを１インクリメントする（ステップＳ３０）。そして処理は呼び出し元に戻る。
【００４４】
図７の説明に戻り、第１計算部１０１は、ｉを１インクリメントする（ステップＳ１１）。第１計算部１０１は、ｉ＜Ｎが成立するか判定する（ステップＳ１３）。Ｎは３以上の自然数であり、ＤＮＮの層の数である。
【００４５】
ｉ＜Ｎが成立する場合（ステップＳ１３：Ｙｅｓルート）、処理はステップＳ５に戻る。一方、ｉ＜Ｎが成立しない場合（ステップＳ１３：Ｎｏルート）、第１計算部１０１は、ＤＮＮの演算結果を出力する（ステップＳ１５）。そして処理は終了する。例えば機械学習時においては、第１計算部１０１はＤＮＮの演算結果をワークデータ格納部１１５に格納する。また、例えばデータの分類時においては、第１計算部１０１はＤＮＮの演算結果を表示装置に表示するとともに、ＤＮＮの演算結果をワークデータ格納部１１５に格納する。
【００４６】
以上のような処理を実行すれば、ラテン方陣全結合層を含むＤＮＮに対して順伝播の計算を適切に実行することができるようになる。
【００４７】
次に、図１２乃至図２３を用いて、逆伝播についての処理を説明する。
【００４８】
情報処理装置１ａの第２計算部１０３は、ワークデータ格納部１１５に格納された、ＤＮＮの演算結果と、目標出力格納部１１３に格納された目標出力との差分に基づき誤差データを算出し（図１２：ステップＳ３１）、算出した誤差データをワークデータ格納部１１５における、誤差の格納領域に格納する。
【００４９】
第２計算部１０３は、層の番号を表す変数であるｉに（Ｎ−１）を設定する（ステップＳ３３）。
【００５０】
第２計算部１０３は、第ｉ層がラテン方陣全結合層であるか判定する（ステップＳ３５）。ここでは、第ｉ層が図３における第（ｌ＋１）層（すなわち中間の層）に相当する場合に第ｉ層がラテン方陣全結合層であると判定される。
【００５１】
第ｉ層がラテン方陣全結合層ではない場合（ステップＳ３５：Ｎｏルート）、第２計算部１０３は、逆伝播について第ｉ層の演算を実行し（ステップＳ３７）、処理結果をワークデータ格納部１１５に格納する。そして処理はステップＳ４１に移行する。
【００５２】
図１３を用いて、逆伝播についての演算について説明する。メモリ２５０１には各層の処理に用いられるデータ及び各層の処理の結果が格納される。矢印はポインタを表す。
【００５３】
層２においては、領域「Ｄｉｆｆ−２」に格納されたデータを入力誤差とし且つ領域「Ｗｅｉｇｈｔ−２」に格納されたデータを重みとして処理が実行され、処理結果が出力誤差として領域「Ｄｉｆｆ−１」に格納される。また、領域「Ｄｉｆｆ−２」に格納されたデータを入力誤差とし且つ領域「Ｄａｔａ−２」に格納されたデータを入力データとして処理が実行され、処理結果が重みの誤差として領域「ＤｅｌｔａＷ−２」に格納される。
【００５４】
上記計算は、バッチサイズが１である場合、以下のような式で表される。
【００５５】
【数３】
2018109870.tif 000005
【００５６】
【数４】
2018109870.tif 000006
【００５７】
ｄｚは入力誤差を表し、ｗは重みを表し、ｄｕは出力誤差を表し、ｕは入力を表し、ｄｗは重みの誤差を表す。バッチサイズがｍ（ｍは自然数）である場合、上記計算は以下のような式で表される。
【００５８】
【数５】
2018109870.tif 000007
【００５９】
【数６】
2018109870.tif 000008
【００６０】
層１においては、領域「Ｄｉｆｆ−１」に格納されたデータを入力誤差とし且つ領域「Ｗｅｉｇｈｔ−１」に格納されたデータを重みとして処理が実行され、処理結果が出力誤差として領域「Ｄｉｆｆ−０」に格納される。また、領域「Ｄｉｆｆ−１」に格納されたデータを入力誤差とし且つ領域「Ｄａｔａ−１」に格納されたデータを入力データとして処理が実行され、処理結果が重みの誤差として領域「ＤｅｌｔａＷ−１」に格納される。
【００６１】
層０においては、領域「Ｄｉｆｆ−０」に格納されたデータを入力誤差とし且つ領域「Ｗｅｉｇｈｔ−０」に格納されたデータを重みとして処理が実行され、最終的な誤差が算出される。また、領域「Ｄｉｆｆ−０」に格納されたデータを入力誤差とし且つ領域「Ｄａｔａ−０」に格納されたデータを入力データとして処理が実行され、処理結果が重みの誤差として領域「ＤｅｌｔａＷ−０」に格納される。
【００６２】
ステップＳ３７において算出された、重みの誤差の行列（以下、重み行列の誤差と呼ぶ）は、各情報処理装置において重み行列の更新に利用される。
【００６３】
図１２の説明に戻り、第ｉ層がラテン方陣全結合層である場合（ステップＳ３５：Ｙｅｓルート）、第２計算部１０３は、ラテン方陣全結合層について逆伝播の演算を実行する（ステップＳ３９）。ステップＳ３９の処理については、図１４乃至図２２を用いて説明する。
【００６４】
まず、第２計算部１０３は、ワークデータ格納部１１５における、誤差の格納領域（すなわち、領域「Ｄｉｆｆ−ｉ」）からデータを入力誤差データとして読み出す（図１４：ステップＳ６１）。
【００６５】
第２計算部１０３は、ワークデータ格納部１１５における、重みの格納領域（すなわち、領域「Ｗｅｉｇｈｔ−ｉ」及び領域「Ｗｅｉｇｈｔ−（ｉ−１）」）から第２の重み行列と第１の重み行列とを読み出す（ステップＳ６３）。以下では、第２の重み行列をＭ2とし、第１の重み行列をＭ1とする。
【００６６】
第２計算部１０３は、ステップＳ６１において読み出された入力誤差データの行列と、ステップＳ６３において読み出された第２の重み行列との行列積を計算する（ステップＳ６５）。計算の結果は、ワークデータ格納部１１５における格納領域（例えば、領域「Ｄｉｆｆ−（ｉ−１）」）に格納される。
【００６７】
第２計算部１０３は、ステップＳ６５の行列積の結果と、ステップＳ６３において読み出した第１の重み行列との行列積を計算する（ステップＳ６７）。
【００６８】
このように、ステップＳ６５及びＳ６７においては、Ｓ２５及びＳ２７とは逆方向の計算が行われる。例えば、入力誤差データの行列をΔＺとすると、ΔＺ＊Ｍ2→ΔＹとして中間値の誤差の行列ΔＹが算出され、さらに、ΔＹ＊Ｍ1→ΔＸとして出力誤差データの行列が算出される。
【００６９】
第２計算部１０３は、ステップＳ６７において算出された行列積の結果を、ワークデータ格納部１１５における、データの格納領域（すなわち、領域「Ｄｉｆｆ−（ｉ−２）」）に出力データとして書き込む（ステップＳ６９）。
【００７０】
第２計算部１０３は、データの格納領域（すなわち、領域「Ｄａｔａ−ｉ」及び領域「Ｄａｔａ−（ｉ−１）」）からデータを入力データとして読み出す（ステップＳ７１）。
【００７１】
第２計算部１０３は、ステップＳ７１において読み出された入力データの行列と、ステップＳ６１において読み出された入力誤差データの行列との行列積に基づき、第２の重み行列の誤差と第１の重み行列の誤差とを算出する（ステップＳ７３）。具体的には、ステップＳ７１において領域「Ｄａｔａ−ｉ」から読み出された入力データをＹとし、ステップＳ６５において算出された行列積の結果をΔＺとすると、Ｙ＊ΔＺ→ΔＭ2として第２の重み行列の誤差ΔＭ2が算出される。また、ステップＳ７１において領域「Ｄａｔａ−（ｉ−１）」から読み出された入力データをＸとし、ステップＳ６７において算出された行列積の結果をΔＹとすると、Ｘ＊ΔＹ→ΔＭ1として第１の重み行列の誤差ΔＭ1が算出される。
【００７２】
本実施の形態においては、全結合が３つの層を用いて実現されるので、２つの重み行列の誤差がそれぞれ計算される。
【００７３】
第２計算部１０３は、ステップＳ７３において算出した、第２の重み行列の誤差と第１の重み行列の誤差とに対して、マスク行列を用いたマスク処理を実行し（ステップＳ７５）、第２の重み行列の誤差と第１の重み行列の誤差とを更新する。マスク行列については後述する。
【００７４】
上記計算は、バッチサイズが１である場合、以下のような式で表される。
【００７５】
【数７】
2018109870.tif 000009
【００７６】
ｄｗは重みの誤差を表す。バッチサイズがｍ（ｍは自然数）である場合、上記計算は以下のような式で表される。
【００７７】
【数８】
2018109870.tif 000010
【００７８】
第２計算部１０３は、ステップＳ７５においてマスク処理が実行された、第２の重み行列の誤差と第１の重み行列の誤差とを、誤差の格納領域（例えば、領域「Ｄｅｌｔａ＿Ｗ−ｉ」及び領域「Ｄｅｌｔａ＿Ｗ−（ｉ−１）」）に書き込む（ステップＳ７７）。
【００７９】
第２計算部１０３は、２層分の処理を実行したので、ｉを１デクリメントする（ステップＳ７９）。処理は呼び出し元に戻る。
【００８０】
図１５乃至図２２を用いて、マスク行列について説明する。
【００８１】
まず、図１５に示すようなラテン方陣ファットツリーに対してマスク行列を生成することを考える。図１５に示したラテン方陣ファットツリーは、図３に示したラテン方陣全結合層の半分に相当する。ラテン方陣ファットツリーには（ｎ2＋ｎ＋１）のノードが含まれ、各ノードは（ｎ＋１）本のエッジを有する。図１５に示したラテン方陣ファットツリーは、ｎ＝２の場合のラテン方陣ファットツリーに相当する。
【００８２】
図１５に示したラテン方陣ファットツリーには７台のノードを含む層が２つ含まれ、４９（＝７＊７）本のエッジが存在しうる。従って、図１６（ａ）に示すような、４９の要素を有するマスク行列を考えることができるが、実際には２１本のエッジしか存在しないので、４９の要素のうち２１の要素を特定する。そして特定した要素以外の要素を０に設定してマスク行列として利用することで、マスク処理が実行された行列を疎行列に変換する。
【００８３】
図１６（ｂ）に示すように、マスク行列を、右下のｎ2＊ｎ2の領域と、その他の部分とに分ける。まず、その他の部分から要素が特定される。最初に、１行目について（ｎ＋１）の要素がマスクとして特定される。
【００８４】
次に、図１７（ａ）に示すように、２行目についてｎの要素がマスクとして特定され、３行目についてｎの要素がマスクとして特定される。
【００８５】
以上の操作が列についても実行される。すなわち、図１７（ｂ）に示すように、１列目について（ｎ＋１）の要素がマスクとして特定される。但し、既に１つの要素が特定されているので、ここでは新たに２つの要素がマスクとして特定される。そして、図１８に示すように、２列目についてｎの要素がマスクとして特定され、３列目についてｎの要素がマスクとして特定される。ここまでの操作によって、ｎ2＊ｎ2の領域以外の領域についてマスクの特定が完了する。
【００８６】
次に、ｎ2＊ｎ2の領域からマスクを特定する。まず、図１９（ａ）に示すように、ｎ2＊ｎ2の領域をｎ＊ｎのブロックに分割する。そして、図１９（ｂ）に示すように、各ブロックに対して２次元のＩＤ（ｘ，ｙ）を割り当てる。左上のブロックに対しては（０，０）が割り当てられ、左下のブロックに対しては（０，１）が割り当てられ、右上のブロックに対しては（１，０）が割り当てられ、右下のブロックに対しては（１，１）が割り当てられる。
【００８７】
そして、ｎ＊ｎの各ブロックにおける第ｉ（ｉは０≦ｉ≦（ｎ−１））行について、第（（ｉ＋（ｘ＊ｙ）） ｍｏｄ ２）列の要素がマスクとして特定される。例えばＩＤが（０，０）である左上のブロックについては、第０行（ここでは、２つの行のうち上の行とする）について、（（０＋（０＊０）） ｍｏｄ ２）＝０が成立するので、第０列（ここでは、２つの列のうち左の列とする）の要素がマスクとして特定される。第１行について、（（１＋（０＊０）） ｍｏｄ ２）＝１が成立するので、第１列（ここでは、２つの列のうち右の列とする）の要素がマスクとして特定される。以上のような処理によって、図２０に示すマスク行列が完成する。生成されたマスク行列は、第１の重み行列および第２の重み行列の両方に対して適用される。
【００８８】
次に、図２１を用いて、幅が（ｎ2＋ｎ＋１）であるマスク行列をｎ＝３の場合に生成する方法について説明する。
【００８９】
図２１において、マスク行列２１０１はｎ2＊ｎ2の領域とその他の領域とに分けられており、ｎ2＊ｎ2の領域においては初期的に対角の要素がマスクとして特定されている。ｎ2＊ｎ2の領域はｎ＊ｎのブロックに分割されており、各ブロックにおける対角の要素は、ガロア体（ここではＧＦ（３））２１０３に従って右シフトされる。すると、マスク行列２１０２が完成する。
【００９０】
ガロア体とは、要素数が有限の集合であり、有限体とも呼ばれる。ＧＦ（ｎ）は、計算結果に対してｍｏｄ ｎを計算することで生成される。ガロア体はラテン方陣ファットツリーの有限射影平面に相当する。ガロア体は通信の誤り訂正およびＡＥＳ（Advanced Encryption Standard ）で利用されている。図２２に、ＧＦ（５）の一例を示す。図２２（ａ）には、要素番号の和に対してｍｏｄ ５を計算することで生成されたガロア体が示されており、図２２（ｂ）には、要素番号の積に対してｍｏｄ ５を計算することで生成されたガロア体が示されている。
【００９１】
図１２の説明に戻り、第２計算部１０３は、ｉを１デクリメントする（ステップＳ４１）。第２計算部１０３は、ｉ≧０が成立するか判定する（ステップＳ４３）。
【００９２】
ｉ≧０が成立する場合（ステップＳ４３：Ｙｅｓルート）、処理はステップＳ３５に戻る。一方、ｉ≧０が成立しない場合（ステップＳ４３：Ｎｏルート）、処理は端子Ａを介して図２３のステップＳ４５に移行する。
【００９３】
図２３の説明に移行し、通信部１０５は、他の情報処理装置（すなわち、情報処理装置１ｂ及び１ｃ）において計算された、重み行列の誤差を他の情報処理装置から受信し、情報処理装置１ａの第２計算部１０３が計算した、重み行列の誤差を他の情報処理装置に送信する（ステップＳ４５）。
【００９４】
第２計算部１０３は、層の番号を表す変数であるｉに（Ｎ−１）を設定する（ステップＳ４７）。
【００９５】
第２計算部１０３は、第ｉ層について、重み行列の誤差の行列を用いて重み行列を更新する（ステップＳ４９）。例えば、重み行列の誤差をΔＷとし、重み行列をＷとすると、Ｗ−ΔＷ→Ｗとして重み行列が更新される。但し、ラーニングレートやバイアス等をさらに用いて重み行列を更新してもよい。
【００９６】
第２計算部１０３は、ｉを１デクリメントする（ステップＳ５１）。第２計算部１０３は、ｉ≧０が成立するか判定する（ステップＳ５３）。ｉ≧０が成立する場合（ステップＳ５３：Ｙｅｓルート）、処理はステップＳ４９に戻る。一方、ｉ≧０が成立しない場合（ステップＳ５３：Ｎｏルート）、処理は終了する。
【００９７】
以上のように、本実施の形態の方法によれば、ＤＮＮにおいて全結合される部分のエッジ数が減るので、パラメータである重みの数が減る。これにより、メモリ２５０１等の記憶装置の容量の消費を抑制できるようになり、また、計算量を削減することができるようになる。従って、プロセッサやメモリ等の物理リソースが乏しい計算機を使用した運用にも有効である。さらに、通信において情報処理装置間で交換されるデータの量が減るので、ＤＮＮの並列計算に要する時間を削減できるようになる。
【００９８】
図２４に、情報処理装置の台数と並列計算に要する時間との関係を示す。図２４において、縦軸は時間を表し、横軸は情報処理装置の台数を表す。図２４に示すように、情報処理装置の台数を増やせば、計算に要する時間は短縮される。しかし、たとえ情報処理装置の台数を増やしたとしても、通信に要する時間は短縮されない。そのため、情報処理装置の台数を増やすほど通信に要する時間が問題になる。しかし、本実施の形態の方法によれば、通信に要する時間を短縮することができるので、特に情報処理装置の数が多い場合には並列計算の性能向上の効果が大きい。
【００９９】
なお、ラテン方陣全結合層を任意のユニット数で構築することはできず、原則として各ユニットは（ｎ＋１）本のエッジを有し、その時のノード数は（ｎ2＋ｎ＋１）である。ユニット数が（ｎ2＋ｎ＋１）である時、全エッジ数は２（ｎ2＋ｎ＋１）（ｎ＋１）である。これに対して、通常の全結合層のユニット数が（ｎ2＋ｎ＋１）である場合、全エッジ数は（ｎ2＋ｎ＋１）2である。
【０１００】
これを前提として、図２５及び図２６を用いて、エッジ数の削減について説明する。図２５は、エッジ数とユニット数との関係をラテン方陣全結合層及び通常の全結合層の場合について示す図である。図２５において、縦軸はエッジ数を表し、横軸はユニット数を表す。例えば、ユニット数が約１０００である時、ラテン方陣全結合層のエッジ数は約１０００００であり、通常の全結合層のエッジ数は約１００００００である。
【０１０１】
図２６は、ラテン方陣全結合層のエッジ数と通常の全結合層のエッジ数との比率を示す図である。図２６において、縦軸は比率を表し、横軸はユニット数を表す。比率が１より小さい場合、ラテン方陣全結合層のエッジ数は通常の全結合層のエッジ数より少ない。このように、ユニット数が極端に少ない場合を除くと、ラテン方陣全結合層のエッジ数は通常の全結合層のエッジ数より少ない。
【０１０２】
［実施の形態２］
図２７に示すように、第１の実施の形態におけるラテン方陣全結合層は、２つのラテン方陣ファットツリーが連結された形状を有している。マスク行列２７０１は左側のエッジ群に対応し、マスク行列２７０２は右側のエッジ群に対応する。塗りつぶされた要素はエッジに対応する。左側の層におけるユニットｕ２７からの出力は、中間の層のユニットを経由して、右側の層の全ユニットに出力される。図２７において、左側の層のユニット数と、中間の層のユニット数と、右側の層のユニット数とは等しい。
【０１０３】
但し、左側の層のユニット数および右側の層のユニット数は、必ずしも中間の層のユニット数と同じでなくてもよい。例えば図２８に示すように、左側の層のユニットのうち破線で囲まれた部分に含まれるユニットと、中間の層のユニットと、右側の層のユニットのうち破線で囲まれた部分に含まれるユニットとでラテン方陣全結合層が構築されてもよい。この場合、各マスク行列の行数はユニット数に従って減らされる。中間の層のユニット数は（ｎ2＋ｎ＋１）であり、右側の層のユニットのうち破線で囲まれた部分に含まれるユニットの数および左側の層のユニットのうち破線で囲まれた部分に含まれるユニットの数以上になるように最小のｎが探索される。
【０１０４】
これにより、いかなる全結合層に対しても本実施の形態のラテン方陣全結合層を適用することができるようになる。
【０１０５】
［実施の形態３］
第１の実施の形態における並列計算システム１０００は複数の情報処理装置を有し、複数の情報処理装置がネットワークで接続される。しかし、システムの形態はこのような形態に限られるわけではない。例えば図２９に示すように、情報処理装置１内でプロセッサ１０ａ乃至１０ｃがバス等を介して接続され、プロセッサ１０ａ乃至１０ｃが並列計算を実行するようなシステムであってもよい。
【０１０６】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置１ａの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１０７】
また、上で説明した情報処理装置１ａ乃至１ｃおよび情報処理装置１の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１０８】
［付録］
本付録においては、ラテン方陣ファットツリーおよび有限射影平面について説明する。
【０１０９】
有限射影平面の構造は、トポロジー構造に置き換えられる。図３０（ａ）に示したトポロジー構造は、図３０（ｂ）に示した有限射影平面の構造に置き換えられる。図３０（ａ）において、ハッチングされた矩形はスパインスイッチを表し、ハッチングされていない矩形はリーフスイッチを表し、円はサーバを表す。図３０（ｂ）において、直線はスパインスイッチを表し、点はリーフスイッチを表す。
【０１１０】
図３１（ａ）に示したトポロジー構造は、スパインスイッチの数が７であり且つリーフスイッチの数が７であるラテン方陣ファットツリーのトポロジー構造であり、図３０（ｂ）に示した有限射影平面の構造に対応する。図３１（ａ）において太線で囲まれた部分のトポロジー構造は、図３０（ａ）のトポロジー構造と同じである。また、図３１（ｂ）において太線で囲まれた部分の構造は、図３１（ａ）において太線で囲まれた部分のトポロジー構造に対応する。
【０１１１】
有限射影平面とは、普通の平面に無限遠点をいくつか加え且つ「平行な２直線」をなくした平面に相当する。図３２に、位数（以下ｎとする）が２であり且つポート数が６（＝２（ｎ＋１））である場合の有限射影平面の構造を示す。図３２において、ハッチングされた矩形上にある４（＝ｎ＊ｎ）台のリーフスイッチ以外の３（＝ｎ＋１）台のリーフスイッチは無限遠点に相当する。
【０１１２】
有限射影平面においては、（ｎ2＋ｎ＋１）の点が存在する。直線の数は（ｎ2＋ｎ＋１）である。任意の２直線は１点で交わり、任意の２点を結ぶ直線がただ一つ存在する。但し、ｎは素数であるという制約がある。
【０１１３】
図３２に示した構造は、図３３に示す構造に変換することができる。図３３において、ハッチングされた格子部分は、図３２におけるハッチング部分に対応する。格子部分において平行な直線群は、追加の点において交わるように変換される。すなわち、傾きが等しい直線同士が交わるように変換される。
【０１１４】
以上で付録を終了する。
【０１１５】
なお、上で述べた情報処理装置１ａ乃至１ｃは、コンピュータ装置であって、図３４に示すように、メモリ２５０１とＣＰＵ２５０３とＨＤＤ２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１６】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１７】
本実施の形態の第１の態様に係る情報処理装置（例えば、情報処理装置１ａ）は、（Ａ）第１の層と、第１の層からの出力を受け付ける第２の層と、第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行する第１計算部（例えば、第１計算部１０１）と、（Ｂ）順伝播の計算の結果に基づき、多層ニューラルネットワークの逆伝播の計算を実行する第２計算部（例えば、第２計算部１０３）とを有する。そして、第１の層の各ユニットからの出力が第２の層のユニットを経由して第３の層の全ユニットに入力される。また、第２の層のユニットの数は、第１の層の各ユニットと第２の層との間のエッジの数および第３の層の各ユニットと第２の層との間のエッジの数より多い。
【０１１８】
第１の層と第３の層とが全結合されるようにしつつ、エッジの数が減るのでパラメータ（例えば、エッジに対応する重み）の数を削減できるようになる。また、エッジの数が減ることで計算量を減らすことができるようになる。
【０１１９】
また、第２計算部は、（ｂ１）順伝播の計算の結果と目標出力とを用いた逆伝播の計算により、第１の層と第２の層との間のエッジに対応する第１の重みの誤差の行列と、第２の層と第３の層との間のエッジに対応する第２の重みの誤差の行列とを算出し、（ｂ２）第１の重みの誤差の行列および第２の重みの誤差の行列に対するマスク処理により、第１の重みの誤差の行列を第１の疎行列に変換し且つ第２の重みの誤差の行列を第２の疎行列に変換し、（ｂ３）第１の疎行列に基づき、第１の重み行列を更新し、（ｂ４）第２の疎行列に基づき、第２の重み行列を更新してもよい。
【０１２０】
上記のような多層ニューラルネットワークであっても、重みの更新を適切に行うことができるようになる。また、疎行列を利用することで計算を単純化することができるようになる。
【０１２１】
また、マスク処理において、第１の重みの誤差の行列とマスク行列とのクロネッカー積と、第２の重みの誤差の行列とマスク行列とのクロネッカー積とを実行してもよい。
【０１２２】
また、マスク行列は、存在するエッジに対応する要素が所定値に設定され、且つ、存在しないエッジに対応する要素が零に設定された行列であってもよい。
【０１２３】
また、第１計算部は、（ａ１）第１の層からの出力と、第１の重みの行列との第１の行列積を計算し、（ａ２）第１の行列積の結果と、第２の重みの行列との第２の行列積に基づき、第３の層からの出力を計算してもよい。上記のような多層ニューラルネットワークであっても、入力されたデータの分類を適切に行うことができるようになる。
【０１２４】
また、本情報処理装置は、（Ｃ）逆伝播の計算の結果を、情報処理装置を含む並列計算システムにおける他の情報処理装置に対して送信し、他の情報処理装置において実行された逆伝播の計算の結果を他の情報処理装置から受信する通信部（例えば、通信部１０５）をさらに有してもよい。パラメータの数が減らされているので通信データの量が減り、通信にかかる時間を短縮できるようになる。
【０１２５】
また、第１の層の各ユニットと第２の層との間のエッジ数、および、第３の層の各ユニットと第２の層との間のエッジ数が（ｎ（ｎは自然数）＋１）であり、第２の層のユニットの数が（ｎ2＋ｎ＋１）であってもよい。
【０１２６】
本実施の形態の第２の態様に係る情報処理方法は、（Ｄ）第１の層と、第１の層からの出力を受け付ける第２の層と、第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行し、（Ｅ）順伝播の計算の結果に基づき、多層ニューラルネットワークの逆伝播の計算を実行する処理を含む。そして、第１の層の各ユニットからの出力が第２の層のユニットを経由して第３の層の全ユニットに入力される。また、第２の層のユニットの数は、第１の層の各ユニットと第２の層との間のエッジの数および第３の層の各ユニットと第２の層との間のエッジの数より多い。
【０１２７】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１２８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２９】
（付記１）
第１の層と、前記第１の層からの出力を受け付ける第２の層と、前記第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行する第１計算部と、
前記順伝播の計算の結果に基づき、前記多層ニューラルネットワークの逆伝播の計算を実行する第２計算部と、
を有し、
前記第１の層の各ユニットからの出力が前記第２の層のユニットを経由して前記第３の層の全ユニットに入力され、
前記第２の層のユニットの数は、前記第１の層の各ユニットと前記第２の層との間のエッジの数および前記第３の層の各ユニットと前記第２の層との間のエッジの数より多い、
情報処理装置。
【０１３０】
（付記２）
前記第２計算部は、
前記順伝播の計算の結果と目標出力とを用いた前記逆伝播の計算により、前記第１の層と前記第２の層との間のエッジに対応する第１の重みの誤差の行列と、前記第２の層と前記第３の層との間のエッジに対応する第２の重みの誤差の行列とを算出し、
前記第１の重みの誤差の行列および前記第２の重みの誤差の行列に対するマスク処理により、前記第１の重みの誤差の行列を第１の疎行列に変換し且つ前記第２の重みの誤差の行列を第２の疎行列に変換し、
前記第１の疎行列に基づき、前記第１の重み行列を更新し、
前記第２の疎行列に基づき、前記第２の重み行列を更新する、
付記１記載の情報処理装置。
【０１３１】
（付記３）
前記マスク処理において、
前記第１の重みの誤差の行列とマスク行列とのクロネッカー積と、前記第２の重みの誤差の行列と前記マスク行列とのクロネッカー積とを実行する、
付記２記載の情報処理装置。
【０１３２】
（付記４）
前記マスク行列は、存在するエッジに対応する要素が所定値に設定され、且つ、存在しないエッジに対応する要素が零に設定された行列である、
付記３記載の情報処理装置。
【０１３３】
（付記５）
前記第１計算部は、
前記第１の層からの出力と、前記第１の重みの行列との第１の行列積を計算し、
前記第１の行列積の結果と、前記第２の重みの行列との第２の行列積に基づき、前記第３の層からの出力を計算する、
付記２乃至４のいずれか１つ記載の情報処理装置。
【０１３４】
（付記６）
前記逆伝播の計算の結果を、前記情報処理装置を含む並列計算システムにおける他の情報処理装置に対して送信し、前記他の情報処理装置において実行された前記逆伝播の計算の結果を前記他の情報処理装置から受信する通信部
をさらに有する付記１乃至５のいずれか１つ記載の情報処理装置。
【０１３５】
（付記７）
前記第１の層の各ユニットと前記第２の層との間のエッジ数、および、前記第３の層の各ユニットと前記第２の層との間のエッジ数が（ｎ（ｎは自然数）＋１）であり、
前記第２の層のユニットの数が（ｎ2＋ｎ＋１）である、
付記１乃至６のいずれか１つ記載の情報処理装置。
【０１３６】
（付記８）
コンピュータが、
第１の層と、前記第１の層からの出力を受け付ける第２の層と、前記第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行し、
前記順伝播の計算の結果に基づき、前記多層ニューラルネットワークの逆伝播の計算を実行する、
処理を実行し、
前記第１の層の各ユニットからの出力が前記第２の層のユニットを経由して前記第３の層の全ユニットに入力され、
前記第２の層のユニットの数は、前記第１の層の各ユニットと前記第２の層との間のエッジの数および前記第３の層の各ユニットと前記第２の層との間のエッジの数より多い、
情報処理方法。
【０１３７】
（付記９）
コンピュータに、
第１の層と、前記第１の層からの出力を受け付ける第２の層と、前記第２の層からの出力を受け付ける第３の層とを含む多層ニューラルネットワークの順伝播の計算を実行し、
前記順伝播の計算の結果に基づき、前記多層ニューラルネットワークの逆伝播の計算を実行する、
処理を実行させ、
前記第１の層の各ユニットからの出力が前記第２の層のユニットを経由して前記第３の層の全ユニットに入力され、
前記第２の層のユニットの数は、前記第１の層の各ユニットと前記第２の層との間のエッジの数および前記第３の層の各ユニットと前記第２の層との間のエッジの数より多い、
プログラム。
【符号の説明】
【０１３８】
１，１ａ，１ｂ，１ｃ  情報処理装置    ５  ネットワーク
１０ａ，１０ｂ，１０ｃ  プロセッサ    １１  バス
１０１  第１計算部    １０３  第２計算部
１０５  通信部    １１１  データ格納部
１１３  目標出力格納部    １１５  ワークデータ格納部
【図１】
2018109870.tif 000011
【図２】
2018109870.tif 000012
【図３】
2018109870.tif 000013
【図４】
2018109870.tif 000014
【図５】
2018109870.tif 000015
【図６】
2018109870.tif 000016
【図７】
2018109870.tif 000017
【図８】
2018109870.tif 000018
【図９】
2018109870.tif 000019
【図１０】
2018109870.tif 000020
【図１１】
2018109870.tif 000021
【図１２】
2018109870.tif 000022
【図１３】
2018109870.tif 000023
【図１４】
2018109870.tif 000024
【図１５】
2018109870.tif 000025
【図１６】
2018109870.tif 000026
【図１７】
2018109870.tif 000027
【図１８】
2018109870.tif 000028
【図１９】
2018109870.tif 000029
【図２０】
2018109870.tif 000030
【図２１】
2018109870.tif 000031
【図２２】
2018109870.tif 000032
【図２３】
2018109870.tif 000033
【図２４】
2018109870.tif 000034
【図２５】
2018109870.tif 000035
【図２６】
2018109870.tif 000036
【図２７】
2018109870.tif 000037
【図２８】
2018109870.tif 000038
【図２９】
2018109870.tif 000039
【図３０】
2018109870.tif 000040
【図３１】
2018109870.tif 000041
【図３２】
2018109870.tif 000042
【図３３】
2018109870.tif 000043
【図３４】
2018109870.tif 000044