(57)【要約】  ニューラルネットワーク構築装置(１０)は、組込み機器が有する計算資源に関する資源情報及び組込み機器が有する処理性能に関する性能制約を取得する取得部（１１）と、ニューラルネットワークの規模制約を資源情報に基づいて設定する設定部（１２）と、規模制約に基づいてニューラルネットワークのモデルを生成する生成部（１３）と、生成されたモデルについて、性能制約を満たすか否かを判断し、判断の結果に基づくデータを出力する判断部（１４）とを備える。
2019216404.tif 000002
【特許請求の範囲】
【請求項１】
構築するニューラルネットワークのハイパーパラメータの候補である候補ハイパーパラメータの決定のために用いられる条件である第一条件、及び前記ニューラルネットワークのモデルが備えるべき性能に関する条件である第二条件を取得する取得部と、
前記第一条件を用いて前記候補ハイパーパラメータを決定する設定部と、
前記候補ハイパーパラメータを用いてニューラルネットワークのモデルを生成する生成部と、
生成された前記モデルについて、前記第二条件を満たすか否かの判断を実行し、前記判断の結果に基づくデータを出力する判断部とを備える
ニューラルネットワーク構築装置。
【請求項２】
前記設定部は、前記第一条件を用いて前記候補ハイパーパラメータの上限及び下限の少なくとも一方を算出し、算出した前記上限及び下限の少なくとも一方に基づいて１個以上の前記候補ハイパーパラメータを決定する
請求項１に記載のニューラルネットワーク構築装置。
【請求項３】
前記第一条件は、組込み機器が有する計算資源に関する資源条件を含み、
前記設定部は、前記資源条件に基づいて前記候補ハイパーパラメータの上限を算出し、前記上限以下のハイパーパラメータの少なくとも一部を前記候補ハイパーパラメータと決定する
請求項２に記載のニューラルネットワーク構築装置。
【請求項４】
前記資源条件は前記組込み機器のメモリサイズの情報を含み、
前記設定部は、前記メモリサイズに収まるニューラルネットワークのハイパーパラメータの上限を前記候補ハイパーパラメータの上限として算出し、前記上限以下のハイパーパラメータの少なくとも一部を前記候補ハイパーパラメータと決定する
請求項３に記載のニューラルネットワーク構築装置。
【請求項５】
前記第一条件は、前記ニューラルネットワークへの入力データのサイズ及び前記ニューラルネットワークからの出力データのサイズの少なくとも一方の情報を含み、
前記設定部は、前記第一条件に含まれる前記入力データのサイズ及び前記出力データのサイズの少なくとも一方に基づいて前記候補ハイパーパラメータの上限を算出し、算出した前記上限以下のハイパーパラメータの少なくとも一部を前記１個以上の候補ハイパーパラメータであると決定する
請求項２に記載のニューラルネットワーク構築装置。
【請求項６】
前記入力データのサイズは前記入力データの次元数であり、前記出力データのサイズは前記出力データの次元数であり、
前記１個以上の候補ハイパーパラメータは、前記ニューラルネットワークの層数及びノード数をそれぞれ１個以上含む
請求項５に記載のニューラルネットワーク構築装置。
【請求項７】
前記第一条件は、さらに前記ニューラルネットワークは畳み込みニューラルネットワークであることを示す情報を含む
請求項５に記載のニューラルネットワーク構築装置。
【請求項８】
前記入力データは画像データであり、
前記入力データのサイズは前記画像データの画素数であり、前記出力データのサイズは前記画像データが分類されるクラスの数であり、
前記１個以上の候補ハイパーパラメータは、前記畳み込みニューラルネットワークの層数、カーネルのサイズ、前記カーネルの深度、特徴マップのサイズ、プーリング層のウインドウサイズ、パディング量、及びストライド量のうち少なくともひとつを含む
請求項７に記載のニューラルネットワーク構築装置。
【請求項９】
前記第一条件は、前記ニューラルネットワークのモデルによる推論の精度目標を含み、
前記設定部は、前記精度目標を用いて前記候補ハイパーパラメータの下限を算出し、算出した前記下限以上のハイパーパラメータの少なくとも一部を前記１個以上の候補ハイパーパラメータであると決定する
請求項２から８のいずれか一項に記載のニューラルネットワーク構築装置。
【請求項１０】
前記第二条件は、ニューラルネットワークのモデルを用いた推論処理の基準所要時間に関する時間条件を含み、
前記生成部は、生成した前記モデルを用いた推論処理の所要時間を前記資源条件に基づいて算出し、
前記判断部は、算出された前記所要時間と前記基準所要時間との比較によって、生成された前記モデルが前記第二条件を満たすか否かを判断する
請求項３、４、及び請求項３又は４を引用する請求項９のいずれか一項に記載のニューラルネットワーク構築装置。
【請求項１１】
前記資源条件は前記組込み機器の演算処理装置の動作周波数の情報をさらに含み、
前記生成部は、生成した前記モデルの推論処理に対応する部分の実行サイクル数を取得し、前記実行サイクル数及び前記動作周波数を用いて前記所要時間を算出する
請求項１０に記載のニューラルネットワーク構築装置。
【請求項１２】
前記生成部は、前記モデルの推論処理に対応する部分の前記演算処理装置に依存の言語による第一ソースコードを生成し、前記第一ソースコードをコンパイルして取得する中間コードを用いて前記実行サイクル数を取得する
請求項１１に記載のニューラルネットワーク構築装置。
【請求項１３】
さらに学習部及び出力部を備え、
前記取得部は、さらに前記ニューラルネットワークの学習データを取得し、
前記判断部は、前記生成部により生成されたモデルのうち、前記第二条件を満たすと判断したモデルを示すデータを出力し、
前記学習部は、前記判断部が出力したデータが示すモデルの学習を、前記学習データを用いて実行し、
前記出力部は、学習済みの前記モデルの少なくとも一部を出力する
請求項１から１２のいずれか一項に記載のニューラルネットワーク構築装置。
【請求項１４】
前記学習部はさらに、学習済みの前記モデルの予測精度評価を実行し、実行した前記予測精度評価に関するデータを生成する
請求項１３に記載のニューラルネットワーク構築装置。
【請求項１５】
前記学習部はさらに、学習済みの前記モデルの推論処理に対応する部分の演算処理装置依存の言語による第二ソースコードを生成し、前記第二ソースコードを用いて前記予測精度評価を実行する
請求項１４に記載のニューラルネットワーク構築装置。
【請求項１６】
前記予測精度評価に関するデータは、前記予測精度評価が実行済みのモデルを示す評価済みモデルリストのデータであり、
前記生成部、前記判断部又は前記学習部は、前記評価済みモデルリストが示すモデルのいずれかと同一の組み合わせの複数のハイパーパラメータを用いて生成されたモデルを処理対象から除外する
請求項１４又は１５に記載のニューラルネットワーク構築装置。
【請求項１７】
前記出力部は、出力される前記モデルを、演算処理装置依存の言語によるソースコードの形式で出力する
請求項１３から１６のいずれか一項に記載のニューラルネットワーク構築装置。
【請求項１８】
前記出力部は、出力される前記モデルを、ハードウェア記述言語の形式で出力する
請求項１３から１６のいずれか一項に記載のニューラルネットワーク構築装置。
【請求項１９】
前記判断部は、実行された前記予測精度評価の成績が所定の条件を満たす場合に、前記生成部によるニューラルネットワークのモデルの生成を停止させる
請求項１５又は１６に記載のニューラルネットワーク構築装置。
【請求項２０】
前記取得部は、前記ニューラルネットワークのモデルの所定レベルの精度を示す精度目標を取得し、
前記所定の条件は、生成順の連続する所定個数以上のモデルで前記予測精度評価の成績が前記精度目標を達成しない状況が発生したことである
請求項１９に記載のニューラルネットワーク構築装置。
【請求項２１】
演算処理部及び記憶部を備え、
前記記憶部は請求項１から１８のいずれか一項に記載のニューラルネットワーク構築装置で生成されたモデルを記憶し、
前記演算処理部は、前記記憶部から前記モデルを読み出して実行する
情報処理装置。
【請求項２２】
演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置における前記演算処理装置によって実行されるニューラルネットワーク構築方法であって、
組込み機器が有する計算資源に関する資源情報及び前記組込み機器が有する処理性能に関する性能制約を取得し、
ニューラルネットワークの規模制約を前記資源情報に基づいて設定し、
前記規模制約に基づいてニューラルネットワークのモデルを生成し、
生成された前記モデルについて、前記性能制約を満たすか否かを判断し、前記判断の結果に基づくデータを出力する
ニューラルネットワーク構築方法。
【請求項２３】
演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置における前記演算処理装置によって実行されるプログラムであって、
前記演算処理装置によって実行されることで前記ニューラルネットワーク構築装置に、
組込み機器が有する計算資源に関する資源情報及び前記組込み機器が有する処理性能に関する性能制約を取得させ、
ニューラルネットワークの規模制約を前記資源情報に基づいて設定させ、
前記規模制約に基づいてニューラルネットワークのモデルを生成させ、
生成された前記モデルについて、前記性能制約を満たすか否かを判断し、前記判断の結果に基づくデータを出力させる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを構築するための情報処理技術に関する。
【背景技術】
【０００２】
複数のハードウェアによる処理に適合したニューラルネットワークをより効率的に設計することが可能な技術として、複数のハードウェア機器に係る制約を取得する取得部と、ニューラルネットワークが、この制約を満たすか否か判定を行う判定部とを備える情報処理装置及び情報処理方法が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１７／１８７７９８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の技術では、最適なニューラルネットワークの候補となるニューラルネットワークの各々が上記の制約を満たすか否かの判定対象である。つまり、最適なニューラルネットワークが得られるまでに設計と判定による試行錯誤が繰り返される回数が膨大になり、時間を要する。【０００５】
そこで本開示では、ニューラルネットワークの候補を絞り込んで、最適なニューラルネットワークの取得の効率化に貢献するニューラルネットワーク構築装置を提供する。また本開示では、このニューラルネットワーク構築装置で用いられるニューラルネットワーク構築方法及びプログラムを提供する。
【課題を解決するための手段】
【０００６】
上記課題を解決する本発明の一態様に係るニューラルネットワーク構築装置は、構築するニューラルネットワークのハイパーパラメータの候補である候補ハイパーパラメータの決定のために用いられる条件である第一条件、及び前記ニューラルネットワークのモデルが備えるべき性能に関する条件である第二条件を取得する取得部と、前記第一条件を用いて前記候補ハイパーパラメータを決定する設定部と、前記候補ハイパーパラメータを用いてニューラルネットワークのモデルを生成する生成部と、生成された前記モデルについて、前記第二条件を満たすか否かの判断を実行し、前記判断の結果に基づくデータを出力する判断部とを備える。【０００７】
また、本発明の一態様に係るニューラルネットワーク構築方法は、演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置における前記演算処理装置によって実行されるニューラルネットワーク構築方法であって、組込み機器が有する計算資源に関する資源情報及び前記組込み機器が有する処理性能に関する性能制約を取得し、ニューラルネットワークの規模制約を前記資源情報に基づいて設定し、前記規模制約に基づいてニューラルネットワークのモデルを生成し、生成された前記モデルについて、前記性能制約を満たすか否かを判断し、前記判断の結果に基づくデータを出力する。【０００８】
また、本発明の一態様に係るプログラムは、演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置における前記演算処理装置によって実行されるプログラムであって、前記演算処理装置によって実行されることで前記ニューラルネットワーク構築装置に、組込み機器が有する計算資源に関する資源情報及び前記組込み機器が有する処理性能に関する性能制約を取得させ、ニューラルネットワークの規模制約を前記資源情報に基づいて設定させ、前記規模制約に基づいてニューラルネットワークのモデルを生成させ、生成された前記モデルについて、前記性能制約を満たすか否かを判断し、前記判断の結果に基づくデータを出力させる。【０００９】
なお、本開示の理解を促す目的で下記のとおり用語を説明する。【００１０】
Ｐｙｔｈｏｎ：汎用プログラミング言語。機械学習の分野で広く利用されている。【００１１】
モデル：与えられたデータに対して所望の予測・判断をする数式、関数。【００１２】
ニューラルネットワーク（Neural Network）：人間の脳内の神経細胞及び神経回路の構造を模した、人工的なニューロン（ノードとも呼ばれる）のネットワークによるモデル。【００１３】
重み：モデルのパラメータのひとつであり、ニューロン同士の結合の強さを示す。結合荷重とも呼ばれる。【００１４】
バイアス：モデルのパラメータのひとつであり、ニューロンへの入力値と重みに応じて得られる出力を調整する。【００１５】
ここで、ニューラルネットワークの概念を、ニューロン、重み及びバイアスの関係を含めて図を用いて示す。図１は、ニューラルネットワークの概念を説明するための図である。図１に例示されるニューラルネットワークは、それぞれが白丸で示される複数のニューロンを含む複数の層で構成される。【００１６】
最も左の層がこのニューラルネットワークの入力層であり、この層の各ニューロンには入力値がセットされる。層間のニューロンを結ぶ線は重みを示す。各ニューロンの入力値は、重みが掛けられてからひとつ右の層のニューロンに入力される。最も右の層はこのニューラルネットワークの出力層であり、この層の各ニューロンの値が、このニューラルネットワークによる予測又は判断の結果である。なお、バイアスは図１にハッチングの掛けられた丸で示され、上述のとおり、左の層にあるニューロンからの入力値とは別に入力される。【００１７】
全結合型ニューラルネットワーク：階層型のニューラルネットワークであって、各層のニューロンが次層のすべてのニューロンと結合される構造を持つ。図１のニューラルネットワークは全結合型ニューラルネットワークである。【００１８】
学習：入力データに応じて出力される予測・判断の結果が正解に近づくように、重み及びバイアスを繰り返し調整すること。【００１９】
学習データ：生成したニューラルネットワークのモデルの学習に使用するデータ。画像データ又は数値データ等、対象とする問題に応じて用意される。【００２０】
推論モデル：学習が完了したモデルのことを推論モデルと呼ぶ。予測・判断の精度はこの推論モデルを用いて評価される。【００２１】
推論：学習で使用していない未知のデータを推論モデルに与え、予測・判断の結果を得ること。【００２２】
ハイパーパラメータ：モデルのパラメータのうち、重みのように学習により決定されるパラメータではなく、ニューロンの個数やネットワークの深さ（層数）等の、学習前に決定しておく必要のあるパラメータ。ハイパーパラメータの設定により、モデルの構成が決まる。【００２３】
評価済みモデル：学習で使用していない未知のデータを推論モデルに与えて、精度を評価したモデル。
【発明の効果】
【００２４】
本開示で提供されるニューラルネットワーク構築装置は、種々の条件を満たすニューラルネットワークの候補を絞り込んで、最適なニューラルネットワークの取得の効率化に貢献する。
【図面の簡単な説明】
【００２５】
【図１】図１は、ニューラルネットワークの概念を説明するための図である。
【図２】図２は、実施の形態に係るニューラルネットワーク構築装置の機能構成の一例を示すブロック図である。
【図３】図３は、実施の形態に係るニューラルネットワーク構築装置の実現に用いられるハードウェア構成の例を示すブロック図である。
【図４】図４は、ニューラルネットワークの構築において用いられるハイパーパラメータの分布の概念を説明するための図である。
【図５】図５は、実施の形態に係るニューラルネットワーク構築装置で実行される、ニューラルネットワーク構築方法の処理手順の一例を示すフローチャートである。
【図６Ａ】図６Ａは、ベイズ最適化を用いたハイパーパラメータの探索手法の概要を説明するための図である。
【図６Ｂ】図６Ｂは、ベイズ最適化を用いたハイパーパラメータの探索手法の概要を説明するための図である。
【図６Ｃ】図６Ｃは、ベイズ最適化を用いたハイパーパラメータの探索手法の概要を説明するための図である。
【図７】図７は、全結合ニューラルネットワークの構成例を示す図である。
【図８】図８は、畳み込みニューラルネットワークの構成例を示す図である。
【図９】図９は、ローパスフィルタの周波数特性の例を示すグラフである。
【図１０】図１０は、実施の形態に係るニューラルネットワーク構築装置で実行される、ニューラルネットワーク構築方法の処理手順の一例を示すフローチャートである。
【図１１】図１１は、実施の形態に係るニューラルネットワーク構築装置で実行される、ニューラルネットワーク構築方法の処理手順の他の例のうち、前段の一例を示すフローチャートである。
【図１２】図１２は、実施の形態に係るニューラルネットワーク構築装置で実行される、ニューラルネットワーク構築方法の処理手順の他の例のうち、後段の一例を示すフローチャートである。
【発明を実施するための形態】
【００２６】
（本発明の基礎となった知見等）
上述のとおり、従来技術では、ハードウェア上の制約を満たし、かつ、より高い精度のニューラルネットワークを得るまでに、長い時間をかけての試行錯誤を経る必要がある。
【００２７】
一方で、電化製品又は自動車に搭載される、いわゆる組込み機器（組込みデバイス又は組込みシステムと呼ばれる場合もあり、以下ではこれらを特に区別せず組込み機器と表記する）にも、高機能化の追求を背景にニューラルネットワークの導入が進みつつある。さらには、ＩｏＴ（Internet of Things）が進む今日の状況下では、電化製品等に留まらない多様なモノ（物）にも、通信を含む付加的な機能を与えるために組込み機器が搭載されつつある。
【００２８】
このような組込み機器には、搭載先であるモノの大きさ、用途、使用状況、価格等を理由としてハードウェア上の制約が課せられる。しかしながら、多様なモノに使われる多様な組込み製品で動作させるための種々のニューラルネットワークは、上記の従来技術では、スピーディかつ低コストには開発できない。
【００２９】
上記のようなハードウェア上の制約は一例であり、他にも種々の要因で決まる制約が存在し得る。上記の従来技術では、このような制約を満たすニューラルネットワークを得るまでにも多くの試行錯誤が必要である。
【００３０】
本発明者らはこのような課題に鑑みて、組込み機器等の設計開発のプロセスで課されるハードウェア的な制約を満たした上でより高い精度を示すニューラルネットワークの候補をより速やかに取得するために技術に想到した。
【００３１】
この技術に係るニューラルネットワーク構築装置は、構築するニューラルネットワークのハイパーパラメータの候補である候補ハイパーパラメータの決定のために用いられる条件である第一条件、及び前記ニューラルネットワークのモデルが備えるべき性能に関する条件である第二条件を取得する取得部と、前記第一条件を用いて前記候補ハイパーパラメータを決定する設定部と、前記候補ハイパーパラメータを用いてニューラルネットワークのモデルを生成する生成部と、生成された前記モデルについて、前記第二条件を満たすか否かの判断を実行し、前記判断の結果に基づくデータを出力する判断部とを備える。
【００３２】
これにより、条件を満たし得ない構成のものを除外して絞り込んだ候補から選択する形で最適なニューラルネットワークの効率的な取得が可能になる。
【００３３】
例えば、前記設定部は、前記第一条件を用いて前記候補ハイパーパラメータの上限及び下限の少なくとも一方を算出し、算出した前記上限及び下限の少なくとも一方に基づいて１個以上の前記候補ハイパーパラメータを決定してもよい。
【００３４】
これにより、所望の規模又は性能を有し得ない構成のものを除外して絞り込んだ候補から選択する形で最適なニューラルネットワークの効率的な取得が可能になる。
【００３５】
また例えば、前記第一条件は、組込み機器が有する計算資源に関する資源条件を含み、前記設定部は、前記資源条件に基づいて前記候補ハイパーパラメータの上限を算出し、前記上限以下のハイパーパラメータの少なくとも一部を前記候補ハイパーパラメータと決定してもよい。
【００３６】
このニューラルネットワーク構築装置では、生成されたニューラルネットワークのモデルの規模が、所定のハードウェア仕様による組込み機器に実装可能な範囲に収まっている。したがって、従来の手法のように設計と判定による試行錯誤を繰り返す必要がなく、いったん生成されたいずれのモデルも第二条件を満たすか否かの判断の対象として無駄が小さい。そして、第二条件を満たすモデルは、さらに学習をさせてからの精度の評価対象である。つまり上記の所定の組込み機器に実装可能であって精度の評価対象であるモデルの候補を、従来のように設計からの試行錯誤を繰り返す過程を経ることなく効率よく得ることができる。別の表現をすると、使用が予定されている組込み機器に最適なニューラルネットワークのモデルを得るまでのオーバーヘッドを抑えることができる。
【００３７】
また例えば、前記資源条件は前記組込み機器のメモリサイズの情報を含み、前記設定部は、前記メモリサイズに収まるニューラルネットワークのハイパーパラメータの上限を前記候補ハイパーパラメータの上限として算出し、前記上限以下のハイパーパラメータの少なくとも一部を前記候補ハイパーパラメータと決定してもよい。
【００３８】
これにより、使用される組込み装置と、ニューラルネットワークのその組込み装置への実装可否に影響の大きい要素とが予め考慮される。したがって、生成されるモデルは組込み装置に実装可能なものであるため、その後の第二条件に関する判断及び予測精度評価の処理の無駄な実行が抑えられる。
【００３９】
また例えば、前記第一条件は、前記ニューラルネットワークへの入力データのサイズ及び前記ニューラルネットワークからの出力データのサイズの少なくとも一方の情報を含み、前記設定部は、前記第一条件に含まれる前記入力データのサイズ及び前記出力データのサイズの少なくとも一方に基づいて前記候補ハイパーパラメータの上限を算出し、算出した前記上限以下のハイパーパラメータの少なくとも一部を前記１個以上の候補ハイパーパラメータであると決定してもよい。より具体的には、前記入力データのサイズは前記入力データの次元数であり、前記出力データのサイズは前記出力データの次元数であり、前記１個以上の候補ハイパーパラメータは、前記ニューラルネットワークの層数及びノード数をそれぞれ１個以上含んでもよい。また、前記第一条件は、さらに前記ニューラルネットワークは畳み込みニューラルネットワークであることを示す情報を含んでもよい。また、この場合、前記入力データは画像データであり、前記入力データのサイズは前記画像データの画素数であり、前記出力データのサイズは前記画像データが分類されるクラスの数であり、前記１個以上の候補ハイパーパラメータは、前記畳み込みニューラルネットワークの層数、カーネルのサイズ、前記カーネルの深度、特徴マップのサイズ、プーリング層のウインドウサイズ、パディング量、及びストライド量のうち少なくともひとつを含んでもよい。また、前記第一条件は、前記ニューラルネットワークのモデルによる推論の精度目標を含み、前記設定部は、前記精度目標を用いて前記候補ハイパーパラメータの下限を算出し、算出した前記下限以上のハイパーパラメータの少なくとも一部を前記１個以上の候補ハイパーパラメータであると決定してもよい。
【００４０】
これにより、最適なニューラルネットワークの候補として、解決を図る問題に応じて決まる条件を満たす構成のニューラルネットワークに効率よく絞り込むことができる。
【００４１】
また例えば、前記第二条件は、ニューラルネットワークのモデルを用いた推論処理の基準所要時間に関する時間条件を含み、前記生成部は、生成した前記モデルを用いた推論処理の所要時間を前記資源条件に基づいて算出し、前記判断部は、算出された前記所要時間と前記基準所要時間との比較によって、生成された前記モデルが前記第二条件を満たすか否かを判断してもよい。
【００４２】
これにより、規模的な制約は満たすモデルであっても、用途に応じて要求される性能を有さないモデルをあらかじめふるい落として、さらに学習をさせてから精度の評価をするモデルを絞り込むことができる。例えば、前記資源条件は前記組込み機器の演算処理装置の動作周波数の情報をさらに含み、前記生成部は、生成した前記モデルの推論処理に対応する部分の実行サイクル数を取得し、前記実行サイクル数及び前記動作周波数を用いて前記所要時間を算出してもよい。これにより、要求される処理時間で所定の処理ができないモデルが精度の評価対象から除外される。したがって、その後の予測精度評価の処理の無駄な実行が抑えられる。なお、より具体的には、前記生成部は、前記モデルの推論処理に対応する部分の前記演算処理装置に依存の言語による第一ソースコードを生成し、前記第一ソースコードをコンパイルして取得する中間コードを用いて前記実行サイクル数を取得してもよい。また例えば、前記ニューラルネットワーク構築装置は、さらに学習部及び出力部を備え、前記取得部は、さらに前記ニューラルネットワークの学習データを取得し、前記判断部は、前記生成部により生成されたモデルのうち、前記第二条件を満たすと判断したモデルを示すデータを出力し、前記学習部は、前記判断部が出力したデータが示すモデルの学習を、前記学習データを用いて実行し、前記出力部は、学習済みの前記モデルの少なくとも一部を出力してもよい。
【００４３】
このような学習によって重み等のパラメータが決定されることで、規模及び性能の制約を満たすニューラルネットワークのモデルの、所定の組込み機器に実装する候補が得られる。
【００４４】
また例えば、前記学習部はさらに、学習済みの前記モデルの予測精度評価を実行し、実行した前記予測精度評価に関するデータを生成してもよい。
【００４５】
これにより、実装されるモデルの候補のうち、精度の点で最適なものを示す情報が利用可能になる。なお、より具体的には、前記学習部はさらに、学習済みの前記モデルの推論処理に対応する部分の演算処理装置依存の言語による第二ソースコードを生成し、前記第二ソースコードを用いて前記予測精度評価を実行してもよい。
【００４６】
また例えば、前記予測精度評価に関するデータは、前記予測精度評価が実行済みのモデルを示す評価済みモデルリストのデータであり、前記生成部、前記判断部又は前記学習部は、前記評価済みモデルリストが示すモデルのいずれかと同一の組み合わせの複数のハイパーパラメータを用いて生成されたモデルを処理対象から除外してもよい。
【００４７】
これにより、同一の組み合わせのハイパーパラメータを用いたモデルの生成などの処理を避けて、ニューラルネットワークのモデルの候補をより効率的に取得することができる。
【００４８】
また例えば、前記出力部は、出力される前記モデルを、演算処理装置依存の言語によるソースコードの形式で出力してもよい。また例えば、前記出力部は、出力される前記モデルを、ハードウェア記述言語の形式で出力してもよい。
【００４９】
また例えば、前記判断部は、実行された前記予測精度評価の成績が所定の条件を満たす場合に、前記生成部によるニューラルネットワークのモデルの生成を停止させてもよい。より具体的には、前記取得部は、前記ニューラルネットワークのモデルの所定レベルの精度を示す精度目標を取得し、前記所定の条件は、生成順の連続する所定個数以上のモデルで前記予測精度評価の成績が前記精度目標を達成しない状況が発生したことであってもよい。
【００５０】
この技術に係るニューラルネットワーク構築装置では、規模制約を満たすハイパーパラメータのすべての組み合わせを用いて候補となるモデルが生成されてもよいが、ある程度の探索をした時点で、さらなる探索をしてもより適したモデルが得られる可能性が低いことが予想可能な場合がある。このような場合には、モデルのさらなる生成を止めることでより適したモデルを得るための費用対効果の低下を抑えることができる。
【００５１】
また本発明の一態様に係る情報処理装置は、演算処理部及び記憶部を備え、前記記憶部は上述のいずれかのニューラルネットワーク構築装置で生成されたモデルを記憶し、前記演算処理部は、前記記憶部から前記モデルを読み出して実行する。
【００５２】
このように得られた情報処理装置は、設計開発のコストが抑えられつつ、追及された精度を有する。
【００５３】
また例えば、本発明の一態様に係るニューラルネットワーク構築方法は、演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置における前記演算処理装置によって実行されるニューラルネットワーク構築方法であって、組込み機器が有する計算資源に関する資源情報及び前記組込み機器が有する処理性能に関する性能制約を取得し、ニューラルネットワークの規模制約を前記資源情報に基づいて設定し、前記規模制約に基づいてニューラルネットワークのモデルを生成し、生成された前記モデルについて、前記性能制約を満たすか否かを判断し、前記判断の結果に基づくデータを出力する。
【００５４】
これにより、条件を満たし得ない構成のものを除外して絞り込んだ候補から選択する形で最適なニューラルネットワークの効率的な取得が可能になる。
【００５５】
また例えば、本発明の一態様に係るプログラムは、演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置における前記演算処理装置によって実行されるプログラムであって、前記演算処理装置によって実行されることで前記ニューラルネットワーク構築装置に、組込み機器が有する計算資源に関する資源情報及び前記組込み機器が有する処理性能に関する性能制約を取得させ、ニューラルネットワークの規模制約を前記資源情報に基づいて設定させ、前記規模制約に基づいてニューラルネットワークのモデルを生成させ、生成された前記モデルについて、前記性能制約を満たすか否かを判断し、前記判断の結果に基づくデータを出力させる。
【００５６】
これにより、条件を満たし得ない構成のものを除外して絞り込んだ候補から選択する形で最適なニューラルネットワークの効率的な取得が可能になる。
【００５７】
なお、これらの全般的又は具体的な態様は、システム、集積回路、又はコンピュータで読み取り可能なＣＤ−ＲＯＭ等の記録媒体で実現されても良く、装置、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されてもよい。
【００５８】
以下、実施の形態に係るニューラルネットワーク構築装置について、図面を参照しながら説明する。本開示における実施の形態は本発明の一具体例を示すものであり、示される数値、構成要素、構成要素の配置及び接続形態、並びにステップ（工程）及びステップの順序等は一例であって本発明を限定するものではない。また、実施の形態における構成要素のうち、独立請求項に構成要素として含まれていないものについては、任意に付加可能な構成要素である。また、各図は模式図であり、必ずしも厳密に図示されたものではない。
【００５９】
（実施の形態）
［構成］
以下では複数の実施の形態を説明するが、まず、これらの実施の形態に共通するニューラルネットワーク構築装置の構成について説明する。
【００６０】
図２は、ニューラルネットワーク構築装置１０の機能構成の一例を示すブロック図である。
【００６１】
ニューラルネットワーク構築装置１０は、取得部１１と、設定部１２と、生成部１３と、判断部１４と、学習部１９と、出力部１５とを備える。
【００６２】
取得部１１は、ニューラルネットワーク構築装置１０に与えられる、条件情報及び生成されるニューラルネットワークのモデルの学習に用いられる学習データを取得する。
【００６３】
条件情報が示す条件とは、ひとつは構築するニューラルネットワークのハイパーパラメータの候補を決定するために用いられる条件（以下、第一条件ともいう）である。条件情報はまた、構築するニューラルネットワークのモデルが備えるべき性能に関する条件（以下、第二条件ともいう）も示す。第一条件及び第二条件については、各実施の形態の詳細な説明の中であわせて述べる。
【００６４】
学習データは、ニューラルネットワークのモデルの学習に用いられるデータである。
【００６５】
取得部１１は、条件情報及び学習データを、例えばユーザの入力として受け取るか、又はユーザの操作若しくは所定のプログラムの指示に従ってアクセスする場所から読み出して取得するか、又はこのように取得した情報から算出する等の処理によって取得する。
【００６６】
設定部１２は、第一条件に基づいて、構築するニューラルネットワークのハイパーパラメータの候補である候補ハイパーパラメータを決定する。この条件については例を用いて後述する。
【００６７】
生成部１３は、設定部１２が決定した候補ハイパーパラメータを用いて、ニューラルネットワークのモデルを生成する。
【００６８】
判断部１４は、生成部１３が生成したニューラルネットワークのモデルについて、第二条件を満たすか否か判断し、この判断の結果に基づくデータを出力する。例えば判断部１４は、第二条件を満たすと判断したモデルを示すリストデータを出力する。
【００６９】
学習部１９は、生成部１３によって生成されたモデルの学習を、学習データを用いて実行する。学習の対象であるモデルは、例えば判断部１４が出力したリストデータに示されるものから選択される。また、学習部１９は、学習済みのモデル、つまり推論モデルの予測精度評価をし、その予測精度評価に関するデータを出力する。例えば学習部１９は、各推論モデルの予測精度評価の成績を示すデータを出力する。
【００７０】
出力部１５は、推論モデルの少なくとも一部を出力する。例えば学習部１９が出力したデータが示す上記の予測精度評価の成績を参照し、そのうち所定の条件を満たすもの、例えば成績が最もよい推論モデルのデータを出力する。ユーザは、このように出力部１５から出力される推論モデルを、ニューラルネットワーク構築装置１０に与えられた条件情報が示す各条件を満たす推論モデルとして得ることができる。
【００７１】
これらの機能的な構成要素を含むニューラルネットワーク構築装置１０は、例えばパーソナルコンピュータ、サーバコンピュータ又はクラウドコンピューティング（以下、これらを区別せずにコンピュータ１ともいう）で実現される。図３は、ニューラルネットワーク構築装置１０を実現するコンピュータ１のハードウェア構成の例を説明するためのブロック図である。
【００７２】
コンピュータ１は、入力装置２、演算処理装置３、出力装置４、記憶装置５及び通信装置６を備え、これらはバス７で相互に通信可能に接続されている。
【００７３】
入力装置２は、例えばキーボード、マウス等のポインティングデバイス、タッチスクリーンであり、ユーザによる指示又はデータの入力を受け付ける。
【００７４】
演算処理装置３は、例えばＣＰＵ（Central Processing Unit）、ＧＰＵ（Graphics Processing Unit）、又はＤＳＰ（Digital Signal Processor）等の各種のプロセッサであり、記憶装置５に記憶された所定のプログラムを読み出して実行して、情報を処理し、また、ハードウェア構成要素である各装置を制御して上述の各機能構成要素を実現する。
【００７５】
出力装置４は、例えばディスプレイ等の表示器であり、画面上に表示する文字及び図形でユーザにデータの入力を促したり、演算処理装置３による処理の進行状況又は処理の結果を提示したりする。
【００７６】
記憶装置５は、ＲＡＭ及びＲＯＭ等の記憶媒体であり、上記のプログラム、このプログラムの実行過程で参照されるデータ、並びに生成される中間データ及び最終データを一時的又は非一時的に記憶する。
【００７７】
通信装置６は、例えばコンピュータ１がクラウドコンピューティングによって実現されている場合に、複数のコンピュータ間のデータのやり取りのための入出力ポートを含む装置で、例えばネットワークインタフェースカードが含まれる。
【００７８】
このようなハードウェア構成を有するニューラルネットワーク構築装置１０では、所定のソフトウェアを実行する演算処理装置３によって情報が処理されたり、各装置が制御されたりすることで上述の個々の機能的な構成要素が実現される。取得部１１が取得した情報（データ）を用いて、設定部１２、生成部１３及び判断部１４及び学習部１９による一連の処理が行われて、出力部１５から、所望の用途に適したニューラルネットワークの学習済みモデル等が出力される。このニューラルネットワークの学習済みモデルの出力まで（以下ではニューラルネットワークの構築ともいう）のための一連の処理の手順については、各実施の形態の詳細な説明の中で述べる。
【００７９】
次に、上記の構成の説明でも触れた条件情報（第一条件及び第二条件）をニューラルネットワーク構築装置１０において用いることで、いかにして最適なニューラルネットワークのモデルが取得されるかについて説明をする。
【００８０】
［ニューラルネットワークの構築における条件］
従来、ある用途のために最適なニューラルネットワークを得るには、その候補となるニューラルネットワークの各々に対して要求される条件を満たすか否かの判定が行われる。したがって、最適なニューラルネットワークが得られるまでの試行錯誤の繰り返し回数は膨大であり、長い時間を要する。
【００８１】
本発明でニューラルネットワークの構築に用いられる条件は、構築されるニューラルネットワークに課される制約とも言い得る。
【００８２】
第一条件は、ニューラルネットワークの構成（規模）に関する制約である。例えば組込みデバイスに搭載するニューラルネットワークは、限られたリソース及びハードウェアで実行されるものであり、その実行環境はニューラルネットワークを構築する環境に比べてはるかに厳しい。ところが従来のニューラルネットワーク構築方法では、そのような組込みデバイスでの実行には適さない規模のニューラルネットワークも生成され、上記のような判定の対象に含まれている。
【００８３】
そこで本発明では、ニューラルネットワークの実行環境におけるＣＰＵの周波数、メモリ(ＲＯＭ／ＲＡＭ)のサイズといったハードウェアに関する情報からニューラルネットワークの規模に関する制約としての上限を予め算出して設定してからニューラルネットワークを生成する。これにより、この上限を超えるニューラルネットワークの生成及び判定に要する時間を省くことができる。また、ニューラルネットワークの規模に関する別の制約として、構築するニューラルネットワークを用いて解決しようとする問題に最低限必要な計算量、つまり下限を算出することができる。この下限を設定してからニューラルネットワークを生成することで、この下限に満たないニューラルネットワークの生成及び判定に要する時間を省くことができる。
【００８４】
なお、上記に挙げた組込みデバイスのハードウェアに係る情報及び問題に応じた必要計算量は、ニューラルネットワークの規模に関する制約の算出に用いることができる物の例であり、ニューラルネットワークの規模に関する制約は、その他の指標から算出されてもよい。
【００８５】
また、本発明においてニューラルネットワークの構築に用いられる第二条件は、ニューラルネットワークの性能に関する制約である。この制約は、要求される精度又は処理時間等について設定される。この制約に基づく情報としては、例えばニューラルネットワークの実行環境（ＣＰＵ周波数、メモリサイズ等のハードウェア情報）についての情報が用いられる。例えば、この情報を用いることで、生成したニューラルネットワークが問題の処理に要する処理時間を算出し、その処理時間が制約を満たすニューラルネットワークのみを学習データを用いて学習させる。つまり、処理時間の長いニューラルネットワークの学習に要する時間を省くことができる。
【００８６】
このように、生成するニューラルネットワークの規模に関する制約である第一条件を満たすニューラルネットワークを生成し、生成したニューラルネットワークの性能に関する制約である第二条件を満たすニューラルネットワークのみを学習処理の対象とすることで最適なニューラルネットワークを得るまでに要する時間の削減という効果が得られる。
【００８７】
従来の手法と、上述した制約を用いる本発明の手法との、最適なニューラルネットワークを得るまでの違いについて、図を用いて説明する。図４は、ニューラルネットワークの構築において用いられるハイパーパラメータの分布の概念を説明するための図である。
【００８８】
ニューラルネットワークのモデルを生成するには、ニューロンの個数、層数等のハイパーパラメータを設定する必要がある。生成されるニューラルネットワークの構成は、これらのハイパーパラメータの値で決まり、実行に必要なリソース又は問題の処理に要する時間は、この構成に大きく影響される。制約を考慮しない従来の手法では、図４中に十字で示すハイパーパラメータの値は無数にある。なお、図示の便宜上、図４ではこの場合のハイパーパラメータの存在し得る範囲を矩形で示しているが、実際の範囲は無限大である。つまり、無数にあるハイパーパラメータを対象に総当たりで最適な構成のニューラルネットワークを探索するため、必然的により多くの時間を要する。
【００８９】
本発明では、例えば規模に関する制約を上限とし、問題に応じて決まる制約を下限として、生成するハイパーパラメータの範囲を限定する。つまり図４では、網掛けの範囲にある限られたハイパーパラメータ（後述の候補ハイパーパラメータ）でニューラルネットワークを生成する。また、性能に関する制約を満たさないニューラルネットワークは学習の対象から除外する。これにより、最適な構成のニューラルネットワークを得るまでに要する時間を削減することができる。
【００９０】
なお、説明の便宜上、上記ではハイパーパラメータは１種類であるように説明しているが、実際にはニューラルネットワークに含まれるニューロンの数と層の数それぞれに関する２種類のように複数であってもよく、上記及び以下の実施の形態の説明での候補ハイパーパラメータ及びハイパーパラメータについては、複数種類のハイパーパラメータの組み合わせと適宜読み替えても理解されたい。
【００９１】
ここで、上記の構成を有するニューラルネットワーク構築装置１０で実行されるニューラルネットワーク構築の処理手順の例を図５に示すフローチャートを用いて説明する。
【００９２】
まず、取得部１１が、ニューラルネットワーク構築に用いる条件情報（第一条件、第二条件）及び学習データを取得する（Ｓ５０１）。この条件情報を取得部１１は、例えば構築したいニューラルネットワークの用途等に基づいてユーザが用意し、ニューラルネットワーク構築装置１０に入力した情報を用いて条件情報を算出することで取得する。または、この算出までをユーザが行ってからニューラルネットワーク構築装置１０に入力された情報を、取得部１１が条件情報として取得してもよい。学習データも、構築したいニューラルネットワークの用途等に基づいてユーザによって用意され、ニューラルネットワーク構築装置１０に入力されるか、又はニューラルネットワーク構築装置１０がアクセス可能なサーバ等に置かれる。
【００９３】
次に、設定部１２が、条件情報を用いて候補ハイパーパラメータを決定する（Ｓ５０２）。この候補ハイパーパラメータの決定は、例えばその値が取り得る範囲を設定することで行われてもよい。
【００９４】
次に、生成部１３が、ステップＳ５０２で決定された候補ハイパーパラメータのリスト（以下、略して候補リストともいう）を生成する（Ｓ５０３）。
【００９５】
次に生成部１３は、上記の候補リストから最適な候補ハイパーパラメータを探索し、探索した候補ハイパーパラメータを用いてニューラルネットワークのモデルを生成する（Ｓ５０４）。この探索には、例えばベイズ最適化を利用する手法が用いられる。この手法では、ニューラルネットワークのモデルの予測精度の分布が正規分布に従っていると仮定され、この予測精度の分布を基に計算する事後分布を用いてハイパーパラメータを候補リストから探索される。
【００９６】
図６Ａ、図６Ｂ及び図６Ｃは、ベイズ最適化を用いたハイパーパラメータのこの探索手法の概要を説明するための図である。各図に示すグラフは、ハイパーパラメータの値と、このハイパーパラメータを用いて生成されるモデルの仮定に基づく予測精度との対応を表す。候補リストに含まれる各ハイパーパラメータは、このグラフエリアの横軸上のどこかに位置する。グラフ上の太い実線の曲線は、各ハイパーパラメータに対してベイズ最適化で得られる予測精度の期待値を示す。また、破線の曲線は、各ハイパーパラメータに対して評価点として得られるべき理想値を示す。そして各黒丸及び白丸は、１個のハイパーパラメータに対して、後述する学習部１９が実行した予測精度の評価の評価点を示す。網掛けの領域については後述する。図６Ａ、図６Ｂ及び図６Ｃは、この手法における時系列順の３段階をそれぞれ示す。
【００９７】
この探索における初期の段階では評価点がないか又はわずかであるため、未評価のニューラルネットワークのモデル、つまり未評価のハイパーパラメータが多い。したがって、予測精度の期待値の不確かさは大きい。各図の網掛けの領域は、事後分布として得られる、各ハイパーパラメータに対して一定以上の可能性のある予測精度の範囲を示す。図６Ａでは、まだ初期の段階であるため、この網掛けの領域は比較的大きい。
【００９８】
次の段階では、この不確かさが大きいハイパーパラメータを選択してモデルが生成され、その予測精度が評価される。新たに予測精度の得られた評価点（白丸）から予測精度の分布を正規分布に基づいて更新する。そしてさらに不確かさを更新して、更新後に不確かさが大きいハイパーパラメータでモデルを生成して評価する。この処理が繰り返されることで、ハイパーパラメータ全体に対する不確かさが小さくなる。このことは、図６Ａ、図６Ｂ及び図６Ｃの網掛けの領域の大きさを比較することからもわかる。このように、不確かさを小さくしながら、より予測精度の高いハイパーパラメータを探索する。なお、探索が進んで不確かさがある程度小さくなると、評価済みの予測精度の高いハイパーパラメータ近辺で集中的に探索される。
【００９９】
なお、このような手法において、条件情報が示す制約に応じた適正度を加味した探索手法が用いられてもよい。
【０１００】
次は判断部１４が、候補リストにあるすべての候補ハイパーパラメータでひととおりニューラルネットワークの探索を完了しているか確認する（Ｓ５０５）。完了していない場合はステップＳ５０６に進み、完了している場合は後述するステップＳ５１０に移る。
【０１０１】
ステップＳ５０５でＮｏの場合、判断部１４は、ステップＳ５０４で生成されたモデルが予測精度を評価済みのモデルであったか否か確認する（Ｓ５０６）。この確認は、後述する学習部１９が生成する評価済みモデルリストに基づいて行われる。評価済みでない場合はステップＳ５０７に進み、完了している場合は後述するステップＳ５１０に移る。
【０１０２】
次は学習部１９が、ステップＳ５０１で取得された学習データを用いて、未評価のモデルの学習を実行する（Ｓ５０７）。
【０１０３】
次に学習部１９は、学習済みのモデル（推論モデル）の予測精度を評価し（Ｓ５０８）、評価済みの推論モデルを評価済みモデルリストに追加する（Ｓ５０９）。ステップＳ５０６において判断部１４が用いたのは、このように学習部１９による学習が実行されて予測精度の評価まで実行されたモデルを示す評価済みモデルリストである。また、評価済みの推論モデルは、ニューラルネットワーク構築装置１０から出力される推論モデルとして記憶装置５に保存される。
【０１０４】
最後に出力部１５が、ステップＳ５０９で記憶装置５に保存された評価済みの推論モデルを出力する（Ｓ５１０）。ただし、出力の対象はこれに限定されず、最も予測精度が高い推論モデル及び第二条件を満たす全ての推論モデルであってもよい。また例えば、第二条件を満たす推論モデルがなかった場合に、出力部１５は警告を出力してもよい。なお、ここでの出力とは、例えば表示器などの出力装置４での表示、記憶装置５又はニューラルネットワーク構築装置１０の外部の所定の保存場所への書き込みを指す。
【０１０５】
ここまでで、ニューラルネットワーク構築装置１０で実行されるニューラルネットワーク構築方法の処理は終了する。なお、上述の処理手順は一例であり、種々の変形が可能である。
【０１０６】
例えば、ステップＳ５０５でＹＥＳの場合又はステップＳ５０６でＹＥＳの場合にステップＳ５１０の出力を経て処理が終了しているが、終了に至る手順はこれに限定されない。
【０１０７】
例えば、ステップＳ５０６で、精度の評価の成績が所定の条件を満たすか否かを判断し、この判断の結果に応じてステップＳ５１０の出力がなされてもよい。所定の条件の例としては、生成順の連続する所定の個数以上のモデルの予測精度評価の成績が、精度目標に達しない状況が発生したこと、又は生成順の連続する所定の個数以上のモデルの予測精度評価の成績の変化に、所定の大きさ以上の上昇が見られない状況が発生したことなどであってもよい。これは、ある程度の探索をした時点で、さらなる探索をしてもより適したモデルが得られる可能性が低いことが予想可能な場合に対応するものである。このような場合には、モデルのさらなる生成、探索を止めることで、所望の用途に適したモデルを得るための時間の短縮、ひいては費用対効果の低下を抑えることができる。さらに別の例としては、ある精度目標を満たすモデルの個数が所定の値に達することであってもよい。
【０１０８】
また、ステップＳ５０５の判断においても、全てのハイパーパラメータでの探索が完了しているか否かではなく、所定の個数又は割合以上での探索が完了しているかに応じて判断がなされてもよい。または、ベイズ最適化を用いた探索がある程度進んで不確かさがある程度小さくなっている場合に、評価済みの予測精度の低いハイパーパラメータの近辺は、探索の対象から除外した上でステップＳ５０５の判断がなされてもよい。
【０１０９】
また、ステップＳ５０９又はＳ５１０では、予測精度評価の成績も保存又は出力の対象であってもよい。この成績は、例えば評価済みモデルリストの一部、又は他のリストにおいて保存されてもよい。または、評価済みモデルリスト又は当該他のリストに、各推論モデルの精度が目標に達しているか否か、又は各推論モデルの達成率に相当する情報がさらに含まれてもよい。
【０１１０】
また、ステップＳ５０６での評価済みモデルを用いた確認に代えて、候補リスト又は個別のリストによる、抽出済みのハイパーパラメータ（の組み合わせ）であるか否かに基づいて確認されてもよい。
【０１１１】
また、制約等のより詳細な例も以下の各実施の形態の説明の中で挙げる。
【０１１２】
［実施の形態１］
ここまでに、ニューラルネットワークの構築における条件（制約）について幾つかの種類の例を挙げた。以下に説明する各実施の形態では、これらの種類の制約について具体例を用いて説明する。実施の形態１としては、ニューラルネットワークを用いて解決しようとする問題に応じて決定される制約について説明する。
【０１１３】
＜問題に応じて決定される上限の例＞
図７に構成例を示すような全結合ニューラルネットワークを用いて分類又は回帰等の推論を行う場合、モデルは入力データを縮約するように設計される。したがって、入力次元数と出力次元数とに基づいて中間層の層数及びノード数といったハイパーパラメータの上限を決定することができる。すなわち、各中間層のノード数の上限は、前層のノード数から１引いた数である。また、中間層数の上限は、入力層より１少ないノードを含む中間層からノード数を１つずつ減らした中間層を並べ、出力層より１多いノードを含む中間層まで配置可能な数である。
【０１１４】
また、畳み込みニューラルネットワークを用いて分類又は回帰などの推論を行う場合、図８の構成例に示すように、モデルは、畳み込み後又はプーリング後の特徴画像（特徴マップとも呼ばれる）が、各畳み込み層に入力されるサイズ（図中「３０×３０」等の数字）よりも小さくなるよう設計される。したがって、中間層の数の上限は、畳み込み可能な特徴画像のサイズを維持できる範囲で決まる。
【０１１５】
＜問題に応じて決定される下限の例＞
畳み込みニューラルネットワークを用いて画像の復元（ノイズ除去など）を行う場合に、ニューラルネットワークによって遮断したい成分（又は通過させたい成分）の周波数特性が与えられることで、生成するニューラルネットワークの中間層数又は各層のカーネルサイズといったハイパーパラメータの下限を決定することができる。この下限の設定について具体的な例を用いて説明する。
【０１１６】
「遮断周波数ｆ以上のノイズをｇ％以上遮断する（以降、条件Ｘ）」ノイズ除去フィルタをニューラルネットワークとして生成する場合、下記の手順でハイパーパラメータの下限を決定する。
【０１１７】
（手順１）条件Ｘを満足する単一のローパスフィルタを求める。
【０１１８】
ここで、ローパスフィルタとは、ある信号に対して遮断周波数より低い周波数の成分はほとんど減衰させず通過させ、遮断周波数より高い周波数の成分を遮断するフィルタを意図している。純粋なローパスフィルタはノイズだけを選別して遮断することはできないが、所望のノイズの遮断性能の上限を見積もる基準として用いるためにこの手順を実行する。
【０１１９】
ローパスフィルタの周波数特性｜Ｏ／Ｉ｜は、下記の式１に示すように、フィルタのカーネルサイズｎ、周波数ω、及びカーネル係数ｋｉ（０≦ｉ≦ｎ−１）により求められる。
【０１２０】
【数１】
2019216404.tif 000003
【０１２１】
ここで、カーネル係数ｋｉをガウシアン分布（いわゆるガウシアンフィルタ）と仮定すると、カーネルサイズｎ＝３の場合、周波数特性｜Ｏ／Ｉ｜は、ローパスフィルタの周波数特性を示す図９のグラフにおいて実線の曲線で示すように、ナイキスト周波数ｆＮで振幅が０となるｃｏｓカーブになる（つまり、ナイキスト周波数の成分は１００％遮断される）。０．５ｆＮにおいて５０％遮断する周波数特性を持つこのローパスフィルタは、ｆ＝０．５ｆＮ、ｇ＝４０％である場合の条件Ｘは満たすが、ｆ＝０．５ｆＮ、ｇ＝６０％である場合の条件Ｘを満足しない。また、カーネルサイズｎ＝５の場合のローパスフィルタの周波数特性｜Ｏ／Ｉ｜は、図９のグラフにおいて破線の曲線で示されるとおりである。０．５ｆＮにおいて７５％遮断するこのローパスフィルタは、ｆ＝０．５ｆＮ、ｇ＝６０％であっても条件Ｘを満足する。
【０１２２】
このように、カーネル係数の分布を仮定することで、条件Ｘを満たす単一のローパスフィルタのカーネルサイズｎの下限を決定することができる。
【０１２３】
（手順２）単一のローパスフィルタを畳み込みニューラルネットワークに分解する。
【０１２４】
手順１で求めた単一のローパスフィルタを、複数フィルタの直列接続で構成することを考える。例えば、式２に示すように、カーネルサイズｎ＝５のガウシアンフィルタは、カーネルサイズｎ＝３のガウシアンフィルタを２段接続することで構成可能である。
【０１２５】
【数２】
2019216404.tif 000004
【０１２６】
同様に、以下の式３に示すように、カーネルサイズｎのフィルタは、カーネルサイズｎ′のフィルタをｍ段接続することで構成可能である。
【０１２７】
【数３】
2019216404.tif 000005
【０１２８】
ここで、ｍは畳み込みニューラルネットワークの中間層（畳み込み層）の層数に相当し、カーネルサイズｎ′の増減に追従して変化させることで、カーネルサイズｎのフィルタ相当の周波数特性を実現する。
【０１２９】
このように、手順１で条件Ｘから単一ローパスフィルタのカーネルサイズｎの下限を決定し、手順２でさらにこのフィルタカーネルサイズｎ′と中間層数ｍとの組合せを決定することで、構築する畳み込みニューラルネットワークのハイパーパラメータの下限を決定することができる。
【０１３０】
なお、純粋なローパスフィルタとして用いられる畳み込みニューラルネットワークであれば、ｎ＝５のカーネルが一段のものよりも、ｎ＝３のカーネルを２段接続したものの方が、性能を維持しつつ計算量を抑えることができる。ただし、最終的に構築するのはノイズ除去フィルタとして用いられる畳み込みニューラルネットワークであり、ノイズ除去性能の点では必ずしも後者が優れるとは言えない。このように決定されたハイパーパラメータは、最終的に構築する畳み込みニューラルネットワークのハイパーパラメータの候補である候補ハイパーパラメータであり、候補ハイパーパラメータを用いて生成した各モデルを評価して畳み込みニューラルネットワークの最適なモデルが取得される。
【０１３１】
以上、ニューラルネットワークを用いて解決しようとする問題に応じて、ハイパーパラメータの上限又は下限を決定する手法について、具体例を用いて説明した。次に、ニューラルネットワーク構築装置１０によるこの手法を実現するための処理手順について説明する。この処理手順は、上述の図５のフローチャートを再び参照しながら、本実施の形態に即してより具体的に説明する。なお、上述の図５の説明と共通の部分については、簡単に説明することがある。
【０１３２】
まず、取得部１１が、ニューラルネットワーク構築に用いる条件情報及び学習データを取得する（Ｓ５０１）。条件情報は、例えば畳み込みニューラルネットワークを用いて解決する問題に関する情報であり、上記の手法の例であれば、ハイパーパラメータの上限の設定に用いられた入力データの次元数及び出力データの次元数、又は入力画像のサイズ、ハイパーパラメータの下限の設定に用いられた、遮断周波数ｆ及び最低遮断率ｇを第一条件として用い得る。取得部１１は、このような情報から、構築するニューラルネットワークの候補ハイパーパラメータの上限若しくは下限又は両方を算出して第一条件を取得する。
【０１３３】
次に、設定部１２が、候補ハイパーパラメータを決定する（Ｓ５０２）。ここで決定される候補ハイパーパラメータは、例えば取得部１１が取得した上記の下限以上の値を取るハイパーパラメータ、上限以下の値を取るハイパーパラメータ、又は下限以上であって上限以下の値を取るハイパーパラメータである。
【０１３４】
次は、生成部１３が候補リストを生成する（Ｓ５０３）。
【０１３５】
次に生成部１３は、上記の候補リストから最適な候補ハイパーパラメータを探索し、探索した候補ハイパーパラメータを用いてニューラルネットワークのモデルを生成する（Ｓ５０４）。候補リストに含まれる候補ハイパーパラメータが上限以下の値を取るハイパーパラメータである場合、例えば上述のベイズ最適化を用いた探索手法が利用されてもよい。候補リストに含まれる候補ハイパーパラメータが下限以上の値を取るハイパーパラメータである場合、例えば下限のハイパーパラメータで決まる構成を有するニューラルネットワークをベースとして、より高い性能を確保するためにノード数又は層数等を増やした構成のニューラルネットワークを生成して最適点を探索する。例えば、遺伝的アルゴリズムを用いてニューラルネットワークの構成を更新することで最適点が探索されてもよい。
【０１３６】
ステップＳ５０５以降は、上記の説明と同じように処理が進む。
【０１３７】
［実施の形態２］
実施の形態２として、ニューラルネットワークを主に組込みデバイスへの実装することを考慮してＣＰＵやメモリ（ＲＯＭ／ＲＡＭ）の情報が条件情報として入力される場合について説明する。
【０１３８】
図１０は、ニューラルネットワーク構築装置１０による本実施の形態における処理手順のフローチャートである。以下、上述の図５のフローチャートに示す処理手順のステップに相当するものについては、共通の参照符号を用いて示し、簡単に説明することがある。
【０１３９】
まず、取得部１１が、ニューラルネットワーク構築に用いる条件情報及び学習データを取得する（Ｓ５０１）。
【０１４０】
条件情報は、組込み機器のＣＰＵ周波数やメモリ(ＲＯＭ、ＲＡＭ)サイズ、メモリ転送速度等の資源情報を含む。資源情報に含まれる情報はこれらに限定されず、組込み機器に係る他の情報が含まれてもよい。この資源情報は、本実施の形態における第一条件の例である。また、条件情報には、組込み機器でニューラルネットワークを実行する際の性能に関する条件（本実施の形態では、性能制約ともいう）を含む。性能制約の例としては目標とする処理時間が挙げられ、組込み機器で実行される処理に要求される各種の性能に係る情報であってよい。この性能制約は、本実施の形態における第二条件の例である。このような性能制約は、例えばユーザが、組込み機器又は当該組込み機器が組み込まれる製品の仕様等に基づいて用意してニューラルネットワーク構築装置１０に入力したものが用いられる。
【０１４１】
次に、設定部１２が、資源情報に基づいて候補ハイパーパラメータを決定する。（Ｓ５０２）。例えば、設定部１２は、全結合型ニューラルネットワークの候補ハイパーパラメータの値が取り得る範囲を、既知のＲＯＭサイズから下記の式４を用いて算出することができる。
【０１４２】
【数４】
2019216404.tif 000006
【０１４３】
式４中、ＳＲＯＭはＲＯＭサイズ、ＮＬｉは各層のニューロン数、ＳＤＡＴＡは処理対象のデータ型のサイズを示す。また、ＲＯＭサイズはＳＤＡＴＡによって変動するため、ＳＤＡＴＡで除することで、各データ型に対する組込み可能なニューラルネットワークの結合荷重の最大個数を算出することができる。
【０１４４】
次に、生成部１３が、ステップＳ５０２で決定された候補ハイパーパラメータを含む候補リストを生成する（Ｓ５０３）。
【０１４５】
次に生成部１３は、上記の組込み機器に適したニューラルネットワークの構成を決めるハイパーパラメータを候補リストから探索し、探索した候補ハイパーパラメータに基づくニューラルネットワークのモデルを生成する（Ｓ５０４）。この探索には、例えば上述のベイズ最適化を利用する手法が用いられる。
【０１４６】
次に生成部１３は、ニューラルネットワークの推論処理にあたる部分を変換して、一時的に利用するソースコードを生成する（Ｓ５１５）。ニューラルネットワークのモデルは、この手前の段階までは例えば高水準言語であるＰｙｔｈｏｎで構築されているが、このステップで演算処理装置への依存性の高い言語、例えばＣ言語のソースコードに変換される。このような変換を行う目的は、次のステップで処理時間の算出をする準備として、組込み機器のプログラムとして広く用いられている言語、ここではＣ言語にすることで実際の実行環境に近づけて、より正確な所要時間を得るためである。
【０１４７】
次に生成部１３は、ステップＳ５１５での変換によって得たソースコードを用いて推論処理の所要時間を算出する（Ｓ５１６）。より具体的には、生成部１３は、このソースコードをコンパイルして生成される中間コードを用いて推論処理に必要な実行サイクル数を取得する。そして、生成部１３は、ステップＳ５０１で取得された資源情報に含まれる演算処理装置の動作周波数等の処理時間に影響する情報をさらに用いて、当該実行サイクル数の処理の所要時間を算出する。
【０１４８】
次は、判断部１４が、ステップＳ５１６で算出された所要時間が、ステップＳ５０１で取得された条件情報が含む第二条件、つまり性能制約である、目標とする処理時間を満たすか否か判断する（Ｓ５１７）。性能制約が満たされない場合（Ｓ５１７でＮＯ）、当該モデルは破棄される（Ｓ５１８）。モデルの破棄後は、候補リストにある全ての候補ハイパーパラメータでひととおりニューラルネットワークの探索を完了しているか確認する（Ｓ５０５）。完了していない場合、処理手順はステップＳ５０４に戻り、完了している場合は後述するステップＳ５１０に移る。
【０１４９】
また、性能制約が満たされる場合（Ｓ５１７でＹＥＳ）、当該モデルが予測精度を評価済みのモデルであったか否か確認する（Ｓ５０６）。この確認は、後述する学習部１９が生成する評価済みモデルリストに基づいて行われる。評価済みでない場合は、次のステップＳ５０７に移り、評価済みの場合は後述するステップＳ５１０に移る。
【０１５０】
次は、学習部１９によって、ステップＳ５０１で取得された学習データを用いてモデルの学習が実行される（Ｓ５０７）。
【０１５１】
次に学習部１９は、学習済みのモデル（推論モデル）を変換してソースコードを生成する（Ｓ５２５）。ここでソースコードに変換する目的は、基本的にはステップＳ５１５と同じく実際の実行環境に近づけることである。したがって、例えばＰｙｔｈｏｎで構築されているモデルがＣ言語のソースコードに変換される。ただし、ここでは処理時間の評価のためではなく、推論モデルの予測精度を実際の組込み機器に近い環境で確認するためである。また、ここで変換して生成されたＣ言語等の、演算処理装置への依存性の高い言語によるソースコードは、ニューラルネットワーク構築装置１０から出力される推論モデルとして記憶装置５に保存される。
【０１５２】
次に学習部１９は、ステップＳ５２５での変換によって得たソースコードを用いて推論モデルの予測精度を評価する（Ｓ５０８）。評価を終えると、学習部１９は、この推論モデルを評価済みモデルとして評価済みモデルリストに追加する（Ｓ５０９）。ステップＳ５０６において判断部１４が用いたのは、このように学習部１９による学習が実行されて予測精度の評価まで実行されたモデルを示す評価済みモデルリストである。
【０１５３】
ひととおりのモデルの評価までが終わると、記憶装置５に保存されている推論モデルのソースコードを出力部１５が出力する。ただし、出力の対象はこれに限定されず、上述のように、保存されている複数のモデルのうち、所定の条件を満たすものであってもよいし、各推論モデルの予測精度の成績が出力されてもよい。また、第二条件である性能制約を満たす推論モデルがなかった場合に、出力部１５は警告を出力してもよい。
【０１５４】
ここまでで、ニューラルネットワーク構築装置１０で実行される、本実施の形態におけるニューラルネットワーク構築方法の処理は終了する。
【０１５５】
なお、上述の処理手順は一例であり、種々の変形が可能である。例えば図５の処理手順についての各変形例は、本実施の形態の処理手順にも適用可能である。
【０１５６】
［実施の形態３］
実施の形態３も、実施の形態２と同様にニューラルネットワークを主に組込みデバイスへの実装する場合であり、実施の形態２との差異点を中心に説明する。
【０１５７】
本実施の形態では、ニューラルネットワークの探索におけるハイパーパラメータの抽出において、当初からのベイズ最適化の利用に代えて、いったんベイズ最適化を利用しない手法で複数のハイパーパラメータに対する予測精度を取得し、この予測精度を事前分布として用いるベイズ最適化を実行する。
【０１５８】
図１１及び図１２は、ニューラルネットワーク構築装置１０による本実施の形態における処理手順のフローチャートである。以下、上述の図５又は図１０のフローチャートに示す処理手順のステップに相当するものについては、共通の参照符号を用いて示し、簡単に説明することがある。
【０１５９】
取得部１１による条件情報及び学習データの取得（Ｓ５０１）、設定部１２による候補ハイパーパラメータの決定（Ｓ５０２）及び生成部１３による候補リストの生成（Ｓ５０３）は、実施の形態２と共通である。
【０１６０】
その次に生成部１３は、候補リストの候補ハイパーパラメータから、例えばランダムに抽出し、抽出した候補ハイパーパラメータに基づくニューラルネットワークのモデルを生成する（Ｓ６０４）。このように、抽出した候補ハイパーパラメータを用いてニューラルネットワークのモデルを生成する理由は、実施の形態２のように探索した候補ハイパーパラメータを用いて生成された複数のモデルの予測精度は、ほぼ同じであってしかも必ずしも高いとは言えない結果になる可能性があるためである。そこで、実施の形態２で用いられる手法と、本実施の形態で用いられる手法とを適宜使い分けて選択した候補ハイパーパラメータに基づいてニューラルネットワークのモデルを生成することで、精度の異なるモデルをより効率よく生成することを目指している。
【０１６１】
生成部１３による、続くソースコードの生成（Ｓ５１５）、推論処理の所要時間の算出（Ｓ５１６）は、実施の形態２と共通である。
【０１６２】
続く判断部１４による性能制約に関する判断（Ｓ５１７）は実施の形態２と共通であるが、その結果に応じて進む次の手順が一部異なる。性能制約が満たされない場合の当該モデルの破棄（Ｓ５１７でＮＯ、Ｓ５１８）は、実施の形態２と共通である。しかし、性能制約が満たされる場合（Ｓ５１７でＹＥＳ）、評価済みモデルであるか否かの確認（実施の形態２のステップＳ５０６）は実行されず、学習部１９による処理に移る。
【０１６３】
続く学習部１９によるモデルの学習（Ｓ５０７）、ソースコードの生成（Ｓ５２５）、の予測精度の評価（Ｓ５０８）及び評価済みモデルリストへの追加（Ｓ５０９）は、実施の形態２と共通である。
【０１６４】
その次に、実施の形態２では、次の候補ハイパーパラメータの探索及びモデルの生成（Ｓ５０４）に移るが、本実施の形態では、判断部１４によって、予測精度を評価済みの推論モデルの個数が所定個数に達したか否か判断される（Ｓ６０６）。
【０１６５】
この所定個数は、後述のベイズ最適化によるハイパーパラメータ探索の手順で用いられる事前分布の要素の個数でもあり、種々の決定方法が用いられ得る。例えば判断部１４が、候補ハイパーパラメータの個数に応じて算出することで決定されてもよい。より具体的には、候補ハイパーパラメータの個数が多いほど大きな個数となるよう、動的に決定されてもよい。または、所定個数はユーザによって決定され、ユーザが所定個数としてニューラルネットワーク構築装置１０に入力した値が、取得部１１によって取得されて、判断部１４によって用いられてもよい。
【０１６６】
評価済みの推論モデルの個数が達していない場合（Ｓ６０６でＮＯ）、処理手順はステップＳ６０４に戻り、生成部１３が、次の候補ハイパーパラメータを抽出してニューラルネットワークのモデルを生成する。達している場合（Ｓ６０６でＹＥＳ）、生成部１３による次の処理（Ｓ１５０４）に移る。
【０１６７】
一方で、モデルの破棄（Ｓ５１８）に続いて、判断部１４は、候補リストにある全ての候補ハイパーパラメータでひととおりニューラルネットワークの抽出を完了しているか確認する（Ｓ６０５）。完了していない場合（Ｓ６０５でＮＯ）、処理手順はステップＳ６０４に戻り、生成部１３が、次の候補ハイパーパラメータを抽出してニューラルネットワークのモデルを生成する。完了している場合（Ｓ６０５でＹＥＳ）、出力部１５による出力に移る（図１２のＳ５１０、実施の形態２と共通）。
【０１６８】
ステップＳ６０６でＹＥＳの場合、性能制約を満たす所定個数の推論モデルについて予測精度を評価済みであり、次いで、これらの推論モデルの予測精度を事前分布とするベイズ最適化による探索（Ｓ１５０４）が実行される。図１２のフローチャートは、この探索を含む、以降の処理手順の一例を示す。なお、図１２におけるステップＳ１５０４は、実施の形態２のステップＳ５０４に相当し、ステップＳ１５１５は、実施の形態２のステップＳ５１５に相当する。以下、同様に実施の形態２のステップＳ５１６〜Ｓ５１８、Ｓ５０５〜Ｓ５０７、Ｓ５２５、Ｓ５０８、Ｓ５０９が本実施の形態におけるステップＳ１５１６〜Ｓ１５１８、Ｓ１５０５〜Ｓ１５０７、Ｓ１５２５、Ｓ１５０８、Ｓ１５０９として実行される。
【０１６９】
一方、ステップＳ６０６でＮＯの場合には、候補リストから抽出した候補ハイパーパラメータを用いて生成したモデルで性能制約を満たすものが所定個数に達していない。この場合においては、ステップＳ５１０で、例えばその旨の通知、又は情報評価済みモデルリストに含まれるモデルの予測精度に関する情報（成績）がユーザに提示又はログに記録されることで出力が実行されてもよい。また、情報評価済みモデルリストにモデルがひとつも存在しないときには、その旨の警告等がユーザに対して提示されることでステップＳ５１０の出力が実行されてもよい。
【０１７０】
ここまでで、ニューラルネットワーク構築装置１０で実行される、本実施の形態におけるニューラルネットワーク構築方法の処理は終了する。
【０１７１】
なお、上述の処理手順は一例であり、種々の変形が可能である。例えば図５の処理手順についての各変形例は、本実施の形態の処理手順にも適用可能である。
【０１７２】
また、ステップＳ６０４の説明では、候補リストから候補ハイパーパラメータの抽出方法はランダムとしているが、これに限定されない。例えば値の昇順又は降順に並べた候補ハイパーパラメータから最初の１個は任意に選択し、その後は所定の間をあけた順位の候補ハイパーパラメータが抽出されてもよい。または、抽出する候補ハイパーパラメータはユーザによって人為的に選択されてもよい。このような手法も事後分布に依存しないため、ランダムな抽出と同様の効果が得られる。
【０１７３】
（他の実施の形態等）
以上のように、本発明に係る技術の例示として各実施の形態を説明した。しかしながら、本発明に係る技術はこの説明の内容に限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【０１７４】
（１）上記実施の形態では、ニューラルネットワークのモデルの構築に用いる言語としてＰｙｔｈｏｎ、組込み機器で動作するモデルの言語としてＣ言語を挙げたが、いずれも一般的に見られる設計開発環境で用いられているものを例としたもので、それぞれこれらに限定されない。例えば処理時間の算出には、言語も含めて、実際に用いられる組込み機器での実行環境にできるだけ近似できるようシミュレートされてもよい。
【０１７５】
（２）モデルの規模の上限を決める第一条件のひとつであるメモリサイズは、幅のない１つの値に限定されない。例えば採用される組込み機器の候補が、メモリサイズ違いで複数ある場合、これらの組込み機器のメモリサイズを包含する範囲として与えられてもよい。この場合、予測精度評価の結果として、例えばメモリサイズと達成可能な予測精度との対応が示されてもよい。メモリサイズ以外の第一条件についても同様であり、例えば演算処理装置の動作速度の範囲が与えられた場合、この動作速度と処理時間との対応が示されてもよい。
【０１７６】
（３）上記実施の形態で示したニューラルネットワーク構築装置の機能的な構成要素間の機能分担は一例に過ぎず、任意に分担を変更してもよい。
【０１７７】
（４）上記実施の形態で示した各種処理の手順（例えば図５、図１０から図１２に示した手順等）の実行順序は、必ずしも、上述したとおりの順序に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えたり、複数の手順を並列に行ったり、その手順の一部を省略したりすることができる。例えば、実施の形態１においてステップＳ５０６として実行される評価済みのモデルか否かの確認は、ステップＳ５０４とＳ５０５との間に実施されてもよい。また、実施の形態２においてステップＳ５０６として実行される評価済みのモデルか否かの確認は、ステップＳ５０４とＳ５１５との間、ステップＳ５１５とＳ５１６との間、又はステップＳ５１６とＳ５１７との間に実施されてもよい。この場合において、評価済みのモデルであるときは、ソースコードの生成（Ｓ５１５）、推論処理の所要時間の算出（Ｓ５１６）又は性能制約に関する判断（Ｓ５１７）がスキップされてもよい。また、実施の形態２におけるステップＳ５１０で実行される判断の他の例として挙げた、精度の評価の成績を所定の条件に照らして行う判断はステップＳ５０８又はステップＳ５０９の直後に実行されてもよい。そして所定の条件が満たされる場合には、ステップＳ５１０の出力が行われてもよい。このような変形に係る処理手順の場合には、ステップＳ５０６は省略されてもよい。これらの変形は、図１２で示した実施の形態３の処理手順についても適用可能である。
【０１７８】
（５）上記実施の形態の説明では、出力部１５が推論モデルを演算処理装置依存の言語によるソースコードの形式で出力する例を挙げたが、他の形式の例として、さらにハードウェア記述言語に変換したものを出力してもよい。これにより、構築された推論モデルの、専用の論理回路によるハードウェアでの実現が可能になる。
【０１７９】
（６）上記実施の形態の説明では、設定部１２が決定するものとして、候補ハイパーパラメータであるニューラルネットワークの深さ及びノード数を挙げたが、これに限定されない。設定部１２は、例えば、畳み込みニューラルネットワークにおけるニューラルネットワークの深さに関わる他のパラメータも本発明においてはハイパーパラメータとして扱い、これらに関する決定も行ってよい。このようなパラメータのより具体的な例としては、カーネルのサイズ、カーネルの深度、特徴マップのサイズ、プーリング層のウインドウサイズ、パディング量、及びストライド量が挙げられる。
【０１８０】
（７）上記実施の形態における各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしても良い。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等を含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。
【０１８１】
また、上記各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全部を含むように１チップ化されても良い。また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【０１８２】
（８）上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしても良い。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等から構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【０１８３】
（９）本発明の一態様としては、例えば図５、図１０から図１２に示す処理手順の全部又は一部を含むニューラルネットワーク構築方法であってもよい。例えばこのニューラルネットワーク構築方法は、演算処理装置及び記憶装置を備えるニューラルネットワーク構築装置において、この演算処理装置によって実行されるニューラルネットワーク構築方法であって、組込み機器が有する計算資源に関する資源情報及びこの組込み機器が有する処理性能に関する性能制約を取得するステップと、ニューラルネットワークの規模制約を上記の資源情報に基づいて設定するステップと、規模制約に基づいてニューラルネットワークのモデルを生成するステップと、生成された当該モデルについて、上記の性能制約を満たすか否かを判断し、この判断の結果に基づくデータを出力するステップとを含む。
【０１８４】
また、本発明の一態様としては、このニューラルネットワーク構築方法に係る所定情報処理をコンピュータにより実現するためのプログラム（コンピュータプログラム）であるとしてもよいし、プログラムからなるデジタル信号であるとしてもよい。
【０１８５】
また、本発明の一態様としては、上記のコンピュータプログラム又はデジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ等に記録したものであってもよい。
【０１８６】
また、これらの記録媒体に記録されている上記のデジタル信号であってもよい。また、本発明の一態様としては、上記のプログラム又はデジタル信号を、電気通信回線、無線又は有線通信回線、インターネットに代表される通信ネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１８７】
また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、このメモリは、上記のプログラムを記録しており、このマイクロプロセッサは、上記のプログラムに従って動作するとしてもよい。また、上記のプログラム若しくは上記のデジタル信号を上記の記録媒体に記録して移送することにより、又は、上記のプログラム若しくは上記のデジタル信号を、上記の通信ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１８８】
また、本発明の一態様としては、上記実施の形態又はその変形例に係る装置、方法又はプログラムを用いて生成されたニューラルネットワークのモデルを実行する情報処理装置としてもよい。情報処理装置は演算処理部及び記憶部を備え、この記憶部には、当該モデルが書き込まれ、演算処理部がこのモデルを読み出して実行する。例えば画像センサで取得された画像を入力として認識した物体を示す情報を出力するモデルを含むＥＣＵ（Electronic Control Unit）が想定される。
【０１８９】
（１０）上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。
【産業上の利用可能性】
【０１９０】
本発明は、ニューラルネットワークのモデルの構築において、より適切なモデルの候補を短時間に得る技術として利用可能である。
【符号の説明】
【０１９１】
１    コンピュータ
２    入力装置
３    演算処理装置
４    出力装置
５    記憶装置
６    通信装置
７    バス
１０  ニューラルネットワーク構築装置
１１  取得部
１２  設定部
１３  生成部
１４  判断部
１５  出力部
１９  学習部
【図１】
2019216404.tif 000007
【図２】
2019216404.tif 000008
【図３】
2019216404.tif 000009
【図４】
2019216404.tif 000010
【図５】
2019216404.tif 000011
【図６Ａ】
2019216404.tif 000012
【図６Ｂ】
2019216404.tif 000013
【図６Ｃ】
2019216404.tif 000014
【図７】
2019216404.tif 000015
【図８】
2019216404.tif 000016
【図９】
2019216404.tif 000017
【図１０】
2019216404.tif 000018
【図１１】
2019216404.tif 000019
【図１２】
2019216404.tif 000020
【国際調査報告】
2019216404.tif 000021
2019216404.tif 000022
2019216404.tif 000023
2019216404.tif 000024