(57)【特許請求の範囲】
【請求項１】
コンピュータが、
対象データに対する複数のニューラルネットワークの学習を、それぞれ少なくとも１エポック実施し、
前記複数のニューラルネットワークに対して、それぞれのユニット数を変化させる特定のアルゴリズムのループを複数回実施し、
前記複数回の前記特定のアルゴリズムのループそれぞれにおける、前記複数のニューラルネットワークに対するそれぞれの学習エポック数を、当該ループ開始直前の前記複数のニューラルネットワークのそれぞれの精度の分散値に基づき設定する
処理を実行することを特徴とする学習方法。
【請求項２】
前記複数のニューラルネットワークを用いて、前記複数のニューラルネットワークを同じ数の新たな複数のニューラルネットワークを生成する処理を前記コンピュータがさらに実行し、
前記設定する処理は、前記新たな複数のニューラルネットワークが生成されるたびに、当該新たな複数のニューラルネットワークに対するそれぞれの学習エポック数を設定し、
前記特定のアルゴリズムのループを複数回実施する処理は、前記新たな複数のニューラルネットワークに対して、前記特定のアルゴリズムのループを前記学習エポック数回実施することを特徴とする請求項１に記載の学習方法。
【請求項３】
前記設定する処理は、前記新たな複数のニューラルネットワークに対する学習エポック数として、前回の実施対象である前記複数のニューラルネットワークのそれぞれの精度の分散値が閾値以上である場合、前回の学習エポック数を所定数減算した値を当該学習エポック数に決定し、前回の実施対象である前記複数のニューラルネットワークのそれぞれの精度の分散値が閾値未満である場合、前回の学習エポック数に所定数加算した値を当該学習エポック数に決定することを特徴とする請求項２に記載の学習方法。
【請求項４】
前記特定のアルゴリズムは、遺伝的アルゴリズムであることを特徴とする、請求項１に記載の学習方法。
【請求項５】
コンピュータに、
対象データに対する複数のニューラルネットワークの学習を、それぞれ少なくとも１エポック実施し、
前記複数のニューラルネットワークに対して、それぞれのユニット数を変化させる特定のアルゴリズムのループを複数回実施し、
前記複数回の前記特定のアルゴリズムのループそれぞれにおける、前記複数のニューラルネットワークに対するそれぞれの学習エポック数を、当該ループ開始直前の前記複数のニューラルネットワークのそれぞれの精度の分散値に基づき設定する
処理を実行させることを特徴とする学習プログラム。
【請求項６】
対象データに対する複数のニューラルネットワークの学習を、それぞれ少なくとも１エポック実施する第１実施部と、
前記複数のニューラルネットワークに対して、それぞれのユニット数を変化させる特定のアルゴリズムのループを複数回実施する第２実施部と、
前記複数回の前記特定のアルゴリズムのループそれぞれにおける、前記複数のニューラルネットワークに対するそれぞれの学習エポック数を、当該ループ開始直前の前記複数のニューラルネットワークのそれぞれの精度の分散値に基づき設定する設定部と
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習方法、学習プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
画像処理などの様々な分野で使用される予測器に用いる特徴量などを学習する手法として、ニューラルネットワーク（以降、ＮＮと記載する場合がある）を多層化したディープラーニングが知られている。ＮＮの学習では、良い予測精度を得るために、ユニット数や中間層の数などの最適化が行われるが、最適化には非常に時間を費やす。
【０００３】
例えば、１０００個のＮＮを最適化する例で説明する。ユニット数が５から１００個、中間層が１から３層の小規模ＮＮの場合、１つのＮＮに１分かかるとすると、最適化には１７時間（１分×１０００）かかる。また、ユニット数が１００から１００００個、中間層が４から２０層の大規模ＮＮの場合、１つのＮＮに１２時間かかるとすると、最適化には５００日（１２時間×１０００）かかる。
【０００４】
近年では、小規模なＮＮ学習において、遺伝的アルゴリズム（Genetic  Algorithm（以下ではＧＡと記載する場合がある））を用いて、ＮＮのネットワーク構造の最適化を行う手法が知られている。例えば、学習エポック数を減らしたとしても、ＮＮの予測誤差の比較がある程度できることを理由に、最適なユニット数を探索するＮＮ学習を一定のエポック数で打ち切ることで、学習時間の短縮を行う。
【０００５】
また、大規模なＮＮ学習においては、中間層の数を予め決定した上で、ＧＡ等を用いた最適なユニット数の探索に加えて、異なる層のユニット間の結合強度などが決定される。このため、ＧＡによるユニット数の探索を複数回行う一方で、ＧＡのループ内で確率勾配法等によるＮＮ学習を反復させて、ＮＮの最適なエッジ強度を探索する手法が行われる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−２２９１２４号公報
【特許文献２】国際公開第２０１４／１８８９４０号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記技術では、学習する対象問題が異なる場合でも一律にエポック数を決定するので、ＮＮの構造探索を行うＧＡとＮＮ学習を担う勾配法の反復回数とに適切な配分が行えず、ＮＮの学習精度がよくない場合がある。
【０００８】
一般的に、多くのＮＮの構造探索を実行して学習することと、個々のＮＮの予測誤差を正確に見積もることとはトレードオフの関係にある。例えば、ディープラーニングにおける大規模なＮＮ学習では、すべてのＮＮの構造を学習するには時間がかかり過ぎる。その一方で、ＮＮの予測誤差は、同じＮＮであっても学習のたびに若干変化する。さらに、エポック数を増やすとＮＮの予測誤差は小さくなるが、エポック数と予測誤差の遷移は、ＮＮによって異なる。
【０００９】
このように、ＮＮの構造探索の回数を減らして、ＮＮ学習のエポック数を一律に決定したとしても、個々のＮＮによって予測誤差の遷移が異なることから、予測誤差を十分に比較できない場合があり、ＮＮの学習精度にバラツキが生じる。
【００１０】
１つの側面では、ニューラルネットワーク（ＮＮ）を用いた学習において、ユニット数を変化させる外部ループと、個別のＮＮ学習との時間リソースの配分を適切に行うことができる学習方法、学習プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
第１の案では、学習方法は、コンピュータが、対象データに対する複数のニューラルネットワークの学習を、それぞれ少なくとも１エポック実施する。学習方法は、コンピュータが、前記複数のニューラルネットワークに対して、それぞれのユニット数を変化させる特定のアルゴリズムのループを複数回実施する。学習方法は、コンピュータが、前記複数回の前記特定のアルゴリズムのループそれぞれにおける、前記複数のニューラルネットワークに対するそれぞれの学習エポック数を、当該ループ開始直前の前記複数のニューラルネットワークのそれぞれの精度の分散値および前記対象データに対するニューラルネットワーク学習の実績に基づき設定する。
【発明の効果】
【００１２】
一実施形態によれば、ニューラルネットワークを用いた学習において、ユニット数を変化させる外部ループと、個別のＮＮ学習との時間リソースの配分を適切に行うことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１にかかる情報処理装置の機能構成を示す機能ブロック図である。
【図２】図２は、パラメータテーブルに記憶される情報の例を示す図である。
【図３】図３は、集団テーブルに記憶される情報の例を示す図である。
【図４】図４は、ＮＮ学習の例を説明する図である。
【図５】図５は、交叉による子個体の生成例を説明する図である。
【図６】図６は、ＧＡ集団の世代の更新例を説明する図である。
【図７】図７は、打切りエポック数の設定を説明する図である。
【図８】図８は、処理の流れを示すフローチャートである。
【図９】図９は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する学習方法、学習プログラムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
［情報処理装置の説明］
本実施例で説明する情報処理装置１０は、ニューラルネットワークを多層化したディープラーニングに適用され、中間層の数を予め決定した上で、遺伝的アルゴリズム（ＧＡ）等を用いた最適なユニット数の探索に加えて、異なる層のユニット間の結合強度などを決定する。つまり、情報処理装置１０は、ＧＡによるユニット数の探索を複数回行う一方で、ＧＡのループ内で確率勾配法等によるＮＮ学習を反復させて、ＮＮの最適なエッジ強度を探索する。
【００１６】
具体的には、情報処理装置１０は、ＧＡの探索過程における適応度分散から、ＧＡのループとＧＡのループ内におけるＮＮ学習との時間リソースの配分を動的に調整する。本実施例では、層数固定のもとで、予測制度を最大にする最適なユニット数を決定する。
【００１７】
例えば、情報処理装置１０は、対象データに対する複数のＮＮの学習を、それぞれ少なくとも１エポック実施し、複数のＮＮに対して、それぞれのユニット数を変化させるＧＡのループを複数回実施する。このとき、情報処理装置１０は、複数回のＧＡのループそれぞれにおける、複数のＮＮに対するそれぞれの学習エポック数を、当該ループ開始直前の複数のＮＮのそれぞれの精度の分散値および対象データに対するＮＮ学習の実績に基づき設定する。
【００１８】
このように、情報処理装置１０は、複数ＮＮにＧＡのループを実施する時、ループ開始直前の複数ＮＮの精度の分散値とＮＮ学習の実績に基づき、学習エポック数を設定するので、ＧＡのループとＮＮ学習との時間リソースを適切に配分できる。
【００１９】
なお、本実施例においては、ｎ個の個体の集まりをＧＡ集団、個体をＮＮ（ニューラルネットワーク）、誤差を検証用データに対するＮＮの予測値と真値との差、適応度を誤差などと記載する場合がある。また、誤差には、一例として、交差検証誤差（cross-validation  error）を用いる。また、ＮＮ構造の最適化とは、例えば誤差が小さくなるように、ＧＡでＮＮの各層のユニット数を更新することであり、ＮＮの訓練とは、例えば誤差が小さくなるように、確率的勾配法でＮＮの結合重みを更新することである。また、エポックとは、例えばＮＮの訓練において、学習データをすべて１度ずつ使用するまでのサイクルを言う。また、本実施例では、ＧＡを用いる例で説明するが、これに限定されるものではなく、ユニット数を変化させる他の学習アルゴリズムも用いることもできる。また、確率的勾配法以外の学習方法を採用することもでき、交差検証誤差以外の誤差検出手法を採用することもできる。
【００２０】
［情報処理装置の機能構成］
図１は、実施例１にかかる情報処理装置の機能構成を示す機能ブロック図である。図１に示すように、情報処理装置１０は、通信部１１、記憶部１２、制御部２０を有する。通信部１１は、管理者などの他の装置との通信を制御する処理部であり、例えば通信インタフェースなどである。
【００２１】
記憶部１２は、プログラムやデータなどを記憶する記憶装置であり、例えばメモリやハードディスクなどである。この記憶部１２は、パラメータテーブル１３、集団テーブル１４、親個体テーブル１５、子個体テーブル１６、訓練済みテーブル１７を記憶する。なお、ここでは、記憶方式としてテーブルを例にして説明するが、これに限定されるものではなく、データベースなどの他の形式を用いることもできる。
【００２２】
パラメータテーブル１３は、訓練対象とするＮＮに関する情報を記憶する。具体的には、パラメータテーブル１３は、管理者などから受け付けたＮＮの設定項目などを記憶する。図２は、パラメータテーブル１３に記憶される情報の例を示す図である。図２に示すように、このパラメータテーブル１３は、「ＧＡの集団サイズ、ＧＡの生成子個体数、ＧＡの打切り条件、ＮＮの層数、ＮＮの最小ユニット数、ＮＮの最大ユニット数、勾配法の最大エポック数」を記憶する。
【００２３】
ここで記憶される「ＧＡの集団サイズ」は、１つの個体が１つのＮＮを表す前提で、いくつのＮＮを訓練対象とするかを設定する情報である。「ＧＡの生成子個体数」は、後述する交叉処理において新たなＮＮを一度にいくつ作るかを設定する情報である。「ＧＡの打切り条件」は、学習フローを終了する条件であり、管理者等によって設定される。例えば、「ＧＡの打切り条件」としては、予測誤差が一定値以下の個体（ＮＮ）が得られた、学習開始から一定時間が経過したなどである。
【００２４】
「ＮＮの層数」は、個体（ＮＮ）が有する中間層の数であり、管理者等によって設定される。「ＮＮの最小ユニット数」は、ＮＮが取り得るユニットの最小値であり、「ＮＮの最大ユニット数」は、ＮＮが取り得るユニットの最大値であり、いずれも管理者等によって設定される。「勾配法の最大エポック数」は、ＮＮ訓練における確率勾配法のエポック数の最大値であり、管理者等によって設定される。
【００２５】
集団テーブル１４は、学習対象のＧＡの集団を記憶する。なお、ここで記憶される情報は後述する初期化部２３等によって生成される。図３は、集団テーブル１４に記憶される情報の例を示す図である。図３に示すように、集団テーブル１４は、個体とＮＮ構造とを対応付けて記憶する。
【００２６】
ここで記憶される「個体」は、個体すなわちＮＮを特定する識別子などである。「ＮＮ構造」は、各個体すなわち各ＮＮのネットワーク構造を示す。ここで各個体のＮＮ構造は、中間層の層数が固定で同じであるが、各層のユニット数は必ずしも同一ではなく、ＮＮ構造ごとに設定される。また、ユニットは、図３のＮＮ構造における丸印に該当する。例えば、個体１の中間層の１番目の層のユニット数は６であり、個体２の中間層の１番目の層のユニット数は４である。
【００２７】
親個体テーブル１５は、集団テーブル１４に記憶される個体（ＮＮ）から選択された個体を記憶する。ここで記憶される個体は、後述する親選択部２４によって格納される。子個体テーブル１６は、親個体テーブル１５に記憶される親の個体から生成される子個体を記憶する。ここで記憶される個体は、後述する交叉部２５によって格納される。訓練済みテーブル１７は、ＮＮ訓練の結果を記憶するテーブルであり、例えばＮＮ訓練の結果と訓練された個体とを対応付けて記憶する。
【００２８】
制御部２０は、情報処理装置１０全体を司る処理部であり、例えばプロセッサなどである。制御部２０は、入力受付部２１、学習部２２、打切りエポック判定部２８、終了判定部２９、出力部３０を有する。例えば、入力受付部２１、学習部２２、打切りエポック判定部２８、終了判定部２９、出力部３０は、プロセッサなどの電子回路の一例やプロセッサなどが実行するプロセスの一例である。
【００２９】
入力受付部２１は、訓練対象とするＮＮに関する設定情報を管理者等から受け付ける処理部である。例えば、入力受付部２１は、「ＧＡの集団サイズ、ＧＡの生成子個体数、ＧＡの打切り条件、ＮＮの層数、ＮＮの最小ユニット数、ＮＮの最大ユニット数、勾配法の最大エポック数」を受け付けて、パラメータテーブル１３に格納する。
【００３０】
学習部２２は、ＮＮ構造を探索するＧＡループおよびＧＡによるＮＮ訓練を実行する処理部である。この学習部２２は、初期化部２３、親選択部２４、交叉部２５、ＮＮ訓練部２６、生存選択部２７を有する。
【００３１】
初期化部２３は、ＮＮ訓練の対象となる各個体を生成して初期化を実行する処理部である。具体的には、初期化部２３は、「ＧＡの集団サイズ」によって指定された数の個体（ＮＮ）を生成して、集団テーブル１４に格納する。例えば、初期化部２３は、「ＮＮの層数」で指定された層数のＮＮを作成し、各層のユニット数を「ＮＮの最小ユニット数」から「ＮＮの最大ユニット数」の間の一様乱数で決定する。また、初期化部２３は、ユニット間を全連結とし、結合重みを一様乱数で決定する。
【００３２】
そして、初期化部２３は、生成した全ＮＮを１エポックずつ訓練して結合重みを学習する。すなわち、集団テーブル１４に記憶される全ＮＮは、１エポックずつ学習された後のＮＮである。ここでＮＮの学習について説明する。図４は、ＮＮ学習の例を説明する図である。図４に示すように、入力層（第１層）の第１ユニットと中間層の第２層の第１ユニットとの結合重みが「２」の状態で、初期化部２３が１エポック学習することで、この結合重みが「３」に更新される。なお、図４の例では、学習前後で結合重みが「３」のままであったり、結合重みが「６」から「７」に更新されている。
【００３３】
このようにして、入力情報に基づいて作成された各ＮＮを１エポックずつ学習して、結合重みを学習する。そして、初期化部２３は、各個体と各個体の予測誤差とを対応付けて集団テーブル１４等に格納する。
【００３４】
また、初期化部２３は、打切りエポック数の初期値を設定することもできる。例えば、初期化部２３は、ＧＡ集団の各ＮＮをそれぞれ１エポック学習させるので、打切りエポック数の初期値を「１」に設定することもできる。また、初期化部２３は、１エポック学習した後のＧＡ集団の適応度の分散値を用いて、打切りエポックの初期値を設定することもできる。例えば、分散値に所定値を加えた値を打切りエポック数に設定することもできる。なお、初期値は、管理者等により指定することができ、その値は１以上かつ最大エポック数以下とする。
【００３５】
親選択部２４は、ＧＡループによるＮＮ訓練対象のＮＮを生成するための親ＧＡを選択する処理部である。例えば、親選択部２４は、集団テーブル１４に記憶される全ＧＡの中から２つの個体をランダムに選択し、選択した個体を親個体として、親個体テーブル１５に格納する。なお、親選択部２４は、入力された「ＧＡの生成子個体数」分の親個体の組を選択する。
【００３６】
交叉部２５は、親選択部２４によってランダムに選択された２つの親個体から子個体を生成する処理部である。具体的には、交叉部２５は、親個体テーブル１５から親個体の組を読み出して、子個体を生成し、子個体テーブル１６に格納する。
【００３７】
例えば、交叉部２５は、個体Ａのユニット数をＵＡ、個体Ｂのユニット数をＵＢ、かつＵＡ＜ＵＢとしたとき、区間［ＵＡ，ＵＢ］上の一様分布で個体Ｃのユニット数ＵＣを決定する。また、交叉部２５は、個体Ａの重み行列の（ｉ，ｊ）成分をＷＡ（ｉ，ｊ）、個体Ｂの重み行列の（ｉ，ｊ）成分をＷＢ（ｉ，ｊ）としたとき、個体Ｃの重み行列の（ｉ，ｊ）成分であるＷＣ（ｉ，ｊ）を以下で決定する。具体的には、（１）ｉ，ｊ≦ＵＡのときは、ＷＣ（ｉ，ｊ）＝区間［ＷＡ（ｉ，ｊ）,  ＷＢ（ｉ，ｊ）］上の一様分布で決定する。（２）それ以外のときは、ＷＣ（ｉ，ｊ）＝区間［０,ＷＢ（ｉ，ｊ）］上の一様分布で決定する。
【００３８】
ここで、交叉による子個体の生成例を説明する。図５は、交叉による子個体の生成例を説明する図である。図５に示すように、交叉部２５は、２つの親個体（個体Ａ、個体Ｂ）から１つの子個体（個体Ｃ）を生成する。このとき、交叉部２５は、個体ＡのＮ層が１００ユニットで個体ＢのＮ層が２００ユニットである場合、個体ＣのＮ層のユニット数を１００から２００の間で決定する。同様に、交叉部２５は、個体ＡのＮ＋１層が４００ユニットで個体ＢのＮ＋１層が３００ユニットである場合、個体ＣのＮ＋１層のユニット数を３００から４００の間で決定する。
【００３９】
また、交叉部２５は、個体ＡのＮ層の第１ユニットとＮ＋１層の第１ユニットの結合重みが１０で、個体ＢのＮ層の第１ユニットとＮ＋１層の第１ユニットの結合重みが５であった場合、個体ＣのＮ層の第１ユニットとＮ＋１層の第１ユニットの結合重みを５から１０の範囲で決定する。なお、各決定手法は、ＧＡで使用される各種手法を採用することができる。
【００４０】
ＮＮ訓練部２６は、子個体テーブル１６に記憶される個体（ＮＮ）に対して、ＧＡの訓練を実行する処理部である。具体的には、ＮＮ訓練部２６は、子個体テーブル１６に記憶される各ＮＮに対して、誤差が小さくなるように、確率的勾配法でＮＮの結合重みを更新する。また、ＮＮ訓練部２６は、訓練（学習）された各ＮＮに対して、実際のデータを投入して予測誤差（予測精度）を測定し、各ＮＮと予測誤差とを対応付けて、訓練済みテーブル１７に格納する。
【００４１】
このＮＮ訓練部２６は、設定された打切りエポック数分の訓練を実行する。例えば、ＮＮ訓練部２６は、１回目のＧＡループでは、初期化部２３によって設定された打切りエポック数分の訓練を実行する。その後は、後述する打切りエポック判定部２８によって設定された打切りエポック数分の訓練を実行する。
【００４２】
生存選択部２７は、ＮＮ訓練されたＧＡ集団の中から新たな世代のＧＡ集団を選択する処理部である。つまり、生存選択部２７は、予測誤差が小さい、予測精度の良いＧＡ集団を選択して、次のＧＡループを実行する対象を選択する。具体的には、生存選択部２７は、集団テーブル１４に記憶される個体と、訓練済みテーブル１７に記憶される個体との中から予測誤差の小さい個体を選択して、集団テーブル１４に格納する。つまり、生存選択部２７は、新たなＧＡ集団を生成する。
【００４３】
図６は、ＧＡ集団の世代の更新例を説明する図である。図６に示すように、生存選択部２７は、集団テーブル１４に記憶されるＮ個の個体と、訓練済みテーブル１７に記憶されるＭ個の子個体とを読み出して、（Ｎ＋Ｍ）個の個体を取得する。そして、生存選択部２７は、読み出した（Ｎ＋Ｍ）個の個体から、予測誤差の小さい（予測精度のよい）上位Ｎ個の個体を選択する。その後、生存選択部２７は、選択した上位Ｎ個の個体と予測誤差とを対応付けて、集団テーブル１４に格納する。
【００４４】
打切りエポック判定部２８は、ＮＮ訓練を打ち切る打切りエポック数を決定する処理部である。具体的には、打切りエポック判定部２８は、次の世代のＧＡ集団に対して、当該ＧＡ集団に含まれる各個体（ＮＮ）の適応度の分散値にしたがって、打切りエポック数を決定する。例えば、打切りエポック判定部２８は、初期化部２３によって初期化時に生成された各ＮＮが１エポックずつ学習された後、または、後述する終了判定部２９によって次世代ＮＮが終了条件を満たさないと判定された場合に、打切りエポック数を決定する。
【００４５】
ここで、打切りエポック数の判定例を説明する。図７は、打切りエポック数の設定を説明する図である。ＮＮの予測誤差は、対象問題やＮＮの構造によって推移が異なる。図７の例では、ＮＮ１は学習の序盤で予測誤差が小さくなり、ＮＮ２やＮＮ３は学習の終盤まで特別な周期はない。したがって、ＮＮ１の場合は、学習の序盤に打切りエポック数を設定することが好ましく、ＮＮ２やＮＮ３の場合は、学習の終盤に打切りエポック数を設定することが好ましい。つまり、図７に示すように、ＮＮ訓練では、ＧＡ１ループあたりの勾配法のエポック数が不足するＮＮ、ＧＡ１ループあたりの勾配法のエポック数が過剰なＮＮ、ＧＡ１ループあたりの勾配法のエポック数が適切であるＮＮが発生する。
【００４６】
このように、ＮＮ訓練のエポック数を一定の短い数で打ち切ると、ほとんど学習できないＮＮが発生する可能性が高く、予測精度の低下に繋がる。また、ＮＮ訓練のエポック数を長くすると、予測精度が向上するが、学習時間が長くなる。そこで、本実施例では、個々のＮＮの予測誤差を正確に見積もる程度の打切りエポック数を設定する。具体的には、予測精度を判断できる程度まで学習できるように、ＧＡ集団の適応度の分散値によって、打切りエポック数を増減させる。
【００４７】
例えば、打切りエポック判定部２８は、生存選択部２７によって選択された各ＮＮの予測誤差を集団テーブル１４から読み出す。続いて、打切りエポック判定部２８は、読み出した各ＮＮの予測誤差の分散値（Ｓ）を算出する。そして、打切りエポック判定部２８は、分散値（Ｓ）が予め指定されたＧＡ集団の適応度の分散の閾値「ε」よりも小さい場合は、前世代の打切りエポック数に１を加えた値を、新たな打切りエポック数に設定する。また、打切りエポック判定部２８は、分散値（Ｓ）が予め指定されたＧＡ集団の適応度の分散の閾値「ε」以上の場合は、前世代の打切りエポック数に１を減算した値を、新たな打切りエポック数に設定する。
【００４８】
このように、各ＮＮの予測誤差の分散値が大きい場合は、エポック数を少なくし、各ＮＮの予測誤差の分散値が小さい場合は、エポック数を多くすることで、ＮＮの予測誤差に十分な差が現れるまで学習が行われる。
【００４９】
終了判定部２９は、集団テーブル１４に記憶される各ＮＮが終了条件を満たすか否かを判定する処理部である。例えば、終了判定部２９は、ＮＮ訓練のループが終了するたびに、集団テーブル１４に記憶される各ＮＮに対して、終了条件として「予測誤差が一定値以下の個体が得られた」や「一定時間経過した」などを判定する。そして、終了判定部２９は、終了条件を満たす場合は、出力部３０へ処理の開始を指示し、終了条件を満たさない場合は、打切りエポック判定部２８へ処理の開始を指示する。
【００５０】
出力部３０は、予測誤差が最も小さい、予測精度の高い個体を選択して出力する処理部である。例えば、出力部３０は、終了判定部２９から処理開始を指示されると、集団テーブル１４に記憶される各ＮＮと各ＮＮの予測誤差とを読み出す。そして、出力部３０は、予測誤差が最も小さいＮＮを選択し、予め指定された出力先へ、選択したＮＮを出力する。例を挙げると、出力部３０は、ディスプレイやタッチパネルなどの表示部に、選択したＮＮを表示させたり、管理者端末に、選択したＮＮを送信したりする。
【００５１】
［処理の流れ］
図８は、処理の流れを示すフローチャートである。図８に示すように、入力受付部２１は、入力情報を受け付けると（Ｓ１０１：Ｙｅｓ）、受け付けた入力情報をパラメータとしてパラメータテーブル１３に格納する（Ｓ１０２）。
【００５２】
続いて、初期化部２３は、ＧＡ集団の初期化を実行するとともに、生成した各ＮＮに対して１エポックずつ学習する（Ｓ１０３）。その後、打切りエポック判定部２８は、初回のＮＮ訓練結果を用いて、打切りエポック数を決定する（Ｓ１０４）。
【００５３】
その後、親選択部２４が、集団テーブル１４の中から２つのＧＡを親個体としてランダムに選択し（Ｓ１０５）、交叉部２５が、選択された２つの親個体から子個体を生成する（Ｓ１０６）。
【００５４】
続いて、ＮＮ訓練部２６は、子個体テーブル１６の中から子個体を選択して（Ｓ１０７）、ＮＮ訓練を実行する（Ｓ１０８）。そして、ＮＮ訓練部２６は、ＮＮ訓練が終了するとエポック数をインクリメントし（Ｓ１０９）、打切りエポック数に到達するまでＳ１０７以降を繰り返す（Ｓ１１０：Ｎｏ）。なお、ＮＮ訓練部２６は、子個体テーブル１６に記憶される各子個体について、Ｓ１０７からＳ１１０を実行する。
【００５５】
そして、打切りエポック数に到達すると（Ｓ１１０：Ｙｅｓ）、生存選択部２７は、集団テーブル１４に記憶される各ＮＮと訓練済みテーブル１７に記憶される各ＮＮの中から、次の訓練対象となる次世代ＮＮを選択する（Ｓ１１１）。
【００５６】
その後、終了判定部２９が、選択された次世代ＮＮが終了条件を満たさないと判定した場合（Ｓ１１２：Ｎｏ）、Ｓ１０４以降が繰り返される。一方、終了判定部２９が、選択された次世代ＮＮが終了条件を満たすと判定した場合（Ｓ１１２：Ｙｅｓ）、出力部３０が、１つのＮＮを選択して出力する（Ｓ１１３）。
【００５７】
［効果］
このように、通常は専門家による試行錯誤が行われるＮＮ構造のチューニングを、自動で高速に行うことができる。また、すべてのＮＮ構造を十分に学習できないとき、多くのＮＮ構造を調べることと個々のＮＮの予測誤差を正確に見積もることはトレードオフの関係にある。しかし、本実施例の手法を用いることで、ＮＮの構造探索を行うＧＡとＮＮ学習を担う勾配法の反復回数とを適切に配分することができる。この結果、ＮＮの学習回数を減らす一方で、個々のＮＮの予測誤差を正確に見積もる程度の打切りエポック数を設定することができ、ＮＮの学習時間の短縮を図りつつ、ＮＮの学習精度の低下を抑制することができる。
【００５８】
また、情報処理装置１０は、学習するたびに、次の学習用に打切りエポック数を更新するので、学習時の予測誤差に応じて打切りエポック数を決定することができ、ＮＮの学習精度の低下を抑制することができる。
【実施例２】
【００５９】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【００６０】
［学習エポック数の増減］
上記実施例では、ＧＡ集団の適応度（予測誤差）に応じて、打切りエポック数を１だけ増加または１だけ減少させる例を説明したが、これに限定されるものではなく、例えば２などの所定数を増減させることもできる。また、適応度と閾値との差が、所定値未満である場合は１だけ増減し、適応度と閾値との差が、所定値以上である場合は２だけ増減させることもできる。
【００６１】
［システム］
また、図１に示した各装置の各構成は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、任意の単位で分散または統合して構成することができる。例えば、学習部２２と打切りエポック判定部２８を統合することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６２】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６３】
［ハードウェア］
上記情報処理装置１０は、例えば、次のようなハードウェア構成を有するコンピュータにより実現することができる。図９は、ハードウェア構成例を説明する図である。図９に示すように、情報処理装置１０は、通信インタフェース１０ａ、ＨＤＤ（Hard  Disk  Drive）１０ｂ、メモリ１０ｃ、プロセッサ１０ｄを有する。
【００６４】
通信インタフェース１０ａの一例としては、ネットワークインタフェースカードなどである。ＨＤＤ１０ｂは、図３に示した各種ＤＢを記憶する記憶装置である。
【００６５】
メモリ１０ｃの一例としては、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ等が挙げられる。プロセッサ１０ｄの一例としては、ＣＰＵ、ＤＳＰ（Digital  Signal  Processor）、ＦＰＧＡ（Field  Programmable  Gate  Array）、ＰＬＤ（Programmable  Logic  Device）等が挙げられる。
【００６６】
また、情報処理装置１０は、プログラムを読み出して実行することで学習方法を実行する情報処理装置として動作する。つまり、情報処理装置１０は、入力受付部２１、学習部２２、打切りエポック判定部２８、終了判定部２９、出力部３０と同様の機能を実行するプログラムを実行する。この結果、情報処理装置１０は、入力受付部２１、学習部２２、打切りエポック判定部２８、終了判定部２９、出力部３０と同様の機能を実行するプロセスを実行することができる。なお、この他の実施例でいうプログラムは、情報処理装置１０によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【００６７】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ（Magneto−Optical  disk）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【００６８】
１０  情報処理装置
１１  通信部
１２  記憶部
１３  パラメータテーブル
１４  集団テーブル
１５  親個体テーブル
１６  子個体テーブル
１７  訓練済みテーブル
２０  制御部
２１  入力受付部
２２  学習部
２３  初期化部
２４  親選択部
２５  交叉部
２６  ＮＮ訓練部
２７  生存選択部
２８  打切りエポック判定部
２９  終了判定部
３０  出力部
【図１】
0006740597.tif 000002
【図２】
0006740597.tif 000003
【図３】
0006740597.tif 000004
【図４】
0006740597.tif 000005
【図５】
0006740597.tif 000006
【図６】
0006740597.tif 000007
【図７】
0006740597.tif 000008
【図８】
0006740597.tif 000009
【図９】
0006740597.tif 000010