(57)【要約】  素子構築部（１３）が、出力値算出部（１２）により算出された中間層（２）に含まれている１つ以上の素子の出力値と閾値とを比較し、中間層（２）に含まれている１つ以上の素子の出力値のうち、いずれかの出力値が閾値より大きければ、中間層（２）に含まれている素子の数を維持し、中間層（２）に含まれている１つ以上の素子の出力値の全てが閾値以下であれば、中間層（２）に含まれている素子の数を増やすように構成する。
2018066032.tif 000002
【特許請求の範囲】
【請求項１】
入出力応答がガウス関数で決定される素子を含む中間層を備えるニューラルネットワークを構築する際に、前記ニューラルネットワークの入力層に含まれている素子の出力値に従って前記中間層に含まれている１つ以上の素子の出力値を算出する出力値算出部と、
前記出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、前記中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が前記閾値より大きければ、前記中間層に含まれている素子の数を維持し、前記中間層に含まれている１つ以上の素子の出力値の全てが前記閾値以下であれば、前記中間層に含まれている素子の数を増やす素子構築処理を実施する素子構築部と
を備えたネットワーク構築装置。
【請求項２】
前記中間層に含まれている素子毎に、当該素子に関するガウス関数のパラメータを初期設定する初期設定部を備え、
前記出力値算出部は、前記初期設定部により初期設定されたパラメータを有するガウス関数に対して、前記入力層に含まれている素子の出力値を代入することで、前記中間層に含まれている素子の出力値を算出することを特徴とする請求項１記載のネットワーク構築装置。
【請求項３】
前記素子構築部により素子構築処理が実施された後、学習データが前記入力層に与えられたときに前記ガウス関数のパラメータの学習を行う教師有学習を実施することで、前記ガウス関数のパラメータを更新するとともに、前記中間層に含まれている素子と出力層に含まれている素子との間の重みを更新するパラメータ更新部を備えたことを特徴とする請求項２記載のネットワーク構築装置。
【請求項４】
前記パラメータ更新部は、前記教師有学習を実施することで、前記入力層に含まれている素子と前記中間層に含まれている素子との間の重みを更新することを特徴とする請求項３記載のネットワーク構築装置。
【請求項５】
前記出力値算出部は、前記ガウス関数のパラメータの１つとして、前記中間層に含まれている各々の素子に対する前記ガウス関数におけるガウス分布の標準偏差値を用いることを特徴とする請求項２記載のネットワーク構築装置。
【請求項６】
前記出力値算出部は、前記中間層に含まれている各々の素子に対する前記ガウス分布の標準偏差値として、前記入力層に含まれている複数の素子の出力値の標準偏差値を用いることを特徴とする請求項５記載のネットワーク構築装置。
【請求項７】
前記出力値算出部は、前記中間層に含まれている各々の素子に対する前記ガウス分布の標準偏差値として、正の実数を用いることを特徴とする請求項５記載のネットワーク構築装置。
【請求項８】
前記素子構築部は、前記閾値として、１以下の正の実数を用いることを特徴とする請求項１記載のネットワーク構築装置。
【請求項９】
前記素子構築部は、前記閾値として、ｅ−０．２５以上１以下の正の実数を用いることを特徴とする請求項１記載のネットワーク構築装置。
【請求項１０】
前記パラメータ更新部は、前記ガウス関数のパラメータとして、前記ガウス関数におけるガウス分布の標準偏差値を示すパラメータ、前記ガウス関数の中心座標を示すパラメータのうち、いずれか１つ以上のパラメータを更新することを特徴とする請求項３記載のネットワーク構築装置。
【請求項１１】
前記ニューラルネットワークがＧ（Ｇは２以上の整数）層の中間層を備え、前記Ｇ層の中間層が前記入力層と出力層の間に縦続に接続されており、
前記出力値算出部は、前記入力層に含まれている素子の出力値が１層目の中間層に含まれている１つ以上の素子に与えられると、前記入力層に含まれている素子の出力値に従って１層目の中間層に含まれている１つ以上の素子の出力値を算出し、（ｇ−１）層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子の出力値がｇ層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている１つ以上の素子に与えられると、（ｇ−１）層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子の出力値に従ってｇ層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値を算出し、
前記素子構築部は、前記出力値算出部により算出されたｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値と前記閾値を比較し、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が前記閾値より大きければ、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている素子の数を維持し、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値の全てが前記閾値以下であれば、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている素子の数を増やす素子構築処理を実施することを特徴とする請求項１記載のネットワーク構築装置。
【請求項１２】
前記素子構築部により素子構築処理が実施された後、学習データが前記入力層に与えられたときにＧ（Ｇは２以上の整数）層の中間層に含まれている素子に関するガウス関数のパラメータの学習を行う教師有学習を実施することで、前記ガウス関数のパラメータを更新するとともに、Ｇ層目の中間層に含まれている素子と出力層に含まれている素子との間の重みを更新するパラメータ更新部を備えたことを特徴とする請求項１１記載のネットワーク構築装置。
【請求項１３】
前記パラメータ更新部は、前記教師有学習を実施することで、（ｇ−１）層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子とｇ層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子との間の重みを更新することを特徴とする請求項１２記載のネットワーク構築装置。
【請求項１４】
前記パラメータ更新部は、前記教師有学習を実施することで、前記入力層に含まれている素子と１層目の中間層に含まれている素子との間の重みを更新することを特徴とする請求項１２記載のネットワーク構築装置。
【請求項１５】
前記ニューラルネットワークが備える中間層の層数を決定する層数決定部を備えたことを特徴とする請求項１１記載のネットワーク構築装置。
【請求項１６】
前記層数決定部は、前記ニューラルネットワークにおけるデータの入出力時間と、前記入出力時間の許容時間とから、前記中間層の層数を決定することを特徴とする請求項１５記載のネットワーク構築装置。
【請求項１７】
前記層数決定部は、前記ニューラルネットワークの学習時間と、前記学習時間の許容時間とから、前記中間層の層数を決定することを特徴とする請求項１５記載のネットワーク構築装置。
【請求項１８】
出力値算出部が、入出力応答がガウス関数で決定される素子を含む中間層を備えるニューラルネットワークを構築する際に、前記ニューラルネットワークの入力層に含まれている素子の出力値に従って前記中間層に含まれている１つ以上の素子の出力値を算出し、
素子構築部が、前記出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、前記中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が前記閾値より大きければ、前記中間層に含まれている素子の数を維持し、前記中間層に含まれている１つ以上の素子の出力値の全てが前記閾値以下であれば、前記中間層に含まれている素子の数を増やす素子構築処理を実施する
ネットワーク構築方法。
【請求項１９】
初期設定部が、前記中間層に含まれている素子毎に、当該素子に関するガウス関数のパラメータを初期設定し、
前記出力値算出部が、前記初期設定部により初期設定されたパラメータを有するガウス関数に対して、前記入力層に含まれている素子の出力値を代入することで、前記中間層に含まれている素子の出力値を算出することを特徴とする請求項１８記載のネットワーク構築方法。
【請求項２０】
パラメータ更新部が、前記素子構築部により素子構築処理が実施された後、学習データが前記入力層に与えられたときに前記ガウス関数のパラメータの学習を行う教師有学習を実施することで、前記ガウス関数のパラメータを更新するとともに、前記中間層に含まれている素子と出力層に含まれている素子との間の重みを更新することを特徴とする請求項１９記載のネットワーク構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ニューラルネットワークを構築するネットワーク構築装置及びネットワーク構築方法に関するものである。
【背景技術】
【０００２】
ニューラルネットワークは、入力層、中間層及び出力層が縦続に接続されているネットワークである。
ニューラルネットワークは、事前に入力データと出力データの相関関係を学習することで、任意の入力データが与えられたときに、任意の入力データに対応する出力データを予測する近似関数の一種である。【０００３】
中間層に含まれる素子の数などのニューラルネットワークの構造は、ニューラルネットワークの設計者によって手動で決定されることが多いが、ニューラルネットワークを熟知していない設計者は、ニューラルネットワークの構造を適正に決定することが困難である。
以下の非特許文献１には、ＡｉＳ（Ａｄｄ  ｉｆ  Ｓｉｌｅｎｔ）と呼ばれている手法を用いて、ニューラルネットワークの構造を自動的に決定するネットワーク構築方法が開示されている。
このニューラルネットワークは、ネオコグニトロンと呼ばれる生物の視覚情報処理を模倣したニューラルネットワークであり、このニューラルネットワークの中間層に含まれる素子は、入出力応答が正規化線形関数で決定される素子である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Fukushima, K.: “Artificial vision by multi-layered neural networks: Neocognitron and its advances”, Neural Networks, vol. 37, pp. 103-119 (2013).
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のネットワーク構築方法は以上のように構成されているので、中間層に含まれる素子が、入出力応答が正規化線形関数で決定される素子であれば、中間層に含まれる素子の数などを自動的に決定することができる。しかし、中間層に含まれる素子が、入出力応答がガウス関数で決定される素子である場合、ＡｉＳと呼ばれている手法を用いても、中間層に含まれる素子の数などを自動的に決定することができないという課題があった。【０００６】
この発明は上記のような課題を解決するためになされたもので、中間層に含まれる素子が、入出力応答がガウス関数で決定される素子であっても、中間層に含まれる素子の数を自動的に決定することができるネットワーク構築装置及びネットワーク構築方法を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るネットワーク構築装置は、入出力応答がガウス関数で決定される素子を含む中間層を備えるニューラルネットワークを構築する際に、ニューラルネットワークの入力層に含まれている素子の出力値に従って中間層に含まれている１つ以上の素子の出力値を算出する出力値算出部を設け、素子構築部が、出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が閾値より大きければ、中間層に含まれている素子の数を維持し、中間層に含まれている１つ以上の素子の出力値の全てが閾値以下であれば、中間層に含まれている素子の数を増やす素子構築処理を実施するようにしたものである。
【発明の効果】
【０００８】
この発明によれば、素子構築部が、出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が閾値より大きければ、中間層に含まれている素子の数を維持し、中間層に含まれている１つ以上の素子の出力値の全てが閾値以下であれば、中間層に含まれている素子の数を増やす素子構築処理を実施するように構成したので、中間層に含まれる素子が、入出力応答がガウス関数で決定される素子であっても、中間層に含まれる素子の数を自動的に決定することができる効果がある。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１によるネットワーク構築装置を示す構成図である。
【図２】この発明の実施の形態１によるネットワーク構築装置のハードウェア構成図である。
【図３】この発明の実施の形態１によるネットワーク構築装置が適用するニューラルネットワークの一例を示す説明図である。
【図４】ネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合のコンピュータのハードウェア構成図である。
【図５】ネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合の処理手順であるネットワーク構築方法を示すフローチャートである。
【図６】ネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合の処理手順であるネットワーク構築方法を示すフローチャートである。
【図７】この発明の実施の形態２によるネットワーク構築装置が適用するニューラルネットワークの一例を示す説明図である。
【図８】ネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合の処理手順であるネットワーク構築方法を示すフローチャートである。
【図９】この発明の実施の形態３によるネットワーク構築装置を示す構成図である。
【図１０】この発明の実施の形態３によるネットワーク構築装置のハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面にしたがって説明する。
【００１１】
ニューラルネットワークの中間層に含まれている素子の入出力応答が正規化線形関数である場合、例えば、想定の範囲を大きく逸脱している正のデータが中間層に入力されると、中間層から大きな正のデータが出力されることが想定される。その結果、出力層からも大きな正のデータが出力されることが想定される。
これにより、例えば、ニューラルネットワークの出力側の装置は、想定の範囲を大きく逸脱しているデータが中間層に入力されると、ニューラルネットワークの出力層から大きな正のデータが出力されるため、大きな影響を受ける可能性がある。
ニューラルネットワークの中間層に含まれている素子の入出力応答がガウス関数である場合、例えば、想定の範囲を大きく逸脱している正又は負のデータが中間層に入力されると、中間層からゼロに近いデータが出力される。その結果、出力層からもゼロに近いデータが出力される。
これにより、例えば、ニューラルネットワークの出力側の装置は、想定の範囲を大きく逸脱しているデータが中間層に入力されても、ニューラルネットワークの出力層からゼロに近いデータが出力されるため、大きな影響を回避することができる。
【００１２】
実施の形態１．
図１はこの発明の実施の形態１によるネットワーク構築装置を示す構成図であり、図２はこの発明の実施の形態１によるネットワーク構築装置のハードウェア構成図である。
図３はこの発明の実施の形態１によるネットワーク構築装置が適用するニューラルネットワークの一例を示す説明図である。
図１から図３において、ニューラルネットワークは、入力層１、中間層２及び出力層３を備えている。
この実施の形態１では、中間層２の層数が１である例を説明し、中間層２の層数が２以上である例は実施の形態２で説明する。
【００１３】
入力層１はＩ（Ｉは１以上の整数）個の素子ａｉ（ｉ＝１，・・・，Ｉ）を含んでおり、例えば、センサーなどからＭ（Ｍは１以上の整数）個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）が順次与えられる。ｍ＝１，２，・・・，Ｍである。
学習データｘｍの次元数はＩであり、学習データｘｍに含まれているｘｉｍ（ｉ＝１，・・・，Ｉ）を成分データと称する。
入力層１は学習データｘｉｍのｉ番目の成分データｘｉｍ（ｉ＝１，・・・，Ｉ）が、ｉ番目の素子ａｉ（ｉ＝１，・・・，Ｉ）に与えられると、中間層２に含まれているｊ番目の素子ｂｊ（ｊ＝１，・・・，Ｊ）に対するｉ番目の素子ａｉの出力値として、ｙｉ＝ｘｉｍを出力する。
【００１４】
中間層２はＪ（Ｊは１以上の整数）個の素子ｂｊ（ｊ＝１，・・・，Ｊ）を含んでおり、ｊ番目の素子ｂｊは、入出力応答がガウス関数で決定される素子である。
ただし、この実施の形態１では、説明の便宜上、ネットワーク構築装置によるネットワークの構築前は、中間層２が含んでいる素子の数はゼロであるものとする。これは一例に過ぎず、ネットワーク構築装置によるネットワークの構築前でも、中間層２が１つ以上の素子を含んでいてもよい。
中間層２は入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ（ｉ＝１，・・・，Ｉ）がｊ番目の素子ｂｊに与えられると、Ｉ個の素子ａｉの出力値ｙｉからｊ番目の素子ｂｊの出力値ｚｊ（ｊ＝１，・・・，Ｊ）を算出し、素子ｂｊの出力値ｚｊを出力層３に出力する。
【００１５】
出力層３は素子ｃを含んでおり、素子ｃは、例えば、中間層２と出力層３との間の重みｖｊ（ｊ＝１，・・・，Ｊ）と、中間層２に含まれているＪ個の素子ｂｊの出力値ｚｊ（ｊ＝１，・・・，Ｊ）との積の総和を算出し、その総和を出力する。
図３では、出力層３が含んでいる素子ｃの個数が１つである例を示しているが、複数の素子ｃを含んでいてもよい。
【００１６】
初期設定部１１は例えば図２の初期設定回路２１で実現されるものである。
初期設定部１１は中間層２に含まれている素子毎に、当該素子ｂｊに関するガウス関数のパラメータを初期設定する処理を実施する。
初期設定部１１は、ガウス関数のパラメータとして、例えば、ガウス分布の標準偏差値σｉ，ｊと、ガウス関数の中心座標μｉ，ｊと、入力層１に含まれているｉ番目の素子ａｉと中間層２に含まれているｊ番目の素子ｂｊとの間の重みＷｉ，ｊとを初期設定する。
ガウス分布の標準偏差値σｉ，ｊは、中間層２に含まれているｊ番目の素子ｂｊに対する例えばＩ個の素子ａｉの出力値ｙｉ（ｉ＝１，・・・，Ｉ）の標準偏差値である。
ガウス関数の中心座標μｉ，ｊは、中間層２に含まれているｊ番目の素子ｂｊの中心の成分である。
【００１７】
出力値算出部１２は例えば図２の出力値算出回路２２で実現されるものである。
出力値算出部１２は初期設定部１１からガウス関数のパラメータの初期値として、ガウス分布の標準偏差値σｉ，ｊと、ガウス関数の中心座標μｉ，ｊと、重みＷｉ，ｊとが与えられる。
出力値算出部１２は初期設定部１１から与えられたパラメータの初期値を有するガウス関数に対して、入力層１に含まれている例えばＩ個の素子ａｉの出力値ｙｉ（ｉ＝１，・・・，Ｉ）を代入することで、ｊ番目の素子ｂｊの出力値ｚｊ（ｊ＝１，・・・，Ｊ）を算出する処理を実施する。
【００１８】
素子構築部１３は例えば図２の素子構築回路２３で実現されるものである。
素子構築部１３は出力値算出部１２により算出されたＪ個の素子ｂｊの出力値ｚｊ（ｊ＝１，・・・，Ｊ）と事前に設定された閾値Ｔｈ比較し、中間層２に含まれているＪ個の素子ｂｊの出力値のｚｊうち、いずれかの素子ｂｊの出力値ｚｊが閾値Ｔｈより大きければ、中間層２に含まれている素子ｂｊの数を維持する。
また、素子構築部１３はＪ個の素子ｂｊの出力値ｚｊの全てが閾値Ｔｈ以下であれば、中間層２に含まれている素子ｂｊの数を増やす素子構築処理を実施する。
【００１９】
データ記憶部１４は例えば図２のデータ記憶回路２４で実現されるものである。
データ記憶部１４は中間層２に含まれている素子ｂｊの個数Ｊのほか、初期設定部１１により初期設定された素子ｂｊに関するガウス関数のパラメータ及び出力値算出部１２により算出された素子ｂｊの出力値ｚｊを格納する。
パラメータ更新部１５は例えば図２のパラメータ更新回路２５で実現されるものである。
パラメータ更新部１５は素子構築部１３により素子構築処理が実施された後、学習データが入力層１に与えられたときにガウス関数のパラメータの学習を行う教師有学習を実施することで、データ記憶部１４に格納されているガウス関数のパラメータ及び中間層２に含まれているｊ番目の素子ｂｊと出力層３に含まれている素子ｃとの間の重みｖｊを更新する。
また、パラメータ更新部１５は教師有学習を実施することで、入力層１に含まれているｉ番目の素子ａｉと中間層２に含まれているｊ番目の素子ｂｊとの間の重みＷｉ，ｊを更新する処理を実施する。
【００２０】
図１では、ネットワーク構築装置の構成要素である初期設定部１１、出力値算出部１２、素子構築部１３、データ記憶部１４及びパラメータ更新部１５のそれぞれが、図２に示すような専用のハードウェア、即ち、初期設定回路２１、出力値算出回路２２、素子構築回路２３、データ記憶回路２４及びパラメータ更新回路２５で実現されるものを想定している。
ここで、データ記憶回路２４は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性又は揮発性の半導体メモリや、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などが該当する。
また、初期設定回路２１、出力値算出回路２２、素子構築回路２３及びパラメータ更新回路２５は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、または、これらを組み合わせたものが該当する。
【００２１】
ただし、ネットワーク構築装置の構成要素は、専用のハードウェアで実現されるものに限るものではなく、ネットワーク構築装置がソフトウェア、ファームウェア、または、ソフトウェアとファームウェアとの組み合わせで実現されるものであってもよい。
ソフトウェアやファームウェアはプログラムとして、コンピュータのメモリに格納される。コンピュータは、プログラムを実行するハードウェアを意味し、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などが該当する。
【００２２】
図４はネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合のコンピュータのハードウェア構成図である。
ネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合、データ記憶部１４をコンピュータのメモリ３１上に構成するとともに、初期設定部１１、出力値算出部１２、素子構築部１３及びパラメータ更新部１５の処理手順をコンピュータに実行させるためのプログラムをメモリ３１に格納し、コンピュータのプロセッサ３２がメモリ３１に格納されているプログラムを実行するようにすればよい。
図５及び図６はネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合の処理手順であるネットワーク構築方法を示すフローチャートである。
【００２３】
また、図２ではネットワーク構築装置の構成要素のそれぞれが専用のハードウェアで実現される例を示し、図４では、ネットワーク構築装置がソフトウェアやファームウェアなどで実現される例を示しているが、ネットワーク構築装置における一部の構成要素が専用のハードウェアで実現され、残りの構成要素がソフトウェアやファームウェアなどで実現されるものであってもよい。
【００２４】
次に動作について説明する。
この実施の形態１におけるネットワーク構築装置の処理内容は、大きく２つの処理内容に大別される。
第１の処理内容は、中間層２の構造を決定する処理内容、即ち、中間層２に含まれる素子ｂｊの個数Ｊを決定するとともに、素子ｂｊに関するガウス関数のパラメータを初期設定する処理内容である（図５のステップＳＴ１）。
第２の処理内容は、教師有学習を実施することで、初期設定されたガウス関数のパラメータ及び入力層１に含まれているｉ番目の素子ａｉと中間層２に含まれているｊ番目の素子ｂｊとの間の重みＷｉ，ｊを更新する処理内容である（図５のステップＳＴ２）。
【００２５】
以下、図６を参照しながら、第１の処理内容を具体的に説明する。
この実施の形態１では、中間層２に含まれている素子ｂｊの個数Ｊの初期値が０個であるものとする。
素子構築部１３は、第１の処理内容を実行するに際して、中間層２の中に素子ｂｊが含まれているか否かを判定する。
即ち、素子構築部１３は、中間層２に含まれている素子ｂｊの個数Ｊが０個であるか否かを判定する（図６のステップＳＴ１１）。
【００２６】
素子構築部１３は、中間層２に含まれている素子ｂｊの個数Ｊが０個であると判定すると（図６のステップＳＴ１１：ＹＥＳの場合）、中間層２の中に新たな素子ｂｊを１個追加する。即ち、素子構築部１３は、中間層２の中に素子ｂ１を作成する（図６のステップＳＴ１２）。
素子構築部１３は、中間層２に含まれている素子ｂｊの個数Ｊが０個でないと判定すると（図６のステップＳＴ１１：ＮＯの場合）、この段階では、中間層２の中に新たな素子ｂｊを追加する処理を行わない。この実施の形態１では、中間層２に含まれている素子ｂｊの個数Ｊの初期値を０個としているので、ここでは、素子構築部１３が中間層２の中に素子ｂ１を作成する。
【００２７】
初期設定部１１は、素子構築部１３が中間層２の中に素子ｂ１を作成すると、既に、Ｍ個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）の全てを取得しているか否かを判定する（図６のステップＳＴ１３）。
初期設定部１１は、既にＭ個の学習データｘｍを取得していれば（図６のステップＳＴ１３：ＹＥＳの場合）、中間層２の構造を決定する第１の処理内容を終了する。
初期設定部１１は、未だＭ個の学習データｘｍを取得していなければ（図６のステップＳＴ１３：ＮＯの場合）、未だ取得していない学習データｘｍを取得する（図６のステップＳＴ１４）。
この実施の形態１では、初期設定部１１は、この段階において、Ｍ個の学習データｘｍを取得していないので、未だ取得していない学習データｘｍとして、１個目の学習データｘ１＝（ｘ１１，ｘ２１，・・・，ｘＩ１）を取得する。
初期設定部１１は、１個目の学習データｘ１＝（ｘ１１，ｘ２１，・・・，ｘＩ１）を取得すると、入力層１に含まれているｉ番目の素子ａｉの出力値ｙｉ＝ｘｉ１から、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータを初期設定する（図６のステップＳＴ１５）。
【００２８】
即ち、初期設定部１１は、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの１つとして、ガウス分布の標準偏差値σｉ，１（ｉ＝１，・・・，Ｉ）を初期設定する。
ガウス分布の標準偏差値σｉ，１は、中間層２に含まれている素子ｂ１に対するＩ個の素子ａｉの出力値ｙｉ＝ｘｉ１の標準偏差値であり、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉ１から算出される。標準偏差値σｉ，１の算出処理自体は公知の技術であるため詳細な説明を省略する。
また、初期設定部１１は、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの１つとして、ガウス関数の中心座標μｉ，１（ｉ＝１，・・・，Ｉ）を初期設定する。
ガウス関数の中心座標μｉ，１は、以下の式（１）に示すように、入力層１に含まれているｉ番目の素子ａｉの出力値ｙｉ＝ｘｉ１である。
μｉ，１＝ｘｉ１                          （１）
さらに、初期設定部１１は、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの１つとして、以下の式（２）に示すように、入力層１に含まれているｉ番目の素子ａｉと中間層２に含まれている素子ｂ１との間の重みＷｉ，１（ｉ＝１，・・・，Ｉ）を初期設定する。
Ｗｉ，１＝１                              （２）
ここでは、重みＷｉ，１を１に設定する例を示しているが、これは一例に過ぎず、１以外の値に設定するようにしてもよい。
【００２９】
初期設定部１１は、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータを初期設定すると、そのパラメータの初期値を出力値算出部１２に出力するとともに、そのパラメータの初期値をデータ記憶部１４に格納する。
【００３０】
出力値算出部１２は、初期設定部１１から中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの初期値を取得する。
また、出力値算出部１２は、１個目の学習データｘ１＝（ｘ１１，ｘ２１，・・・，ｘＩ１）を取得する。
【００３１】
出力値算出部１２は、１個目の学習データｘ１を取得すると、中間層２に含まれている素子ｂ１の出力値ｚ１を算出する（図６のステップＳＴ１６）。
即ち、出力値算出部１２は、以下の式（３）に示すガウス関数に対して、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの初期値と、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉ１とを代入することで、中間層２に含まれている素子ｂ１の出力値ｚ１を算出する。
2018066032.tif 000003
出力値算出部１２は、中間層２に含まれている素子ｂ１の出力値ｚ１を算出すると、素子ｂ１の出力値ｚ１を素子構築部１３に出力するとともに、素子ｂ１の出力値ｚ１をデータ記憶部１４に格納する。
【００３２】
素子構築部１３は、出力値算出部１２から素子ｂ１の出力値ｚ１を受けると、素子ｂ１の出力値ｚ１と事前に設定された閾値Ｔｈとを比較する（図６のステップＳＴ１７）。
素子ｂ１の出力値ｚ１は最大で１であるため、閾値Ｔｈとしては、１以下の正の実数、あるいは、ｅ−０．２５以上１以下の正の実数などが考えられる。
【００３３】
素子構築部１３は、中間層２に含まれている素子ｂ１の出力値ｚ１が閾値Ｔｈより大きければ（図６のステップＳＴ１７：ＮＯの場合）、中間層２に含まれている素子の個数Ｊ（Ｊ＝１）を維持する。中間層２に含まれている素子ｂ１の出力値ｚ１が閾値Ｔｈより大きい場合、中間層２に含まれている素子ｂ１は、入力層１に含まれている素子ａ１の出力値ｙ１に対応する素子であると言える。即ち、中間層２に含まれている素子ｂ１は、ガウス関数におけるガウス分布の中心座標を表している素子であると言える。このため、新たな素子ｂ２を中間層２に追加する必要がないため、素子構築部１３は、中間層２に含まれている素子の個数Ｊ（Ｊ＝１）を維持する。
素子構築部１３は、中間層２に含まれている素子ｂ１の出力値ｚ１が閾値Ｔｈ以下であれば（図６のステップＳＴ１７：ＹＥＳの場合）、中間層２に含まれている素子の数が増えるように、新たな素子ｂ２を中間層２に追加する（図６のステップＳＴ１８）。中間層２に含まれている素子ｂ１の出力値ｚ１が閾値Ｔｈ以下である場合、中間層２に含まれている素子ｂ１は、入力層１に含まれている素子ａ１の出力値ｙ１に対応する素子であると言えない。このため、素子構築部１３は、新たな素子ｂ２を中間層２に追加する。
この実施の形態１では、説明の便宜上、中間層２に含まれている素子ｂ１の出力値ｚ１が閾値Ｔｈ以下であるため、新たな素子ｂ２を中間層２に追加するものとする。
【００３４】
初期設定部１１は、素子構築部１３が新たな素子ｂ２を中間層２に追加、あるいは、中間層２に含まれている素子の個数Ｊを維持すると、既に、Ｍ個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）の全てを取得しているか否かを判定する（図６のステップＳＴ１３）。
初期設定部１１は、既にＭ個の学習データｘｍを取得していれば（図６のステップＳＴ１３：ＹＥＳの場合）、中間層２の構造を決定する第１の処理内容を終了する。
初期設定部１１は、未だＭ個の学習データｘｍを取得していなければ（図６のステップＳＴ１３：ＮＯの場合）、未だ取得していない学習データｘｍを取得する（図６のステップＳＴ１４）。
この実施の形態１では、初期設定部１１は、この段階において、Ｍ個の学習データｘｍを取得していないので、未だ取得していない学習データｘｍとして、２個目の学習データｘ２＝（ｘ１２，ｘ２２，・・・，ｘＩ２）を取得する。
初期設定部１１は、２個目の学習データｘ２＝（ｘ１２，ｘ２２，・・・，ｘＩ２）を取得すると、入力層１に含まれているｉ番目の素子ａｉの出力値ｙｉ＝ｘｉ２から、中間層２に含まれている素子ｂ１，ｂ２に関するガウス関数のパラメータを初期設定する（図６のステップＳＴ１５）。
【００３５】
即ち、初期設定部１１は、中間層２に含まれている素子ｂ１，ｂ２に関するガウス関数のパラメータの１つとして、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉ２から、ガウス分布の標準偏差値σｉ，ｊ（ｉ＝１，・・・，Ｉ：ｊ＝１，２）を算出する。
また、初期設定部１１は、中間層２に含まれている素子ｂ１，ｂ２に関するガウス関数のパラメータの１つとして、以下の式（４）に示すように、入力層１に含まれているｉ番目の素子ａｉの出力値ｙｉ＝ｘｉ２をガウス関数の中心座標μｉ，ｊ（ｉ＝１，・・・，Ｉ：ｊ＝１，２）に初期設定する。
μｉ，ｊ＝ｘｉ２                          （４）
さらに、初期設定部１１は、中間層２に含まれている素子ｂ１，ｂ２に関するガウス関数のパラメータの１つとして、以下の式（５）に示すように、入力層１に含まれているｉ番目の素子ａｉ（ｉ＝１，・・・，Ｉ）と中間層２に含まれているｊ番目の素子ｂｊ（ｊ＝１，２）との間の重みＷｉ，ｊを初期設定する。
Ｗｉ，ｊ＝１                              （５）
ここでは、重みＷｉ，ｊを１に設定する例を示しているが、これは一例に過ぎず、１以外の値に設定するようにしてもよい。
【００３６】
初期設定部１１は、中間層２に含まれている素子ｂ１，ｂ２に関するガウス関数のパラメータを初期設定すると、そのパラメータの初期値を出力値算出部１２に出力するとともに、そのパラメータの初期値をデータ記憶部１４に格納する。
【００３７】
出力値算出部１２は、初期設定部１１から中間層２に含まれている素子ｂ１，ｂ２に関するガウス関数のパラメータの初期値を取得する。
また、出力値算出部１２は、２個目の学習データｘ２＝（ｘ１２，ｘ２２，・・・，ｘＩ２）を取得する。
【００３８】
出力値算出部１２は、２個目の学習データｘ２を取得すると、中間層２に含まれている素子ｂ１の出力値ｚ１を算出する（図６のステップＳＴ１６）。
即ち、出力値算出部１２は、以下の式（６）に示すガウス関数に対して、中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの初期値と、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉ２とを代入することで、中間層２に含まれている素子ｂ１の出力値ｚ１を算出する。
中間層２に含まれている素子ｂ１に関するガウス関数のパラメータの初期値は、ガウス分布の標準偏差値σｉ，１（ｉ＝１，・・・，Ｉ）、ガウス関数の中心座標μｉ，１（ｉ＝１，・・・，Ｉ）、重みＷｉ，１（ｉ＝１，・・・，Ｉ）である。
また、出力値算出部１２は、以下の式（６）に示すガウス関数に対して、中間層２に含まれている素子ｂ２に関するガウス関数のパラメータの初期値と、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉ２とを代入することで、中間層２に含まれている素子ｂ２の出力値ｚ２を算出する。
中間層２に含まれている素子ｂ２に関するガウス関数のパラメータの初期値は、ガウス分布の標準偏差値σｉ，２（ｉ＝１，・・・，Ｉ）、ガウス関数の中心座標μｉ，２（ｉ＝１，・・・，Ｉ）、重みＷｉ，２（ｉ＝１，・・・，Ｉ）である。
【００３９】
2018066032.tif 000004
ここでは、式（６）において、Ｉ＝１，・・・，Ｉ、ｊ＝１，２である。
出力値算出部１２は、中間層２に含まれている素子ｂ１の出力値ｚ１及び素子ｂ２の出力値ｚ２を算出すると、素子ｂ１，ｂ２の出力値ｚ１，ｚ２を素子構築部１３に出力するとともに、素子ｂ１，ｂ２の出力値ｚ１，ｚ２をデータ記憶部１４に格納する。
【００４０】
素子構築部１３は、出力値算出部１２から素子ｂ１，ｂ２の出力値ｚ１，ｚ２を受けると、素子ｂ１，ｂ２の出力値ｚ１，ｚ２と閾値Ｔｈとを比較する（図６のステップＳＴ１７）。
素子構築部１３は、中間層２に含まれている素子ｂ１，ｂ２の出力値ｚ１，ｚ２のうち、いずれかの出力値が閾値Ｔｈより大きければ（図６のステップＳＴ１７：ＮＯの場合）、中間層２に含まれている素子の個数Ｊ（Ｊ＝２）を維持する。中間層２に含まれている素子ｂ１，ｂ２の出力値ｚ１，ｚ２のうち、いずれかの出力値が閾値Ｔｈより大きい場合、出力値が閾値Ｔｈより大きい素子は、入力層１に含まれている素子の出力値に対応する素子であると言える。このため、新たな素子ｂ３を中間層２に追加する必要がないため、素子構築部１３は、中間層２に含まれている素子の個数Ｊ（Ｊ＝２）を維持する。
素子構築部１３は、中間層２に含まれている素子ｂ１，ｂ２の出力値ｚ１，ｚ２の全てが閾値Ｔｈ以下であれば（図６のステップＳＴ１７：ＹＥＳの場合）、中間層２に含まれている素子の数が増えるように、新たな素子ｂ３を中間層２に追加する（図６のステップＳＴ１８）。中間層２に含まれている素子ｂ１，ｂ２の出力値ｚ１，ｚ２の全てが閾値Ｔｈ以下である場合、中間層２に含まれているいずれの素子も、入力層１に含まれている素子の出力値に対応する素子であると言えない。このため、素子構築部１３は、新たな素子ｂ３を中間層２に追加する。
この実施の形態１では、説明の便宜上、中間層２に含まれている素子ｂ１，ｂ２の出力値ｚ１，ｚ２の全てが閾値Ｔｈ以下であるため、新たな素子ｂ３を中間層２に追加するものとする。
【００４１】
以降、中間層２に含まれている現在の素子の個数がＪ個（Ｊ≧３）であるとして説明する。
初期設定部１１は、素子構築部１３が新たな素子を中間層２に追加、あるいは、中間層２に含まれている素子の個数Ｊを維持すると、既に、Ｍ個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）の全てを取得しているか否かを判定する（図６のステップＳＴ１３）。
初期設定部１１は、既にＭ個の学習データｘｍを取得していれば（図６のステップＳＴ１３：ＹＥＳの場合）、中間層２の構造を決定する第１の処理内容を終了する。
初期設定部１１は、未だＭ個の学習データｘｍを取得していなければ（図６のステップＳＴ１３：ＮＯの場合）、未だ取得していない学習データｘｍを取得する（図６のステップＳＴ１４）。
初期設定部１１は、例えば、Ｍ個の学習データｘｍのうち、未だｍ個目の学習データｘｍを取得していなければ、ｍ個目の学習データｘｍを取得する。
初期設定部１１は、ｍ個目の学習データｘｍを取得すると、入力層１に含まれているｉ番目の素子ａｉの出力値ｙｉ＝ｘｉｍから、中間層２に含まれている素子ｂ１〜ｂＪに関するガウス関数のパラメータを初期設定する（図６のステップＳＴ１５）。
【００４２】
即ち、初期設定部１１は、中間層２に含まれている素子ｂ１〜ｂＪに関するガウス関数のパラメータの１つとして、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉｍから、ガウス分布の標準偏差値σｉ，ｊ（ｉ＝１，・・・，Ｉ：ｊ＝１・・・，Ｊ）を算出する。
また、初期設定部１１は、中間層２に含まれている素子ｂ１〜ｂＪに関するガウス関数のパラメータの１つとして、式（４）に示すように、入力層１に含まれているｉ番目の素子ａｉの出力値ｙｉ＝ｘｉｍをガウス関数の中心座標μｉ，ｊに初期設定する。
さらに、初期設定部１１は、中間層２に含まれている素子ｂ１〜ｂＪに関するガウス関数のパラメータの１つとして、式（５）に示すように、入力層１に含まれているｉ番目の素子ａｉ（ｉ＝１，・・・，Ｊ）と中間層２に含まれているｊ番目の素子ｂｊ（ｊ＝１，・・・，Ｊ）との間の重みＷｉ，ｊを初期設定する。
ここでは、重みＷｉ，ｊを１に設定する例を示しているが、これは一例に過ぎず、１以外の値に設定するようにしてもよい。
【００４３】
初期設定部１１は、中間層２に含まれている素子ｂ１〜ｂＪに関するガウス関数のパラメータを初期設定すると、そのパラメータの初期値を出力値算出部１２に出力するとともに、そのパラメータの初期値をデータ記憶部１４に格納する。
【００４４】
出力値算出部１２は、初期設定部１１から中間層２に含まれている素子ｂ１〜ｂＪに関するガウス関数のパラメータの初期値を取得する。
また、出力値算出部１２は、ｍ個目の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）を取得する。
【００４５】
出力値算出部１２は、ｍ個目の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）を取得すると、中間層２に含まれている素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪを算出する（図６のステップＳＴ１６）。
即ち、出力値算出部１２は、式（６）に示すガウス関数に対して、中間層２に含まれている素子ｂｊ（ｊ＝１，・・・，Ｊ）に関するガウス関数のパラメータの初期値と、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉｍとを代入することで、中間層２に含まれている素子ｂｊの出力値ｚｊ（ｊ＝１，・・・，Ｊ）を算出する。
中間層２に含まれている素子ｂｊに関するガウス関数のパラメータの初期値は、ガウス分布の標準偏差値σｉ，ｊ（ｉ＝１，・・・，Ｉ：ｊ＝１，・・・，Ｊ）、ガウス関数の中心座標μｉ，ｊ（ｉ＝１，・・・，Ｉ：ｊ＝１，・・・，Ｊ）、重みＷｉ，ｊ（ｉ＝１，・・・，Ｉ：ｊ＝１，・・・，Ｊ）である。
【００４６】
出力値算出部１２は、中間層２に含まれている素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪを算出すると、素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪを素子構築部１３に出力するとともに、素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪをデータ記憶部１４に格納する。
【００４７】
素子構築部１３は、出力値算出部１２から素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪを受けると、素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪと閾値Ｔｈとを比較する（図６のステップＳＴ１７）。
素子構築部１３は、中間層２に含まれている素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪのうち、いずれかの出力値が閾値Ｔｈより大きければ（図６のステップＳＴ１７：ＮＯの場合）、中間層２に含まれている素子の個数Ｊを維持する。
素子構築部１３は、中間層２に含まれている素子ｂ１〜ｂＪの出力値ｚ１〜ｚＪの全てが閾値Ｔｈ以下であれば（図６のステップＳＴ１７：ＹＥＳの場合）、中間層２に含まれている素子の数が増えるように、新たな素子を中間層２に追加する（図６のステップＳＴ１８）。
ステップＳＴ１３〜ＳＴ１８の処理は、Ｍ個の学習データｘｍの全てが取得されるまで繰り返し実施され、ステップＳＴ１３の判定処理で「ＹＥＳ」と判定されると、第１の処理内容が終了する。
【００４８】
パラメータ更新部１５は、第１の処理内容が終了した後、第２の処理内容を実施する。
即ち、パラメータ更新部１５は、第１の処理内容が終了した後、Ｍ個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）が順次与えられる毎に、データ記憶部１４に格納されているガウス関数のパラメータ、即ち、中間層２に含まれているＪ個の素子ｂｊ（ｊ＝１，・・・，Ｊ）に関するガウス関数のパラメータの学習を行う教師有学習を実施することで、データ記憶部１４に格納されているガウス関数のパラメータ及び中間層２に含まれているｊ番目の素子ｂｊと出力層３に含まれている素子ｃとの間の重みｖｊを更新する。
また、パラメータ更新部１５は、教師有学習を実施することで、入力層１に含まれているｉ番目の素子ａｉと中間層２に含まれているｊ番目の素子ｂｊとの間の重みＷｉ，ｊを更新する。
教師有学習自体は公知の技術であるため詳細な説明を省略するが、例えば、公知のバックプロパゲーション法を用いることで、教師有学習を実施することができる。
なお、パラメータ更新部１５は、ガウス関数における全てのパラメータを更新するようにしてもよいが、ガウス関数における一部のパラメータだけを更新するようにしてもよい。
例えば、ガウス分布の標準偏差値σｉ，ｊ、ガウス関数の中心座標μｉ，ｊ及び重みＷｉ，ｊのうち、ガウス関数の中心座標μｉ，ｊを固定して、ガウス分布の標準偏差値σｉ，ｊ及び重みＷｉ，ｊを更新する方法Ａが考えられる。
また、ガウス分布の標準偏差値σｉ，ｊを固定して、ガウス関数の中心座標μｉ，ｊ及び重みＷｉ，ｊを更新する方法Ｂ、重みＷｉ，ｊを固定して、ガウス分布の標準偏差値σｉ，ｊ及びガウス関数の中心座標μｉ，ｊを更新する方法Ｃなどが考えられる。
【００４９】
以上で明らかなように、この実施の形態１によれば、素子構築部１３が、出力値算出部１２により算出された中間層２に含まれている１つ以上の素子ｂｊの出力値ｚｊと閾値Ｔｈとを比較し、中間層２に含まれている１つ以上の素子ｂｊの出力値ｚｊのうち、いずれかの出力値ｚｊが閾値Ｔｈより大きければ、中間層２に含まれている素子ｂｊの数を維持し、中間層２に含まれている１つ以上の素子ｂｊの出力値ｚｊの全てが閾値Ｔｈ以下であれば、中間層２に含まれている素子ｂｊの数を増やすように構成したので、ニューラルネットワークの中間層２に含まれる素子ｂｊが、入出力応答がガウス関数で決定される素子であっても、ニューラルネットワークの中間層２に含まれる素子ｂｊの数を自動的に決定することができる効果を奏する。
【００５０】
実施の形態２．
上記実施の形態１では、ニューラルネットワークが備えている中間層２の層数が１である例を説明している。
この実施の形態２では、ニューラルネットワークが備えている中間層２の層数が２以上である例を説明する。
【００５１】
図７はこの発明の実施の形態２によるネットワーク構築装置が適用するニューラルネットワークの一例を示す説明図である。図７において、図３と同一符号は同一または相当部分を示すので説明を省略する。
中間層２−１〜２−Ｇは入力層１と出力層３の間に縦続に接続されている。
ｇ層目の中間層２−ｇ（ｇ＝１，２，・・・，Ｇ）はＪ（Ｊは１以上の整数）個の素子ｂｊｇ（ｊ＝１，２，・・・，Ｊ）を含んでおり、ｊ番目の素子ｂｊｇは、入出力応答がガウス関数で決定される素子である。
【００５２】
１層目の中間層２−１は図３の中間層２と同様に、入力層１に含まれているＩ個の素子ａｉの出力値ｙｉ＝ｘｉｍがｊ番目の素子ｂｊ１に与えられると、Ｉ個の素子ａｉの出力値ｙｉからｊ番目の素子ｂｊｍの出力値ｚｊｍを算出し、素子ｂｊｍの出力値ｚｊｍを２層目の中間層２−２に出力する。
ｇ層目の中間層２−ｇ（ｇ＝２，３，・・・，Ｇ−１）は（ｇ−１）層目の中間層２−（ｇ−１）に含まれている全ての素子ｂｊｇ−１の出力値ｚｊｇ−１がｊ番目の素子ｂｊｇに与えられると、全ての素子ｂｊｇ−１の出力値ｚｊｇ−１からｊ番目の素子ｂｊｇの出力値ｚｊｇを算出し、素子ｂｊｇの出力値ｚｊｇをＧ層目の中間層２−Ｇに出力する。
Ｇ層目の中間層２−Ｇは（Ｇ−１）層目の中間層２−（Ｇ−１）に含まれている全ての素子ｂｊＧ−１の出力値ｚｊＧ−１がｊ番目の素子ｂｊＧに与えられると、全ての素子ｂｊＧ−１の出力値ｚｊＧ−１からｊ番目の素子ｂｊＧの出力値ｚｊＧを算出し、素子ｂｊＧの出力値ｚｊＧを出力層３に出力する。
図７では、中間層２−１〜２−Ｇに含まれている素子の個数が全て同数であるように表記しているが、後述する素子構築部１３の処理によって、中間層２−１〜２−Ｇに含まれる素子の個数が異なる数に決定されることがあることは言うまでもない。
【００５３】
次に動作について説明する。
上記実施の形態１では、教師有学習を実施する前に、中間層２の構造を決定する例を説明したが、この実施の形態２では、教師有学習を実施する前に、中間層２−１〜２−Ｇの構造を決定する例を説明する。
この実施の形態２では、中間層２−１〜２−Ｇのうち、入力層１側の中間層２−ｇ（ｇ＝１，２，・・・，Ｇ）から順番に、中間層２−ｇの構造を決定する。
【００５４】
図８はネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合の処理手順であるネットワーク構築方法を示すフローチャートである。
中間層２−１〜２−Ｇの中で、最も入力層１側の中間層２−１の構造を決定する処理は、図３の中間層２の構造を決定する処理と同様であるため説明を省略する。
以下、図８を参照しながら、中間層２−ｇ（ｇ＝２，３，・・・，Ｇ）の構造を決定する処理内容を説明する。
この実施の形態２では、中間層２−ｇに含まれている素子ｂｊｇの個数Ｊの初期値が０個であるものとする。
また、中間層２−（ｇ−１）に含まれている素子ｂｊｇ−１の個数Ｊが既にＫ個に決定されており、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１が算出されているものとする。
【００５５】
素子構築部１３は、第１の処理内容を実行するに際して、中間層２−ｇの中に素子ｂｊｇが含まれているか否かを判定する。
即ち、素子構築部１３は、中間層２−ｇに含まれている素子ｂｊｇの個数Ｊが０個であるか否かを判定する（図８のステップＳＴ２１）。
【００５６】
素子構築部１３は、中間層２−ｇに含まれている素子ｂｊｇの個数Ｊが０個であると判定すると（図８のステップＳＴ２１：ＹＥＳの場合）、中間層２−ｇの中に新たな素子ｂｊｇを１個追加する。即ち、素子構築部１３は、中間層２−ｇの中に素子ｂ１ｇを作成する（図８のステップＳＴ２２）。
素子構築部１３は、中間層２−ｇに含まれている素子ｂｊｇの個数Ｊが０個でないと判定すると（図８のステップＳＴ２１：ＮＯの場合）、この段階では、中間層２−ｇの中に新たな素子ｂｊｇを追加する処理を行わない。この実施の形態２では、中間層２−ｇに含まれている素子ｂｊｇの個数Ｊの初期値を０個としているので、ここでは、素子構築部１３が中間層２−ｇの中に素子ｂ１ｇを作成する。
【００５７】
初期設定部１１は、素子構築部１３が中間層２−ｇの中に素子ｂ１ｇを作成すると、既に、Ｍ個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）（ｍ＝１，・・・，Ｍ）が入力層１に与えられており、Ｍ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得しているか否かを判定する（図８のステップＳＴ２３）。
初期設定部１１は、既にＭ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していれば（図８のステップＳＴ２３：ＹＥＳの場合）、中間層２−ｇの構造を決定する第１の処理内容を終了する。
初期設定部１１は、未だＭ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得していなければ（図８のステップＳＴ２３：ＮＯの場合）、未だ取得していない１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得する（図８のステップＳＴ２４）。
この実施の形態２では、初期設定部１１は、この段階において、１個目の学習データｘ１に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得していないので、１個目の学習データｘ１に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得する。
初期設定部１１は、１個目の学習データｘ１に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得すると、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１から、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータを初期設定する（図８のステップＳＴ２５）。
【００５８】
即ち、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの１つとして、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１から、ガウス分布の標準偏差値σｋ，１ｇ（ｋ＝１，・・・，Ｋ）を算出する。
また、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの１つとして、ガウス関数の中心座標μｋ，１ｇ（ｋ＝１，・・・，Ｋ）を初期設定する。
ガウス関数の中心座標μｋ，１ｇは、以下の式（７）に示すように、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１の出力値ｚｋｇ−１である。
μｋ，１ｇ＝ｚｋｇ−１                      （７）
さらに、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの１つとして、以下の式（８）に示すように、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１と中間層２−ｇに含まれている素子ｂ１ｇとの間の重みＷｋ，１ｇを初期設定する。
Ｗｋ，１ｇ＝１                                      （８）
ここでは、重みＷｋ，１ｇを１に設定する例を示しているが、これは一例に過ぎず、１以外の値に設定するようにしてもよい。
【００５９】
初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータを初期設定すると、そのパラメータの初期値を出力値算出部１２に出力するとともに、そのパラメータの初期値をデータ記憶部１４に格納する。
【００６０】
出力値算出部１２は、初期設定部１１から中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの初期値を取得する。
また、出力値算出部１２は、１個目の学習データｘ１に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得する。
【００６１】
出力値算出部１２は、１個目の学習データｘ１に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得すると、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇを算出する（図８のステップＳＴ２６）。
即ち、出力値算出部１２は、以下の式（９）に示すガウス関数に対して、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの初期値と、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１とを代入することで、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇを算出する。
2018066032.tif 000005
出力値算出部１２は、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇを算出すると、素子ｂ１ｇの出力値ｚ１ｇを素子構築部１３に出力するとともに、素子ｂ１ｇの出力値ｚ１ｇをデータ記憶部１４に格納する。
【００６２】
素子構築部１３は、出力値算出部１２から素子ｂ１ｇの出力値ｚ１ｇを受けると、素子ｂ１ｇの出力値ｚ１ｇと事前に設定された閾値Ｔｈとを比較する（図８のステップＳＴ２７）。
素子ｂ１ｇの出力値ｚ１ｇは最大で１であるため、閾値Ｔｈとしては、１以下の正の実数、あるいは、ｅ−０．２５以上１以下の正の実数などが考えられる。
【００６３】
素子構築部１３は、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇが閾値Ｔｈより大きければ（図８のステップＳＴ２７：ＮＯの場合）、中間層２−ｇに含まれている素子の個数Ｊ（Ｊ＝１）を維持する。
素子構築部１３は、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇが閾値Ｔｈ以下であれば（図８のステップＳＴ２７：ＹＥＳの場合）、中間層２−ｇに含まれている素子の数が増えるように、新たな素子ｂ２ｇを中間層２−ｇに追加する（図８のステップＳＴ２８）。
この実施の形態２では、説明の便宜上、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇが閾値Ｔｈ以下であるため、新たな素子ｂ２ｇを中間層２−ｇに追加するものとする。
【００６４】
初期設定部１１は、素子構築部１３が新たな素子ｂ２ｇを中間層２−ｇに追加、あるいは、中間層２−ｇに含まれている素子の個数Ｊを維持すると、既に、Ｍ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得しているか否かを判定する（図８のステップＳＴ２３）。
初期設定部１１は、既にＭ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していれば（図８のステップＳＴ２３：ＹＥＳの場合）、中間層２の構造を決定する第１の処理内容を終了する。
初期設定部１１は、未だＭ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していなければ（図８のステップＳＴ２３：ＮＯの場合）、未だ取得していない１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得する（図８のステップＳＴ２４）。
この実施の形態２では、初期設定部１１は、この段階において、２個目の学習データｘ２に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していないので、２個目の学習データｘ２に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得する。
初期設定部１１は、２個目の学習データｘ２に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得すると、２個目の学習データｘ２に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１から、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇに関するガウス関数のパラメータを初期設定する（図８のステップＳＴ２５）。
【００６５】
即ち、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇに関するガウス関数のパラメータの１つとして、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１から、ガウス分布の標準偏差値σｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１，２）を算出する。
また、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇに関するガウス関数のパラメータの１つとして、以下の式（１０）に示すように、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１の出力値ｚｋｇ−１をガウス関数の中心座標μｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１，２）に初期設定する。
μｋ，ｊｇ＝ｚｋｇ−１                    （１０）
さらに、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇに関するガウス関数のパラメータの１つとして、以下の式（１１）に示すように、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１と中間層２−ｇに含まれているｊ番目の素子ｂｊｇ（ｊ＝１，２）との間の重みＷｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１，２）を初期設定する。
Ｗｋ，ｊｇ＝１                                    （１１）
ここでは、Ｗｋ，ｊｇを１に設定する例を示しているが、これは一例に過ぎず、１以外の値に設定するようにしてもよい。
【００６６】
初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇに関するガウス関数のパラメータを初期設定すると、そのパラメータの初期値を出力値算出部１２に出力するとともに、そのパラメータの初期値をデータ記憶部１４に格納する。
【００６７】
出力値算出部１２は、初期設定部１１から中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇに関するガウス関数のパラメータの初期値を取得する。
また、出力値算出部１２は、２個目の学習データｘ２に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得する。
【００６８】
出力値算出部１２は、２個目の学習データｘ２に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得すると、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇ及び素子ｂ２ｇの出力値ｚ２ｇを算出する（図８のステップＳＴ２６）。
即ち、出力値算出部１２は、以下の式（１２）に示すガウス関数に対して、中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの初期値と、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１とを代入することで、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇを算出する。
中間層２−ｇに含まれている素子ｂ１ｇに関するガウス関数のパラメータの初期値は、ガウス分布の標準偏差値σｋ，１ｇ（ｋ＝１，・・・，Ｋ）、ガウス関数の中心座標μｋ，１ｇ（ｋ＝１，・・・，Ｋ）、重みＷｋ，１ｇ（ｋ＝１，・・・，Ｋ）である。
また、出力値算出部１２は、以下の式（１２）に示すガウス関数に対して、中間層２−ｇに含まれている素子ｂ２ｇに関するガウス関数のパラメータの初期値と、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１とを代入することで、中間層２−ｇに含まれている素子ｂ２ｇの出力値ｚ２ｇを算出する。
中間層２−ｇに含まれている素子ｂ２ｇに関するガウス関数のパラメータの初期値は、ガウス分布の標準偏差値σｋ，２ｇ（ｋ＝１，・・・，Ｋ）、ガウス関数の中心座標μｋ，２ｇ（ｋ＝１，・・・，Ｋ）、重みＷｋ，２ｇ（ｋ＝１，・・・，Ｋ）である。
【００６９】
2018066032.tif 000006
ここでは、式（１２）において、ｊ＝１，２である。
出力値算出部１２は、中間層２−ｇに含まれている素子ｂ１ｇの出力値ｚ１ｇ及び素子ｂ２ｇの出力値ｚ２ｇを算出すると、素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇを素子構築部１３に出力するとともに、素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇをデータ記憶部１４に格納する。
【００７０】
素子構築部１３は、出力値算出部１２から素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇを受けると、素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇと閾値Ｔｈとを比較する（図８のステップＳＴ２７）。
素子構築部１３は、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇのうち、いずれかの出力値が閾値Ｔｈより大きければ（図８のステップＳＴ２７：ＮＯの場合）、中間層２−ｇに含まれている素子の個数Ｊ（Ｊ＝２）を維持する。
素子構築部１３は、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇの全てが閾値Ｔｈ以下であれば（図８のステップＳＴ２７：ＹＥＳの場合）、中間層２−ｇに含まれている素子の数が増えるように、新たな素子ｂ３ｇを中間層２−ｇに追加する（図８のステップＳＴ２８）。
この実施の形態２では、説明の便宜上、中間層２−ｇに含まれている素子ｂ１ｇ，ｂ２ｇの出力値ｚ１ｇ，ｚ２ｇの全てが閾値Ｔｈ以下であるため、新たな素子ｂ３ｇを中間層２に追加するものとする。
【００７１】
以降、中間層２−ｇに含まれている現在の素子の個数がＪ個（Ｊ≧３）であるとして説明する。
初期設定部１１は、素子構築部１３が新たな素子を中間層２−ｇに追加、あるいは、中間層２−ｇに含まれている素子の個数Ｊを維持すると、既に、Ｍ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得しているか否かを判定する（図８のステップＳＴ２３）。
初期設定部１１は、既にＭ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していれば（図８のステップＳＴ２３：ＹＥＳの場合）、中間層２の構造を決定する第１の処理内容を終了する。
初期設定部１１は、未だＭ個目の学習データｘＭに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していなければ（図８のステップＳＴ２３：ＮＯの場合）、未だ取得していない１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得する（図８のステップＳＴ２４）。
この実施の形態２では、初期設定部１１は、この段階において、Ｍ個の学習データのうち、ｍ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得していないので、ｍ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得するものとする。
初期設定部１１は、ｍ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１を取得すると、ｍ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１から、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇに関するガウス関数のパラメータを初期設定する（図８のステップＳＴ２５）。
【００７２】
即ち、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇに関するガウス関数のパラメータの１つとして、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１から、ガウス分布の標準偏差値σｋ，ｊｇ（ｋ＝１，・・・，Ｋ：Ｊ：ｊ＝１・・・，Ｊ）を算出する。
また、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇに関するガウス関数のパラメータの１つとして、式（１０）に示すように、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１の出力値ｚｋｇ−１をガウス関数の中心座標μｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１・・・，Ｊ）に初期設定する。
さらに、初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇに関するガウス関数のパラメータの１つとして、式（１１）に示すように、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１と中間層２−ｇに含まれているｊ番目の素子ｂｊｇ（ｊ＝１，・・・，Ｊ）との間の重みＷｋ，ｊｇ（ｋ＝１，・・・，Ｋ：Ｊ：ｊ＝１・・・，Ｊ）を初期設定する。
ここでは、Ｗｋ，ｊｇを１に設定する例を示しているが、これは一例に過ぎず、１以外の値に設定するようにしてもよい。
【００７３】
初期設定部１１は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇに関するガウス関数のパラメータを初期設定すると、そのパラメータの初期値を出力値算出部１２に出力するとともに、そのパラメータの初期値をデータ記憶部１４に格納する。
【００７４】
出力値算出部１２は、初期設定部１１から中間層２に含まれている素子ｂ１ｇ〜ｂＪｇに関するガウス関数のパラメータの初期値を取得する。
また、出力値算出部１２は、ｍ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得する。
【００７５】
出力値算出部１２は、ｍ個目の学習データｘｍに基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１を取得すると、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇを算出する（図８のステップＳＴ２６）。
即ち、出力値算出部１２は、式（１２）に示すガウス関数に対して、中間層２−ｇに含まれている素子ｂｊｇ（ｊ＝１，・・・，Ｊ）に関するガウス関数のパラメータの初期値と、中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１の出力値ｚｋｇ−１とを代入することで、中間層２−ｇに含まれている素子ｂｊｇの出力値ｚｊｇ（ｊ＝１，・・・，Ｊ）を算出する。
中間層２−ｇに含まれている素子ｂｊｇに関するガウス関数のパラメータの初期値は、ガウス分布の標準偏差値σｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１，・・・，Ｊ）、ガウス関数の中心座標μｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１，・・・，Ｊ）、重みＷｋ，ｊｇ（ｋ＝１，・・・，Ｋ：ｊ＝１，・・・，Ｊ）である。
【００７６】
出力値算出部１２は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇを算出すると、素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇを素子構築部１３に出力するとともに、素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇをデータ記憶部１４に格納する。
【００７７】
素子構築部１３は、出力値算出部１２から素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇを受けると、素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇと閾値Ｔｈとを比較する（図８のステップＳＴ２７）。
素子構築部１３は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇのうち、いずれかの出力値が閾値Ｔｈより大きければ（図８のステップＳＴ２７：ＮＯの場合）、中間層２−ｇに含まれている素子の個数Ｊを維持する。
素子構築部１３は、中間層２−ｇに含まれている素子ｂ１ｇ〜ｂＪｇの出力値ｚ１ｇ〜ｚＪｇの全てが閾値Ｔｈ以下であれば（図８のステップＳＴ２７：ＹＥＳの場合）、中間層２−ｇに含まれている素子の数が増えるように、新たな素子を中間層２−ｇに追加する（図８のステップＳＴ２８）。
ステップＳＴ２３〜ＳＴ２８の処理は、Ｍ個の学習データｘｍ（ｍ＝１，・・・，Ｍ）に基づく、１つ前の中間層２−（ｇ−１）に含まれているＫ個の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）の出力値ｚｋｇ−１が取得されるまで繰り返し実施され、ステップＳＴ２３の判定処理で「ＹＥＳ」と判定されると、第１の処理内容が終了する。
【００７８】
パラメータ更新部１５は、第１の処理内容が終了した後、第２の処理内容を実施する。
即ち、パラメータ更新部１５は、中間層２−１〜２−Ｇの構造が決定された後、Ｍ個の学習データｘｍ＝（ｘ１ｍ，ｘ２ｍ，・・・，ｘＩｍ）が順次与えられる毎に、上記実施の形態１と同様に、データ記憶部１４に格納されているガウス関数のパラメータを更新するとともに、中間層２−１〜２−Ｇに含まれている素子に関するガウス関数のパラメータの学習を行う教師有学習を実施することで、中間層２−Ｇに含まれているｊ番目の素子ｂｊｇと出力層３に含まれている素子ｃとの間の重みｖｊを更新する。
また、パラメータ更新部１５は、教師有学習を実施することで、入力層１に含まれているｉ番目の素子ａｉと中間層２−１に含まれているｊ番目の素子ｂｊ１との間の重みＷｉ，ｊ１、中間層２−（ｇ−１）に含まれているｋ番目の素子ｂｋｇ−１（ｋ＝１，・・・，Ｋ）と中間層２−ｇに含まれているｊ番目の素子ｂｊｇ（ｊ＝１，・・・，Ｊ）との間の重みＷｋ，ｊｇを更新する。
、即ち、中間層２−１〜２−Ｇに含まれている素子に関するガウス関数のパラメータの学習を行う教師有学習を実施することで、データ記憶部１４に格納されているガウス関数のパラメータ及び重みを更新する。
【００７９】
以上で明らかなように、この実施の形態２によれば、ニューラルネットワークが２層以上の中間層２−ｇを備えている場合でも、ニューラルネットワークの中間層２−ｇに含まれる素子ｂｊｇの数を自動的に決定することができる効果を奏する。
【００８０】
実施の形態３．
上記実施の形態２では、ニューラルネットワークが備えている中間層２−ｇの層数がＧで固定されている例を説明している。
この実施の形態３では、ニューラルネットワークが備える中間層２−ｇの層数を適宜決定する例を説明する。
【００８１】
図９はこの発明の実施の形態３によるネットワーク構築装置を示す構成図であり、図１０はこの発明の実施の形態３によるネットワーク構築装置のハードウェア構成図である。
図９及び図１０において、図１及び図２と同一符号は同一または相当部分を示すので説明を省略する。
層数決定部１６は例えば図１０の層数決定回路２６で実現されるものであり、ニューラルネットワークが備える中間層２−ｇの層数Ｇを決定する処理を実施する。
【００８２】
図９では、ネットワーク構築装置の構成要素である初期設定部１１、出力値算出部１２、素子構築部１３、データ記憶部１４、パラメータ更新部１５及び層数決定部１６のそれぞれが、図１０に示すような専用のハードウェア、即ち、初期設定回路２１、出力値算出回路２２、素子構築回路２３、データ記憶回路２４、パラメータ更新回路２５及び層数決定回路２６で実現されるものを想定している。
ここで、データ記憶回路２４は、例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性又は揮発性の半導体メモリや、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤなどが該当する。
また、初期設定回路２１、出力値算出回路２２、素子構築回路２３、パラメータ更新回路２５及び層数決定回路２６は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡ、または、これらを組み合わせたものが該当する。
【００８３】
ただし、ネットワーク構築装置の構成要素は、専用のハードウェアで実現されるものに限るものではなく、ネットワーク構築装置がソフトウェア、ファームウェア、または、ソフトウェアとファームウェアとの組み合わせで実現されるものであってもよい。
ネットワーク構築装置がソフトウェアやファームウェアなどで実現される場合、データ記憶部１４を図４に示すコンピュータのメモリ３１上に構成するとともに、初期設定部１１、出力値算出部１２、素子構築部１３、パラメータ更新部１５及び層数決定部１６の処理手順をコンピュータに実行させるためのプログラムをメモリ３１に格納し、図４に示すコンピュータのプロセッサ３２がメモリ３１に格納されているプログラムを実行するようにすればよい。
【００８４】
また、図１０ではネットワーク構築装置の構成要素のそれぞれが専用のハードウェアで実現される例を示し、図４では、ネットワーク構築装置がソフトウェアやファームウェアなどで実現される例を示しているが、ネットワーク構築装置における一部の構成要素が専用のハードウェアで実現され、残りの構成要素がソフトウェアやファームウェアなどで実現されるものであってもよい。
【００８５】
次に動作について説明する。
層数決定部１６を実装している点以外は、上記実施の形態２と同様であるため、ここでは、層数決定部１６の処理内容だけを説明する。
層数決定部１６は、初期設定部１１、出力値算出部１２及び素子構築部１３が、上記実施の形態２と同様の方法で、１つの中間層２−ｇの構造を決定すると、その都度、構造決定済みの中間層２−ｇを入力層１と出力層３との間に接続する。
例えば、３つの中間層２−１〜２−３の構造の決定が完了している段階では、３つの中間層２−１〜２−３を入力層１と出力層３との間に接続する。
また、４つの中間層２−１〜２−４の構造の決定が完了している段階では、４つの中間層２−１〜２−４を入力層１と出力層３との間に接続する。
【００８６】
層数決定部１６は、新たに構造を決定した中間層２−ｇを入力層１と出力層３との間に接続すると、任意のデータを入力層１に与える。
そして、層数決定部１６は、データを入力層１に与えてから、出力層３からデータが出力されるまでの時間を、ニューラルネットワークにおけるデータの入出力時間Ｔａとして計測する。
Ｔａ＝ＴＯＵＴ−ＴＩＮ                    （１３）
式（１３）において、ＴＩＮは入力層１にデータが入力された時刻、ＴＯＵＴは出力層３からデータが出力された時刻である。
【００８７】
層数決定部１６は、ニューラルネットワークにおけるデータの入出力時間Ｔａを計測すると、その入出力時間Ｔａと、入出力時間の許容時間Ｔｂとを比較する。
入出力時間の許容時間Ｔｂは、ネットワーク構築装置が許容する時間であって、事前に設定される時間である。
層数決定部１６は、ニューラルネットワークにおけるデータの入出力時間Ｔａが、入出力時間の許容時間Ｔｂより短い場合、データの入出力時間Ｔａから、入力層１と出力層３との間に接続されている１層当りの中間層２−ｇの入出力時間Ｔａ／Ｅを算出する
Ｅは、現時点において、入力層１と出力層３との間に接続されている中間層２−ｇの層数である。
【００８８】
層数決定部１６は、以下の式（１４）を満足する場合、入力層１と出力層３との間に接続する中間層２−ｇの数を１つ増やしても、ニューラルネットワークにおけるデータの入出力時間Ｔａが許容時間Ｔｂ以内に収まる可能性が高いため、入力層１と出力層３との間に接続する中間層２−ｇの数を１つ増やすことを許可する。
これにより、初期設定部１１、出力値算出部１２及び素子構築部１３は、上記実施の形態２と同様の方法で、新たに追加する中間層２−ｇの構造を決定する処理を実施する。
Ｔｂ＞Ｔａ＋Ｔａ／Ｅ                    （１４）
【００８９】
層数決定部１６は、式（１４）を満足しない場合、入力層１と出力層３との間に接続する中間層２−ｇの数を１つ増やすと、ニューラルネットワークにおけるデータの入出力時間Ｔａが許容時間Ｔｂを超える可能性が高いため、入力層１と出力層３との間に接続する中間層２−ｇの数を増やすことを拒否する。
これにより、現時点において、入力層１と出力層３との間に接続されている中間層２−ｇの層数Ｅが、ニューラルネットワークが備える中間層２−ｇの層数Ｇに決定される。
【００９０】
以上で明らかなように、この実施の形態３によれば、層数決定部１６が、ニューラルネットワークにおけるデータの入出力時間Ｔａと、入出力時間の許容時間Ｔｂとから、中間層２−ｇの層数Ｇを決定するように構成したので、ニューラルネットワークにおけるデータの入出力時間Ｔａを許容時間Ｔｂ以内に収めることができる効果を奏する。
【００９１】
この実施の形態３では、層数決定部１６が、ニューラルネットワークにおけるデータの入出力時間Ｔａを計測し、その入出力時間Ｔａと許容時間Ｔｂから中間層２の層数Ｇを決定している例を説明しているが、これに限るものではない。
例えば、層数決定部１６が、ニューラルネットワークの学習時間Ｔｃを計測し、その学習時間Ｔｃと、学習時間の許容時間Ｔｄとから中間層２の層数Ｇを決定するようにしてもよい。
具体的には、以下のとおりである。
【００９２】
層数決定部１６は、新たに構造を決定した中間層２−ｇを入力層１と出力層３との間に接続すると、学習データを入力層１に与えることで、ニューラルネットワークに学習を実施させる。
そして、層数決定部１６は、例えば、学習データを入力層１に与えてから、出力層３からデータが出力されるまでの時間を、ニューラルネットワークの学習時間Ｔｃとして計測する。
Ｔｃ＝ＴＯＵＴ−ＴＩＮ                  （１５）
式（１５）において、ＴＩＮは入力層１に学習データが入力された時刻、ＴＯＵＴは出力層３からデータが出力された時刻である。
【００９３】
層数決定部１６は、ニューラルネットワークの学習時間Ｔｃを計測すると、その学習時間Ｔｃと、学習時間の許容時間Ｔｄとを比較する。
学習時間の許容時間Ｔｄは、ネットワーク構築装置が許容する時間であって、事前に設定される時間である。
層数決定部１６は、ニューラルネットワークの学習時間Ｔｃが、学習時間の許容時間Ｔｄより短い場合、ニューラルネットワークの学習時間Ｔｃから、入力層１と出力層３との間に接続されている１層当りの中間層２−ｇの学習時間Ｔｃ／Ｅを算出する。
Ｅは、現時点において、入力層１と出力層３との間に接続されている中間層２−ｇの層数である。
【００９４】
層数決定部１６は、以下の式（１６）を満足する場合、入力層１と出力層３との間に接続する中間層２−ｇの数を１つ増やしても、ニューラルネットワークの学習時間Ｔｃが許容時間Ｔｄ以内に収まる可能性が高いため、入力層１と出力層３との間に接続する中間層２−ｇの数を１つ増やすことを許可する。
これにより、初期設定部１１、出力値算出部１２及び素子構築部１３は、上記実施の形態２と同様の方法で、新たに追加する中間層２−ｇの構造を決定する処理を実施する。
Ｔｄ＞Ｔｃ＋Ｔｃ／Ｅ                  （１６）
【００９５】
層数決定部１６は、式（１６）を満足しない場合、入力層１と出力層３との間に接続する中間層２−ｇの数を１つ増やすと、ニューラルネットワークの学習時間Ｔｃが許容時間Ｔｄを超える可能性が高いため、入力層１と出力層３との間に接続する中間層２−ｇの数を増やすことを拒否する。
これにより、現時点において、入力層１と出力層３との間に接続されている中間層２−ｇの層数Ｅが、ニューラルネットワークが備える中間層２−ｇの層数Ｇに決定される。
層数決定部１６が、ニューラルネットワークの学習時間Ｔｃを計測し、その学習時間Ｔｃと許容時間Ｔｄから中間層２の層数Ｇを決定する場合、ニューラルネットワークの学習時間Ｔｃを許容時間Ｔｄ以内に収めることができる効果を奏する。
【００９６】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【産業上の利用可能性】
【００９７】
この発明は、ニューラルネットワークを構築するネットワーク構築装置及びネットワーク構築方法に適している。
【符号の説明】
【００９８】
１  入力層、２，２−１〜２−Ｇ  中間層、３  出力層、１１  初期設定部、１２  出力値算出部、１３  素子構築部、１４  データ記憶部、１５  パラメータ更新部、１６  層数決定部、２１  初期設定回路、２２  出力値算出回路、２３  素子構築回路、２４  データ記憶回路、２５  パラメータ更新回路、２６  層数決定回路、３１  メモリ、３２  プロセッサ。
【図１】
2018066032.tif 000007
【図２】
2018066032.tif 000008
【図３】
2018066032.tif 000009
【図４】
2018066032.tif 000010
【図５】
2018066032.tif 000011
【図６】
2018066032.tif 000012
【図７】
2018066032.tif 000013
【図８】
2018066032.tif 000014
【図９】
2018066032.tif 000015
【図１０】
2018066032.tif 000016
【手続補正書】
【提出日】平成29年2月8日(2017.2.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
この発明に係るネットワーク構築装置は、入出力応答がガウス関数で決定される素子を含む中間層を備えるニューラルネットワークを構築する際に、中間層に含まれている素子毎に、当該素子に関するガウス関数のパラメータを初期設定する初期設定部と、初期設定部により初期設定されたパラメータとニューラルネットワークの入力層に含まれている素子の出力値とに従って中間層に含まれている１つ以上の素子の出力値を算出する出力値算出部を設け、素子構築部が、出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が閾値より大きければ、中間層に含まれている素子の数を維持し、中間層に含まれている１つ以上の素子の出力値の全てが閾値以下であれば、中間層に含まれている素子の数を増やす素子構築処理を実施するようにしたものである。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入出力応答がガウス関数で決定される素子を含む中間層を備えるニューラルネットワークを構築する際に、前記中間層に含まれている素子毎に、当該素子に関するガウス関数のパラメータを初期設定する初期設定部と、
前記初期設定部により初期設定されたパラメータと前記ニューラルネットワークの入力層に含まれている素子の出力値とに従って前記中間層に含まれている１つ以上の素子の出力値を算出する出力値算出部と、
前記出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、前記中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が前記閾値より大きければ、前記中間層に含まれている素子の数を維持し、前記中間層に含まれている１つ以上の素子の出力値の全てが前記閾値以下であれば、前記中間層に含まれている素子の数を増やす素子構築処理を実施する素子構築部と
を備えたネットワーク構築装置。
【請求項２】
前記出力値算出部は、前記初期設定部により初期設定されたパラメータを有するガウス関数に対して、前記入力層に含まれている素子の出力値を代入することで、前記中間層に含まれている素子の出力値を算出することを特徴とする請求項１記載のネットワーク構築装置。
【請求項３】
前記素子構築部により素子構築処理が実施された後、学習データが前記入力層に与えられたときに前記ガウス関数のパラメータの学習を行う教師有学習を実施することで、前記ガウス関数のパラメータを更新するとともに、前記中間層に含まれている素子と出力層に含まれている素子との間の重みを更新するパラメータ更新部を備えたことを特徴とする請求項２記載のネットワーク構築装置。
【請求項４】
前記パラメータ更新部は、前記教師有学習を実施することで、前記入力層に含まれている素子と前記中間層に含まれている素子との間の重みを更新することを特徴とする請求項３記載のネットワーク構築装置。
【請求項５】
前記出力値算出部は、前記ガウス関数のパラメータの１つとして、前記中間層に含まれている各々の素子に対する前記ガウス関数におけるガウス分布の標準偏差値を用いることを特徴とする請求項２記載のネットワーク構築装置。
【請求項６】
前記出力値算出部は、前記中間層に含まれている各々の素子に対する前記ガウス分布の標準偏差値として、前記入力層に含まれている複数の素子の出力値の標準偏差値を用いることを特徴とする請求項５記載のネットワーク構築装置。
【請求項７】
前記出力値算出部は、前記中間層に含まれている各々の素子に対する前記ガウス分布の標準偏差値として、正の実数を用いることを特徴とする請求項５記載のネットワーク構築装置。
【請求項８】
前記素子構築部は、前記閾値として、１以下の正の実数を用いることを特徴とする請求項１記載のネットワーク構築装置。
【請求項９】
前記素子構築部は、前記閾値として、ｅ−０．２５以上１以下の正の実数を用いることを特徴とする請求項１記載のネットワーク構築装置。
【請求項１０】
前記パラメータ更新部は、前記ガウス関数のパラメータとして、前記ガウス関数におけるガウス分布の標準偏差値を示すパラメータ、前記ガウス関数の中心座標を示すパラメータのうち、いずれか１つ以上のパラメータを更新することを特徴とする請求項３記載のネットワーク構築装置。
【請求項１１】
前記ニューラルネットワークがＧ（Ｇは２以上の整数）層の中間層を備え、前記Ｇ層の中間層が前記入力層と出力層の間に縦続に接続されており、
前記出力値算出部は、前記入力層に含まれている素子の出力値が１層目の中間層に含まれている１つ以上の素子に与えられると、前記入力層に含まれている素子の出力値に従って１層目の中間層に含まれている１つ以上の素子の出力値を算出し、（ｇ−１）層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子の出力値がｇ層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている１つ以上の素子に与えられると、（ｇ−１）層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子の出力値に従ってｇ層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値を算出し、
前記素子構築部は、前記出力値算出部により算出されたｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値と前記閾値を比較し、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が前記閾値より大きければ、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている素子の数を維持し、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている１つ以上の素子の出力値の全てが前記閾値以下であれば、ｇ層目（ｇ＝１，・・・，Ｇ）の中間層に含まれている素子の数を増やす素子構築処理を実施することを特徴とする請求項１記載のネットワーク構築装置。
【請求項１２】
前記素子構築部により素子構築処理が実施された後、学習データが前記入力層に与えられたときにＧ（Ｇは２以上の整数）層の中間層に含まれている素子に関するガウス関数のパラメータの学習を行う教師有学習を実施することで、前記ガウス関数のパラメータを更新するとともに、Ｇ層目の中間層に含まれている素子と出力層に含まれている素子との間の重みを更新するパラメータ更新部を備えたことを特徴とする請求項１１記載のネットワーク構築装置。
【請求項１３】
前記パラメータ更新部は、前記教師有学習を実施することで、（ｇ−１）層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子とｇ層目（ｇ＝２，・・・，Ｇ）の中間層に含まれている素子との間の重みを更新することを特徴とする請求項１２記載のネットワーク構築装置。
【請求項１４】
前記パラメータ更新部は、前記教師有学習を実施することで、前記入力層に含まれている素子と１層目の中間層に含まれている素子との間の重みを更新することを特徴とする請求項１２記載のネットワーク構築装置。
【請求項１５】
前記ニューラルネットワークが備える中間層の層数を決定する層数決定部を備えたことを特徴とする請求項１１記載のネットワーク構築装置。
【請求項１６】
前記層数決定部は、前記ニューラルネットワークにおけるデータの入出力時間と、前記入出力時間の許容時間とから、前記中間層の層数を決定することを特徴とする請求項１５記載のネットワーク構築装置。
【請求項１７】
前記層数決定部は、前記ニューラルネットワークの学習時間と、前記学習時間の許容時間とから、前記中間層の層数を決定することを特徴とする請求項１５記載のネットワーク構築装置。
【請求項１８】
入出力応答がガウス関数で決定される素子を含む中間層を備えるニューラルネットワークを構築する際に、初期設定部が、前記中間層に含まれている素子毎に、当該素子に関するガウス関数のパラメータを初期設定し、
出力値算出部が、前記初期設定部により初期設定されたパラメータと前記ニューラルネットワークの入力層に含まれている素子の出力値とに従って前記中間層に含まれている１つ以上の素子の出力値を算出し、
素子構築部が、前記出力値算出部により算出された１つ以上の素子の出力値と閾値を比較し、前記中間層に含まれている１つ以上の素子の出力値のうち、いずれかの素子の出力値が前記閾値より大きければ、前記中間層に含まれている素子の数を維持し、前記中間層に含まれている１つ以上の素子の出力値の全てが前記閾値以下であれば、前記中間層に含まれている素子の数を増やす素子構築処理を実施する
ネットワーク構築方法。
【請求項１９】
前記出力値算出部が、前記初期設定部により初期設定されたパラメータを有するガウス関数に対して、前記入力層に含まれている素子の出力値を代入することで、前記中間層に含まれている素子の出力値を算出することを特徴とする請求項１８記載のネットワーク構築方法。
【請求項２０】
パラメータ更新部が、前記素子構築部により素子構築処理が実施された後、学習データが前記入力層に与えられたときに前記ガウス関数のパラメータの学習を行う教師有学習を実施することで、前記ガウス関数のパラメータを更新するとともに、前記中間層に含まれている素子と出力層に含まれている素子との間の重みを更新することを特徴とする請求項１９記載のネットワーク構築方法。
【国際調査報告】
2018066032.tif 000017
2018066032.tif 000018
2018066032.tif 000019
2018066032.tif 000020