(57)【特許請求の範囲】
【請求項１】
入力又は予め設定された初期構造の階層型のニューラルネットワークを学習させるニューラルネットワーク学習装置であって、
複数の学習データにより前記ニューラルネットワークを学習させる学習処理を行う学習部を備え、
前記学習処理は、
データベースから前記学習データを読み込むデータ読込処理と、
前記データ読込処理で前記学習データを読み込んだ場合、当該学習データを用いて前記ニューラルネットワークの損失関数を算出し、前記損失関数に応じて前記ニューラルネットワークの結合荷重を修正する結合荷重修正処理と、
前記結合荷重修正処理の実行後、前記損失関数が予め設定された第１閾値よりも大きい場合に、前記ニューラルネットワークの中間層にニューロンを新たに生成するニューロン生成処理と、
前記結合荷重修正処理の実行後、前記ニューラルネットワークの中間層における複数のニューロンの前記結合荷重の合計値が、予め設定された基準合計値よりも小さい場合に、当該中間層のニューロンの一部を消滅させるニューロン消滅処理と、を含み、
前記結合荷重修正処理においては、
前記ニューロン生成処理でニューロンを新たに生成した場合、及び、前記ニューロン消滅処理でニューロンの一部を消滅させた場合のうちの何れかの場合、当該学習データを用いて前記損失関数を再度算出し、前記損失関数に応じて前記結合荷重を再度修正し、
前記学習処理の実行後、前記損失関数が予め設定された第２閾値よりも大きい場合に、少なくとも１つのニューロンを含む追加中間層を前記ニューラルネットワークの中間層として新たに生成する中間層生成処理を行う中間層生成部をさらに備え、
前記学習部は、
前記中間層生成処理で前記追加中間層を新たに生成した場合、前記追加中間層が生成された前記ニューラルネットワークにて前記学習処理を再度実行する、ニューラルネットワーク学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク学習装置に関する。
【背景技術】
【０００２】
従来のニューラルネットワーク学習装置に関する技術として、特許文献１には、砂時計ニューラルネットワークの引き延ばし学習方法が記載されている。特許文献１に記載された学習方法では、砂時計ニューラルネットワークの中間層を段階的に引き延ばして学習させ、中間層が最小次元となる砂時計ニューラルネットワークを得ることが図られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−１８５５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記従来技術では、ニューラルネットワークが砂時計型に限定されており、各中間層におけるニューロン数が固定されている。中間層を引き延ばして学習させた結果、中間層数が不必要に多くなる可能性がある。よって、上記従来技術においては、ニューラルネットワークの構造を最適化する上で改善の余地がある。
【０００５】
本発明は、ニューラルネットワークの構造を最適化することが可能なニューラルネットワーク学習装置を提供することを課題とする。
【課題を解決するための手段】
【０００６】
本発明に係るニューラルネットワーク学習装置は、入力又は予め設定された初期構造の階層型のニューラルネットワークを学習させるニューラルネットワーク学習装置であって、複数の学習データによりニューラルネットワークを学習させる学習処理を行う学習部を備え、学習処理は、データベースから学習データを読み込むデータ読込処理と、データ読込処理で学習データを読み込んだ場合、当該学習データを用いてニューラルネットワークの損失関数を算出し、損失関数に応じてニューラルネットワークの結合荷重を修正する結合荷重修正処理と、結合荷重修正処理の実行後、損失関数が予め設定された第１閾値よりも大きい場合に、ニューラルネットワークの中間層にニューロンを新たに生成するニューロン生成処理と、結合荷重修正処理の実行後、ニューラルネットワークの中間層における複数のニューロンの結合荷重の合計値が、予め設定された基準合計値よりも小さい場合に、当該中間層のニューロンの一部を消滅させるニューロン消滅処理と、を含み、結合荷重修正処理においては、ニューロン生成処理でニューロンを新たに生成した場合、及び、ニューロン消滅処理でニューロンの一部を消滅させた場合のうちの何れかの場合、当該学習データを用いて損失関数を再度算出し、損失関数に応じて結合荷重を再度修正し、学習処理の実行後、損失関数が予め設定された第２閾値よりも大きい場合に、少なくとも１つのニューロンを含む追加中間層をニューラルネットワークの中間層として新たに生成する中間層生成処理を行う中間層生成部をさらに備え、学習部は、中間層生成処理で追加中間層を新たに生成した場合、追加中間層が生成されたニューラルネットワークにて学習処理を再度実行する。
【０００７】
このニューラルネットワーク学習装置では、ニューロン数を損失関数及び結合荷重に応じた最適な数となるように調整できる。さらに、中間層数を損失関数に応じた最適な数となるように調整できる。よって、ニューラルネットワークの構造を最適化することが可能となる。
【発明の効果】
【０００８】
本発明によれば、ニューラルネットワークの構造を最適化することが可能なニューラルネットワーク学習装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るニューラルネットワーク学習装置の構成を示すブロック図である。
【図２】図１のニューラルネットワーク学習装置におけるニューラルネットワークの構造を説明する図である。
【図３】図１のニューラルネットワーク学習装置における処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を用いて詳細に説明する。なお、以下の説明において、同一又は相当要素には同一符号を用い、重複する説明は省略する。
【００１１】
図１は、実施形態に係るニューラルネットワーク学習装置の構成を示すブロック図である。図２は、図１のニューラルネットワーク学習装置におけるニューラルネットワークの構造を説明する図である。図１に示すように、ニューラルネットワーク学習装置１００は、入力又は予め設定された初期構造の階層型のニューラルネットワークを、学習させて最適化する装置である。
【００１２】
ニューラルネットワークは、人間の脳の情報処理機構を模した数理モデルであり、学習というプロセスを介して、必要とされる情報処理を実現する。ニューラルネットワークは、例えば、パターン認識及び連想記憶等の処理に適用することができる。ニューラルネットワーク学習装置１００で得られる最適化したニューラルネットワークとは、対象とする問題に対する答えを出力する、適切なネットワーク構造を有するニューラルネットワークを意味する。まず、ニューラルネットワーク学習装置１００が対象とする階層型のニューラルネットワークの一例について説明する。
【００１３】
図２に示すように、ニューラルネットワーク１は、入力層２、１又は複数の中間層４及び出力層６を備え、各層にそれぞれ、ｎｉ，ｎｍ，ｎｏ個のニューロン８を含む。図示する一例では、例えばパターン認識として４クラスに識別すべく、出力層６が４つのニューロン８を含む４次元のものとされている。
【００１４】
ニューロン８とは、ニューラルネットワーク１を構成する一素子である。ニューロン８は、生体の神経細胞を厳密に模倣したものではなく、神経細胞の特定の機能を抽出して単純化した数理モデルである。ニューロン８は、素子、ユニット、又はニューロンモデルとも称される。中間層４は、隠れ層とも称される。
【００１５】
中間層４の数及び中間層４のニューロン数ｎｍは、後述するように、適応的に変化する。入力データｘの各成分を受け取った入力層２のニューロン８は、入力データｘをそのまま出力する。中間層４のニューロン８は、入力データｘのベクトルを受け取り、下式（１）で表される反応強度Ｂｂ（ｘ）を出力する。ここで、Ｓａ（ｘ）は、中間層４のニューロン８が単体時に出力する単体反応強度であり、下式（２）で与えられる。μａは、ニューロン８の反応中心、σａはニューロン８の反応幅である。中間層４の各ニューロン８は競合関係にあり、それらの反応強度の和は全ての入力に対して１に保たれる。
【数１】
0006287999.tif 000002
【数２】
0006287999.tif 000003
【００１６】
出力層６のニューロンｃは、中間層４のニューロン８との間の結合荷重ｗによって重みづけられた中間層４の各ニューロン８の反応強度を受け、その線形和を出力する。ニューラルネットワーク１の出力データｙは、下式（３）で表すことができる。なお、以下では、反応中心μ、反応幅σ及び結合荷重ｗをパラメータξでひとまとめに表現する場合がある。結合荷重は、例えば、結合係数、結合重み、又は重みとも称される。
【数３】
0006287999.tif 000004
【００１７】
図１に示すように、ニューラルネットワーク学習装置１００は、ＣＰＵ[Central ProcessingUnit]、ＲＯＭ[Read OnlyMemory]、ＲＡＭ[RandomAccess Memory]等を有する電子制御ユニットである。ニューラルネットワーク学習装置１００では、ＲＯＭに記憶されているプログラムをＲＡＭにロードし、ＣＰＵで実行することで、各種の制御を実行する。ニューラルネットワーク学習装置１００は、複数の電子制御ユニットから構成されていてもよい。ニューラルネットワーク学習装置１００は、例えば汎用コンピュータにより構成できる。
【００１８】
ニューラルネットワーク学習装置１００は、初期構造取得部１０と、演算部１２とを有している。初期構造取得部１０は、初期構造を有するニューラルネットワーク１を取得する。例えば初期構造取得部１０は、初期構造のニューラルネットワーク１を、外部からの入力により、又は、予め設定することにより取得する。例えば初期構造のニューラルネットワーク１においては、中間層４は１層とされ、中間層４のニューロン数は複数とされ、各ニューロン８の結合荷重ｗは、予め設定された初期荷重値とされている。演算部１２は、初期構造取得部１０で取得した初期構造のニューラルネットワーク１を最適化する演算を行う。
【００１９】
本実施形態において、演算部１２は、データベース２０、学習部３０及び中間層生成部４０を備えている。データベース２０は、複数の学習データ（学習サンプルとも称される）を予め記憶して格納する。学習データは、ニューラルネットワーク１を学習するためのデータである。学習データは、入力データと結果の規範としての教師データとの組で表されるデータである。学習データは、例えば実測又はシミュレーション等により得ることができる。データベース２０は、学習部３０の処理に用いられる後述の第１閾値ｔｈ_ｅ、基準変化量ｔｈ_ｄ、基準回数ｔｈ_ｃ、基準合計値ｔｈ_ｗ、及び、基準ニューロン数ｔｈ_ｎを予め記憶して格納する。データベース２０は、中間層生成部４０の処理に用いられる後述の第２閾値ｔｈ_ｅ２、及び、基準追加数Ｎ１を予め記憶して格納する。
【００２０】
学習部３０は、複数の学習データによりニューラルネットワーク１を学習させる学習処理を行う。学習処理は、データ読込処理、結合荷重修正処理、ニューロン生成処理、及びニューロン消滅処理を含む。学習部３０は、学習データ読込部３２と、結合荷重修正部３４と、ニューロン生成部３６と、ニューロン消滅部３８と、を有している。
【００２１】
学習データ読込部３２は、データ読込処理を実行する。データ読込処理は、データベース２０から学習データを読み込む処理である。例えばデータ読込処理では、データベース２０に記憶された複数の学習データの１つを読み込む。学習データ読込部３２は、読み込んだ学習データを結合荷重修正部３４へ出力する。
【００２２】
結合荷重修正部３４は、結合荷重修正処理を実行する。結合荷重修正処理は、学習データ読込部３２のデータ読込処理で学習データを読み込んだ場合、当該学習データを用いてニューラルネットワーク１の損失関数を算出し、算出した損失関数に応じてニューラルネットワーク１の結合荷重ｗを修正する。例えば結合荷重修正処理では、誤差逆伝播法（バックプロパゲーション法）により結合荷重ｗを修正する。
【００２３】
誤差逆伝播法は、ニューラルネットワーク１を学習させる学習法の一つであり、学習データを用いてニューラルネットワーク１の結合荷重を決定する。誤差逆伝播法は、入力データに対しての教師データを、ニューラルネットワーク１から得られる実際の出力データと照らし合わせ、その誤差を基に各結合荷重ｗを出力層６側から入力層２側へ変化させていく手法である。損失関数は、複数の学習データによるニューラルネットワーク１の各損失の総和に基づく値として求めることができる。例えばニューラルネットワーク１の出力データは２乗誤差によって評価できることから、１つの学習データに着目した場合の損失関数ｒは、下式（４）により求めることができる。ｚは教師データである。損失関数は、例えば損失係数、誤差関数、学習誤差、又はエラーとも称される。
【数４】
0006287999.tif 000005
【００２４】
損失関数は、ネットワークにおけるパラメータξによって微分可能である。例えば２乗誤差を極小とする学習則として確率的降下法を採用すると、パラメータξの更新則は、各学習データに対して、下式（５）で与えられる。εは、学習係数であり、十分に小さい正の定数である。
【数５】
0006287999.tif 000006
【００２５】
∇ξは、パラメータξについてのグラジエントであり、∇ξｙｃを書き下すと下式（６）〜（８）が与えられる。下式（６）〜（８）で示されるように、中間層４の１つのニューロン８が支配的である学習データによっては、主にそのニューロン８の結合荷重ｗの学習が進む。中間層４の複数のニューロン８が出力に影響を及ぼす学習データによっては、それらの複数のニューロン８の結合荷重ｗ、反応中心μ及び反応幅σの学習が進む。なお、損出関数の算出及び結合荷重ｗの修正については、上述した手法に限定されず、種々の公知手法を用いることができる。損失関数としては、２乗誤差に基づく関数以外に、例えば交差エントロピ誤差に基づく関数を用いることもできる。
【数６】
0006287999.tif 000007
【００２６】
結合荷重修正処理では、後述するニューロン生成処理でニューロン８を新たに生成した場合、及び、後述するニューロン消滅処理でニューロン８の一部を消滅させた場合のうちの何れかの場合、読み込んだ学習データを用いてニューラルネットワーク１の損失関数を再度算出し、この損失関数に応じてニューラルネットワーク１の結合荷重ｗを再度修正する。
【００２７】
ニューロン生成部３６は、ニューロン生成処理を実行する。ニューロン生成処理は、結合荷重修正部３４による結合荷重修正処理の実行後、算出した損失関数が第１閾値ｔｈ_ｅよりも大きい場合に、ニューラルネットワーク１の中間層４にニューロン８を新たに生成する処理である。ニューロン生成処理では、結合荷重修正処理の実行後、当該結合荷重修正処理で算出した損失関数が第１閾値ｔｈ_ｅよりも大きく、損失関数の変化量が基準変化量ｔｈ_ｄよりも小さく、且つ、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かを判定する。当該判定結果がＹｅｓの場合に、ニューロン８を生成する対象の１又は複数の中間層４において、予め設定された値のパラメータξを有するニューロン８を１つ生成する。
【００２８】
例えば、新たに追加するニューロン８のパラメータξは、下式（９）〜（１１）と設定することができる。ｙ（ｎｍ）は、中間層４のニューロン数がｎｍ個である出力データであり、Ｂ（ｎｍ＋１）ｎｍ＋１は、中間層４のニューロン数が（ｎｍ＋１）であるニューラルネットワーク１の（ｎｍ＋１）番目の素子の反応強度である。γは反応幅の局所性を定める正の定数である。
【数７】
0006287999.tif 000008
【００２９】
ニューロン生成処理では、ニューラルネットワーク１に存在する中間層４が１つの場合には、その中間層４をニューロン８を生成する対象の中間層（以下、「生成対象中間層」という）としてもよい。ニューラルネットワーク１の中間層４が複数存在する場合には、複数の中間層４のうち任意の少なくとも１つを生成対象中間層としてもよい。後述の中間層生成処理で追加中間層が新たな中間層４として生成されている場合には、この新たに生成された追加中間層を生成対象中間層としてもよい。生成対象中間層の選定については限定されず、公知の手法を用いることができる。
【００３０】
なお、ニューロン生成処理により生成するニューロン数は１つに限定されず、複数のニューロン８を生成してもよい。また、ニューロン生成処理によるニューロン８の生成については、上述した手法に限定されず、種々の公知手法を用いることができる。
【００３１】
ニューロン消滅部３８は、ニューロン消滅処理を実行する。ニューロン消滅処理は、結合荷重修正部３４による結合荷重修正処理の実行後、ニューラルネットワーク１の中間層４における複数のニューロン８の結合荷重ｗの合計値が、基準合計値ｔｈ_ｗよりも小さい場合、当該中間層４のニューロン８の一部を消滅させる処理である。ニューロン消滅処理では、結合荷重修正処理の実行後、ニューロン８を消滅させる対象の１又は複数の中間層４において、各ニューロン８の結合荷重ｗの合計値が基準合計値ｔｈ_ｗよりも小さく、ニューロン数が基準ニューロン数ｔｈ_ｎよりも大きく、且つ、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かを判定する。当該判定結果がＹｅｓの場合に、当該中間層４における１又は複数のニューロン８を消滅させる。
【００３２】
例えば、消滅させるニューロン８は、消滅させた場合に下式（１２）を満たすものとすることができる。ただし、θはニューロン８の削除されやすさを定める正の定数である。ニューロン８の消滅による出力データの変化を小さくするために、結合荷重ｗを下式（１３）に従って修正してもよい。
【数８】
0006287999.tif 000009
【００３３】
ニューロン消滅処理では、ニューラルネットワーク１に存在する中間層４が１つの場合には、その中間層４をニューロン８を消滅させる対象の中間層（以下、「消滅対象中間層」という）としてもよい。ニューラルネットワーク１の中間層４が複数存在する場合には、複数の中間層４のうち任意の少なくとも１つを消滅対象中間層としてもよい。後述の中間層生成部４０で追加中間層が新たな中間層４として生成されている場合には、この新たに生成された追加中間層を消滅対象中間層としてもよい。消滅対象中間層は、ニューロン生成処理の生成対象中間層と同じ中間層としてもよい。消滅対象中間層の選定については限定されず、公知の手法を用いることができる。なお、ニューロン消滅処理によるニューロン８の消滅については、上述した手法に限定されず、種々の公知手法を用いることができる。
【００３４】
上記において、損失関数の変化量とは、繰り返し実行される結合荷重修正処理において、前回算出された損失関数と今回算出された損出関数との差異である。損失関数の変化量は、例えば、連続する複数回の結合荷重修正処理における各損出関数を、結合荷重修正部３４に記憶することで求めることができる。構造不変回数とは、繰り返し実行される結合荷重修正処理の回数のうち、ネットワーク構造（ニューロン数）の変化がない状態が続いている回数である。構造不変回数は、例えば、結合荷重修正部３４において、結合荷重修正処理の実行の都度にカウントアップすると共に、ニューロン生成処理及びニューロン消滅処理でニューロン数を増減した場合に当該カウントをクリアすることにより求めることができる。
【００３５】
第１閾値ｔｈ_ｅ、基準変化量ｔｈ_ｄ及び基準回数ｔｈ_ｃは、ニューロン生成処理でニューロン８を生成するか否かを適切に判定するために予め設定された値である。基準合計値ｔｈ_ｗ、基準ニューロン数ｔｈ_ｎ及び基準回数ｔｈ_ｃは、ニューロン消滅処理でニューロン８を消滅させるか否かを適切に判定するために予め設定された値である。これらの値は、固定の値であってもよいし、変動する値であってもよく、例えば経験又は理論等に基づき得ることができる。
【００３６】
中間層生成部４０は、中間層生成処理を実行する。中間層生成処理は、学習部３０による学習処理の実行後、算出した損失関数が第２閾値ｔｈ_ｅ２よりも大きい場合に、少なくとも１つのニューロン８を含む追加中間層を、ニューラルネットワークの中間層４として新たに生成する処理である。中間層生成処理は、学習処理の実行後、結合荷重修正処理で算出した損失関数が第２閾値ｔｈ_ｅ２よりも大きく、且つ、当該中間層生成処理で既に生成している追加中間層の数が基準追加数Ｎ１よりも小さいか否かを判定する。当該判定結果がＹｅｓの場合に、追加中間層を１層新たに生成し、中間層４の総レイヤー数を増やす。追加中間層の数は、例えば、中間層生成部４０において、中間層生成処理により追加中間層を生成する都度、生成する追加中間層の数をカウントアップすることにより求めることができる。
【００３７】
中間層生成処理では、例えばニューラルネットワーク１において最も出力層６側の中間層４と出力層６との間に、追加中間層を中間層４として新たに生成する。追加中間層におけるニューロン８の数は、１つでもよいし、複数でもよい。追加中間層のニューロン８の結合荷重ｗは、予め設定された初期荷重値とされている。ニューラルネットワーク１において追加中間層を生成する位置は、特に限定されず、複数の中間層４の間に生成してもよいし、最も入力層２側の中間層４と入力層２との間に生成してもよい。生成する追加中間層の数は、１つでもよいし複数でもよい。
【００３８】
本実施形態において、学習部３０は、中間層生成処理で追加中間層を中間層４として新たに生成した場合、この追加中間層が生成されたニューラルネットワーク１にて学習処理を再度改めて実行する。すなわち、学習部３０は、中間層生成処理により追加中間層を中間層４として含む新たなニューラルネットワーク１を構築した場合、当該新たなニューラルネットワーク１において、上述したデータ読込処理と結合荷重修正処理とニューロン生成処理とニューロン消滅処理とを再度改めて実行する。
【００３９】
次に、ニューラルネットワーク学習装置１００で実行される学習処理及び中間層生成処理の一例について、図３に示すフローチャートを参照して説明する。
【００４０】
まず、演算部１２は、初期構造取得部１０で取得した初期構造のニューラルネットワーク１を有している。データベース２０には、上述したように、複数の学習データ、第１閾値ｔｈ_ｅ、基準変化量ｔｈ_ｄ、基準回数ｔｈ_ｃ、基準合計値ｔｈ_ｗ、基準ニューロン数ｔｈ_ｎ、第２閾値ｔｈ_ｅ２、及び、基準追加数Ｎ１が予め記憶されている。初期構造のニューラルネットワーク１では、中間層４が１層とされ、各ニューロン８の結合荷重ｗが初期荷重値とされている。
【００４１】
ニューラルネットワーク学習装置１００では、図３に示すように、学習データ読込部３２により、データベース２０から学習データを読み込む（Ｓ１）。結合荷重修正部３４により、学習データを用いて損失関数を算出し、当該損失関数に応じて結合荷重を修正する（Ｓ２，Ｓ３）。
【００４２】
ニューロン生成部３６により、算出した損失関数が第１閾値ｔｈ_ｅよりも大きく、損失関数の変化量が基準変化量ｔｈ_ｄよりも小さく、且つ、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かを判定する（Ｓ４）。上記Ｓ４でＹＥＳの場合、ニューロン生成部３６により、生成対象中間層である中間層４に新たなニューロン８を１つ生成する（Ｓ５）。上記Ｓ５の後、上記Ｓ２に戻り、結合荷重修正部３４により、学習データを用いて損失関数を再度算出し、当該損失関数に応じて結合荷重ｗを再度修正する。
【００４３】
上記Ｓ４でＮＯの場合、ニューロン消滅部３８により、消滅対象中間層である中間層４において、結合荷重ｗの合計値が基準合計値ｔｈ_ｗよりも小さく、ニューロン数が基準ニューロン数ｔｈ_ｎよりも大きく、且つ、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かを判定する（Ｓ６）。上記Ｓ６でＹＥＳの場合、ニューロン消滅部３８により、消滅対象中間層である中間層４のニューロン８の一部を消滅させる（７）。上記Ｓ７の後、上記Ｓ２に戻り、結合荷重修正部３４により、学習データを用いて損失関数を再度算出し、当該損失関数に応じて結合荷重ｗを再度修正する。
【００４４】
上記Ｓ６でＮＯの場合、データベース２０に記憶された複数の学習データの全てを学習データ読込部３２で読み込んだか否かを判定する（Ｓ８）。上記Ｓ６でＮＯの場合、上記Ｓ１に戻り、学習データ読込部３２により、複数の学習データのうちの未だ読み込んでいない学習データの読込みを行う。
【００４５】
上記Ｓ８でＹＥＳの場合、損失関数が第２閾値ｔｈ_ｅ２よりも大きく、且つ、追加中間層の追加数が基準追加数Ｎ１よりも小さいか否かを判定する（Ｓ９）。上記Ｓ９でＹＥＳの場合、中間層生成部４０により追加中間層を中間層４として新たに生成し、新たな構造のニューラルネットワーク１を構築する（Ｓ１０）。上記Ｓ１０の後、上記Ｓ１に戻り、学習部３０により、追加中間層が生成されたニューラルネットワーク１にて学習処理を改めて再度実行する。上記Ｓ９でＮＯの場合、処理を終了し、ニューラルネットワーク１の最適化が完了する。
【００４６】
以上、ニューラルネットワーク学習装置１００によれば、ニューロン８の数を損失関数及び結合荷重ｗに応じた最適な数となるように調整できる。さらに、中間層４の数を損失関数に応じた最適な数となるように調整できる。よって、ニューラルネットワーク１の構造を最適化することが可能となる。
【００４７】
上記Ｓ１〜Ｓ８が学習処理に対応し、上記Ｓ１，Ｓ８がデータ読込処理に対応し、上記Ｓ２，Ｓ３が結合荷重修正処理に対応し、上記Ｓ４，Ｓ５がニューロン生成処理に対応し、上記Ｓ６，Ｓ７がニューロン消滅処理に対応する。上記Ｓ９，Ｓ１０が中間層生成処理に対応する。
【００４８】
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく様々な形態で実施される。
【００４９】
上記実施形態において、データベース２０は、ニューラルネットワーク学習装置１００と通信可能な他のコンピュータが有していてもよい。初期構造取得部１０は、ニューラルネットワーク学習装置１００と別途に設けられていてもよいし、場合によっては設けられていなくともよい。
【００５０】
上記実施形態では、ニューロン生成処理において、損失関数が第１閾値ｔｈ_ｅよりも大きく、損失関数の変化量が基準変化量ｔｈ_ｄよりも小さく、且つ、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かを判定した（上記Ｓ４参照）。当該判定条件は限定されず、要はニューロン生成処理では、損失関数が第１閾値ｔｈ_ｅよりも大きい場合にニューロン８を生成すればよい。なお、損失関数の変化量が基準変化量ｔｈ_ｄよりも小さいか否かをニューロン生成の判定条件として含むことにより、通常の学習による収束を待ってから、通常の学習ではできない部分を、ニューロンの生成による構造の修正により補うことができる。構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かをニューロン生成の判定条件として含むことにより、同様に、通常の学習による収束を待ってから構造の修正を行うことができる。
【００５１】
上記実施形態では、ニューロン消滅処理において、結合荷重ｗの合計値が基準合計値ｔｈ_ｗよりも小さく、ニューロン数が基準ニューロン数ｔｈ_ｎよりも大きく、且つ、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かを判定した（上記Ｓ６参照）。当該判定条件は限定されず、要はニューロン消滅処理では、結合荷重ｗの合計値が基準合計値ｔｈ_ｗよりも小さい場合にニューロン８の一部を消滅させればよい。なお、ニューロン数が基準ニューロン数ｔｈ_ｎよりも大きいか否かをニューロン消滅の判定条件として含むことにより、ニューロン数が異常に小さくなる（例えば０になり層が消失してしまう）ことを防ぐことができる。構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かをニューロン消滅の判定条件として含むことにより、構造不変回数が基準回数ｔｈ_ｃよりも大きいか否かをニューロン生成の判定条件として含む上述の場合と同様に、通常の学習による収束を待ってから構造の修正を行うことができる。
【００５２】
上記実施形態では、中間層生成処理において、損失関数が第２閾値ｔｈ_ｅ２よりも大きく、且つ、追加中間層の追加数が基準追加数Ｎ１よりも小さいか否かを判定した（上記Ｓ９参照）。当該判定条件は限定されず、要は中間層生成処理では、損失関数が第２閾値ｔｈ_ｅ２よりも大きい場合に追加中間層を生成すればよい。
【００５３】
図３に示す学習処理では、ニューロン生成部３６のニューロン生成処理（Ｓ４，Ｓ５）の後にニューロン消滅部３８のニューロン消滅処理（Ｓ６，Ｓ７）を実行したが、これとは逆に、ニューロン消滅処理の後にニューロン生成処理を実行してもよい。図３に示す学習処理では、複数の学習データの全てを読み込むまで学習データの読込みを繰り返したが、複数の学習データの全てをＮ回（Ｎは１以上の整数）読み込むまで学習データの読込みを繰り返せばよい。
【符号の説明】
【００５４】
１…ニューラルネットワーク、４…中間層、８…ニューロン、３０…学習部、４０…中間層生成部、１００…ニューラルネットワーク学習装置。
【図１】
0006287999.tif 000010
【図２】
0006287999.tif 000011
【図３】
0006287999.tif 000012