(57)【要約】  ニューラルネットワークアーキテクチャを決定するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む方法、システム、および装置である。方法のうちの1つは、コントローラニューラルネットワークを使用して、出力シーケンスのバッチを生成するステップであって、バッチ内の各出力シーケンスが、大規模ニューラルネットワークによる入力の処理中にアクティブであるべきである、大規模ニューラルネットワークの複数の構成要素のそれぞれのサブセットを指定する、ステップと、バッチ内の各出力シーケンスについて、(i)大規模ネットワークパラメータの現在値に従って、および(ii)出力シーケンスによって指定された構成要素のサブセットのみをアクティブとして、特定のニューラルネットワークタスクにおける大規模ニューラルネットワークの性能メトリックを決定するステップと、コントローラニューラルネットワークのコントローラパラメータの現在値を調整するために、バッチ内の出力シーケンスについての性能メトリックを使用するステップとを含む。
2021501417.tif 000002
【特許請求の範囲】
【請求項１】
特定のニューラルネットワークタスクを実行するためのニューラルネットワークのためのアーキテクチャを決定する方法であって、
複数のコントローラパラメータを有するコントローラニューラルネットワークを使用して、前記コントローラパラメータの現在値に従って、出力シーケンスのバッチを生成するステップであって、前記バッチ内の各出力シーケンスが、大規模ニューラルネットワークによる入力の処理中にアクティブであるべきである、前記大規模ニューラルネットワークの複数の構成要素のそれぞれのサブセットを指定し、前記大規模ニューラルネットワークが、複数の大規模ネットワークパラメータを有する、ステップと、
前記バッチ内の各出力シーケンスについて、
(i)前記大規模ネットワークパラメータの現在値に従って、および(ii)前記出力シーケンスによって指定された前記構成要素のサブセットのみをアクティブとして、前記特定のニューラルネットワークタスクにおける前記大規模ニューラルネットワークの性能メトリックを決定する、
ステップと、
前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するために、前記バッチ内の前記出力シーケンスについての前記性能メトリックを使用するステップと
を含む、方法。
【請求項２】
前記コントローラニューラルネットワークを使用して、前記コントローラパラメータの前記調整された値に従って、新しい出力シーケンスを生成するステップと、
前記大規模ネットワークパラメータの調整された値を決定するために、トレーニングデータにおいて、前記新しい出力シーケンスによって指定された前記構成要素のサブセットのみをアクティブとして、前記大規模ニューラルネットワークをトレーニングするステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するために、前記バッチ内の前記出力シーケンスについての前記性能メトリックを使用するステップが、
強化学習技法を使用して、性能メトリックが向上した出力シーケンスを生成するように、前記コントローラニューラルネットワークをトレーニングするステップ
を含む、請求項1または2に記載の方法。
【請求項４】
前記強化学習技法がポリシー勾配技法である、請求項3に記載の方法。
【請求項５】
前記強化学習技法がREINFORCE技法である、請求項4に記載の方法。
【請求項６】
前記大規模ニューラルネットワークが複数の層を備える、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記大規模ニューラルネットワークの前記性能を決定する間、前記大規模ネットワークパラメータの前記現在値が固定される、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記コントローラニューラルネットワークがリカレントニューラルネットワークであり、前記リカレントニューラルネットワークが、所与の出力シーケンスについて、および複数の時間ステップの各々において、
前記所与の出力シーケンス内で先行する時間ステップにおいて生成された出力の埋め込みを入力として受信するステップと、前記リカレントニューラルネットワークの現在の隠れ状態を更新するために、および前記時間ステップのための可能な出力にわたるスコア分布を生成するために、前記入力を処理するステップとを行うように構成される、
請求項1から7のいずれか一項に記載の方法。
【請求項９】
各出力シーケンスが、複数の時間ステップの各々におけるそれぞれの出力を備え、各時間ステップが、前記大規模ニューラルネットワークを表す有向非巡回グラフ(DAG)内のそれぞれのノードに対応し、前記DAGが、前記DAG内のノードを接続する複数のエッジを備え、前記出力シーケンスが、各ノードについて、前記ノードによって受信される入力と、前記ノードによって実行される計算とを定義する、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記DAG内の複数のノードの各特定のノードについて、前記コントローラニューラルネットワークが、前記ノードに対応する第1の時間ステップにおいて、前記DAG内の入ってくるエッジによって前記特定のノードに接続されるノードにわたる確率分布を生成する、請求項9に記載の方法。
【請求項１１】
前記DAG内の複数のノードの各特定のノードについて、前記コントローラニューラルネットワークが、前記ノードに対応する第1の時間ステップにおいて、前記DAG内の入ってくるエッジによって前記特定のノードに接続される各ノードについての、前記エッジがアクティブとして指定されることになる尤度を定義する、それぞれの独立した確率を生成する、請求項9に記載の方法。
【請求項１２】
前記DAG内の前記複数のノードの各特定のノードについて、前記コントローラニューラルネットワークが、前記ノードに対応する第2の時間ステップにおいて、前記特定のノードによって実行される可能な計算にわたる確率分布を生成する、請求項9から11のいずれか一項に記載の方法。
【請求項１３】
前記大規模ニューラルネットワークがリカレントニューラルネットワークである、請求項1から12のいずれか一項に記載の方法。
【請求項１４】
前記大規模ニューラルネットワークが畳み込みニューラルネットワークである、請求項1から13のいずれか一項に記載の方法。
【請求項１５】
前記コントローラパラメータの前記調整された値に従って、最終的な構成要素のサブセットを定義する最終出力シーケンスを生成するステップ
をさらに含む、請求項1から14のいずれか一項に記載の方法。
【請求項１６】
前記最終的な構成要素のサブセットのみをアクティブとして、前記受信されたネットワーク入力を処理することによって、前記受信されたネットワーク入力に対して前記特定のニューラルネットワークタスクを実行するステップ
をさらに含む、請求項14に記載の方法。
【請求項１７】
1つまたは複数のコンピュータと、命令を記憶する1つまたは複数の記憶デバイスとを備えるシステムであって、前記命令が、前記1つまたは複数のコンピュータによって実行されると、請求項1から16のいずれか一項に記載の前記それぞれの方法の動作を前記1つまたは複数のコンピュータに実行させる、システム。
【請求項１８】
命令を記憶する1つまたは複数のコンピュータ記憶媒体であって、前記命令が、1つまたは複数のコンピュータによって実行されると、請求項1から16のいずれか一項に記載の前記それぞれの方法の動作を前記1つまたは複数のコンピュータに実行させる、1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その内容の全体が参照により本明細書に組み込まれている、2017年10月27日に出願した米国特許出願第62/578,361号の優先権を主張するものである。
【０００２】
本明細書は、ニューラルネットワークアーキテクチャの修正に関する。
【背景技術】
【０００３】
ニューラルネットワークは、受信された入力に対する出力を予測するために、非線形ユニットの1つまたは複数の層を採用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在値に従って、受信された入力から出力を生成する。
【０００４】
いくつかのニューラルネットワークは、リカレントニューラルネットワークである。リカレントニューラルネットワークは、入力シーケンスを受信し、その入力シーケンスから出力シーケンスを生成するニューラルネットワークである。特に、リカレントニューラルネットワークは、現在の時間ステップにおける出力を計算する際に、前の時間ステップからのネットワークの内部状態の一部または全部を使用することができる。リカレントニューラルネットワークの一例は、1つまたは複数の長短期(LSTM)メモリブロックを含むLSTMニューラルネットワークである。各LSTMメモリブロックは、たとえば現在の活性化を生成する際に使用するために、またはLSTMニューラルネットワークの他の構成要素に提供されるように、セルがセルのための前の状態を記憶することを可能にする入力ゲート、忘却ゲート、および出力ゲートを各々含む、1つまたは複数のセルを含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書は、1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムが、コントローラニューラルネットワークを使用して、特定のニューラルネットワークタスクを実行するように構成されるニューラルネットワークのためのアーキテクチャをどのように決定することができるかについて説明する。
【０００６】
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装可能である。システムは、効果的かつ自動的に、すなわちユーザ介入なしに特定のタスクのための高性能のニューラルネットワークをもたらすことになるニューラルネットワークアーキテクチャを選択することができる。システムは、特定のタスクに適合する新規のニューラルネットワークアーキテクチャを効果的に決定することができ、得られたニューラルネットワークがそのタスクにおいて改善された性能を有することを可能にする。
【０００７】
本明細書で説明するアーキテクチャ検索技法は、依然として高性能のモデルアーキテクチャを決定しながら、既存の手法よりも少ない計算リソースおよびより少ない時間を消費する。具体的には、検索空間を大規模モデル内のパスに制限すること、およびしたがって所与の検索のラウンド中に候補アーキテクチャの間でパラメータ値を共有することによって、システムは、依然として高性能のニューラルネットワークをもたらす有効なアーキテクチャを決定することが可能でありながら、検索空間を効果的に制約し、トレーニングのために必要とされる計算リソースを制限する。
【０００８】
より詳細には、可能なニューラルネットワークアーキテクチャの大規模空間を通した検索を制御するために、ニューラルネットワークを使用する他の技法(すなわち、他の「自動モデル設計」手法)は、良質のアーキテクチャを決定するために必要とされる時間に関して、ならびに検索プロセスによって消費される計算リソース、たとえば処理能力およびメモリに関して、極めてコストが高い。これは、他の技法では、ニューラルネットワークが各反復においてまったく新しいアーキテクチャを定義することが必要であり、各新しいアーキテクチャを評価するために、ニューラルネットワークを最初からトレーニングするからである。したがって、これらの既存の技法は、(i)ニューラルネットワークのトレーニングのために、検索プロセスの各反復において、大量の時間リソースおよび計算リソースを消費し、(ii)良質のアーキテクチャを決定するために大量の反復を必要とする。
【０００９】
一方、説明する技法は、大規模ニューラルネットワークを通るパスを検索する、すなわち大規模計算グラフ内の最適な部分グラフを検索するために、コントローラニューラルネットワークを使用する。これによって、良質のアーキテクチャを見いだすために必要とされる反復の回数が減少する。追加として、説明する技法は、反復にわたって発見される子ネットワークのトレーニングの反復にわたるパラメータ共有を採用する。これによって、検索プロセスの各反復によって消費される時間リソースおよび計算リソースが減少する。
【００１０】
したがって、説明する技法は、既存の自動モデル設計手法よりもはるかに高速であり、計算的なコストがはるかに低い。場合によっては、説明する技法は、既存の自動モデル設計手法よりもはるかに少ない実時間の消費と、1000倍少ない計算リソースを使用しながらの同等またはより良い性能のアーキテクチャの発見の両方が可能である。
【００１１】
本明細書で説明する主題の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は、大規模ニューラルネットワークによる入力の処理中にアクティブであるべきである、大規模ニューラルネットワークの複数の構成要素のサブセットを定義することによって、ニューラルネットワークのためのアーキテクチャを決定する。次いで、最終アーキテクチャは、最終サブセットにおける構成要素のみをアクティブとする(および、場合によっては、いかなる非アクティブな構成要素も除去される)、大規模ニューラルネットワークのアーキテクチャである。
【００２７】
大規模ニューラルネットワークは、多数の異なるニューラルネットワーク構成要素、たとえば多数の異なるニューラルネットワーク層と、層によって適用可能である多数の異なる活性化関数と、大規模ニューラルネットワークによる、ネットワーク入力に対するネットワーク出力の生成をもたらすことができる、構成要素間の多数の異なる可能な接続とを含む、ニューラルネットワークである。これによって、膨大な数のパラメータ(本明細書で「大規模ネットワークパラメータ」と呼ばれる)を有する、大規模ニューラルネットワークがもたらされる。処理中にアクティブであるべきである、大規模ニューラルネットワークの構成要素のサブセットを選択することによって、システム100は、計算的に実現可能であり、高品質ネットワーク出力を生成するようにトレーニング可能である、高品質アーキテクチャを識別する。
【００２８】
具体的には、システム100は、大規模ニューラルネットワークを有向非巡回グラフ(DAG)として定義する大規模ニューラルネットワークデータ140を維持し、すなわちニューラルネットワークデータ140は、大規模ニューラルネットワークのアーキテクチャを定義するDAG、および、したがって、アーキテクチャ検索プロセスのための検索空間を表す。DAGはノードとエッジとを含み、ここで、各ノードは、ニューラルネットワーク構成要素によって実行される計算を表し、各エッジは、情報の流れ、すなわちある構成要素から別の構成要素への構成要素入力および出力を表す。各ノードにおけるローカル計算は、それら自体のパラメータを有し、それらのパラメータは、その特定の計算が処理中にアクティブであると指定されるときのみ使用される。言い換えれば、あるノードから別のノードへの各エッジは、対応するエッジが現在のアーキテクチャにおいてアクティブであるとき、すなわちそのエッジの出力ノードが、そのエッジの入力ノードから入力の受信時に選択されるときのみアクティブである、それ自体のパラメータ、たとえばパラメータ行列またはカーネルに関連付けられる。
【００２９】
場合によっては、DAGは、大規模ニューラルネットワークのアーキテクチャ全体を指定する。他の場合には、DAGは、アーキテクチャ全体を定義する、アーキテクチャ全体の一部分を指定する。具体的には、いくつかの実装形態では、大規模ニューラルネットワークアーキテクチャのいくつかの部分が固定され、検索プロセスによって調整されない。たとえば、大規模ニューラルネットワークは、特定のタイプの出力層、特定のタイプの入力層、または両方を有することが常に必要とされる場合がある。別の例として、特定のタイプのニューラルネットワーク層が、最終アーキテクチャ内の固定された位置に自動的に挿入されてもよく、たとえばニューラルネットワーク内の層の一部または全部の前または後のバッチ正規化層、ニューラルネットワーク内の層の一部または全部の前または後に適用されるあるタイプの活性化関数などである。また別の例として、ニューラルネットワークが畳み込みニューラルネットワークであるとき、ニューラルネットワークは、アーキテクチャの最後の2つの層として、グローバルプーリング層と、その後に続くソフトマックス出力層とを常に有してもよい。グローバルプーリング層は、グローバルプーリング層によって受信された入力の各チャネルのすべての活性化を平均化することができる。
【００３０】
追加として、いくつかの実装形態では、DAGは、複数の構成要素から構成される1つまたは複数のタイプのセル、たとえば1つまたは複数のタイプの畳み込みセル、あるいは1つまたは複数のタイプのリカレントセルのための可能なアーキテクチャの空間を指定する。次いで、DAGによって指定されたセルは、ニューラルネットワークの完全なアーキテクチャを形成するために、あらかじめ決定されたパターンにおいて、大規模ニューラルネットワーク内で配置可能である。
【００３１】
たとえば、システムによって生成される同じアーキテクチャ、すなわちDAGのサブセットとして定義されたアーキテクチャを有する、あらかじめ決定された数のリカレントセルを、埋め込み層と出力層との間に積層して、大規模リカレントニューラルネットワークアーキテクチャ全体を生成することができる。
【００３２】
別の例として、いくつかの実装形態では、DAGは、(あらかじめ定義された出力層を除いて)畳み込みニューラルネットワークのアーキテクチャ全体を直接指定するが、いくつかの他の実装形態では、DAGのサブセットを選択することによって、システムは、その入力の空間分解能を維持する分解能維持畳み込みセルと、その入力の空間分解能を低減する低減セルとを定義することができる。これらの2つのタイプのセルの多数のインスタンスを、出力層の前にあらかじめ決定されたパターンにおいて積層して、畳み込みニューラルネットワークの最終アーキテクチャを生成することができる。
【００３３】
いくつかの実装形態では、DAGによって指定された動作および接続性を、最終アーキテクチャにおいて追加の動作を用いて自動的に増強することができる。たとえば、リカレントノードのためのDAG内のノードの一部または全部において、DAGによって指定された(および、システム100によって選択された)動作を、ハイウェイ接続を用いて自動的に増強することができる。
【００３４】
具体的には、システム100は、最終サブセットを定義する出力シーケンスを生成するようにコントローラニューラルネットワーク110をトレーニングすることによって、アーキテクチャ、すなわち最終サブセットを決定する。
【００３５】
コントローラニューラルネットワーク110は、本明細書では「コントローラパラメータ」と呼ばれるパラメータを有し、コントローラパラメータに従って出力シーケンスを生成するように構成されるニューラルネットワークである。コントローラニューラルネットワーク110によって生成された各出力シーケンスは、大規模ニューラルネットワークによる入力の処理中にアクティブであるべきである、大規模ニューラルネットワークの複数の構成要素のそれぞれのサブセットを定義する。具体的には、各出力シーケンスは、DAG内のノード間の接続性と、各ノードにおいて実行されるべきであるローカル計算とを定義する。
【００３６】
具体的には、各出力シーケンスは、複数の時間ステップの各々におけるそれぞれの出力を含む。DAG内の各ノード、すなわちDAGによって表された各構成要素は、時間ステップのサブセットに関連付けられる。所与のノードに対応する時間ステップにおける出力は、ノードへの入力と、ノードによって実行される動作とを定義する(DAGの少なくとも入力ノードについて、入力があらかじめ決定されてもよい)。集合的に、所与の出力シーケンスにおける出力は、大規模ニューラルネットワーク内でアクティブである構成要素のサブセットを定義する。出力シーケンスについては、図2A〜図2Bを参照しながら以下でより詳細に説明する。
【００３７】
したがって、所与の出力シーケンスによってアクティブとして指定された構成要素は、(i)固定されており、検索プロセスの一部ではない任意の構成要素、ならびに(ii)DAG内のアクティブな構成要素、すなわち出力シーケンスによって定義された接続性に対応するパラメータ行列、および出力シーケンスによって指定された動作を実行する構成要素である。出力シーケンスが特定のタイプのセルのためのアーキテクチャを直接識別する実装形態では、大規模ニューラルネットワーク内のそのタイプのセルの各インスタンスは、出力シーケンスによって指定されたインスタンスと同じアクティブな構成要素を有する。
【００３８】
システム100は、2つのトレーニングフェーズ、すなわちコントローラトレーニングフェーズおよび大規模ニューラルネットワークトレーニングフェーズの各々を繰り返し実行することによって、コントローラニューラルネットワーク110をトレーニングする。たとえば、システム100は、コントローラトレーニングフェーズと大規模ニューラルネットワークトレーニングフェーズとを交互に繰り返し行うことができる。コントローラトレーニングフェーズ中に、システム100は、大規模ネットワークパラメータを固定で保持しながらコントローラネットワークパラメータを更新し、大規模ニューラルネットワークトレーニングフェーズ中に、システム100は、コントローラパラメータを固定で保持しながら大規模ネットワークパラメータを更新する。
【００３９】
より詳細には、コントローラトレーニングフェーズ中に、システム100は、コントローラニューラルネットワーク110を使用して、コントローラパラメータの現在値に従って、出力シーケンスのバッチ112を生成し、バッチ内の各出力シーケンスが、大規模ニューラルネットワークによる入力の処理中にアクティブであるべきである、大規模ニューラルネットワークの複数の構成要素のそれぞれのサブセットを指定する。
【００４０】
バッチ内の各出力シーケンスについて、トレーニングエンジン120は、(i)大規模ネットワークパラメータの現在値に従って、および(ii)出力シーケンスによって指定された構成要素のサブセットのみをアクティブとして、特定のニューラルネットワークタスクにおける大規模ニューラルネットワークの性能メトリック122を決定する。所与の出力シーケンスによって指定される構成要素のサブセットのみをアクティブとする大規模ニューラルネットワークのアーキテクチャは、本明細書で、所与の出力シーケンスによって定義されたアーキテクチャと呼ばれる。大規模ネットワークパラメータは、コントローラトレーニングフェーズ中に更新されない。すなわち、バッチ内の各出力シーケンスについて、トレーニングエンジン120は、大規模ニューラルネットワークをトレーニングすることなしに、すなわちアクティブ(または、非アクティブ)な構成要素のいずれのパラメータも調整することなしに、検証セット104における出力シーケンスによって定義されたアーキテクチャの性能を評価し、代わりに大規模ネットワークトレーニングフェーズの前の反復中に決定された大規模ネットワークパラメータ値を使用する。次いで、コントローラパラメータ更新エンジン130は、タスクにおいてコントローラニューラルネットワーク110によって生成された出力シーケンスによって定義されたアーキテクチャの予想性能を向上させるために、コントローラパラメータの現在値を更新するために、バッチ112内の出力シーケンスについての評価の結果を使用する。トレーニング済みインスタンスの性能を評価し、コントローラパラメータの現在値を更新することについて、図3を参照しながら以下でより詳細に説明する。
【００４１】
次いで、コントローラパラメータ更新エンジン130は、更新されたコントローラパラメータ値132を決定するために、性能メトリック122を使用する。
【００４２】
大規模ニューラルネットワークトレーニングフェーズ中に、トレーニングエンジン120は、コントローラパラメータの値を固定で保持し、コントローラニューラルネットワーク110を使用して、出力シーケンスをサンプリングする。
【００４３】
次いで、トレーニングエンジン120は、トレーニング中にアクティブであるそれらの構成要素のための更新された大規模ニューラルネットワークパラメータ値142を決定するために、サンプリングされた出力シーケンスによって定義されたアーキテクチャをアクティブとして大規模ニューラルネットワークをトレーニングする。たとえば、トレーニングエンジン120は、トレーニングデータ102を通したパス全体にわたって、または指定された数のトレーニング反復にわたって、大規模ニューラルネットワークをトレーニングすることができる。トレーニングエンジン120は、トレーニングされている大規模ニューラルネットワークのタイプにとって適切であるトレーニング技法を使用して、ニューラルネットワークをトレーニングすることができる。大規模ニューラルネットワークがリカレントニューラルネットワークであるとき、トレーニングエンジン120は、通時的誤差逆伝播法(backpropagation through time)を使用して、大規模ニューラルネットワークをトレーニングすることができる。大規模ニューラルネットワークが畳み込みニューラルネットワークであるとき、トレーニングエンジン120は、誤差逆伝播法とともに勾配降下法を使用して大規模ニューラルネットワークをトレーニングすることができる。
【００４４】
したがって、システム100は、コントローラトレーニングフェーズ中に大規模ネットワークパラメータを固定で保持しながら、コントローラパラメータ値を反復的に調整し、大規模ニューラルネットワークトレーニングフェーズ中にコントローラパラメータを固定で保持しながら、大規模ネットワークパラメータを反復的に調整する。これらの2つのフェーズを繰り返し実行することによって、システム100は、検索プロセス中に過剰な量の時間リソースおよび計算リソースを消費することなしに、高品質アーキテクチャを定義する出力シーケンスを生成するように、コントローラニューラルネットワーク110をトレーニングする。
【００４５】
コントローラニューラルネットワーク110がトレーニングされると、システム100は、ニューラルネットワークのための最終アーキテクチャを選択すること、すなわちアクティブであるべき構成要素の最終サブセットを選択することができる。最終アーキテクチャを選択するために、システム100は、コントローラパラメータのトレーニング済みの値に従って新しい出力シーケンスを生成し、新しい出力シーケンスによって定義されたアーキテクチャを、ニューラルネットワークの最終アーキテクチャとして使用することができるか、またはトレーニング済みの値に従って複数の新しい出力シーケンスを生成し、次いで複数の新しい出力シーケンスによって定義されたアーキテクチャのうちの1つを選択することができる。複数の新しい出力シーケンスが生成される実装形態では、システム100は、検証セット104において、各新しい出力シーケンスによって定義されたアーキテクチャの性能を評価し、次いでもっとも高性能のアーキテクチャを最終アーキテクチャとして選択することができる。代替的に、システム100は、各選択されたアーキテクチャをさらにトレーニングし、次いでさらなるトレーニングの後、アーキテクチャの各々の性能を評価することができる。
【００４６】
次いで、ニューラルネットワーク検索システム100は、ニューラルネットワークの最終アーキテクチャを指定するアーキテクチャデータ150、すなわちニューラルネットワークの一部である層、層間の接続性、および層によって実行される動作を指定するデータを出力することができる。たとえば、ニューラルネットワーク検索システム100は、トレーニングデータを提出したユーザに、アーキテクチャデータ150を出力することができる。
【００４７】
いくつかの実装形態では、アーキテクチャデータ150を出力する代わりに、またはそれに加えて、システム100は、たとえば最初から、または大規模ニューラルネットワークのトレーニングの結果として生成されたパラメータ値を微調整するために、決定されたアーキテクチャを有するニューラルネットワークのインスタンスをトレーニングし、次いでトレーニングされたニューラルネットワークを使用して、たとえばシステムによって提供されたAPIを通して、ユーザによって受信された要求を処理する。すなわち、システム100は、処理されるべき入力を受信し、トレーニングされたニューラルネットワークを使用して、入力を処理し、受信された入力に応答して、トレーニングされたニューラルネットワークによって生成された出力、または生成された出力から導出されたデータを提供することができる。
【００４８】
いくつかの実装形態では、システム100は、分散的な方法でコントローラニューラルネットワークをトレーニングする。すなわち、システム100は、コントローラニューラルネットワークの複数の複製を含む。トレーニングが分散されるこれらの実装形態のいくつかにおいて、各複製は、複製によって出力された出力シーケンスのバッチについての性能メトリックを生成し、大規模ニューラルネットワークの複製をトレーニングする専用トレーニングエンジンと、性能メトリックを使用してコントローラパラメータに対する更新を決定する専用コントローラパラメータ更新エンジンとを有する。コントローラパラメータ更新エンジンが更新を決定すると、コントローラパラメータ更新エンジンは、すべてのコントローラパラメータ更新エンジンにアクセス可能である中央パラメータ更新サーバに、その更新を伝送することができる。同様に、トレーニングエンジンが、大規模ニューラルネットワークパラメータに対する更新を決定すると、トレーニングエンジンは、パラメータサーバにその更新を伝送することができる。中央パラメータ更新サーバは、サーバによって維持されるコントローラパラメータおよび大規模ニューラルネットワークパラメータの値を更新し、更新された値をコントローラパラメータ更新エンジンに送信することができる。場合によっては、複数の複製の各々、ならびにそれらの対応するトレーニングエンジンおよびパラメータ更新エンジンは、トレーニングエンジンおよびパラメータ更新エンジンの他の各セットとは非同期的に動作することができる。
【００４９】
図2Aは、アーキテクチャ検索システムによって生成することができる、例示的なリカレントセルの図200である。
【００５０】
図2Aは、リカレントセルの4つのノード212、214、216、および218の可能な接続性を表すDAG210を示す。システムは、各ノード212〜218について、ノードがどの入力を受信するべきであるかを決定することによって、DAG210の最終的な接続性を決定する。DAG内の各可能なエッジが、異なるパラメータのセットに関連付けられるので、接続性を決定することによって、システムはまた、どのパラメータのセットがアクティブであり、どれがアクティブでないかを決定する。システムはまた、あらかじめ決定された入力のセットからの受信された入力において、ノードがどの動作を実行するべきであるかを決定する。
【００５１】
図2Aはまた、コントローラニューラルネットワークを使用して、システムによって生成されたリカレントセルのアーキテクチャ220と、アーキテクチャ220をもたらすコントローラニューラルネットワークの出力を示す図250とを示す。
【００５２】
具体的には、図250は、出力シーケンスの生成中、7つの例示的な時間ステップ252〜264の間にコントローラニューラルネットワーク110によって実行される処理を示す。図250からわかるように、時間ステップ252はノード212に対応し、時間ステップ254および256はノード214に対応し、時間ステップ258および260はノード216に対応し、時間ステップ262および264はノード218に対応する。
【００５３】
コントローラニューラルネットワーク110は、各時間ステップについて、所与の出力シーケンス内で先行する時間ステップにおいて生成された出力の埋め込みを入力として受信し、リカレントニューラルネットワークの現在の隠れ状態を更新するために入力を処理するように構成される、1つまたは複数のリカレントニューラルネットワーク層、たとえば層280を含む、リカレントニューラルネットワークである。たとえば、コントローラニューラルネットワーク110内のリカレント層は、長短期記憶(LSTM)層またはゲート付きリカレントユニット(GRU:gated recurrent unit)層であってもよい。図2Aの例では、時間ステップ254において、コントローラは、先行する時間ステップ252における出力を入力として受信し、リカレント層の隠れ状態を更新する。
【００５４】
コントローラニューラルネットワーク110はまた、出力シーケンス内の各時間ステップのためのそれぞれの出力層をそれぞれ含む。出力層の各々は、時間ステップにおいて更新された隠れ状態を含む出力層入力を受信し、時間ステップにおける出力の可能な値にわたるスコア分布を定義する時間ステップのための出力を生成するように構成される。たとえば、各出力層は、最初に、出力層入力を対応する時間ステップのための可能な出力値の数に適切な寸法に投影し、次いで投影された出力層入力にソフトマックスを適用して、複数の可能な出力値の各々について、それぞれのスコアを生成することができる。
【００５５】
したがって、出力シーケンス内の所与の時間ステップのための出力を生成するために、システム100は、出力シーケンス内の先行する時間ステップにおける出力の埋め込みを、コントローラニューラルネットワークへの入力として提供し、コントローラニューラルネットワークは、時間ステップにおける可能な出力値にわたるスコア分布を定義する時間ステップのための出力を生成する。出力シーケンス内の最初の時間ステップでは、先行する時間ステップがないので、システム100は、代わりにあらかじめ決定されたプレースホルダー入力を提供することができる。次いで、システム100は、出力シーケンス内の時間ステップにおける出力値を決定するために、スコア分布に従って、可能な値からサンプリングする。所与の出力がとることができる可能な値は、トレーニングより前に固定されており、可能な値の数は、時間ステップによって異なる可能性がある。
【００５６】
アーキテクチャ220からわかるように、リカレントセルの処理中の各時間ステップにおいて、ノード212は、入力としてその時間ステップのためのセル入力x_tと、前の時間ステップのためのセルの出力h_t-1とを受信する。これは、あらかじめ決定することが可能であり、すなわちコントローラニューラルネットワークを使用して生成されないことが可能である。したがって、第1の時間ステップ252において、コントローラニューラルネットワークは、ノード212によって適用されるべき可能な活性化関数にわたる確率分布を生成する。図2Aの例では、システムは、確率分布からのサンプリングから、たとえばReLU、tanh、シグモイド、および一致演算を含む可能な活性化のセットから、ノード212のための活性化関数としてtanhを選択した。
【００５７】
グラフ内のノードの残りについて、システムは、ノードへの入力と、ノードによって適用されるべき活性化関数の両方を選択する。したがって、ノード214について、システムは、コントローラによって生成された対応する確率分布から、そのノードがノード1からの入力を受信し、ReLu活性化関数を適用するべきであると選択した。一般に、確率分布は、DAG210内の入ってくるエッジ、すなわち別のノードから現在のノードに行くエッジによって、現在のノードに接続されるノードのすべてにわたるものである。
【００５８】
同様に、ノード216について、システムは、そのノードが、ノード214からの入力を受信し、ReLu活性化関数を適用するべきであるが、ノード218がノード212からの入力を受信し、tanh活性化関数を適用するべきであると選択した。
【００５９】
時間ステップのためのセルの出力h_tを生成するために、システムは、任意の他のノードに入力を提供するために選ばれなかったノードの出力を結合、たとえば平均化("avg")する。図2Aの例では、出力h_tは、ノード216およびノード218の出力の平均である。したがって、アーキテクチャ220が与えられたセルの全体の計算を、次のように表すことができる。
【００６０】
【数１】
2021501417.tif 000003
【００６１】
ただし、Wはパラメータ行列である。上記の式からわかるように、DAG210内で可能であるいくつかの構成要素は、アーキテクチャ220内に含まれない。具体的には、選択されなかったエッジに対応するパラメータ行列は、アーキテクチャ220内で使用されない。たとえば、ノード4における入力からノード3からの入力に適用されるパラメータ行列
【００６２】
【数２】
2021501417.tif 000004
【００６３】
は、アーキテクチャ220内でアクティブではない。追加として、各ノードは、可能な活性化関数のセットからの1つの活性化関数のみを適用する。
【００６４】
図2Bは、アーキテクチャ検索システムによって生成することができる、例示的な畳み込みニューラルネットワークアーキテクチャの図300である。
【００６５】
図2Aにおける図200のように、図2Bもまた、4ノードDAG310と、アーキテクチャ320と、アーキテクチャ320を生成するためのコントローラニューラルネットワークの処理の図350とを示す。ここでは、単一のリカレントセルの構成要素を表すのではなく、DAG310内のノードは、畳み込みニューラルネットワーク内の層を表す。
【００６６】
追加として、図200の例のように、DAG310の最初のノードについて、システムは、そのノードへの入力をあらかじめ決定し、そのノードによって実行される計算を選択するのみであるが、他の各ノードについて、システムは、(出力シーケンス内の現在のノードの前であるノードから)そのノードへの入力と、そのノードによって実行される計算の両方を選択する。ただし、活性化関数を選択するのではなく、システムは、代わりにノードによって実行されるべき可能な計算の異なるセットから選択する。具体的には、システムは、ノードによって実行されるべき特定のタイプの畳み込み、または実行されるべき最大プーリング演算(および、場合によっては、平均プーリング演算)のいずれかを選択することができる。畳み込みのタイプは、たとえばフィルタサイズ3×3および5×5の畳み込み、ならびにフィルタサイズ3×3および5×5の深度方向に分離可能な畳み込み(depthwise-separable convolution)を含む、畳み込みタイプのセットを含むことができる。
【００６７】
追加として、図200の例とは異なり、DAG内のノードの一部または全部について、システムは、スキップ接続を形成するために、ノードに入ってくるエッジのうちの2つ以上をアクティブであるように選択することができる。具体的には、最初のノード以外の各特定のノードについて、コントローラニューラルネットワークは、入ってくるエッジによってその特定のノードに接続されたノードの各々についてのそれぞれの独立した確率を生成する。次いで、システムは、どのノードが最終アーキテクチャ内でその特定のノードに出力を提供するべきであるかを決定するために、別個に各確率からサンプリングする。ノードが2つ以上の他のノードから入力を受信するとき、システムは、そのノードへの個々の入力を深度連結、平均化、またはそうでなければ結合することができる。
【００６８】
図示されていないが、上記で説明したように、システムは、畳み込みニューラルネットワークアーキテクチャを生成するために、代わりに1つまたは複数のタイプのセルを生成し、それらのセルをあらかじめ決定されたパターンにおいて繰り返すことができ、すなわち上記で説明したように、畳み込みニューラルネットワーク全体を生成するのではない。
【００６９】
図3は、コントローラニューラルネットワークをトレーニングするための例示的なプロセス300の流れ図である。便宜上、プロセス300について、1つまたは複数のロケーションに位置する1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。たとえば、適切にプログラムされた、ニューラルアーキテクチャ検索システム、たとえば図1のニューラルアーキテクチャ検索システム100は、プロセス300を実行することができる。
【００７０】
システムは、コントローラニューラルネットワークを使用して、反復時点のコントローラパラメータの現在値に従って、出力シーケンスのバッチを生成する(ステップ302)。具体的には、システムは、出力シーケンス内の各出力値を生成するとき、スコア分布からサンプリングするので、バッチ内のシーケンスは、たとえそれらが同じコントローラパラメータ値に従って各々生成されるとしても、一般に異なることになる。バッチは、一般に、あらかじめ決定された数の出力シーケンス、たとえば8、16、32、または64のシーケンスを含む。
【００７１】
バッチ内の各出力シーケンスについて、システムは、シーケンスによって定義されたアーキテクチャの性能を評価して、特定のニューラルネットワークタスクにおけるトレーニング済みインスタンスについての性能メトリックを決定する(ステップ304)。たとえば、性能メトリックは、適切な精度基準によって測定された検証セットまたは検証セットのサブセットにおける、アーキテクチャを有する大規模ニューラルネットワークのインスタンスの精度であってもよい。たとえば、精度は、出力がシーケンスであるときは当惑基準(perplexity measure)に基づくことができ、またはタスクが分類タスクであるときは分類誤り率に基づくことができる。
【００７２】
評価を実行するために、システムは、大規模ニューラルネットワークトレーニングフェーズの先行する反復の完了からの、大規模ニューラルネットワークパラメータの値を使用する。言い換えれば、システムは、バッチ内の出力シーケンスを評価するとき、大規模ニューラルネットワークパラメータの現在値を調整しない。
【００７３】
システムは、アーキテクチャについての性能メトリックを使用して、コントローラパラメータの現在値を調整する(ステップ306)。
【００７４】
具体的には、システムは、強化学習技法を使用して、性能メトリックが向上したニューラルネットワークアーキテクチャをもたらす出力シーケンスを生成するように、コントローラニューラルネットワークをトレーニングすることによって、現在値を調整する。より具体的には、システムは、生成されたアーキテクチャの性能メトリックに基づいて決定される、受け取られる報酬を最大にする出力シーケンスを生成するように、コントローラニューラルネットワークをトレーニングする。具体的には、所与の出力シーケンスについての報酬は、対応するアーキテクチャについての性能メトリックの関数である。たとえば、報酬は、性能メトリック、性能メトリックの2乗、性能メトリックの3乗、性能メトリックの平方根などのうちの1つであってもよい。
【００７５】
場合によっては、システムは、ポリシー勾配技法を使用して、予想される報酬を最大にするように、コントローラニューラルネットワークをトレーニングする。たとえば、ポリシー勾配技法は、REINFORCE技法または近接ポリシー最適化(PPO:Proximal Policy Optimization)技法であってもよい。たとえば、システムは、以下を満たす勾配の推定量を使用して、コントローラパラメータに関して予想される報酬の勾配を推定することができる。
【００７６】
【数３】
2021501417.tif 000005
【００７７】
ただし、mはバッチ内のシーケンスの数であり、Tはバッチ内の各シーケンス内の時間ステップの数であり、atは所与の出力シーケンス内の時間ステップtにおける出力であり、Rkは出力シーケンスkについての報酬であり、θcはコントローラパラメータであり、bはベースライン関数、たとえば以前のアーキテクチャ精度の指数移動平均である。
【００７８】
システムは、コントローラニューラルネットワークをトレーニングするために、すなわちコントローラパラメータの初期値からコントローラパラメータのトレーニング済みの値を決定するために、ステップ302〜306(「コントローラトレーニングフェーズ」)を繰り返し実行することができる。
【００７９】
システムは、コントローラニューラルネットワークを使用して、出力シーケンスをサンプリングする(ステップ308)。
【００８０】
システムは、サンプリングされた出力シーケンスによってアクティブとして指定される構成要素の大規模ニューラルネットワークパラメータを更新するように、サンプリングされた出力シーケンスによって定義されたアーキテクチャをトレーニングする(ステップ310)。上記で説明したように、システムは、指定された数の反復にわたって、またはトレーニングデータを通した1つのパスにわたって、アーキテクチャをトレーニングすることができる。
【００８１】
システムは、トレーニングプロセス中に、大規模ニューラルネットワークパラメータの値を更新するために、ステップ308および310(「大規模ニューラルネットワークトレーニングフェーズ」)を繰り返し実行することができる。たとえば、システムは、高性能のニューラルネットワークアーキテクチャを検索するために、ステップ302〜306の実行とステップ308〜310の実行とを交互に繰り返し行うことができる。
【００８２】
いくつかの実装形態では、システムは、分散的な方法でコントローラニューラルネットワークをトレーニングする。すなわち、システムは、コントローラニューラルネットワークおよび大規模ニューラルネットワークの複数の複製を維持し、トレーニング中に非同期的に複製のパラメータ値を更新する。すなわち、システムは、複製ごとに非同期的にステップ302〜310を実行することができ、複製の各々について決定された勾配を使用して、コントローラパラメータおよび大規模ニューラルネットワークパラメータを更新することができる。
【００８３】
本明細書は、システムおよびコンピュータプログラム構成要素に関連して、「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムの場合、特定の動作またはアクションを実行するように構成されることは、システムが、動作中に動作またはアクションをシステムに実行させる、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムの場合、特定の動作またはアクションを実行するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されると、動作またはアクションを装置に実行させる命令を含むことを意味する。
【００８４】
本明細書で説明する主題および機能的動作の実施形態は、本明細書で開示する構造およびそれらの構造的等価物を含む、デジタル電子回路において、有形に実施されたコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装可能である。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわちデータ処理装置による実行のための、またはデータ処理装置の動作を制御するために、有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装可能である。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくは順次アクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであってもよい。代替的にまたは追加として、プログラム命令は、データ処理装置による実行のために、好適なレシーバ装置への伝送のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば機械により生成された電気信号、光信号、または電磁信号上で符号化可能である。
【００８５】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、またはASIC(特定用途向け集積回路)とすることもでき、またはそれをさらに含むことができる。装置は、場合によっては、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。
【００８６】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれるか、またはそのように説明される場合もあるコンピュータプログラムは、コンパイラ型言語もしくはインタープリタ型言語、または宣言型言語もしくは手続型言語を含む、任意の形式のプログラミング言語において記述可能であり、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境において使用するのに好適な他のユニットとしてを含む任意の形態において展開可能である。プログラムは、ファイルシステムにおけるファイルに対応する場合があるが、そうである必要はない。プログラムは、他のプログラムもしくはデータ、たとえばマークアップ言語ドキュメント中に記憶された1つもしくは複数のスクリプトを保持するファイルの一部分において、問題になっているプログラム専用の単一のファイルにおいて、または複数の協調されたファイル、たとえば1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルにおいて記憶可能である。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するか、もしくは複数のサイトにわたって分散され、データ通信ネットワークによって相互接続された、複数のコンピュータ上で実行されるように展開可能である。
【００８７】
本明細書では、「データベース」という用語は、任意のデータの集まりを指すために広く使用されており、データは、任意の特定の方法で構造化される必要はなく、またはまったく構造化される必要はなく、1つまたは複数のロケーションにおける記憶デバイス上に記憶可能である。したがって、たとえばインデックスデータベースは、複数のデータの集まりを含むことができ、それらの各々は、異なって編成およびアクセスされてもよい。
【００８８】
同様に、本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされるソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用される。一般に、エンジンは、1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上にインストールされた、1つまたは複数のソフトウェアモジュールまたは構成要素として実装されることになる。場合によっては、1つまたは複数のコンピュータが特定のエンジン専用となり、他の場合には、複数のエンジンを同じ1つまたは複数のコンピュータ上にインストールして実行可能である。
【００８９】
本明細書で説明するプロセスおよび論理フローは、入力データにおいて動作すること、および出力を生成することによって、機能を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行可能である。プロセスおよび論理フローは、専用論理回路、たとえばFPGAもしくはASICによって、または専用論理回路と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  トレーニングエンジン
122  性能メトリック
130  コントローラパラメータ更新エンジン
132  更新されたコントローラパラメータ値
140  大規模ニューラルネットワークデータ、ニューラルネットワークデータ
142  更新された大規模ニューラルネットワークパラメータ値
150  アーキテクチャデータ
200、250、350  図
210  DAG
212、214、216、218  ノード
220、320  アーキテクチャ
252  時間ステップ、第1の時間ステップ
254〜264  時間ステップ
280  層
300  図、プロセス
310  4ノードDAG、DAG
【図１】
2021501417.tif 000006
【図２Ａ】
2021501417.tif 000007
【図２Ｂ】
2021501417.tif 000008
【図３】
2021501417.tif 000009
【手続補正書】
【提出日】令和2年6月12日(2020.6.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
特定のニューラルネットワークタスクを実行するためのニューラルネットワークのためのアーキテクチャを決定する方法であって、
複数のコントローラパラメータを有するコントローラニューラルネットワークを使用して、前記コントローラパラメータの現在値に従って、出力シーケンスのバッチを生成するステップであって、前記バッチ内の各出力シーケンスが、大規模ニューラルネットワークによる入力の処理中にアクティブであるべきである、前記大規模ニューラルネットワークの複数の構成要素のそれぞれのサブセットを指定し、前記大規模ニューラルネットワークが、複数の大規模ネットワークパラメータを有する、ステップと、
前記バッチ内の各出力シーケンスについて、
(i)前記大規模ネットワークパラメータの現在値に従って、および(ii)前記出力シーケンスによって指定された前記構成要素のサブセットのみをアクティブとして、前記特定のニューラルネットワークタスクにおける前記大規模ニューラルネットワークの性能メトリックを決定する、
ステップと、
前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するために、前記バッチ内の前記出力シーケンスについての前記性能メトリックを使用するステップと
を含む、方法。
【請求項２】
前記コントローラニューラルネットワークを使用して、前記コントローラパラメータの前記調整された値に従って、新しい出力シーケンスを生成するステップと、
前記大規模ネットワークパラメータの調整された値を決定するために、トレーニングデータにおいて、前記新しい出力シーケンスによって指定された前記構成要素のサブセットのみをアクティブとして、前記大規模ニューラルネットワークをトレーニングするステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するために、前記バッチ内の前記出力シーケンスについての前記性能メトリックを使用するステップが、
強化学習技法を使用して、性能メトリックが向上した出力シーケンスを生成するように、前記コントローラニューラルネットワークをトレーニングするステップ
を含む、請求項1または2に記載の方法。
【請求項４】
前記強化学習技法がポリシー勾配技法である、請求項3に記載の方法。
【請求項５】
前記強化学習技法がREINFORCE技法である、請求項4に記載の方法。
【請求項６】
前記大規模ニューラルネットワークが複数の層を備える、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記大規模ニューラルネットワークの前記性能を決定する間、前記大規模ネットワークパラメータの前記現在値が固定される、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記コントローラニューラルネットワークがリカレントニューラルネットワークであり、前記リカレントニューラルネットワークが、所与の出力シーケンスについて、および複数の時間ステップの各々において、
前記所与の出力シーケンス内で先行する時間ステップにおいて生成された出力の埋め込みを入力として受信するステップと、前記リカレントニューラルネットワークの現在の隠れ状態を更新するために、および前記時間ステップのための可能な出力にわたるスコア分布を生成するために、前記入力を処理するステップとを行うように構成される、
請求項1から7のいずれか一項に記載の方法。
【請求項９】
各出力シーケンスが、複数の時間ステップの各々におけるそれぞれの出力を備え、各時間ステップが、前記大規模ニューラルネットワークを表す有向非巡回グラフ(DAG)内のそれぞれのノードに対応し、前記DAGが、前記DAG内のノードを接続する複数のエッジを備え、前記出力シーケンスが、各ノードについて、前記ノードによって受信される入力と、前記ノードによって実行される計算とを定義する、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記DAG内の複数のノードの各特定のノードについて、前記コントローラニューラルネットワークが、前記ノードに対応する第1の時間ステップにおいて、前記DAG内の入ってくるエッジによって前記特定のノードに接続されるノードにわたる確率分布を生成する、請求項9に記載の方法。
【請求項１１】
前記DAG内の複数のノードの各特定のノードについて、前記コントローラニューラルネットワークが、前記ノードに対応する第1の時間ステップにおいて、前記DAG内の入ってくるエッジによって前記特定のノードに接続される各ノードについての、前記エッジがアクティブとして指定されることになる尤度を定義する、それぞれの独立した確率を生成する、請求項9に記載の方法。
【請求項１２】
前記DAG内の前記複数のノードの各特定のノードについて、前記コントローラニューラルネットワークが、前記ノードに対応する第2の時間ステップにおいて、前記特定のノードによって実行される可能な計算にわたる確率分布を生成する、請求項9から11のいずれか一項に記載の方法。
【請求項１３】
前記大規模ニューラルネットワークがリカレントニューラルネットワークである、請求項1から12のいずれか一項に記載の方法。
【請求項１４】
前記大規模ニューラルネットワークが畳み込みニューラルネットワークである、請求項1から13のいずれか一項に記載の方法。
【請求項１５】
前記コントローラパラメータの前記調整された値に従って、最終的な構成要素のサブセットを定義する最終出力シーケンスを生成するステップ
をさらに含む、請求項1から14のいずれか一項に記載の方法。
【請求項１６】
前記最終的な構成要素のサブセットのみをアクティブとして、受信されたネットワーク入力を処理することによって、前記受信されたネットワーク入力に対して前記特定のニューラルネットワークタスクを実行するステップ
をさらに含む、請求項15に記載の方法。
【請求項１７】
1つまたは複数のコンピュータと、命令を記憶する1つまたは複数の記憶デバイスとを備えるシステムであって、前記命令が、前記1つまたは複数のコンピュータによって実行されると、請求項1から16のいずれか一項に記載の方法を前記1つまたは複数のコンピュータに実行させる、システム。
【請求項１８】
命令を記憶する1つまたは複数のコンピュータ記憶媒体であって、前記命令が、1つまたは複数のコンピュータによって実行されると、請求項1から16のいずれか一項に記載の方法を前記1つまたは複数のコンピュータに実行させる、1つまたは複数のコンピュータ記憶媒体。
【国際調査報告】
2021501417.tif 000010
2021501417.tif 000011