(58)【調査した分野】(Int.Cl.,DB名)
前記出力層のノードが前記入力層のノードと接続されていれば、前記出力層のノードと前記入力層のノードとを接続している各エッジの重みを記憶し、前記出力層のノードが前記中間層のノードと接続されていれば、前記出力層のノードと前記中間層のノードとを接続している各エッジの重みを記憶している出力層記憶部を備え、
前記出力層活性度算出部は、前記出力層のノードと接続されているノードが前記入力層のノードであれば、前記入力層活性度算出部により算出された入力層の各ノードでの活性度及び前記出力層記憶部に記憶されている各エッジの重みの中から、前記出力層の各ノードと接続関係がある前記入力層の各ノードでの活性度と各エッジの重みとを取得し、前記出力層のノードと接続されているノードが前記中間層のノードであれば、前記中間層活性度算出部により算出された中間層のノードでの活性度及び前記出力層記憶部に記憶されている各エッジの重みの中から、前記出力層の各ノードと接続関係がある中間層のノードでの活性度と各エッジの重みとを取得し、前記取得した入力層又は中間層のノードでの活性度と各エッジの重みとを用いて、前記出力層の各ノードでの活性度を算出することを特徴とする請求項1あるいは請求項2記載の推論装置。
前記中間層活性度算出部は、前記中間層のノード毎に、当該ノードと接続関係がある前記入力層の各ノードでの活性度と、前記中間層の当該ノードと前記入力層の各ノードを接続している各エッジの重みとの積和演算を実施して、前記積和演算の演算結果と前記中間層の当該ノードのバイアス値を加算し、その加算した結果を前記ニューラルネットワークの活性化関数の引数として用いることで、前記中間層の当該ノードの活性度として、前記活性化関数の関数値を算出することを特徴とする請求項5記載の推論装置。
前記出力層活性度算出部は、前記出力層のノード毎に、当該ノードと接続関係がある前記中間層の各ノードでの活性度と、前記出力層の当該ノードと前記中間層の各ノードを接続している各エッジの重みとの積和演算を実施して、前記積和演算の演算結果と前記出力層の当該ノードのバイアス値を加算し、その加算した結果を前記ニューラルネットワークの活性化関数の引数として用いることで、前記出力層の当該ノードの活性度として、前記活性化関数の関数値を算出することを特徴とする請求項7記載の推論装置。
前記ニューラルネットワークを構成している入力層及び中間層のノードを接続している複数のエッジ、あるいは、前記ニューラルネットワークを構成している中間層及び出力層のノードを接続している複数のエッジがループをなしており、前記ループが6本以上のエッジで形成されていることを特徴とする請求項1あるいは請求項2記載の推論装置。
前記ニューラルネットワークを構成している複数の中間層のノードを接続している複数のエッジがループをなしており、前記ループが6本以上のエッジで形成されていることを特徴とする請求項2記載の推論装置。
前記ニューラルネットワークを構成している中間層の各ノードは、前記入力層又は他の中間層における全ノードのうち、ランダムに選択された一部のノードと接続されていることを特徴とする請求項2記載の推論装置。
前記ニューラルネットワークを構成している複数の中間層の各ノードは、前記入力層又は他の中間層における全ノードのうち、隣接していない一部のノードと接続されていることを特徴とする請求項2記載の推論装置。
前記ニューラルネットワークを構成している複数の中間層の各ノード当りの前記入力層又は他の中間層のノードとの平均接続本数が前記入力層又は他の中間層のノードの個数の10分の1以下であることを特徴とする請求項2記載の推論装置。
【発明を実施するための形態】
【0014】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面にしたがって説明する。
【0015】
実施の形態1.
図1はこの発明の実施の形態1による推論装置を示す構成図であり、
図2はこの発明の実施の形態1による推論装置を示すハードウェア構成図である。
図1では、複数のノードが、入力層、第1中間層、第2中間層、第3中間層、出力層で階層化されている5層の階層型ニューラルネットワークを用いる推論装置の例を示している。また、
図1の例では、入力層に与えられるデータが画像データである例を示している。
ここでは、5層の階層型ニューラルネットワークを用いる例を示しているが、5層の階層型ニューラルネットワークに限るものではなく、3層や4層、あるいは、6層以上の階層型ニューラルネットワークを用いるものであってもよい。
因みに、3層の階層型ニューラルネットワークを用いる場合、中間層は第1中間層だけになり、後述する第2中間層記憶部3、第3中間層記憶部4、第2中間層活性度算出部6及び第3中間層活性度算出部7が不要になる。
【0016】
図1及び
図2において、入力層活性度算出部1は例えばCPU(Central Processing Unit)を実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている入力層活性度算出回路11で実現されるものであり、階層型ニューラルネットワークを構成している入力層の各ノードに画像データが与えられると、その画像データから入力層の各ノードでの活性度を算出する処理を実施する。
【0017】
中間層記憶部である第1中間層記憶部2は例えばRAMやハードディスクなどの記憶媒体からなる中間層記憶装置12で実現されるものであり、第1中間層の各ノードと入力層の各ノードとの接続関係を示すインデックス(接続情報)と、第1中間層のノードと入力層のノードとを接続している各エッジの重みと、第1中間層の各ノードに与えられているバイアス値とを記憶している。
中間層記憶部である第2中間層記憶部3は例えばRAMやハードディスクなどの記憶媒体からなる中間層記憶装置12で実現されるものであり、第2中間層の各ノードと第1中間層の各ノードとの接続関係を示すインデックスと、第2中間層のノードと第1中間層のノードとを接続している各エッジの重みと、第2中間層の各ノードに与えられているバイアス値とを記憶している。
中間層記憶部である第3中間層記憶部4は例えばRAMやハードディスクなどの記憶媒体からなる中間層記憶装置12で実現されるものであり、第3中間層の各ノードと第2中間層の各ノードとの接続関係を示すインデックスと、第3中間層のノードと第2中間層のノードとを接続している各エッジの重みと、第3中間層の各ノードに与えられているバイアス値とを記憶している。
【0018】
中間層活性度算出部である第1中間層活性度算出部5は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている中間層活性度算出回路13で実現されるものであり、第1中間層記憶部2に記憶されているインデックスを参照して、入力層活性度算出部1により算出された入力層の各ノードでの活性度と第1中間層記憶部2に記憶されている各エッジの重み及びバイアス値の中から、第1中間層の各ノードと接続関係がある入力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した入力層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第1中間層の各ノードでの活性度を算出する処理を実施する。
【0019】
中間層活性度算出部である第2中間層活性度算出部6は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている中間層活性度算出回路13で実現されるものであり、第2中間層記憶部3に記憶されているインデックスを参照して、第1中間層活性度算出部5により算出された第1中間層の各ノードでの活性度と第2中間層記憶部3に記憶されている各エッジの重み及びバイアス値の中から、第2中間層の各ノードと接続関係がある第1中間層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した第1中間層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第2中間層の各ノードでの活性度を算出する処理を実施する。
【0020】
中間層活性度算出部である第3中間層活性度算出部7は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている中間層活性度算出回路13で実現されるものであり、第3中間層記憶部4に記憶されているインデックスを参照して、第2中間層活性度算出部6により算出された第2中間層の各ノードでの活性度と第3中間層記憶部4に記憶されている各エッジの重み及びバイアス値の中から、第3中間層の各ノードと接続関係がある第2中間層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した第2中間層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第3中間層の各ノードでの活性度を算出する処理を実施する。
【0021】
出力層記憶部8は例えばRAMやハードディスクなどの記憶媒体からなる出力層記憶装置14で実現されるものであり、出力層の各ノードと第3中間層の各ノードとの接続関係を示すインデックス(接続情報)と、出力層のノードと第3中間層のノードとを接続している各エッジの重みと、出力層の各ノードに与えられているバイアス値とを記憶している。
出力層活性度算出部9は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている出力層活性度算出回路15で実現されるものであり、出力層記憶部8に記憶されているインデックスを参照して、第3中間層活性度算出部7により算出された第3中間層の各ノードでの活性度と出力層記憶部8に記憶されている各エッジの重み及びバイアス値の中から、出力層の各ノードと接続関係がある第3中間層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した第3中間層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、出力層の各ノードでの活性度を算出する処理を実施する。
【0022】
図1では、推論装置の構成要素である入力層活性度算出部1、第1中間層記憶部2、第2中間層記憶部3、第3中間層記憶部4、第1中間層活性度算出部5、第2中間層活性度算出部6、第3中間層活性度算出部7、出力層記憶部8及び出力層活性度算出部9のそれぞれが専用のハードウェアで構成されているものを想定しているが、推論装置がコンピュータで構成されていてもよい。
図3は推論装置がコンピュータで構成される場合のハードウェア構成図である。
推論装置がコンピュータで構成される場合、第1中間層記憶部2、第2中間層記憶部3、第3中間層記憶部4及び出力層記憶部8をコンピュータのメモリ21上に構成するとともに、入力層活性度算出部1、第1中間層活性度算出部5、第2中間層活性度算出部6、第3中間層活性度算出部7及び出力層活性度算出部9の処理内容を記述しているプログラムをコンピュータのメモリ21に格納し、当該コンピュータのプロセッサ22がメモリ21に格納されているプログラムを実行するようにすればよい。
図4はこの発明の実施の形態1による推論装置の処理内容である推論方法を示すフローチャートであり、
図5は入力層活性度算出部1、第1中間層活性度算出部5、第2中間層活性度算出部6、第3中間層活性度算出部7及び出力層活性度算出部9の処理内容を示すフローチャートである。
【0023】
図6はこの発明の実施の形態1による推論装置が適用する階層型ニューラルネットワークを示す説明図である。
図6の階層型ニューラルネットワークは、複数のノードが、入力層、第1中間層、第2中間層、第3中間層、出力層で階層化されている5層の階層型ニューラルネットワークである。
図7はインデックス、エッジ重み及びバイアス値の一例を示す説明図である。
図7では、ノードの接続情報であるインデックスが、例えば、第1中間層における“N”のノードは、入力層における“0”,“3”,“5”のノードと接続されている旨を示している。
また、
図7では、例えば、第1中間層における“N”のノードと、入力層における“0”のノードとを接続しているエッジの重みが“0.2”、第1中間層における“N”のノードと、入力層における“3”のノードとを接続しているエッジの重みが“−0.5”、第1中間層における“N”のノードと、入力層における“5”のノードとを接続しているエッジの重みが“0.1”である旨を示している。
さらに、
図7では、例えば、第1中間層における“N”のノードのバイアス値が“1.8”である旨を示している。
【0024】
次に動作について説明する。
入力層活性度算出部1は、階層型ニューラルネットワークを構成している入力層の各ノードに画像データが与えられると、その画像データから入力層の各ノードでの活性度A
INを算出する(
図4のステップST1)。
入力層活性度算出部1に与えられる画像データが、例えば、0〜255の画素値Pを有するピクセルからなる画像を示すデータであり、各ピクセルの画素値Pが入力層の各ノードに与えられる場合、入力層の各ノードでの活性度A
INは、下記の式(1)のように算出することができる。
ここでは、画像データが入力される場合を想定し、各ピクセルの画素値Pを255で除算することで正規化して、浮動小数点値(0.0〜1.0)を入力層の各ノードでの活性度A
INとする例を示しているが、単なる正規化のみでなく、入力されるデータの種類に応じて、データ間引き、量子化、変換等の処理を実施するようにしてもよい。
【0025】
第1中間層活性度算出部5は、入力層活性度算出部1が入力層の各ノードでの活性度A
INを算出すると、第1中間層記憶部2に記憶されているインデックスを参照して、第1中間層のノード毎に、当該ノードに接続されている入力層の各ノードを確認して、その入力層の各ノードでの活性度A
INを取得する。
例えば、第1中間層における“N”のノードの場合、第1中間層記憶部2に記憶されているインデックスが、入力層における“0”,“3”,“5”のノードと接続されている旨を示しているので、入力層活性度算出部1により算出された入力層の各ノードでの活性度A
INのうち、入力層における“0”,“3”,“5”のノードでの活性度A
IN−0,A
IN−3,A
IN−5を取得する。
【0026】
また、第1中間層活性度算出部5は、第1中間層記憶部2に記憶されているインデックスを参照して、第1中間層のノード毎に、当該ノードに接続されているエッジを確認して、第1中間層記憶部2からそのエッジの重みwを取得する。
例えば、第1中間層における“N”のノードの場合、第1中間層記憶部2に記憶されているインデックスが、入力層における“0”,“3”,“5”のノードと接続されている旨を示しているので、第1中間層における“N”のノードと、入力層における“0”のノードとを接続しているエッジの重みw
N−0として“0.2”を取得し、第1中間層における“N”のノードと、入力層における“3”のノードとを接続しているエッジの重みw
N−3として“−0.5”を取得する。また、第1中間層における“N”のノードと、入力層における“5”のノードとを接続しているエッジの重みw
N−5として“0.1”を取得する。
【0027】
また、第1中間層活性度算出部5は、第1中間層のノード毎に、第1中間層記憶部2から当該ノードのバイアス値B
1Mを取得する。
例えば、第1中間層における“N”のノードの場合、バイアス値B
1M−Nとして“1.8”を取得する。
【0028】
第1中間層活性度算出部5は、第1中間層のノード毎に、入力層の各ノードでの活性度A
IN、エッジの重みw、バイアス値B
1Mを取得すると、活性度A
IN、エッジの重みw、バイアス値B
1Mを用いて、第1中間層のノード毎の活性度A
1Mを算出する(ステップST2)。
以下、第1中間層における“N”のノードの活性度A
1M−Nの算出例を具体的に説明する。
【0029】
まず、第1中間層活性度算出部5は、第1中間層記憶部2に記憶されているインデックスを読み込んで(
図5のステップST11)、そのインデックスを参照することで、活性度の算出に用いるパラメータとして、入力層における“0”,“3”,“5”のノードでの活性度A
IN−0,A
IN−3,A
IN−5と、エッジの重みw
N−0,w
N−3,w
N−5と、第1中間層における“N”のノードのバイアス値B
1M−Nとを取得する(ステップST12)
次に、第1中間層活性度算出部5は、下記の式(2)に示すように、入力層における“0”,“3”,“5”のノードでの活性度A
IN−0,A
IN−3,A
IN−5と、エッジの重みw
N−0,w
N−3,w
N−5との積和演算を実施する(ステップST13)。
MADD
=A
IN−0×w
N−0+A
IN−3×w
N−3+A
IN−5×w
N−5 (2)
次に、第1中間層活性度算出部5は、下記の式(3)に示すように、積和演算の演算結果MADDと第1中間層における“N”のノードのバイアス値B
1M−Nとを加算する(ステップST14)。
ADD=MADD+B
1M−N (3)
【0030】
第1中間層活性度算出部5は、活性度の計算に用いるニューラルネットワークの活性化関数F(activation function)として、線形関数、シグモイド関数、ソフトマックス関数、整流化線形関数(ReLU)などを事前に用意しており、式(3)の加算結果ADDを活性化関数Fの引数とし、下記の式(4)に示すように、第1中間層における“N”のノードの活性度A
1M−Nとして、その活性化関数の関数値を算出する(ステップST15)。
A
1M−N=F(ADD) (4)
ここでは、第1中間層における“N”のノードの活性度A
1M−Nの算出例を示したが、第1中間層における他のノードの活性度A
1Mについても同様に算出する。
【0031】
第2中間層活性度算出部6は、第1中間層活性度算出部5が第1中間層の各ノードでの活性度A
1Mを算出すると、第2中間層の各ノードでの活性度A
2Mを算出する(
図4のステップST3)。
第2中間層活性度算出部6による第2中間層の各ノードでの活性度A
2Mの算出方法は、第1中間層活性度算出部5による第1中間層の各ノードでの活性度A
1Mの算出方法と同様である。
即ち、第2中間層活性度算出部6は、第2中間層記憶部3に記憶されているインデックスを参照して、第2中間層のノード毎に、当該ノードに接続されている第1中間層の各ノードを確認して、その第1中間層の各ノードでの活性度A
1Mを取得する。
また、第2中間層活性度算出部6は、第2中間層記憶部3に記憶されているインデックスを参照して、第2中間層のノード毎に、当該ノードに接続されているエッジを確認して、第2中間層記憶部3からそのエッジの重みwを取得する。
【0032】
また、第2中間層活性度算出部6は、第2中間層のノード毎に、第2中間層記憶部3から当該ノードのバイアス値B
2Mを取得する。
第2中間層活性度算出部6は、第2中間層のノード毎に、第1中間層の各ノードでの活性度A
1M、エッジの重みw、バイアス値B
2Mを取得すると、第1中間層活性度算出部5と同様の計算方法で、活性度A
1M、エッジの重みw、バイアス値B
2Mを用いて、第2中間層のノード毎の活性度A
2Mを算出する。
【0033】
第3中間層活性度算出部7は、第2中間層活性度算出部6が第2中間層の各ノードでの活性度A
2Mを算出すると、第3中間層の各ノードでの活性度A
3Mを算出する(ステップST4)。
第3中間層活性度算出部7による第3中間層の各ノードでの活性度A
3Mの算出方法は、第1中間層活性度算出部5による第1中間層の各ノードでの活性度A
1Mの算出方法と同様である。
即ち、第3中間層活性度算出部7は、第3中間層記憶部4に記憶されているインデックスを参照して、第3中間層のノード毎に、当該ノードに接続されている第2中間層の各ノードを確認して、その第2中間層の各ノードでの活性度A
2Mを取得する。
また、第3中間層活性度算出部7は、第3中間層記憶部4に記憶されているインデックスを参照して、第3中間層のノード毎に、当該ノードに接続されているエッジを確認して、第3中間層記憶部4からそのエッジの重みwを取得する。
【0034】
また、第3中間層活性度算出部7は、第3中間層のノード毎に、第3中間層記憶部4から当該ノードのバイアス値B
3Mを取得する。
第3中間層活性度算出部7は、第3中間層のノード毎に、第2中間層の各ノードでの活性度A
2M、エッジの重みw、バイアス値B
3Mを取得すると、第1中間層活性度算出部5と同様の計算方法で、活性度A
2M、エッジの重みw、バイアス値B
3Mを用いて、第3中間層のノード毎の活性度A
3Mを算出する。
【0035】
出力層活性度算出部9は、第3中間層活性度算出部7が第3中間層の各ノードでの活性度A
3Mを算出すると、出力層の各ノードでの活性度A
OUTを算出する(ステップST5)。
出力層活性度算出部9による出力層の各ノードでの活性度A
OUTの算出方法は、第1中間層活性度算出部5による第1中間層の各ノードでの活性度A
1Mの算出方法と同様である。
即ち、出力層活性度算出部9は、出力層記憶部8に記憶されているインデックスを参照して、出力層のノード毎に、当該ノードに接続されている第3中間層の各ノードを確認して、その第3中間層の各ノードでの活性度A
3Mを取得する。
また、出力層活性度算出部9は、出力層記憶部8に記憶されているインデックスを参照して、出力層のノード毎に、当該ノードに接続されているエッジを確認して、出力層記憶部8からそのエッジの重みwを取得する。
【0036】
また、出力層活性度算出部9は、出力層のノード毎に、出力層記憶部8から当該ノードのバイアス値B
OUTを取得する。
出力層活性度算出部9は、出力層のノード毎に、第3中間層の各ノードでの活性度A
3M、エッジの重みw、バイアス値B
OUTを取得すると、第1中間層活性度算出部5と同様の計算方法で、活性度A
3M、エッジの重みw、バイアス値B
OUTを用いて、出力層のノード毎の活性度A
OUTを算出する。
【0037】
出力層活性度算出部9により算出された出力層のノード毎の活性度A
OUTは、推論装置の推論結果として出力される。
例えば、画像に映っているものが人、犬、猫、自動車のいずれであるかを識別する場合、出力層は、4つのノードから構成され、各ノードの活性度が、それぞれ人、犬、猫、自動車である可能性を示す値になるように学習される。
推論時は、出力層の中で一番活性度が大きいノードを選び、例えば、それが猫である可能性を出力するノードであれば、猫という推論結果を出力する。単なる識別結果のみでなく、活性度を用いた信頼度の算出や回帰予測値出力等の処理を実施してもよい。
【0038】
以上で明らかなように、この実施の形態1によれば、第1中間層活性度算出部5が、第1中間層記憶部2に記憶されているインデックスを参照して、入力層活性度算出部1により算出された入力層の各ノードでの活性度と第1中間層記憶部2に記憶されている各エッジの重み及びバイアス値の中から、第1中間層の各ノードと接続関係がある入力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した入力層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第1中間層の各ノードでの活性度を算出するように構成したので、推論を行う際の計算量及びメモリ量を削減することができる効果を奏する。
即ち、第1中間層活性度算出部5では、第1中間層の各ノードと接続関係がある入力層の各ノードについてだけ計算を行えばよいため、推論を行う際の計算量及びメモリ量を大幅に削減することができる。
【0039】
また、第2中間層活性度算出部6についても、第2中間層の各ノードと接続関係がある第1中間層の各ノードについてだけ計算を行えばよいため、第1中間層活性度算出部5と同様に、推論を行う際の計算量及びメモリ量を大幅に削減することができる。
また、第3中間層活性度算出部7についても、第3中間層の各ノードと接続関係がある第2中間層の各ノードについてだけ計算を行えばよいため、第1中間層活性度算出部5と同様に、推論を行う際の計算量及びメモリ量を大幅に削減することができる。
さらに、出力層活性度算出部9についても、出力層の各ノードと接続関係がある第3中間層の各ノードについてだけ計算を行えばよいため、第1中間層活性度算出部5と同様に、推論を行う際の計算量及びメモリ量を大幅に削減することができる。
【0040】
この実施の形態1では、第1中間層活性度算出部5、第2中間層活性度算出部6、第3中間層活性度算出部7及び出力層活性度算出部9が、各ノードでの活性度を算出する際、前段の層の各ノードでの活性度とエッジの重みとの積和演算を実施するものを示したが、前段の層の各ノードでの活性度の最大値又は平均値を求め、その最大値又は平均値を式(3)の加算結果ADDの代わりに用いてもよい。
【0041】
実施の形態2.
上記実施の形態1では、推論装置が適用するニューラルネットワークを構成している各層の各ノードが、前段又は後段の層の全てのノードとは接続されておらず、一部のノードと接続されているものを示している。
各層の各ノードが、前段又は後段の層の一部のノードと接続される場合でも、ノード間の接続形態によっては、ノード間を接続する複数のエッジによってループが形成されることがある。
ここで、ニューラルネットワークにおいて、或るノードから同じエッジを一度しか通らないように辿って元のノードに戻る経路をループと称し、ループを構成するエッジの本数をループの長さと称する。
【0042】
図8は複数のエッジによって形成されるループの例を示す説明図である。
図8(a)(b)は4本のエッジによって形成されるループの例を示し、
図8(c)は6本のエッジによって形成されるループの例を示し、
図8(d)は8本のエッジによって形成されるループの例を示している。
例えば、階層型ニューラルネットワークでは、最短で長さ4のループが生じ得るが、特に、長さ4のループは学習時の逆誤差伝播法で伝播する勾配計算情報が容易に循環するため、推論精度低下の要因になる。また、ベイジアンネットの確率伝播法のように双方向に情報伝播することで推論するモデルでも、短いループの存在によって伝播情報が循環してしまって推論精度低下の要因となる。
【0043】
そこで、この実施の形態2では、ニューラルネットワークを構成している各層のノード間を接続しているエッジ、即ち、第1中間層のノードと入力層のノードとを接続しているエッジ、第2中間層のノードと第1中間層のノードとを接続しているエッジ、第3中間層のノードと第2中間層のノードとを接続しているエッジ、出力層のノードと第3中間層のノードとを接続しているエッジがループを形成する場合、推論装置が適用するニューラルネットワークは、ループが6本以上のエッジで形成されているニューラルネットワークに限るものとする。
したがって、この実施の形態2では、
図8(a)(b)に示すように4本のエッジによってループが形成されているニューラルネットワークは、推論装置の適用対象とならないが、
図8(c)(d)に示すように6本又は8本のエッジによってループが形成されているニューラルネットワークは、推論装置の適用対象となる。
これにより、ニューラルネットワーク内に存在する長さの短いループに伴う推論精度の低下を抑制することができる効果を奏する。即ち、推論精度を維持したまま計算量及びメモリ量を削減することができる。
【0044】
実施の形態3.
上記実施の形態1では、推論装置が適用するニューラルネットワークを構成している各層の各ノードが、前段又は後段の層の全てのノードとは接続されておらず、一部のノードと接続されているものを示している。
このとき、第1中間層の各ノードは、入力層における全ノードのうち、ランダムに選択された一部のノードと接続されているものであってもよい。
同様に、第2中間層の各ノードは、第1中間層における全ノードのうち、ランダムに選択された一部のノードと接続されているものであってもよく、また、第3中間層の各ノードは、第2中間層における全ノードのうち、ランダムに選択された一部のノードと接続されているものであってもよい。
また、同様に、出力層の各ノードは、第3中間層における全ノードのうち、ランダムに選択された一部のノードと接続されているものであってもよい。
【0045】
ランダムに選択される条件として、各層(出力層、第3中間層、第2中間層、第1中間層)の各ノード当りの前段の層(第3中間層、第2中間層、第1中間層、入力層)のノードとの平均接続本数が50本以下であるという条件を課してもよい。
あるいは、各層(出力層、第3中間層、第2中間層、第1中間層)の各ノード当りの前段の層(第3中間層、第2中間層、第1中間層、入力層)のノードとの平均接続本数が前段の層のノードの個数の10分の1以下であるという条件を課してもよい。
【0046】
各層の各ノードが前段の層における全ノードと接続される形態では、各層のノード数がMで、前段の層のノード数がNである場合、各層での活性度の計算量とメモリ量がN×Mのオーダーになるが、各層の各ノード当りの前段の層のノードの平均接続本数n(n<N)が、50本以下であるという条件、あるいは、前段の層のノードの個数Nの10分の1以下であるという条件を課することで、長さの短いループの発生確率を低下させて、推論精度の低下を抑制することができるとともに、計算量及びメモリ量を削減することができる。
【0047】
実施の形態4.
上記実施の形態1では、推論装置が適用するニューラルネットワークを構成している各層の各ノードが、前段又は後段の層の全てのノードとは接続されておらず、一部のノードと接続されているものを示している。
このとき、第1中間層の各ノードは、入力層における全ノードのうち、隣接していない一部のノードと接続されているようにしてもよい。
同様に、第2中間層の各ノードは、第1中間層における全ノードのうち、隣接していない一部のノードと接続されているようにしてもよく、また、第3中間層の各ノードは、第2中間層における全ノードのうち、隣接していない一部のノードと接続されているようにしてもよい。
また、同様に、出力層の各ノードは、第3中間層における全ノードのうち、隣接していない一部のノードと接続されているようにしてもよい。
例えば、第1中間層における“N”のノードの場合、入力層における“0”のノードと、“3”のノードとは隣接していないため、第1中間層における“N”のノードは、入力層における“0”,“3”のノードと接続される形態が許容されるが、入力層における“0”のノードと、“1”のノードとは隣接しているため、第1中間層における“N”のノードは、入力層における“0”,“1”のノードと接続される形態が許容されない。
【0048】
この実施の形態4において、接続される形態が許容される条件として、各層(出力層、第3中間層、第2中間層、第1中間層)の各ノード当りの前段の層(第3中間層、第2中間層、第1中間層、入力層)のノードとの平均接続本数が50本以下であるという条件を課してもよい。
あるいは、各層(出力層、第3中間層、第2中間層、第1中間層)の各ノード当りの前段の層(第3中間層、第2中間層、第1中間層、入力層)のノードとの平均接続本数が前段の層のノードの個数の10分の1以下であるという条件を課してもよい。
上記の条件を課することで、長さの短いループの発生確率を低下させて、推論精度の低下を抑制することができるとともに、計算量及びメモリ量を削減することができる。
【0049】
実施の形態5.
上記実施の形態1〜4では、推論装置が適用するニューラルネットワークとして、3つの中間層をもつ階層型フィードフォワードのニューラルネットワークを例に挙げているが、中間層は3つより多くても少なくてもよい。また、中間層がないロジスティック回帰モデルのような構造であってもよい。
また、層間のノードを全結合する層や、畳み込みニューラルネットワークのような畳み込み層およびプーリング層や、リカレントニューラルネットワークにおけるLSTM(長期短期記憶)ブロックなど、ニューラルネットワークの従来手法と組み合わせてもよい。
ここで、畳み込みニューラルネットワークは、畳み込み層とプーリング層が繰り返された構造になっている。例えば、畳み込み層は、画像の局所的な特徴抽出を担う層であり、プーリング層は、局所毎に特徴をまとめあげる層である。
【0050】
上記実施の形態1〜4では、推論装置が適用するニューラルネットワークとして、階層型フィードフォワードのニューラルネットワークを例に挙げているが、層を飛ばした接続があってもよいし、同じ層に属するノード同士で接続があってもよいし、接続先と接続元が同一の自己接続があってもよいし、エッジがループを形成するような循環接続があってもよい(リカレントニューラルネットワーク)。
また、自己組織化マップ(SOM)、連想記憶モデル、ホップフィールドネットワーク、ボルツマンマシンなど、他のグラフを用いて推論するニューラルネットワークであってもよい。さらに、ニューラルネットワークに限らず、ベイジアンネットワークなど、他のグラフを用いて推論するモデルでもよい。
【0051】
上記実施の形態1〜4では、入力層のノードが0,1,…,N−1、第1中間層のノードがN,N+1,…,N+M−1といったように一次元のインデックスを付けているが、入力層のノードが(0,0)、(0,1)、…、(0,N−1)、第1中間層のノードが(1,0)、(1,1)、…、(1,M−1)といったように二次元のインデックスを付けてもよいし、メモリのアドレスをインデックスとして用いてもよいし、他のインデックスを付けてもよい。
【0052】
上記実施の形態1〜4では、推論装置が適用するニューラルネットワークとして、エッジの数とエッジ重みの数が一致する例を挙げているが、畳み込みネットワークにおける畳み込みフィルタ係数のように、複数のエッジ重みを共有化するようにしてもよい。
上記実施の形態1〜4では、各ノードにおける活性度の計算過程を順に記載しているが、互いに依存しない計算を複数のCPUやGPUを用いて並列化し、さらに高速化することも可能である。
【0053】
上記実施の形態1〜4では、画像データを入力して、画像を分類する画像分類システムを例に挙げているが、データと対応する教師信号が準備できており、教師あり学習を行うことができるならば、データの入力に対して何らかの推論結果を出力する推論システム全般に適用可能である。
例えば、画像を入力して検知したい物体領域の位置や大きさを出力してもよいし、画像を入力して、その画像を説明するテキストを出力してもよいし、ノイズが入った画像を入力して、ノイズを除去した画像を出力してもよいし、画像とテキストを入力して、画像をテキストに従って変換してもよい。
また、音声を入力して音素や単語を出力してもよいし、音声を入力して次に発話される単語を予測してもよいし、音声を入力して、それに対する適切な応答音声を出力してもよいし、テキストを入力して別の言語のテキストを出力してもよいし、時系列を入力して将来の時系列を予測してもよいし、時系列を入力して時系列の状態を推定してもよい。
【0054】
上記実施の形態1〜4では、データと対応する教師信号を用いる教師あり学習によって学習したモデルで推論するシステム例を挙げているが、教師信号のないデータを用いる教師なし学習や半教師あり学習によって学習したモデルで推論するシステムでもよい。
上記実施の形態1〜4では、推論装置が、図示せぬデータ入力装置から画像データを与えられて、第1中間層の各ノードでの活性度を算出する例を示したが、図示せぬデータ入力装置が、第1中間層の各ノードでの活性度を算出し、推論装置が、第2及び第3中間層及び出力層の各ノードでの活性度を算出するようにしてもよい。データ入力装置の出力の次元数が入力の次元数よりも少ない場合、データ入力装置がデータ圧縮の機能も併せ持つことになる。
上記実施の形態1〜4では、各ノードに対して一度だけ活性度を算出する例を挙げているが、ベイジアンネットワークの確率伝播法のようにノード間で繰り返し何度も情報交換して推論精度を向上させてもよい。
【0055】
実施の形態6.
上記実施の形態1〜4では、推論装置が適用するニューラルネットワークとして、入力層を除く全ての層で枝接続のインデックスを保持している例を挙げているが、一部の層だけが枝接続のインデックスを保持し、他の層では通常のニューラルネットワークと同様の枝接続であるものでもあってもよい。
ここで、枝接続のインデックスとは、
図7に示すようなインデックスであり、エッジ重みやバイアス値を含む概念である。
また、通常のニューラルネットワークと同様の枝接続とは、接続先の層における全てのノードと接続されてる枝接続(全接続層の枝接続)を意味するほか、接続先の層における或るノード及び当該ノードの周辺ノードと接続されている畳み込み層やプーリング層などの公知のニューラルネットワークの枝接続を意味する。
【0056】
図9は入力層に与えられる画像データを10種のクラスに識別するニューラルネットワークの一例を示す説明図である。
図9は例では、入力層と出力層の間に5つの中間層、即ち、第1中間層、第2中間層、第3中間層、第4中間層及び第5中間層が接続されている。
また、
図9は例では、入力層から第1中間層が畳み込み層31、第1中間層から第2中間層がプーリング層32、第2中間層から第3中間層が畳み込み層33、第3中間層から第4中間層がプーリング層34、第4中間層から第5中間層が上記実施の形態1〜4で示しているインデックスを保持する層35、第5中間層から出力層が全接続層36である。
このため、第5中間層における各ノードは、
図7に示している第1中間層と同様に、第4中間層における接続元のノードを示すインデックスと、その接続に対応するエッジ重み及びバイアス値を保持している。
【0057】
例えば、入力層に与えられる画像データが、縦60×横60画素の画像データであれば、
図9のニューラルネットワークでは、3600個(=60×60×1個)のノードを有する入力層が必要となる。
このとき、例えば、入力層から第1中間層への畳み込み層31のフィルタサイズが5×5×1、この畳み込み層31でのマップ数が100、第1中間層から第2中間層へのプーリング層32及び第3中間層から第4中間層へのプーリング層34がフィルタサイズ2×2×1の最大値プーリングである場合、第1中間層のサイズが56×56×100(=(60−5+1)×(60−5+1)×100)、第2中間層のサイズが28×28×100(=(56/2)×(56/2)×100)となる。
また、第3中間層のサイズが24×24×200(=(28−5+1)×(28−5+1)×200、第4中間層のサイズが12×12×200(=(24/2)×(24/2)×200)、第5中間層のサイズが1×1×1000、出力層のノード数が1×1×10となる。
【0058】
なお、入力層から第1中間層に情報を伝播する際に伝播値を計算する活性化関数、第2中間層から第3中間層に情報を伝播する際に伝播値を計算する活性化関数や、第4中間層から第5中間層に情報を伝播する際に伝播値を計算する活性化関数として、例えば、ReLU(Rectified Linear Unit)が用いられ、第5中間層から出力層に情報を伝播する際に伝播値を計算する活性化関数として、例えば、正規化指数関数であるソフトマックス関数(Softmax関数)が用いられる。
【0059】
図9のニューラルネットワークでは、入力層から第4中間層までの畳み込み層31,33とプーリング層32,34によって、入力された画像の位置変化に対してロバストに画像データの特徴量を抽出することができる。
また、第4中間層から第5中間層へのインデックスを保持する層によって、上記実施の形態1〜4と同様に、推論を行う際の計算量及びメモリ量を大幅に削減することができる。
【0060】
この実施の形態6では、画像データが入力層に与えられる例を示しているが、入力層に与えられるデータは画像データに限るものではなく、例えば、センサにより観測されたデータであるセンサ信号、音声やテキストなどのデータなどであってもよい。
また、この実施の形態6では、入力層に与えられる画像データを10種のクラスに識別する例を示しているが、ニューラルネットワークを構成している出力層を変更することで、画像データのクラスを識別する推論以外の推論を行うようにしてもよい。
例えば、画像データのノイズを取り除くデノイジング、回帰予測や尤度算出などの推論を行うようにしてもよい。
また、推論の目的に合わせて、各層のノード数やフィルタサイズを変えてもよい。
【0061】
図9のニューラルネットワークでは、畳み込み層31、プーリング層32、畳み込み層33、プーリング層34、インデックスを保持する層35、全接続層36の順序で枝接続している例を示しているが、上記実施の形態1〜4に示すインデックスを保持する層が1つでも接続されていればよく、上記の順序以外の順序で枝接続しているものであってもよい。また、プーリング層32,34が接続されていないものであってもよい。
【0062】
実施の形態7.
実施の形態1〜6では、推論装置が適用しているニューラルネットワークが有向ループをなしていないフィードフォワードニューラルネットワーク(FFNN)である例を挙げているが、推論装置が、ネットワークの一部が有向ループをなしているリカレントニューラルネットワーク(RNN)を適用し、そのリカレントニューラルネットワークの一部の層が、上記実施の形態1〜4に示すインデックスを保持する層であるものであってもよい。
【0063】
図10は入力層から第1中間層、第1中間層から第2中間層(文脈層)、第2中間層(文脈層)から第1中間層、第1中間層から出力層に枝接続を持っているリカレントニューラルネットワーク(RNN)であるエルマンネットワーク(Elman Network)を示す説明図である。
図10のエルマンネットワークでは、第2中間層(文脈層)のノード数が、第1中間層のノード数と等しいものとする。
【0064】
図11はこの発明の実施の形態7による推論装置を示す構成図であり、
図11において、
図1と同一符号は同一または相当部分を示すので説明を省略する。
中間層活性度算出部である第2中間層活性度算出部41は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている中間層活性度算出回路13で実現されるものであり、第1中間層の各ノードの活性度を第2中間層(文脈層)の各ノードの活性度としてコピーする処理を実施する。
この実施の形態7では、第2中間層活性度算出部41が、第1中間層の各ノードの活性度を第2中間層(文脈層)の各ノードの活性度としてコピーする例を想定しているが、これは一例に過ぎず、例えば、入力層活性度算出部1と同様に、式(1)によって第2中間層(文脈層)の各ノードの活性度を算出するようにしてもよい。
【0065】
中間層記憶部である第1中間層記憶部42は例えばRAMやハードディスクなどの記憶媒体からなる中間層記憶装置12で実現されるものであり、第1中間層の各ノードと第2中間層(文脈層)の各ノードとの接続関係を示すインデックスと、第1中間層のノードと第2中間層のノードとを接続している各エッジの重みと、第1中間層の各ノードに与えられているバイアス値とを記憶している。
中間層活性度算出部である第1中間層活性度算出部43は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている中間層活性度算出回路13で実現されるものであり、第1中間層記憶部42に記憶されているインデックスを参照して、第2中間層活性度算出部41により求められた第2中間層(文脈層)の各ノードでの活性度と第1中間層記憶部42に記憶されている各エッジの重み及びバイアス値の中から、第1中間層の各ノードと接続関係がある第2中間層(文脈層)の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した第2中間層(文脈層)の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第1中間層の各ノードでの活性度を算出する処理を実施する。
【0066】
図11では、推論装置の構成要素である入力層活性度算出部1、第1中間層記憶部2、第1中間層活性度算出部5、第2中間層活性度算出部41、第1中間層記憶部42、第1中間層活性度算出部43、出力層記憶部8及び出力層活性度算出部9のそれぞれが専用のハードウェアで構成されているものを想定しているが、推論装置がコンピュータで構成されていてもよい。
推論装置がコンピュータで構成される場合、第1中間層記憶部2、第1中間層記憶部42及び出力層記憶部8を
図3に示すコンピュータのメモリ21上に構成するとともに、入力層活性度算出部1、第1中間層活性度算出部5、第2中間層活性度算出部41、第1中間層活性度算出部43及び出力層活性度算出部9の処理内容を記述しているプログラムを
図3に示すコンピュータのメモリ21に格納し、当該コンピュータのプロセッサ22がメモリ21に格納されているプログラムを実行するようにすればよい。
【0067】
次に動作について説明する。
ただし、第2中間層活性度算出部41、第1中間層記憶部42及び第1中間層活性度算出部43以外は、上記実施の形態1と同様であるため、ここでは、第2中間層活性度算出部41、第1中間層記憶部42及び第1中間層活性度算出部43についてのみ説明する。
第2中間層活性度算出部41は、第1中間層活性度算出部5が上記実施の形態1と同様に、入力層活性度算出部1により算出された入力層の各ノードの活性度を用いて、第1中間層の各ノードの活性度A
1Mを算出すると、第1中間層の各ノードの活性度A
1Mを第2中間層(文脈層)の各ノードの活性度A
2Mとしてコピーする。
これにより、ある時刻tにおける第2中間層の各ノードの活性度A
2Mは、時刻tにおける第1中間層の各ノードの活性度A
1Mと同じになる。
【0068】
第1中間層活性度算出部43は、第2中間層活性度算出部41が第2中間層(文脈層)の各ノードの活性度A
2Mを求めると、第1中間層の各ノードの活性度A’
1Mを算出する。
第1中間層活性度算出部43による第1中間層の各ノードでの活性度A’
1Mの算出方法は、第1中間層活性度算出部5による第1中間層の各ノードでの活性度A
1Mの算出方法と同様である。
即ち、第1中間層活性度算出部43は、第1中間層記憶部42に記憶されているインデックスを参照して、第1中間層のノード毎に、当該ノードに接続されている第2中間層(文脈層)の各ノードを確認して、第2中間層(文脈層)の各ノードでの活性度A
2Mを取得する。
また、第1中間層活性度算出部43は、第1中間層記憶部42に記憶されているインデックスを参照して、第1中間層のノード毎に、当該ノードに接続されているエッジ(第2中間層のノードと接続されているエッジ)を確認して、第1中間層記憶部42からそのエッジの重みwを取得する。
【0069】
また、第1中間層活性度算出部43は、第1中間層のノード毎に、第1中間層記憶部42から当該ノードのバイアス値B
1Mを取得する。
第1中間層活性度算出部43は、第1中間層のノード毎に、第2中間層(文脈層)の各ノードでの活性度A
2M、エッジの重みw、バイアス値B
1Mを取得すると、第1中間層活性度算出部5と同様の計算方法で、活性度A
2M、エッジの重みw、バイアス値B
1Mを用いて、第1中間層のノード毎の活性度A’
1Mを算出する。
出力層活性度算出部9は、第1中間層活性度算出部43が第1中間層の各ノードでの活性度A’
1Mを算出すると、第1中間層の各ノードでの活性度A’
1Mを用いて、出力層の各ノードでの活性度A
OUTを算出する。
出力層活性度算出部9による出力層の各ノードでの活性度A
OUTの算出方法は上記実施の形態1と同様である。
【0070】
以上で明らかなように、この実施の形態7によれば、第1中間層活性度算出部43が、第1中間層記憶部42に記憶されているインデックスを参照して、第2中間層活性度算出部41により求められた第2中間層(文脈層)の各ノードでの活性度と第1中間層記憶部42に記憶されている各エッジの重み及びバイアス値の中から、第1中間層の各ノードと接続関係がある第2中間層(文脈層)の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した第2中間層(文脈層)の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第1中間層の各ノードでの活性度を算出するように構成したので、ネットワークの一部が有向ループをなしているリカレントニューラルネットワーク(RNN)を適用する場合であっても、推論を行う際の計算量及びメモリ量を削減することができる効果を奏する。
即ち、第1中間層活性度算出部43では、第1中間層の各ノードと接続関係がある第2中間層(文脈層)の各ノードについてだけ計算を行えばよいため、推論を行う際の計算量及びメモリ量を大幅に削減することができる。
【0071】
この実施の形態7では、推論装置が適用するリカレントニューラルネットワーク(RNN)がエルマンネットワークである例に挙げているが、これは一例に過ぎず、例えば、Jordan Networkや、LSTM(Long Short Term Memory)ブロックを持つリカレントニューラルネットワーク、階層型のリカレントニューラルネットワーク、双方向のリカレントニューラルネットワーク、連続時間のリカレントニューラルネットワークなどを適用するものであってもよい。
ただし、この実施の形態7では、いずれのリカレントニューラルネットワークを適用する場合でも、一部の層で枝接続のインデックスを保持するものとする。
【0072】
実施の形態8.
上記実施の形態1〜7では、推論装置が適用するニューラルネットワークとして、同じ層のノード同士の枝接続や自己接続が無いフィードフォワードニューラルネットワーク(FFNN)やリカレントニューラルネットワーク(RNN)である例に挙げているが、同じ層のノード同士の枝接続や、接続元ノードと接続先ノードが同一のノードである自己接続が有るフィードフォワードニューラルネットワーク(FFNN)やリカレントニューラルネットワーク(RNN)を適用するようにしてもよい。また、層を飛ばした接続があるフィードフォワードニューラルネットワーク(FFNN)やリカレントニューラルネットワーク(RNN)を適用するようにしてもよい。
【0073】
図12は中間層内でノード同士の枝接続や自己接続が存在するとともに、入力層から中間層を飛ばして出力層へ接続する枝が存在するニューラルネットワークであるEcho State Networkの例を示す説明図である。
図12において、中間層のノード同士の枝接続や自己接続は、中間層から中間層への枝接続とみなすことができるため、Echo State Networkは、層単位では
図13のように表すことができる。
【0074】
図14はこの発明の実施の形態8による推論装置を示す構成図であり、
図14において、
図1と同一符号は同一または相当部分を示すので説明を省略する。
中間層記憶部51は例えばRAMやハードディスクなどの記憶媒体からなる中間層記憶装置12で実現されるものであり、中間層の各ノードと入力層又は出力層の各ノードとの接続関係を示すインデックスと、中間層のノードと入力層又は出力層のノードとを接続している各エッジの重みと、中間層の各ノードに与えられているバイアス値とを記憶している。
また、中間層記憶部51は中間層のノード同士の枝接続や自己接続の関係を示すインデックスと、中間層のノード同士の枝接続や自己接続している各エッジの重みと、中間層の各ノードに与えられているバイアス値とを記憶している。
【0075】
中間層活性度算出部52は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている中間層活性度算出回路13で実現されるものであり、
図1の第1中間層活性度算出部5と同様に、中間層記憶部51に記憶されているインデックスを参照して、入力層活性度算出部1により算出された入力層の各ノードでの活性度又は出力層活性度算出部54により算出された出力層の各ノードでの活性度と中間層記憶部51に記憶されている各エッジの重み及びバイアス値の中から、中間層の各ノードと接続関係がある入力層又は出力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した入力層又は出力層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、中間層の各ノードでの活性度を算出する処理を実施する。
また、中間層活性度算出部52は中間層記憶部51に記憶されているインデックスを参照して、中間層における算出済みの各ノードでの活性度と中間層記憶部51に記憶されている各エッジの重み及びバイアス値の中から、中間層における接続先の各ノードと接続関係がある中間層における接続元の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した中間層における接続元の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、中間層における接続先の各ノードでの活性度を算出する処理を実施する。
ここで、中間層における接続先のノードとは、中間層における他のノードと接続されているノード、あるいは、中間層において、自己のノードと接続されているノードを意味する。
また、中間層における接続元のノードとは、接続先のノードと接続されている中間層における他のノード、あるいは、中間層における自己接続のノードを意味する。
【0076】
出力層記憶部53は例えばRAMやハードディスクなどの記憶媒体からなる出力層記憶装置14で実現されるものであり、出力層の各ノードと入力層又は中間層の各ノードとの接続関係を示すインデックス(接続情報)を記憶している。
また、出力層記憶部53は出力層のノードが入力層のノードと接続されていれば、出力層のノードと入力層のノードとを接続している各エッジの重みと、入力層のノードと接続されている出力層のノードに与えられているバイアス値とを記憶している。
また、出力層記憶部53は出力層のノードが中間層のノードと接続されていれば、出力層のノードと中間層のノードとを接続している各エッジの重みと、中間層のノードと接続されている出力層のノードに与えられているバイアス値とを記憶している。
【0077】
出力層活性度算出部54は例えばCPUを実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている出力層活性度算出回路15で実現されるものであり、出力層のノードと接続されているノードが入力層のノードであれば、入力層活性度算出部1により算出された入力層の各ノードでの活性度と出力層記憶部53に記憶されている各エッジの重み及びバイアス値の中から、出力層の各ノードと接続関係がある入力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、出力層のノードと接続されているノードが中間層のノードであれば、中間層活性度算出部52により算出された中間層のノードでの活性度と出力層記憶部53に記憶されている各エッジの重み及びバイアス値の中から、出力層の各ノードと接続関係がある中間層のノードでの活性度と各エッジの重みとバイアス値とを取得する処理を実施する。
また、出力層活性度算出部54は取得した入力層又は中間層のノードでの活性度と各エッジの重みとバイアス値とを用いて、出力層の各ノードでの活性度を算出する処理を実施する。
【0078】
図14では、推論装置の構成要素である入力層活性度算出部1、中間層記憶部51、中間層活性度算出部52、出力層記憶部53及び出力層活性度算出部54のそれぞれが専用のハードウェアで構成されているものを想定しているが、推論装置がコンピュータで構成されていてもよい。
推論装置がコンピュータで構成される場合、中間層記憶部51及び出力層記憶部53を
図3に示すコンピュータのメモリ21上に構成するとともに、入力層活性度算出部1、中間層活性度算出部52及び出力層活性度算出部54の処理内容を記述しているプログラムを
図3に示すコンピュータのメモリ21に格納し、当該コンピュータのプロセッサ22がメモリ21に格納されているプログラムを実行するようにすればよい。
【0079】
次に動作について説明する。
中間層活性度算出部52は、入力層活性度算出部1が上記実施の形態1と同様に入力層の各ノードの活性度を算出すると、中間層記憶部51に記憶されているインデックスを参照して、中間層の各ノードのうち、入力層のノードと接続関係があるノードを確認するとともに、出力層のノードと接続関係があるノードを確認する。
中間層活性度算出部52は、中間層の各ノードのうち、入力層のノードと接続関係があるノードの活性度については、
図1の第1中間層活性度算出部5と同様に、入力層の各ノードの活性度を用いて算出する。
また、中間層の各ノードのうち、出力層のノードと接続関係があるノードの活性度については、出力層活性度算出部54により算出された出力層の活性度を用いて算出する。
中間層活性度算出部52による出力層のノードと接続関係があるノードの活性度の算出方法は、入力層のノードと接続関係があるノードの活性度の算出方法と同様であり、活性度算出対象のノードが接続されているノードが、入力層のノードではなく、出力層のノードである点だけが相違している。
【0080】
中間層活性度算出部52は、入力層又は出力層のノードと接続関係がある中間層のノードの活性度を算出すると、中間層記憶部51に記憶されているインデックスを参照して、中間層の各ノードのうち、接続先のノード(中間層における他のノードと接続されているノード、あるいは、中間層において、自己のノードと接続されているノード)と接続関係がある接続元のノードを確認する。
中間層活性度算出部52は、接続先のノードと接続関係がある接続元のノードを確認すると、中間層における算出済みの各ノードでの活性度と中間層記憶部51に記憶されている各エッジの重み及びバイアス値の中から、中間層における接続先の各ノードと接続関係がある中間層における接続元の各ノードでの活性度と各エッジの重みとバイアス値とを取得する。
中間層における接続元のノードが、入力層又は出力層のノードと接続関係がある中間層のノードであれば、先に説明したように既に算出済みである。このため、入力層又は出力層のノードと接続関係がある中間層のノードに近いノードから順番に、活性度算出対象のノード(接続先のノード)とすればよい。
【0081】
中間層活性度算出部52は、その取得した中間層における接続元の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、中間層における接続先の各ノードでの活性度を算出する。
中間層活性度算出部52による中間層における接続先のノードでの活性度の算出方法は、入力層のノードと接続関係があるノードの活性度の算出方法と同様であり、接続元のノードが、入力層のノードではなく、中間層のノードである点だけが相違している。
【0082】
出力層活性度算出部54は、出力層記憶部53に記憶されているインデックスを参照して、出力層の各ノードが接続されている入力層又は中間層のノードを確認する。
出力層活性度算出部54は、出力層のノードと接続されているノードが入力層のノードであれば、入力層活性度算出部1により算出された入力層の各ノードでの活性度と出力層記憶部53に記憶されている各エッジの重み及びバイアス値の中から、出力層の各ノードと接続関係がある入力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得する。一方、出力層のノードと接続されているノードが中間層のノードであれば、中間層活性度算出部52により算出された中間層のノードでの活性度と出力層記憶部53に記憶されている各エッジの重み及びバイアス値の中から、出力層の各ノードと接続関係がある中間層のノードでの活性度と各エッジの重みとバイアス値とを取得する。
出力層活性度算出部54は、入力層又は中間層のノードでの活性度と各エッジの重みとバイアス値とを取得すると、その取得した入力層又は中間層のノードでの活性度と各エッジの重みとバイアス値とを用いて、出力層の各ノードでの活性度を算出する。
【0083】
以上で明らかなように、この実施の形態8によれば、中間層活性度算出部52が、中間層記憶部51に記憶されているインデックスを参照して、中間層における算出済みの各ノードでの活性度と中間層記憶部51に記憶されている各エッジの重み及びバイアス値の中から、中間層における接続先の各ノードと接続関係がある中間層における接続元の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した中間層における接続元の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、中間層における接続先の各ノードでの活性度を算出するように構成したので、中間層内でノード同士の枝接続や自己接続が存在するニューラルネットワークを適用する場合であっても、推論を行う際の計算量及びメモリ量を削減することができる効果を奏する。
【0084】
また、この実施の形態8によれば、出力層活性度算出部54が、出力層のノードと接続されているノードが入力層のノードであれば、入力層活性度算出部1により算出された入力層の各ノードでの活性度と出力層記憶部53に記憶されている各エッジの重み及びバイアス値の中から、出力層の各ノードと接続関係がある入力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した入力層のノードでの活性度と各エッジの重みとバイアス値とを用いて、出力層の各ノードでの活性度を算出するように構成したので、入力層から中間層を飛ばして出力層へ接続する枝が存在するニューラルネットワークを適用する場合であっても、推論を行う際の計算量及びメモリ量を削減することができる効果を奏する。
【0085】
この実施の形態8では、推論装置が適用するニューラルネットワークがEcho State Networkである例に挙げているが、これは一例に過ぎず、例えば、全結合のリカレントニューラルネットワーク、ホップフィールドネットワーク、ボルツマンマシンなどを適用するものであってもよい。
ただし、この実施の形態8では、いずれのニューラルネットワークを適用する場合でも、一部の層で枝接続のインデックスを保持するものとする。
【0086】
実施の形態9.
上記実施の形態1〜6では、推論装置が適用しているニューラルネットワークがフィードフォワードニューラルネットワーク(FFNN)である例を挙げ、上記実施の形態7,8では、推論装置が適用しているニューラルネットワークがリカレントニューラルネットワーク(RNN)である例を挙げているが、これは一例に過ぎず、推論装置が下記に示すようなニューラルネットワークを適用するものであってもよい。ただし、いずれのニューラルネットワークを適用する場合でも、一部の層で枝接続のインデックスを保持するものとする。
【0087】
例えば、推論装置が適用するニューラルネットワークとして、放射基底関数(RBF)ネットワーク、自己組織化マップ(SOM)、学習ベクトル量子化法(LVQ)、モジュールニューラルネットワーク、スパイキングニューラルネットワーク、動的ニューラルネットワーク、カスケードニューラルネットワーク、階層型時間記憶(HTM)等のFFNNやRNN以外のニューラルネットワークが考えられる。
【0088】
実施の形態10.
上記実施の形態1〜9では、推論装置の学習手法が、データと対応する教師信号を用いる教師あり学習、教師信号のないデータを用いる教師なし学習、あるいは、半教師あり学習である例を挙げているが、推論装置の学習手法が、強化学習であってもよい。
ここで、強化学習とは、ある環境下におけるエージェントが、現在の状態を観測し、取るべき行動を決定するためのモデルを学習する手法である。エージェントは、コンピュータのユーザが連続した操作をしなくても、自律的に情報収集や状況判断を行って適切な処理動作を実行する機能を意味する。
エージェントが行動を選択すると、環境から報酬を得るが、強化学習では、一連の行動で報酬を最大化できるようなポリシーを学習する。
【0089】
強化学習では、現在の状態、あるいは、行動がどのくらい良いかを計る指標として、状態sの価値を表す状態価値関数V(s)や、状態sのときに行動aを選択することで環境から得られる報酬を表す行動価値関数Q(s,a)を用いる。強化学習のアルゴリズムとしては、SarsaやQ学習(Q−learning)等のTD(Temporal Difference:時間差分)学習が用いられる。
推論装置の学習手法が強化学習である場合、状態sを入力として、状態価値関数V(s)や行動価値関数Q(s,a)を出力するニューラルネットワークを学習し、これらを用いてTD学習することになる。即ち、一部の層で枝接続のインデックスを保持するようしたニューラルネットワークを用いて、状態価値関数V(s)や行動価値関数Q(s,a)を計算して、強化学習を行う。
【0090】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
第1中間層活性度算出部(5)が、第1中間層記憶部(2)に記憶されているインデックスを参照して、入力層活性度算出部(1)により算出された入力層の各ノードでの活性度と第1中間層記憶部(2)に記憶されている各エッジの重み及びバイアス値の中から、第1中間層の各ノードと接続関係がある入力層の各ノードでの活性度と各エッジの重みとバイアス値とを取得し、その取得した入力層の各ノードでの活性度と各エッジの重みとバイアス値とを用いて、第1中間層の各ノードでの活性度を算出する。これにより、推論を行う際の計算量及びメモリ量を削減することができる。また、より高い推論精度を得ることができる。