(57)【要約】  ニューラルネットワークアーキテクチャを決定するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む方法、システム、および装置が開示される。本方法の1つは、コントローラニューラルネットワークを使用して、出力シーケンスのバッチを生成するステップであって、バッチ内の各出力シーケンスが、特定のニューラルネットワークタスクを実行するように構成される子ニューラルネットワークのそれぞれのアーキテクチャを定義するステップと、バッチ内の出力シーケンスごとに、出力シーケンスによって定義されたアーキテクチャを有する子ニューラルネットワークのそれぞれのインスタンスをトレーニングするステップと、特定のニューラルネットワークタスクにおける子ニューラルネットワークのトレーニング済みインスタンスの性能メトリックを決定するために、特定のニューラルネットワークタスクにおける子ニューラルネットワークのトレーニング済みインスタンスの性能を評価するステップと、コントローラニューラルネットワークのコントローラパラメータの現在値を調整するために、子ニューラルネットワークのトレーニング済みインスタンスの性能メトリックを使用するステップとを含む。
2019533257.tif 000002
【特許請求の範囲】
【請求項１】
複数のコントローラパラメータを有するコントローラニューラルネットワークを使用して、前記コントローラパラメータの現在値に従って、出力シーケンスのバッチを生成するステップであって、前記バッチ内の各出力シーケンスが、特定のニューラルネットワークタスクを実行するように構成される子ニューラルネットワークのそれぞれのアーキテクチャを定義する、ステップと、
前記バッチ内の出力シーケンスごとに、
前記特定のニューラルネットワークタスクを実行するために、前記出力シーケンスによって定義された前記アーキテクチャを有する前記子ニューラルネットワークのそれぞれのインスタンスをトレーニングするステップと、
前記特定のニューラルネットワークタスクにおける前記子ニューラルネットワークの前記トレーニング済みインスタンスの性能メトリックを決定するために、前記特定のニューラルネットワークタスクにおける前記子ニューラルネットワークの前記トレーニング済みインスタンスの性能を評価するステップと
を含み、
前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するために、前記子ニューラルネットワークの前記トレーニング済みインスタンスの前記性能メトリックを使用するステップと
を含む、方法。
【請求項２】
前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するために、前記子ニューラルネットワークの前記トレーニング済みインスタンスの前記性能メトリックを使用するステップが、
強化学習技法を使用して性能メトリックが向上した子ニューラルネットワークをもたらす出力シーケンスを生成するように、前記コントローラニューラルネットワークをトレーニングするステップ
を含む、請求項1に記載の方法。
【請求項３】
前記強化学習技法がポリシー勾配技法である、請求項2に記載の方法。
【請求項４】
前記強化学習技法がREINFORCE技法である、請求項3に記載の方法。
【請求項５】
各出力シーケンスが、複数の時間ステップの各々における前記子ニューラルネットワークのそれぞれのハイパーパラメータについての値を含む、請求項1〜4のいずれか一項に記載の方法。
【請求項６】
前記コントローラニューラルネットワークが、
所与の出力シーケンスについて、各時間ステップで、
前記所与の出力シーケンスにおける前記前の時間ステップでハイパーパラメータの前記値を入力として受信し、かつリカレントニューラルネットワークの現在の隠れ状態を更新するように、前記入力を処理する
ように構成される1つまたは複数のリカレントニューラルネットワーク層と、
時間ステップごとのそれぞれの出力層であって、各出力層が、前記所与の出力シーケンスについて、
前記時間ステップで前記更新された隠れ状態を含む出力層入力を受信し、かつ前記時間ステップで前記ハイパーパラメータの可能な値にわたるスコア分布を定義する前記時間ステップの出力を生成する
ように構成されるそれぞれの出力層と
を含むリカレントニューラルネットワークである、請求項5に記載の方法。
【請求項７】
複数のコントローラパラメータを有するコントローラニューラルネットワークを使用して、前記コントローラパラメータの現在値に従って、出力シーケンスのバッチを生成するステップが、前記バッチ内の出力シーケンスごとに、および前記複数の時間ステップの各々について、
前記時間ステップでの前記ハイパーパラメータの可能な値にわたるスコア分布を定義する前記時間ステップの出力を生成するために前記出力シーケンス内の前記前の時間ステップにおける前記ハイパーパラメータの前記値を、前記コントローラニューラルネットワークへの入力として提供ステップと、
前記出力シーケンス内の前記時間ステップにおける前記ハイパーパラメータの前記値を決定するために前記スコア分布に従って前記可能な値からサンプリングするステップと
を含む、請求項6に記載の方法。
【請求項８】
前記子ニューラルネットワークが畳み込みニューラルネットワークであり、前記ハイパーパラメータが、前記子ニューラルネットワーク内の各畳み込みニューラルネットワーク層のハイパーパラメータを含む、請求項5〜7のいずれか一項に記載の方法。
【請求項９】
前記畳み込みニューラルネットワーク層の各々についての前記ハイパーパラメータが、
フィルタの数、
フィルタごとのフィルタ高さ、
フィルタごとのフィルタ幅、
フィルタごとのストライド高さ、または
フィルタごとのストライド幅
のうちの1つまたは複数を含む、請求項8に記載の方法。
【請求項１０】
前記子ニューラルネットワークが複数の層タイプを含み、前記ハイパーパラメータが、層ごとに、前記層のタイプに対応する値を含む、請求項5〜9のいずれか一項に記載の方法。
【請求項１１】
前記層のうちの1つまたは複数の各々について、前記ハイパーパラメータが、どの以前の層が前記層へのスキップ接続を有するかを定義するスキップ接続ハイパーパラメータを含む、請求項5〜10のいずれか一項に記載の方法。
【請求項１２】
前記複数の時間ステップが、前記ハイパーパラメータがスキップ接続ハイパーパラメータである前記1つまたは複数の層の各々について、それぞれのアンカーポイント時間ステップを含み、現在の層の前記アンカーポイント時間ステップについて、前記出力層が、
前記子ニューラルネットワーク内の前記現在の層よりも前の各層に対応するそれぞれのノードを含み、各ノードが、
前記対応する以前の層が前記子ニューラルネットワーク内の前記現在の層に接続される尤度を表すスコアを生成するためのパラメータのセットの現在値に従って、前記アンカーポイントステップについての前記更新された隠れ状態、および前記対応する以前の層の前記アンカーポイント時間ステップについての前記更新された隠れ状態を処理する
ように構成される、
請求項11に記載の方法。
【請求項１３】
前記子ニューラルネットワークがリカレントニューラルネットワークであり、前記出力シーケンスが、前記リカレントニューラルネットワーク内のリカレントセルのアーキテクチャを定義する、請求項1〜7のいずれか一項に記載の方法。
【請求項１４】
前記出力シーケンスが、前記リカレントセルによって実行される前記計算を表す計算ステップのツリー内のノードごとのそれぞれの計算ステップを含む、請求項12に記載の方法。
【請求項１５】
前記ツリー内の各ノードが、2つの入力をマージして出力を生成し、ノードごとに、前記出力シーケンスが、前記2つの入力を結合するための結合方法と、前記出力を生成するための前記2つの入力の前記結合に適用されるべきアクティブ化関数とを識別するデータを含む、請求項14に記載の方法。
【請求項１６】
前記出力シーケンスが、前記セルのメモリ状態が前記セルにどのようにインジェクトされるかを定義する値を含む、請求項14または15に記載の方法。
【請求項１７】
前記コントローラパラメータの前記調整された値に従って、前記子ニューラルネットワークの最終アーキテクチャを定義する最終出力シーケンスを生成するステップ
をさらに含む、請求項1〜16のいずれか一項に記載の方法。
【請求項１８】
前記最終アーキテクチャを有する子ニューラルネットワークを使用して受信されたネットワーク入力を処理することによって、前記受信されたネットワーク入力について前記特定のニューラルネットワークタスクを実行するステップ
をさらに含む、請求項17に記載の方法。
【請求項１９】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1〜18のいずれか一項に記載の前記それぞれの方法の前記動作を実行させる命令を記憶する1つまたは複数の記憶デバイスとを備える、システム。
【請求項２０】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1〜18のいずれか一項に記載の前記それぞれの方法の前記動作を実行させる命令を記憶する、1つまたは複数のコンピュータ記憶媒体。
【請求項２１】
システムであって、
1つまたは複数のコンピュータによって実施されるコントローラニューラルネットワークであって、前記コントローラニューラルネットワークが、
特定のニューラルネットワークタスクを実行するように構成される子ニューラルネットワークのアーキテクチャを定義するハイパーパラメータ値の出力シーケンス内の各時間ステップにおいて、
前記出力シーケンス内の前記前の時間ステップに対応する前記子ニューラルネットワークのハイパーパラメータの値を入力として受信し、
リカレントニューラルネットワークの現在の隠れ状態を更新するように、前記入力を処理する
ように構成される1つまたは複数のリカレントニューラルネットワーク層
を含むリカレントニューラルネットワークであるコントローラニューラルネットワークと、
前記出力シーケンス内の各時間ステップに対応するそれぞれの出力層であって、各出力層が、
前記対応する時間ステップにおいて前記更新された隠れ状態を含む出力層入力を受信し、前記対応する時間ステップに対応する前記子ニューラルネットワークのハイパーパラメータの可能な値にわたるスコア分布を定義する前記対応する時間ステップの出力を生成する
ように構成される、出力層と
を含む、システム。
【請求項２２】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項21に記載の前記システムを実装させる命令を記憶する1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ニューラルネットワークアーキテクチャの修正に関する。
【背景技術】
【０００２】
ニューラルネットワークは、非線形ユニットの1つまたは複数の層を使用して、受信された入力の出力を予測する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在値に従って受信された入力から出力を生成する。
【０００３】
いくつかのニューラルネットワークは、リカレントニューラルネットワークである。リカレントニューラルネットワークは、入力シーケンスを受信し、その入力シーケンスから出力シーケンスを生成するニューラルネットワークである。特に、リカレントニューラルネットワークは、現在の時間ステップにおける出力を計算する際に、前の時間ステップからのネットワークの内部状態の一部または全部を使用することができる。リカレントニューラルネットワークの一例は、1つまたは複数のLSTMメモリブロックを含むロングショートターム(LSTM)ニューラルネットワークである。各LSTMメモリブロックは、たとえば現在のアクティブ化を生成する際に使用するために、またはLSTMニューラルネットワークの他の構成要素に提供されるように、セルがセルの以前の状態を記憶することを可能にする入力ゲート、忘却ゲート、および出力ゲートを各々含む1つまたは複数のセルを含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書は、コントローラニューラルネットワークを使用して、特定のニューラルネットワークタスクを実行するように構成される子ニューラルネットワークのアーキテクチャを、1つまたは複数の場所における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムがどのように決定できるかを説明する。
【０００５】
本明細書に記載される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実施することができる。システムは、効果的かつ自動的に、すなわちユーザ介入なしに、特定のタスクについて高性能のニューラルネットワークをもたらすことになるニューラルネットワークアーキテクチャを選択することができる。システムは、特定のタスクに適合する新規のニューラルネットワークアーキテクチャを効果的に決定することができ、結果として得られる子ニューラルネットワークがそのタスクに関して改善された性能を有することを可能にする。システムは、強化学習を介してコントローラニューラルネットワークをトレーニングすることによってアーキテクチャを決定するので、システムは、特定のタスクに適合する子ニューラルネットワークのアーキテクチャを識別するために、大空間の可能なアーキテクチャを効果的に探索することができる。
【０００６】
本明細書に記載の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】例示的なニューラルアーキテクチャ検索システムを示す図である。
【図２Ａ】出力シーケンスを生成するコントローラニューラルネットワークの一例の図である。
【図２Ｂ】スキップ接続を含むアーキテクチャを定義する出力シーケンスを生成するコントローラニューラルネットワークの一例の図である。
【図２Ｃ】リカレントセルのアーキテクチャを定義する出力シーケンスを生成するコントローラニューラルネットワークの一例の図である。
【図３】コントローラパラメータの現在値を更新するための例示的なプロセスのフロー図である。
【発明を実施するための形態】
【０００８】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【０００９】
本明細書は、コントローラニューラルネットワークを使用して、特定のニューラルネットワークタスクを実行するように構成される子ニューラルネットワークのアーキテクチャを決定する、1つまたは複数の場所における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムを記載する。
【００１０】
子ニューラルネットワークは、任意の種類のデジタルデータ入力を受信し、その入力に基づいて、任意の種類のスコア、分類、または回帰出力を生成するように構成することができる。
【００１１】
たとえば、子ニューラルネットワークへの入力が、画像、または画像から抽出された特徴である場合、所与の画像について子ニューラルネットワークによって生成された出力は、オブジェクトカテゴリのセットの各々についてのスコアでもよく、各スコアは、画像がカテゴリに属するオブジェクトの画像を含む推定尤度を表す。
【００１２】
別の例として、子ニューラルネットワークへの入力がインターネットリソース(たとえばウェブページ)、ドキュメント、またはドキュメントの一部、あるいはインターネットリソース、ドキュメント、またはドキュメントの一部から抽出された特徴である場合、所与のインターネットリソース、ドキュメント、またはドキュメントの一部について、子ニューラルネットワークによって生成された出力は、トピックのセットの各々についてのスコアでもよく、各スコアは、インターネットリソース、ドキュメント、またはドキュメントの一部がトピックに関するものである推定尤度を表す。
【００１３】
別の例として、子ニューラルネットワークへの入力が特定の広告についての印象コンテキストの特徴である場合、子ニューラルネットワークによって生成された出力は、その特定の広告がクリックされる推定尤度を表すスコアでもよい。
【００１４】
別の例として、子ニューラルネットワークへの入力が、あるユーザのためにパーソナライズされた推奨の特徴、たとえばその推奨のコンテキストを特徴付ける特徴、たとえばユーザによってとられた以前のアクションを特徴付ける特徴である場合、子ニューラルネットワークによって生成された出力は、コンテンツアイテムのセットの各々についてのスコアでもよく、各スコアは、ユーザがコンテンツアイテムを勧められることに好意的に応答する推定尤度を表す。
【００１５】
別の例として、子ニューラルネットワークへの入力が1つの言語のテキストのシーケンスである場合、子ニューラルネットワークによって生成された出力は、別の言語のテキストのセットの各々についてのスコアでもよく、各スコアは、他の言語のテキストが他の言語への入力テキストの適切な変換であるという推定尤度を表す。
【００１６】
別の例として、子ニューラルネットワークへの入力が話し言葉を表すシーケンスである場合、子ニューラルネットワークによって生成された出力は、テキストのセットの各々についてのスコアでもよく、各スコアは、テキストが発話の正確な転写である推定尤度を表す。
【００１７】
図1は、例示的なニューラルアーキテクチャ検索システム100を示す。ニューラルアーキテクチャ検索システム100は、以下に説明するシステム、構成要素、および技法を実装することができる1つまたは複数の場所における1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの一例である。
【００１８】
ニューラルアーキテクチャ検索システム100は、特定のタスクを実行するようにニューラルネットワークをトレーニングするためのトレーニングデータ102と、特定のタスクにおけるニューラルネットワークの性能を評価するための検証セット104とを取得し、トレーニングデータ102および検証セット104を使用して、特定のタスクを実行するように構成される子ニューラルネットワークのアーキテクチャを決定するシステムである。アーキテクチャは、子ニューラルネットワーク内の層の数、層の各々によって実行される動作、および子ニューラルネットワーク内の層間の接続、すなわちどの層が子ニューラルネットワーク内の他のどの層から入力を受信するかを定義する。
【００１９】
一般に、トレーニングデータ102と検証セット104はいずれも、ニューラルネットワーク入力のセットと、各ネットワーク入力について、特定のタスクを実行するために子ニューラルネットワークによって生成されるべきそれぞれのターゲット出力とを含む。たとえば、トレーニングデータ102および検証セット104を生成するために、トレーニングデータのより大きいセットがランダムに区分されてもよい。
【００２０】
システム100は、様々な方法のうちのいずれかでトレーニングデータ102および検証セット104を受信することができる。たとえば、システム100は、たとえばシステム100によって利用可能にされるアプリケーションプログラミングインターフェース(API)を使用して、データ通信ネットワークを介してシステムの遠隔ユーザからアップロードとしてトレーニングデータを受信し、アップロードされたデータをトレーニングデータ102および検証セット104にランダムに分割することができる。別の例として、システム100は、システム100によってすでに維持されているどのデータを、ニューラルネットワークをトレーニングするために使用すべきかを指定するユーザからの入力を受信し、次いで指定されたデータをトレーニングデータ102および検証セット104に分割することができる。
【００２１】
ニューラルアーキテクチャ検索システム100は、コントローラニューラルネットワーク110、トレーニングエンジン120、およびコントローラパラメータ更新エンジン130を含む。
【００２２】
コントローラニューラルネットワーク110は、本明細書では「コントローラパラメータ」と呼ばれるパラメータを有し、コントローラパラメータに従って出力シーケンスを生成するように構成されるニューラルネットワークである。コントローラニューラルネットワーク110によって生成された各出力シーケンスは、子ニューラルネットワークのそれぞれの可能なアーキテクチャを定義する。
【００２３】
特に、各出力シーケンスは、複数の時間ステップの各々におけるそれぞれの出力を含み、出力シーケンスにおける各時間ステップは、子ニューラルネットワークのアーキテクチャの異なるハイパーパラメータに対応する。したがって、各出力シーケンスは、各時間ステップにおいて、対応するハイパーパラメータのそれぞれの値を含む。集合的に、所与の出力シーケンスにおけるハイパーパラメータの値は、子ニューラルネットワークのアーキテクチャを定義する。一般に、ハイパーパラメータは、子ニューラルネットワークのトレーニングの開始前に設定され、子ニューラルネットワークによって実行される動作に影響を与える値である。出力シーケンスおよび可能なハイパーパラメータは、図2A〜図2Cを参照して以下でより詳細に説明される。
【００２４】
一般に、システム100は、コントローラパラメータの値を調整するようにコントローラニューラルネットワーク110をトレーニングすることによって、子ニューラルネットワークのアーキテクチャを決定する。
【００２５】
特に、トレーニング手順の反復中、システム100は、コントローラパラメータの現在値に従って、コントローラニューラルネットワーク110を使用して、シーケンスのバッチ112を生成する。バッチ112内の出力シーケンスごとに、トレーニングエンジン120は、トレーニングデータ102における出力シーケンスによって定義されたアーキテクチャを有する子ニューラルネットワークのインスタンスをトレーニングし、検証セット104におけるトレーニング済みインスタンスの性能を評価する。次いで、コントローラパラメータ更新エンジン130は、タスクにおいてコントローラニューラルネットワーク110によって生成された出力シーケンスによって定義されるアーキテクチャの予想性能を向上させるためにコントローラパラメータの現在値を更新するために、バッチ112内の出力シーケンスの評価の結果を使用する。トレーニング済みインスタンスの性能を評価し、コントローラパラメータの現在値を更新することは、図3を参照して以下でより詳細に説明される。
【００２６】
このようにしてコントローラパラメータの値を繰り返し更新することによって、システム100は、特定のタスクにおいて性能が向上した子ニューラルネットワークをもたらす出力シーケンスを生成するように、すなわちコントローラニューラルネットワーク110によって提案されたアーキテクチャの検証セット104における予想精度を最大にするようにコントローラニューラルネットワーク110をトレーニングすることができる。
【００２７】
コントローラニューラルネットワーク110がトレーニングされると、システム100は、検証セット104において最良に機能したアーキテクチャを子ニューラルネットワークの最終アーキテクチャとして選択することができ、またはコントローラパラメータのトレーニング済みの値に従って新しい出力シーケンスを生成し、新しい出力シーケンスによって定義されたアーキテクチャを子ニューラルネットワークの最終アーキテクチャとして使用することができる。
【００２８】
次いで、ニューラルネットワーク検索システム100は、子ニューラルネットワークのアーキテクチャを指定するアーキテクチャデータ150、すなわち子ニューラルネットワークの一部である層、層間の接続、および層によって実行される動作を指定するデータを出力することができる。たとえば、ニューラルネットワーク検索システム100は、アーキテクチャデータ150をトレーニングデータを提出したユーザに出力することができる。いくつかの場合には、データ150は、アーキテクチャを有していた子ニューラルネットワークのトレーニング済みインスタンスのトレーニングからの子ニューラルネットワークのパラメータのトレーニング済みの値も含む。
【００２９】
いくつかの実装形態では、アーキテクチャデータ150を出力する代わりに、またはそれに加えて、システム100は、たとえば最初から、またはアーキテクチャを有する子ニューラルネットワークのインスタンスのトレーニングの結果として生成されたパラメータ値を微調整するために、決定されたアーキテクチャを有するニューラルネットワークのインスタンスをトレーニングし、次いでトレーニングされたニューラルネットワークを使用して、たとえばシステムによって提供されるAPIを介して、ユーザによって受信された要求を処理する。すなわち、システム100は、処理されるべき入力を受信し、トレーニングされた子ニューラルネットワークを使用して入力を処理し、受信された入力に応答して、トレーニングされたニューラルネットワークによって生成された出力、または生成された出力から導出されたデータを提供することができる。
【００３０】
いくつかの実装形態では、システム100は、分散的な方法でコントローラニューラルネットワークをトレーニングする。すなわち、システム100は、コントローラニューラルネットワークの複数の複製を含む。トレーニングが分散されるこれらの実装形態のいくつかにおいて、各複製は、複製によって出力された出力シーケンスのバッチについての性能メトリックを生成する専用トレーニングエンジンと、性能メトリックを使用してコントローラパラメータに対する更新を決定する専用コントローラパラメータ更新エンジンとを有する。コントローラパラメータ更新エンジンがひとたび更新を決定すると、コントローラパラメータ更新エンジンは、その更新をすべてのコントローラパラメータ更新エンジンにアクセス可能な中央パラメータ更新サーバに送信することができる。中央パラメータ更新サーバは、サーバによって維持されるコントローラパラメータの値を更新し、更新された値をコントローラパラメータ更新エンジンに送信することができる。いくつかの場合には、複数の複製の各々、ならびにそれらの対応するトレーニングエンジンおよびパラメータ更新エンジンは、トレーニングエンジンおよびパラメータ更新エンジンの他の各セットとは非同期に動作することができる。
【００３１】
図2Aは、出力シーケンスを生成するコントローラニューラルネットワーク110の一例の図200である。
【００３２】
特に、図200は、出力シーケンスの生成中、7つの例示的な時間ステップ202〜214の間にコントローラニューラルネットワーク110によって実行される処理を示す。以下でより詳細に説明されるように、7つの時間ステップ202〜214の各々は、ニューラルネットワークアーキテクチャの異なるハイパーパラメータに対応する。
【００３３】
コントローラニューラルネットワーク110は、各時間ステップについて、所与の出力シーケンスにおいて前の時間ステップに対応するハイパーパラメータの値を入力として受信し、リカレントニューラルネットワークの現在の隠れ状態を更新するように入力を処理するように構成される、1つまたは複数のリカレントニューラルネットワーク層、たとえば層220および230を含むリカレントニューラルネットワークである。たとえば、コントローラニューラルネットワーク110内のリカレント層は、長短期記憶(LSTM)層またはゲート型リカレントユニット(GRU)層とすることができる。図2Aの例では、時間ステップ208において、層220および230は、前の時間ステップ206からハイパーパラメータの値を入力として受信し、時間ステップ206から層220および230の隠れ状態を更新して、更新された隠れ状態232を出力として生成する。
【００３４】
コントローラニューラルネットワーク110はまた、出力シーケンスにおける時間ステップごとのそれぞれの出力層、たとえばそれぞれ時間ステップ202〜214の出力層242〜254を含む。出力層の各々は、時間ステップで更新された隠れ状態を含む出力層入力を受信し、時間ステップにおけるハイパーパラメータの可能な値にわたるスコア分布を定義する時間ステップの出力を生成するように構成される。たとえば、各出力層は、まず出力層入力を対応するハイパーパラメータの可能な値の数に適切な寸法に投影し、次いで投影された出力層入力にソフトマックスを適用して、時間ステップでのハイパーパラメータの複数の可能な値の各々についてそれぞれのスコアを生成することができる。たとえば、時間ステップ208の出力層248は、隠れ状態232を含む入力を受信し、ストライド高さハイパーパラメータの複数の可能な値の各々についてそれぞれのスコアを生成するように構成される。
【００３５】
したがって、出力シーケンス内の所与の時間ステップについてのハイパーパラメータ値を生成するために、システム100は、出力シーケンス内の前の時間ステップにおけるハイパーパラメータの値をコントローラニューラルネットワークへの入力として提供し、コントローラニューラルネットワークは、時間ステップでのハイパーパラメータの可能な値にわたるスコア分布を定義する時間ステップの出力を生成する。出力シーケンスにおける最初の時間ステップでは、前の時間ステップがないので、システム100は、代わりに所定のプレースホルダー入力を提供することができる。次いで、システム100は、出力シーケンス内の時間ステップにおけるハイパーパラメータの値を決定するために、スコア分布に従って、可能な値からサンプリングする。所与のハイパーパラメータがとり得る可能な値は、トレーニングの前に固定されており、可能な値の数は、異なるハイパーパラメータごとに異なる可能性がある。
【００３６】
一般に、所与の出力シーケンスによって定義されるアーキテクチャに含まれるべき層の数は、シーケンスを生成する前に固定されている。いくつかの実装形態では、コントローラニューラルネットワークのトレーニング中に生成された出力シーケンスによって定義された各アーキテクチャは同じ数の層を有する。他の実装形態では、システムは、トレーニングが進行するにつれて子ニューラルネットワーク内の層の数を増やすスケジュールを使用する。一例として、システムは、6層から始めて、トレーニング中に、1,600サンプルごとに1つまたは複数の層だけ深さを増すことができる。
【００３７】
図2Aの例では、子ニューラルネットワークは、畳み込みニューラルネットワークであり、ハイパーパラメータは、子ニューラルネットワーク内の各畳み込みニューラルネットワーク層のハイパーパラメータを含む。特に、図2Aでは、時間ステップ202は、子ニューラルネットワークの畳み込み層N-1のハイパーパラメータに対応し、時間ステップ204〜212は、畳み込み層Nのハイパーパラメータに対応し、時間ステップ214は、畳み込み層N+1のハイパーパラメータに対応する。たとえば、畳み込み層は、スタック状に配置されてもよく、層Nが層N-1によって生成された出力を入力として受信し、層N+1への入力として提供される出力を生成する。
【００３８】
図2Aの例では、畳み込み層の場合、層によって実行される動作を定義するハイパーパラメータは、層のフィルタの数、フィルタごとのフィルタ高さ、フィルタごとのフィルタ幅、各フィルタを適用するためのストライド高さ、およびフィルタごとのストライド幅である。他の例では、これらのうちのいくつかを除去することができ、たとえばこれらのハイパーパラメータのうちのいくつかが固定されていると仮定することができ、他のハイパーパラメータ、たとえばアクティブ化関数のタイプ、畳み込みが拡張またはマスクされるかどうかなどを追加することができ、またはその両方とすることができる。
【００３９】
例示的な一実装形態では、フィルタ高さの可能な値は[1、3、5、7]、フィルタ幅の可能な値は[1、3、5、7]、フィルタの数の可能な値は[24、36、48、64]、およびストライド高さと幅の可能な値は[1、2、3]である。
【００４０】
図2Aの例では、子ニューラルネットワーク内の層の構成、すなわちどの層が他のどの層から層を受信するかは固定されている。しかしながら、他の例では、ハイパーパラメータは、子ニューラルネットワーク内の層間の接続を定義するハイパーパラメータを含む。
【００４１】
図2Bは、スキップ接続を含むアーキテクチャを定義する出力シーケンスを生成するコントローラニューラルネットワーク110の一例の図250である。
【００４２】
特に、図2Bの例では、子ニューラルネットワーク内の1つまたは複数の層について、ハイパーパラメータは、どの以前の層がその層へのスキップ接続を有するかを定義するスキップ接続ハイパーパラメータを含む。より具体的には、出力シーケンス内の時間ステップは、たとえば層N-1の時間ステップ252および層Nの時間ステップ254などのハイパーパラメータがスキップ接続ハイパーパラメータである1つまたは複数の層の各々についてのそれぞれのアンカーポイント時間ステップを含む。
【００４３】
所与の層についての所与のアンカーポイント時間ステップの出力層は、子ニューラルネットワーク内の現在の層よりも前の各層に対応するそれぞれのノードを含む。ノードの各々は、対応する以前の層が子ニューラルネットワーク内の現在の層に接続される尤度を表すスコアを生成するためのパラメータのセットに従って、(i)アンカーポイントステップについての更新された隠れ状態、および(ii)対応する以前の層、すなわちノードに対応する以前の層のアンカーポイント時間ステップについての更新された隠れ状態を処理するように構成される。たとえば、以前の層jに対応する層iの出力層内のノードは、以下を満たす、対応する以前の層のスコアを生成することができる。
P(層jは層iへの入力)=sigmoid(vTtanh(Wprev*hj+Wcurr*hi))
ここで、vT、Wprev、およびWcurrは、ノードのパラメータであり、hjは対応する以前の層jについてのアンカーポイント時間ステップの更新された隠れ状態であり、hiは層iについてのアンカーポイント時間ステップの更新された隠れ状態である。
【００４４】
次いで、システム100は、以前の層に対応するノードによって生成されたスコアに従って、yesまたはnoのいずれかをサンプリングすることによって、その層がスキップ接続を有する所与の層に接続されるかどうかを判定する。システムが、複数の層が所与の層に接続されるべきであると決定した場合、すべての複数の層によって生成された出力は、所与の層への入力を生成するために深さ寸法で連結される。ある層が別の層と互換性がない場合、スキップ接続が「コンパイル失敗」を引き起こさないこと、およびネットワークが、いかなる入力または出力も有さないいかなる層も含まないことを確実にするために、(i)層が任意のいかなる入力層にも接続されていない場合、ネットワーク入力がその層への入力として使用され、(ii)最後の層では、システムは、未接続のすべての層出力を取り出し、それらを連結してから、最終的な連結された出力をネットワークの出力層に送信し、(iii)連結されるべき入力が異なるサイズを有する場合、システムは、連結されるべき入力が同じサイズを有するように、小さい層をゼロでパディングする。
【００４５】
いくつかの例では、子ニューラルネットワークは、複数の異なる層タイプを含む。たとえば、子ニューラルネットワークは、他の種類のニューラルネットワーク層、たとえば完全に接続された層、プーリング層、深度連結層、局所コントラスト正規化、バッチ正規化、出力層、たとえばソフトマックス層または他の分類子層などをも含む畳み込みニューラルネットワークとすることができる。
【００４６】
これらの例のいくつかにおいて、これらの他の層の位置およびハイパーパラメータは固定されており、出力シーケンスは、子ニューラルネットワーク内の畳み込みニューラルネットワーク層についてのハイパーパラメータ値のみを含む。たとえば、出力層の位置は、子ニューラルネットワーク内の最後の層として固定されていてもよく、畳み込み層のいくつかまたはすべての後にバッチ正規化層があってもよく、またはその前にバッチ正規化層があってもよい。
【００４７】
これらの例のうちの他の例では、出力シーケンスによって定義されるハイパーパラメータは、層ごとに層のタイプに対応する値を含む。異なるタイプの層は異なるハイパーパラメータを有するので、これらの例では、システムは、所与の層について、どのタイプのニューラルネットワーク層が選択されるかに基づいて、出力シーケンスの生成中に、どのハイパーパラメータがどの時間ステップに動的に対応するかを決定する。つまり、システムが所与の時間ステップでの出力層として使用する出力層は、最後にサンプリングされた層タイプのハイパーパラメータの値によって決まる。
【００４８】
いくつかの例では、子ニューラルネットワークは、リカレントニューラルネットワークである。これらの場合、出力シーケンスは、リカレントセルのアーキテクチャを定義することができ、リカレントセルは、ニューラルネットワークのアーキテクチャを生成するために、子ニューラルネットワーク内で複数回繰り返されることが可能である。上記で説明したように、いくつかの場合には、反復数は、トレーニングを通じて固定され、他の場合には、システムは、トレーニングが進行するにつれて反復数を増加させる。
【００４９】
図2Cは、リカレントセルのアーキテクチャを定義する出力シーケンスを生成するコントローラニューラルネットワーク110の一例の図270である。
【００５０】
特に、図2Cの例では、出力シーケンスは、リカレントセルによって実行される計算を表す計算ステップのツリー内のノードごとのそれぞれの計算ステップを含む。リカレントセルは、2つの入力、前の時間ステップからのセルの出力と現在の時間ステップについての入力、すなわちその時間ステップにおける子ネットワークへの入力、または子ネットワークの別の構成要素によって生成された出力を受信する。リカレントセルは、セル出力を生成するようにこれら2つの入力を処理する。以下で説明するように、いくつかの場合には、リカレントセルはまた、第3の入力であるメモリ状態を受信する。
【００５１】
具体的には、図2Cの例では、出力シーケンスは、ツリーの3つのノード、すなわちツリーインデックス0における1つのリーフノード、ツリーインデックス1における別のリーフノード、およびツリーインデックス2における内部ノードの設定を定義する。
【００５２】
ツリーにおける各ノードは、2つの入力をマージして出力を生成し、ノードごとに、出力シーケンスは、(i)2つの入力を組み合わせるための結合方法を識別するデータ、および(ii)出力を生成するために2つの入力の結合に適用されるべきアクティブ化関数を含む。一般に、セル内のリーフノードは、最初にセルへの2つの入力の各々にそれぞれのパラメータ行列を適用し、一方内部ノードはいかなるパラメータも有さない。上記で説明したように、結合方法は、たとえば[add; element wise multiply]などの可能な結合方法のセットから選択され、アクティブ化関数は、たとえば[identity; tanh; sigmoid; relu]などの可能なアクティブ化関数のセットから選択される。
【００５３】
たとえば、ツリーインデックス0におけるリーフノードでは、システムは、結合関数として"add"を選択し、アクティブ化関数として"tanh"を選択したので、セルのツリーインデックス0におけるリーフノードは、以下の動作を実行して出力a0を生成してもよい。
a0=tanh(W1*xt+W2*ht-1)
ここで、W1およびW2はノードのパラメータ行列、xtは、時間ステップでのセルへの入力、およびht-1は前の時間ステップからのセルの出力である。
【００５４】
ツリーインデックス2におけるノードでは、セルがメモリ状態を有していないとき、図2Cの例は、ノードへの2つの入力、すなわち2つのリーフノードの出力が要素ごとに乗算され、要素ごとのシグモイド関数が要素ごとの乗算の出力に適用されて、内部ノードの出力、すなわちセルの出力を生成することを指定する。
【００５５】
オプションで、セルのアーキテクチャは、前のメモリ状態を入力として受信することをも含んでもよい。このような場合、出力シーケンスはまた、セルのメモリ状態がどのようにセルにインジェクトされるか、すなわち前のメモリ状態がどのように更新されるか、およびツリー内の次のノードに渡される前に、前のメモリ状態を使用して変更される出力をどのノードが有するかを定義する値を含む。
【００５６】
特に、出力シーケンスはまた、ノードについての更新された出力を生成するために、前のメモリ状態がツリー内のノードのうちの1つの出力とどのように組み合わされるかを指定する2つのセルインジェクト値、すなわち結合方法、および結合のためのアクティブ化関数、ならびに(i)メモリ状態を使用して出力が更新されるノードと、(ii)(ノードについてのアクティブ化関数の適用前に)出力が更新されたメモリ状態に設定されるべきノードとを指定する2つのセルインデックス値を含む。
【００５７】
図2Cの例では、第2のセルインデックスのために生成された値が0であり、インジェクションのための結合方法がaddであり、アクティブ化関数がReLUであるので、セルは、前のセル状態、およびツリーインデックス0におけるノードの出力(上記でa0と呼ばれる)を追加し、次いでツリーインデックス0におけるノードの更新された出力を生成するために、その合計にReLUを適用することができる。セルは、次いで更新された出力を、ツリーインデックス2におけるノードへの入力として提供することができる。
【００５８】
最初のセルインデックスのために生成された値は1なので、アクティブ化関数が適用される前に、セルは、更新されたメモリ状態をインデックス1におけるツリーの出力に設定する。
【００５９】
図2Cは、説明を容易にするために、ツリーが2つのリーフノードを含む一例を示すが、実際にはリーフノードの数はもっと大きくてもよく、たとえば4、8、または16であってもよい。
【００６０】
図3は、コントローラパラメータの現在値を更新するための例示的なプロセス300のフロー図である。便宜上、プロセス300は、1つまたは複数の場所にある1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、適切にプログラムされた、ニューラルアーキテクチャ検索システム、たとえば図1のニューラルアーキテクチャ検索システム100は、プロセス300を実行することができる。
【００６１】
システムは、コントローラニューラルネットワークをトレーニングする、すなわちコントローラパラメータの初期値からコントローラパラメータのトレーニング済みの値を決定するために、プロセス300を繰り返し実行することができる。
【００６２】
システムは、コントローラニューラルネットワークを使用して、反復時点におけるコントローラパラメータの現在値に従って、出力シーケンスのバッチを生成する(ステップ302)。バッチ内の各出力シーケンスは、子ニューラルネットワークのそれぞれのアーキテクチャを定義する。特に、上記で説明したように、システムは、出力シーケンス内の各ハイパーパラメータ値を生成するとき、スコア分布からサンプリングするので、バッチ内のシーケンスは、たとえそれらが各々同じコントローラパラメータ値に従って生成されたとしても一般に異なる。バッチは一般に、所定数の出力シーケンス、たとえば8、16、32、または64のシーケンスを含む。
【００６３】
バッチ内の出力シーケンスごとに、システムは、特定のニューラルネットワークタスクを実行するために、出力シーケンスによって定義されたアーキテクチャを有する子ニューラルネットワークのインスタンスをトレーニングする(ステップ304)。すなわち、バッチ内の出力シーケンスごとに、システムは、出力シーケンスによって定義されたアーキテクチャを有するニューラルネットワークをインスタンス化し、受信されたトレーニングデータにおいてインスタンスをトレーニングして、たとえば逆伝播法または通時的誤差逆伝播法(backpropagation-through-time)による確率的勾配降下法などのタスクに適した従来の機械学習トレーニング技法を使用して、特定のニューラルネットワークタスクを実行する。いくつかの実装形態では、システムは、子ニューラルネットワークのトレーニングを並列化してコントローラニューラルネットワークの全体的なトレーニング時間を短縮する。システムは、指定された時間量または指定された回数のトレーニング反復について、それぞれの子ニューラルネットワークをトレーニングすることができる。
【００６４】
バッチ内の出力シーケンスごとに、システムは、特定のニューラルネットワークタスクにおける子ニューラルネットワークの対応するトレーニング済みインスタンスの性能を評価して、特定のニューラルネットワークタスクにおけるトレーニング済みインスタンスの性能メトリックを決定する(ステップ306)。たとえば、性能メトリックは、適切な精度基準によって測定された検証セットにおけるトレーニング済みインスタンスの精度とすることができる。たとえば、精度は、出力がシーケンスであるときは当惑基準であり、またはタスクが分類タスクであるときは分類誤り率とすることができる。別の例として、性能メトリックは、インスタンスのトレーニングの最後の2、5、または10のエポックの各々について、インスタンスの精度の平均または最大値とすることができる。
【００６５】
システムは、コントローラパラメータの現在値を調整するために、トレーニング済みインスタンスの性能メトリックを使用する(ステップ308)。
【００６６】
特に、システムは、強化学習技法を使用して性能メトリックが向上した子ニューラルネットワークをもたらす出力シーケンスを生成するように、コントローラニューラルネットワークをトレーニングすることによって現在値を調整する。より具体的には、システムは、コントローラニューラルネットワークを訓練して、トレーニング済みインスタンスの性能メトリックに基づいて決定された受け取られた報酬を最大にする出力シーケンスを生成する。特に、所与の出力シーケンスについての報酬は、トレーニング済みインスタンスの性能メトリックの関数である。たとえば、報酬は、性能メトリック、性能メトリックの2乗、性能メトリックの3乗、性能メトリックの平方根などのうちの1つとすることができる。
【００６７】
いくつかの場合には、システムは、ポリシー勾配技法を使用して、予想される報酬を最大にするようにコントローラニューラルネットワークをトレーニングする。たとえば、ポリシー勾配技法は、REINFORCE技法または近接ポリシー最適化(PPO: Proximal Policy Optimization)技法とすることができる。たとえば、システムは、
【数１】
2019533257.tif 000003
を満たす勾配の推定量を使用して、コントローラパラメータに関して予想される報酬の勾配を推定することができる。
ここで、mはバッチ内のシーケンス数、Tはバッチ内の各シーケンス内の時間ステップ数、atは所与の出力シーケンス内の時間ステップtでの出力、Rkは出力シーケンスkについての報酬、θcはコントローラパラメータ、およびbはベースライン関数、たとえば以前のアーキテクチャ精度の指数移動平均である。
【００６８】
いくつかの実装形態では、システムは、分散的な方法でコントローラニューラルネットワークをトレーニングする。すなわち、システムは、コントローラニューラルネットワークの複数の複製を維持し、トレーニング中に非同期的に複製のパラメータ値を更新する。すなわち、システムは、複製ごとに非同期にステップ302〜306を実行することができ、複製の各々について決定された勾配を使用してコントローラパラメータを更新することができる。
【００６９】
本明細書は、システムおよびコンピュータプログラム構成要素に関して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されるとは、システムが、動作中システムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。
【００７０】
本明細書に記載された主題および機能的動作の実施形態は、デジタル電子回路、有形に実施されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組合せに実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわちデータ処理装置による実行のため、またはデータ処理装置の動作を制御するために有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができる。代替的に、または追加として、プログラム命令は、人工的に生成された伝搬信号、たとえばデータ処理装置による実行に適切な受信機装置への送信のために情報を符号化するために生成された機械生成電気、光学、または電磁信号上で符号化することができる。
【００７１】
「データ処理装置」という用語は、データ処理ハードウェアを指し、たとえばプログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含むデータを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路でもよく、またはそれをさらに含むことができる。装置は、オプションで、ハードウェアに加えて、コンピュータプログラムの実行環境を生成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むことができる。
【００７２】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれ、またはそのようにも記載される場合があるコンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型言語もしくは手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境での使用に適した他のユニットとしてを含む、あらゆる形式で展開できる。プログラムは、必ずしも必要ではないが、ファイルシステム内のファイルに対応してもよい。プログラムは、問題のプログラム専用の単一のファイル、またはたとえば、1つまたは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイルなどの複数の協調したファイルに、たとえばマークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトなどの他のプログラムまたはデータを保持するファイルの一部に記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するか、もしくは複数のサイトに分散され、データ通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備することができる。
【００７３】
本明細書では、「データベース」という用語は、任意のデータの集まりを指すために広く使用されており、データは、任意の特定の方法で構造化する必要はなく、またはまったく構造化する必要はなく、1つまたは複数の場所における記憶デバイスに記憶することができる。したがって、たとえばインデックスデータベースは、複数のデータの集まりを含むことができ、それらの各々は、異なって編成されアクセスされてもよい。
【００７４】
同様に、本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされるソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用される。一般に、エンジンは、1つまたは複数の場所における1つまたは複数のコンピュータにインストールされた1つまたは複数のソフトウェアモジュールまたは構成要素として実装される。いくつかの場合には、1つまたは複数のコンピュータが特定のエンジンに専用であり、他の場合には、複数のエンジンを同じコンピュータにインストールし、そこで実行することができる。
【００７５】
本明細書に記載されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって機能を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実行することができる。プロセスおよび論理フローは、たとえばFPGAまたはASICなどの専用論理回路によって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行することができる。
【００７６】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、もしくはその両方、または他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実施または実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置およびメモリは、専用論理回路によって補うまたは組み込むことができる。一般に、コンピュータは、たとえば磁気、光磁気ディスク、または光ディスクなどのデータを記憶するための1つまたは複数の大容量記憶デバイスをも含み、あるいは1つまたは複数の大容量記憶デバイスからデータを受信する、それにデータを転送する、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえばほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス、たとえばユニバーサルシリアルバス(USB)フラッシュドライブ中に組み込むことができる。
【００７７】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、一例として、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、たとえば内部ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、メディアおよびメモリデバイスを含む。
【００７８】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、ユーザに情報を表示するための、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにキーボードおよび、ユーザがコンピュータに入力を提供することができる、たとえばマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえばユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックなどの任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、たとえばウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによってなどのユーザによって使用されるデバイスとの間でドキュメントを送受信することによってユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形態のメッセージをパーソナルデバイス、たとえばメッセージングアプリケーションを実行しているスマートフォンに送信し、代わりにユーザから応答メッセージを受信することによってユーザと対話することができる。
【００７９】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば機械学習のトレーニングまたは製作、すなわち推論、作業負荷の共通部分および計算集約的部分を処理するための専用ハードウェアアクセラレータユニットを含むことができる。
【００８０】
機械学習モデルは、機械学習フレームワーク、たとえばTensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装および展開することができる。
【００８１】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンド構成要素を含む、またはたとえばアプリケーションサーバなどのミドルウェア構成要素を含む、またはたとえば、ユーザが本明細書に記載された主題の実装と対話することができる、グラフィカルユーザインタフェース、ウェブブラウザ、またはアプリを有するたとえばクライアントコンピュータなどのフロントエンド構成要素を含む、または1つもしくは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムの構成要素は、たとえば通信ネットワークなどの任意の形式または媒体のデジタルデータ通信によって相互接続することができる。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットがある。
【００８２】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバは、一般に互いに遠隔であり、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータプログラムのおかげで生じる。いくつかの実施形態では、サーバは、たとえばクライアントとして動作するデバイスと対話しているユーザにデータを表示し、ユーザからユーザ入力を受信するために、データ、たとえばHTMLページをユーザデバイスに送信する。たとえば、ユーザ対話の結果などのユーザデバイスにおいて生成されたデータは、デバイスからサーバにおいて受信することができる。
【００８３】
本明細書は、多くの具体的な実施の詳細を含むが、これらは、いかなる発明の範囲または特許請求される可能性のある範囲に対する限定ではなく、むしろ特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈されるものとする。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で記載されている様々な特徴は、複数の実施形態で別々にまたは任意の適切な部分組合せで実装することもできる。さらに、特徴は、いくつかの組合せで作用するものとして上述されており、当初はそのように請求されているものであるが、いくつかの場合には、請求された組合せからの1つまたは複数の特徴を、組合せから切り取ることができ、請求された組合せは、部分組合せ、または部分組合せの変形を対象としてもよい。
【００８４】
同様に、動作が図面に示され、特許請求の範囲に特定の順序で記載されているが、これは、そのような動作が、示された特定の順序で、または順番に実行されること、あるいは望ましい結果を達成するために、図示されたすべての動作が実行されることを必要とするものとして理解されないものとする。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上述した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されないものとし、記述されたプログラム構成要素およびシステムが、一般に単一のソフトウェア製品に一緒に組み入れられ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【００８５】
主題の特定の実施形態が記載されている。他の実施形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの場合には、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【００８６】
100  ニューラルアーキテクチャ検索システム
102  トレーニングデータ
104  検証セット
110  コントローラニューラルネットワーク
112  シーケンスのバッチ
120  トレーニングエンジン
130  コントローラパラメータ更新エンジン
150  アーキテクチャデータ
202〜214  時間ステップ
220  層
230  層
232  隠れ状態
242〜254  出力層
300  プロセス
【図１】
2019533257.tif 000004
【図２Ａ】
2019533257.tif 000005
【図２Ｂ】
2019533257.tif 000006
【図２Ｃ】
2019533257.tif 000007
【図３】
2019533257.tif 000008
【国際調査報告】
2019533257.tif 000009
2019533257.tif 000010
2019533257.tif 000011