(57)【特許請求の範囲】
【請求項１】
機械学習タスクを実行するためにニューラルネットワークをトレーニングするためのトレーニングデータを受信するステップであって、前記トレーニングデータが、複数のトレーニング例と、前記トレーニング例の各々についてのそれぞれのターゲット出力とを含む、ステップと、
前記トレーニングデータを使用して、前記機械学習タスクを実行するための最適化されたニューラルネットワークアーキテクチャを決定するステップであって、前記決定するステップが、
各々が他のワーカーコンピューティングユニットとは非同期に動作する複数のワーカーコンピューティングユニットの各々を使用して、以下の動作を繰り返し実行するステップを含み、前記動作が、
前記ワーカーコンピューティングユニットによって、ポピュレーションリポジトリ内のコンパクト表現の現在のポピュレーションから複数のコンパクト表現を選択するステップであって、前記現在のポピュレーションにおける各コンパクト表現が、前記機械学習タスクを実行するための異なるニューラルネットワークアーキテクチャ候補を符号化する、ステップと、
前記ワーカーコンピューティングユニットによって、前記選択された複数のコンパクト表現から新しいコンパクト表現を生成するステップであって、前記新しいコンパクト表現を生成するステップが、
あらかじめ定められた突然変異のセットから突然変異を選択するステップであって、前記あらかじめ定められた突然変異のセットが、前記選択された複数のコンパクト表現の1つによって符号化された前記ニューラルネットワークアーキテクチャ候補内のコンポーネントのフィルタサイズまたは出力チャネルの数を変更する突然変異を含む、ステップと、
前記新しいコンパクト表現を生成するために、前記選択された突然変異を前記選択された複数のコンパクト表現の1つに適用するステップと
を含む、ステップと、
前記ワーカーコンピューティングユニットによって、前記新しいコンパクト表現によって符号化されたアーキテクチャを有するトレーニング済みニューラルネットワークの適合度を決定するステップと、
前記ワーカーコンピューティングユニットによって、前記ポピュレーションリポジトリ内の前記現在のポピュレーションに前記新しいコンパクト表現を追加するとともに、前記新しいコンパクト表現を前記適合度に関連付けるステップと
を含む、ステップと、
前記最適化されたニューラルネットワークアーキテクチャとして、最高の適合度に関連付けられた前記コンパクト表現によって符号化された前記ニューラルネットワークアーキテクチャを選択するステップと、
前記最適化されたニューラルネットワークアーキテクチャを有するニューラルネットワークのパラメータの訓練値を決定するステップとを含む、
方法。
【請求項２】
前記新しいコンパクト表現によって符号化されたアーキテクチャを有するトレーニング済みニューラルネットワークの適合度を決定するステップが、
前記新しいコンパクト表現によって符号化された前記アーキテクチャを有するニューラルネットワークをインスタンス化するステップと、
前記新しいニューラルネットワークのパラメータの訓練値を決定するために、前記トレーニングデータのトレーニングサブセットにおいて前記新しいニューラルネットワークをトレーニングするステップと、
前記トレーニングデータの検証サブセットにおける前記トレーニング済みの新しいニューラルネットワークのパフォーマンスを評価することによって、前記適合度を決定するステップとを含む、
請求項1に記載の方法。
【請求項３】
前記動作が、
前記新しいニューラルネットワークの前記パラメータの前記訓練値を、前記ポピュレーションリポジトリ内の前記新しいコンパクト表現に関連付けるステップをさらに含む、
請求項2に記載の方法。
【請求項４】
前記最適化されたニューラルネットワークアーキテクチャを有するニューラルネットワークのパラメータの訓練値を決定するステップが、
前記最適化されたニューラルネットワークアーキテクチャを有する前記ニューラルネットワークの前記パラメータの前記訓練値として、前記最高の適合度に関連付けられた前記コンパクト表現に関連付けられた訓練値を選択するステップを含む、
請求項3に記載の方法。
【請求項５】
前記機械学習タスクを実行するためのデフォルトのニューラルネットワークアーキテクチャを符号化する1つまたは複数のデフォルトのコンパクト表現で前記ポピュレーションリポジトリを初期化するステップをさらに含む、
請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記複数のコンパクト表現から新しいコンパクト表現を生成するステップが、
最悪の適合性に関連付けられた前記複数のコンパクト表現のうちのコンパクト表現を識別するステップと、
前記複数のコンパクト表現内の前記識別されたコンパクト表現以外の1つまたは複数のコンパクト表現から前記新しいコンパクト表現を生成するステップとを含む、
請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記動作が、
前記現在のポピュレーションから前記識別されたコンパクト表現を削除するステップをさらに含む、
請求項6に記載の方法。
【請求項８】
前記複数のコンパクト表現内の前記識別されたコンパクト表現以外に1つの残りのコンパクト表現がある、
請求項6または7に記載の方法。
【請求項９】
前記新しいコンパクト表現を生成するステップが、
突然変異ニューラルネットワークを使用して、前記1つの残りのコンパクト表現を処理するステップであって、前記突然変異ニューラルネットワークが、前記新しいコンパクト表現を生成するように前記1つの残りのコンパクト表現を含むネットワーク入力を処理するようにトレーニングされている、ステップを含む、
請求項1に記載の方法。
【請求項１０】
前記複数のコンパクト表現内の前記識別されたコンパクト表現以外に複数の残りのコンパクト表現があり、
前記新しいコンパクト表現を生成するステップが、
前記新しいコンパクト表現を生成するために、前記複数の残りのコンパクト表現を結合するステップを含む、
請求項6または7に記載の方法。
【請求項１１】
前記新しいコンパクト表現を生成するために、前記複数の残りのコンパクト表現を結合するステップが、
前記新しいコンパクト表現を生成するために、前記残りのコンパクト表現をつなぎ合わせるステップを含む、
請求項10に記載の方法。
【請求項１２】
前記新しいコンパクト表現を生成するために、前記複数の残りのコンパクト表現を結合するステップが、
再結合ニューラルネットワークを使用して、前記残りのコンパクト表現を処理するステップであって、前記再結合ニューラルネットワークが、前記新しいコンパクト表現を生成するように前記残りのコンパクト表現を含むネットワーク入力を処理するようにトレーニングされている、ステップを含む、
請求項10に記載の方法。
【請求項１３】
前記ニューラルネットワークの前記パラメータの前記訓練値に従って新しい入力例を処理するために、前記最適化されたニューラルネットワークアーキテクチャを有する前記ニューラルネットワークを使用するステップをさらに含む、
請求項1から12のいずれか一項に記載の方法。
【請求項１４】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行された場合、前記1つまたは複数のコンピュータに請求項1から13のいずれか一項に記載の方法を実行させる命令を記憶する1つまたは複数の記憶デバイスとを備える、
システム。
【請求項１５】
1つまたは複数のコンピュータによって実行された場合、前記1つまたは複数のコンピュータに請求項1から13のいずれか一項に記載の方法を実行させる命令を記憶した、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ニューラルネットワークのトレーニングに関する。
【背景技術】
【０００２】
ニューラルネットワークは、非線形ユニットの1つまたは複数の層を使用して、受信された入力の出力を予測する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在の値に従って受信された入力から出力を生成する。
【発明の概要】
【課題を解決するための手段】
【０００３】
一般に、本明細書に記載される主題の1つの発明的態様は、最適なニューラルネットワークアーキテクチャを決定するための方法で具現化することができる。
【０００４】
本態様の他の実施形態は、対応するコンピュータシステム、装置、および1つまたは複数のコンピュータ記憶デバイスに記録されたコンピュータプログラムを含み、各々が方法のアクションを実行するように構成されている。1つまたは複数のコンピュータのシステムは、動作中にシステムにアクションを実行させ得る、システムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せによって特定の動作またはアクションを実行するように構成することができる。1つまたは複数のコンピュータプログラムは、データ処理装置によって実行されると、装置にアクションを実行させる命令を含めることにより、特定の動作またはアクションを実行するように構成することができる。
【０００５】
本明細書に記載される主題は、以下の利点のうちの1つまたは複数を実現するように特定の実施形態で実施することができる。本明細書において説明するように、所与の機械学習タスクのトレーニングデータを使用してニューラルネットワークアーキテクチャを最適化することによって、機械学習タスクにおける最終的なトレーニング済みニューラルネットワークのパフォーマンスを向上させることができる。特に、ニューラルネットワークのアーキテクチャは、既存のアーキテクチャによって制約されることなく、タスクのトレーニングデータに合わせて調整することができ、それによって、トレーニング済みニューラルネットワークのパフォーマンスが向上する。アーキテクチャの最適化を複数のワーカーコンピューティングユニットに分散させることによって、検索でき、評価できる可能なアーキテクチャの探索スペースが大幅に増加し、その結果、最終的に最適化されたアーキテクチャでは機械学習タスクのパフォーマンスが向上する。さらに、ニューラルネットワークを直接修正する必要なく、アーキテクチャのコンパクト表現に作用することによって、最適化プロセスの効率が向上し、その結果、たとえば、より少ないメモリおよび処理能力、またはその両方など、より少ないコンピューティングリソースを使用しながら、最適化されたアーキテクチャがより迅速に決定される。
【０００６】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】例示的なニューラルネットワークアーキテクチャ最適化システムを示す図である。
【図２】ニューラルネットワークアーキテクチャを最適化するための例示的なプロセスのフローチャートである。
【図３】ポピュレーションリポジトリ(population repository)内のコンパクト表現を更新するための例示的なプロセスのフローチャートである。
【発明を実施するための形態】
【０００８】
図1は、例示的なニューラルネットワークアーキテクチャ最適化システム100を示す。ニューラルネットワークアーキテクチャ最適化システム100は、以下に説明するシステム、構成要素、および技法を実装することができる1つまたは複数の場所にある1つまたは複数のコンピュータにコンピュータプログラムとして実装されるシステムの一例である。
【０００９】
ニューラルネットワークアーキテクチャ最適化システム100は、すなわち、システムのユーザから、機械学習タスクを実行するようにニューラルネットワークをトレーニングするためのトレーニングデータ102を受信し、トレーニングデータ102を使用して、機械学習タスクを実行するための最適なニューラルネットワークアーキテクチャを決定し、最適なニューラルネットワークアーキテクチャを有するニューラルネットワークをトレーニングして、ニューラルネットワークのパラメータの訓練値(trained value)を決定するシステムである。
【００１０】
トレーニングデータ102は、一般に、複数のトレーニング例、および各トレーニング例のそれぞれのターゲット出力を含む。所与のトレーニング例のターゲット出力は、所与のトレーニング例を処理することによって、トレーニング済みニューラルネットワークによって生成される出力である。
【００１１】
システム100は、様々な方法のうちのいずれかでトレーニングデータ102を受信することができる。たとえば、システム100は、たとえばシステム100によって利用可能にされるアプリケーションプログラミングインターフェース(API)を使用して、データ通信ネットワークを介してシステムの遠隔ユーザからアップロードとしてトレーニングデータを受信することができる。別の例として、システム100は、システム100によってすでに維持されているどのデータをトレーニングデータ102として使用すべきかを指定する入力を、ユーザから受信することができる。
【００１２】
ニューラルネットワークアーキテクチャ最適化システム100は、トレーニングデータ102を使用してトレーニング済みニューラルネットワークを指定するデータ152を生成する。データ152は、トレーニング済みニューラルネットワークの最適なアーキテクチャ、および最適なアーキテクチャを有するトレーニング済みニューラルネットワークのパラメータの訓練値を指定する。
【００１３】
ニューラルネットワークアーキテクチャ最適化システム100がデータ152を生成すると、ニューラルネットワークアーキテクチャ最適化システム100は、トレーニング済みニューラルネットワークデータ152を使用してトレーニング済みニューラルネットワークをインスタンス化し、トレーニング済みニューラルネットワークを使用して、たとえばシステムによって提供されるAPIを介して機械学習タスクを実行するように新しい受信入力を処理することができる。すなわち、システム100は、処理されるべき入力を受信し、入力を処理するためにトレーニング済みニューラルネットワークを使用し、受信された入力に応答して、トレーニング済みニューラルネットワークによって生成された出力、または生成された出力から導出されたデータを提供することができる。代わりに、または加えて、システム100は、トレーニング済みニューラルネットワークをインスタンス化する際に後で使用するためにトレーニング済みニューラルネットワークデータ152を記憶することができ、または、トレーニング済みニューラルネットワークをインスタンス化する際に使用するためにトレーニング済みニューラルネットワークデータ152を別のシステムに送信する、もしくはデータ152を、トレーニングデータをサブミットしたユーザに出力することができる。
【００１４】
機械学習タスクは、トレーニングデータ102をシステム100にサブミットするユーザによって指定されるタスクである。
【００１５】
いくつかの実装形態では、ユーザは、トレーニングデータ102とともにニューラルネットワークアーキテクチャ最適化システム100にタスクを識別するデータをサブミットすることによって、タスクを明示的に定義する。たとえば、システム100は、ユーザがシステム100によってサポートされるタスクのリストからタスクを選択することを可能にするユーザインターフェースをユーザのユーザデバイス上に提示してもよい。すなわち、ニューラルネットワークアーキテクチャ最適化システム100は、たとえば、画像分類のような画像処理タスク、音声認識タスク、感情分析のような自然言語処理タスクなど、機械学習タスクのリストを維持することができる。システム100は、ユーザインターフェースにおいてタスクの1つを選択することによって、トレーニングデータが使用されるべきタスクとして、維持されたタスクのうちの1つをユーザが選択できるようにすることができる。
【００１６】
いくつかの他の実装形態では、ユーザによってサブミットされたトレーニングデータ102は、機械学習タスクを指定する。すなわち、ニューラルネットワークアーキテクチャ最適化システム100は、トレーニング例のターゲット出力と同じフォーマットおよび構造を有する出力を生成するために、そのタスクを、トレーニングデータ102におけるトレーニング例と同じフォーマットおよび構造を有する入力を処理するタスクとして定義する。たとえば、トレーニング例がある解像度を有する画像であり、ターゲット出力が1000次元ベクトルである場合、システム100は、そのタスクを、ある解像度を有する画像を1000次元ベクトルにマッピングするタスクとして識別することができる。たとえば、1000次元のターゲット出力ベクトルは、非ゼロ値を持つ単一の要素を有し得る。非ゼロ値の位置は、トレーニング例画像が1000クラスのどれに属するかを示す。この例では、システム100は、タスクが画像を1000次元の確率ベクトルにマッピングすることであることを識別し得る。各要素は、画像がそれぞれのクラスに属する確率を表す。1000個の可能なクラスから選択されたターゲット出力分類とペアになった50000個のトレーニング例で構成されるCIFAR-1000データセットは、そのようなトレーニングデータ102の一例である。CIFAR-10は、分類が10個の可能なクラスのうちの1つである関連データセットである。適切なトレーニングデータ102の別の例は、トレーニング例が手書き数字の画像であり、ターゲット出力が、これらが表す数字であるMNISTデータセットである。ターゲット出力は、単一の非ゼロ値を有する10次元ベクトルとして表され、非ゼロ値の位置はそれぞれの桁を示す。
【００１７】
ニューラルネットワークアーキテクチャ最適化システム100は、ポピュレーションリポジトリ110と、ポピュレーションリポジトリに記憶されたデータを更新するために互いに独立して動作する複数のワーカー120A〜Nとを含む。
【００１８】
トレーニング中の所与の時点で、ポピュレーションリポジトリ110は、1つまたは複数の物理的位置にある1つまたは複数のストレージデバイスとして実装され、ニューラルネットワークアーキテクチャ候補の現在のポピュレーションを指定するデータを記憶する。
【００１９】
特に、ポピュレーションリポジトリ110は、現在のポピュレーションにおける各ニューラルネットワークアーキテクチャ候補について、アーキテクチャを定義するコンパクト表現を記憶する。随意に、ポピュレーションリポジトリ110は、各アーキテクチャ候補について、アーキテクチャを有するニューラルネットワークのインスタンス、アーキテクチャを有するニューラルネットワークのパラメータの現在値、またはアーキテクチャを特徴付ける追加のメタデータを記憶することもできる。
【００２０】
所与のアーキテクチャのコンパクト表現は、アーキテクチャの少なくとも一部を符号化するデータ、すなわち、アーキテクチャを有するニューラルネットワーク、またはニューラルネットワークアーキテクチャ最適化システム100によって修正可能なニューラルネットワークアーキテクチャの少なくとも一部を生成するために使用できるデータである。特に、所与のアーキテクチャのコンパクト表現は、アーキテクチャ内の各層、およびアーキテクチャ内の層間の接続、すなわち、ニューラルネットワークによる入力の処理中の層間のデータの流れをコンパクトに識別する。
【００２１】
たとえば、コンパクト表現は、有向エッジによって接続されたノードのグラフを表すデータとすることができる。一般に、グラフにおける各ノードは、たとえば、アーキテクチャにおけるニューラルネットワーク層、ニューラルネットワークモジュール、長期短期メモリセル(LSTM)のゲート、LSTMセル、または他のニューラルネットワークコンポーネントなどのニューラルネットワークコンポーネントを表し、グラフにおける各エッジは、それぞれの発信ノードをそれぞれの着信ノードに接続し、発信ノードによって表されるコンポーネントによって生成された出力の少なくとも一部が着信ノードによって表される層への入力として提供されることを表す。ノードおよびエッジは、アーキテクチャの様々なコンポーネントによるデータの変換方法を特徴付けるラベルを有する。
【００２２】
畳み込みニューラルネットワークの例では、グラフにおける各ノードは、アーキテクチャにおけるニューラルネットワーク層を表し、ノードによって表される層への入力のサイズ、および、ある場合は、ノードによって表される層によって適用される活性化関数のタイプを指定するラベルを有し、各エッジのラベルは、たとえば、完全に接続された層によって適用される畳み込みまたは行列乗算など、着信ノードによって表される層によって、発信ノードによって表される層によって生成される出力に適用される変換を指定する。
【００２３】
別の例として、コンパクト表現は、アーキテクチャ内のコンポーネント間の接続を反映する順序で配置されたアーキテクチャ内のコンポーネントの識別子のリストとすることができる。
【００２４】
また別の例として、コンパクト表現は、上記のノードおよびエッジのグラフを構築するためのルールのセット、すなわち、実行時にアーキテクチャを表すノードおよびエッジのグラフの生成をもたらすルールのセットとすることができる。
【００２５】
いくつかの実装形態では、コンパクト表現はまた、たとえば、学習率、学習率の減衰など、符号化されたアーキテクチャを有するニューラルネットワークのトレーニングのためのハイパーパラメータを指定するデータを符号化する。
【００２６】
トレーニングプロセスを開始するために、ニューラルネットワークアーキテクチャ最適化システム100は、ユーザ指定の機械学習タスクを実行するための1つまたは複数の初期ニューラルネットワークアーキテクチャのコンパクト表現でポピュレーションリポジトリを事前にポピュレートする。
【００２７】
各初期ニューラルネットワークアーキテクチャは、機械学習タスクに適合する入力、すなわち、トレーニングデータ102内のトレーニング例のフォーマットおよび構造を有する入力を受信し、機械学習タスクに適合する出力、すなわち、トレーニングデータ102におけるターゲット出力のフォーマットおよび構造を有する出力を生成するアーキテクチャである。
【００２８】
特に、ニューラルネットワークアーキテクチャ最適化システム100は、複数の既存のニューラルネットワークアーキテクチャを識別するデータを維持する。
【００２９】
機械学習タスクがユーザによって選択可能である実装形態では、システム100は、既存のニューラルネットワークアーキテクチャの各々を、それらのアーキテクチャが実行するように構成されているタスクに関連付けるデータも維持する。次いで、システムは、ユーザ指定のタスクを実行するように構成された既存のアーキテクチャでポピュレーションリポジトリ110を事前にポピュレートすることができる。
【００３０】
システム100がトレーニングデータ102からタスクを決定する実装形態では、システム100は、維持されたデータにおいて識別されるどのアーキテクチャが適合する入力を受信し、適合する出力を生成するかを決定し、それらのアーキテクチャを、リポジトリ100を事前にポピュレートするために使用されるべきアーキテクチャとして選択する。
【００３１】
いくつかの実装形態では、既存のニューラルネットワークアーキテクチャは、特定の機械学習タスクを実行するための基本的なアーキテクチャである。他の実装形態では、既存のニューラルネットワークアーキテクチャは、トレーニング後に、特定の機械学習タスクにおいて適切に機能することがわかっているアーキテクチャである。
【００３２】
ワーカー120A〜120Nの各々は、それぞれのコンピューティングユニットにおいて実行されるように配置された1つまたは複数のコンピュータプログラムおよびデータとして実装される。コンピューティングユニットは、互いに独立して動作できるように構成される。いくつかの実装形態では、たとえば、ワーカーがいくつかのリソースを共有するので、動作の部分的な独立性のみが達成される。コンピューティングユニットは、たとえば、コンピュータ、複数のコアを有するコンピュータ内のコア、またはワーカーの計算を独立して実行できるコンピュータ内の他のハードウェアまたはソフトウェアであり得る。
【００３３】
ワーカー120A〜120Nの各々は、ポピュレーションリポジトリ102内の可能なニューラルネットワークアーキテクチャのポピュレーションを繰り返し更新して、ポピュレーションの適合性を向上させる。
【００３４】
特に、各反復において、所与のワーカー120A〜120Nは、ポピュレーションリポジトリから親コンパクト表現122をサンプリングし、親コンパクト表現122から子孫コンパクト表現124を生成し、子孫コンパクト表現124によって定義されるアーキテクチャを有するニューラルネットワークをトレーニングし、アーキテクチャを有するトレーニング済みニューラルネットワークの適合度(measure of fitness)に関連して子孫コンパクト表現124をポピュレーションリポジトリ110に記憶する。
【００３５】
トレーニングの終了基準が満たされた後、ニューラルネットワークアーキテクチャ最適化システム100は、ポピュレーションに残っているアーキテクチャから、またはいくつかの場合には、トレーニング中の任意の時点にポピュレーションにあったすべてのアーキテクチャから最適なニューラルネットワークアーキテクチャを選択する。
【００３６】
特に、いくつかの実装形態では、ニューラルネットワークアーキテクチャ最適化システム100は、最高の適合度を有するポピュレーション内のアーキテクチャを選択する。他の実装形態では、ニューラルネットワークアーキテクチャ最適化システム100は、それらのアーキテクチャがポピュレーションから削除された後でも、アーキテクチャの適合度を追跡し、追跡された適合度を使用して最高の適合度を有するアーキテクチャを選択する。
【００３７】
トレーニング済みニューラルネットワークを指定するデータ152を生成するために、ニューラルネットワークアーキテクチャ最適化システム100は、次いで、ポピュレーションリポジトリ110から最適なニューラルネットワークアーキテクチャを有するトレーニング済みニューラルネットワークのパラメータの訓練値を取得するか、ニューラルネットワークのパラメータの訓練値を決定するために最適なアーキテクチャを有するニューラルネットワークをトレーニングすることができる。
【００３８】
図2は、機械学習タスクを実行するための最適なニューラルネットワークアーキテクチャを決定するための例示的なプロセス200のフローチャートである。便宜上、プロセス200は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。たとえば、本明細書に従って適切にプログラムされた図1のニューラルネットワークアーキテクチャ最適化システム100などのニューラルネットワークアーキテクチャ最適化システムは、プロセス200を実行することができる。
【００３９】
システムは、ユーザ指定の機械学習タスクを実行するためにニューラルネットワークをトレーニングする際に使用するためのトレーニングデータを取得する(ステップ202)。システムは、受信されたトレーニングデータをトレーニングサブセット、検証サブセット、および随意にテストサブセットに分割する。
【００４０】
システムは、1つまたは複数のデフォルトのニューラルネットワークアーキテクチャでポピュレーションリポジトリを初期化する(ステップ204)。特に、システムは、デフォルトのニューラルネットワークアーキテクチャの各々のコンパクト表現をポピュレーションリポジトリに追加することによって、ポピュレーションリポジトリを初期化する。
【００４１】
デフォルトのニューラルネットワークアーキテクチャは、機械学習タスクを実行するためのあらかじめ決定されたアーキテクチャ、すなわち、トレーニングデータによって指定されたものに適合する入力を受信し、トレーニングデータによって指定されたものに適合する出力を生成するアーキテクチャである。
【００４２】
システムは、複数のワーカーを使用して、ポピュレーションリポジトリ内のアーキテクチャを繰り返し更新する(ステップ206)。
【００４３】
特に、複数のワーカーの各ワーカーは、アーキテクチャ修正プロセスの複数の反復を独立して実行する。プロセスの各反復で、各ワーカーは、ポピュレーションリポジトリ内のコンパクト表現を更新して、ニューラルネットワークアーキテクチャ候補のポピュレーションを更新する。ワーカーは、新しいニューラルネットワークアーキテクチャの新しいコンパクト表現を追加するためにポピュレーションリポジトリを更新するたびに、ポピュレーションリポジトリにおける新しいコンパクト表現に関連して、ニューラルネットワークアーキテクチャを有するトレーニング済みニューラルネットワークの適合度も記憶する。アーキテクチャ修正プロセスの反復の実行について、図3を参照して以下で説明する。
【００４４】
システムは、機械学習タスクを実行するために使用される最適化されたニューラルネットワークアーキテクチャとして最も良く適合するニューラルネットワークアーキテクチャ候補を選択する(ステップ208)。すなわち、たとえば、しきい値を超える数の反復が実行された後、またはポピュレーションリポジトリ内の最も良く適合するニューラルネットワーク候補がしきい値を超える適合性を有した後など、ひとたびワーカーが反復の実行を完了し、終了基準が満たされると、システムは、機械学習タスクの実行に使用される最終的なニューラルネットワークアーキテクチャとして最も良く適合するニューラルネットワークアーキテクチャ候補を選択する。
【００４５】
システムがトレーニングデータからテストサブセットを生成する実装形態では、システムは、テストサブセットにおいて最適化されたニューラルネットワークアーキテクチャを有するトレーニング済みニューラルネットワークのパフォーマンスのテストも行って、ユーザ指定の機械学習タスクにおけるトレーニング済みニューラルネットワークの適合度を決定する。次いで、システムは、トレーニングデータをサブミットしたユーザへの提示のための適合度を提供することができ、または、トレーニング済みニューラルネットワークのパラメータの訓練値に関連して適合度を記憶することができる。
【００４６】
説明した方法を使用すると、得られたトレーニング済みニューラルネットワークは、ニューラルネットワーク設計者からの入力をほとんどまたはまったく必要とせずに、最先端の手設計されたモデルと競合するかそれを超える機械学習タスクにおけるパフォーマンスを達成できる。特に、説明されている方法は、得られたニューラルネットワークのハイパーパラメータを自動的に最適化する。
【００４７】
図3は、ポピュレーションリポジトリ内のコンパクト表現を更新するための例示的なプロセス300のフローチャートである。便宜上、プロセス300は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、本明細書に従って適切にプログラムされた図1のニューラルネットワークアーキテクチャ最適化システム100などのニューラルネットワークアーキテクチャ最適化システムは、プロセス300を実行することができる。
【００４８】
プロセス300は、機械学習タスクを実行するための最適なニューラルネットワークアーキテクチャを決定する一部として、複数のワーカーの各ワーカーによって繰り返し独立して実行することができる。
【００４９】
ワーカーは、ポピュレーションリポジトリから複数の親コンパクト表現を取得する(ステップ302)。特に、ワーカーは、ランダムに、また他のワーカーとは独立して、ポピュレーションリポジトリから2つ以上のコンパクト表現をサンプリングし、サンプリングされた各コンパクト表現は、異なるニューラルネットワークアーキテクチャ候補を符号化する。
【００５０】
いくつかの実装形態では、たとえば、常に2つの親コンパクト表現をサンプリングする、常に3つのコンパクト表現をサンプリングするなど、各ワーカーは、常に、あらかじめ定められた同じ数の親コンパクト表現をポピュレーションリポジトリからサンプリングする。いくつかの他の実装形態では、各ワーカーは、ポピュレーションリポジトリからそれぞれのあらかじめ定められた数の親コンパクト表現をサンプリングするが、あらかじめ定められた数はワーカーごとに異なり、たとえば、あるワーカーは常に2つの親コンパクト表現をサンプリングし、別のワーカーは常に3つのコンパクト表現をサンプリングする。また他の実装形態では、各ワーカーは、複数の可能な数の各々の尤度を定義するデータを保持し、データによって定義された尤度に従って各反復でサンプリングするコンパクト表現の数を選択する。
【００５１】
ワーカーは、親コンパクト表現から子孫コンパクト表現を生成する(ステップ304)。
【００５２】
特に、ワーカーは、親コンパクト表現によって符号化されたアーキテクチャの各々の適合性を評価し、最小適合アーキテクチャを符号化する親コンパクト表現、すなわち、最悪の適合度を有するアーキテクチャを符号化する親コンパクト表現を決定する。
【００５３】
すなわち、ワーカーは、ポピュレーションリポジトリ内の各親コンパクト表現に関連付けられている適合度を比較し、最悪の適合度に関連付けられている親コンパクト表現を識別する。
【００５４】
親コンパクト表現のうちの1つがリポジトリ内の適合度に関連付けられていない場合、ワーカーは、後述するように、親コンパクト表現によって符号化されたアーキテクチャを有するニューラルネットワークの適合性を評価する。
【００５５】
次いで、ワーカーは、残りの親コンパクト表現、すなわち、より良い適合度を有する表現から子孫コンパクト表現を生成する。所与の数のアイテムをサンプリングし、より良く働くものを選択することは、「トーナメント選択」と呼ばれることがある。最悪の適合度を有する親コンパクト表現は、ポピュレーションリポジトリから削除される場合がある。
【００５６】
ワーカーは、少なくとも以下に述べる理由のために、上記の実装形態において非同期的に動作することができる。限られた数の親コンパクト表現が各ワーカーによってサンプリングされるので、所与のワーカーは通常、ポピュレーションリポジトリに含まれる他の親コンパクト表現の修正による影響を受けない。時々、別のワーカーが、所与のワーカーが作用している親コンパクト表現を修正することがある。この場合、影響を受けるワーカーは、単にあきらめ、再試行する、すなわち、現在のポピュレーションから新しい親コンパクト表現をサンプリングすることができる。非同期で動作するワーカーは、超並列のロックフリーインフラストラクチャで動作できる。
【００５７】
単一の残りの親コンパクト表現がある場合、ワーカーは、親コンパクト表現を突然変異させて、子孫コンパクト表現を生成する。
【００５８】
いくつかの実装形態では、ワーカーは、突然変異ニューラルネットワークを介して親コンパクト表現を処理することによって、親コンパクト表現を突然変異させる。突然変異ニューラルネットワークは、1つのコンパクト表現を含む入力を受信し、入力コンパクト表現とは異なる別のコンパクト表現を定義する出力を生成するようにトレーニングされたニューラルネットワークである。
【００５９】
いくつかの他の実装形態では、ワーカーは、コンパクト表現に適用できる可能な突然変異のセットを識別するデータを保持する。ワーカーは、可能な突然変異のうちの1つをランダムに選択し、その突然変異を親コンパクト表現に適用できる。
【００６０】
可能な突然変異のセットは、ニューラルネットワークのコンポーネントの追加、削除、もしくは修正、またはニューラルネットワークのトレーニングのためのハイパーパラメータの変更を表す様々なコンパクト表現修正のいずれかを含むことができる。
【００６１】
たとえば、可能な突然変異のセットは、親コンパクト表現からノードを削除し、したがって、親コンパクト表現によって符号化されたアーキテクチャからコンポーネントを削除する突然変異を含むことができる。
【００６２】
別の例として、可能な突然変異のセットは、親コンパクト表現にノードを追加し、したがって、親コンパクト表現によって符号化されたアーキテクチャにコンポーネントを追加する突然変異を含むことができる。
【００６３】
別の例として、可能な突然変異のセットは、コンパクト表現内の既存のノードまたはエッジのラベルを変更し、したがって、親コンパクト表現によって符号化されたアーキテクチャ内の既存のコンポーネントによって実行される動作を修正する1つまたは複数の突然変異を含むことができる。たとえば、ある突然変異は、畳み込みニューラルネットワーク層のフィルタサイズを変更する可能性がある。別の例として、別の突然変異は、畳み込みニューラルネットワーク層の出力チャネルの数を変更する可能性がある。
【００６４】
別の例として、可能な突然変異のセットは、アーキテクチャを有するニューラルネットワークのトレーニングで使用される学習率を修正する、またはアーキテクチャを有するニューラルネットワークのトレーニングで使用される学習率の減衰を修正する突然変異を含むことができる。
【００６５】
これらの実装形態では、システムがコンパクト表現に適用されるべき突然変異を選択すると、システムは、コンパクト表現における有効な場所を決定し、有効な場所のうちの1つをランダムに選択し、次いで、ランダムに選択された有効な場所に突然変異を適用する。有効な場所とは、その場所で突然変異が適用された場合でも、コンパクト表現が有効なアーキテクチャを依然として符号化する場所である。有効なアーキテクチャとは、すなわち、適合入力を処理して適合出力を生成する、機械学習タスクを依然として実行するアーキテクチャである。
【００６６】
複数の残りの親コンパクト表現が存在する場合、ワーカーは、親コンパクト表現を再結合して、子孫コンパクト表現を生成する。
【００６７】
いくつかの実装形態では、ワーカーは、再結合のニューラルネットワークを使用して親コンパクト表現を処理することによって、親コンパクト表現を再結合する。再結合のニューラルネットワークは、親コンパクト表現を含む入力を受信し、親コンパクト表現の再結合である新しいコンパクト表現を定義する出力を生成するようにトレーニングされたニューラルネットワークである。
【００６８】
いくつかの他の実装形態では、システムは、親コンパクト表現をつなぎ合わせて(join)子孫コンパクト表現を生成することによって、親コンパクト表現を再結合する。たとえば、システムは、親コンパクト表現における出力ノードに着信エッジによって接続され、親コンパクト表現の出力ノードによって表されるコンポーネントの出力を結合するコンポーネントを表す子孫コンパクト表現にノードを追加することによって、コンパクト表現をつなぎ合わせることができる。別の例として、システムは、親コンパクト表現の各々から出力ノードを削除し、次いで、親コンパクト表現における出力ノードに発信エッジによって接続されていたノードに、着信エッジによって接続され、親コンパクト表現におけるそれらのノードによって表されるコンポーネントの出力を結合するコンポーネントを表す子孫コンパクト表現にノードを追加することができる。
【００６９】
一部の実装形態では、ワーカーは、現在のポピュレーションから最小適合アーキテクチャも削除する。たとえば、ワーカーは、コンパクト表現を非アクティブとして指定するアーキテクチャのコンパクト表現にデータを関連付けることができ、またはコンパクト表現および関連するデータをリポジトリから削除できる。
【００７０】
いくつかの実装形態では、システムは、任意の所与の時間にポピュレーション内にあり得る最大数のアーキテクチャを定義する最大ポピュレーションサイズパラメータ、所与の時間にポピュレーション内にあり得る最小数のアーキテクチャを定義する最小ポピュレーションサイズパラメータ、またはその両方を維持する。ポピュレーションサイズパラメータは、ユーザによって定義することができ、または、たとえばシステムにとって利用可能なストレージリソースに基づいて、システムによって自動的に決定することもできる。
【００７１】
ポピュレーションにおけるアーキテクチャの現在の数が最小ポピュレーションサイズパラメータを下回っている場合、ワーカーは、ポピュレーションから最小適合アーキテクチャを削除することを控えることができる。
【００７２】
アーキテクチャの現在の数が最大ポピュレーションサイズパラメータ以上である場合、ワーカーは、子孫コンパクト表現の生成を控えることができ、すなわち、それを新しいコンパクト表現に置き換えることなく、またプロセス300のステップ306〜312を実行することなく、ポピュレーションから最小適合アーキテクチャを削除することができる。
【００７３】
ワーカーは、子孫コンパクト表現を復号することによって、子孫ニューラルネットワークを生成する(ステップ306)。すなわち、ワーカーは、子孫コンパクト表現によって符号化されたアーキテクチャを有するニューラルネットワークを生成する。
【００７４】
いくつかの実装形態では、ワーカーは、子孫ニューラルネットワークのパラメータをランダム値または所定の初期値に初期化する。他の実装形態では、ワーカーは、子孫コンパクト表現を生成するために使用される1つまたは複数の親コンパクト表現にも含まれる子孫ニューラルネットワークのコンポーネントのパラメータの値を、対応する親ニューラルネットワークのトレーニングからのパラメータの値に初期化する。1つまたは複数の親コンパクト表現に含まれるものに基づいてコンポーネントのパラメータの値を初期化することは、「重み継承」と呼ばれる場合がある。
【００７５】
ワーカーは、子孫ニューラルネットワークをトレーニングして、子孫ニューラルネットワークのパラメータの訓練値を決定する(ステップ308)。子孫ニューラルネットワークが完全にトレーニングされていることが望ましい。しかしながら、プロセス300の各反復で完了するまで子孫ニューラルネットワークをトレーニングすることは、少なくともより大きいニューラルネットワークについては、不合理な時間量およびコンピューティングリソースを必要とする可能性がある。重み継承は、プロセス300の各反復で必要なトレーニングの量を制限しながら、後の反復で子孫ネットワークを、完全にまたは少なくともほぼ完全にトレーニングすることを可能にすることによって、このジレンマを解決し得る。
【００７６】
特に、ワーカーは、たとえば、逆伝播による確率的勾配降下、または子孫ニューラルネットワークがリカレントニューラルネットワークである場合、通時的誤差逆伝播トレーニング技法(backpropagation-through-time training technique)など、機械学習タスクに適したニューラルネットワークトレーニング技法を使用して、トレーニングデータのトレーニングサブセットにおいて子孫ニューラルネットワークをトレーニングする。トレーニング中、ワーカーは、子孫コンパクト表現によって符号化された任意のトレーニングハイパーパラメータに従ってトレーニングを実行する。
【００７７】
いくつかの実装形態では、ワーカーは、たとえば、トレーニングの各ラウンドの前にトレーニングサブセット内のトレーニング例をランダムに順序付けることによって、ワーカーが新しいニューラルネットワークをトレーニングするたびに、トレーニングサブセット内のトレーニング例の順序を修正する。したがって、各ワーカーは、一般に、同じであるが、他のワーカーとは異なるように順序付けられたトレーニング例においてニューラルネットワークをトレーニングする。
【００７８】
ワーカーは、トレーニング済み子孫ニューラルネットワークの適合性を評価する(ステップ310)。
【００７９】
特に、システムは、検証サブセットにおいて、すなわち、ワーカーが子孫ニューラルネットワークをトレーニングするために使用するトレーニングサブセットとは異なるサブセットにおいて、トレーニング済み子孫ニューラルネットワークの適合性を決定することができる。
【００８０】
ワーカーは、それらのトレーニング例のターゲット出力を使用して、検証サブセット内のトレーニング例において、トレーニング済みニューラルネットワークによって生成されたモデル出力の適合性を評価することによって、トレーニング済み子孫ニューラルネットワークの適合性を評価する。
【００８１】
いくつかの実装形態では、ユーザは、たとえば精度測定、リコール測定、曲線測定下面積、二乗誤差測定、困惑度測定など、トレーニング済み子孫ニューラルネットワークの適合性を評価する際に使用される適合度を指定する。
【００８２】
他の実装形態では、システムは、システムによってサポートされる機械学習タスクの各々とそれぞれの適合度とを関連付ける、たとえば、ユーザによって選択可能な各機械学習タスクとそれぞれの適合度とを関連付けるデータを維持する。これらの実装形態では、システムは、各ワーカーに、ユーザ指定の機械学習タスクに関連付けられている適合度を使用するよう指示する。
【００８３】
ワーカーは、子孫コンパクト表現およびトレーニング済み子孫ニューラルネットワークの適合度をポピュレーションリポジトリに記憶する(ステップ312)。いくつかの実装形態では、ワーカーは、子孫コンパクト表現に関連して、ポピュレーションリポジトリにトレーニング済みニューラルネットワークのパラメータの訓練値も記憶する。
【００８４】
本明細書に記載された主題および機能的動作の実施形態は、デジタル電子回路、有形に実施されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組合せに実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行するため、またはデータ処理装置の動作を制御するための有形の非一時的プログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。代替的に、または追加として、プログラム命令は、たとえば、データ処理装置によって実行するための適切な受信機装置への送信のために情報を符号化するために生成された機械生成電気、光学、または電磁信号などの人工的に生成された伝搬信号上で符号化することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができる。しかしながら、コンピュータ記憶媒体は、伝搬信号ではない。
【００８５】
「データ処理装置」という用語は、たとえば、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイスおよび機械を包含する。装置は、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことができる。装置は、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むことができる。
【００８６】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれるまたは記述されることもある)は、コンパイルもしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に適した他のユニットとしてなど、任意の形式で展開できる。コンピュータプログラムは、必ずしも必要はないが、ファイルシステム内のファイルに対応し得る。プログラムは、問題のプログラム専用の単一のファイル、またはたとえば、1つまたは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイルなど、複数のコーディネートされたファイルに、たとえば、マークアップ言語文書に記憶された1つまたは複数のスクリプトなど、他のプログラムまたはデータを保持するファイルの一部に記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するか、もしくは複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備することができる。
【００８７】
本明細書で使用する「エンジン」または「ソフトウェアエンジン」は、入力とは異なる出力を提供するソフトウェア実装の入出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなどの機能の符号化ブロックとすることができる。各エンジンは、1つまたは複数のプロセッサおよびコンピュータ可読媒体を含むサーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子書籍リーダー、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または他の固定もしくは携帯型デバイスなど任意の適切なタイプのコンピューティングデバイス上に実装することができる。さらに、2つ以上のエンジンが同じコンピューティングデバイス上または異なるコンピューティングデバイス上に実装されてもよい。
【００８８】
本明細書に記述されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって機能を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実行することができる。プロセスおよび論理フローはまた、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によっても実行することができ、装置を専用論理回路として実装することもできる。
【００８９】
コンピュータプログラムの実行に適したコンピュータは、一例として、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、もしくはその両方、または他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実施または実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、たとえば磁気、光磁気ディスク、または光ディスクなど、データを記憶するための1つまたは複数の大容量記憶デバイスをも含み、あるいは、1つまたは複数の大容量記憶デバイスからデータを受信する、それにデータを転送する、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイス中に組み込むことができる。
【００９０】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、一例として、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、たとえば内部ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、メディアおよびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補うまたはそこに組み込むことができる。
【００９１】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにキーボードおよび、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってなど、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、ユーザと対話することができる。
【００９２】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンド構成要素を含む、またはアプリケーションサーバなどのミドルウェア構成要素を含む、またはたとえば、グラフィカルユーザインターフェースを有するクライアントコンピュータ、またはユーザが本明細書に記載された主題の実装と対話することができるウェブブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含む、または1つもしくは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムの構成要素は、たとえば、通信ネットワークなど、任意の形式または媒体のデジタルデータ通信によって相互接続することができる。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、たとえばインターネットがある。
【００９３】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般に、互いに遠隔であり、典型的には、通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムのおかげで生じる。
【００９４】
本明細書は、多くの具体的な実装形態の詳細を含むが、これらは、いかなる発明の範囲または特許請求の範囲に対する限定ではなく、むしろ特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈されるものとする。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で記載されている様々な特徴は、複数の実施形態で別々にまたは任意の適切な部分組合せで実装することもできる。さらに、特徴は、いくつかの組合せで作用するものとして上述され、当初はそのように請求され得るが、いくつかの場合に請求された組合せからの1つまたは複数の特徴を、組合せから切り取ることができ、請求された組合せは、部分組合せ、または部分組合せの変形を対象とし得る。
【００９５】
同様に、動作が特定の順序で図面に示されているが、これは、そのような動作が、示された特定の順序で、または逐次的な順序で実行されること、あるいは望ましい結果を達成するために、図示されたすべての動作が実行されることを必要とするものとして理解されないものとする。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上述した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものと理解されないものとし、記述されたプログラム構成要素およびシステムを、一般に、単一のソフトウェア製品に一緒に組み入れることができ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【００９６】
主題の特定の実施形態が記載されている。他の実施形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【００９７】
100  ニューラルネットワークアーキテクチャ最適化システム
102  トレーニングデータ
110  ポピュレーションリポジトリ
120  ワーカー
122  親コンパクト表現
124  子孫コンパクト表現
152  データ
200  プロセス
300  プロセス
【図１】
0006889270.tif 000002
【図２】
0006889270.tif 000003
【図３】
0006889270.tif 000004