(57)【要約】【課題】ニューラルネットワークの開発効率をより向上させることが可能となる。【解決手段】プロセッサが、レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供することと、前記ニューラルネットワークに係る統計情報を提示することと、を含み、前記フォームを提供することは、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供することと、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供することと、をさらに含む、情報処理方法が提供される。【選択図】図５
2019187542.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサが、レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供することと、
前記ニューラルネットワークに係る統計情報を提示することと、
を含み、
前記フォームを提供することは、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供することと、
定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供することと、
をさらに含む、
情報処理方法。
【請求項２】
前記フォームを提供することは、前記ユニットを複数利用および再利用可能に提供すること、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項３】
前記フォームを提供することは、前記ユニットを構成する複数の前記コンポーネントに共通して利用可能な引数を定義する機能を提供することと、
定義された前記引数を前記ユニットのプロパティの一部として設定可能なように制御することと、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項４】
前記引数を定義する機能を提供することは、前記フォーム上に配置される、前記引数に対応する引数コンポーネントと、前記引数コンポーネントに設定されるプロパティとに基づいて、前記引数を制御すること、
をさらに含む、
請求項３に記載の情報処理方法。
【請求項５】
前記フォームを提供することは、前記フォームにおいて、前記ユニットを、前記ユニットを構成する前記コンポーネントの種別および数に依らない所定の視覚表現を用いて表示すること、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項６】
前記フォームを提供することは、前記ユニットを構成する複数の前記コンポーネントの処理により変更されるパラメータを、前記ユニットに対応する前記視覚表現と関連付けて表示すること、
をさらに含む、
請求項５に記載の情報処理方法。
【請求項７】
前記統計情報を提示することは、前記ユニットを構成する前記コンポーネントを含む前記ニューラルネットワーク全体の前記統計情報を提示すること、
をさらに含み、
前記統計情報は、出力ニューロンサイズ、使用メモリ量、または演算量のうち、少なくとも１つを含む、
請求項１に記載の情報処理方法。
【請求項８】
前記統計情報を提示することは、前記ユニットごとに前記統計情報を提示すること、
をさらに含む、
請求項７に記載の情報処理方法。
【請求項９】
前記統計情報を提示することは、前記ニューラルネットワーク全体の前記統計情報と前記ユニットの前記統計情報とを比較して提示すること、
をさらに含む、
請求項７に記載の情報処理方法。
【請求項１０】
前記統計情報に含まれる要素を選択するユーザの操作を受け付け、選択された前記要素の値を、前記コンポーネントおよび前記ユニットごとに比較して提示すること、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項１１】
前記コンポーネントまたは前記ユニットごとの前記要素の値と、当該要素の値の大きさを示すインジケータと、を前記フォーム上に配置された前記コンポーネントまたは前記ユニットに関連付けて提示する、
請求項１０に記載の情報処理方法。
【請求項１２】
前記フォームを提供することは、前記ユニットの定義に関し、前記ユニットが１つ以上の前記ユニットを含んで構成されることを許容すること、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項１３】
前記コンポーネントと前記ユニットの配置および設定されるプロパティとに基づいて、前記ニューラルネットワークに係るソースコードを出力すること、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項１４】
前記ソースコードを出力することは、前記ユニットの構成を維持した前記ソースコードを生成すること、
をさらに含む、
請求項１３に記載の情報処理方法。
【請求項１５】
評価済のニューラルネットワークから、ネットワーク構造の異なる別のニューラルネットワークを生成することと、
生成されたニューラルネットワークの評価結果を取得することと、
生成されたニューラルネットワークの評価結果に基づいて、評価済のニューラルネットワークに係るパレート最適解を更新することと、
をさらに含み、
前記生成することは、前記パレート最適解に係るニューラルネットワークから、ネットワーク構造の異なる前記別のニューラルネットワークを生成することと、
をさらに含む、
請求項１に記載の情報処理方法。
【請求項１６】
前記生成することは、前記ユニットに設定される構造探索可否に基づいて、前記ユニットのネットワーク構造を変化させるか否かを決定すること、
をさらに含む、
請求項１５に記載の情報処理方法。
【請求項１７】
前記生成することは、前記ユニットに用いられる引数に設定される構造探索可否に基づいて、前記引数の値を変化させるか否かを決定すること、
をさらに含む、
請求項１５に記載の情報処理方法。
【請求項１８】
レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、前記フォームにおいて、前記ニューラルネットワークに係る統計情報を提示するフォーム制御部、
を備え、
前記フォーム制御部は、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供し、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供する、
情報処理装置。
【請求項１９】
コンピュータを、
レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、前記フォームにおいて、前記ニューラルネットワークに係る統計情報を提示するフォーム制御部、
を備え、
前記フォーム制御部は、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供し、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供する、
情報処理装置、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理方法、情報処理装置、およびプログラムに関する。
【背景技術】
【０００２】
近年、ニューラルネットワークを利用した種々の機能が開発されている。また、ニューラルネットワークの開発効率を向上させるための種々の手法が提案されている。例えば、特許文献１には、レイヤーに対応するコンポーネントの配置などに基づいてニューラルネットワークを生成するビジュアルプログラミングに係る技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１７／１３８２２０号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１に記載の技術では、フォーム上に配置可能なコンポーネントが単一のレイヤーと一意的に対応している。このため、特許文献１に記載の技術では、複数のレイヤーから成る所定のレイヤー構成が複数回繰り返される場合であっても、当該レイヤー構成を、各レイヤーに対応するコンポーネントを用いて都度構成することが求められる。【０００５】
そこで、本開示では、ニューラルネットワークの開発効率をより向上させることが可能な、新規かつ改良された情報処理方法、情報処理装置、およびプログラムを提案する。
【課題を解決するための手段】
【０００６】
本開示によれば、プロセッサが、レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供することと、前記ニューラルネットワークに係る統計情報を提示することと、を含み、前記フォームを提供することは、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供することと、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供することと、をさらに含む、情報処理方法が提供される。【０００７】
また、本開示によれば、レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、前記フォームにおいて、前記ニューラルネットワークに係る統計情報を提示するフォーム制御部、を備え、前記フォーム制御部は、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供し、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供する、情報処理装置が提供される。【０００８】
また、本開示によれば、コンピュータを、レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、前記フォームにおいて、前記ニューラルネットワークに係る統計情報を提示するフォーム制御部、を備え、前記フォーム制御部は、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供し、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供する、情報処理装置、として機能させるためのプログラムが提供される。
【発明の効果】
【０００９】
以上説明したように本開示によれば、ニューラルネットワークの開発効率をより向上させることが可能となる。【００１０】
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１１】
【図１】本開示の一実施形態に係る情報処理システムの構成例を示すブロック図である。
【図２】同実施形態に係る情報処理端末の機能構成例を示すブロック図である。
【図３】同実施形態に係る情報処理サーバの機能構成例を示すブロック図である。
【図４】同実施形態に係るフォームの表示例を示す図である。
【図５】同実施形態に係るユニットの定義について説明するための図である。
【図６】同実施形態に係るユニットの引数設定について説明するための図である。
【図７】同実施形態に係るユニットの配置と引数の設定について説明するための図である。
【図８】同実施形態に係る１つ以上のユニットを含むユニット定義について説明するための図である。
【図９】同実施形態に係るユニットを利用した学習用ネットワークおよび評価用ネットワークについて説明するための図である。
【図１０】同実施形態に係るユニット内で変更されるパラメータの反映の流れを示すフローチャートである。
【図１１】同実施形態に係るニューラルネットワーク全体に係る統計情報の表示例を示す図である。
【図１２】同実施形態に係るユニットごとの統計情報の表示例を示す図である。
【図１３】同実施形態に係る統計情報算出の流れを示すフローチャートである。
【図１４】同実施形態に係る生成部が出力するソースコードの一例である。
【図１５】同実施形態に係る生成部によるソースコード出力の流れを示すフローチャートである。
【図１６】同実施形態に係る生成部による自動構造探索について説明するための図である。
【図１７】同実施形態に係る引数コンポーネントの構造探索可否設定について説明するための図である。
【図１８】同実施形態に係るユニットの構造探索可否設定について説明するための図である。
【図１９】同実施形態に係る生成部による自動構造探索の流れを示すフローチャートである。
【図２０】本開示の一実施形態に係る情報処理サーバのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１３】
なお、説明は以下の順序で行うものとする。
１．実施形態
１．１．概要
１．２．システム構成例
１．３．情報処理端末１０の機能構成
１．４．情報処理サーバ２０の機能構成
１．５．フォーム制御の詳細
１．６．ソースコードの出力
１．７．ネットワーク構造の自動探索
２．ハードウェア構成例
３．まとめ
【００１４】
＜１．実施形態＞
＜＜１．１．概要＞＞
まず、本開示の一実施形態の概要について説明する。上述したように、近年では、ニューラルネットワークの開発効率を向上させるための種々の手法が提案されている。上記のような手法には、例えば、特許文献１に開示されるようなビジュアルプログラミング手法が含まれる。
【００１５】
ここで、ビジュアルプログラミングとは、ソフトウェア開発において、プログラムコードをテキストで記述することなく、視覚的なオブジェクトを用いて作成する手法を指す。ビジュアルプログラミングでは、例えば、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）上で、オブジェクトを操作することで、プログラムを作成することができる。
【００１６】
例えば、特許文献１に記載の技術の場合、ユーザは、ニューラルネットワークを構成するレイヤーに対応するコンポーネントをフォーム上に配置し、各レイヤー間の接続や各種のプロパティを設定することで、プログラムコードを記載することなく、ニューラルネットワークを開発することができる。
【００１７】
特許文献１に記載の技術によれば、プログラミングスキルが十分ではないユーザであっても、容易にニューラルネットワークを作成することなどができ、ニューラルネットワークの開発効率を大幅に向上させることが可能である。
【００１８】
しかし、上述したように、特許文献１に記載の技術では、フォーム上に配置可能なコンポーネントが単一のレイヤーと一意的に対応しているため、所定のレイヤー構成が複数回繰り返される場合、当該レイヤー構成を都度配置することが求められる。
【００１９】
例えば、「Ｃｏｎｖｏｌｕｔｉｏｎ」、「ＭａｘＰｏｏｌｉｎｇ」、「Ｔａｎｈ」の順に接続されるレイヤー構成がネットワーク中に複数回存在する場合、特許文献１に記載の技術では、上記の各レイヤーに対応するコンポーネントを都度配置し、プロパティなどを設定する必要がある。
【００２０】
しかし、一般に、ニューラルネットワークにおいては、上記のような所定のレイヤー構成を繰り返し用いることが多く、また、繰り返し使用されるレイヤー構成には、数十以上のレイヤーを含むものも少なくない。このため、繰り返し使用されるレイヤー構成を、都度、単一レイヤーに対応するコンポーネントを用いて記述することは、ニューラルネットワークの開発効率を低下させる原因とも成りかねない。
【００２１】
本開示の一実施形態に係る技術思想は上記の点に着目して発想されたものであり、ニューラルネットワークのビジュアルプログラミングにおいて開発効率をより向上させることを可能とする。このために、本開示の一実施形態に係る情報処理方法は、プロセッサが、レイヤーに対応するコンポーネントの配置と、コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供することと、ニューラルネットワークに係る統計情報を提示することと、を含むこと、を特徴の一つとする。また、上記フォームを提供することは、フォームにおいて、複数のコンポーネントから構成されるユニットを定義する機能を提供することと、定義されたユニットを、コンポーネントと同様に配置可能に提供することと、をさらに含むこと、を特徴の一つとする。
【００２２】
すなわち、本開示の一実施形態に係る情報処理方法によれば、ニューラルネットワークのビジュアルプログラミングにおいて、複数のレイヤーから構成される所定のレイヤー構成を、対応する複数のコンポーネントから構成されるユニットとして定義することが可能となる。また、本開示の一実施形態に係る情報処理方法によれば、上記のユニットをコンポーネントと同様に配置可能にすることで、ユーザが所定のレイヤー構成を都度コンポーネントを用いて構成することなく、容易に利用することが可能となる。
【００２３】
以上、本開示の一実施形態の概要について説明した。上述したように、本開示の一実施形態に係る情報処理方法によれば、複数のレイヤーに相当するユニットを定義し、当該ユニットを用いたビジュアルプログラミングを実現することで、ニューラルネットワークの開発効率を大幅に向上させることが可能となる。
【００２４】
＜＜１．２．システム構成例＞＞
次に、本開示の一実施形態に係る情報処理システムの構成例について説明する。図１は、本実施形態に係る情報処理システムの構成例を示すブロック図である。図１を参照すると、本実施形態に係る情報処理システムは、情報処理端末１０および情報処理サーバ２０を備える。また、情報処理端末１０と情報処理サーバ２０は、互いに通信が行えるように、ネットワーク３０を介して接続される。
【００２５】
（情報処理端末１０）
本実施形態に係る情報処理端末１０は、ニューラルネットワークのビジュアルプログラミングを行うためのクライアント端末である。本実施形態に係る情報処理端末１０は、情報処理サーバ２０による制御に基づいて、ビジュアルプログラミングを行うためのフォームを表示し、当該フォームに対するユーザの入力操作に係る情報を情報処理サーバ２０へ送信する。本実施形態に係る情報処理端末１０は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などであってよい。なお、後述するように、本実施形態に係る情報処理端末１０は、情報処理サーバ２０と同等の機能を有する情報処理装置として機能してもよい。
【００２６】
（情報処理サーバ２０）
本実施形態に係る情報処理サーバ２０は、本実施形態に係る情報処理方法を実現する情報処理装置である。本実施形態に係る情報処理サーバ２０は、ニューラルネットワークのビジュアルプログラミングに係るフォームを制御し、当該フォームにけるコンポーネントやユニットの配置などに基づいて、ニューラルネットワークを生成する機能を有する。
【００２７】
（ネットワーク３０）
ネットワーク３０は、情報処理端末１０と情報処理サーバ２０とを接続する機能を有する。ネットワーク３０は、インターネット、電話回線網、衛星通信網などの公衆回線網や、Ｅｔｈｅｒｎｅｔ（登録商標）を含む各種のＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などを含んでもよい。また、ネットワーク３０は、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの専用回線網を含んでもよい。また、ネットワーク３０は、Ｗｉ−Ｆｉ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）など無線通信網を含んでもよい。
【００２８】
以上、本開示の一実施形態に係る情報処理システムの構成例について説明した。なお、図１を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理システムの構成は係る例に限定されない。本実施形態に係る情報処理システムの構成は、仕様や運用に応じて柔軟に変形可能である。
【００２９】
＜＜１．３．情報処理端末１０の機能構成＞＞
次に、本開示の一実施形態に係る情報処理端末１０の機能構成例について説明する。図２は、本実施形態に係る情報処理端末１０の機能構成例を示すブロック図である。図２を参照すると、本実施形態に係る情報処理端末１０は、表示部１１０、入力部１２０、制御部１３０、およびサーバ通信部１４０を備える。
【００３０】
（表示部１１０）
本実施形態に係る表示部１１０は、画像やテキストなどの視覚情報を出力する機能を有する。本実施形態に係る表示部１１０は、例えば、情報処理サーバ２０による制御に基づいて、ニューラルネットワークのビジュアルプログラミングに係るフォームを表示する。
【００３１】
このために、本実施形態に係る表示部１１０は、視覚情報を提示する表示デバイスなどを備える。上記の表示デバイスには、例えば、液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置、タッチパネルなどが挙げられる。また、本実施形態に係る表示部１１０は、プロジェクション機能により視覚情報を出力してもよい。
【００３２】
（入力部１２０）
本実施形態に係る入力部１２０は、ユーザによる入力操作を検出する機能を有する。本実施形態に係る入力部１２０は、例えば、フォーム上におけるコンポーネントやユニットの配置操作を検出する。このために、本実施形態に係る入力部１２０は、キーボード、タッチパネル、マウス、各種のボタンなどを備える。
【００３３】
（制御部１３０）
本実施形態に係る制御部１３０は、情報処理端末１０が備える各構成を制御する機能を有する。制御部１３０は、例えば、各構成の起動や停止を制御する。また、制御部１３０は、情報処理サーバ２０により生成される制御信号を表示部１１０に入力する。また、本実施形態に係る制御部１３０は、後述する情報処理サーバ２０のフォーム制御部２１０と同等の機能を有してもよい。
【００３４】
（サーバ通信部１４０）
本実施形態に係るサーバ通信部１４０は、ネットワーク３０を介して情報処理サーバ２０との情報通信を行う機能を有する。具体的には、サーバ通信部１４０は、情報処理サーバ２０からフォーム制御に係る制御信号を受信する。また、サーバ通信部１４０は、入力部１２０が検出したユーザの入力操作に係る情報を、情報処理サーバ２０に送信する。
【００３５】
以上、本開示の一実施形態に係る情報処理端末１０の機能構成例について説明した。なお、図２を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理端末１０の機能構成は係る例に限定されない。例えば、上述したように、本実施形態に係る制御部１３０は、情報処理サーバ２０のフォーム制御部２１０と同等の機能を有してもよい。本実施形態に係る情報処理端末１０の機能構成は、仕様や運用に応じて柔軟に変形可能である。
【００３６】
＜＜１．４．情報処理サーバ２０の機能構成＞＞
次に、本開示の一実施形態に係る情報処理サーバ２０の機能構成について説明する。図３は、本実施形態に係る情報処理サーバ２０の機能構成例を示すブロック図である。図３を参照すると、本実施形態に係る情報処理サーバ２０は、フォーム制御部２１０、生成部２２０、および端末通信部２３０を備える。
【００３７】
（フォーム制御部２１０）
本実施形態に係るフォーム制御部２１０は、ニューラルネットワークのビジュアルプログラミングを実現するフォームの制御を行う。より具体的には、本実施形態に係るフォーム制御部２１０は、レイヤーに対応するコンポーネントの配置と、当該コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、当該フォームにおいて、ニューラルネットワークに係る統計情報を提示する機能を有する。
【００３８】
また、本実施形態に係るフォーム制御部２１０は、上記のフォームにおいて、複数のコンポーネントから構成されるユニットを定義する機能を提供し、定義されたユニットを、コンポーネントと同様に配置可能に提供すること、を特徴の一つとする。
【００３９】
また、本実施形態に係るフォーム制御部２１０は、上記のユニットを複数利用および再利用可能に提供してよい。すなわち、本実施形態に係るフォーム制御部２１０は、ユーザにより定義されたユニットをコンポーネントの一種として、ユーザが自由に利用できるよう制御を行うことができる。
【００４０】
本実施形態に係るフォーム制御部２１０が有する上記の機能によれば、複数のレイヤーに相応するユニットをコンポーネントと同様に配置可能にすることで、ユーザが所定のレイヤー構成を都度コンポーネントを用いて構成することなく、容易に利用することが可能となる。なお、本実施形態に係るフォーム制御部２１０が有する機能の詳細については、別途後述する。
【００４１】
（生成部２２０）
本実施形態に係る生成部２２０は、フォーム制御部２１０が制御するフォームにおけるコンポーネントとユニットの配置、および設定されるプロパティとに基づいて、ニューラルネットワークを構築するソースコードを生成する機能を有する。本実施形態に係る生成部２２０が有する機能の詳細については、別途後述する。
【００４２】
（端末通信部２３０）
本実施形態に係る端末通信部２３０は、ネットワーク３０を介して、情報処理端末１０との情報通信を行う。具体的には、端末通信部２３０は、フォーム制御部２１０が生成する制御信号を情報処理端末１０に送信する。また、端末通信部２３０は、情報処理端末１０から、フォーム上におけるユーザの入力操作に係る情報を受信する。
【００４３】
以上、本開示の一実施形態に係る情報処理サーバ２０の機能構成例について説明した。なお、図３を用いて説明した上記の構成はあくまで一例であり、本実施形態に係る情報処理サーバ２０の機能構成は係る例に限定されない。例えば、上記に示した構成は、複数の装置により分散されて実現されてもよい。また、上述したように、フォーム制御部２１０が有する機能は、情報処理端末１０の制御部１３０の機能として実現されてもよい。本実施形態に係る情報処理サーバ２０の機能構成は、仕様や運用に応じて柔軟に変形可能である。
【００４４】
＜＜１．５．フォーム制御の詳細＞＞
次に、本実施形態に係るフォーム制御部２１０によるフォーム制御について詳細に説明する。図４は、本実施形態に係るフォームの表示例を示す図である。図４に示すように、本実施形態に係るフォームＦ１は、例えば、パレットＰ１〜Ｐ３を含む。
【００４５】
パレットＰ１は、レイヤーに対応するコンポーネントのリストを表示するための領域であってよい。パレットＰ１には、図４に示すように、コンポーネントが分類ごとに表示されてもよい。また、分類名をクリックすることで、分類ごとのレイヤーの一覧が展開されるよう制御されてもよい。また、パレットＰ１には、ニューラルネットワークや各コンポーネントのプロパティ情報ＬＰが表示される。
【００４６】
パレットＰ２は、コンポーネントを配置し、ニューラルネットワークを構築するための領域である。ユーザは、各コンポーネントを移動、追加または削除することで、ニューラルネットワークを視覚的に構築することができる。図４に示す一例の場合、パレットＰ２には、コンポーネントＣ１〜Ｃ１３から構成されるネットワーク構造が視覚的に示されている。ユーザは、例えば、パレットＰ１に表示されるコンポーネントをドラッグ＆ドロップすることで、任意のコンポーネントをパレットＰ２に追加することができる。
【００４７】
パレットＰ３は、構築中のニューラルネットワークに関する各種の情報を表示する領域である。パレットＰ３には、例えば、ネットワーク構造の全体像を示すオーバービューＯＶや、ニューラルネットワークに係る統計情報ＳＴなどが表示されてよい。
【００４８】
なお、本実施形態に係る統計情報ＳＴには、例えば、出力ニューロンサイズ、パラメータの使用メモリ量、および各種の演算量などの情報が含まれる。また、本実施形態に係るフォーム制御部２１０は、統計情報ＳＴが含む上記のような要素のうち、ユーザが選択した要素の値を、コンポーネントやユニットごとに比較して提示する機能を有してよい。この際、本実施形態に係るフォーム制御部２１０は、例えば、コンポーネントやユニットごとの要素の値と当該要素の値の大きさを示すインジケータと、をパレットＰ２に配置されたコンポーネントやユニットに対応する視覚表現と関連付けて提示してもよい。
【００４９】
図４に示す一例の場合、フォーム制御部２１０は、ユーザが出力ニューロンサイズを選択したことに基づいて、コンポーネントごとに出力ニューロンサイズの値と当該値に対応するインジケータを表示させている。本実施形態に係るフォーム制御部２１０が有する上記の機能によれば、ユーザが、各コンポーネントの出力ニューロンサイズや演算量を直観的に知覚することができ、ネットワーク構造を変更する際などの参考にすることができる。
【００５０】
以上、本実施形態に係るフォームの表示例について説明した。続いて、本実施形態に係るユニットの定義について説明する。上述したように、本実施形態に係るフォーム制御部２１０は、複数のコンポーネントから構成されるユニットを定義する機能を提供することを特徴の一つとする。
【００５１】
例えば、図４に示した一例では、ネットワーク構造において、「Ｃｏｎｖｏｌｕｔｉｏｎ」「ＭａｘＰｏｏｌｉｎｇ」、「Ｔａｎｈ」の順から成る構成が３回繰り返されている（コンポーネントＣ２〜４、Ｃ５〜７、Ｃ８〜１０に該当）。
【００５２】
この際、本実施形態に係る情報処理方法では、上記の構成をユニットとして定義することで、構築時におけるユーザの入力負担や編集時におけるユーザの作業負担を大幅に低減することが可能である。
【００５３】
図５は、本実施形態に係るユニットの定義について説明するための図である。図５の左側には、ユーザが定義するユニットの一例が示されている。図５に示す一例では、ユーザは、「Ｉｎｐｕｔ」、「Ｃｏｎｖｏｌｕｔｉｏｎ」「ＭａｘＰｏｏｌｉｎｇ」、「Ｔａｎｈ」の４つのコンポーネントＣ１〜Ｃ４から構成されるユニット「ＣｏｎｖＵｎｉｔ」を定義している。ユーザは、上記のようなユニットの定義を、例えば、パレットＰ２において実行できてよい。
【００５４】
また、ユーザは、上記のように定義したユニットを、他のコンポーネントと同様にパレットＰ２に配置することで、ネットワーク構造に含ませることができる。図５の右側に示す一例の場合、ユーザは、図４に示したネットワーク構造に含まれる「Ｃｏｎｖｏｌｕｔｉｏｎ」「ＭａｘＰｏｏｌｉｎｇ」、「Ｔａｎｈ」を、上記で定義した「ＣｏｎｖＵｎｉｔ」に対応するユニットＵ１〜Ｕ３に置換している。
【００５５】
このように、本実施形態に係るユニットの定義機能によれば、繰り返し出現するレイヤー構成を、対応するユニット１つで表現することができ、都度複数のコンポーネントを配置する負担を排除することが可能である。
【００５６】
また、本実施形態に係るフォーム制御部２１０は、パレットＰ２において、定義されたユニットを、当該ユニットを構成するコンポーネントの種別および数に依らない所定の視覚表現を用いて表示させてよい。すなわち、フォーム制御部２１０は、定義されたユニットを、単一のレイヤーに対応する他のコンポーネントと同様または類似する大きさや形式で表示させてよい。係る表示制御によれば、パレットＰ２におけるスペースを不必要に圧迫することなく、かつ、簡素化した表示を実現することで、ユーザがネットワーク全体の構成を把握し易くなる効果が期待される。
【００５７】
次に、本実施形態に係るユニットが用いる引数の設定について説明する。上記では、所定のレイヤー構成をユニットとして定義し当該ユニットを用いることで、繰り返し利用するレイヤー構成の記述を容易とすることについて述べた。
【００５８】
一方、レイヤー構成が同一である場合であっても、各ユニットで異なる処理を実行させたい場合も想定される。このため、本実施形態に係るフォーム制御部２１０は、ユニットを構成する複数のコンポーネントに共通して利用可能な引数を定義する機能を提供し、定義された引数をユニットのプロパティの一部として設定可能なように制御してよい。
【００５９】
図６は、本実施形態に係るユニットの引数設定について説明するための図である。図６には、フォーム上においてユーザがユニット定義を行う際の表示例が示されている。図６に示す一例の場合、ユーザは、パレットＰ２において、「ＳｅｐＣｏｎｖＩｎｐｕｔ」、「ＲｅＬＵ」、「ＤＷＣｏｎｖ」に対応するコンポーネントＣ１〜Ｃ３から構成されるユニットを定義している。
【００６０】
この際、本実施形態に係るフォーム制御部２１０は、例えば、引数を設定するための引数コンポーネントをパレットＰ２に配置し、パレットＰ１において各種の情報を入力することで引数設定が可能となるよう制御してもよい。
【００６１】
例えば、図６に示す一例の場合、ユーザは、「ＣｏｎｖＫａｒｎｅｌ」、「ＣｏｎｖＭａｐｓ」、「ＣｏｎｖＳｔｒｉｄｅ」に対応する引数コンポーネントＡＣ１〜ＡＣ３を配置している。ここで、「ＣｏｎｖＫａｒｎｅｌ」に対応する引数コンポーネントＡＣ１は、「ＤＷＣｏｎｖ」に対応するコンポーネントＣ３のカーネルシェイプを設定するための引数コンポーネントであってよい。
【００６２】
この際、ユーザは、パレットＰ１に表示される、引数コンポーネントＡＣ１のプロパティ情報ＬＰ１において、引数コンポーネントＡＣ１の名称やデフォルト値などを設定することができる。
【００６３】
また、ユーザは、「ＤＷＣｏｎｖ」に対応するコンポーネントＣ３を選択し、コンポーネントＣ３のプロパティ情報ＬＰ２において、「ＫａｒｎｅｌＳｈａｐｅ」に、上記のように設定した引数コンポーネントＡＣ１の名称「ＣｏｎｖＫａｒｎｅｌ」を入力することで、コンポーネントＣ３が、カーネルシェイプの設定に関し、上記で設定された引数を参照するよう設定することができる。
【００６４】
また、「ＣｏｎｖＭａｐｓ」、「ＣｏｎｖＳｔｒｉｄｅ」に対応する引数コンポーネントＡＣ１およびＡＣ３についても同様の入力を行うことで、コンポーネントＣ３が対応する引数を参照するよう設定することが可能である。なお、引数コンポーネントＡＣ１およびＡＣ３は、それぞれ、コンポーネントＣ３の出力ニューロンサイズおよびストライド値を設定するための引数コンポーネントであってよい。
【００６５】
また、図７は、本実施形態に係るユニットの配置と引数の設定について説明するための図である。図７に示すように、本実施形態に係るフォーム制御部２１０は、パレットＰ１において、ユーザが定義したユニットをコンポーネントと同様に選択可能なように表示させてよい。この際、ユーザは、パレットＰ１に表示されるユニットを、パレットＰ２にドラッグ＆ドロップし、ユニットのプロパティ情報ＬＰ３に項目として表示される「Ｎｅｔｗｏｒｋ」に、定義したユニット名称を指定することで、任意のユニットを配置することができる。なお、プロパティ情報ＬＰ３における「Ｎａｍｅ」は、ユニットの表示名や識別子として用いられる項目であってよい。
【００６６】
また、本実施形態に係るフォーム制御部２１０は、「Ｎｅｔｗｏｒｋ」に入力されたユニット名称に基づいて、該当するユニットに設定された引数をプロパティ情報の一部として編集可能に表示させる。図７に示す一例では、フォーム制御部２１０が、ユーザが入力した「ＳｅｐＣｏｎｖ」に基づいて、図６に示した引数「ＣｏｎｖＫａｒｎｅｌ」、「ＣｏｎｖＭａｐｓ」、「ＣｏｎｖＳｔｒｉｄｅ」をプロパティ情報ＬＰ３の項目として追加している。ユーザは、上記のような引数に任意の値を入力することで、配置したユニットに所望の処理を実行させることが可能である。
【００６７】
以上、本実施形態に係るユニットの定義や引数の設定について説明した。本実施形態に係る情報処理方法によれば、頻繁に利用するレイヤー構造をユニットとして定義して用いることで、ネットワーク構成の作成や編集を容易とし、また、ユーザがネットワーク構造全体を直観的に把握できるよう表示することが可能となる。
【００６８】
なお、本実施形態に係るユニットは、入れ子状に定義可能であってよい。すなわち、本実施形態に係るフォーム制御部２１０は、ユニットが１つ以上のユニットを含んで構成されることを許容してよい。
【００６９】
図８は、本実施形態に係る１つ以上のユニットを含むユニット定義について説明するための図である。例えば、ユーザは、図８の左側に示すように、まずユニットを含まない複数のコンポーネントから構成されるユニットＵ１を定義する。
【００７０】
次に、ユーザは、図８の中央に示すように、定義したユニットＵ１と他の複数のコンポーネントを含むユニットＵ２やユニットＵ３を定義することができる。
【００７１】
さらには、ユーザは、図８の右側に示すように、定義したユニットＵ１〜Ｕ３など、複数のユニットを含んで構成されるユニットＵ４を定義することも可能である。
【００７２】
このように、本実施形態に係るユニット定義によれば、入れ子状のユニットを作成することも可能である。上記のようなユニット構造によれば、巨大かつ複雑なネットワーク構造を簡素化して表示すると共に、作成、編集作業を大幅に効率化することが可能となる。
【００７３】
また、例えば、本実施形態に係るユニット定義によれば、ニューラルネットワークの学習や評価作業を効率化することも可能である。従来、学習時と評価時とにおいて別のネットワーク構造を用いる場合、両者がほぼ同一の構造であっても、それぞれ別途に作成する必要があった。
【００７４】
一方、本実施形態に係るユニット定義によれば、学習時と評価時とに利用されるネットワークにおいて共通する構造を予めユニットとして定義することで、学習用ネットワークと評価用ネットワークの作成効率を大幅に効率化することが可能である。
【００７５】
図９は、本実施形態に係るユニットを利用した学習用ネットワークおよび評価用ネットワークについて説明するための図である。図９に示す一例の場合、学習用ネットワークおよび評価用ネットワークは、共通する処理である「ＣＮＮＵｎｉｔ」に対応するユニットＵ１を含んで構成されており、ユニットＵ１の前後におけるコンポーネントの配置のみが異なっている。
【００７６】
具体的には、学習用ネットワークでは、ユニットＵ１の上流に「ＩｍａｇｅＡｕｇｍｅｎｔａｔｉｏｎ」に対応するコンポーネントＣ４が配置されている。また、学習用ネットワークでは、出力に「ＣａｔｅｇｏｒｉｃａｌＣｒｏｓｓＥｎｔｒｏｐｙ」に対応するコンポーネントＣ５が用いられているのに対し、評価用ネットワークでは、出力に「ＴｏｐＮＥｒｒｏｒ」に対応するコンポーネントＣ５が用いられている。
【００７７】
このように、本実施形態による情報処理方法によれば、学習用ネットワークと評価用ネットワークとで共通するレイヤー構造をユニットとして定義することで、ニューラルネットワークの学習や評価作業を効率化することが可能である。
【００７８】
次に、再び図５を参照して、本実施形態に係るユニット内で変更されるパラメータの反映について説明する。本実施形態に係るフォーム制御部２１０は、ユニットを構成する複数のコンポーネントの処理により変更されるパラメータを、当該ユニットに対応する視覚表現と関連付けて表示することが可能である。例えば、図５に示す一例の場合、フォーム制御部２１０は、「ＣｏｎｖＵｎｉｔ」内における処理により変化する出力ニューロンサイズを、「ＣｏｎｖＵｎｉｔ」の呼び出し元である視覚表現、すなわち図５の右側におけるユニットＵ１に関連付けて表示させている。
【００７９】
本実施形態に係るフォーム制御部２１０が有する上記の機能によれば、ユニット内における処理により各種のパラメータがどのように変化するのかを、ユニットの呼び出し元であるネットワーク構成上で明確かつ直観的に把握することが可能となる。上記のような表示は、通常のプログラミングとは異なり、出力ニューロンサイズ、メモリ量、および演算量などを強く意識する必要があるニューラルネットワークの設計において非常に有効な情報提示であるといえる。
【００８０】
続いて、本実施形態に係るユニット内で変更されるパラメータの反映の流れについて詳細に説明する。図１０は、本実施形態に係るユニット内で変更されるパラメータの反映の流れを示すフローチャートである。なお、図１０では、出力ニューロンサイズが変更される場合の流れを例として示している。
【００８１】
図１０を参照すると、フォーム制御部２１０は、まずネットワークの実行順に従い、コンポーネントまたはユニットを選択する（Ｓ１１０１）。
【００８２】
次に、フォーム制御部２１０は、選択した要素がユニットであるか否かを判定する（Ｓ１１０２）。
【００８３】
ここで、選択した要素がコンポーネントである場合（Ｓ１１０２：Ｎｏ）、フォーム制御部２１０は、入力されるニューロンサイズと選択されたコンポーネントの処理とに基づいて、出力ニューロンサイズを算出する（Ｓ１１０３）。
【００８４】
一方、選択した要素がユニットである場合（Ｓ１１０２：Ｙｅｓ）、フォーム制御部２１０は、入力されるニューロンサイズと選択されたユニットの処理とに基づいて、出力ニューロンサイズを算出する（Ｓ１１０４）。この際、フォーム制御部２１０は、図１０に示す出力ニューロンサイズ算出処理を再帰的に実行する。
【００８５】
本実施形態に係るフォーム制御部２１０は、ステップＳ１１０３またはＳ１１０４における算出処理が完了した場合、すべてのコンポーネントおよびユニットが処理済であるか否かを判定する（Ｓ１１０５）。
【００８６】
ここで、すべてのコンポーネントおよびユニットが処理済ではない場合（Ｓ１１０５：Ｎｏ）、フォーム制御部２１０は、ステップＳ１１０１に復帰し、以降の処理を繰り返し実行する。
【００８７】
一方、すべてのコンポーネントおよびユニットが処理済である場合（Ｓ１１０５：Ｙｅｓ）、フォーム制御部２１０は、出力ニューロンサイズに係る算出処理を終了する。
【００８８】
続いて、本実施形態に係る統計情報の提示について詳細に説明する。上述したように、本実施形態に係るフォーム制御部２１０は、フォーム上において構成されるニューラルネットワークに係る統計情報を動的に提示する機能を有する。
【００８９】
この際、本実施形態に係るフォーム制御部２１０は、ユニットを構成するコンポーネントを含むニューラルネットワーク全体の統計情報を動的にフォーム上に表示させてよい。本実施形態に係る統計情報には、例えば、出力ニューロンサイズや、使用するメモリ量、および各種の演算量などが含まれる。
【００９０】
図１１は、本実施形態に係るニューラルネットワーク全体に係る統計情報の表示例を示す図である。図１１には、ニューラルネットワークが、コンポーネントＣ１、Ｃ１１〜Ｃ１３、およびユニットＵ１〜Ｕ３を含んで構成される場合における、統計情報ＳＴ１の表示例が示されている。
【００９１】
ここで、統計情報ＳＴは、上述したパレットＰ３に表示されてよい。また、統計情報ＳＴ１における「Ｏｕｔｐｕｔ」は、出力ニューロンサイズを示し、「ＣｏｓｔＰａｒａｍｅｔｅｒ」は、使用するメモリ量（パラメータ数）を示す。
【００９２】
また、統計情報ＳＴ１には、「ＣｏｓｔＡｄｄ」、「ＣｏｓｔＭｕｌｔｉｐｌｙ」、「ＣｏｓｔＭｕｌｔｉｐｌｙＡｄｄ」、「ＣｏｓｔＤｉｖｉｓｉｏｎ」、「ＣｏｓｔＥｘｐ」、および「ＣｏｓｔＩｆ」がさらに含まれている。
【００９３】
上記の各項目はニューラルネットワークにより処理される演算種類ごとの演算量の総和を示している。上記の各項目は、それぞれ、加算回数、乗算回数、乗加算回数、除算回数、指数計算回数、または条件分岐判断の回数を示す値であってよい。
【００９４】
このように、本実施形態に係るフォーム制御部２１０によれば、ユニットを利用した場合であっても、ユニット内部の処理に係るメモリ量や演算量を、ニューラルネットワーク全体の統計情報に正しく反映することが可能である。上記のような表示は、通常のプログラミングとは異なり、出力ニューロンサイズ、メモリ量、および演算量などを強く意識する必要があるニューラルネットワークの設計において非常に有効な情報提示であるといえる。
【００９５】
また、本実施形態に係るフォーム制御部２１０は、ニューラルネットワーク全体に係る統計情報のほか、ユニットごとに統計情報を算出し、当該ユニットごとの統計情報を表示させてもよい。
【００９６】
図１２は、本実施形態に係るユニットごとの統計情報の表示例を示す図である。図１２に示す一例の場合、フォーム制御部２１０は、コンポーネントＣ１〜Ｃ４から構成される「ＣｏｎｖＵｎｉｔ」に係る統計情報ＳＴ２を算出している。
【００９７】
この際、本実施形態に係るフォーム制御部２１０は、「ＣｏｎｖＵｎｉｔ」に係る統計情報とニューラルネットワーク全体に係る統計情報とを比較して表示させてよい。例えば、図１２に示す一例の場合、フォーム制御部２１０は、ニューラルネットワーク全体の出力ニューロンサイズ、メモリ量、各種の演算量に対し、「ＣｏｎｖＵｎｉｔ」が占める各要素の割合を提示している。
【００９８】
このように、本実施形態に係るフォーム制御部２１０によれば、各ユニットにおける処理がニューラルネットワーク全体に与えるインパクトを明示的にユーザに示すことが可能となり、また、統計情報を確認したユーザが、必要に応じてユニット内の処理を変更することなどが可能となる。なお、フォーム制御部２１０は、上記の割合をパーセンテージにより表示させたり、インジケータなどを用いて表示させてもよい。
【００９９】
次に、本実施形態に係る統計情報の算出の流れについて詳細に説明する。図１３は、本実施形態に係る統計情報算出の流れを示すフローチャートである。
【０１００】
図１３を参照すると、フォーム制御部２１０は、まずネットワークの実行順に従い、コンポーネントまたはユニットを選択する（Ｓ１２０１）。
【０１０１】
次に、フォーム制御部２１０は、選択した要素がユニットであるか否かを判定する（Ｓ１２０２）。
【０１０２】
ここで、選択した要素がコンポーネントである場合（Ｓ１２０２：Ｎｏ）、フォーム制御部２１０は、コンポーネントの統計値をニューラルネットワーク全体の統計情報に反映する（Ｓ１２０３）。
【０１０３】
一方、選択した要素がユニットである場合（Ｓ１２０２：Ｙｅｓ）、フォーム制御部２１０は、ユニット内部の統計値を算出する（Ｓ１２０４）。この際、フォーム制御部２１０は、図１３に示す統計情報の算出処理を再帰的に実行する。
【０１０４】
続いて、フォーム制御部２１０は、ステップＳ１２０４において算出したユニット内部の統計値をニューラルネットワーク全体の統計情報に反映する（Ｓ１２０５）。
【０１０５】
本実施形態に係るフォーム制御部２１０は、ステップＳ１２０３またはＳ１２０５における処理が完了した場合、すべてのコンポーネントおよびユニットが処理済であるか否かを判定する（Ｓ１２０６）。
【０１０６】
ここで、すべてのコンポーネントおよびユニットが処理済ではない場合（Ｓ１２０６：Ｎｏ）、フォーム制御部２１０は、ステップＳ１２０１に復帰し、以降の処理を繰り返し実行する。
【０１０７】
一方、すべてのコンポーネントおよびユニットが処理済である場合（Ｓ１２０６：Ｙｅｓ）、フォーム制御部２１０は、統計情報に係る算出処理を終了する。
【０１０８】
＜＜１．６．ソースコードの出力＞＞
次に、本実施形態に係る生成部２２０によるソースコードの出力について詳細に説明する。本実施形態に係る生成部２２０は、フォーム制御部２１０が提供するフォームにおけるコンポーネントとユニットの配置、および設定されるプロパティとに基づいて、ニューラルネットワークに係るソースコードを出力する機能を有する。
【０１０９】
本実施形態に係る生成部２２０が有する上記の機能によれば、例えば、ビジュアルプログラミングにより大枠を形成したのちに、Ｐｙｔｈｏｎを用いて細部を編集したい、などの上級のユーザの要望にも広く応えることが可能である。
【０１１０】
このために、本実施形態に係る生成部２２０は、フォームにおいて定義されたユニットの構造を維持したソースコードを生成し、当該ソースコードを出力してよい。図１４は、本実施形態に係る生成部２２０が出力するソースコードの一例である。
【０１１１】
図１４には、本実施形態に係る生成部２２０が出力するソースコードの一例として、２つのソースコードＳ１およびＳ２が示されている。ここで、ソースコードＳ１は、定義されたユニットの呼び出し元に対応するソースコードの一例である。ソースコードＳ１を参照すると、ソースコードＳ１には、ユニット「ＳｅｐＣｏｎｖ」を呼び出すメソッドと共に、ユニット「ＳｅｐＣｏｎｖ」に与える引数が設定されていることがわかる。
【０１１２】
また、ソースコードＳ２は、ユニット「ＳｅｐＣｏｎｖ」のソースコードの一例である。ソースコードＳ２を参照すると、ソースコードＳ２には、「ＳｅｐＣｏｎｖ」を構成する複数のコンポーネントに係る記述が含まれており、また、「ＣｏｎｖＫａｒｎｅｌ」、「ＣｏｎｖＭａｐｓ」、「ＣｏｎｖＳｔｒｉｄｅ」などの設定引数に係る記載が含まれていることがわかる。
【０１１３】
このように、本実施形態に係る生成部２２０によれば、ユニットの構成や当該ユニットに設定された引数を正しく反映した階層的なソースコードを生成することができ、可読性が高く、かつ編集が容易なコードをユーザに提供することが可能となる。
【０１１４】
続いて、本実施形態に係る生成部２２０によるソースコードの出力の流れについて詳細に説明する。図１５は、本実施形態に係る生成部２２０によるソースコード出力の流れを示すフローチャートである。
【０１１５】
図１５を参照すると、生成部２２０は、まず、まだソースコードが出力されていないネットワークを１つ選択する（Ｓ１３０１）。
【０１１６】
次に、生成部２２０は、ステップＳ１３０１において選択したネットワークの関数定義に係るコードを出力する（Ｓ１３０２）。この際、選択したネットワークが上述の引数コンポーネントを含む場合、生成部２２０は、引数コンポーネントに対応する引数を追加する。
【０１１７】
次に、生成部２２０は、まずネットワークの実行順に従い、コンポーネントまたはユニットを選択する（Ｓ１３０３）。
【０１１８】
次に、生成部２２０は、選択した要素がユニットであるか否かを判定する（Ｓ１３０４）。
【０１１９】
ここで、選択した要素がコンポーネントである場合（Ｓ１３０４：Ｎｏ）、生成部２２０は、選択したコンポーネントのコードを出力する（Ｓ１３０５）。
【０１２０】
一方、選択した要素がユニットである場合（Ｓ１３０４：Ｙｅｓ）、生成部２２０は、選択したユニットに対応するネットワークの関数を呼び出すコードを出力する（Ｓ１３０６）。この際、生成部２２０は、ユニットのプロパティを、当該ユニットに対応するネットワークの関数の引数として引き渡す。
【０１２１】
本実施形態に係る生成部２２０は、ステップＳ１３０５またはＳ１３０６における処理が完了した場合、すべてのコンポーネントおよびユニットが処理済であるか否かを判定する（Ｓ１３０７）。
【０１２２】
ここで、すべてのコンポーネントおよびユニットが処理済ではない場合（Ｓ１３０７：Ｎｏ）、生成部２２０は、ステップＳ１３０３に復帰し、以降の処理を繰り返し実行する。
【０１２３】
一方、すべてのコンポーネントおよびユニットが処理済である場合（Ｓ１３０７：Ｙｅｓ）、生成部２２０は、続いて、すべてのネットワークが処理済であるか否かを判定する（Ｓ１３０８）。
【０１２４】
ここで、すべてのネットワークが処理済ではない場合（Ｓ１３０８：Ｎｏ）、生成部２２０は、ステップＳ１３０１に復帰し、以降の処理を繰り返し実行する。
【０１２５】
一方、すべてのネットワークが処理済である場合（Ｓ１３０８：Ｙｅｓ）、生成部２２０は、ソースコードの出力に係る処理を終了する。
【０１２６】
＜＜１．７．ネットワーク構造の自動探索＞＞
次に、本実施形態に係るネットワーク構造の自動探索機能について説明する。上述したように、本実施形態に係る生成部２２０は、フォーム上にユーザが配置したコンポーネントやユニット、また設定されるプロパティに基づいて、ニューラルネットワークを生成する機能を有する。
【０１２７】
また、本実施形態に係る生成部２２０は、生成したニューラルネットワークを評価し、当該評価済のネットワークのネットワーク構造を変化させ、異なるネットワーク構造を有する別のニューラルネットワークを生成する機能を有する。さらには、本実施形態に係る生成部２２０は、生成した上記別のニューラルネットワークの評価を行いパレート最適解を更新し、当該パレート最適解に係るニューラルネットワークのネットワーク構造を変化させ、さらなる別のニューラルネットワークを生成する。すなわち、本実施形態に係る生成部２２０は、ネットワークの生成とパレート最適解の更新を繰り返すことで、効率の良いネットワーク構造を自動で探索し、ユーザに提示することができる。
【０１２８】
生成部２２０によるニューラルネットワークの生成は、例えば、突然変異や交叉（または、交差、とも呼ぶ）などを含む遺伝的操作により実現されてもよい。ここで、上記の突然変異とは、生物に見られる遺伝子の突然変異をモデル化したものであってよい。すなわち、生成部２２０は、ネットワークを構成する各レイヤー（すなわち、コンポーネント）を遺伝子と見立て、レイヤーを突然変異させることで、ネットワーク構造の異なる別のニューラルネットワークを生成することができる。
【０１２９】
なお、上記の交叉とは、生物の交配における染色体の部分的交換をモデル化したものであってよい。すなわち、本開示に係る情報処理方法では、２つのネットワークのレイヤー構成を部分的に交換することで、上記の別のニューラルネットワークを生成することができる。
【０１３０】
図１６は、本実施形態に係る生成部２２０による自動構造探索について説明するための図である。図１６の左側には、生成部２２０による自動構造探索前のネットワーク構図が、図１６の右側には、生成部２２０による自動構造探索後のネットワーク構造が、それぞれ示されている。
【０１３１】
ここで、両者を比較すると、自動構造探索前において、「Ｔａｎｈ」に対応するコンポーネントＣ４が、自動探索後においては、「ＲｅＬＵ」に変化していることがわかる。また、図１６に示す一例では、自動構造探索前において、「ＭａｘＰｏｏｌｉｎｇ」に対応するコンポーネントＣ６のカーネルシェイプが「２，２」であったのが、自動構造探索後には、「３，３」に変化している。
【０１３２】
このように、本実施形態に係る生成部２２０は、突然変異や交叉によりネットワークの構造を変化させパレート最適解の更新を繰り返すことで、より効率的なネットワーク構造を自動で探索することが可能である。なお、本実施形態に係る突然変異や交叉、またパレート最適解更新の詳細については、本開示の出願人により出願され、開示された国際公開第２０１７／１５４２８４号を参照されたい。
【０１３３】
また、本実施形態に係る生成部２２０は、上記のような自動構造探索を行う際、ユニットや引数コンポーネントに設定される構造探索可否に基づいて、当該ユニットや引数コンポーネントを自動構造探索の対象とするか否かを決定することを特徴の一つとする。
【０１３４】
図１７は、本実施形態に係る引数コンポーネントの構造探索可否設定について説明するための図である。図１７には、本実施形態に係る引数コンポーネントのプロパティ情報ＬＰ４の一例が示されている。
【０１３５】
プロパティ情報ＬＰ４には、項目の１つとして、「Ｓｅａｒｃｈ」が含まれている。ここで、「Ｓｅａｒｃｈ」は、生成部２２０による自動構造探索を許容するか否か、すなわち構造探索可否を設定するための項目であってよい。本実施形態に係る生成部２２０は、上記の構造探索可否に基づいて、引数の値を変化させるか否かを決定することができる。
【０１３６】
図１７に示す一例の場合、項目「Ｓｅａｒｃｈ」には、「Ｆａｌｓｅ」が設定されていることから、生成部２２０は、引数「Ｃｏｎｖｋｅｒｎｅｌ」を自動構造探索の対象外として当該引数の値を変化させずに維持させる。
【０１３７】
また、図１８は、本実施形態に係るユニットの構造探索可否設定について説明するための図である。図１８には、コンポーネントＣ１〜Ｃ３から構成されるユニットと、当該ユニットに設定される構造探索可否設定コンポーネントＳＣの一例が示されている。
【０１３８】
本実施形態に係るユニットに対する構造探索可否は、例えば、図１８に示すような構造探索可否設定コンポーネントＳＣにより設定され得る。この際、ユーザは、パレットＰ１に一覧表示される構造探索可否設定コンポーネントＳＣをパレットＰ２にドラッグ＆ドロップし、プロパティ情報ＬＰ５において、項目「Ｓｅａｒｃｈ」の値を選択することで、ユニットに対する構造探索可否を設定することが可能である。
【０１３９】
本実施形態に係る生成部２２０は、上記の構造探索可否に基づいて、ユニットのネットワーク構造を変化させるか否かを決定することができる。図１８に示す一例の場合、項目「Ｓｅａｒｃｈ」には、「Ｆａｌｓｅ」が設定されていることから、生成部２２０は、当該ユニットを自動構造探索の対象外としてネットワーク構造を変化させずに構造を維持させる。
【０１４０】
このように、本実施形態に係る情報処理方法によれば、ユーザが、ネットワークにおいて、任意のユニットや引数のみが自動構造探索の対象となるよう設定することができ、ユーザの意図を反映した最適後のネットワークを得ることが可能となる。なお、本実施形態に係る探索構造可否設定は、デフォルトでは、「Ｔｒｕｅ」の状態であってもよい。この場合、ユーザは、自動構造探索の対象外としたいユニットや引数に上述のような設定を行うことで、当該ユニットや引数を元の設定のまま維持することが可能である。
【０１４１】
続いて、本実施形態に係る生成部２２０による自動構造探索の流れについて詳細に説明する。図１９は、本実施形態に係る生成部２２０による自動構造探索の流れを示すフローチャートである。
【０１４２】
図１９を参照すると、生成部２２０は、まず、上述した自動構造探索設定に基づいて、自動構造探索を行うネットワークを選択する（Ｓ１４０１）。この際、生成部２２０は、呼び出し元のネットワークやユニットの中から、自動構造探索設定が有効となっているネットワークをランダムに選択してもよい。
【０１４３】
次に、生成部２２０は、自動構造探索の手法をランダムに決定する（Ｓ１４０２）。生成部２２０は、例えば、Ｓ１４０１において選択したネットワークを突然変異させることで、自動構造探索を行ってもよい（Ｓ１４０３）。
【０１４４】
また、生成部２２０は、例えば、Ｓ１４０１において選択したネットワークを交叉させることで、自動構造探索を行ってもよい（Ｓ１４０４）。
【０１４５】
続いて、生成部２２０は、ステップＳ１４０３またはステップＳ１４０４で自動構造探索を行ったニューラルネットワークの整合性を判定する（Ｓ１４０５）。
【０１４６】
ここで、生成したニューラルネットワークの整合性がないと判定した場合（Ｓ１４０５：Ｎｏ）、生成部２２０は、生成したニューラルネットワークを破棄し、ステップＳ１４０１に復帰する。
【０１４７】
一方、生成したニューラルネットワークに整合性が認められる場合（Ｓ１４０５：Ｙｅｓ）、生成部２２０は、続いて、生成したニューラルネットワークと、元となるニューラルネットワークと、の入出力が同一であるか否かを判定する（Ｓ１４０６）。
【０１４８】
ここで、両者の入出力が異なる場合（Ｓ１４０６：Ｎｏ）、想定する認識問題を処理することが困難となるため、生成部２２０は、生成したニューラルネットワークを破棄し、ステップＳ１４０１へと復帰する。
【０１４９】
一方、生成したニューラルネットワークと、元となるニューラルネットワークとの入出力が同一である場合（Ｓ１４０６：Ｙｅｓ）、生成部２２０は、自動構造探索に係る処理を正常に終了する。
【０１５０】
＜２．ハードウェア構成例＞
次に、本開示の一実施形態に係る情報処理サーバ２０のハードウェア構成例について説明する。図２０は、本開示の一実施形態に係る情報処理サーバ２０のハードウェア構成例を示すブロック図である。図２０を参照すると、情報処理サーバ２０は、例えば、プロセッサ８７１と、ＲＯＭ８７２と、ＲＡＭ８７３と、ホストバス８７４と、ブリッジ８７５と、外部バス８７６と、インターフェース８７７と、入力装置８７８と、出力装置８７９と、ストレージ８８０と、ドライブ８８１と、接続ポート８８２と、通信装置８８３と、を有する。なお、ここで示すハードウェア構成は一例であり、構成要素の一部が省略されてもよい。また、ここで示される構成要素以外の構成要素をさらに含んでもよい。
【０１５１】
（プロセッサ８７１）
プロセッサ８７１は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ８７２、ＲＡＭ８７３、ストレージ８８０、又はリムーバブル記録媒体９０１に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。
【０１５２】
（ＲＯＭ８７２、ＲＡＭ８７３）
ＲＯＭ８７２は、プロセッサ８７１に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ８７３には、例えば、プロセッサ８７１に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【０１５３】
（ホストバス８７４、ブリッジ８７５、外部バス８７６、インターフェース８７７）
プロセッサ８７１、ＲＯＭ８７２、ＲＡＭ８７３は、例えば、高速なデータ伝送が可能なホストバス８７４を介して相互に接続される。一方、ホストバス８７４は、例えば、ブリッジ８７５を介して比較的データ伝送速度が低速な外部バス８７６に接続される。また、外部バス８７６は、インターフェース８７７を介して種々の構成要素と接続される。
【０１５４】
（入力装置８７８）
入力装置８７８には、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力装置８７８としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。また、入力装置８７８には、マイクロフォンなどの音声入力装置が含まれる。
【０１５５】
（出力装置８７９）
出力装置８７９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＬＣＤ、又は有機ＥＬ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。また、本開示に係る出力装置８７９は、触覚刺激を出力することが可能な種々の振動デバイスを含む。
【０１５６】
（ストレージ８８０）
ストレージ８８０は、各種のデータを格納するための装置である。ストレージ８８０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。
【０１５７】
（ドライブ８８１）
ドライブ８８１は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９０１に記録された情報を読み出し、又はリムーバブル記録媒体９０１に情報を書き込む装置である。
【０１５８】
（リムーバブル記録媒体９０１）
リムーバブル記録媒体９０１は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙ（登録商標）メディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９０１は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。
【０１５９】
（接続ポート８８２）
接続ポート８８２は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９０２を接続するためのポートである。
【０１６０】
（外部接続機器９０２）
外部接続機器９０２は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。
【０１６１】
（通信装置８８３）
通信装置８８３は、ネットワークに接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、又は各種通信用のモデム等である。
【０１６２】
＜３．まとめ＞
以上説明したように、本開示の一実施形態に係る情報処理方法は、プロセッサが、レイヤーに対応するコンポーネントの配置と、コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供することと、ニューラルネットワークに係る統計情報を提示することと、を含むこと、を特徴の一つとする。また、上記フォームを提供することは、フォームにおいて、複数のコンポーネントから構成されるユニットを定義する機能を提供することと、定義されたユニットを、コンポーネントと同様に配置可能に提供することと、をさらに含むこと、を特徴の一つとする。係る構成によれば、ニューラルネットワークの開発効率をより向上させることが可能となる。
【０１６３】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１６４】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１６５】
また、コンピュータに内蔵されるＣＰＵ、ＲＯＭおよびＲＡＭなどのハードウェアに、情報処理サーバ２０が有する構成と同等の機能を発揮させるためのプログラムも作成可能であり、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。
【０１６６】
また、本明細書の情報処理サーバ２０の処理に係る各ステップは、必ずしもフローチャートに記載された順序に沿って時系列に処理される必要はない。例えば、情報処理サーバ２０の処理に係る各ステップは、フローチャートに記載された順序と異なる順序で処理されても、並列的に処理されてもよい。
【０１６７】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
プロセッサが、レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供することと、
前記ニューラルネットワークに係る統計情報を提示することと、
を含み、
前記フォームを提供することは、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供することと、
定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供することと、
をさらに含む、
情報処理方法。
（２）
前記フォームを提供することは、前記ユニットを複数利用および再利用可能に提供すること、
をさらに含む、
前記（１）に記載の情報処理方法。
（３）
前記フォームを提供することは、前記ユニットを構成する複数の前記コンポーネントに共通して利用可能な引数を定義する機能を提供することと、
定義された前記引数を前記ユニットのプロパティの一部として設定可能なように制御することと、
をさらに含む、
前記（１）または（２）に記載の情報処理方法。
（４）
前記引数を定義する機能を提供することは、前記フォーム上に配置される、前記引数に対応する引数コンポーネントと、前記引数コンポーネントに設定されるプロパティとに基づいて、前記引数を制御すること、
をさらに含む、
前記（３）に記載の情報処理方法。
（５）
前記フォームを提供することは、前記フォームにおいて、前記ユニットを、前記ユニットを構成する前記コンポーネントの種別および数に依らない所定の視覚表現を用いて表示すること、
をさらに含む、
前記（１）〜（４）のいずれかに記載の情報処理方法。
（６）
前記フォームを提供することは、前記ユニットを構成する複数の前記コンポーネントの処理により変更されるパラメータを、前記ユニットに対応する前記視覚表現と関連付けて表示すること、
をさらに含む、
前記（５）に記載の情報処理方法。
（７）
前記統計情報を提示することは、前記ユニットを構成する前記コンポーネントを含む前記ニューラルネットワーク全体の前記統計情報を提示すること、
をさらに含み、
前記統計情報は、出力ニューロンサイズ、使用メモリ量、または演算量のうち、少なくとも１つを含む、
前記（１）〜（６）のいずれかに記載の情報処理方法。
（８）
前記統計情報を提示することは、前記ユニットごとに前記統計情報を提示すること、
をさらに含む、
前記（７）に記載の情報処理方法。
（９）
前記統計情報を提示することは、前記ニューラルネットワーク全体の前記統計情報と前記ユニットの前記統計情報とを比較して提示すること、
をさらに含む、
前記（７）または（８）に記載の情報処理方法。
（１０）
前記統計情報に含まれる要素を選択するユーザの操作を受け付け、選択された前記要素の値を、前記コンポーネントおよび前記ユニットごとに比較して提示すること、
をさらに含む、
前記（１）〜（９）のいずれかに記載の情報処理方法。
（１１）
前記コンポーネントまたは前記ユニットごとの前記要素の値と、当該要素の値の大きさを示すインジケータと、を前記フォーム上に配置された前記コンポーネントまたは前記ユニットに関連付けて提示する、
前記（１０）に記載の情報処理方法。
（１２）
前記フォームを提供することは、前記ユニットの定義に関し、前記ユニットが１つ以上の前記ユニットを含んで構成されることを許容すること、
をさらに含む、
前記（１）〜（１１）のいずれかに記載の情報処理方法。
（１３）
前記コンポーネントと前記ユニットの配置および設定されるプロパティとに基づいて、前記ニューラルネットワークに係るソースコードを出力すること、
をさらに含む、
前記（１）〜（１２）のいずれかに記載の情報処理方法。
（１４）
前記ソースコードを出力することは、前記ユニットの構成を維持した前記ソースコードを生成すること、
をさらに含む、
前記（１３）に記載の情報処理方法。
（１５）
評価済のニューラルネットワークから、ネットワーク構造の異なる別のニューラルネットワークを生成することと、
生成されたニューラルネットワークの評価結果を取得することと、
生成されたニューラルネットワークの評価結果に基づいて、評価済のニューラルネットワークに係るパレート最適解を更新することと、
をさらに含み、
前記生成することは、前記パレート最適解に係るニューラルネットワークから、ネットワーク構造の異なる前記別のニューラルネットワークを生成することと、
をさらに含む、
前記（１）〜（１４）のいずれかに記載の情報処理方法。
（１６）
前記生成することは、前記ユニットに設定される構造探索可否に基づいて、前記ユニットのネットワーク構造を変化させるか否かを決定すること、
をさらに含む、
前記（１５）に記載の情報処理方法。
（１７）
前記生成することは、前記ユニットに用いられる引数に設定される構造探索可否に基づいて、前記引数の値を変化させるか否かを決定すること、
をさらに含む、
前記（１５）または（１６）に記載の情報処理方法。
（１８）
レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、前記フォームにおいて、前記ニューラルネットワークに係る統計情報を提示するフォーム制御部、
を備え、
前記フォーム制御部は、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供し、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供する、
情報処理装置。
（１９）
コンピュータを、
レイヤーに対応するコンポーネントの配置と、前記コンポーネントに設定されるプロパティと、に基づいて、ニューラルネットワークを構築するプログラムを作成するためのフォームを提供し、前記フォームにおいて、前記ニューラルネットワークに係る統計情報を提示するフォーム制御部、
を備え、
前記フォーム制御部は、前記フォームにおいて、複数の前記コンポーネントから構成されるユニットを定義する機能を提供し、定義された前記ユニットを、前記コンポーネントと同様に配置可能に提供する、
情報処理装置、
として機能させるためのプログラム。
【符号の説明】
【０１６８】
１０      情報処理端末
１１０    表示部
１２０    入力部
１３０    制御部
１４０    サーバ通信部
２０      情報処理サーバ
２１０    フォーム制御部
２２０    生成部
２３０    端末通信部
【図１】
2019187542.tif 000003
【図２】
2019187542.tif 000004
【図３】
2019187542.tif 000005
【図４】
2019187542.tif 000006
【図５】
2019187542.tif 000007
【図６】
2019187542.tif 000008
【図７】
2019187542.tif 000009
【図８】
2019187542.tif 000010
【図９】
2019187542.tif 000011
【図１０】
2019187542.tif 000012
【図１１】
2019187542.tif 000013
【図１２】
2019187542.tif 000014
【図１３】
2019187542.tif 000015
【図１４】
2019187542.tif 000016
【図１５】
2019187542.tif 000017
【図１６】
2019187542.tif 000018
【図１７】
2019187542.tif 000019
【図１８】
2019187542.tif 000020
【図１９】
2019187542.tif 000021
【図２０】
2019187542.tif 000022
【国際調査報告】
2019187542.tif 000023
2019187542.tif 000024
2019187542.tif 000025