(57)【要約】対象に適した構造の学習ネットワークを自動的に生成することができる学習ネットワーク生成装置を提供することを目的とする。学習ネットワーク生成装置は、学習ネットワークの個体を定義するデータを生成する初期個体生成部と、初期個体生成部が生成した学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成部と、コード生成部が生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行部と、学習実行部にて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別部と、を備える。
2019064461.tif 000002
【特許請求の範囲】
【請求項１】
学習ネットワークの個体を定義するデータを生成する初期個体生成部と、
前記初期個体生成部が生成した前記学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成部と、
前記コード生成部が生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行部と、
前記学習実行部にて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別部と、
を備えることを特徴とする学習ネットワーク生成装置。
【請求項２】
前記初期個体生成部は、前記学習ネットワークの構造を表すデータを生成することを特徴とする請求項１に記載の学習ネットワーク生成装置。
【請求項３】
前記初期個体生成部は、前記学習ネットワークの構造を表すデータを、
前記学習ネットワークにおける１つの層に対応し、少なくとも当該１つの層と前層との接続関係を示すレイヤーノードと、
前記レイヤーノードに連なり、当該レイヤーノードに対応する層の構造に関するパラメータを示すパラメータノードと
を含む木構造のデータとして出力することを特徴とする請求項２に記載の学習ネットワーク生成装置。
【請求項４】
前記学習ネットワークは、それぞれ１以上のユニットを有する複数の層が結合された構造を有しており、
学習ネットワークの構造を表すデータは、各層を構成するユニットの数、各ユニットにおける活性化関数、及び層間の結合関係を含むことを特徴とする請求項２または３に記載の学習ネットワーク生成装置。
【請求項５】
前記コード生成部は、前記初期個体生成部が生成した学習ネットワークの構造を表すデータと、個体に依存しない共通部分のテンプレートデータとに基づき、個体に応じたプログラムコードを生成することを特徴とする請求項１から４の何れか１項に記載の学習ネットワーク生成装置。
【請求項６】
前記評価・選別部の選別した個体に対し、進化過程を実施して次世代の個体を生成する進化実行部をさらに備え、
前記コード生成部は、前記進化実行部が生成した前記次世代の個体に応じたプログラムコードを生成することを特徴とする請求項１から５のいずれか１項に記載の学習ネットワーク生成装置。
【請求項７】
コンピュータを請求項１から６の何れか１項に記載の学習ネットワーク生成装置として機能させる学習ネットワーク生成プログラム。
【請求項８】
コンピュータに、
学習ネットワークの個体を定義するデータを生成する初期個体生成ステップと、
前記初期個体生成ステップにて生成した前記学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成ステップと、
前記コード生成ステップにて生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行ステップと、
前記学習実行ステップにて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別ステップと、
を実行させることを特徴とする学習ネットワーク生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、いわゆる深層学習（ディープラーニング）により機械学習を行う学習ネットワークを生成するプログラムに関する。
【背景技術】
【０００２】
近年、人工知能の分野において、人がルールを記述することなく、多くの学習データを入力することにより、機械（コンピュータ）が学習データからが自動的に判断ルールを導き出す「機械学習」が注目を集めている。この機械学習の一種である深層学習は、画像認識や音声認識といった分野への適用が進んでいる。深層学習は、機械（コンピュータ）が学習データから抽出すべき特徴をも自動的に学習する点に特徴があると言われている。つまり、深層学習では、何に着目すればよいかを教える必要がなく、どのような特徴を利用すれば対象を正しく識別できるのかを自動的に学ぶことができる、と言われている。そして、このような深層学習を利用した様々な装置が提案されている（例えば特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１１１６６０
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、実際にコンピュータに深層学習を行わせるには、予め学習ネットワークを定義する必要がある。ここで、学習ネットワークとは、生物の脳の神経細胞（ニューロン）をモデルとしたアルゴリズムであり複数の層を備えるものである。各層は、１つ以上のノード（ユニットとも言う。以下では後述する木構造におけるノードと区別するためにユニットと呼ぶ。）で構成されている。学習ネットワークは、機械学習を繰り返し行うにより、各ノードに対する入力の重み（係数）を調整することで、入力に基づき正解を出力できる精度（正答率）を高めることができる。【０００５】
ところで、学習ネットワークは、図１に示したように、入力層、１以上の中間層、及び出力層により構成される多層パーセプトロンモデルによりしばしば表される。この学習ネットワークのモデルにおいて、各層は１以上のノードを有し、各ユニットに対して前層（入力層については外部）から入力値が１つ以上与えられる。各層に含まれるユニットの数や層間のユニットの接続関係は様々である。ユニットに対する入力値には、それぞれ重み係数が掛けられ、この入力値に重み係数を掛けた値の総和が、ユニット毎に規定された活性化関数の引数となる。活性化関数の出力は、次層への出力値となる。【０００６】
このように、学習ネットワークは、各層を構成するユニットの数、各ユニットにおける活性化関数、層間の結合関係等によりその構造が規定され、その規定された学習ネットワークに対して入力を与えたときの出力が正解に近づくように、各ユニットに対する入力に掛けられる重み係数を修正することで、学習を行う。【０００７】
したがって、学習ネットワークの構造が不適当であると、機械学習を繰り返しても正答率を高めることはできない。このように学習ネットワークの構造は深層学習の効果を高めるうえで重要な要素であるが、適切な学習ネットワークの構造は、対象によって（例えば、対象が文字の識別なのか、画像の識別なのか等）異なる。このため、従来は、設計者が基本的には手作業によって試行錯誤を繰り返すことにより、対象に対して適切と思われる学習ネットワークの構造を見つけて定義していた。【０００８】
本発明は、上記課題の解決のためになされたものであり、対象に適した構造の学習ネットワークを自動的に生成することができる学習ネットワーク生成装置および学習ネットワーク生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決すべく、本発明に係る学習ネットワーク生成装置は、学習ネットワークの個体を定義するデータを生成する初期個体生成部と、初期個体生成部が生成した学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成部と、コード生成部が生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行部と、学習実行部にて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別部と、を備える。このとき、初期個体生成部は、学習ネットワークの構造を表すデータを生成するとよい。【００１０】
このような構成により、対象に適した構造の学習ネットワークを自動的に生成することができる。【００１１】
また、本発明では、初期個体生成部は、学習ネットワークの構造を表すデータを、学習ネットワークにおける１つの層に対応し、少なくとも当該１つの層と前層との接続関係を示すレイヤーノードと、レイヤーノードに連なり、当該レイヤーノードに対応する層の構造に関するパラメータを示すパラメータノードとを含む木構造のデータとして出力するとよい。【００１２】
このようにすれば、取り扱いが容易な形式で、学習ネットワークの個体の構造を表現することができる。【００１３】
本発明では、学習ネットワークが、それぞれ１以上のユニットを有する複数の層が結合された構造を有する場合において、学習ネットワークの構造を表すデータは、各層を構成するユニットの数、各ユニットにおける活性化関数、及び層間の結合関係を含むとよい。【００１４】
本発明では、コード生成部は、初期個体生成部が生成した学習ネットワークの構造を表すデータと、個体に依存しない共通部分のテンプレートデータとに基づき、個体に応じたプログラムコードを生成とよい。【００１５】
本発明では、学習ネットワーク生成装置は、評価・選別部の選別した個体に対し、進化過程を実施して次世代の個体を生成する進化実行部をさらに備え、コード生成部は、進化実行部が生成した次世代の個体に応じたプログラムコードを生成するとよい。このようにすれば、優れた個体同士を掛け合わせたり、優れた個体に突然変異を生じさせたりすることにより、優秀な個体を進化させた新たな世代の個体を自動的に生成し、評価・選別を行うことで優れた個体を出力することができる。【００１６】
本発明に係る学習ネットワーク生成プログラムは、コンピュータを上記いずれかの学習ネットワーク生成装置として機能させるとよい。【００１７】
本発明の他の例に係る学習ネットワーク生成プログラムは、コンピュータに、学習ネットワークの個体を定義するデータを生成する初期個体生成ステップと、初期個体生成ステップにて生成した学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成ステップと、コード生成ステップにて生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行ステップと、学習実行ステップにて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別ステップと、を実行させることを特徴とする。
【図面の簡単な説明】
【００１８】
【図１】学習ネットワークの多層パーセプトロンモデルによる表現例を示した模式図である。
【図２】学習ネットワークを学習ネットワーク生成装置で扱う木構造による表現例を示した模式図である。
【図３】学習ネットワーク生成装置の構成例を示す模式図である。
【図４】学習ネットワーク生成装置１の機能ブロック図である。
【図５】学習ネットワーク生成処理の手順を示すフローチャートである。
【図６】ワンポイント法による交叉を説明する模式図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施形態に係る学習ネットワーク生成装置１を説明する。
【００２０】
〔学習ネットワーク生成装置１が扱う学習ネットワークのデータ構造〕
本実施形態に係る学習ネットワーク生成装置１は、個々の学習ネットワーク（個体）を、木構造で定義する。図２は、木構造で定義した個体の一例を示している。図２に例示した木構造において、図面の上下方向は階層（レイヤー）を表しており、図中で上に描かれているレイヤーほど上位階層のレイヤーとなる。また、同一のレイヤーにおいて、右端に描かれたノードはレイヤーノードＬＮと呼ばれ、学習ネットワークにおける各階層の属性を表す。また、同一のレイヤーにおいて、右端以外に描かれたノードは、パラメータノードＰＮと呼ばれ、１階層上位のレイヤーノードＬＮのパラメータを規定する。例えば、第２階層Ｌ２のレイヤーノードＬＮは‘PreviousDense’であり、この‘PreviousDense’には、パラメータとして第３階層Ｌ３に属する各パラメータノードＰＮの値が設定される。なお、後述するように、パラメータノードＰＮの値の意義は、レイヤーノードＬＮの種類毎に定義される。また、図２における第３階層Ｌ３のレイヤーノードＬＮである‘Flatten’のように、パラメータノードＰＮを持たないレイヤーノードＬＮの存在も許容される。
【００２１】
学習ネットワーク生成装置１では、このような木構造で表される学習ネットワークを、文字列のデータで記述する。木構造を記述する文字列は、”{”で開始される。そして、木構造におけるノードの番号（例えば“0:”、“1:”等）、レイヤーノードＬＮの種類を示す文字列（例えば、'HyperParameter'、'PreviousDense'等）又は直前のレイヤーノードＬＮに連なるパラメータノードＰＮの値、及び区切り文字（例えば“，”）の繰り返しにより、学習ネットワークの構造を記述し、最後に”}”を記述することで木構造の記述の末尾を明記する。例えば、図２に示した木構造の学習ネットワークは、{0: 'HyperParameter', 1: 0.425, 2: 0.423, 3: 'PreviousDense', 4: 37, 5: 3, 6: 0.52, 7: 'Flatten', 8: 'FollowingDense', 9: 136, 10: 12, 11: 0.571, 12: 'LastDense', 13: 1, 14: 0, 15: 0.053}という文字列で表される。
【００２２】
木構造で表した学習ネットワークと多層パーセプトロンモデルで描いた学習ネットワークとの対応関係は次の通りである。
【００２３】
木構造の表現では、全ての個体において、最上位階層Ｌ１のレイヤーノードＬＮは‘HyperParameter’であり、この‘HyperParameter’に対する２つのパラメータ（‘LEARNING_RATE’と‘MOMENTUM’）が第２階層Ｌ２のパラメータノードＰＮの値として規定される‘HyperParameter’は、個体の学習に関するパラメータであり、多層パーセプトロンモデルで表される学習ネットワークの構造には直接関係しない。なお、上記の‘LEARNING_RATE’と‘MOMENTUM’は一例に過ぎず、‘HyperParameter’に連なるパラメータノードＰＮの数や種類は任意である。
【００２４】
また、学習ネットワーク生成装置１では、多層パーセプトロンモデルにおける入力層及び入力層に対する入力は、全ての個体で共通とされ、木構造の表現には表れない。
【００２５】
第２層Ｌ２以下の階層におけるレイヤーノードＬＮの名称は、多層パーセプトロンモデルにおける前層との接続方法を示している。すなわち、例えば第２層Ｌ２のレイヤーノードＬＮは、入力層と最初の中間層との接続方法を示す。また、第２層Ｌ２以下の階層におけるレイヤーノードＬＮに連なるパラメータノードＰＮは、レイヤーノードＬＮに対応する層が有するユニットの数、活性化関数の種類、その他レイヤーノードＬＮの種類に応じて規定されたパラメータ（例えば活性化関数に適用されるパラメータ）を示す。なお、活性化関数の例としては、ステップ関数、シグモイド関数、ReLU関数、恒等関数、ソフトマックス関数、ハイパボリックタンジェント（tanh）関数などが挙げられる。
【００２６】
このように、本実施形態の学習ネットワーク生成装置１は、学習ネットワークの個体の多層パーセプトロンモデルにおける各層の構造及びその接続関係を、木構造によって表現している。なお、ユニット間を受け渡される出力値に乗じられる重み係数については、木構造の表現では規定されない。学習ネットワーク生成装置１は、重み係数は、学習ネットワークの個体に学習を行わせる際に、重み係数の学習前の初期値としてランダムな値を設定する。
【００２７】
以下では、上述のような木構造で表現した学習ネットワークを生成する学習ネットワーク生成装置１の構成について詳細に説明する。
【００２８】
〔学習ネットワーク生成装置１のハードウェア構成〕
図３は、本発明の実施形態に係る学習ネットワーク生成装置１の構成例を示している。学習ネットワーク生成装置１は、学習ネットワークを遺伝的プログラミングの手法によって生成する。図３に示されるように学習ネットワーク生成装置１は、例えばコンピュータとして実現される。すなわち、学習ネットワーク生成装置１は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、グラフィック処理部１０４、及び入力インタフェース１０５を備える。
【００２９】
学習ネットワーク生成装置１は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＧＰＵ（Graphics Processing Unit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３０】
ＲＡＭ１０２（Random Access Memory）は、学習ネットワーク生成装置１の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００３１】
ＨＤＤ１０３（Hard Disk Drive）は、学習ネットワーク生成装置１の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００３２】
グラフィック処理部１０４には、表示装置１０４ａが接続されている。グラフィック処理部１０４は、プロセッサ１０１からの命令に従って、画像を表示装置１０４ａの画面に表示させる。表示装置１０４ａとしては、液晶ディスプレイや有機ＥＬ（Electro Luminescence）ディスプレイなどが用いられる。
【００３３】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３４】
以上のようなハードウェア構成によって、学習ネットワーク生成装置１を実現することができる。
【００３５】
〔学習ネットワーク生成装置１の機能ブロック〕
図４は学習ネットワーク生成装置１の機能ブロック図を示している。
学習ネットワーク生成装置１は、処理部１１、記憶部１２、入力部１３、及び出力部１４を備える。
【００３６】
処理部１１は、プロセッサ１０１がＲＡＭ１０２やＨＤＤ１０３に格納されたプログラムを実行することにより実現される。記憶部１２は、ＲＡＭ１０２やＨＤＤ１０３により実現される。入力部１３は、入力インタフェース１０５及び入力装置１０５ａにより実現される。出力部１４は、グラフィック処理部１０４及び表示装置１０４ａにより実現される。
【００３７】
図４に示されるように、処理部１１は、その処理内容に応じて、初期個体生成部１１１、個体コード生成部１１２、学習実行部１１３、個体評価・選別部１１４、及び進化実行部１１５を含むサブブロックに細分化される。また、図３に示されるように、記憶部１２は、メインプログラム１２１、個体コード生成プログラム１２２、レイヤー名称定義データ１２３、レイヤー構造定義データ１２４、レイヤーコード生成ルール１２５、テンプレートデータ１２６、個体コード１２７、及び学習用データ１２８を含む各種のプログラムやデータを格納する。
【００３８】
メインプログラム１２１は、プロセッサ１０１により実行されることで、初期個体生成部１１１、学習実行部１１３、個体評価・選別部１１４、及び進化実行部１１５の機能を実現する。また、個体コード生成プログラム１２２は、プロセッサ１０１により実行されることで個体コード生成部１１２の機能を実現する。メインプログラム１２１及び個体コード生成プログラム１２２については後に詳述する。
【００３９】
レイヤー名称定義データ１２３とレイヤー構造定義データ１２４は、個体の文字列データからレイヤーノードＬＮを抽出し、レイヤーオブジェクトを生成するためのルールを定義する。
【００４０】
レイヤーオブジェクトとは、木構造で表される学習ネットワークにおける各階層のレイヤーノードＬＮに、当該レイヤーノードＬＮの持つパラメータノードＰＮの値を適用したものであり、１つのレイヤーノードＬＮが、当該レイヤーノードＬＮに対するパラメータノードＰＮと共に、１つのレイヤーオブジェクトに変換される。このレイヤーオブジェクトに基づいて、各レイヤーノードＬＮに対応するプログラムコードが得られる。１つの個体はレイヤーオブジェクトの配列として表される。
【００４１】
レイヤー名称定義データ１２３は、学習ネットワーク生成装置１にて扱うレイヤーノードＬＮの名称、各レイヤーノードＬＮに連なるパラメータノードＰＮの名称や順番等を定義する。また、レイヤー構造定義データ１２４は、レイヤーノードＬＮの種類毎に、レイヤーオブジェクトのデータ構造を定義する。すなわち、パラメータノードＰＮの種類、数、パラメータノードＰＮの値の意義等は、レイヤーノードＬＮの種類毎に異なり、レイヤー構造定義データ１２４は、レイヤーノードＬＮの種類毎にこれらの情報を定義する。レイヤー構造定義データ１２４に定義されるデータ構造は、例えば、当該レイヤーオブジェクトが有するユニットの数を示すデータ、活性化関数の種類を示すデータ（例えば、識別番号）、パラメータを示すデータ等を含む。
【００４２】
プログラムへの実装において、レイヤーノードＬＮの種類に応じたデータ構造は、レイヤーノードＬＮの種類に応じて定義されるクラスにおけるメンバ変数としてレイヤー構造定義データ１２４に記述される。この他、レイヤーノードＬＮの種類に応じて定義されるクラスは、レイヤーオブジェクトのインスタンスを作るためのコンストラクタ、インスタンスを破棄するためのデストラクタ等のメンバ関数も定義するとよい。なお、‘Flatten’のように、パラメータノードＰＮを持たないレイヤーノードＬＮも存在し、このようなパラメータノードＰＮを持たないレイヤーノードＬＮを定義するクラスは、パラメータノードＰＮに関する定義を含まない。
【００４３】
レイヤーコード生成ルール１２５は、レイヤーオブジェクトを具体的なプログラムコードの文字列に変換するためのルールや条件を規定する。例えば、レイヤーコード生成ルール１２５は、レイヤーオブジェクトのインスタンスが有する活性化関数の種類を示すデータを、具体的な活性化関数に対応付ける変換ルールを定義する。また、レイヤーコード生成ルール１２５は、レイヤーオブジェクトのインスタンスを当該レイヤーでの処理を規定するプログラムコードに変換するルールを規定する。
【００４４】
テンプレートデータ１２６は、全ての個体コードに共通して含まれるコードを規定する。テンプレートデータ１２６は、例えば、深層学習の学習ネットワーク部分以外の部分を規定する。また、生成する学習ネットワークへ外部からの入力の形式とする場合には、学習ネットワークの入力層は生成する全ての学習ネットワークで共通となる。このように、全ての学習ネットワークで共通となる部分がある場合には、このような共通部分についてもテンプレートデータ１２６に定義するとよい。このようにすれば、学習ネットワークにおける変更可能な部分と共通部分とを完全に切り分けて扱うことができる。したがって、変更可能な部分で処理するデータ量を削減できる。また、共通部分については一括して修正・変更等を行うことができる。
【００４５】
個体コード１２７は、個体コード生成部１１２によって生成される各個体の個体コードであり、文字列で記述されたプログラムコードである。個体コード１２７は、レイヤーオブジェクトの配列として表される個体の情報、レイヤー名称定義データ１２３、レイヤー構造定義データ１２４、レイヤーコード生成ルール１２５、及びテンプレートデータ１２６に基づき生成される。
【００４６】
学習用データ１２８は、個体コード１２７に深層学習を行わせる際に用いられる学習用データである。学習用データ１２８は、例えば、入力データと正解データの組により定義される。
【００４７】
続いて、処理部１１の構成要素である、初期個体生成部１１１、個体コード生成部１１２、学習実行部１１３、個体評価・選別部１１４、及び進化実行部１１５の実現方法を、学習ネットワーク生成装置１による学習ネットワーク生成処理の流れとともに説明する。図５は、学習ネットワーク生成処理の手順を示すフローチャートを示している。
【００４８】
初期個体生成部１１１は、プロセッサ１０１がメインプログラム１２１を実行することにより実現される。メインプログラム１２１は、例えば、レイヤーノードＬＮの接続ルールや許容される層数等の学習ネットワーク生成装置１で扱う学習ネットワークの記述ルール、生成する初期個体の数等の初期個体生成条件を含んでいる。初期個体生成部１１１は、メインプログラム１２１に規定された初期個体生成ルールに従って、学習ネットワークの構造を定義する文字列を生成し、個体コード生成部１１２に出力する（ステップＳ１００）。
【００４９】
個体コード生成部１１２は、プロセッサ１０１が個体コード生成プログラム１２２を実行することにより実現される。個体コード生成部１１２は、各個体の学習ネットワークを表す文字列データに基づき、当該個体の個体コード１２７を生成する。個体コード生成部１１２が行う処理は次の通りである。
【００５０】
まず、個体コード生成部１１２は、個体を定義する文字列を、レイヤー毎に分解してレイヤーオブジェクトの配列とする（ステップＳ１１０）。具体的には、個体コード生成部１１２は、個体を定義する文字列の中で、レイヤー名称定義データ１２３定義されたレイヤーノードＬＮを示す文字列から、次のレイヤーノードＬＮを示す文字列の直前までを、１つのレイヤーオブジェクトを表す単位として認識する。そして、レイヤーノードＬＮの名称に応じたレイヤーオブジェクトのインスタンスを、レイヤー構造定義データ１２４に規定されているレイヤーオブジェクトのデータ構造に則って生成する。このとき、パラメータノードＰＮの値は、インスタンスにおける対応するメンバ変数の値として代入される。
【００５１】
このようにして、個体コード生成部１１２は、個体を定義する文字列に含まれる全てのレイヤーノードＬＮを順番にレイヤーオブジェクトのインスタンスに変換し、変換順に並んだに配列に記憶する。
【００５２】
続いて、個体コード生成部１１２は、レイヤーオブジェクトの配列をレイヤーコード生成ルール１２５に基づいて個体の学習ネットワークに応じたプログラムコードを生成するとともに、この生成したプログラムコードに、テンプレートデータ１２６に規定された共通のコードとを組み合わせて、学習ネットワークの個体の個体コード１２７を生成して出力する（ステップＳ１２０）。個体コード１２７は、文字列で記述されたプログラムコードであり、後の学習や評価のために学習ネットワーク生成装置１２に記録される。
【００５３】
学習実行部１１３は、初期個体生成部１１１と同様、プロセッサ１０１がメインプログラム１２１を実行することにより実現される。学習実行部１１３は、個体コード１２７に学習用データ１２８を適用して、深層学習を実行する（ステップＳ１３０）。すなわち、学習実行部１１３は、はじめに各ユニットの入力について重み係数の初期値としてランダムとしてランダムな値を設定する。そして、学習用データ１２８に規定された学習用の入力データを個体コード１２７に適用し、個体コード１２７の出力を学習用データ１２８に規定された入力データに対応する正解データと照合する。そして、照合結果に応じて、個体コード１２７で記述される学習ネットワークの内部パラメータを調整する。このような処理を繰り返すことで、学習ネットワークに深層学習を行わせることができる。なお、深層学習を行う条件（例えば繰り返しの回数等）はメインプログラム１２１の中に定義される。上述のように、重み係数の初期値はランダムな値であるため、同じ個体コード１２７でも実行毎に学習結果が異なる場合がある。このため、１つの個体コード１２７に対して深層学習を複数試行し、最もよい学習結果を採用するようにするとよい。
【００５４】
個体評価・選別部１１４は、初期個体生成部１１１と同様、プロセッサ１０１がメインプログラム１２１を実行することにより実現される。個体評価・選別部１１４は、学習実行部１１３により深層学習を行った学習済みの各個体について、評価を行う。評価の方法としては、様々な既知の評価関数を用いることができる。
【００５５】
続いて、個体評価・選別部１１４は、評価結果に基づき個体の選別処理を実施する。メインプログラム１２１は、例えば、各個体を評価結果に応じて残すか否かを決定する判定条件を含んでいる。個体評価・選別部１１４は、評価結果と判定条件とに基づき、残す個体を選別し、その他の個体については削除する（ステップＳ１４０）。
【００５６】
進化実行部１１５は、初期個体生成部１１１と同様、プロセッサ１０１がメインプログラム１２１を実行することにより実現される。進化実行部１１５に先立ち、メインプログラムにより、進化過程を実行するか否かが判定される（ステップＳ１５０）。進化過程を実行するか否かは、例えば、初期個体からこれまでに進化過程を行った回数、残っている個体の評価結果等に基づいて判定するとよい。進化過程を実行すると判定された場合（ステップＳ１５０；Ｙｅｓ）、進化実行部１１５は、残っている個体に対して進化過程を実施する（ステップＳ１６０）。すなわち、進化実行部１１５は、個体に対して交叉処理および突然変異処理を行う。
【００５７】
交叉処理としては、例えばワンポイント法にて交叉を起こすとよい。ワンポイント法では、残した個体の内から２つの個体を親個体として選択し、図６に示したように、選択した２つの親個体のそれぞれから、接続ルールに違反することなく交換可能なレイヤーノードＬＮを選択して、当該レイヤーノードＬＮにて、学習ネットワークを切断し、繋ぎ変えて子個体とする。なお、２つの親個体に対して、それぞれ異なる交叉処理が行われることで、３つ以上の子個体が生成されてもよい。
【００５８】
また、突然変異処理としては、例えば、初期個体を生成するときと同様の手法で新たに個体を生成する、残した個体（親個体）の一部を（接続ルールに違反しない範囲で）ランダムに変更する、残した個体（親個体）にランダムに新たなレイヤーを付加する、といった手法を採用するとよい。
【００５９】
進化実行部１１５は、メインプログラム１２１に定義された数の子個体が生成されるまで、ランダムに親個体を変えながら進化過程を繰り返し実施する。なお、進化実行部１１５による交叉処理や突然変異処理は、個体評価・選別部１１４が評価した個体に対応する元の文字列で記述された木構造のデータに対して行うとよい。このようにすることで、初期個体の生成時と同じ接続ルールや個体のプログラムコードの生成ルールを、進化時にも容易に適用することが可能となる。また、文字列で記述された木構造のデータは、プログラムコード自体は含まず、学習ネットワークの構造を示す情報のみを含むため、処理部１１で行われる処理の負荷を抑制することができる。
【００６０】
進化過程の完了後、処理がステップＳ１２０に移される。すなわち、生成された子個体に対して学習実行部１１３での深層学習、個体評価・選別部１１４での評価と選別、及び進化実行部１１５での進化が、さらなる進化過程を実行しないとする判定条件（例えば繰り返しの回数）を満たすまで繰り返される。そして、進化過程を実行しないと判定されると（ステップＳ１５０；Ｎｏ）、その時点で残った個体のうち、評価結果が優れたものを最終的に生成された個体として出力し（ステップＳ１７０）、学習ネットワーク生成処理を終了する。最終的に生成された個体は１つとしてもよいし、複数としてもよい。
【００６１】
以上で説明した構成及び手順により、本実施形態の学習ネットワーク生成装置および学習ネットワーク生成プログラムは、対象に適した構造の学習ネットワークを自動的に生成することができる。
【００６２】
なお、上記に本実施形態を説明したが、本発明はこれらの例に限定されるものではない。例えば、上記の実施形態において、図２に示したような木構造により学習ネットワークを定義した。図２の木構造は、１つのレイヤーにつき１つのレイヤーノードＬＮが含まれるものであった。しかし、１つのレイヤーに複数のレイヤーノードＬＮが含まれることを許容し、分岐を伴う複雑な構造の学習ネットワークを定義できるようにしてもよい。
【００６３】
また、上記の実施形態において、学習用データ１２８は入力データと正解データの組により定義されたが、学習実行部１１３にて、いわゆる「教師なし学習」を行う場合には、正解データを含まなくてもよい。
【００６４】
また、前述の実施形態に対して、当業者が適宜、構成要素の追加、削除、設計変更を行ったものや、各実施形態の特徴を適宜組み合わせたものも、本発明の要旨を備えている限り、本発明の範囲に包含される。
【符号の説明】
【００６５】
１  学習ネットワーク生成装置
１１  処理部
１２  記憶部
１３  入力部
１４  出力部
１１１  初期個体生成部
１１２  個体コード生成部
１１３  学習実行部
１１４  個体評価・選別部
１１５  進化実行部
１２１  メインプログラム
１２２  個体コード生成プログラム
１２３１  レイヤー名称定義データ
１２３２  レイヤー構造定義データ
１２７  コード
１２４  テンプレートデータ
１２５  個体コード
１２６  学習用データ
【図１】
2019064461.tif 000003
【図２】
2019064461.tif 000004
【図３】
2019064461.tif 000005
【図４】
2019064461.tif 000006
【図５】
2019064461.tif 000007
【図６】
2019064461.tif 000008
【手続補正書】
【提出日】令和1年12月2日(2019.12.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
学習ネットワークの個体を定義するデータを生成する初期個体生成部と、
前記初期個体生成部が生成した前記学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成部と、
前記コード生成部が生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行部と、
前記学習実行部にて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別部と、
を備え、
前記初期個体生成部は、前記学習ネットワークの構造を表すデータを、
前記学習ネットワークにおける１つの層に対応し、少なくとも当該１つの層と前層との接続関係を示すレイヤーノードと、
前記レイヤーノードに連なり、当該レイヤーノードに対応する層の構造に関するパラメータを示すパラメータノードと
を含む木構造のデータとして生成し出力することを特徴とする学習ネットワーク生成装置。
【請求項２】
前記学習ネットワークは、それぞれ１以上のユニットを有する複数の層が結合された構造を有しており、
学習ネットワークの構造を表すデータは、各層を構成するユニットの数、各ユニットにおける活性化関数、及び層間の結合関係を含むことを特徴とする請求項１に記載の学習ネットワーク生成装置。
【請求項３】
前記コード生成部は、前記初期個体生成部が生成した学習ネットワークの構造を表すデータと、個体に依存しない共通部分のテンプレートデータとに基づき、個体に応じたプログラムコードを生成することを特徴とする請求項１または２に記載の学習ネットワーク生成装置。
【請求項４】
前記評価・選別部の選別した個体に対し、進化過程を実施して次世代の個体を生成する進化実行部をさらに備え、
前記コード生成部は、前記進化実行部が生成した前記次世代の個体に応じたプログラムコードを生成することを特徴とする請求項１から３のいずれか１項に記載の学習ネットワーク生成装置。
【請求項５】
コンピュータを請求項１から４の何れか１項に記載の学習ネットワーク生成装置として機能させる学習ネットワーク生成プログラム。
【請求項６】
コンピュータに、
学習ネットワークの個体を定義するデータを、
前記学習ネットワークにおける１つの層に対応し、少なくとも当該１つの層と前層との接続関係を示すレイヤーノードと、
前記レイヤーノードに連なり、当該レイヤーノードに対応する層の構造に関するパラメータを示すパラメータノードと
を含む木構造のデータとして生成する初期個体生成ステップと、
前記初期個体生成ステップにて生成した前記学習ネットワークの個体を定義するデータに基づき、当該個体に応じたプログラムコードを生成するコード生成ステップと、
前記コード生成ステップにて生成した個体に応じたプログラムコードに対して学習用データを適用して進化学習を実行する学習実行ステップと、
前記学習実行ステップにて進化学習を行った学習済み個体を評価するとともに、評価の結果に応じて個体を残すか否かを判定する評価・選別ステップと、
を実行させることを特徴とする学習ネットワーク生成プログラム。
【国際調査報告】
2019064461.tif 000009
2019064461.tif 000010
2019064461.tif 000011