【文献】
Barret Zoph ET AL,NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING,ARXIV[ONLINE],米国,2017年02月15日,1−16頁,https://arxiv.org/pdf/1611.01578.pdf
(58)【調査した分野】(Int.Cl.,DB名)
前記訓練の後、前記チャイルド畳み込みニューラルネットワークの前記訓練されたインスタンス内の前記第1の畳み込みセルの異なるインスタンスは、異なるパラメータ値を有する、
請求項1に記載の方法。
前記第1の畳み込みセルは、前記第1の畳み込みセル内のブロックの任意のブロックへの入力として選択されない前記第1の畳み込みセル内の前記ブロックの出力隠れ状態を組み合せることによって前記セル出力を生成するようにさらに構成される、
請求項1または4に記載の方法。
前記チャイルド畳み込みニューラルネットワークの前記訓練されたインスタンスに関する前記性能測定基準を用いて、前記コントローラニューラルネットワークの前記コントローラパラメータの前記現在値を調整するステップは、
前記コントローラニューラルネットワークを訓練して、機械学習訓練技術を用いて向上した性能測定基準を有するチャイルド畳み込みニューラルネットワークをもたらす出力シーケンスを生成するステップを含む、
請求項1から5のいずれか一項に記載の方法。
複数のコントローラパラメータを有するコントローラニューラルネットワークを用い、前記コントローラパラメータの現在値に従って、出力シーケンスのバッチを生成するステップは、前記バッチ内の出力シーケンスごとに、および前記複数の時間ステップのそれぞれに、
前記コントローラニューラルネットワークへの入力として、前記出力シーケンス中の前記先行する時間ステップにおける前記ハイパーパラメータの前記値を提供して、前記時間ステップにおける前記ハイパーパラメータの可能な値上でスコア分布を定める前記時間ステップに関する出力を生成するステップと、
前記スコア分布に従って前記可能な値からサンプリングして、前記出力シーケンス中の前記時間ステップにおける前記ハイパーパラメータの前記値を決定するステップとを含む、
請求項12に記載の方法。
前記第1の畳み込みセルの前記インスタンス内の畳み込み動作のフィルタの数は、前記チャイルド畳み込みニューラルネットワーク内の前記インスタンスの位置に基づいて異なる、
請求項1から12のいずれか一項に記載の方法。
前記バッチ内の各出力シーケンスは、第2のセル入力を受信し、前記第2のセル入力から、高さがより小さい、幅がより小さい、またはこれら両方がより小さい第2のセル出力を生成するように構成された第2の畳み込みセルについてアーキテクチャをさらに定め、
出力シーケンスごとの前記チャイルド畳み込みニューラルネットワークの前記インスタンスは、前記出力シーケンスによって定められた前記アーキテクチャを有する前記第2の畳み込みセルの複数のインスタンスも含む、
請求項14に記載の方法。
前記チャイルド畳み込みニューラルネットワークのインスタンスより多い前記第1の畳み込みセルのインスタンスを含む畳み込みニューラルネットワークを用いて、前記より複雑な画像処理タスクを実行するステップをさらに含む、
請求項19に記載の方法。
【発明を実施するための形態】
【0010】
さまざまな図面における同様の参照番号および表示は、同様の要素を示す。
【0011】
本明細書は、1つまたは複数の場所にある1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されるシステムについて記述し、このシステムは、コントローラニューラルネットワークを用いて、ネットワークアーキテクチャ全体にわたって繰り返される第1の畳み込みセルについてアーキテクチャを決定することによって、チャイルド畳み込みニューラルネットワークのためのネットワークアーキテクチャを決定する。このチャイルド畳み込みニューラルネットワーク(CNN)は、画像処理タスクを実行するように構成される。
【0012】
一般に、チャイルドCNNは、入力画像を受信し、かつこの入力画像を処理して入力画像についてネットワーク出力を生成するように構成される。たとえば、所与の画像についてニューラルネットワークによって生成された出力は対象物カテゴリの組のそれぞれのスコアであり得、各スコアは画像がそのカテゴリに属する対象物の画像を含むという推定された可能性を表す。別の例では、ニューラルネットワークによって生成された出力は、入力画像の数値埋込みであり得る。さらに別の例として、ニューラルネットワークによって生成された出力は、特定のタイプの対象物が描写される入力画像中の場所を識別することができる。
【0013】
図1は、例示的なニューラルアーキテクチャ検索システム100を示す。ニューラルアーキテクチャ検索システム100は、1つまたは複数の場所にある1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されるシステムの一例であり、以下に記述されるシステム、構成要素および技術が実装され得る。
【0014】
ニューラルアーキテクチャ検索システム100は、特定のタスクを実行するために畳み込みニューラルネットワークを訓練するための訓練データ102、および特定のタスク上での畳み込みニューラルネットワークの性能を評価する検証セット104を取得し、かつ、これらの訓練データ102および検証セット104を用いて、画像処理タスクを実行するように構成されたチャイルドCNNのためのネットワークアーキテクチャを決定するシステムである。詳細には、システム100は、コントローラニューラルネットワークを用いて、ネットワークアーキテクチャ全体にわたって繰り返される第1の畳み込みセルについてアーキテクチャを決定することによって、チャイルドCNNのためのネットワークアーキテクチャを決定する。すなわち、チャイルドCNNは第1の畳み込みセルの複数のインスタンスを含む。第1の畳み込みセルのインスタンス内の畳み込み動作のフィルタの数は、チャイルドCNN内のインスタンスの位置に基づいて異なることがある。
【0015】
一般に、訓練データ102および検証セット104はいずれも、入力画像の組と、入力画像ごとに、画像処理タスクを実行するためにチャイルドCNNによって生成されるべきそれぞれの対象出力とを含む。たとえば、より多くの訓練データの組は、訓練データ102および検証セット104を生成するためにランダムに区分されていることがある。
【0016】
システム100は、さまざまな方法のうちの任意の方法で訓練データ102および検証セット104を受信することができる。例として、システム100は、たとえばシステム100によって利用可能となるアプリケーションプログラミングインターフェース(API)を用いる等、データ通信ネットワーク上のシステムのリモートユーザからのアップロードとして訓練データを受信し、このアップロードされたデータを訓練データ102と検証セット104とにランダムに分割することができる。別の例を挙げると、システム100は、システム100によって既に保持されているどのデータが畳み込みニューラルネットワークを訓練するのに用いられるべきかを指定するユーザからの入力を受信し、次に、この指定されたデータを訓練データ102と検証セット104とに分割することができる。
【0017】
図1に示されるように、ニューラルアーキテクチャ検索システム100は、コントローラニューラルネットワーク110、訓練エンジン120およびコントローラパラメータ更新エンジン130を含む。
【0018】
コントローラニューラルネットワーク110は、本明細書において「コントローラパラメータ」と呼ばれるパラメータを有するニューラルネットワークである。詳細には、コントローラニューラルネットワークは、1つまたは複数の再帰型ニューラルネットワーク層および1つまたは複数の出力層を含む再帰型ニューラルネットワークである。出力層は、ソフトマックスニューラルネットワーク層であってよい。コントローラニューラルネットワークの例示的なアーキテクチャについては、
図2Bを参照して、以下でより詳細に記述される。
【0019】
コントローラニューラルネットワーク110は、コントローラパラメータに従って出力シーケンスのバッチを生成するように構成される。コントローラニューラルネットワーク110によって生成された各出力シーケンスは、第1の畳み込みセルについて、また、任意選択的にチャイルド畳み込みニューラルネットワーク全体でも繰り返される1つまたは複数の他の畳み込みセルについて、それぞれ可能なアーキテクチャを定める。第1の畳み込みセルは、セル入力を受信し、かつセル出力を生成するように構成される。このセル出力は、たとえば同じ高さ、同じ幅、同じ深さである等、セル入力と同じ大きさであってよい。たとえば、第1の畳み込みセルは、入力として特徴マップを受信し、この入力特徴マップと同じ大きさの出力特徴マップを生成することができる。第1の畳み込みセルはB個の動作ブロックのシーケンスを含み、ここで、Bは所定の正の整数である。たとえば、Bは3、5または10であり得る。第1の畳み込みセル内の各動作ブロックは、1つまたは複数の各入力隠れ状態を受信し、各出力隠れ状態を生成する。動作ブロックの例示的なアーキテクチャについては、
図2Aを参照して、以下でより詳細に記述される。
【0020】
各出力シーケンスは複数の時間ステップのそれぞれにおいて各出力を含み、出力シーケンス中のそれぞれの時間ステップは第1の畳み込みセルのアーキテクチャの異なるハイパーパラメータに対応する。それゆえ、各出力シーケンスは、それぞれの時間ステップにおいて、対応するハイパーパラメータの各値を含む。集合的に、所与の出力シーケンスにおけるハイパーパラメータの値は、第1の畳み込みセルについてアーキテクチャを定める。一般に、ハイパーパラメータは、第1の畳み込みセルによって実行される動作に影響を及ぼす設定である。第1の畳み込みセルのハイパーパラメータは、第1の畳み込みセルの複数のインスタンスを有するチャイルドCNNの訓練の開始より前に設定される。これらのハイパーパラメータは、チャイルドCNNの訓練の間は学習されず、すなわち、これらのハイパーパラメータは、チャイルドCNNの訓練の間は変化しない。出力シーケンスおよび可能なハイパーパラメータは、
図2A、
図2Bおよび
図3を参照して、以下でより詳細に考察される。
【0021】
いくつかの実装形態において、バッチ内の各出力シーケンスは、第2のセル入力を受信し、かつ、この第2のセル入力から、高さがより小さい、幅がより小さい、またはこれら両方がより小さい第2のセル出力を生成するように構成された第2の畳み込みセルについてアーキテクチャをさらに定める。たとえば、第2の畳み込みセルは、入力として特徴マップを受信し、特徴マップの高さおよび幅を2分の1に減じた出力特徴マップを生成することができる。第1の畳み込みセルと同様に、第2の畳み込みセルは動作ブロックのシーケンスを含み、ここで、第2の畳み込みセル内の動作ブロックの数は所定の正の整数である。第2の畳み込みセルは、第1の畳み込みセルと同数の動作ブロック(すなわちB個のブロック)を有することができる。第2の畳み込みセル内の各動作ブロックは、1つまたは複数の各入力隠れ状態を受信し、各出力隠れ状態を生成する。これらの実装形態では、出力シーケンスごとのチャイルドCNNのインスタンスはまた、出力シーケンスによって定められたアーキテクチャを有する第2の畳み込みセルの複数のインスタンスを含む。たとえば、チャイルドCNNのインスタンスは、(i)第1の畳み込みセルの3つのインスタンス、および(ii)第2の畳み込みセルの2つまたは3つのインスタンスを含んでよい。
【0022】
これらの実装形態において、各出力シーケンスは複数の時間ステップのそれぞれにおいて各出力を含み、出力シーケンス中のそれぞれの時間ステップは第1の畳み込みセルおよび第2の畳み込みセルのアーキテクチャの異なるハイパーパラメータに対応する。それゆえ、各出力シーケンスは、それぞれの時間ステップにおいて、対応するハイパーパラメータの各値を含む。集合的に、所与の出力シーケンスにおけるハイパーパラメータの値は、第1の畳み込みセルおよび第2の畳み込みセルについてアーキテクチャを定める。一般に、ハイパーパラメータは、第1の畳み込みセルまたは第2の畳み込みセルによって実行される動作に影響を及ぼす設定である。第1の畳み込みセルおよび第2の畳み込みセルのハイパーパラメータは、第1の畳み込みセルの複数のインスタンスおよび第2の畳み込みセルの複数のインスタンスを有するチャイルドCNNの訓練の開始より前に設定される。これらのハイパーパラメータは、チャイルドCNNの訓練の間は学習されず、すなわち、これらのハイパーパラメータは、チャイルドCNNの訓練の間は変化しない。
【0023】
一般に、システム100は、コントローラニューラルネットワーク110を訓練することによって第1の畳み込みセルについてアーキテクチャを決定して、コントローラパラメータの値を調整する。
【0024】
詳細には、訓練プロシージャの反復の間、システム100は、コントローラパラメータの現在値に従って、コントローラニューラルネットワーク110を用いて出力シーケンスのバッチ112を生成する。
【0025】
このバッチ112内の出力シーケンスごとに、訓練エンジン120は、出力シーケンスによって定められたアーキテクチャを有する第1の畳み込みセルの複数のインスタンスを含むチャイルドCNNのインスタンスを生成する。各インスタンスは、同一の有向グラフ内で結合される同数の構成要素を含む。詳細には、各インスタンスは、有向グラフ内の所定の位置において第1のセルの同数のインスタンスを含む。しかしながら、第1のセルのアーキテクチャは、異なるインスタンス間で異なる。出力シーケンスが第2の畳み込みセルについてのアーキテクチャも定めるとき、各インスタンスはまた、グラフ内の所定の位置において複数の第2の畳み込みセルを含む。
【0026】
たとえば、チャイルドCNNのインスタンスは、その次に第2の畳み込みセル、N個の第1の畳み込みセル、第2の畳み込みセル、そしてN個の第1の畳み込みセルと続くN個の第1の畳み込みセルを含むことができる。
【0027】
別の例では、チャイルドCNNのインスタンスは、その次にN個の第1の畳み込みセル、第2の畳み込みセル、N個の第1の畳み込みセル、第2の畳み込みセル、そしてN個の第1の畳み込みセルと続く1つまたは複数の第2の畳み込みセルを含むことができる。Nは2以上の整数である。
【0028】
各インスタンスはまた、有向グラフ内のさまざまな所定の位置において、固定アーキテクチャを備え、かつ出力シーケンスによって定められない他の構成要素、すなわち、出力層および/または1つまたは複数の他のタイプの層を含んでよい。
【0029】
訓練エンジン120は、チャイルドCNNのインスタンスを訓練して、すなわち訓練データ102上でインスタンスを訓練することによって、画像処理タスクを実行する。訓練エンジン120は、画像処理タスク上でのチャイルドCNNの訓練されたインスタンスの性能を評価して(すなわち、検証セット104上で訓練されたインスタンスの性能を評価することによって)、チャイルドCNNの訓練されたインスタンスに関して性能測定基準を決定する。
【0030】
コントローラパラメータ更新エンジン130は次に、チャイルドCNNの訓練されたインスタンスに関する性能測定基準を用いて、コントローラニューラルネットワーク110のコントローラパラメータの現在値を調整する。コントローラパラメータの現在値は、画像処理タスク上でコントローラニューラルネットワーク110によって生成された出力シーケンスによって定められたアーキテクチャの期待性能を向上させるために調整される。訓練されたインスタンスの性能を評価するステップおよびコントローラパラメータの現在値を更新するステップは、
図3を参照して、以下でより詳細に記述される。
【0031】
システムは、出力シーケンスのバッチの生成およびコントローラパラメータの値の調整を上記の方法で繰り返し行うことができる。
【0032】
この方法でコントローラパラメータの値を繰り返し更新することによって、システム100は、コントローラニューラルネットワーク110を訓練して、画像処理タスク上で向上した性能を備えるチャイルドニューラルネットワークをもたらす出力シーケンスを生成することができ、これはすなわち、コントローラニューラルネットワーク110によって提案されたアーキテクチャの検証セット104上での期待精度を最大限にすることである。
【0033】
一旦コントローラパラメータの訓練された値が決定されると、すなわち一旦コントローラニューラルネットワーク110の訓練がある終了基準を満たすと、システムは、第1の畳み込みセル(およびコントローラニューラルネットワークにより生成された出力シーケンスによって定められた任意の他の畳み込みセル)について最終的なアーキテクチャを決定する。たとえば、システム100は、コントローラパラメータの訓練された値に従って最終的な出力シーケンスを生成し、この最終的な出力シーケンスによって定められたアーキテクチャを第1の畳み込みセルおよび任意の他の畳み込みセルについての最終的なアーキテクチャとして用いることができる。別の例を挙げると、システム100は、訓練の間検証セット104上で最良の性能を発揮したチャイルドCNNをもたらした出力シーケンスを選択し、この出力シーケンスによって定められたアーキテクチャを第1の畳み込みセルおよび任意の他の畳み込みセルの最終的なアーキテクチャとして用いることができる。
【0034】
ニューラルアーキテクチャ検索システム100は次に、第1の畳み込みセル(および出力シーケンスによって定められた任意の他の畳み込みセル)を含む畳み込みニューラルネットワークのアーキテクチャを指定するアーキテクチャデータ150を出力することができる。たとえば、この出力されたアーキテクチャデータ150は、第1の畳み込みセルおよび任意の他の畳み込みセルの一部である動作ブロック、この動作ブロック間の接続性、この動作ブロックによって実行される動作、およびセル間の接続性を指定するデータを含む。たとえば、ニューラルアーキテクチャ検索システム100は、訓練データを提示したユーザに対してアーキテクチャデータ150を出力することができる。
【0035】
いくつかの実装形態において、アーキテクチャデータ150を出力する代わりに、またはこれに加えて、システム100は、たとえば、最初から、または畳み込みセルの複数のインスタンスを有するチャイルドCNNのインスタンスの訓練の結果として生成されたパラメータ値を微調整する等、決定された畳み込みセルの複数のインスタンスを有するチャイルドCNNのインスタンスを訓練し、次に、たとえばシステムによって提供されるAPIを介する等して、訓練されたチャイルドCNNを用いてユーザによって受信されたリクエストを処理する。換言すれば、システム100は、処理されるべき入力を受信し、訓練されたチャイルドCNNを用いてこの入力を処理し、訓練されたチャイルドCNNによって生成された出力または受信された入力に応答して生成された出力から派生したデータを提供することができる。
【0036】
訓練後、システムは、コントローラパラメータの調整された値を用いて、第1の畳み込みセルおよび/または第2の畳み込みセルについてアーキテクチャを生成することができる。いくつかの場合には、システムは次に、チャイルドCNNのインスタンスより少ない第1の畳み込みセルのインスタンスおよび/またはチャイルドCNNのインスタンスより少ない第2の畳み込みセルのインスタンスを含む畳み込みニューラルネットワークの計算効率の良いアーキテクチャを生成することができ、ここで、第1の畳み込みセル(および/または第2の畳み込みセル)のインスタンスは生成されたアーキテクチャを有する。いくつかの他の場合には、システムは、より複雑な画像処理タスクにおいて用いるために、チャイルドCNNのインスタンスより多い第1の畳み込みセルのインスタンスおよび/またはチャイルドCNNのインスタンスより多い第2の畳み込みセルのインスタンスを含む畳み込みニューラルネットワークのより大きなアーキテクチャを生成することができ、ここで、第1の畳み込みセル(および/または第2の畳み込みセル)のインスタンスは生成されたアーキテクチャを有する。
【0037】
図2Aは、第1の畳み込みセルの例示的な動作ブロック200を示す。
【0038】
動作ブロック200は、第1の動作206を動作ブロックに対する第1の入力隠れ状態202に適用して第1の出力を生成するように構成される。動作ブロック200は、第2の動作208を動作ブロックに対する第2の入力隠れ状態204に適用して第2の出力を生成するように構成される。動作ブロック200は次に、組合せ動作210を第1の出力および第2の出力に適用して動作ブロックについて出力隠れ状態212を生成するように構成される。第1の入力隠れ状態202、第2の入力隠れ状態204、第1の動作206、第2の動作208および組合せ動作210は、
図2Bを参照して以下で詳細に記述されるように、コントローラニューラルネットワークにより生成された出力シーケンスによって定められ得る。第1の畳み込みセルは、複数の、すなわち全部でB個の順次配列された動作ブロックを有することができ、これら複数の動作ブロックそれぞれのハイパーパラメータは出力シーケンスによって定められている。
【0039】
図2Bは、出力シーケンスを生成するコントローラニューラルネットワーク110の一例を示す
図250である。
【0040】
コントローラニューラルネットワーク110は、B個の動作ブロックを含む第1の畳み込みセルについて可能なアーキテクチャを予測するように構成される。したがって、第1の畳み込みセルについてのコントローラニューラルネットワーク110の予測はB個のグループに分類され得、各グループは、それぞれの動作ブロックを決定するためにコントローラニューラルネットワーク110によって実行される所定の数の予測ステップを有する。このことは、コントローラニューラルネットワーク110によって実行される予測ステップの総数が5×Bステップであることを意味する。
【0041】
図250は、出力シーケンスを生成する間の、それぞれt、…、t
n+4である5つの時間ステップにおいてコントローラニューラルネットワーク110によって実行される5つの例示的な予測ステップを表す。コントローラニューラルネットワーク110は、上記5つの予測ステップを、第1の畳み込みセル内のB個の動作ブロックに対応するB回繰り返す。以下でより詳細に記述されるように、5つの時間ステップt、…、t
n+4のそれぞれは、チャイルドCNNのアーキテクチャの異なるハイパーパラメータに対応する。
【0042】
一般に、ハイパーパラメータは、第1の畳み込みセルによって実行される動作に影響を及ぼす設定である。たとえば、B個の動作ブロックのシーケンスを含む第1の畳み込みセルのアーキテクチャを予測するために、コントローラニューラルネットワーク110は、B組のハイパーパラメータに関する値を含む出力シーケンスを生成する。ハイパーパラメータの各組は、B個の動作ブロックの1つに対応する。たとえば、
図2Aの動作ブロック200に対応するハイパーパラメータの組は、次のハイパーパラメータを含む。すなわち、第1の入力隠れ状態としてどの隠れ状態が用いられるかを表す第1のハイパーパラメータ、第2の入力隠れ状態としてどの隠れ状態が用いられるかを表す第2のハイパーパラメータ、第1の動作としてどの動作が用いられるかを表す第3のハイパーパラメータ、第2の動作としてどの動作が用いられるかを表す第4のハイパーパラメータ、および第1の動作の出力と第2の動作の出力とを組み合せるための組合せ動作としてどの動作が用いられるかを表す第5のハイパーパラメータである。
【0043】
コントローラニューラルネットワーク110は、たとえば層224等1つまたは複数の再帰型ニューラルネットワーク層を含む再帰型ニューラルネットワークであり、この層は、時間ステップごとに所与の出力シーケンス中の先行する時間ステップに対応するハイパーパラメータの値を入力として受信し、かつ、この入力を処理して再帰型ニューラルネットワークの現在の隠れ状態を更新するように構成される。たとえば、コントローラニューラルネットワーク110の再帰層は長短期メモリ(LSTM)層またはGRU(gated recurrent unit)層であってよい。
図2Bの例では、時間ステップt
nにおいて、層224は先行する時間ステップt
n-1からハイパーパラメータの値を入力として受信し、層の隠れ状態を時間ステップt
n-1から更新して、更新された隠れ状態225を出力として生成する。
【0044】
コントローラニューラルネットワーク110はまた、出力シーケンス中の時間ステップごとにそれぞれの出力層を含み、たとえば、時間ステップt
n、t
n+1、t
n+2、t
n+3、t
n+4について出力層214、216、218、220、222をそれぞれ含む。出力層のそれぞれは、時間ステップにおいて更新された隠れ状態を含む出力層入力を受信し、かつ、時間ステップにおけるハイパーパラメータの可能な値上でスコア分布を定める時間ステップに関する出力を生成するように構成される。たとえば、各出力層はまず、出力層入力を対応するハイパーパラメータに関する可能な値の数に適した次元数に投影し、次に投影した出力層入力にソフトマックスを適用して、時間ステップにおけるハイパーパラメータに関する複数の可能な値のそれぞれにそれぞれのスコアを生成することができる。
【0045】
出力シーケンス中の所与の時間ステップについてハイパーパラメータの値を生成するために、システム100は、コントローラニューラルネットワーク110への入力として出力シーケンス中の先行する時間ステップにおけるハイパーパラメータの値を提供し、コントローラニューラルネットワーク110は、時間ステップにおけるハイパーパラメータの可能な値上でスコア分布を定める時間ステップに関する出力を生成する。出力シーケンス中の最初の時間ステップについては、先行する時間ステップがないため、システム100は代わりに所定のプレースホルダ入力を提供することができる。システム100は次に、スコア分布に従って可能な値からサンプリングして、出力シーケンス中の時間ステップにおけるハイパーパラメータの値を決定する。所与のハイパーパラメータが取ることのできる可能な値は、チャイルドCNNの訓練より前に固定され、可能な値の数はハイパーパラメータの違いによって異なっていてよい。
【0046】
図250において図示されるように、時間ステップt
nに関する出力層214は、隠れ状態225を含む入力を受信し、かつ、動作ブロック(たとえば、
図2Aの動作ブロック200)について第1の入力隠れ状態としてどの隠れ状態が用いられるかを表すハイパーパラメータに関して複数の可能な値のそれぞれにそれぞれのスコアを生成するように構成される。動作ブロックについての第1の入力隠れ状態に関するソースは、(i)チャイルドCNNにおける畳み込みセルのシーケンス中の1つまたは複数の先行する畳み込みセルによって生成された出力、(ii)チャイルドCNNの入力画像、または(iii)第1の畳み込みセル内の動作ブロックのシーケンス中の先行する動作ブロックの出力隠れ状態、のうちの1つまたは複数から選択される。
【0047】
時間ステップt
n+1に関する出力層216は、隠れ状態227を含む入力を受信し、かつ、動作ブロックについて第2の入力隠れ状態としてどの隠れ状態が用いられるかを表すハイパーパラメータに関して複数の可能な値のそれぞれにそれぞれのスコアを生成するように構成される。動作ブロックについての第2の入力隠れ状態に関するソースは、(i)畳み込みセルのシーケンス中の1つまたは複数の先行する畳み込みセルによって生成された出力、(ii)入力画像、または(iii)畳み込みセル内の動作ブロックのシーケンス中の先行する動作ブロックの出力隠れ状態、のうちの1つまたは複数から選択される。
【0048】
時間ステップt
n+2に関する出力層218は、隠れ状態229を含む入力を受信し、かつ、第1の入力隠れ状態に適用されるべき第1の動作に関する動作タイプを表すハイパーパラメータに関して複数の可能な値のそれぞれにそれぞれのスコアを生成するように構成される。第1の動作は、畳み込みニューラルネットワーク動作の所定の組から選択されてよい。たとえば、畳み込みニューラルネットワーク動作の所定の組は次の動作、すなわち、アイデンティティ(identity)、1×7次に7×1の畳み込み(1×7 then 7×1 convolution)、3×3の平均プーリング(3×3 average pooling)、5×5の最大プーリング(5×5 max pooling)、1×1の畳み込み(1×1 convolution)、3×3の深さ方向に分離可能な畳み込み(3×3 depthwise-separable convolution)、7×7の深さ方向に分離可能な畳み込み(7×7 depthwise-separable convolution)、1×3次に3×1の畳み込み(1×3 then 3×1 convolution)、3×3の拡張畳み込み(3×3 dilated convolution)、3×3の最大プーリング(3×3 max pooling)、7×7の最大プーリング(7×7 max pooling)、3×3の畳み込み(3×3 convolution)、および5×5の深さ方向に分離可能な畳み込み(5×5 depthwise-separable convolution)、のうちの1つまたは複数を含んでよい。
【0049】
時間ステップt
n+3に関する出力層220は、隠れ状態231を含む入力を受信し、かつ、第2の入力隠れ状態に適用されるべき第2の動作に関する動作タイプを表すハイパーパラメータに関して複数の可能な値のそれぞれにそれぞれのスコアを生成するように構成される。第2の動作は、畳み込みニューラルネットワーク動作の上記所定の組から選択されてよい。
【0050】
時間ステップt
n+4に関する出力層222は、隠れ状態233を含む入力を受信し、かつ、第1の動作の出力と第2の動作の出力とを組み合せて動作ブロックについて新たな隠れ状態を生成するために用いられる組合せ動作に関する動作タイプを表すハイパーパラメータに関して複数の可能な値のそれぞれにそれぞれのスコアを生成するように構成される。組合せ動作は、組合せ動作の所定の組から選択されてよい。たとえば、組合せ動作の所定の組は、(i)2つの出力間の要素ごとの加算、および(ii)フィルタの大きさに沿った2つの出力間の連結、を含んでよい。
【0051】
第1の畳み込みセルは、第1の畳み込みセル内のブロックの任意のブロックへの入力として選択されない第1の畳み込みセル内のブロックの出力隠れ状態を組み合せることによって、セル入力に関するセル出力を生成するように構成される。たとえば、第1の畳み込みセルは、すべての使用されていない出力隠れ状態を深さ方向に1つに連結させて、最終的なセル出力を生成することができる。
【0052】
図3は、コントローラニューラルネットワークのコントローラパラメータの現在値を更新するための例示的なプロセスのフロー図である。便宜上、プロセス300は、1つまたは複数の場所にある1つまたは複数のコンピュータのシステムによって実行されるものとして記述される。例として、たとえば
図1に示すニューラルアーキテクチャ検索システム100等適切にプログラムされたニューラルアーキテクチャ検索システムは、プロセス300を実行することができる。
【0053】
システムは、プロセス300を繰り返し実行して、コントローラニューラルネットワークを訓練する、すなわち、コントローラパラメータの初期値からコントローラパラメータの訓練された値を決定することができる。
【0054】
システムは、コントローラニューラルネットワークを用いて、反復の時点でのコントローラパラメータの現在値に従って、出力シーケンスのバッチを生成する(ステップ302)。バッチ内の各出力シーケンスは、セル入力を受信し、かつセル出力を生成するように構成された第1の畳み込みセルについてアーキテクチャを定める。第1の畳み込みセルのセル出力は、セル入力と同じ高さおよび幅であってよい。
【0055】
詳細には、各出力シーケンスは、複数の時間ステップのそれぞれにおいてそれぞれの出力を含み、出力シーケンス中のそれぞれの時間ステップは第1の畳み込みセルのアーキテクチャの異なるハイパーパラメータに対応する。それゆえ、各出力シーケンスは、それぞれの時間ステップにおいて対応するハイパーパラメータの各値を含む。集合的に、所与の出力シーケンスにおけるハイパーパラメータの値は、第1の畳み込みセルについてアーキテクチャを定める。詳細には、前述のとおり、システムは、出力シーケンスにおける各ハイパーパラメータの値を生成するときにスコア分布からサンプリングするので、バッチ内のシーケンスは、同一のコントローラパラメータ値に従ってそれぞれ生成されたとしても異なるものになるのが一般的である。バッチは、一般に、たとえば、8、16、32または64シーケンス等、所定の数の出力シーケンスを含む。
【0056】
バッチ内の出力シーケンスごとに、システムは、出力シーケンスによって定められたアーキテクチャを有する第1の畳み込みセルの複数のインスタンスを含むチャイルドCNNのインスタンスを生成する(ステップ304)。たとえば、チャイルドCNNは第1の畳み込みセルの3つのインスタンスを含んでよい。第1の畳み込みセルのインスタンス内の畳み込み動作のフィルタの数は、チャイルドCNN内のインスタンスの位置に基づいて異なっていてよい。
【0057】
いくつかの実装形態において、バッチ内の各出力シーケンスは、第2のセル入力を受信し、かつ、この第2のセル入力から、高さがより小さい、幅がより小さい、またはこれら両方がより小さい第2のセル出力を生成するように構成された第2の畳み込みセルについてアーキテクチャをさらに定める。これらの実装形態では、出力シーケンスごとのチャイルドCNNのインスタンスはまた、出力シーケンスによって定められたアーキテクチャを有する第2の畳み込みセルの複数のインスタンスを含む。たとえば、チャイルドCNNのインスタンスは、(i)第1の畳み込みセルの3つのインスタンス、および(ii)第2の畳み込みセルの2つまたは3つのインスタンスを含んでよい。
【0058】
システムは、画像処理タスクを実行するためにチャイルドニューラルネットワークのインスタンスを訓練する(ステップ306)。すなわち、特定のニューラルネットワークタスクを実行するために、バッチ内の出力シーケンスごとに、システムは、出力シーケンスによって定められたアーキテクチャを有する第1の畳み込みセルの複数のインスタンスを含むチャイルドCNNのインスタンスを生成し、受信された訓練データ上でチャイルドCNNのインスタンスを訓練する。システムは、たとえば誤差逆伝播法を伴う確率的勾配降下法等、タスクに適した従来の機械学習訓練技術を用いてチャイルドCNNのインスタンスを訓練する。いくつかの実装形態において、システムはチャイルドCNNのインスタンスの訓練を並列に処理して、コントローラニューラルネットワークのための全訓練時間を短縮する。システムは、チャイルドCNNの各インスタンスを一定時間にわたって訓練すること(すなわち、各インスタンスを一定時間が経過するまで訓練すること)ができ、または、一定の訓練反復回数にわたって訓練することができる。この訓練の後、チャイルドCNNの訓練されたインスタンス内の第1の畳み込みセルの異なるインスタンスは異なるパラメータ値を有してよい。
【0059】
バッチ内の出力シーケンスごとに、システムは、画像処理タスク上のチャイルドCNNの対応する訓練されたインスタンスの性能を評価して、特定のニューラルネットワークタスク上の訓練されたインスタンスに関して性能測定基準を決定する(ステップ308)。たとえば、性能測定基準は、適切な精度測定によって測定されるような検証セット上の訓練されたインスタンスの精度であってよい。例として、精度は、タスクが分類タスクであるときは分類エラー率であり得、または、タスクが回帰タスクであるときはインターセクションオーバーユニオンの差異測定であり得る。別の例として、性能測定基準は、インスタンスの訓練の最後の2、5、または10エポックのそれぞれについてのインスタンスの精度の平均値または最大値であり得る。
【0060】
システムは、チャイルドCNNの訓練されたインスタンスに関する性能測定基準を用いて、コントローラニューラルネットワークのコントローラパラメータの現在値を調整する(ステップ310)。
【0061】
詳細には、システムは、コントローラニューラルネットワークを訓練することによって現在値を調整して、機械学習技術を用いて向上した性能測定基準を備えるチャイルドCNNをもたらす出力シーケンスを生成する。より具体的には、システムは、コントローラニューラルネットワークを訓練して、訓練されたインスタンスの性能測定基準に基づいて決定される受信された報酬を最大限にする出力シーケンスを生成する。詳細には、所与の出力シーケンスに関する報酬は訓練されたインスタンスに関する性能測定基準の関数である。たとえば、報酬は、性能測定基準、性能測定基準の二乗、性能測定基準の三乗、性能測定基準の二乗根等のうちの1つであってよい。
【0062】
いくつかの場合には、システムはコントローラニューラルネットワークを訓練して、方策勾配法を用いて期待報酬を最大限にする。
【0063】
たとえば、方策勾配法はREINFORCE法であり得る。たとえば、システムは、
【0065】
を満たす勾配の推定量を用いてコントローラパラメータに関して期待報酬の勾配を推定することができ、ここで、mはバッチ内のシーケンスの数、Tはバッチ内の各シーケンス中の時間ステップの数、a
tは所与の出力シーケンス中の時間ステップtにおける出力、R
kは出力シーケンスkに関する報酬、θ
cはコントローラパラメータ、bはたとえば、以前のアーキテクチャ精度の指数関数的移動平均等の基線関数である。
【0066】
別の例として、方策勾配法は近傍方策最適化(PPO)法とすることができる。具体的には、システムは、コントローラニューラルネットワークによって制御されるチャイルドCNNのプールを生成するためのグローバルワークキューシステムを使用することによってPPOを用いてコントローラニューラルネットワークを訓練することができる。PPO法については、J. Schulman、F. Wolski、P. Dhariwal、A. Radford、and O. Klimov、「Proximal policy optimization algorithms」、arXiv preprint arXiv:1707.06347、2017年においてより詳細に記述される。
【0067】
さらに別の例として、方策勾配法は信頼領域方策最適化(TRPO)法であってよく、これについては、John Schulman、Sergey Levine、Philipp Moritz、Michael I. Jordan、Pieter Abbeel、「Trust Region Policy Optimization」、Proceedings of the 31
st International Conference on Machine Learning、リール、フランス、2015年において詳細に記述される。
【0068】
いくつかの実装形態において、システムは、分散方法でコントローラニューラルネットワークを訓練する。すなわち、訓練の間、システムはコントローラニューラルネットワークの複数の複製を保持し、非同期的に複製のパラメータ値を更新する。つまり、システムは複製ごとにステップ302〜308を非同期的に実行することができ、複製のそれぞれに決定された勾配を用いてコントローラパラメータを更新することができる。
【0069】
訓練後、システムは、コントロータパラメータの調整された値を用いて第1の畳み込みセルについてアーキテクチャを生成することができる。
【0070】
いくつかの場合には、システムは次に、チャイルドCNNのインスタンスより少ない第1の畳み込みセルのインスタンスを含む畳み込みニューラルネットワークの計算効率の良いアーキテクチャを生成することができ、ここで、第1の畳み込みセルのインスタンスは生成されたアーキテクチャを有する。この技術は、システムが、十分に計算効率の良い最終的なアーキテクチャをなお維持しつつ評価の間利用できるさらなる計算能力を活用することを可能にし、その結果、携帯デバイス上または他の資源制約環境において展開される。
【0071】
いくつかの他の場合には、システムは、より複雑な画像処理タスクにおいて用いるために、チャイルドCNNのインスタンスより多い第1の畳み込みセルのインスタンスを含む畳み込みニューラルネットワークのより大きなアーキテクチャを生成することができ、ここで、第1の畳み込みセルのインスタンスは生成されたアーキテクチャを有する。この技術は、プロセスの計算効率を向上させ、システムが、プロセスの間より大きなアーキテクチャを繰り返し評価することを要せずに高い性能を達成することを可能にする。
【0072】
本明細書は、システムおよびコンピュータプログラム構成要素に関連して「構成される(構成された)」という用語を用いる。特定の動作または作用を実行するように構成されるべき1つまたは複数のコンピュータのシステムに関しては、システムが動作中システムにそれらの動作または作用を実行させるソフトウェア、ファームウェア、ハードウェアまたはこれらの組合せをそこに組み込んでいることを意味する。特定の動作または作用を実行するように構成されるべき1つまたは複数のコンピュータプログラムに関しては、データ処理装置によって実行されるときに、1つまたは複数のプログラムがその装置にそれらの動作または作用を実行させる命令を含むことを意味する。
【0073】
本明細書において記述される主題および機能動作の実施形態は、本明細書で開示される構造およびそれらの構造的均等物を含む、デジタル電子回路、有形に実施されるコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェアにおいて、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。本明細書において記述される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行するため、またはデータ処理装置の動作を制御するための有形の非一時的記憶媒体に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。コンピュータ記憶媒体は機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであってよい。別法として、または追加として、プログラム命令は、データ処理装置による実行に適した受信装置に送信するための情報を符号化するために生成される人工的に生成された伝播信号、たとえば、機械生成の電気、光または電磁信号において符号化され得る。
【0074】
「データ処理装置」という用語はデータ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイスおよび機械を包含する。装置はまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)等の専用論理回路であってよく、またはこれをさらに含むこともできる。装置は、任意選択的に、ハードウェアに加えて、コンピュータプログラムのための実行環境を作出するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。
【0075】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ(app)、モジュール、ソフトウェアモジュール、スクリプトまたはコードとも呼ばれ、または記述されることもあるコンピュータプログラムは、コンパイルされた言語もしくは解釈された言語、または宣言型言語もしくは手続き型言語を含む任意の形式のプログラミング言語で書かれてよく、独立型のプログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境での使用に適した他のユニットとしての形態を含む、任意の形態で展開され得る。プログラムはファイルシステムのファイルに対応することがあるが、必ずしも対応するわけではない。プログラムは、たとえば、マークアップ言語文書、当該プログラムに専用の単一ファイル、または、たとえば1つまたは複数のモジュール、サブプログラムもしくはコードの部分を記憶するファイル等複数の協調ファイルに記憶された1つまたは複数のスクリプト等、他のプログラムまたはデータを保持するファイルの一部に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に配置され、もしくは複数の場所に分散されデータ通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
【0076】
本明細書において「データベース」という用語は任意のデータの集合を指すために広く用いられ、データは特定の方法で構築される必要はなく、または全く構築される必要がなく、1つまたは複数の場所にある記憶デバイスに記憶されてよい。それゆえ、たとえば、インデックスデータベースは複数のデータの集合を含むことができ、このそれぞれが異なって組織化され、アクセスされてよい。
【0077】
同様に、本明細書において「エンジン」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされたソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く用いられる。エンジンは、1つまたは複数の場所にある1つまたは複数のコンピュータに組み込まれる、1つまたは複数のソフトウェアモジュールまたは構成要素として実装されるのが一般的である。いくつかの場合には、1つまたは複数のコンピュータが特定のエンジン専用であり、他の場合には、複数のエンジンが同じ1つまたは複数のコンピュータ上に組み込まれて作動することができる。
【0078】
本明細書において記述されるプロセスおよび論理の流れは、1つまたは複数のコンピュータプログラムを実行して入力データ上で動作し出力を生成することによって機能を実行する1つまたは複数のプログラマブルコンピュータによって実行され得る。プロセスおよび論理の流れはまた、たとえばFPGAまたはASIC等の専用論理回路によって、または、専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによって実行されることもある。
【0079】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは専用のマイクロプロセッサ、またはその両方、あるいは任意の他の種類の中央処理装置に基づくことができる。中央処理装置は、読取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受信することになるのが一般的である。コンピュータの必須要素は、命令を実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置およびメモリは、専用の論理回路によって補完されるか、または専用の論理回路に組み込まれ得る。一般に、コンピュータはまた、データを記憶するための1つまたは複数のマス記憶デバイス、たとえば磁気ディスク、光磁気ディスクまたは光学ディスクを含むか、あるいはこれらの間でデータを受信もしくは送信するように、または送受信の両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえばごく一部の例を挙げると、携帯電話、個人用携帯情報端末(PDA)、携帯オーディオもしくはビデオプレイヤ、ゲーム機、全地球測位システム(GPS)受信機、またはたとえばユニバーサルシリアルバス(USB)フラッシュドライブ等の携帯記憶デバイス等に埋込み可能である。
【0080】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイス等の半導体メモリデバイス、たとえば内蔵ハードディスクまたはリムーバブルディスク等の磁気ディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。
【0081】
ユーザとの対話を可能にするために、本明細書において記述される主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえばブラウン管(CRT)モニタまたは液晶表示(LCD)モニタ、ならびにユーザがコンピュータに入力できるようにするキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボール等を有するコンピュータ上に実装され得る。他の種類のデバイスが、ユーザとの対話を可能にするために同じように用いられてもよく、たとえば、ユーザに提供されるフィードバックは、感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバック等の任意の形式であってよく、ユーザからの入力は、音響、音声または触覚入力を含む任意の形式で受信され得る。加えて、コンピュータは、ユーザが使用するデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信した要求に応答してユーザのデバイス上でウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。また、コンピュータは、たとえばメッセージアプリケーションを動作させているスマートフォン等の個人用デバイスにテキストメッセージまたは他の形式のメッセージを送信することによって、およびユーザから返信として応答メッセージを受信することによって、ユーザと対話することができる。
【0082】
機械学習モデルを実装するデータ処理装置はまた、たとえば機械学習訓練または製品の共通部分およびコンピュータ集約的部分、すなわち推論、作業負荷を処理する専用ハードウェアアクセラレータユニットを含み得る。
【0083】
機械学習モデルは、たとえばTensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache SingaフレームワークまたはApache MXNetフレームワーク等の機械学習フレームワークを用いて実装および展開され得る。
【0084】
本明細書において記述される主題の実施形態は、たとえばデータサーバとしてバックエンド構成要素を含む、または、たとえばアプリケーションサーバ等のミドルウェア構成要素を含む、または、たとえばユーザが本明細書に記述される主題の一実装形態と対話することができるグラフィカルユーザインターフェース、ウェブブラウザもしくはアプリを有するクライアントコンピュータ等のフロントエンド構成要素を含むコンピューティングシステムにおいて、あるいは1つまたは複数のそのようなバックエンド、ミドルウェアもしくはフロントエンド構成要素の任意の組合せにおいて実装され得る。システムの構成要素は、たとえば通信ネットワーク等のデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例として、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)、たとえばインターネットを含む。
【0085】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に互いにリモートであり、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係性は、それぞれのコンピュータにおいて動作し、かつ互いにクライアント-サーバの関係にあるコンピュータプログラムに基づいて生じる。いくつかの実施形態では、サーバは、たとえばクライアントとして作用するデバイスと対話するユーザにデータを表示し、このユーザからユーザ入力を受信する目的で、たとえばHTMLページ等のデータをユーザデバイスに送信する。ユーザデバイスにおいて生成されるデータ、たとえばユーザとの対話の結果は、このデバイスからサーバにおいて受信され得る。
【0086】
本明細書は、多くの具体的な実装形態の詳細を含んでいるが、これらは、いかなる発明の範囲についても、または特許請求され得る範囲についても、これを限定するものと解釈されるべきではなく、むしろ特定の発明の特定の実施形態に固有であり得る特徴の説明と解釈されるべきである。別個の実施形態の文脈で本明細書において記述される一定の特徴はまた、単一の実施形態における組合せで実装されてもよい。逆に、単一の実施形態の文脈において記述されるさまざまな特徴もまた、複数の実施形態において別個に、または任意の適切な副組合せで実装されてもよい。その上、特徴については一定の組合せにおいて作用するものとして上述され、そのようなものとしてさらに最初に特許請求され得るが、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合においては組合せから削除され得、特許請求される組合せは、副組合せまたは副組合せの変形形態を対象とすることができる。
【0087】
同様に、動作は特定の順序で図面において表され、特許請求の範囲において列挙されているが、このことは、望ましい結果を達成するために、そのような動作が図示された特定の順序もしくは連続的な順序で実行される必要がある、または例示された動作がすべて実行される必要があるものと理解されるべきではない。一定の状況においては、マルチタスクおよび並列処理が有利な場合もある。さらに、上述の実施形態におけるさまざまなシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記述されるプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に一体化され、または複数のソフトウェア製品にパッケージ化され得ることを理解すべきである。
【0088】
主題の特定の実施形態について記述されてきた。他の実施形態は、以下の特許請求の範囲の範囲内にある。たとえば、特許請求の範囲に列挙される作用は、異なる順序で実行されてよく、それでも望ましい結果を達成することができる。一例として、添付の図面において表されるプロセスは、望ましい結果を達成するために、図示された特定の順序または連続的な順序を必ずしも要するわけではない。いくつかの場合には、マルチタスクおよび並列処理が有利なこともある。