(57)【特許請求の範囲】
【請求項１】
ニューラルネットワークの構造を最適化する方法であって、
（１）ニューラルネットワークの初期構造を第１のニューラルネットワークとして入力するステップと、
（２）与えられた第１のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第１のニューラルネットワークのコストが最小の第１のコストとなるまで学習を行うステップと、
（３）前記第１のニューラルネットワークからランダムにユニットを削除して第２のニューラルネットワークを生成するステップと、
（４）前記第２のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第２のニューラルネットワークのコストが最小の第２のコストとなるまで学習を行うステップと、
（５）前記第１のコストと前記第２のコストとを比較するステップと、
（６）前記第２のコストが前記第１のコストより小さいときには、前記第２のニューラルネットワークを前記第１のニューラルネットワーク、前記第２のコストを前記第１のコストとしてステップ（３）〜（５）を行い、前記第１のコストが前記第２のコストより小さいときには、ステップ（３）において異なる第２のニューラルネットワークを生成してステップ（４）（５）を行うステップと、
（７）ステップ（６）において、前記第１のコストの方が前記第２のコストより小さいとの判断が所定回数連続したときに、前記第１のニューラルネットワークをニューラルネットワークの最適構造と決定するステップと、
（８）前記ニューラルネットワークの最適構造を出力するステップと、
を備えるニューラルネットワーク最適化方法。
【請求項２】
請求項１に記載のニューラルネットワーク最適化方法において、
（９）ステップ（７）で決定した前記第１のニューラルネットワークをニューラルネットワークの最適構造の第１の候補とし、
（１０）前記第１の候補が得られるまでの過程において前記ステップ（３）で生成された第２のニューラルネットワークのうちのいずれかを選択し、当該第２のニューラルネットワークの重みを乱数によって初期化したニューラルネットワークを初期構造とし、ステップ（２）〜（８）を行い、ニューラルネットワークの最適構造の第２の候補を決定するステップと、
（１１）前記第１の候補と前記第２の候補のコストを比較するステップと、
（１２）前記第２の候補のコストの方が前記第１の候補のコストより小さい場合には前記第２の候補を前記第１の候補としてステップ（１０）（１１）を行い、前記第１の候補のコストの方が前記第２の候補のコストより小さい場合には、ステップ（１０）（１１）を行い、
（１３）ステップ（１２）において前記第１の候補のコストの方が前記第２の候補のコストより小さいとの判断が所定回数連続したときに、前記第１の候補をニューラルネットワークの最適構造と決定し、
（１４）前記ニューラルネットワークの最適構造を出力するステップと、
を備えるニューラルネットワーク最適化方法。
【請求項３】
ステップ（３）において、前記第１のニューラルネットワークを構成する各ユニットを所定の確率で削除する請求項１または２に記載のニューラルネットワーク最適化方法。
【請求項４】
ステップ（３）において、複数のユニットを同時に削除する請求項１乃至３のいずれかに記載のニューラルネットワーク最適化方法。
【請求項５】
前記ニューラルネットワークは、フィルタによる畳み込み演算とサブサンプリングを介して接続されるユニットを有する畳み込みニューラルネットワークであって、
ステップ（３）において、前記第１のニューラルネットワークからランダムにユニットまたはフィルタを削除して第２のニューラルネットワークを生成する請求項１乃至４のいずれかに記載のニューラルネットワーク最適化方法。
【請求項６】
ニューラルネットワークの構造を最適化する装置であって、
ニューラルネットワークの初期構造を入力する入力部と、
ニューラルネットワークの学習を行うための学習データおよび評価データを記憶した記憶部と、
ニューラルネットワークの最適化の演算を行う演算処理部と、
前記演算処理部による演算により得られたニューラルネットワークを出力する出力部と、
を備え、
前記演算処理部は、
入力されたニューラルネットワークに対し、前記評価データを用いて計算されるコストが最小のコストとなるまで、前記学習データを用いて学習を行う重み最適化部と、
入力されたニューラルネットワークからランダムにユニットを削除して新たな構造のニューラルネットワークを生成するユニット削除部と、を備え、
前記ユニット削除部が前記重み最適化部にて学習を行ったニューラルネットワークからランダムにユニットを削除して新たな構造のニューラルネットワークを生成し、前記重み最適化部が新たな構造のニューラルネットワークの学習を行う処理を繰り返し、前記評価データを用いて計算されるニューラルネットワークのコストを低下させたニューラルネットワークを求めるニューラルネットワーク最適化装置。
【請求項７】
ニューラルネットワークの構造を最適化するためのプログラムであって、コンピュータに、
（１）ニューラルネットワークの初期構造を第１のニューラルネットワークとして入力するステップと、
（２）与えられた第１のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第１のニューラルネットワークのコストが最小の第１のコストとなるまで学習を行うステップと、
（３）前記第１のニューラルネットワークからランダムにユニットを削除して第２のニューラルネットワークを生成するステップと、
（４）前記第２のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第２のニューラルネットワークのコストが最小の第２のコストとなるまで学習を行うステップと、
（５）前記第１のコストと前記第２のコストとを比較するステップと、
（６）前記第２のコストが前記第１のコストより小さいときには、前記第２のニューラルネットワークを前記第１のニューラルネットワーク、前記第２のコストを前記第１のコストとしてステップ（３）〜（５）を行い、前記第１のコストが前記第２のコストより小さいときには、ステップ（３）において異なる第２のニューラルネットワークを生成してステップ（４）（５）を行うステップと、
（７）ステップ（６）において、前記第１のコストの方が前記第２のコストより小さいとの判断が所定回数連続したときに、前記第１のニューラルネットワークをニューラルネットワークの最適構造と決定するステップと、
（８）前記ニューラルネットワークの最適構造を出力するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、教師あり学習におけるニューラルネットワークの学習に関する。ニューラルネットワークは、教師あり学習によって、クラス分類や任意の関数の関数近似を行うことができる。本発明は、特にニューラルネットワークの性能と計算時間を左右するパラメタであるユニット数の自動決定に関する。また、画像認識によく使われる畳み込みニューラルネットワーク(CNN: Convolutional Neural Networks)のフィルタ数の自動決定にも関連する。
【背景技術】
【０００２】
従来から、ニューラルネットワークの構造を構築する方法が研究されている。非特許文献１に記載された方法は、多層ニューラルネットワークの各隠れ層のユニットを１つずつ除外することで最適なネットワーク構造を構築する方法である。最初のネットワーク構造は手で与える必要がある。初期ネットワークを充分に訓練した状態で、次の要領でユニットを削減する。すなわち、訓練データに対し、同じ層の異なるユニットの出力同士の相関を計算し、相関が最も高いユニットを１つ除外する。ユニットの除外の後、それ以外の重みの学習を再開する。再学習とユニットの除外をコスト関数が上昇に転じるまで繰り返す。
【０００３】
非特許文献２に記載された方法は、多層ニューラルネットワークの各隠れ層または入力層のユニットを１つずつ除外することで最適なネットワーク構造を構築する方法である。最初のネットワーク構造は手で与える必要がある。初期ネットワークを、訓練データに対するコスト関数がある値以下になるまで訓練した状態で、次の要領に従いユニットを削減する。訓練データに対し、着目するユニットを仮に除外したときのコスト関数を記録し、これを除外可能なすべてのユニットについて繰り返す。このうちコスト関数を最小にするものを選択し、そのユニットを除外する。ユニットの除外の後、それ以外の重みの学習を再開する。再学習とユニットの除外をコスト関数が上昇に転じるまで繰り返す。
【０００４】
非特許文献３に記載された方法は、指標の計算が近似式で表現されていることを除き、非特許文献２に記載された方法と同じである。
【０００５】
非特許文献４に記載された方法は、多層ニューラルネットワークの重みパラメタを１つずつ削減することで最適なネットワーク構造を構築するものである。コスト関数の二次微分に基づいた指標を評価することにより、不要な重みパラメタを特定する。ユニットの代わりに重みパラメタを除外する点を除けば上の３つの手法と同じ手順である。
【０００６】
また、特許文献１には、上記とは逆に、過学習状態が発生している場合、または、初期学習最大回数以内に多層ニューラルネットワーク手段が収束しない場合には、中間層出力ユニット数を増やしていき、中間層出力ユニット数を最適にする発明が記載されている。
【０００７】
非特許文献５には、畳み込みニューラルネットワーク(CNN: Convolutional Neural Networks)を使った画像認識手法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許３７５７７２２号
【非特許文献】
【０００９】
【非特許文献１】X. Liang, “Removal of Hidden Neurons by Crosswise Propagation”, Neural Information Processing- Letters and Reviews, Vol. 6, No 3, 2005.
【非特許文献２】K. Suzuki, I. Horiba, and N. Sugie, “A Simple Neural Network Pruning Algorithm with Application to Filter Synthesis”, Neural Processing Letters 13: 44-53, 2001.
【非特許文献３】M. C. Mozer and P. Smolensky, “Skeletonization: A Technique for Trimming the Fat from a Network via Relevance Assessment”, Advances in Neural Information Processing Systems (NIPS), pp. 107-115, 1988.
【非特許文献４】Y. LeCun, J. S. Denker, and S. A. Solla, “Optimal Brain Damage”, Advances in Neural Information Processing Systems (NIPS), pp. 598-605, 1990.
【非特許文献５】Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel, “Handwritten Digit Recognition with a Back-Paopagation Network”, Advances in Neural Information Processing Systems (NIPS), pp. 396-404, 1990.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
教師データが与えられたとき、どのような構造のニューラルネットワークが最良の汎化能力を与えるかを説明する理論を人類は手にしていない。非特許文献１〜３にあるような発見的方法がいくつか提案されてきた。これらに共通するものは、比較的多数の重みパラメタを持つネットワークを最初に訓練し、汎化能力が良くなると期待できる何らかの指標に従ってユニットを減らしていく方法である。非特許文献２、非特許文献３で用いられている指標は、ユニットを除去したときのニューラルネットワークのコストを最も小さくするユニットを除去するというものである。ユニットの除去後は、残った重みをそのまま引き継いで学習を再開する。なお、重みを引き継ぐことが、経験的に良い性能を与えることが知られている。これら「枝刈り」と呼ばれる方法は、枝刈りをしない方法と比較して良い汎化能力を持つことが多く、また計算時間が短縮される利点がある。しかしながら、学習用データにおいてコスト関数に対する寄与度の低いユニットを除外することは、必ずしも汎化能力を上昇させる保証はない。なぜなら、ユニットを削減する前と後とでは、コスト関数そのものが変化しており、ユニットの除去前の重みが、ユニット除去後の重みの初期値として適切でない可能性があるためである。
【００１１】
ＣＮＮにおいては各フィルタの要素が重みパラメタとなるが、従来、非特許文献４にあるように適応するフィルタの枚数は手で決められており、汎化能力向上の観点でフィルタの枚数を自動決定する方法は存在しなかった。
【００１２】
そこで、本発明は、汎化能力が高く、かつ、構造が簡単なニューラルネットワークの構造を求める方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明のニューラルネットワーク最適化方法は、ニューラルネットワークの構造を最適化する方法であって、（１）ニューラルネットワークの初期構造を第１のニューラルネットワークとして入力するステップと、（２）与えられた第１のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第１のニューラルネットワークのコストが最小の第１のコストとなるまで学習を行うステップと、（３）前記第１のニューラルネットワークからランダムにユニットを削除して第２のニューラルネットワークを生成するステップと、（４）前記第２のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第２のニューラルネットワークのコストが最小の第２のコストとなるまで学習を行うステップと、（５）前記第１のコストと前記第２のコストとを比較するステップと、（６）前記第２のコストが前記第１のコストより小さいときには、前記第２のニューラルネットワークを前記第１のニューラルネットワーク、前記第２のコストを前記第１のコストとしてステップ（３）〜（５）を行い、前記第１のコストが前記第２のコストより小さいときには、ステップ（３）において異なる第２のニューラルネットワークを生成してステップ（４）（５）を行うステップと、（７）ステップ（６）において、前記第１のコストの方が前記第２のコストより小さいとの判断が所定回数連続したときに、前記第１のニューラルネットワークをニューラルネットワークの最適構造と決定するステップと、（８）前記ニューラルネットワークの最適構造を出力するステップとを備える。
【００１４】
ニューラルネットワークにおいて、どのような重みの初期値がより良い汎化能力を導くのかについての理論や知見は存在しない。したがって、非特許文献１乃至４に記載された方法のように、ユニットを除去して得られるニューラルネットワークのコストに基づいて、除去すべきユニットを選択することによって、必ずしも、より良い汎化能力を有するニューラルネットワークを得ることができる保証はなかった。分かりやすくいうと、あるユニット「ａ」を除外したときのコストが、別のユニット「ｂ」を除外したときのコストより小さい場合、ニューロン「ａ」を除外したニューラルネットワークについて学習を行った方が、良い汎化能力が得られるのではないかという憶測によるもので、実際にそうなるとは限らない。本発明者らは、どのニューロンを除外すれば最終的に汎化能力が向上するのかは、実際にユニットの削除を行い、学習を再開し早期終了しないことには分からないという考え方に基づき、本発明を完成させた。本発明によれば、ニューラルネットワークの学習が過学習に転じた時点でランダムにユニットを削除し、学習の早期終了時における重み評価用のデータセットのコストが、ユニット削除前のニューラルネットワークのコストを下回るまで、ランダムなユニット削除と（重みを引き継ぐ形の）再学習を反復する（あるいは並列的に行って最もよいものを取る）方法により、構造を簡単にしつつ、汎化能力の高いニューラルネットワークを生成することができる。
【００１５】
本発明のニューラルネットワーク最適化方法は、請求項１に記載のニューラルネットワーク最適化方法において、（９）ステップ（７）で決定した前記第１のニューラルネットワークをニューラルネットワークの最適構造の第１の候補とし、（１０）前記第１の候補が得られるまでの過程において前記ステップ（３）で生成された第２のニューラルネットワークのうちのいずれかを選択し、当該第２のニューラルネットワークの重みを乱数によって初期化したニューラルネットワークを初期構造とし、ステップ（２）〜（８）を行い、ニューラルネットワークの最適構造の第２の候補を決定するステップと、（１１）前記第１の候補と前記第２の候補のコストを比較するステップと、（１２）前記第２の候補のコストの方が前記第１の候補のコストより小さい場合には前記第２の候補を前記第１の候補としてステップ（１０）（１１）を行い、前記第１の候補のコストの方が前記第２の候補のコストより小さい場合には、ステップ（１０）（１１）を行い、（１３）ステップ（１２）において前記第１の候補のコストの方が前記第２の候補のコストより小さいとの判断が所定回数連続したときに、前記第１の候補をニューラルネットワークの最適構造と決定し、（１４）前記ニューラルネットワークの最適構造を出力するステップとを備える。
【００１６】
ニューラルネットワークは初期値依存性のある問題であるため、同一のネットワークに対して複数回の乱数の初期化を試行することにより、初期値依存性の問題を軽減し、より汎化能力の高い構造を探索することができる。
【００１７】
本発明のニューラルネットワーク最適化方法は、ステップ（３）において、前記第１のニューラルネットワークを構成する各ユニットを所定の確率で削除してもよいし、また、複数のユニットを同時に削除してもよい。
【００１８】
ニューラルネットワークにおいては、あるユニットの信号は他の全ユニットと高次の関連を持っており、複数の（極論を言えば「すべての」）ユニットの信号がまとまって特徴が捉えられるので、これらを分離することが難しい。したがって、単一のユニットの過学習に対する影響の度合いを定量化することは極めて困難であり、非特許文献１乃至４のようにユニットを１つずつ削除する方法は、ニューラルネットワークの最適化に適しているとは言えなかった。所定の確率でユニットを削除する構成、または、複数のユニットを同時に削除する構成により、入力信号の特徴が通常複数個のユニットの信号によって保持されるニューラルネットワークにおいて、ユニットの削除を適切に行うことが可能となる。なお、非特許文献２はいわば総当たり法である。例えば、全体でN個のニューロンがあったとして、単一のニューロンを除外するだけならＮ回の試行で済むが、m個のニューロンを除外するにはNmのオーダーの試行回数が必要となり、組み合わせ爆発を起こす。つまり、非特許文献２の方法において、複数個のニューロンの除外を試すことは現実的に不可能であった。
【００１９】
本発明のニューラルネットワーク最適化方法において、前記ニューラルネットワークは、フィルタによる畳み込み演算とサブサンプリングを介して接続されるユニットを有する畳み込みニューラルネットワークであって、ステップ（３）において、前記第１のニューラルネットワークからランダムにユニットまたはフィルタを削除して第２のニューラルネットワークを生成する構成を備える。
【００２０】
従来、畳み込みニューラルネットワークの構造は手で与えられていたが、本発明により、畳み込みニューラルネットワークの構造を自動決定することができる。
【００２１】
本発明のニューラルネットワーク最適化装置は、ニューラルネットワークの構造を最適化する装置であって、ニューラルネットワークの初期構造を入力する入力部と、ニューラルネットワークの学習を行うための学習データおよび評価データを記憶した記憶部と、ニューラルネットワークの最適化の演算を行う演算処理部と、前記演算処理部による演算により得られたニューラルネットワークを出力する出力部とを備え、前記演算処理部は、入力されたニューラルネットワークに対し、前記評価データを用いて計算されるコストが最小のコストとなるまで、前記学習データを用いて学習を行う重み最適化部と、入力されたニューラルネットワークからランダムにユニットを削除して新たな構造のニューラルネットワークを生成するユニット削除部とを備え、前記ユニット削除部が前記重み最適化部にて学習を行ったニューラルネットワークからランダムにユニットを削除して新たな構造のニューラルネットワークを生成し、前記重み最適化部が新たな構造のニューラルネットワークの学習を行う処理を繰り返し、前記評価データを用いて計算されるニューラルネットワークのコストを低下させたニューラルネットワークを求める構成を有する。
【００２２】
本発明のプログラムは、ニューラルネットワークの構造を最適化するためのプログラムであって、コンピュータに、（１）ニューラルネットワークの初期構造を第１のニューラルネットワークとして入力するステップと、（２）与えられた第１のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第１のニューラルネットワークのコストが最小の第１のコストとなるまで学習を行うステップと、（３）前記第１のニューラルネットワークからランダムにユニットを削除して第２のニューラルネットワークを生成するステップと、（４）前記第２のニューラルネットワークについて学習データを用いて学習を行うステップであって、評価データを用いて計算される前記第２のニューラルネットワークのコストが最小の第２のコストとなるまで学習を行うステップと、（５）前記第１のコストと前記第２のコストとを比較するステップと、（６）前記第２のコストが前記第１のコストより小さいときには、前記第２のニューラルネットワークを前記第１のニューラルネットワーク、前記第２のコストを前記第１のコストとしてステップ（３）〜（５）を行い、前記第１のコストが前記第２のコストより小さいときには、ステップ（３）において異なる第２のニューラルネットワークを生成してステップ（４）（５）を行うステップと、（７）ステップ（６）において、前記第１のコストの方が前記第２のコストより小さいとの判断が所定回数連続したときに、前記第１のニューラルネットワークをニューラルネットワークの最適構造と決定するステップと、（８）前記ニューラルネットワークの最適構造を出力するステップとを実行させる。
【発明の効果】
【００２３】
本発明のニューラルネットワーク最適化方法によれば、汎化能力を向上させ、計算量を減らしたネットワーク構造が自動決定できるという効果がある。
【図面の簡単な説明】
【００２４】
【図１】第１の実施の形態のニューラルネットワーク最適化方法の概要を示す図である。
【図２】ニューラルネットワークの学習において、重み更新の反復回数とコスト評価値との関係を示す図である。
【図３】（ａ）はユニットを削除される前のニューラルネットワークを示す図である。（ｂ）ユニットが削除されたニューラルネットワークを示す図である。
【図４】第１の実施の形態のニューラルネットワーク最適化装置の構成を示す図である。
【図５】第１の実施の形態のニューラルネットワーク最適化方法を示す図である。
【図６】第１の実施の形態における重み最適化の方法を示す図である。
【図７】第２の実施の形態のニューラルネットワーク最適化方法の概要を示す図である。
【図８】第２の実施の形態のニューラルネットワーク最適化方法を示す図である。
【図９】畳み込みニューラルネットワークについて説明する図である。
【図１０】第３の実施の形態のニューラルネットワーク最適化方法を示す図である。
【図１１】第４の実施の形態のニューラルネットワーク最適化方法を示す図である。
【図１２】（ａ）は、実験に用いた重み更新用データセットと重み評価用データセットを示す図である。（ｂ）は、実験において最初に与えたニューラルネットワークの初期構造を示す図である。
【図１３】実験結果を示す図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態のニューラルネットワーク最適化方法について、図面を参照しながら説明する。
（第１の実施の形態）
図１は、第１の実施の形態のニューラルネットワーク最適化方法の概要を説明するための図である。本実施の形態のニューラルネットワーク最適化方法は、最初に、ニューラルネットワークの初期構造を入力し、この初期構造の中の中間層のユニットを削除して最適なニューラルネットワークを求める方法である。なお、ユニットは、ニューラルネットワークを構成する要素であり、ニューロンともいう。
【００２６】
本実施の形態において対象とするニューラルネットワークは多層ニューラルネットワークであり、入力層から出力層まで順番に信号が伝搬するフィードフォワード型のネットワークである。層をまたいだユニット間の結合があってもよいし、ある層の全ユニットとその次の層の全ユニットが全て結合していてもよいし、逆に一部が結合していなくてもよい。初期構造として与えるニューラルネットワークは、処理の過程でユニットを削除して適切な構造が得られるようにするために、各層のユニット数を十分に大きな値に設定する。
【００２７】
図１では、初期構造は「構造０」と記載している。初期構造においては、各ユニット間のつながりの重みは平均が０の正規分布に従う乱数によって初期化することとする。本実施の形態のニューラルネットワーク最適化方法において用いる訓練データは、ニューラルネットワークの入力となる多次元ベクトルと、それに対応した出力となる多次元ベクトルまたはスカラーの組が多数与えられているものとする。訓練データは、重み更新用データセットと評価用データセットに分割しておく。重み更新用データセットと評価用データセットのサイズの比率は任意であるが、１対１程度がよい。
【００２８】
本実施の形態では、まず、重み更新用データセットを用いて「構造０」のニューラルネットの学習を行う。ここでニューラルネットワークの学習について説明する。ニューラルネットワークの学習は、誤差逆伝搬法（バックプロパゲーション）という公知の方法を用いて行うことができる。学習を行うことにより、ニューラルネットワークの各ユニット間のつながりの重みが更新され、重み更新用データの入力に対する出力の正解率が高くなり、重み更新用データに対するコストが低下する。
【００２９】
ただし、重み更新用データに対するコストの低減とニューラルネットワークの汎化能力の向上とは必ずしも一致しない。ニューラルネットワークの汎化能力は未知のデータが入力されたときに適切な出力を行えることであり、重み更新用データについて良い結果が得られることとは異なるからである。
【００３０】
図２は、ニューラルネットワークの学習において、重み更新の反復回数とコスト評価値との関係を示す図である。図２に示すとおり、重み更新の反復回数が増加するにしたがって、重み更新用データセットのコストは低減していく。しかし、重み評価用のデータセットのコストは、ある時点まで減少するが、その後は増加するという現象が起こる。これは、「過学習」と呼ばれ、学習をすればするほど汎化能力が悪くなる現象である。この現象は、ユニット数が多いニューラルネットワークで起きやすい。
【００３１】
本実施の形態では、ニューラルネットワークの学習を行う際には、重み更新用データセットを用いてニューラルネットワークの学習を行うのと同時に、更新されたニューラルネットワークに対して重み評価用データセットを用いてコスト計算を行う。そして、重み評価用データセットを用いて求めたコストが増加し始めたところで、学習を終了する。
【００３２】
図１に戻って、本実施の形態のニューラルネットワーク最適化の概要について説明する。前述した重み更新用データセットを用いて「構造０」のニューラルネットワークの学習を行い、重み評価用データセットを用いて計算したコストが最小値「Ｅ０」となったところで学習を終了する。重み更新用データのコストがまだ減少しているにもかかわらず学習を終了するので「早期終了」ともいう。ここまでの過程により、最初に与えられた「構造０」のニューラルネットワークにおいて、重みが更新されたニューラルネットワークが生成される。
【００３３】
次に、本実施の形態では、このニューラルネットワークからランダムに中間層のユニットを削除する。図１においては、ニューロン（Nueron）を削除（kill）するという意味で、「ＮＫ（Neuron Killing）」と記載している。なお、ユニットをランダムに削除する方法として、本実施の形態では、各ユニットの確率ｐを与えておくことで、削除すべきユニットを確率ｐで決定する。従って、ニューラルネットワークから同時に複数のユニットが削除されることもあり得る。なお、削除すべきユニットが確率ｐによって決定されなかった場合には、乱数によって削除すべきユニットを決定してもよい。
【００３４】
図３（ａ）及び図３（ｂ）は、ユニットの削除について説明するための図である。図３（ａ）は、重み更新用データによる学習が行われた２−４−４−４−２の構造のニューラルネットワークを示している。つまり、このネットワークの各ユニット間のつながりの重みは、重み更新用データによって更新され、コストが最小になるようにされている。
【００３５】
このニューラルネットワークからランダムにユニットを削除するが、図３（ａ）では一例として、「ｘ」が付されたユニットが削除される場合を示している。「ｘ」が付されたユニットを削除すると、図３（ｂ）に示すように、２−３−４−３−２の構造のニューラルネットワークが生成される。ユニットを削除することにより生成されるニューラルネットワークは、図３（ａ）において「ｘ」が付されていたユニットがなくなると共に、当該ユニットへのつながりもなくなる。ただし、その他のユニット間のつながりについては、学習された重みがそのまま残っている。
【００３６】
図１において、「構造０」のニューラルネットワークからランダムにユニットを削除して生成したニューラルネットワークが「構造１」である。次に、「構造０」の学習と同様に、「構造１」のニューラルネットワークの学習を行う。ここで、学習を開始する際の「構造１」のニューラルネットワークは、「構造０」の学習によって更新された重みをそのまま引き継いだニューラルネットワークである。この「構造１」のニューラルネットワークに対して、重み更新用データセットを用いて重みの更新を行い、重み評価用データセットを用いて計算されたニューラルネットワークのコストが最小値「Ｅ１」になったところで学習を終了する。
【００３７】
次に、「構造０」のニューラルネットワークの学習後のコスト「Ｅ０」と「構造１」のニューラルネットワークの学習後のコスト「Ｅ１」とを比較する。図１に示す例では、「構造１」のニューラルネットワークの学習後のコストの方が小さいので、ユニットを削除することによって、ニューラルネットワークのコストを低減し、汎化能力を高めることに成功したことが分かる。
【００３８】
続いて、本実施の形態では、「構造１」のニューラルネットワークからランダムにユニットを削除し、さらに学習を行う。図１の例では、「構造２」のニューラルネットワークの学習を行って得られたコスト「Ｅ２」と「構造１」のニューラルネットワークのコスト「Ｅ１」とを比較すると、コスト「Ｅ１」の方がコスト「Ｅ２」より小さい。つまり、「構造２」のニューラルネットワークの汎化能力は、「構造１」のニューラルネットワークよりも悪いので、「構造２」は採用しない。この場合、「構造１」のニューラルネットワークから再びランダムにユニットを削除し、「構造２−１」のニューラルネットワークを生成し、学習を行う。この結果、「構造２−１」のニューラルネットワークのコスト「Ｅ２−１」は、構造１のコスト「Ｅ１」より小さくなっているので、「構造２−１」のニューラルネットワークは汎化能力を高めることに成功しており、次に、「構造２−１」のニューラルネットワークからランダムにユニットを削除して学習を行う。
【００３９】
以上の動作を繰り返し行い、最終的に、ランダムにユニットを削除した「構造５」から「構造５−Ｂ」のように、学習によって得られたコスト「Ｅ５」〜「Ｅ５−Ｂ」がいずれも、ユニットを削除する前の「構造４−２」のニューラルネットワークのコスト「Ｅ４−２」より小さくならない場合には、「構造４−２」を最適なニューラルネットワークであると決定する。
【００４０】
次に、本実施の形態のニューラルネットワーク最適化方法及び装置の詳細な構成について説明する。
【００４１】
図４は、ニューラルネットワーク最適化装置１の構成を示す図である。ニューラルネットワーク最適化装置１は、ニューラルネットワークの初期構造を入力する入力部１０と、ニューラルネットワーク最適化の演算を行う演算処理部１１と、求めたニューラルネットワークを出力する出力部１４とを有している。また、ニューラルネットワーク最適化装置１は、記憶部１５を有しており、訓練データとして、重み更新用データセットと重み評価用データセットを記憶している。
【００４２】
なお、図４に示すニューラルネットワーク最適化装置１は、ＣＰＵ、ＲＡＭ、ＲＯＭ等を有するコンピュータによって構成される。入力部１０、演算処理部１１、出力部１４が実行する動作を記述したプログラムをＲＯＭなどに記憶しておき、ＣＰＵが当該プログラムを読み出して実行することにより、ニューラルネットワーク最適化装置１を実現することができる。このようなプログラムも本発明の範囲に含まれる。
【００４３】
図５は、本実施の形態のニューラルネットワーク最適化方法を示すフローチャートである。まず、ニューラルネットワーク最適化装置１に対してニューラルネットワークの初期構造を入力する（Ｓ１０）。ここで与えるニューラルネットワークの初期構造をＡ0、重みをＷ0とする。また、ニューラルネットワークの学習を終了する条件として、回数Ｂを入力する（Ｓ１０）。回数Ｂは、ユニットをランダムに削除して新しいニューラルネットワークを生成した結果、コストがより小さくなるニューラルネットワークが連続して見つからなかったときに、何回で学習を終了するかを設定するものである。さらに、ユニットをランダムに削除する際の確率ｐ（０〜１の数字）を入力する。確率ｐとして大きい値を設定すれば、一度に削除されるユニット数が多くなり、小さい値を設定すれば一度に削除されるユニット数が少なくなる。
【００４４】
次に、ニューラルネットワーク最適化装置１は、ユニットの削除回数を示す変数ｓに値０を設定する初期化を行った上で、重み最適化を行う。重み最適化部１２は、ネットワーク構造ＡS、重みの初期値ＷSを入力として、重み最適化を行い、最適な重みＷSとそのコスト関数の値ＥSを出力する（Ｓ１１）。この処理については、後に、図６を参照して詳述する。
【００４５】
ニューラルネットワーク最適化装置１は、最適な重みＷSとそのコスト関数の値ＥSが求められると、ユニット数を削減してさらに学習を続けるか否かを判断する。具体的には、まず、ｓ＝０か、または、ＥS＜ＥS-1かどうかを判断する（Ｓ１２）。
【００４６】
ｓ＝０か否かの判断は、ニューラルネットワークが最初に初期構造として与えたものであるかどうかを判断するものである。ｓ＝０の場合には、ニューラルネットワークが最初に初期構造として与えたものなので（図１でいう構造０）、コストＥ0と比較する対象がまだない。この場合には、変数ｓをインクリメントすると共に、変数ｂに値Ｂを代入して初期化し、ユニットをランダムに削除するステップＳ１４に移行する。
【００４７】
ＥS＜ＥS-1を満たすかどうかの判断は、ユニットを削除して生成したニューラルネットワークの学習後のコストＥSがユニットを削除する前のニューラルネットワークのコストＥS-1より小さいかどうかを判断するものである。ＥS＜ＥS-1を満たす場合には、変数ｓをインクリメントする共に、変数ｂにＢを代入して初期化し、ユニットをランダムに削除するステップＳ１４に移行する。
【００４８】
ステップＳ１４では、ニューラルネットワークＡS-1の各ユニットを確率ｐで削除してニューラルネットワークＡSを生成する（Ｓ１４）。また、ニューラルネットワークＡSの重みＷSにニューラルネットワークＡS-1の重みＷS-1を代入する。これにより、ニューラルネットワークＡS-1は、ユニットを削除する前のニューラルネットワークＡSの重みをそのまま引き継ぐことができる。
【００４９】
続いて、ニューラルネットワーク最適化装置１は、ユニットを削除して生成したニューラルネットワークＡSについて重み最適化を行い（Ｓ１１）、ニューラルネットワークＡSのコストＥSと、ユニットを削除する前のニューラルネットワークＡS-1のコストＥS-1とを比較し（Ｓ１２）、以下、同じ処理を繰り返す。
【００５０】
ステップＳ１２において、ｓ＝０またはＥS＜ＥS-1のいずれも満たさない場合には（Ｓ１２でＮＯ）、ユニットを削除して生成したニューラルネットワークＡSの学習後のコストＥSがユニットを削除する前のニューラルネットワークＡS-1のコストＥS-1より小さくないこと、すなわち、ユニットを削除する前のニューラルネットワークの方が汎化能力が高いことを意味する。この場合には、変数ｂをデクリメントし、変数ｂ＝０か否かを判定する（Ｓ１３）。ｂ＝０と判定された場合には（Ｓ１３でＹＥＳ）、それまでに求めたネットワーク構造Ａ0、Ａ1、・・・ＡS-1とそれに対応する重みＷ0、Ｗ1、・・・ＷS-1を出力する（Ｓ１５）。
【００５１】
ＥS＜ＥS-1を満たしてニューラルネットワークＡSからのユニットの削除を開始する際に、変数ｂは値Ｂに初期化されている。ユニットを削除したニューラルネットワークのコストが小さくならなかった場合に（Ｓ１２でＮＯ）、変数ｂが０になるまでデクリメントしていくことにより、ランダムにユニットを削除するというステップをＢ回行い、Ｂ回連続してコストＥSを減らすことができなかった場合にニューラルネットワークの最適化を終了するという処理を実現できる。つまり、変数ｂはこれを実現するカウンタであり、値Ｂはその最大値である。
【００５２】
図６は、重み最適化の動作を示すフローチャートである。図６を参照して重み最適化の動作について説明する。
【００５３】
重み最適化部１２は、ニューラルネットワーク構造Ａとその重みＷと定数Ｍの入力を受ける（Ｓ２０）。重み最適化部１２は、重みＷ0に重みＷを初期値として代入する（Ｓ２１）。続いて、変数ｔに０を、変数ｍに値Ｍをそれぞれ代入して初期化を行った後、重み評価用データセットＳ2を用いて、ニューラルネットワークＡのコスト関数評価を行い、コストｃ（０）を求める（Ｓ２２）。
【００５４】
次に、重み更新用データセットＳ1を用いて、誤差逆伝搬法によりニューラルネットワークＡの重みＷtを更新する（Ｓ２３）。次に、重み最適化部１２は、変数ｔをインクリメントし、重み評価用データセットＳ2を用いて、重みＷtが更新されたニューラルネットワークＡのコスト関数評価を行い、コストｃ（ｔ）を求める（Ｓ２４）。
【００５５】
続いて、求めたコストｃ（ｔ）がこれまでに求めたコストｃ（０）、ｃ（１）、・・・ｃ（ｔ−１）の中で最小かどうかを判定する（Ｓ２５）。この判定の結果、コストｃ（ｔ）が最小である場合には（Ｓ２５でＹＥＳ）、変数ｍに値Ｍを代入して初期化した後、重みＷtを更新するステップＳ２３に移行する。コストｃ（ｔ）が最小でなかった場合には（Ｓ２５でＮＯ）、変数ｍをデクリメントし、変数ｍが０になったか否かを判定する（Ｓ２６）。変数ｍが０でない場合には（Ｓ２６でＮＯ）、重みＷtを更新するステップＳ２３に移行する。変数ｍが０である場合には（Ｓ２６でＹＥＳ）、重みＷtとコストｃ（ｔ）を出力し（Ｓ２７）、重み最適化の処理を終了する。以上、第１の実施の形態のニューラルネットワーク最適化方法及び装置について説明した。
【００５６】
ニューラルネットワークに限らず、未知のパラメタ数が、真のデータの分布を記述するのに必要なパラメタ数よりも多い場合、訓練データに対する過剰適合（過学習）が発生する。多層ニューラルネットワークでは、パラメタの個数はユニットの個数によって制御されるが、従来、各層におけるユニットの数を適切に決めることは困難であった。本実施の形態のニューラルネットワーク最適化方法によれば、ニューラルネットワークの初期構造を手で与え、学習の過程で過学習に陥った時点で、ユニットを除外する（パラメタ数を減らす）ため、ニューラルネットワーク最適化の方法として、理に適っている。
【００５７】
ニューラルネットワークにおいては、単一のユニットの過学習に対する影響の度合いを定量化することは極めて困難である。なぜなら、あるユニットの信号は他の全ユニットと高次の関連を持っているため、これを分離することが難しいからである。これは入力信号の特徴は、通常複数個のユニットの信号によって保持されると言い換えることができる。冗長な特徴表現をネットワークから除外するには、複数個のユニットを同時に削除する本実施の形態で説明した方法が有効である。
【００５８】
本実施の形態のニューラルネットワーク最適化方法は、ユニットの除外の後で、学習を行うと共に重み評価用データセットを用いてコストを評価し、コストが増加した時点で終了する構成により、重み評価用データセットのコスト関数が減少することを明示的に確約する方法である。このため、この方法を適用することで、（１）汎化能力を向上させ、（２）計算量を減らし、（３）生成されたネットワーク構造が自動決定されるという効果がある。特に、良い汎化能力を与える多層ニューラルネットワークのユニット数の調整は、各層のユニット数の組み合わせが膨大になるため、手で設定することは極めて困難であったから、上記（３）の効果は大きい。
【００５９】
また、ユニット数の削減を確率ｐの二項分布に従って行うようにしたことにより、異なる複数のユニットの組み合わせの除外を試行できると共に、単純な分布とすることで、追加のハイパーパラメタが少なく済むというメリットがある。
【００６０】
（第２の実施の形態）
次に、本発明の第２の実施の形態のニューラルネットワーク最適化方法について説明する。ニューラルネットワークは初期値依存性のある問題であるため、第２の実施の形態においては、削除するユニットをランダムに選んで複数回試行する（ステップＳ１２の判断でＮＯの場合の動作）のと同様に、同一のネットワークに対し、複数回の乱数の初期化を試行する。これにより、初期値依存性の問題を軽減することを目的としたものである。
【００６１】
図７は、第２の実施の形態のニューラルネットワーク最適化方法の概要を示す図である。第２の実施の形態のニューラルネットワーク最適化方法の基本的な処理の流れは、第１の実施の形態と同じである。第２の実施の形態では、「構造４−２」のニューラルネットワークがコストＥ４−２を最小すると求められたところで処理を終了するのではなく、何段階か前の構造に戻って（図７に示す例では、２段階前の「構造２−１」に戻って）、当該構造のニューラルネットワークの初期値をランダムに変えて、再度、ユニットを削除して学習を行う処理を行う。
【００６２】
続いて、第２の実施の形態のニューラルネットワーク最適化方法の詳細な説明に移る。第２の実施の形態のニューラルネットワーク最適化方法を実行するニューラルネットワーク最適化装置の構成は、第１の実施の形態のニューラルネットワーク最適化装置１と同じである。
【００６３】
図８は、第２の実施の形態のニューラルネットワーク最適化方法を示すフローチャートである。まず、ニューラルネットワーク最適化装置に対してニューラルネットワークの初期構造を入力する（Ｓ３０）。ここで与えるニューラルネットワークの初期構造をＡ(0)とする。また、ニューラルネットワークの学習を終了する条件としての回数Ｆと、初期値を変えて最適化を行う場合に何段階戻るかを決める値ｑと、値Bと、ユニットを削除する確率ｐを入力する（Ｓ３０）。ニューラルネットワーク最適化装置は、重みW(0)を乱数により初期化する（Ｓ３１）。
【００６４】
次に、ニューラルネットワーク最適化装置は、ニューラルネットワークの構造Ａ(0)と重みの初期値W(0)と値Bと確率ｐを用いて、ユニット数の最適化を行う（Ｓ３２）。なお、図面においては、一般的な表現として入力をW(r)、Ａ(r)と表現している。ここで行うユニット数の最適化は、第１の実施の形態において図５を用いて説明した方法によって行う。これにより、ニューラルネットワーク最適化装置は、ニューラルネットワーク構造Ａ0、Ａ1、・・・ＡS-1と、それらの重みＷ0、Ｗ1、・・・ＷS-1と、コスト関数の値ＥS-1とを出力する（Ｓ３２）。そこで、ニューラルネットワーク最適化装置は、求めたニューラルネットワーク構造ＡS-1とその重みＷS-1を、ニューラルネットワークＡ(r)とＷ(r)にそれぞれ代入し、コストＥS-1をＥ(r)に代入する。
【００６５】
ニューラルネットワーク最適化装置は、初期値を変えてさらに学習を続けるか否かを判断する。具体的には、まず、ｒ＝０か、または、Ｅ(r)＜Ｅ(r-1)かどうかを判断する（Ｓ３３）。
【００６６】
ｒ＝０か否かの判断は、ニューラルネットワークが初期値を変えないで学習して得られたものであるかどうかを判断するものである。ｒ＝０の場合には、ニューラルネットワークが初期値を変えない学習によって得られたもの（第１の実施の形態の方法で最初に最適化構造を求めた段階）なので、コストＥ(r)と比較する対象がまだない。この場合には、変数ｒをインクリメントすると共に、変数ｆに値Ｆを代入して初期化し、何段階か前のニューラルネットワークの初期値を乱数により初期化するステップＳ３５に移行する。
【００６７】
Ｅ(r)＜Ｅ(r-1)を満たすかどうかの判断は、初期値を変えて学習して得られたニューラルネットワークのコストＥ(r)が、その前のニューラルネットワークのコストＥ(r-1)より小さいかどうかを判断するものである。Ｅ(r)＜Ｅ(r-1)を満たす場合には、変数ｒをインクリメントする共に、変数ｆに値Ｆを代入して初期化し、何段階か前のニューラルネットワークの初期値を乱数により初期化するステップＳ３５に移行する。
【００６８】
ステップＳ３５では、ニューラルネットワークＡ(r)の何段階か前のニューラルネットワークＡceil(q(s-1))をニューラルネットワークＡ(r)に代入し、その初期値Ｗ(r)を乱数により初期化する（Ｓ３５）。ここで、ｃｅｉｌは、切り上げた値を返す関数である。ｃｅｉｌ（ｑ（ｓ−１））によって、ｓ−１に対して値ｑ（０＜ｑ＜１）を乗じて得られた値を切り上げた自然数が得られる。例えば、ｓ−１が「６」、ｑが「０．６」であった場合、ｃｅｉｌ（６×０．６）＝ｃｅｉｌ（３．６）＝４となる。
【００６９】
ステップＳ３３において、ｒ＝０またはＥ(r)＜Ｅ(r-1)のいずれも満たさない場合には（Ｓ３３でＮＯ）、初期値をランダムに変えて行った学習後のニューラルネットワークのコストＥ(r)が、その前のニューラルネットワークのコストＥ(r-1)より小さくないこと、すなわち、初期値をランダムに変える前のニューラルネットワークの方が汎化能力が高いことを意味する。この場合には、変数ｆをデクリメントし、変数ｆ＝０か否かを判定する（Ｓ３４）。ｆ＝０と判定され場合には（Ｓ３４でＹＥＳ）、求めたネットワーク構造Ａ(r-1)とそれに対応する重みＷ(r-1)を出力する（Ｓ３６）。
【００７０】
Ｅ(r)＜Ｅ(r-1)を満たし（Ｓ３３でＹＥＳ）、初期値を変更して再学習を開始する前に、変数ｆは値Ｆに初期化されている。初期値を変えて学習したニューラルネットワークのコストＥ(r)が小さくならなかった場合に（Ｓ３３でＮＯ）、変数ｆが０になるまでデクリメントしていくことにより、コストを減らすことができなかった場合に、初期値を変更するというステップをＦ回行い、Ｆ回連続してコストを減らすことができなかった場合にニューラルネットワークの最適化を終了する処理を実現できる。以上、第２の実施の形態のニューラルネットワーク最適化方法について説明した。
【００７１】
第２の実施の形態のニューラルネットワーク最適化方法は、初期値を乱数によって変更して、第１の実施の形態で説明したユニット数の最適化の学習を繰り返し行うことにより、ニューラルネットワークの初期値依存性の問題を解消し、汎化能力の高いニューラルネットワークの構造を構築することができる。
【００７２】
（第３の実施の形態）
次に、本発明の第３の実施の形態のニューラルネットワーク最適化方法について説明する。第３の実施の形態では、最適化を行うニューラルネットワークとして、畳み込みニューラルネットワークを対象としている。まず、畳み込みニューラルネットワークについて説明する。
【００７３】
図９は、畳み込みニューラルネットワークの構造の例を示す図である。入力は、２次元配列の画像である。訓練データについては、前述の方法と同様に、ニューラルネットワークの入力となる画像と、それに対応した出力となる画像、多次元ベクトルまたはスカラーの組が多数与えられているものとする。
【００７４】
図９において、最初の演算は、入力画像とフィルタの畳み込み演算である。フィルタとは、n(pix)×n(pix)の要素を持つ重みであり（バイアスを加えても良い）、誤差逆伝搬法により学習することで、識別に有効な特徴を抽出できるようになる。
【００７５】
次の演算は、サブサンプリングである。これをプーリング（pooling）ともいう。プーリングとは、上述の二次元配列を、次のやり方でそれぞれ縮小させ、シグモイド関数などの活性化関数（activation function）によって非線形写像を施す処理である。まず、上述の二次元配列を２×２のタイルに分割し、各タイルの４つの信号の平均値を取る。この平均の処理により、上述の二次元配列はその４分の１のサイズに縮小される。次にこの縮小された二次元配列のそれぞれの要素に対し、シグモイド関数などの活性化関数（activation function）による非線形変換を行う。プーリングにより画像の位置に関する特徴を失わずに情報を縮小することが可能となる。このように畳み込みとプーリングを繰り返し行って生成された二次元配列から先は（図９において「standard neural network」と記載されたところ）、通常のニューラルネットワークと同様の構造を有する。
【００７６】
本実施の形態では、説明の便宜上、プーリングの結果得られた２次元配列のユニットを「パネル」と呼ぶこととする。パネルがフィルタの枚数分だけ集まったものが、畳み込みニューラルネットワークにおいて１つの隠れ層を形成する。
【００７７】
続いて、第３の実施の形態のニューラルネットワーク最適化方法について説明する。第３の実施の形態のニューラルネットワーク最適化方法は、最適化の対象が畳み込みニューラルネットワークである点を除いては、第１の実施の形態と同じである。
【００７８】
図１０は、第３の実施の形態のニューラルネットワーク最適化方法を示すフローチャートである。第３の実施の形態のニューラルネットワーク最適化方法は、第１の実施の形態と同じであるが、ステップＳ４４において、確率ｐで、ユニットを削除することに加えて、パネルを削除する点が異なる。
【００７９】
畳み込みニューラルネットワークにおけるパネルの枚数は、従来手で与えられていたが本実施の形態によれば、ニューラルネットワーク最適化方法を畳み込みニューラルネットワークに適用し、汎化能力が高くかつ計算量の少ない畳み込みニューラルネットワークを自動決定できる。
【００８０】
また、ユニットと同時にパネルを除外することで、特定のユニットとパネルが関連する特徴量抽出の冗長性をネットワークから除外することができる。
【００８１】
（第４の実施の形態）
第４の実施の形態のニューラルネットワーク最適化方法は、第２の実施の形態のニューラルネットワーク最適化方法を畳み込みニューラルネットワークに適用したものである。
【００８２】
図１１は、第４の実施の形態のニューラルネットワーク最適化方法を示すフローチャートである。第４の実施の形態のニューラルネットワーク最適化方法は、第２の実施の形態と同じであるが、ステップＳ５２において、ユニット数に加えてパネル数の最適化を行う点が異なる。ユニット数及びパネル数の最適化は、第３の実施の形態において図１０を用いて説明した方法を採用することができる。
【００８３】
第４の実施の形態も、第３の実施の形態と同様に、汎化能力が高くかつ計算量の少ない畳み込みニューラルネットワークを自動決定できるという効果を有する。
【００８４】
以上、本発明のニューラルネットワーク最適化方法について、実施の形態を挙げて詳細に説明したが、本発明のニューラルネットワーク最適化方法は、上記した実施の形態に限定されるものではない。
【００８５】
上記した実施の形態では、中間層のユニットを削除する例について説明したが、削除するユニットに入力層のユニットが含まれていてもよい。入力層のユニットの除外は、モデル選択の一種と考えられ、入力信号が冗長性を持つ場合、識別に必要な信号のみを取り出すことが可能となる。すなわち、入力データ自体に、識別に寄与しない情報が多く含まれる場合、中間層に加えて入力層のニューロンを削除することには効果があると考えられる。
【００８６】
上記した第３の実施の形態及び第４の実施の形態では、パネルを削除する例を挙げて説明したが、パネルに代えて、またはパネルと共にフィルタを削除することとしてもよい。図９に示すように畳み込み層が多重であった場合、パネルを削除することとフィルタを削除することとは異なる結果となる。パネルを削除すると削除されたパネルにつながるすべてのフィルタは自ずと除去される。これに対し、フィルタを削除するとパネルにつながるフィルタのみが削除される。パネルにつながるすべてのフィルタが削除されれば、そのパネルを消すことと等価となるが、フィルタを削除する構成とするとパネルは削除されにくくなる。このためパネルを削除する場合と比較すると演算量は大きくなる傾向にあるが、パネルの独立性を高めることにより汎化能力が高くなることが多い。
【実施例】
【００８７】
次に、本発明のニューラルネットワーク最適化方法を用いて実験を行った結果を示す。
図１２（ａ）は、実験に用いた重み更新用データセットと重み評価用データセットである。それぞれのデータセットには、識別境界によって識別されるクラス１とクラス２のデータが１００点ずつ用意されている。
【００８８】
図１２（ｂ）は、実験において最初に与えたニューラルネットワークの初期構造を示す図である。入力層は、クラス１とクラス２の二つがあるので２つのユニットとした。出力層は、クラス１かクラス２のいずれに識別されるかを表すので、１つのユニットとした。入力層と出力層の間の隠れ層（中間層）は４層とし、各隠れ層のユニット数を１５０とした。上に示したような条件で、第２の実施の形態で説明した方法によりニューラルネットワークの最適化を行った。
【００８９】
図１３は、実験結果を示す図である。図の左側の「構造」が「２−１５０−１５０−１５０−１５０−１」のカラムは、同構造のニューラルネットワークにおいて重みを更新した結果を示す。図１３において識別関数は、実線が真の識別関数を示し、点線が求められた識別関数を示す。図１３に示されるとおり、左側の谷の部分で正しく識別できていないことが分かる。このときの評価用データのコストは、０．１９６８であった。
【００９０】
第２の実施の形態で説明した方法により、ランダムにユニットを削除して学習を行うという処理を繰り返し行うことにより、最終的に、図の右側のカラムに示すように、「２−８−９−１３−７−１」という構造が得られた。このときの識別関数は、ほぼ真の識別関数と一致している。このときの評価用データのコストは０．０２１１であり、初期構造のニューラルネットワークよりも大幅に低下した。また、積和演算回数も初期構造では、６８５５１であったのが３４１にまで低下し、計算量も大幅に減らすことができた。
【産業上の利用可能性】
【００９１】
以上のとおり、本発明はニューラルネットワークの最適なユニット数を求め、構造を最適化することができ、画像や文字の認識や、時系列データの予測などの様々な用途に有用である。
【符号の説明】
【００９２】
１  ニューラルネットワーク最適化装置
１０  入力部
１１  演算処理部
１２  重み最適化部
１３  ユニット削除部
１４  出力部
１５  記憶部
【図１】
0006042274.tif 000002
【図２】
0006042274.tif 000003
【図３】
0006042274.tif 000004
【図４】
0006042274.tif 000005
【図５】
0006042274.tif 000006
【図６】
0006042274.tif 000007
【図７】
0006042274.tif 000008
【図８】
0006042274.tif 000009
【図９】
0006042274.tif 000010
【図１０】
0006042274.tif 000011
【図１１】
0006042274.tif 000012
【図１２】
0006042274.tif 000013
【図１３】
0006042274.tif 000014