(57)【特許請求の範囲】
【請求項１】
プロセッサを備える情報処理装置であって、
前記プロセッサが、
深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、
遺伝的プログラミングを用いて前記遺伝子プールから新たな部分層を生成する生成ステップと、
前記新たな部分層が追加された前記遺伝子プール内の各部分層を前記深層学習モデルのテンプレートに組み込んで各部分層を評価し、前記遺伝子プール内に残す複数の前記部分層を決定する評価ステップと、
最も評価値が高い前記部分層が組み込まれた前記深層学習モデルを出力する出力ステップとを実行する、
情報処理装置。
【請求項２】
前記プロセッサが、前記生成ステップおよび前記評価ステップを含む探索を繰り返した後に前記出力ステップを実行する、
請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサが前記探索をｎ回繰り返し、ここでｎは１より大きい自然数であり、
ｉ回目までの前記評価ステップでは、前記プロセッサが、前記遺伝子プール内に残す前記複数の部分層をランダムに決定し、（ｉ＋１）回目以降の前記評価ステップでは、前記プロセッサが、前記遺伝子プール内に残す前記複数の部分層を評価値に基づいて決定し、ここでｉはｎより小さい自然数である、
請求項２に記載の情報処理装置。
【請求項４】
各部分層が畳み込みを含む、
請求項１〜３のいずれか一項に記載の情報処理装置。
【請求項５】
前記各部分層の評価が、該部分層が組み込まれた前記深層学習モデルを１エポック毎に評価し、評価値が前回のエポックよりも下がったときに該深層学習モデルの学習を終了することを含む、
請求項１〜４のいずれか一項に記載の情報処理装置。
【請求項６】
前記評価ステップでは、前記プロセッサが、前記遺伝子プール内の前記部分層の個数が変わらないように、前記遺伝子プール内に残す前記複数の部分層を決定する、
請求項１〜５のいずれか一項に記載の情報処理装置。
【請求項７】
前記遺伝的プログラミングが、前記部分層の評価値が低いほど、該部分層に適用する変異確率を上げることで新たな部分層を生成する、
請求項１〜６のいずれか一項に記載の情報処理装置。
【請求項８】
前記深層学習モデルの評価値が上がらない場合に、前記プロセッサが、前記生成ステップおよび前記評価ステップを含む探索の繰り返し回数を増やすか、前記遺伝子プール内の部分層の個数を増やすか、前記遺伝的プログラミングにおける交叉確率を上げるか、または前記遺伝的プログラミングにおける突然変異確率を上げる、
請求項１〜７のいずれか一項に記載の情報処理装置。
【請求項９】
プロセッサを備える情報処理装置により実行される情報処理方法であって、
深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、
遺伝的プログラミングを用いて前記遺伝子プールから新たな部分層を生成する生成ステップと、
前記新たな部分層が追加された前記遺伝子プール内の各部分層を前記深層学習モデルのテンプレートに組み込んで各部分層を評価し、前記遺伝子プール内に残す複数の前記部分層を決定する評価ステップと、
最も評価値が高い前記部分層が組み込まれた前記深層学習モデルを出力する出力ステップと
を含む情報処理方法。
【請求項１０】
深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、
遺伝的プログラミングを用いて前記遺伝子プールから新たな部分層を生成する生成ステップと、
前記新たな部分層が追加された前記遺伝子プール内の各部分層を前記深層学習モデルのテンプレートに組み込んで各部分層を評価し、前記遺伝子プール内に残す複数の前記部分層を決定する評価ステップと、
最も評価値が高い前記部分層が組み込まれた前記深層学習モデルを出力する出力ステップと
をコンピュータに実行させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一側面は、深層学習に関連する情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
近年、深層学習の研究が盛んに行われており、それぞれの研究者が自身の研究に合わせて最適な深層学習モデルを設計している。例えば下記の非特許文献１には、Ｆｕｌｌｙ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｔｗｏｒｋ（ＦＣＮ）が記載されている。ＦＣＮは、画像から物体をピクセル単位で予測するセマンティック・セグメンテーション（Ｓｅｍａｎｔｉｃ  Ｓｅｇｍｅｎｔａｔｉｏｎ）で用いられる技術である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Long, J., Shelhamer, E. and Darrell, T. "Fully Convolutional Networks for Semantic Segmentation." arXiv:1605.06211v1 [cs.CV], May 20 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
深層学習モデルの設計は研究者の知識と経験を必要とするので、適切なモデルを見つけるのが困難である。例えば、研究者によっては適切なモデルを見つけられなかったり、そのようなモデルを見つけるのに多大な時間が掛かったりしてしまう。そのため、適切な深層学習モデルを自動的に構築することが求められている。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る情報処理装置は、プロセッサを備える情報処理装置であって、プロセッサが、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとを実行する。【０００６】
本発明の一側面に係る情報処理方法は、プロセッサを備える情報処理装置により実行される情報処理方法であって、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとを含む。【０００７】
本発明の一側面に係る情報処理プログラムは、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとをコンピュータに実行させる。【０００８】
このような側面においては、深層学習モデルの構成要素の候補である複数の部分層（現世代の部分層）と、遺伝的プログラミングを用いて生成された新たな部分層（次世代の部分層）とを含む遺伝子プールが用意される。そして、これらの世代にわたる部分層のそれぞれを評価し、遺伝子プールに残す部分層を決めることで、遺伝子プールが更新される。遺伝的プログラミングを用いるこの一連の処理（探索）を実行することで、良好な計算結果を導く部分層の出現が期待できる。そして、その部分層を深層学習モデルに組み込むことで、最も適切であると期待できる深層学習モデルを構築することが可能になる。
【発明の効果】
【０００９】
本発明の一側面によれば、適切な深層学習モデルを自動的に構築できる。
【図面の簡単な説明】
【００１０】
【図１】深層学習モデルの例を示す図である。
【図２】遺伝子プールの例を示す図である。
【図３】深層学習モデルのネットワーク構造の例を示す図である。
【図４】深層学習モデルのネットワーク構造の別の例を示す図である。
【図５】深層学習モデルのネットワーク構造のさらに別の例を示す図である。
【図６】遺伝的プログラミングによる遺伝子プールの進化の例を示す図である。
【図７】実施形態に係る情報処理装置のハードウェア構成を示す図である。
【図８】実施形態に係る情報処理装置の機能構成を示す図である。
【図９】深層学習モデルの学習曲線の例を示すグラフである。
【図１０】実施形態に係る情報処理装置の動作を示すフローチャートである。
【図１１】実施形態に係る情報処理プログラムの構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
［概要］
実施形態に係る情報処理装置１０は、複雑な問題の解を見つけるための深層学習モデルを自動的に構築するコンピュータまたはコンピュータシステムである。「深層学習」とは多層構造のニューラルネットワーク（深層ニューラルネットワーク）を用いた機械学習であり、「深層学習モデル」とはその深層ニューラルネットワークの構造（以下では単に「ネットワーク構造」という）を示す表現である。「深層学習モデルを自動的に構築する」とは、情報処理装置１０が深層学習モデルの少なくとも一部の構成要素を人手を介することなく生成し、生成された構成要素を含む深層学習モデルを出力することを意味する。情報処理装置１０により生成される深層学習モデルの表現形式は限定されない。例えば、情報処理装置１０は深層学習モデルをアルゴリズムまたはプログラムコードで表現してもよいし、ネットワーク図で抽象的に表現してもよい。
【００１３】
図１は、プログラムとして表現された深層学習モデル２０１を示す。なお、図１は深層学習モデル２０１の一部のみを示す。この深層学習モデル２０１は画像から物体を認識するために用いられる。当然ながら深層学習モデル２０１はあくまでも一例であり、情報処理装置１０が構築しようとする深層学習モデルの目的も、その深層学習モデルにより実行される処理も何ら限定されない。
【００１４】
深層学習モデル２０１のうちブロック２０２で囲まれた部分は、解決しようとする問題の特性を捉えたアルゴリズムであり、深層学習の要となるネットワーク構造に相当する。この要の部分を構築する指針は特に存在せず、従来は研究者または開発者が試行錯誤でブロック２０２内のアルゴリズム（ネットワーク構造）を作成していた。本実施形態では情報処理装置１０がその要のアルゴリズムを自動的に生成する。情報処理装置１０は深層学習モデルの全体を自動的に生成するのではなく、要の部分を自動的に生成し、その要の部分を既定の部分に組み込むことで深層学習モデルを生成する。
【００１５】
本明細書では、情報処理装置１０が自動的に生成しようとする要の部分を「部分層」といい、生成しようとする深層学習モデルのうち既定の部分（部分層以外の部分）を「テンプレート」という。また、テンプレートに部分層が組み込まれることで得られる深層学習モデルを「個体」という。図１の例では、ブロック２０２が部分層に相当し、深層学習モデル２０１のうちブロック２０２以外の部分がテンプレートに相当し、ブロック２０２を含む深層学習モデル２０１の全体が個体に相当する。
【００１６】
情報処理装置１０が深層学習モデルを生成する手順は概ね次の通りである。まず、情報処理装置１０は、テンプレートに組み込むネットワーク構造の候補、すなわち部分層を複数生成する。部分層は少なくとも一つの非終端記号（ｎｏｎ−ｔｅｒｍｉｎａｌ  ｓｙｍｂｏｌ）を含む。非終端記号とは置換され得る記号であり、例えば、変数を用いて表される一つの関数または一つの式に対応する。部分層は非終端記号（例えば、関数または式）の処理順序を示す情報も含む。
【００１７】
本実施形態では、部分層を構成する非終端記号は、Ｋｅｒａｓという深層学習フレームワークが提供する以下の４種類の関数であるとする。
（１）ｍｅｒｇｅ（［ｘ，ｙ］，ｍｏｄｅ＝“ｓｕｍ”）−−＞ｘ＋ｙ
（２）Ｃｏｎｖｏｌｕｔｉｏｎ２Ｄ（３，３，３，ｂｏｒｄｅｒ＿ｍｏｄｅ＝“ｓａｍｅ”）（ｘ）−−＞ｃｏｎｖ（ｘ）
（３）ＭａｘＰｏｏｌｉｎｇ２Ｄ（）（ｘ）−−＞ｙ
（４）ＡｖｅｒａｇｅＰｏｏｌｉｎｇ２Ｄ（ｐｏｏｌ＿ｓｉｚｅ＝（２，２））（ｘ）−−＞ｙ
【００１８】
ｍｅｒｇｅ関数は、二つの信号ｘ，ｙを足し込んでその結果を出力する。Ｃｏｎｖｏｌｕｔｉｏｎ２Ｄ関数は、画像ｘを受け付けて畳み込み演算を実行し、その結果を出力する。ＭａｘＰｏｏｌｉｎｇ２Ｄ関数は、画像ｘを受け付け、領域の最大値を使ったプーリング（Ｐｏｏｌｉｎｇ）を出力する。ＡｖｅｒａｇｅＰｏｏｌｉｎｇ２Ｄ関数は、画像ｘを受け付け、領域の平均値を使ったプーリングを出力する。
【００１９】
なお、当然ながらこれらの非終端記号はあくまでも例示である。上記の通り深層学習モデルにより実行される処理は何ら限定されないから、非終端記号の種類および具体的な構成も限定されない。
【００２０】
本明細書では複数の部分層の集合を「遺伝子プール」という。図２は遺伝子プールの例を示す。この例において遺伝子プール２１０は部分層２１１，２１２，２１３，…を含む。上述したように、これらの部分層は情報処理装置１０により自動的に生成されるものである。遺伝子プール内の部分層の個数は何ら限定されず、例えば２、３、５、１０、または３０でもよい。
【００２１】
部分層はネットワーク構造であるから、ネットワーク図で表すことができる。図３〜図５はいずれも、部分層の例を示すネットワーク図であり、これらの図では、一つの非終端記号が一つのノードで表され、処理の流れが矢印で表されている。本明細書では、部分層を構成する個々の非終端記号を「層」ともいう。図２では個々の層は１行のコードで表され、図３〜図５では個々の層はノードで表されている。図３〜図５において、一本の矢印は、始点に相当する関数（層）の出力が、終点に相当する関数（層）の入力として用いられることを示す。図３〜図５に示す個体２２１〜２２３のテンプレートは共通である。図３に示す部分層２２１ａはＲｅｓＮｅｔ（Ｒｅｓｉｄｕａｌ  Ｎｅｔｗｏｒｋ）タイプであり、図４に示す部分層２２２ａは分岐タイプであり、図５に示す部分層２２３ａはストレートタイプである。これらの部分層も情報処理装置１０により自動的に生成されるものである。部分層２２１ａ，２２２ａ，２２３ａは共通の一つの遺伝子プールに含まれる。なお、これらの部分層２２１ａ，２２２ａ，２２３ａは、図２に示す部分層２１１〜２１３とは別のものである。
【００２２】
情報処理装置１０は遺伝子プール内の各部分層（例えば、部分層２１１〜２１３、または部分層２２１ａ，２２２ａ，２２３ａ）について学習および評価の処理を実行する。ある一つの部分層について、情報処理装置１０は該部分層をテンプレートに組み込むことで個体を生成する。続いて、情報処理装置１０はその個体に訓練データを入力することでその個体（深層学習モデル）を学習させ、さらに、訓練データまたはテストデータの少なくとも一方をその個体に入力してその個体を評価（検証）する。
【００２３】
続いて、情報処理装置１０は遺伝的プログラミングを用いて、遺伝子プールを構成する複数の部分層の少なくとも一部から新たな部分層を生成する。遺伝的プログラミングとは、解の候補である複数の個体を用意し、その中の少なくとも一部の個体に対して交叉、突然変異、淘汰などの遺伝的操作を実行する処理を繰り返しながら解（最良の個体）を探索する手法である。情報処理装置１０は遺伝子プール内の少なくとも一部の部分層（現世代の部分層）を交叉または突然変異させることで、新たな部分層（次世代の部分層）を得る。現世代の部分層は親に相当し次世代の部分層は子に相当する。
【００２４】
続いて、情報処理装置１０はこれら２世代の部分層のそれぞれについて上記と同様に学習および評価（検証）を実行する。すなわち、情報処理装置１０は、部分層をテンプレートに組み込むことで個体を生成し、その個体に訓練データを入力することでその個体を学習させ、訓練データまたはテストデータの少なくとも一方を用いてその個体を評価（検証）する。そして、情報処理装置１０は遺伝子プールに残す複数の部分層を決定し、いくつかの部分層を破棄する。このように遺伝子プールに残す部分層を選ぶ処理が淘汰に相当する。本実施形態では、情報処理装置１０は、次世代の部分層を作る前後で遺伝子プール内の部分層の個数が変わらないように、遺伝子プールに残す複数の部分層を決定する。
【００２５】
一実施形態では、情報処理装置１０はこのような一連の処理を複数回繰り返す。これは、遺伝的プログラミングを用いて新たな部分層を作りながらそれぞれの個体を評価して、最も評価値が高い個体を探索していくことを意味する。言い換えると、情報処理装置１０は遺伝子プールを深化させながら最良の部分層を探索する。この繰り返し処理において遺伝子プール内の部分層の個数を変えないようにすることで、部分層の多様性を維持しつつ遺伝子プール内の部分層の評価を全体として上げていくことができる。
【００２６】
情報処理装置１０は所定の条件を満たしたときにその繰り返しを終了し、最終的に最も評価値が高い一つの部分層を取得する。当然ながら、「最も評価値が高い部分層」とは、最も評価値が高い個体に組み込まれていた部分層のことである。情報処理装置１０はその最良の部分層をテンプレートに組み込むことで個体を生成し、その個体を最良の深層学習モデルとして出力する。生成されたこの深層学習モデルを用いることで、複雑な問題に対して精度の高い解を得ることが期待できる。情報処理装置１０の特徴の一つは、このように遺伝的プログラミングを用いて最良の深層学習モデルを求める点にある。
【００２７】
図６は遺伝的プログラミングによる遺伝子プールの進化の例を模式的に示す。例えば、情報処理装置１０は１ループ目の処理において、５個の部分層２３１〜２３５を含む遺伝子プール２３０を生成する。この遺伝子プール２３０は第１世代（Ｇ１）であり、部分層２３１〜２３５は現世代の部分層である。
【００２８】
続いて、情報処理装置１０は部分層２３１〜２３５の少なくとも一部に対して遺伝的操作（交叉または突然変異）を実行することで次世代の部分層２３６，２３７を生成する。そして、情報処理装置１０は所定のルールに従って７個の部分層２３１〜２３７から５個の部分層を選択し、選択された部分層を遺伝子プール２３０内に残す。この淘汰により得られる遺伝子プール２３０は第２世代（Ｇ２）であり、図６では部分層２３１〜２３３，２３６，２３７を含む。
【００２９】
続いて、情報処理装置１０は第２世代の部分層の少なくとも一部に対して遺伝的操作を実行することで次世代の部分層２３８，２３９を生成する。そして、情報処理装置１０は所定のルールに従って７個の部分層２３１〜２３３，２３６〜２３９から５個の部分層を選択し、選択された部分層を遺伝子プール２３０内に残す。この遺伝子プール２３０は第３世代（Ｇ３）であり、図６では部分層２３１，２３３，２３６，２３７，２３９を含む。
【００３０】
次のループでは、情報処理装置１０は第３世代の部分層から次世代の部分層２４０，２４１を生成し、最終的に、部分層２３３，２３６，２３７，２４０，２４１を含む第４世代（Ｇ４）の遺伝子プール２３０を生成する。情報処理装置１０はこのようなループ処理をさらに繰り返して実行してもよい。情報処理装置１０はこのように遺伝子プールを進化させた後に所定のタイミングでループ処理を終了し、その時点で最も評価値が高い部分層が組み込まれた個体を最良の深層学習モデルとして出力する。
【００３１】
［装置の構成］
図７は情報処理装置１０の一般的なハードウェア構成を示す。情報処理装置１０は、オペレーティングシステムやアプリケーション・プログラムなどを実行するプロセッサ１０１と、ＲＯＭおよびＲＡＭで構成される主記憶部１０２と、ハードディスクやフラッシュメモリなどで構成される補助記憶部１０３と、ネットワークカードまたは無線通信モジュールで構成される通信制御部１０４と、キーボードやマウスなどの入力装置１０５と、モニタなどの出力装置１０６とを備える。プロセッサ１０１の例としてＣＰＵおよびＧＰＵが挙げられるが、大量の積和演算を行う必要がある深層学習では一般に、並列計算を得意とするＧＰＵが用いられる。
【００３２】
情報処理装置１０の各機能要素は、プロセッサ１０１または主記憶部１０２の上に所定のソフトウェア（例えば、後述する情報処理プログラムＰ１）を読み込ませてそのソフトウェアを実行させることで実現される。プロセッサ１０１はそのソフトウェアに従って、通信制御部１０４、入力装置１０５、または出力装置１０６を動作させ、主記憶部１０２または補助記憶部１０３におけるデータの読み出しおよび書き込みを行う。処理に必要なデータまたはデータベースは主記憶部１０２または補助記憶部１０３内に格納される。
【００３３】
情報処理装置１０は１台のコンピュータで構成されてもよいし、複数台のコンピュータで構成されてもよい。複数台のコンピュータを用いる場合には、これらのコンピュータがインターネットやイントラネットなどの通信ネットワークを介して接続されることで、論理的に一つの情報処理装置１０が構築される。
【００３４】
情報処理装置１０はインターネットやイントラネットなどの通信ネットワークを介してデータベース２０にアクセスすることができる。本実施形態ではデータベース２０は情報処理装置１０とは別の装置であるとするが、データベース２０が設けられる位置は限定されず、例えば情報処理装置１０がデータベース２０を備えてもよい。
【００３５】
データベース２０は、プロセッサまたは外部のコンピュータからの任意のデータ操作（例えば、抽出、追加、削除、上書きなど）に対応できるようにデータ集合を記憶する機能要素または装置である。本実施形態では、データベース２０は深層学習モデルの学習および評価（検証）に用いられるデータセットを記憶する。このデータセットは、入力データとその入力データから得られるべき正解データとの組合せの集合である。データセットは、情報処理装置１０に深層学習モデルを学習させるための訓練データと、深層学習モデルの精度を確かめるためのテストデータとを含む。データセットは、得ようとする深層学習モデルに応じて用意される。例えば、画像から物体を認識するための深層学習モデルを得ようとする場合には、その物体認識のベンチマークとしてよく用いられるＣｉｆａｒ−１０という画像データセットを用いてもよい。データベース２０に記憶されるデータの量は一般に膨大であるが、そのデータ数は限定されない。例えば、データベース２０は５万件の訓練データと１万件のテストデータとを含むＣｉｆａｒ−１０を記憶してもよい。
【００３６】
図８は情報処理装置１０の機能構成を示す。情報処理装置１０は機能的構成要素として取得部１１、生成部１２、および評価部１３を備える。
【００３７】
取得部１１は複数の部分層を遺伝子プールとして取得する機能要素である。取得部１１はその遺伝子プールを生成部１２に出力する。
【００３８】
初めて遺伝子プールを取得する１ループ目の処理では、取得部１１は複数の部分層を生成し、その部分層の集合を遺伝子プールとして設定する。取得部１１はランダムに１以上の非終端記号を選択してその非終端記号をランダムに組み合わせることで一つの部分層を生成する。取得部１１は、部分層の生成に必要な非終端記号を予め保持していてもよいし、情報処理装置１０内のメモリや所定の外部データベース（データベース２０でもよい）などの記憶装置からその非終端記号を読み出してもよい。
【００３９】
本実施形態では、取得部１１は、深層学習モデルの構造的な独自性が現れやすい畳み込み（本実施形態の例ではＣｏｎｖｏｌｕｔｉｏｎ２Ｄ関数）を部分層に必ず含めるものとする。もっとも、このルールは必須ではなく、畳み込みを含まない部分層の生成が許されてもよい。あるいは、取得部１１は畳み込みおよびプーリング（本実施形態の例ではＭａｘＰｏｏｌｉｎｇ２Ｄ関数またはＡｖｅｒａｇｅＰｏｏｌｉｎｇ２Ｄ関数）の双方を部分層に必ず含めてもよい。個々の部分層の初期サイズは任意に決めてよい。例えば、取得部１１は層の個数（ノード数）を３〜１２の範囲に設定した上でノード数の中央値が最大となるような分布からその初期サイズを決めてもよい。取得部１１は所定の個数の部分層をこのようにランダムに生成することで、複数の部分層を遺伝子プールとして取得する。
【００４０】
２ループ目以降の処理では、取得部１１は評価部１３により遺伝子プール内に残すと決定された複数の部分層を遺伝子プールとして取得する。この場合には、実質的にはその遺伝子プールは評価部１３から生成部１２に出力されるといえる。
【００４１】
生成部１２は、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する機能要素である。より具体的には、生成部１２はその遺伝子プールを構成する複数の部分層の少なくとも一部から新たな部分層を生成する。
【００４２】
まず、生成部１２は、深層学習モデルのテンプレートに部分層を組み込むことで個体（深層学習モデル）を生成する。取得部１１は、そのテンプレートを予め保持していてもよいし、情報処理装置１０内のメモリや所定の外部データベース（データベース２０でもよい）などの記憶装置からそのテンプレートを読み出してもよい。そして、生成部１２はデータベース２０から訓練データを読み出し、生成した個体にその訓練データを入力することでその個体を学習させる。さらに、生成部１２はデータベースから訓練データおよびテストデータの少なくとも一方を読み出し、そのデータを個体に処理させることで該個体を評価する。生成部１２はこの一連の処理を遺伝子プール内の各部分層について実行する。
【００４３】
続いて、生成部１２は遺伝子プール内の複数の部分層から、評価値が高い上位の所定数の部分層を選択する。この選択の基準として用いる評価値の種類は限定されない。例えば、生成部１２は正解率に基づいて評価値を決定してもよく、例えば正解率をそのまま評価値として用いてもよい。あるいは、生成部１２は損失（深層学習モデルの性能の低さ）に基づいて評価値を決定してもよく、例えば損失が低いほど評価値を高く設定してもよい。あるいは、生成部１２は正解率および損失の双方に基づいて評価値を設定してもよい。本実施形態では、評価値が高いほど良い個体であるとする。「評価値が高い（または低い）」ことを単に「評価が高い（または低い）」といってもよい。
【００４４】
続いて、生成部１２は遺伝的プログラミングを用いて、選択した部分層から新たな部分層を生成する。生成部１２は選択した二つの部分層を交叉することで新たな二つの部分層を生成してもよいし、選択した一つの部分層に突然変異を起こさせることで新たな一つの部分層を生成してもよい。生成される新たな部分層の個数は限定されず、例えば、その個数は、予め設定された交叉確率および突然変異確率に依存し得る。確率的に交叉および突然変異を発生させるために、生成部１２は乱数を生成し、その乱数が所定の数値範囲に含まれる場合に交叉または突然変異を実行してもよい。少なくとも一つの新たな部分層を生成すると、生成部１２はその部分層（次世代の部分層）を遺伝子プールに追加し、その遺伝子プールを評価部１３に出力する。
【００４５】
遺伝的プログラミングのフレームワークは限定されない。一例として、生成部１２はＤＥＥＰというフレームワークを用いてもよい。遺伝的プログラミングに関するパラメータは世代数、個体数、交叉確率、および突然変異確率を含み、例えば、世代数、個体数、交叉確率、および突然変異確率がそれぞれ１５、２０、０．９、および０．１と設定されてもよい。
【００４６】
部分層を構成する複数の層（ノード）間に処理順序の制約がある場合には、生成部１２はその制約に違反しないように交叉および突然変異を発生させることで新たな部分層を生成してもよい。なお、処理順序の制約の例として、条件分岐（ｉｆ−ｔｈｅｎ−ｅｌｓｅ）が挙げられるが、制約はこれに限定されない。制約に違反しないように遺伝的操作を実行することで、制約に違反しているために演算の精度が低いと予想される部分層を事前に排除することができ、これは情報処理装置１０による不必要な処理の回避につながる。あるいは、生成部１２はその制約に縛られることなく交叉または突然変異を発生させて新たな部分層を生成してもよい。制約を無視した部分層は淘汰される確率が高いので、制約を考慮しなくても自然にその部分層が破棄される確率が高いからである。
【００４７】
生成部１２は突然変異確率を動的に変更しながら新たな部分層を生成してもよい。例えば、生成部１２は評価値が所定の閾値よりも高い部分層の突然変異確率を他の部分層よりも下げた上で、遺伝的操作により新たな部分層を生成してもよい。あるいは、生成部１２は評価値が所定の閾値よりも低い部分層の突然変異確率を他の部分層よりも上げた上で、遺伝的操作により新たな部分層を生成してもよい。評価値が相対的に低い部分層の突然変異確率を他の部分層よりも上げて、評価値が高い部分層へ変異させる確率を上げることで、ひいては、最終的に選ばれる最良の部分層の性能をより高くすることが期待できる。
【００４８】
評価部１３は、新たな部分層が追加された遺伝子プール内の各部分層をテンプレートに組み込んで各部分層を評価し、その遺伝子プール内に残す複数の部分層を決定する機能要素である。評価部１３はテンプレートに部分層を組み込むことで個体を生成し、データベース２０から読み出した訓練データおよびテストデータの少なくとも一方をその個体に入力して該個体を評価する。評価部１３はこの一連の処理を遺伝子プール内の各部分層について実行する。
【００４９】
評価部１３は、処理時間を短縮するために、それぞれの部分層の優劣がわかる程度で学習を終了して、その時点までにおける最大の評価値を該部分層の評価値として設定してもよい。
【００５０】
具体的には、評価部１３はプロセッサ（例えばＧＰＵ）が一度に処理できる訓練データの集合をミニバッチ（ｍｉｎｉ  ｂａｔｃｈ）としてデータベース２０から読み出し、このミニバッチを用いて個体の学習を実行する。評価部１３は新たなミニバッチ（新たな訓練データの集合）をデータベース２０から読み出しながらその個体を学習させる。ミニバッチによる学習を繰り返してすべての訓練データを使い切ったときの回数に対応する単位を「エポック」という。評価部１３は各エポックの最後で、訓練データまたはテストデータを用いて個体を評価する。
【００５１】
一般に個体の評価値は、このエポックの値が増えていく度に上がっていくが、どこかの時点でその評価値が前回よりも下がるか、または評価値が前回からさほど上がらなくなる。すなわち、ある一つの個体（部分層）について、ｉ番目のエポックでの評価値が、（ｉ−１）番目のエポックでの評価値よりも下がるか、またはｉ番目のエポックでの評価値と（ｉ−１）番目のエポックでの評価値との差が僅かになる。評価部１３はこの時点でその個体（部分層）の学習および評価を終了してもよい。例えば、評価部１３は、ある部分層についての評価値が前回の評価値よりも下がったか、または前回の評価値からの上昇の度合いが所定の閾値未満になった場合に、その部分層についての学習および評価を終了してもよい。「前回の評価値」とは、一つ前のエポックでの評価値のことである。
【００５２】
図９は、ある一つの部分層（一つの個体）に対して学習および評価を１０エポック繰り返して得られた学習曲線（評価値の推移）の例を示す。グラフの横軸はエポックを示し、縦軸は正解率または損失を示す。破線３０１は、学習に使ったデータを再度用いた演算により得られた学習正解率（ａｃｃ）を示し、実線３０２は、学習に使わなかったデータを用いた演算により得られたテスト正解率（ｖａｌ＿ａｃｃ）を示す。破線３０３は、学習に使ったデータを再度用いた演算により得られた学習損失（ｌｏｓｓ）を示し、実線３０４は、学習に使わなかったデータを用いた演算により得られたテスト損失（ｖａｌ＿ｌｏｓｓ）を示す。当然ながら学習を繰り返すほど個体の成績は上がっていくが、その成績はいずれ収束する。一般に、学習正解率または学習損失に基づく評価値は、テスト正解率またはテスト損失に基づく評価値より高い。
【００５３】
実線３０２で示されるテスト正解率（ｖａｌ＿ａｃｃ）を評価値として用いる場合には、その正解率は９エポック目で下がったので、評価部１３はその時点で処理を打ち切ってもよい。この場合には、評価部１３は８エポック目での評価値を部分層（個体）の評価値として採用してもよい。別の例として、実線３０４で示されるテスト損失（ｖａｌ＿ｌｏｓｓ）を評価値として用いる場合には、その損失は８エポック目で上がったので、評価部１３はその時点で処理を打ち切ってもよい。この場合には、評価部１３は７エポック目での評価値を部分層（個体）の評価値として採用してもよい。
【００５４】
このようにエポック毎に個体を評価して、評価値が下がるかまたは評価値の上昇度合いが低くなったときに個体の学習および評価を終了することで、プロセッサ１０１の処理負荷やデータベース２０へのアクセスの回数などを低減できる。すなわち、ハードウェア資源の消費量またはネットワーク上の通信量を抑えることができる。
【００５５】
一実施形態では、情報処理装置１０は、次世代の部分層の生成と、各部分層の評価とを含む探索を所定の回数（複数回）繰り返すことで最良の部分層を得る。遺伝的プログラミングの観点から見ると、情報処理装置１０は次世代の部分層を生成しながら遺伝子プールを進化させ、これにより最良の部分層を探索する。一実施形態では、情報処理装置１０はその探索を繰り返すことなく最良の部分層を得てもよい。
【００５６】
生成部１２および評価部１３による探索の繰り返し回数は任意に決めてよい。例えば、その繰り返し回数は予め決められていてもよい。あるいは、評価部１３は次のループの探索を実行するか否かを動的に決めてもよい。例えば、評価部１３は遺伝子プール（複数の部分層）の中で最大の評価値が所定の閾値未満である場合にのみ次の探索を実行すると判定してもよい。このように、深層学習モデルの評価値が上がらない場合（より具体的には、該評価値が所定の閾値よりも低い場合）に探索の繰り返し回数を増やすことで各部分層がさらに学習されるので、良好な演算結果を導く深層学習モデルの出現が期待できる。
【００５７】
次のループの処理を実行する場合には、評価部１３は、遺伝子プール内の部分層の個数が、新たな部分層が追加される前の時点での個数になるように、遺伝子プールに残す部分層を決定する。すなわち、評価部１３は、遺伝子プール内の部分層の個数が変わらないように遺伝子プールを制御する。そして、評価部１３は選択した複数の部分層（残すと決定した部分層）を取得部１１に出力する。
【００５８】
遺伝子プール内に残す部分層を選択する方法は限定されない。例えば、評価部１３は、遺伝子プール内の複数の部分層のうち評価値が高い上位の所定数の部分層を選択するか、または評価値が低い下位の所定数の部分層を破棄してもよい。あるいは、評価部１３は1回目からｉ回目（１＜ｉ＜ｎ）のループ処理では部分層をランダムに選択し、（ｉ＋１）回目以降のループ処理では上記のように評価値に基づいて上位の所定の部分層を選択するかまたは下位の所定数の部分層を破棄してもよい。繰り返し処理の早い段階では部分層をランダムに選ぶことで、部分層の多様性を確保することができる。
【００５９】
最後のループの処理では（すなわち、次のループ処理を実行しない場合には）、評価部１３は、遺伝子プールの中で最も評価値が高い部分層を選択し、その部分層をテンプレートに組み込むことで個体を生成する。そして、評価部１３はその個体を最良の深層学習モデルとして出力する。深層学習モデルの出力先は限定されない。例えば、評価部１３は最良の深層学習モデルをデータベース２０などの記憶装置に格納してもよいし、他のコンピュータにその深層学習モデルを送信してもよい。あるいは、評価部１３はその深層学習モデルをモニタ上に描画することで該モデルを可視化してもよい。
【００６０】
［装置の動作］
次に、図１０を参照しながら、情報処理装置１０の動作を説明するとともに本実施形態に係る情報処理方法について説明する。図１０は、情報処理装置１０の動作を示すフローチャートである。
【００６１】
まず、取得部１１が複数の部分層を新規に生成し、それらの部分層から成る遺伝子プールを生成する（ステップＳ１１、取得ステップ）。１回目のループ処理ではこれが遺伝子プールの取得に相当する。続いて、生成部１２が遺伝的プログラミングを用いて複数の部分層の少なくとも一部から新たな部分層を生成し、その新たな部分層を遺伝子プールに追加する（ステップＳ１２、生成ステップ）。続いて、評価部１３が遺伝子プール内の各部分層を評価する（ステップＳ１３、評価ステップ）。上記の通り、評価部１３は正解率および損失の少なくとも一方に基づいて各部分層を評価してもよい。さらに、評価部１３は探索を終了するか否かを判定する（ステップＳ１４）。
【００６２】
探索を続けると判定した場合には（ステップＳ１４においてＮＯ）、評価部１３は遺伝子プール内に残す複数の部分層を決定する（ステップＳ１５、評価ステップ）。上記の通り、評価部１３はその部分層をランダムに選んでもよいし、評価値に基づいて選んでもよい。この結果、その複数の部分層が新たな遺伝子プールとして得られ（ステップＳ１６、取得ステップ）、その後にステップＳ１２〜Ｓ１４の処理が繰り返される。
【００６３】
一方、探索を終了させると判定した場合には（ステップＳ１４においてＹＥＳ）、評価部１３は最も評価値が高い部分層が組み込まれた個体を生成し、その個体を最良の深層学習モデルとして出力する（ステップＳ１７、出力ステップ）。この結果、最も適切である（最も精度の高い解を得る）と期待できる深層学習モデルが得られる。
【００６４】
［プログラム］
次に、図１１を参照しながら、コンピュータを情報処理装置１０として機能させるための情報処理プログラムＰ１を説明する。図１１は情報処理プログラムＰ１の構成を示す図である。
【００６５】
情報処理プログラムＰ１はメインモジュールＰ１０、取得モジュールＰ１１、生成モジュールＰ１２、および評価モジュールＰ１３を含む。メインモジュールＰ１０は、深層学習モデルの生成を統括的に管理する部分である。取得モジュールＰ１１、生成モジュールＰ１２、および評価モジュールＰ１３を実行することで、取得部１１、生成部１２、および評価部１３が実現する。
【００６６】
情報処理プログラムＰ１は、例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。あるいは、情報処理プログラムＰ１は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【００６７】
［効果］
以上説明したように、本発明の一側面に係る情報処理装置は、プロセッサを備える情報処理装置であって、プロセッサが、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとを実行する。
【００６８】
本発明の一側面に係る情報処理方法は、プロセッサを備える情報処理装置により実行される情報処理方法であって、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとを含む。
【００６９】
本発明の一側面に係る情報処理プログラムは、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとをコンピュータに実行させる。
【００７０】
このような側面においては、深層学習モデルの構成要素の候補である複数の部分層（現世代の部分層）と、遺伝的プログラミングを用いて生成された新たな部分層（次世代の部分層）とを含む遺伝子プールが用意される。そして、これらの世代にわたる部分層のそれぞれを評価し、遺伝子プールに残す部分層を決めることで、遺伝子プールが更新される。遺伝的プログラミングを用いるこの一連の処理（探索）を実行することで、良好な計算結果を導く部分層の出現が期待できる。そして、その部分層を深層学習モデルに組み込むことで、最も適切であると期待できる深層学習モデルを構築することが可能になる。
【００７１】
さらに、このような側面では、深層学習モデルの全体ではなくその重要な部分である部分層に焦点を絞って、遺伝的プログラミングを用いてその部分層を進化させる。そのため、深層学習モデルの全体を自動的に構築する場合と比較して計算時間が短縮され、プロセッサおよびメモリの消費量も抑えられる。すなわち、本発明の上記側面は、単に深層学習モデルを自動的に構築するのではなく、コンピュータのハードウェア資源の消費量を抑えながら適切な深層学習モデルを構築するという技術的効果を奏する。
【００７２】
加えて、このような側面では、各部分層が訓練データを処理することで進化していくので、最終的に得られる最良の深層学習モデルは、処理しようとするデータとの相性が良いものになる。すなわち、解を得たい問題の領域に最適な深層学習モデルを人手に頼ることなく自動的に生成することができる。
【００７３】
他の側面に係る情報処理装置では、プロセッサが、生成ステップおよび評価ステップを繰り返した後に出力ステップを実行してもよい。遺伝的アルゴリズムを用いる一連の処理（探索）を繰り返すことで、良好な計算結果を導く部分層の出現が期待できる。そして、その部分層を深層学習モデルに組み込むことで、最も適切であると期待できる深層学習モデルを構築することが可能になる。
【００７４】
他の側面に係る情報処理装置では、プロセッサが探索をｎ回繰り返し、ここでｎは１より大きい自然数であり、ｉ回目までの評価ステップでは、プロセッサが、遺伝子プール内に残す複数の部分層をランダムに決定し、（ｉ＋１）回目以降の評価ステップでは、プロセッサが、遺伝子プール内に残す複数の部分層を評価値に基づいて決定し、ここでｉはｎより小さい自然数であってもよい。繰り返し処理の早い段階では部分層をランダムに選ぶことで、部分層の多様性を確保することができる。その上で、繰り返し処理の後の段階で部分層を評価値に基づいて選ぶことで、高い評価を持つ深層学習モデルを最終的に得ることができる。
【００７５】
他の側面に係る情報処理装置では、各部分層が畳み込みを含んでもよい。深層学習モデルの構造的な独自性が現れやすい畳み込みを部分層に必ず含めることで、良好な計算結果を導く部分層を得られる蓋然性をさらに高めることができる。
【００７６】
他の側面に係る情報処理装置では、各部分層の評価が、該部分層が組み込まれた深層学習モデルを１エポック毎に評価し、評価値が前回のエポックよりも下がったときに該深層学習モデルの学習を終了することを含んでもよい。このように部分層の優劣がわかる程度で学習を打ち切ることで、部分層を評価する時間が短縮されるので、プロセッサの処理負荷およびメモリ消費量をさらに低減することができる。
【００７７】
他の側面に係る情報処理装置では、評価ステップでは、プロセッサが、遺伝子プール内の部分層の個数が変わらないように、遺伝子プール内に残す複数の部分層を決定してもよい。繰り返し処理において遺伝子プール内の部分層の個数を変えないようにすることで、部分層の多様性を維持しつつ遺伝子プール内の部分層の評価を全体として上げていくことができる。
【００７８】
他の側面に係る情報処理装置では、遺伝的プログラミングが、部分層の評価値が低いほど、該部分層に適用する変異確率を上げることで新たな部分層を生成してもよい。このように変異確率を設定することで、評価の低い部分層が評価の高いものに変わる確率が上がって、良好な演算結果を導く部分層（深層学習モデル）の出現が期待できる。加えて、適切な深層学習モデルを短時間で得ることが可能になる。
【００７９】
他の側面に係る情報処理装置では、深層学習モデルの評価値が上がらない場合に、プロセッサが、生成ステップおよび評価ステップを含む探索の繰り返し回数を増やしてもよい。探索の回数を増やすことで各部分層がさらに学習されるので、良好な演算結果を導く深層学習モデルの出現が期待できる。
【００８０】
［変形例］
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【００８１】
遺伝子プール（複数の部分層）の中で最大の評価値が前回の最大の評価値よりも下がったか、または前回の最大の評価値からの上昇の度合いが所定の閾値未満になった場合には、評価部１３は遺伝子プール内の部分層の個数を増やしてもよいし、交叉確率を上げてもよいし、または突然変異確率をあげてもよい。ここで、「前回の最大の評価値」とは、一つ前のループ処理における、遺伝子プール内での最大の評価値のことである。このように、深層学習モデルの評価値が上がらない場合に個体数を増やすかまたは遺伝的操作の確率を上げることで、良好な演算結果を導く部分層（深層学習モデル）の出現が期待できる。加えて、適切な深層学習モデルを短時間で得ることが可能になる。
【００８２】
すなわち、他の側面に係る情報処理装置では、深層学習モデルの評価値が上がらない場合に、プロセッサが遺伝子プール内の部分層の個数を増やすか、遺伝的プログラミングにおける交叉確率を上げるか、または遺伝的プログラミングにおける突然変異確率を上げてもよい。
【００８３】
少なくとも一つのプロセッサにより実行される情報処理方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ（処理）の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。例えば、情報処理装置は、上記のステップＳ１１，Ｓ１２，Ｓ１３，Ｓ１７のみから成る情報処理方法を実行してもよい（すなわち、探索の繰り返しは必須ではない）。また、上述したステップのうちの任意の２以上のステップが組み合わされてもよいし、ステップの一部が修正又は削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【００８４】
情報処理装置内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。このような基準の選択は、二つの数値の大小関係を比較する処理についての技術的意義を変更するものではない。
【符号の説明】
【００８５】
１０…情報処理装置、２０…データベース、１１…取得部、１２…生成部、１３…評価部、Ｐ１…情報処理プログラム、Ｐ１０…メインモジュール、Ｐ１１…取得モジュール、Ｐ１２…生成モジュール、Ｐ１３…評価モジュール。
【要約】
一実施形態に係る情報処理装置はプロセッサを備える。プロセッサは、深層学習モデルの構成要素の候補である複数の部分層を遺伝子プールとして取得する取得ステップと、遺伝的プログラミングを用いて遺伝子プールから新たな部分層を生成する生成ステップと、新たな部分層が追加された遺伝子プール内の各部分層を深層学習モデルのテンプレートに組み込んで各部分層を評価し、遺伝子プール内に残す複数の部分層を決定する評価ステップと、最も評価値が高い部分層が組み込まれた深層学習モデルを出力する出力ステップとを実行する。【図１】
0006325762.tif 000002
【図２】
0006325762.tif 000003
【図３】
0006325762.tif 000004
【図４】
0006325762.tif 000005
【図５】
0006325762.tif 000006
【図６】
0006325762.tif 000007
【図７】
0006325762.tif 000008
【図８】
0006325762.tif 000009
【図９】
0006325762.tif 000010
【図１０】
0006325762.tif 000011
【図１１】
0006325762.tif 000012