(57)【特許請求の範囲】
【請求項１】
誤り訂正符号の検査行列に基づいて、ノードを有する入力層、中間層および出力層からなる階層型ニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを学習する重み学習部と、
結合されたノード間の重みが前記重み学習部によって学習された重みの値で更新された階層型ニューラルネットワークを用いて分類問題あるいは回帰問題を解く判別処理部とを備える階層型ニューラルネットワーク装置。
【請求項２】
前記誤り訂正符号は、疑似乱数符号、有限幾何的符号、巡回符号、疑似巡回符号、ＬＤＰＣ符号および空間結合符号のいずれかであることを特徴とする請求項１記載の階層型ニューラルネットワーク装置。
【請求項３】
誤り訂正符号の検査行列に基づいて、ノードを有する入力層、複数層の中間層および出力層からなるディープニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを教師なし学習する重み事前学習部と、
前記重み事前学習部が学習した重みを教師あり学習で調整する重み調整部と、
結合されたノード間の重みが前記重み調整部によって調整された重みの値で更新されたディープニューラルネットワークを用いて分類問題あるいは回帰問題を解く判別処理部とを備える階層型ニューラルネットワーク装置。
【請求項４】
前記誤り訂正符号は、疑似乱数符号、有限幾何的符号、巡回符号、疑似巡回符号、ＬＤＰＣ符号および空間結合符号のいずれかであることを特徴とする請求項３記載の階層型ニューラルネットワーク装置。
【請求項５】
ノードを有する入力層、中間層および出力層からなる階層型ニューラルネットワークを学習する判別器学習方法であって、
重み学習部が、
誤り訂正符号の検査行列に基づいて前記階層型ニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、
結合されたノード間の重みを学習し、
学習した重みで前記ノード間の重みの値を更新する判別器学習方法。
【請求項６】
ノードを有する入力層、複数層の中間層および出力層からなるディープニューラルネットワークを学習する判別器学習方法であって、
重み事前学習部が、
誤り訂正符号の検査行列に基づいて前記ディープニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、
結合されたノード間の重みを教師なし学習し、
重み調整部が、
重み事前学習部により事前学習された重みを教師あり学習で調整し、
調整した重みで前記ノード間の重みの値を更新する判別器学習方法。
【請求項７】
請求項５記載の判別器学習方法でノード間の重みの値が更新された階層型ニューラルネットワークを用いた判別を行う判別方法。
【請求項８】
請求項６記載の判別器学習方法でノード間の重みの値が更新されたディープニューラルネットワークを用いた判別を行う判別方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、階層型ニューラルネットワーク装置、判別器学習方法および判別方法に関する。
【背景技術】
【０００２】
周知のようにニューラルネットワークは、学習能力を持ち、非線形性、パターンマッチング性能に優れており、制御、予測、診断等の多くの分野に用いられている。
また、ニューラルネットワークには多くの構造が提案されているが、実用化されたその多くは、階層型、特に３階層型のものがほとんどである。階層型ニューラルネットワークは、通常バックプロパゲーション法（誤差逆伝搬法）と呼ばれるアルゴリズムにより学習し、内部の結合状態（ノード間の重み）が調整される。こうして学習データと同一の入力データを与えると学習データとほぼ同一の出力をする。また、学習データに近い入力を与えると学習データに近い出力をする特徴がある。【０００３】
階層型ニューラルネットワークで複雑な問題を扱う場合、中間層のノード数や層数を増やすことになり、演算量が増加するという課題がある。この課題の解決法としてノード間を疎結合にして演算量を削減する例があり、代表的な特許文献として以下の２件がある。
特許文献１では、複数の入力ノードについて、学習データの最大、最小、平均、標準偏差の統計指標を用いることや学習データの入力ノード間または入力と出力との間の相関係数を用いることによって特徴が似た入力ノード同士のグループを形成し、それらのグループ内で入力ノードと中間ノードを結合して疎結合部分を有する構造としている。
また、特許文献２に記載のニューラルネットワーク構造最適化方法では、任意のノード間の結合を削除することにより構造の異なるニューラルネットワークを複数生成し、それぞれのニューラルネットワークの評価値を算出して評価値の比較判定を行うことで、最適な構造のニューラルネットワークに変更している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−５４２００号公報
【特許文献２】特開平９−９１２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１，２に代表される従来の技術では、判別器学習を行う前に疎結合を形成するための事前学習が必要であり、学習データの変更や修正があるごとに事前学習を行わなければならず、疎結合の形成に多くの時間と演算量を必要としていた。このため判別器学習と判別処理の高速化が図れないという課題があった。【０００６】
この発明は、上記のような課題を解決するためになされたもので、階層型ニューラルネットワークにおいて、学習データに依存せずに疎結合を形成することで判別器学習と判別処理の高速化を図ることができる階層型ネットワーク装置、判別器学習方法および判別方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る階層型ニューラルネットワーク装置は、誤り訂正符号の検査行列に基づいて、ノードを有する入力層、中間層および出力層からなる階層型ニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを学習する重み学習部と、結合されたノード間の重みが重み学習部によって学習された重みの値で更新された階層型ニューラルネットワークを用いて分類問題あるいは回帰問題を解く判別処理部とを備える。
【発明の効果】
【０００８】
この発明によれば、階層型ニューラルネットワークにおいて、学習データに依存せずに疎結合を形成することで判別器学習と判別処理の高速化を図ることができるという効果がある。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１に係る階層型ニューラルネットワーク装置の構成を示すブロック図である。
【図２】実施の形態１における階層型ニューラルネットワークの構造を示す図である。
【図３】従来の階層型ニューラルネットワークの構造を示す図である。
【図４】実施の形態１における重み学習処理を示すフローチャートである。
【図５】疑似乱数符号の検査行列を示す図である。
【図６】ユークリッド幾何的符号の検査行列の行数または列数に対する１の個数と１の割合を示す図である。
【図７】射影幾何的符号の検査行列の行数または列数に対する１の個数と１の割合を示す図である。
【図８】差集合巡回符号の検査行列の行数または列数に対する１の個数と１の割合を示す図である。
【図９】空間結合型符号の検査行列を示す図である。
【図１０】ニューラルネットワークＡ，Ｂにおける入力ノードと中間ノード間の結合数の例を示す図である。
【図１１】この発明の実施の形態２に係る階層型ニューラルネットワーク装置の構成を示すブロック図である。
【図１２】実施の形態２におけるディープニューラルネットワークの構造を示す図である。
【図１３】従来のディープニューラルネットワークの構造を示す図である。
【図１４】実施の形態２における重みの事前学習と調整による重み学習処理を示すフローチャートである。
【図１５】Ｎ＝５とした場合における重みの事前学習と調整による重み学習処理の概要を示す図である。
【図１６】重みの事前学習処理を示すフローチャートである。
【図１７】重みの調整処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、この発明をより詳細に説明するため、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態１．
図１はこの発明の実施の形態１に係る階層型ニューラルネットワーク装置の構成を示すブロック図である。図１において、階層型ニューラルネットワーク装置１は、階層型ニューラルネットワークを用いて判別を行う装置であって、判別器学習部２、重み記憶部３、学習データ記憶部４および教師データ記憶部５を備えて構成される。
なお、階層型ニューラルネットワークは入力層、中間層および出力層からなり、各層は複数のノードを有している。また階層型ニューラルネットワークは、入力層と中間層とのノード間および中間層と出力層とのノード間に任意の重みを設定してノード間の結合状態を調整することにより様々な問題（分類問題あるいは回帰問題）を解くことができる判別器として機能する。
【００１１】
判別器学習部２は、階層型ニューラルネットワークを学習し、学習した階層型ニューラルネットワークを用いた判別を行う。その構成として、重み学習部２０および判別処理部２１を備える。
重み学習部２０は、誤り訂正符号の検査行列に基づいて階層型ニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを学習する。すなわち、重み学習部２０は、判別処理部２１から出力された判別結果と、重み記憶部３から読み出したノード間の重み（判別器の重み）と教師データ記憶部５から読み出した教師データとを入力すると、これらのデータを用いて重み学習を行う。
また、重み学習部２０は、誤り訂正符号の検査行列における行要素に一方の層のノードを割り当て、列要素にもう一方の層のノードを割り当てて、行列要素に１が立ったノード間を結合し、行列要素が０のノード間は結合しない。これにより、学習データを利用することなく、ノード間に疎結合部分を生成することができる。
【００１２】
判別処理部２１は、結合されたノード間の重みが重み学習部２０により学習された重みの値で更新された階層型ニューラルネットワークを用いて分類問題あるいは回帰問題を解く。例えば、判別処理部２１は、重み記憶部３から初期化された重みまたは学習中の重みを入力し、学習データ記憶部４から学習データを入力すると、これらを用いた判別結果を重み学習部２０へ出力する。また、判別処理部２１は、重み記憶部３から学習済みの重みを入力し、判別データを入力すると、これらを用いた判別結果を装置外部のディスプレイなどの伝送装置へ出力する。
【００１３】
判別処理部２１では、階層型ニューラルネットワークにおける入力層と中間層のノード間で学習データまたは判別データが入力信号となり、このノード間の重みが乗算される。この乗算結果を中間層におけるノードでそれぞれ合計したものが、閾値関数によって計算されて出力される。ここで、閾値関数をｆ（）、中間層のｊ番目のノードの閾値関数の出力値をＨｊ、入力層のｉ番目のノードの入力信号をＸｉとし、入力層のｉ番目のノードと中間層のｊ番目のノードとの間の重みをＷｊｉとした場合には、閾値関数の出力値をＨｊは下記式（１）で表せる。
Ｈｊ＝ｆ（ΣＸｉＷｊｉ）      ・・・（１）
【００１４】
また中間層と出力層のノード間では、閾値関数によって計算された出力信号を入力信号とし、このノード間の重みが乗算される。この乗算結果を出力層における各ノードで合計したものが閾値関数によって計算されて、判別結果として出力される。ここで、出力層のｋ番目のノードの閾値関数の出力値をＯｋ、中間層のｊ番目のノードと出力層のｋ番目のノードとの間の重みをＷｋｊとした場合、閾値関数の出力値Ｏｋは下記式（２）で表すことができる。ただし、閾値関数ｆ（）としてはシグモイド関数、ｔａｎｈ関数、ｍａｘ関数などが挙げられる。また、ノード間の重みの乗算は、ノード間の結合がある部分に対してのみ行う。
Ｏｋ＝ｆ（ΣＸｊＷｋｊ）      ・・・（２）
【００１５】
重み記憶部３は、階層型ニューラルネットワークにおけるノード間の重みを記憶する記憶部である。重み記憶部３には、重みの初期化処理時には階層型ニューラルネットワークの全てのノード間の重みの初期値が記憶され、疎結合の生成時には結合のあるノード間の重み学習値が記憶される。判別処理部２１は、各ノードおよびそのノード間の重みの値を重み記憶部３から読み出すことで階層型ニューラルネットワークを構築し、これを用いて分類問題あるいは回帰問題を解く。
【００１６】
学習データ記憶部４は、学習データを記憶する記憶部である。学習データとは、予め正常と異常が判別された状態情報および特徴量を示すデータである。学習データには、教師データが既知の場合（教師あり学習）と、判別データに対して望ましい教師データが未知の場合（教師なし学習）とがある。
教師データ記憶部５は、教師データを記憶する記憶部である。教師データとは、判別データに対して望ましい出力データである。また、判別データは判別対象のデータである。
【００１７】
なお、重み学習部２０と判別処理部２１は、例えば、この実施の形態１に特有な処理が記述されたプログラムをマイクロコンピュータが実行することで、ハードウェアとソフトウェアとが協働した具体的な手段として実現することができる。
重み記憶部３、学習データ記憶部４および教師データ記憶部５は、例えば、階層型ニューラルネットワーク装置１として機能するコンピュータに搭載されているハードディスクドライブ（ＨＤＤ）装置、ＵＳＢメモリ、記憶メディア再生装置で再生可能な記憶メディア（ＣＤ、ＤＶＤ、ＢＤ）に構築される。
【００１８】
図２は、実施の形態１における階層型ニューラルネットワークの構造を示す図であり、図３は従来の階層型ニューラルネットワークの構造を示す図である。図３に示すように、従来の階層型ニューラルネットワークは、入力層と中間層のノード間が全て結合し、中間層と出力層のノード間が全て結合している。これに対し、実施の形態１では、図２に示すように、入力層と中間層のノード間の結合および中間層と出力層のノード間の結合のうち少なくとも一方に疎結合部分が形成される。
【００１９】
次に動作について説明する。
図４は、実施の形態１における重み学習処理を示すフローチャートであり、この図４に沿って重み学習部２０による重み学習の詳細を述べる。
まず、重み学習部２０は、階層型ニューラルネットワークの各層における全てのノード間の重みを初期化する（ステップＳＴ１）。具体的には、各層における全てのノード間の重みに対して初期値を−０．５〜＋０．５の乱数で与える。
【００２０】
次に、重み学習部２０は、誤り訂正符号の検査行列に基づいて階層型ニューラルネットワークにおける一部のノード間にのみ結合を行って疎結合を生成する（ステップＳＴ２）。誤り訂正符号の検査行列としては、通常の階層型ニューラルネットワークと比べて学習誤差を同等または小さくするものであり、かつ、疎な行列とする。例えば、疑似乱数符号、有限幾何的符号、巡回符号、疑似巡回符号、低密度パリティ検査符号（ＬＤＰＣ）符号および空間結合符号のいずれかが挙げられる。
【００２１】
続いて、重み学習部２０は、学習誤差を評価する評価関数の値が小さくなるように、疎結合部分で結合されたノード間の重みの修正量を算出する（ステップＳＴ３）。
なお、評価関数Ｊは、例えば下記式（３）で表すことができる。ただし、ノードの出力信号をｏ、教師データをｔとする。
Ｊ＝１／２・（ｏ−ｔ）２      ・・・（３）
【００２２】
この後、重み学習部２０は、ステップＳＴ３で求めた修正量で、結合されたノード間の重みの値を従前の値から更新する（ステップＳＴ４）。
ノード間の重みの更新が終了すると、重み学習部２０は、重み学習の終了条件を満たしたか否かを確認する（ステップＳＴ５）。ここで、終了条件としては、例えば、教師データと判別処理部２１から入力した判別結果との誤差を算出する評価関数の値が予め定めた閾値以下となる場合が考えられる。また、学習回数が閾値回数以上となった場合であってもよい。
【００２３】
終了条件を満たし重み学習を終了すべきと判断した場合（ステップＳＴ５；ＹＥＳ）、重み学習部２０は重み学習を終了する。一方、終了条件を満たしていない場合（ステップＳＴ５；ＮＯ）、ステップＳＴ３の処理に戻り、上述した重み学習を繰り返す。
これにより、判別処理部２１は、疎結合部分で結合されたノード間の重みが重み学習部２０により学習された重みの値で更新された階層型ニューラルネットワークを用いて分類問題あるいは回帰問題を解くことができる。
【００２４】
次に、図５に示す疑似乱数符号の検査行列に基づいて、入力層と中間層のノード間に疎結合部分を生成する場合の一例を示す。図５の行列は、各行、各列に１が４個ずつある、１５×１５の行列となっている。これは、各列の要素に割り当てられた入力層のノード（以下、入力ノードと記載する）ｘ１，ｘ２，・・・，ｘ１５と各行の要素に割り当てられた中間層のノード（以下、中間ノードと記載する）ｈ１，ｈ２，・・・，ｈ１５とがそれぞれ１５個あり、行列要素の値が１である部分が結合するものとして１個の中間ノードに４個の入力ノードが結合することを示している。例えば、中間ノードｈ１には、行列の要素に１が立った入力ノードｘ１，ｘ３，ｘ９，ｘ１０が結合する。
【００２５】
中間ノードまたは出力ノード（出力層のノード）の数が少ない場合（例えば２１個以下）、ユークリッド幾何的符号あるいは射影幾何的符号などの有限幾何的符号の検査行列、または、差集合巡回符号などの巡回符号の検査行列に基づいて、上述のように行列要素に１が立ったノード間で結合を行うと、大幅な演算量の削減が期待される。これは、図６に示すユークリッド幾何的符号の検査行列、図７に示す射影幾何的符号の検査行列、図８に示す差集合巡回符号の検査行列における、列数または行数に対する１の個数を示した結果から明らかなように、ノード数に対応する列数または行数が２１個以下の場合において、列数または行数に対して１の個数が格段に少なく、ノード間に疎結合部分を形成することができるためである。
なお、巡回符号は符号語を巡回シフトして生成した符号であり、規則的な配列となっている。このため、時系列データの学習判別に適しており、またハードウェア実装する場合には、他の符号に比べて設計が容易に行えるという特徴がある。
【００２６】
また、中間ノードまたは出力ノードの数が多い場合（例えば２１個を超える）においては、ＬＤＰＣ符号の検査行列、空間結合型符号の検査行列および疑似巡回符号の検査行列のいずれかに基づいてノード間の結合を行うと、大幅な演算量の削減が期待できる。これは、ＬＤＰＣ符号、空間結合型符号、疑似巡回符号の検査行列においては、行数や列数に依存せず、行に含まれる１の個数や列に含まれる１の個数が、平均３〜６個となるためである。例えば、行数を１００００とした場合においても、行に含まれる１の個数の平均が３〜６個となり、ノード間の結合数の平均が３〜６個と疎結合になる。このため、大幅に演算量を削減することができる。特に、図９に示す空間結合型符号の検査行列は、１が帯状に配列した行列であるため、制御のし易さの観点よりも最大演算量の削減効果が期待できる。
【００２７】
上述したように、誤り訂正符号の検査行列に基づいてノード間を疎結合にすることで、判別性能を維持しつつ、高速に判別器学習および判別処理を行うことができる。
図１０は、ニューラルネットワークＡ，Ｂにおける入力ノードと中間ノード間の結合数の例を示す図である。図１０において、ニューラルネットワークＡが、全てのノード間が結合された通常の階層型ニューラルネットワークであり、ニューラルネットワークＢは、本発明により疎結合をノード間に形成した階層型ニューラルネットワークである。
ニューラルネットワークＢでは、１つの中間ノードに対して４個の入力ノードが結合する場合を示している。このように、実施の形態１では、ニューラルネットワークＡに対して、入力ノードと中間ノードとがそれぞれ５０個である場合は２／２５、１００個である場合は１／２５、１０００個の場合は１／２５０に結合を削減することができる。これに伴って入力ノードと中間ノードの間の積和演算を削減できるため、判別器学習および判別処理を高速化することが可能である。
また、学習データに依存せず疎結合を生成するため、学習データの変更や修正があった場合においても、事前学習を行う手間を省くことができる。
【００２８】
以上のように、この実施の形態１によれば、誤り訂正符号の検査行列に基づいて、ノードを有する入力層、中間層および出力層からなる階層型ニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを学習する重み学習部２０と、結合されたノード間の重みが重み学習部２０によって学習された重みの値で更新された階層型ニューラルネットワークを用いて分類問題あるいは回帰問題を解く判別処理部２１とを備える。このように階層型ニューラルネットワークにおいて学習データに依存せずに疎結合を形成することにより判別器学習および判別処理の高速化を図ることができる。
【００２９】
実施の形態２．
上記実施の形態１は、一般的な３階層型のニューラルネットワークを用いた判別器学習と判別処理を高速化する場合を示した。この実施の形態２では、階層型ニューラルネットワークの発展形であって、近年注目されているディープニューラルネットワークを用いた判別器学習と判別処理を高速化する場合について述べる。
【００３０】
図１１は、この発明の実施の形態２に係る階層型ニューラルネットワーク装置の構成を示すブロック図である。図１１に示す階層型ニューラルネットワーク装置１Ａは、ディープニューラルネットワークを用いて分類問題あるいは回帰問題を解く装置であり、判別器学習部２Ａ、重み記憶部３、学習データ記憶部４および教師データ記憶部５を備えて構成される。ディープニューラルネットワークは、入力層、複数層の中間層および出力層からなり、各層は複数のノードを有している。また、ディープニューラルネットワークは、入力層と中間層とのノード間および中間層と出力層とのノード間に任意の重みを設定してノード間の結合状態を調整することにより様々な問題（分類問題あるいは回帰問題）を解くことができる判別器として機能する。
【００３１】
図１２は、実施の形態２におけるディープニューラルネットワークの構造を示す図であり、図１３は従来のディープニューラルネットワークの構造を示す図である。図１３に示すように、従来のディープニューラルネットワークは、入力層と中間層のノード間が全て結合し、中間層同士のノード間が全て結合し、中間層と出力層のノード間が全て結合している。これに対し、実施の形態２では、図１２に示すように、入力層と中間層のノード間の結合、中間層同士のノード間の結合および中間層と出力層のノード間の結合のうち少なくとも一方に疎結合部分が形成される。
【００３２】
判別器学習部２Ａは、ディープニューラルネットワークを学習し、学習したディープニューラルネットワークを用いて分類問題あるいは回帰問題を解く。その構成として、判別処理部２１、重み事前学習部２２および重み調整部２３を備える。
重み事前学習部２２は、誤り訂正符号の検査行列に基づいてディープニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを教師なし学習する。例えば、重み事前学習部２２は、初期化されたノード間の重みおよび学習データが入力されると、重みの事前学習を行う。
また、重み事前学習部２２は、誤り訂正符号の検査行列における行要素に一方の層のノードを割り当て、列要素にもう一方の層のノードを割り当てて、行列要素に１が立ったノード間を結合し、行列要素が０のノード間は結合しない。これにより、学習データを利用することなく、ノード間に疎結合部分を生成することができる。
重み調整部２３は、重み事前学習部２２が学習した重みを教師あり学習で微調整する。すなわち、重み調整部２３は、結合されたノード間にのみ重みの微調整を行う。
【００３３】
実施の形態２における判別処理部２１は、重み記憶部３から事前学習された重みまたは学習中の重みを入力し、学習データ記憶部４から学習データを入力すると、これらを用いた判別結果を重み調整部２３へ出力する。また、判別処理部２１は、重み記憶部３から学習済みの重みを入力し、判別データを入力すると、これらを用いた判別結果を装置外部のディスプレイなどの伝送装置へ出力する。
【００３４】
判別処理部２１では、ディープニューラルネットワークにおける入力層と第１層目の中間層のノード間では学習データまたは判別データが入力信号となり、このノード間の重みが乗算される。この乗算結果を第１層目の中間層における中間ノードでそれぞれ合計したものが、閾値関数によって計算されて出力される。ここで、閾値関数をｆ（）、第１層目の中間層のｊ番目の中間ノードの閾値関数の出力値をＨ１，ｊ、ｉ番目の入力ノードの入力信号をＸｉとし、ｉ番目の入力ノードと第１層目の中間層のｊ番目の中間ノードとの間の重みをＷ１，ｊ，ｉとした場合には、閾値関数の出力値をＨ１，ｊは下記式（４）で表せる。
Ｈ１，ｊ＝ｆ（ΣＸｉＷ１，ｊ，ｉ）      ・・・（４）
【００３５】
また、第ｎ−１層目（ｎは２以上の整数）の中間層のｊ番目の中間ノードと第ｎ層目の中間層のｍ番目の中間ノードとの間では、第ｎ−１層目の中間ノードの閾値関数によって計算された出力信号を入力信号とし、このノード間の重みが乗算される。この乗算結果を第ｎ層目の中間層における各中間ノードで合計したものが、閾値関数によって計算されて出力される。ここで、第ｎ−１層目の中間層のｊ番目の中間ノードの閾値関数の出力値をＨｎ−１，ｊ、第ｎ層目の中間層のｍ番目の中間ノードの閾値関数の出力値をＨｎ，ｍ、第ｎ−１層目の中間層のｊ番目の中間ノードと第ｎ層目の中間層のｍ番目の中間ノードとの間の重みをＷｎ，ｍ，ｎ−１，ｊとした場合、閾値関数の出力値Ｈｎ，ｍは、下記式（５）で表すことができる。
Ｈｎ，ｍ＝ｆ（ΣＨｎ−１，ｊＷｎ，ｍ，ｎ−１，ｊ）      ・・・（５）
【００３６】
中間ノードと出力ノードの間では、中間ノードの閾値関数によって計算された出力信号を入力信号とし、このノード間の重みが乗算される。この乗算結果を出力層における各出力ノードで合計したものが閾値関数によって計算されて判別結果として出力される。
ここで、出力層のｋ番目の出力ノードの閾値関数の出力値をＯｋ、第Ｎ−１層目の中間層のｊ番目の中間ノードと出力層のｋ番目の出力ノードとの間の重みをＷｋ，Ｎ−１，ｊとした場合、閾値関数の出力値Ｏｋは下記式（６）で表すことができる。
ただし、閾値関数ｆ（）としてはシグモイド関数、ｔａｎｈ関数、ｍａｘ関数などが挙げられる。また、ノード間の重みの乗算はノード間の結合がある部分に対してのみ行う。
Ｏｋ＝ｆ（ΣＨＮ−１，ｊＷｋ，Ｎ−１，ｊ）      ・・・（６）
【００３７】
なお、判別処理部２１、重み事前学習部２２および重み調整部２３は、例えば、実施の形態２に特有な処理が記述されたプログラムをマイクロコンピュータが実行することで、ハードウェアとソフトウェアとが協働した具体的な手段として実現することができる。
【００３８】
次に動作について説明する。
図１４は、実施の形態２における重み学習処理を示すフローチャートである。
まず、重み事前学習部２２は、ディープニューラルネットワークの各層における全てのノード間の重みを初期化する（ステップＳＴ１ａ）。具体的には、実施の形態１と同様に、各層の全てのノード間の重みに対して初期値を−０．５〜＋０．５の乱数で与える。
【００３９】
次に、重み事前学習部２２は、誤り訂正符号の検査行列に基づいてディープニューラルネットワークにおける一部のノード間に結合を行って、疎結合を生成する(ステップＳＴ２ａ）。誤り訂正符号の検査行列としては、通常のディープニューラルネットワークと比べて学習誤差を同等または小さくするものであり、かつ、疎な行列とする。例えば、疑似乱数符号、有限幾何的符号、巡回符号、疑似巡回符号、ＬＤＰＣ符号および空間結合符号のいずれかが挙げられる。
【００４０】
続いて、重み事前学習部２２は、図１５に示すように、ディープニューラルネットワークをＮ層（Ｎは整数）とした場合において、第Ｎ−１層までの結合があるノード間の重み（Ｗ１，Ｗ２，・・・，ＷＮ−２）の事前学習を行う（ステップＳＴ３ａ）。
この事前学習では、まず第１層と第２層の２層構造において、第１層と第２層のノード間の重みＷ１を教師なし学習する。次に第２層と第３層の２層構造において、重みＷ１の教師なし学習で第２層のノードから出力された信号を入力信号として、第２層と第３層のノード間の重みＷ２を教師なし学習する。この処理を第Ｎ−２層と第Ｎ−１層のノード間の重みＷＮ−２が事前学習されるまで繰り返す（図１５参照、Ｎ＝５とした場合）。
【００４１】
図１６を用いて重みの事前学習の詳細を説明する。
まず、重み事前学習部２２は、第２層のノードと第３層以上のノードの間の重みを事前学習する際、前段の事前学習で出力された信号を入力信号に初期設定する（ステップＳＴ１ｂ）。次に、重み事前学習部２２は、対数尤度が増加するように、結合されたノード間における重みの修正量を算出する（ステップＳＴ２ｂ）。
続いて、重み事前学習部２２は、算出した重みの修正量で、結合されたノード間の重みの値を更新して修正する（ステップＳＴ３ｂ）。
【００４２】
ノード間の重みの更新が終了すると、重み事前学習部２２は、現在の学習対象層における重み事前学習の終了条件を満たしたか否かを確認する（ステップＳＴ４ｂ）。ここで、終了条件としては、例えば学習回数が閾値回数以上となった場合が考えられる。
現在の学習対象層の終了条件を満たし重み事前学習を終了すべきと判断した場合（ステップＳＴ４ｂ；ＹＥＳ）、重み事前学習部２２は、ステップＳＴ５ｂの処理へ移行する。
一方、終了条件を満たしていない場合（ステップＳＴ４ｂ；ＮＯ）、ステップＳＴ２ｂの処理に戻り、上述した重み事前学習を繰り返す。
【００４３】
ステップＳＴ５ｂにおいて、重み事前学習部２２は、ディープニューラルネットワークをＮ層とした場合に、第Ｎ−１層までの全ての層で結合されたノード間の重みの事前学習が完了したか否かを確認する。全層の重み事前学習が終了していない場合（ステップＳＴ５ｂ；ＮＯ）、ステップＳＴ１ｂの処理に戻り、次の層間（さらに上方の層間）を学習対象として上述した重みの事前学習が行われる。また、全層の重み事前学習が終了していれば（ステップＳＴ５ｂ；ＹＥＳ）、重み事前学習部２２は事前学習を終了する。ここで、ディープニューラルネットワークがＮ層の場合、Ｗ１からＷＮ−２のＮ−２個の重みの事前学習が行われる。
【００４４】
図１４の説明に戻る。
重み事前学習部２２による重みの事前学習が完了すると、重み調整部２３は、重み事前学習部２２が事前学習した重みを教師あり学習によって微調整して最適化を行う（ステップＳＴ４ａ）。以下、図１７を用いて重みの微調整の詳細を説明する。
まず、重み調整部２３は、上記式（３）に示したような学習誤差を評価する評価関数Ｊの値が小さくなるように、教師データ記憶部５から読み出した教師データを利用した教師あり学習によって重み事前学習部２２が事前学習したノード間の重みを最適化して重みの修正量を算出する（ステップＳＴ１ｃ）。
【００４５】
次に、重み調整部２３は、ステップＳＴ１ｃで求めた修正量で、重み事前学習部２２が事前学習したノード間の重みの値を更新する（ステップＳＴ２ｃ）。
ノード間の重みの更新が終了すると、重み調整部２３は、重みの微調整の終了条件を満たしたか否かを確認する（ステップＳＴ３ｃ）。ここで、終了条件としては、例えば、教師データと判別処理部２１から入力した判別結果との誤差を算出する評価関数の値が予め定めた閾値以下となる場合が考えられる。また、学習回数が閾値回数以上となった場合であってもよい。
【００４６】
終了条件を満たし重みの微調整を終了すべきと判断した場合（ステップＳＴ３ｃ；ＹＥＳ）、重み調整部２３は重みの微調整を終了する。一方、終了条件を満たしていない場合（ステップＳＴ３ｃ；ＮＯ）、ステップＳＴ１ｃの処理に戻り、上述した重みの微調整を繰り返す。これにより、判別処理部２１は、疎結合部分で結合されたノード間の重みを重み事前学習部２２により事前学習され、重み調整部２３により最適化調整された重みの値で更新されたディープニューラルネットワークを用いて分類問題あるいは回帰問題を解くことができる。
【００４７】
ディープニューラルネットワークにおいて、中間ノードまたは出力ノードの数が少ない場合（例えば２１個以下）、実施の形態１と同様に、ユークリッド幾何的符号あるいは射影幾何的符号などの有限幾何的符号の検査行列、または、差集合巡回符号などの巡回符号の検査行列において、行要素に一方の層のノードを割り当て列要素にもう一方の層のノードを割り当てて、行列要素に１が立ったノード間で結合を行うと、大幅な演算量の削減が期待される。これは、図６に示したユークリッド幾何的符号の検査行列、図７に示した射影幾何的符号の検査行列、図８に示した差集合巡回符号の検査行列における、列数または行数に対する１の個数を示した結果から明らかなように、ノード数に対応する列数または行数が２１個以下の場合において列数または行数に対して１の個数が格段に少なく、ノード間に疎結合部分を形成することができるためである。
なお、巡回符号は符号語を巡回シフトして生成した符号であり、規則的な配列となっている。このため、時系列データの学習判別に適しており、またハードウェア実装する場合には、他の符号に比べて設計が容易に行えるという特徴がある。
【００４８】
また、ディープニューラルネットワークにおいて、中間ノードまたは出力ノードの数が多い場合（例えば２１個を超える）は、実施の形態１と同様にＬＤＰＣ符号の検査行列、空間結合型符号の検査行列および疑似巡回符号の検査行列のいずれかに基づいてノード間の結合を行うと、大幅な演算量の削減が期待できる。これは、ＬＤＰＣ符号、空間結合型符号、疑似巡回符号の検査行列においては、行数や列数に依存せず、行に含まれる１の個数や列に含まれる１の個数が平均３〜６個となるためである。例えば、行数を１００００とした場合においても、行に含まれる１の個数の平均が３〜６個となり、ノード間の結合数の平均が３〜６個と疎結合になる。このため、大幅に演算量を削減することができる。特に、図９に示した空間結合型符号の検査行列は、行列要素の１が帯状に配列した行列であるため、制御のし易さの観点よりも最大演算量の削減効果が期待できる。
【００４９】
以上のように、この実施の形態２によれば、誤り訂正符号の検査行列に基づいて、ノードを有する入力層、複数層の中間層および出力層からなるディープニューラルネットワークにおける一部のノード間に結合を行って疎結合部分を生成し、結合されたノード間の重みを教師なし学習する重み事前学習部２２と、重み事前学習部２２が学習した重みを教師あり学習で調整する重み調整部２３と、結合されたノード間の重みが重み調整部２３によって調整された重みの値で更新されたディープニューラルネットワークを用いて分類問題あるいは回帰問題を解く判別処理部２１とを備える。このようにディープニューラルネットワークにおいて疎結合を形成することにより判別器学習および判別処理の高速化を図ることができる。特に、ディープニューラルネットワークは、実施の形態１で示した階層型ニューラルネットワークに比べて中間層の層数が多く疎結合部分を形成可能な箇所が多いため、ノード間の積和演算の削減効果が大きい。また、学習データに依存せず疎結合を生成するため、学習データの変更や修正があった場合の事前学習を行う手間が省くことができる。
【００５０】
なお、本発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【産業上の利用可能性】
【００５１】
この発明に係る階層型ニューラルネットワーク装置は、階層型ニューラルネットワークにおいて学習データに依存せずに疎結合を形成することにより判別器学習および判別処理の高速化を図ることができるので、各種の制御、予測、診断に関する情報処理に適用可能である。
【符号の説明】
【００５２】
１，１Ａ  階層型ニューラルネットワーク装置、２，２Ａ  判別器学習部、３  重み記憶部、４  学習データ記憶部、５  教師データ記憶部、２０  重み学習部、２１  判別処理部、２２  重み事前学習部、２３  重み調整部。
【図１】
0005937284.tif 000002
【図２】
0005937284.tif 000003
【図３】
0005937284.tif 000004
【図４】
0005937284.tif 000005
【図５】
0005937284.tif 000006
【図６】
0005937284.tif 000007
【図７】
0005937284.tif 000008
【図８】
0005937284.tif 000009
【図９】
0005937284.tif 000010
【図１０】
0005937284.tif 000011
【図１１】
0005937284.tif 000012
【図１２】
0005937284.tif 000013
【図１３】
0005937284.tif 000014
【図１４】
0005937284.tif 000015
【図１５】
0005937284.tif 000016
【図１６】
0005937284.tif 000017
【図１７】
0005937284.tif 000018