(57)【要約】【課題】  本開示は、概して、再帰型ニューラルネットワークアーキテクチャに関し、より具体的には、ドメイン固有言語を用いて表現される再帰型ニューラルネットワークアーキテクチャの自動生成に関する。【解決手段】  システムは、特定タスク、例えば機械翻訳を実行する再帰型ニューラルネットワーク（ＲＮＮ）アーキテクチャを自動的に生成する。システムは、ドメイン固有言語（ＤＳＬ）を用いてＲＮＮアーキテクチャを表す。システムは、候補ＲＮＮアーキテクチャを生成する。システムは、例えばニューラルネットワークを用いて、生成した候補ＲＮＮアーキテクチャの性能を予測する。システムは、候補ＲＮＮアーキテクチャを、それらの予測した性能に基づき、フィルタリングする。システムは、選択した候補アーキテクチャのコードを生成する。生成したコードは、特定タスクを実行するよう構成されるＲＮＮを表す。システムは、例えばＲＮＮを評価するために又はアプリケーションの中でＲＮＮを使用するために、生成したコードを実行する。【選択図】  図１
2018195314.tif 000002
【特許請求の範囲】
【請求項１】
１又は複数のコンピュータを有するコンピュータシステムにより実行される方法であって、前記コンピュータシステムは、以下のステップ：
複数のＲＮＮアーキテクチャを生成するステップであって、各候補ＲＮＮアーキテクチャがドメイン固有言語（ＤＳＬ）を用いて定められ、前記ＤＳＬは複数の演算子をサポートし、特定候補ＲＮＮの定義は前記ＤＳＬの１又は複数の演算子を有する、ステップと、
前記複数の候補ＲＮＮアーキテクチャの各々について、
前記候補ＲＮＮアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補ＲＮＮアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補ＲＮＮアーキテクチャの性能を表す、ステップと、
前記候補ＲＮＮアーキテクチャの性能を表すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補ＲＮＮアーキテクチャの各々の前記スコアに基づき、候補ＲＮＮアーキテクチャを選択するステップと、
目標ＲＮＮを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標ＲＮＮを表す前記コードを実行するステップと、
を実行する、方法。
【請求項２】
前記複数の候補ＲＮＮアーキテクチャを生成するステップは、
部分ＲＮＮアーキテクチャにノードとして追加可能な各演算子のスコアを生成するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分ＲＮＮアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ格付けニューラルネットワークにより生成された前記スコアに基づき、前記部分ＲＮＮアーキテクチャに追加する演算子を選択するステップと、
前記部分ＲＮＮアーキテクチャにノードとして前記選択した演算子を追加するステップと、
を有する、請求項１に記載の方法。
【請求項３】
前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分ＲＮＮアーキテクチャ及び前記サンプル部分ＲＮＮアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、請求項２に記載の方法。
【請求項４】
目標ＲＮＮを生成するために前記候補アーキテクチャをコンパイルするステップは、
前記目標ＲＮＮのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
を含む、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記アーキテクチャ格付けニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプルＲＮＮアーキテクチャ及び前記サンプルＲＮＮアーキテクチャの性能を示すスコア値を有する、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記ＤＳＬは、１又は複数の単項演算子を有し、単項演算子は、重み及びバイアス値を指定する線形演算子、ｓｉｇｍｏｉｄ演算子、ｔａｎｈ演算子、又は正規化線形関数を表すＲｅＬＵ演算子のうちの１つを有する起動機能を表す、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記ＤＳＬは、１又は複数の二項演算子を有し、二項演算子は、加算演算子、乗算演算子、減算演算子、又は除算演算子のうちの１つを有する、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記ＤＳＬは１又は複数の三項演算子を有し、三項演算子は、２つの入力に基づき加重和を実行するｇａｔｅ３演算子を表し、重みが第３入力により表される、請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
非一時的コンピュータ可読記憶媒体であって、１又は複数のコンピュータにより実行されると、前記１又は複数のコンピュータに、請求項１乃至９のいずれか一項に記載の方法のステップを実行させるコンピュータ実行可能コードを有する、非一時的コンピュータ可読記憶媒体。
【請求項１１】
再帰型ニューラルネットワーク（ＲＮＮ）アーキテクチャを生成するコンピュータシステムであって、前記コンピュータシステムは、
１又は複数のコンピュータプロセッサと、
請求項１０に記載の非一時的コンピュータ可読記憶媒体と、
を有するコンピュータシステム。
【請求項１２】
コンピュータシステムであって、１又は複数のコンピュータプロセッサと、１又は複数の非一時的コンピュータ可読記憶媒体とを有し、
複数の候補ＲＮＮアーキテクチャを生成する手段であって、各候補ＲＮＮアーキテクチャがドメイン固有言語（ＤＳＬ）を用いて定められ、前記ＤＳＬは複数の演算子をサポートし、特定候補ＲＮＮの定義は前記ＤＳＬの１又は複数の演算子を有する、手段と、
前記複数の候補ＲＮＮアーキテクチャの各々について、
前記候補ＲＮＮアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補ＲＮＮアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補ＲＮＮアーキテクチャの性能を表す、ステップと、
前記候補ＲＮＮアーキテクチャの性能を表すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行する手段と、
前記複数の候補ＲＮＮアーキテクチャの各々の前記スコアに基づき、候補ＲＮＮアーキテクチャを選択する手段と、
目標ＲＮＮを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルする手段と、
前記目標ＲＮＮを表す前記コードを実行する手段と、
を更に有するコンピュータシステム。
【請求項１３】
請求項２乃至９のいずれか一項に記載の方法のステップを実行する手段、を有する請求項１２に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、再帰型ニューラルネットワークアーキテクチャに関し、より具体的には、ドメイン固有言語を用いて表現される再帰型ニューラルネットワークアーキテクチャの自動生成に関する。
【背景技術】
【０００２】
ニューラルネットワーク又は人工ニューラルネットワークは、特定の問題を解くために一緒に動作する多数の高度に相互接続された処理要素（ニューロン）で構成される。ニューラルネットワークは、複雑な又は不明確なデータから情報を引き出すことができ、人間又は他のコンピュータ技術により気付くには複雑すぎるパターンを抽出し又は傾向を検出するために使用できる。ニューラルネットワークは、人工ニューロンがノードであり及び重みを有する有向エッジがニューロン出力とニューロン入力との間の接続である、加重有向グラフとして表すことができる。ニューラルネットワークは、複雑なタスク、例えば自然言語処理、コンピュータビジョン、会話認識、生物情報学、画像内のパターン認識、等を実行するために使用される。再帰型ニューラルネットワーク（recurrent  neural  network：ＲＮＮ）は、人工ニューラルネットワークの１つの分類であり、接続がニューロン間の有向周期を形成する。
【０００３】
ニューラルネットワークの成功は、ニューラルネットワークのアーキテクチャに大きく依存する。ニューラルネットワークのアーキテクチャは、ニューラルネットワークのニューロンがどのように互いに関連して配置されるかを定める。人間の専門家は、直感に導かれて、軽微な変更でも予期しない結果を生成し得る可能なアーキテクチャの広大な範囲を探索する。その結果、ニューラルネットワークアーキテクチャの処理は遅く、コストが高く、労力を要する。したがって、ニューラルネットワークアーキテクチャを設計する従来技術は、時間がかかり、準最適アーキテクチャを生成する場合が多い。
【図面の簡単な説明】
【０００４】
【図１】一実施形態による、ＲＮＮアーキテクチャを生成し、生成したアーキテクチャに基づきＲＮＮを実行するシステム環境のブロック図である。
【０００５】
【図２】一実施形態による例示的なＲＮＮである。
【０００６】
【図３】一実施形態による、ＲＮＮアーキテクチャ生成器のシステムアーキテクチャのブロック図である。
【０００７】
【図４】一実施形態による、ＲＮＮアーキテクチャの生成のための全体処理を示す。
【０００８】
【図５】一実施形態による、候補ＲＮＮアーキテクチャの生成のための処理を説明する例を示す。
【０００９】
【図６】一実施形態による、候補ＲＮＮアーキテクチャの生成の処理を説明するフローチャートを示す。
【００１０】
【図７】一実施形態による、候補ＲＮＮアーキテクチャの格付けの処理を説明するフローチャートを示す。
【００１１】
【図８】一実施形態による、ＲＮＮアーキテクチャのＤＳＬ指定からのコード生成の処理を説明するフローチャートを示す。
【００１２】
【図９】図１のクライアント装置及び／又はシステムを実装する例示的なコンピュータを説明する上位ブロック図である。
【００１３】
図（FIGS.）及び以下の説明は、単に説明により特定の実施形態を記載する。当業者は、本願明細書に示された構造及び方法の代替の実施形態が本願明細書に記載された原理から逸脱することなく用いられてもよいことを以下の記載から直ちに認識するだろう。以下では、幾つかの実施形態の詳細を参照する。これらの例は添付の図面に示される。
【発明を実施するための形態】
【００１４】
＜システム環境＞
図１は、一実施形態による、ＲＮＮアーキテクチャを生成し、生成したアーキテクチャに基づきＲＮＮを実行するシステム環境のブロック図である。図１により示されるシステム環境１００は、１又は複数のクライアント装置１１０、ネットワーク１２５、及びシステム１４０を有する。代替の構成では、異なる及び／又は追加のコンポーネントがシステム環境１００に含まれて良い。例えば、システム１４０は、オンラインシステム又はオフラインで動作するシステムであって良い。
【００１５】
システム１４０は、ＲＮＮアーキテクチャ生成器１５０を含む。ＲＮＮアーキテクチャ生成器１５０は、特定タスク、例えば機械翻訳を実行するよう構成されるＲＮＮアーキテクチャを自動的に生成する。ＲＮＮアーキテクチャ生成器１５０は、ドメイン固有言語（domain  specific  language：ＤＳＬ）を用いて種々の候補アーキテクチャを表す。ＲＮＮアーキテクチャ生成器１５０は、種々の候補ＲＮＮアーキテクチャの性能を評価し、性能に基づきＲＮＮアーキテクチャを選択する。ＲＮＮアーキテクチャ生成器１５０は、ＲＮＮアーキテクチャに基づきＲＮＮ１３０を生成する。
【００１６】
図１に示すように、ＲＮＮ１３０は、入力シーケンス１５５を受信し、出力シーケンス１６５を生成するよう構成される。入力シーケンス１５５は、ある言語内の文（sentence）であ得る。出力シーケンス１６５は別の言語内の文であり得る。しかしながら、入力／出力シーケンスは、文字データに限定されず、他の種類のデータ、例えば音声シーケンス又は画像内の連続するピクセルを表して良い。入力シーケンス１５５は、クライアント装置１１０上で実行するクライアントアプリケーション１２０から受信されて良い。ＲＮＮ１３０の実行結果は、クライアントアプリケーション１２０にも、例えばクライアント装置１１０のユーザへの表示のために、提供されて良い。幾つかの実施形態では、システム１４０は、複数のプロセッサを有する並列又は分散型システムである。例えば、システム１４０は、ＲＮＮ１３０の訓練及び／又は実行を並列に実行して良い。
【００１７】
クライアント装置１１０は、ユーザ入力を受信し及びネットワーク１２５を介してデータを送信し及び／又は受信できる１又は複数のコンピューティング装置である。幾つかの実施形態では、クライアント装置１１０は、システム１４０に入力データを提供するために、例えば、ＲＮＮ１３０により処理された入力シーケンス１５５を提供するために、及びユーザへの表示のために出力シーケンス１６５を提供するために、使用される。したがって、クライアント装置１１０は、システム１４０の種々のコンポーネントと接続するユーザインタフェースを提供するアプリケーションを実行する。他の実施形態では、クライアント装置自体がＲＮＮ１３０を格納し、ＲＮＮ１３０を用いて入力シーケンス１５５を処理して出力シーケンス１６５を生成可能である。
【００１８】
一実施形態では、クライアント装置１１０は、デスクトップ又はラップトップコンピュータのような従来のコンピュータシステムである。代替として、クライアント装置１１０は、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話機、スマートフォン、又は別の適切な装置のような、コンピュータ機能を有する装置であって良い。クライアント装置１１０は、ネットワーク１２５を介して通信するよう構成される。一実施形態では、クライアント装置１１０は、クライアント装置１１０のユーザがシステム１４０と相互作用することを可能にするアプリケーションを実行する。例えば、クライアント装置１１０は、ネットワーク１２５を介してクライアント装置１１０とシステム１４０との間の相互作用を可能にするブラウザアプリケーションを実行する。別の実施形態では、クライアント装置１１０は、ＩＯＳ（登録商標）又はＡＮＤＲＯＩＤ（登録商標）のような、クライアント装置１１０のネイティブオペレーティングシステム上で実行するＡＰＩ（application  programming  interface）を通じてシステム１４０と相互作用する。
【００１９】
ネットワーク１２５は、有線及び／又は無線通信システムの両方を用いる、ローカルエリア及び／又はワイドエリアネットワークの任意の組み合わせを有して良い。一実施形態では、ネットワーク１２５は、標準的な通信技術及び／又はプロトコルを使用する。ネットワーク１２５を介して交換されるデータは、ＨＴＭＬ（hypertext  markup  language）又はＸＭＬ（extensible  markup  language）のような任意の適切なフォーマットを用いて表されて良い。幾つかの実施形態では、ネットワーク１２５の通信リンクのうちの全部又は一部は、任意の適切な技術又は複数の技術を用いて暗号化されて良い。
【００２０】
図２は、一実施形態による例示的なＲＮＮである。ＲＮＮ１３０は、入力層Ｌｉ、１又は複数の隠れ層Ｌｈ、及び出力層Ｌｏを有する。入力層Ｌｉは、エッジ２１０ａを介して入力を受信する。出力層Ｌｏは、１又は複数のエッジ２１０ｄを介して出力を生成する。入力層Ｌｉは、１又は複数のエッジ２１０ｂを介して隠れ層Ｌｈへ入力を提供する。隠れ層Ｌｈは、１又は複数のエッジ２１０ｃを介して出力層Ｌｏへ入力を提供する。エッジ２１０ｅは、ＲＮＮ１３０の層の出力から隠れ層の入力へのフィードバックを表す。フィードバックループは、ＲＮＮが今まで何を計算していたかに関する情報をキャプチャする「記憶」を、ＲＮＮに提供する。これは、ＲＮＮが任意の長さのシーケンスとして表されるデータ、例えば自然言語の文を処理することを可能にする。
【００２１】
図１に関連して記載したように、ＲＮＮアーキテクチャ生成器１５０は、ドメイン固有言語（ＤＳＬ）を用いて種々の候補アーキテクチャを表す。以下は、一実施形態によるＤＳＬの記述である。
＜ＲＮＮを定義するドメイン固有言語＞
【００２２】
ドメイン固有言語は、ＲＮＮアーキテクチャを定めるシンタックスを提供する。したがって、ＤＳＬを用いる指定（specification）は、ＲＮＮアーキテクチャを検索しながら、ＲＮＮアーキテクチャ生成器１５０がトラバース可能な探索空間を設定する。ＤＳＬのシンタックスは、機械可読であり、及び人間可読でもある。ＤＳＬは、ＧＲＵ（Gated  Recurrent  Unit）及びＬＳＴＭ（Long  Short  Term  Memory）、ＭＧＵ（Minimal  Gate  Unit）、ＱＲＮＮ（Quasi−Recurrent  Neural  Network）、ＮＡＳＣｅｌｌ（Neural  Architecture  Search  Cell）及び単純なＲＮＮを含むＲＮＮのアーキテクチャの指定を可能にする。
【００２３】
ＤＳＬは、単項演算子、二項演算子、三項演算子を含む種々の演算子をサポートする。単項演算子の例は、バイアスを有する単一の線形層を表すＭＭ演算子、つまりＭＭ（ｘ）：＝Ｗｘ＋ｂ、ｔａｎｈ関数を表すＴａｎｈ演算子、関数Ｓｉｇｍｏｉｄ（ｘ）＝σ（ｘ）を表すＳｉｇｍｏｉｄ演算子、正規化線形関数を表すＲｅＬＵ演算子である。
【００２４】
二項演算子の例は、要素毎の乗算を表すＭｕｌｔ演算子Ｍｕｌｔｉ（ｘ；ｙ）＝ｘ×ｙ、及び要素毎の加算を表すＡｄｄ演算子Ａｄｄ（ｘ，ｙ）＝ｘ＋ｙ、を含む。三項演算子の例は、２つの入力間の加重和を実行するＧａｔｅ３演算子であり、Ｇａｔｅ３（ｘ，ｙ，ｆ）＝σ（ｆ）ｏｘ＋（１−σ（ｆ））ｏｙにより定められる。これらの演算子は、集合［ｘｔ，ｘｔ−１，ｈｔ−１，ｃｔ−１］からのソースノードに適用される。ここで、ｘｔ及びｘｔ−１は現在及び前の時間ステップの入力ベクトルであり、ｈｔ−１は前の時間ステップのＲＮＮの出力であり、ｃｔ−１は任意的な長期記憶である。Ｇａｔｅ３演算子は、制御（gating）する目的で単一のＳｉｇｍｏｉｄの出力を再利用するＧＲＵのような、幾つかのアーキテクチャを定めるために使用される。ＤＳＬを用いて定められる例示的なＲＮＮアーキテクチャは次の通りである：
ｔａｎｈ（Ａｄｄ（ＭＭ（ｘｔ），ＭＭ（ｈｔ−１）））
【００２５】
ＤＳＬは、上述のもの以外の他の単項、二項、及び三項演算子をサポートして良い。例えば、幾つかの実施形態では、ＤＳＬは、２つの値の比を決定するＤｉｖ演算子、つまりＤｉｖ（ａ，ｂ）＝ａ／ｂ、第１値を第２値から減算するＳｕｂ演算子、つまりＳｕｂ（ａ，ｂ）＝ａ−ｂ、三角関数を定める単項演算子、例えばそれぞれ正弦及び余弦関数（activation）としてＳｉｎ及びＣｏｓ、現在の時間ステップに従い位置符号化（positional  encoding）を適用した結果である変数を表すＰｏｓＥｎｃ、最適化を表す演算子、例えば入力に層最適化を適用するＬａｙｅｒＮｏｒｍ演算子、及びスケーリングされた指数関数的線形ユニット（scaled  exponential  linear  unit）活性化関数を表すＳｅＬＵ、を含む追加の演算子をサポートする。
【００２６】
種々の演算子がどのように構成されるかを説明するＧＲＵ（gated  recurrent  unit）のＤＳＬ定義の一例を次に示す。
【数１】
2018195314.tif 000003
【００２７】
ＤＳＬは、隠れ状態ｈｔだけでなく、長期記憶のために追加隠れ状態ｃｔも使用するアーキテクチャの指定についてサポートを提供する。ｃｔの値は、ｈｔを生成する間に計算される内部ノードから抽出される。ＤＳＬは、ノードを番号付けし、次にどのノードからｃｔを抽出すべきか（つまり、ｃｔ＝Ｎｏｄｅ５）を指定することにより、ｃｔの使用をサポートする。ノード番号は、区切り文字の後のＤＳＬ定義の終わりに付加される。ノードは、アーキテクチャを表す木の一貫したトラバースに従うことにより、番号付けされて良い。例えば、ノードは、上から下へ（ｈｔが最大である）、及び左から右へ、番号付けされて良い。
＜システムアーキテクチャ＞
【００２８】
図３は一実施形態による、ＲＮＮアーキテクチャ生成器のシステムアーキテクチャのブロック図である。ＲＮＮアーキテクチャ生成器１５０は、候補アーキテクチャ生成器３１０、候補アーキテクチャ格付けモジュール３２０、候補アーキテクチャ評価モジュール３３０、ＲＮＮアーキテクチャストア３４０、及びＤＳＬコンパイラ３５０を有する。他の実施形態では、ＲＮＮアーキテクチャ生成器１５０は、種々の用途のために、追加の、より少数の、又は異なるコンポーネントを有して良い。ネットワークインタフェース、セキュリティ機能、負荷平衡器、障害迂回サーバ、管理及びネットワーク操作コンソール、等のような従来のコンポーネントは、システムアーキテクチャの詳細を不明瞭にしたいために図示されない。
【００２９】
候補アーキテクチャ生成器３１０は、候補アーキテクチャを生成し、それらをフィルタリング及び評価のために送信する。候補アーキテクチャ生成器３１０は、ＲＮＮアーキテクチャストア３４０に任意の生成したＲＮＮアーキテクチャを格納する。候補アーキテクチャ生成器３１０は、格付けのために、候補アーキテクチャを候補アーキテクチャ格付けモジュール３２０に提供する。候補アーキテクチャ生成器３１０は、格付けに基づき候補アーキテクチャをフィルタリングする。候補アーキテクチャ評価モジュールは、ＲＮＮアーキテクチャを評価する。これらのモジュールの詳細は、種々の処理と関連して本願明細書に記載される。
【００３０】
ＤＳＬコンパイラ３５０は、ＤＳＬを用いて指定されたＲＮＮアーキテクチャ記述を取り込み、この指定からＲＮＮアーキテクチャを生成する。ＤＳＬコンパイラ３５０は、ＤＳＬパーサ３６０、最適化器３７０、及びコード生成器３８０を有する。ＤＳＬコンパイラ３５０の他の実施形態は、より多くの又はより少ないコンポーネントを含んで良い。
【００３１】
ＤＳＬパーサ３６０は、ＲＮＮアーキテクチャのＤＳＬ指定を取り込み、この指定がＤＳＬのシンタックスに従うことを保証するために、この指定をパースする。ＤＳＬパーサ３６０は、ＲＮＮアーキテクチャ生成器１５０の種々のソフトウェアモジュールが受信したＤＳＬ指定に対応するＲＮＮアーキテクチャを処理することを可能にする表現（例えば、データ構造）を構築する。例えば、ＤＳＬパーサ３６０は、より効率的なアーキテクチャへの表現の変換を実行するために、生成した表現を最適化器に提供する。生成された表現は、指定ＲＮＮアーキテクチャに対応するコードを生成するために、コード生成器により更に処理される。
【００３２】
最適化器３７０は、生成されたコードに基づきＲＮＮの実行を高速化するよう最適化を実行する。一実施形態では、ＲＮＮアーキテクチャの実行速度を向上するために、最適化器３７０は、単一のソースノード、例えばｘｔ，ｘｔ−１，ｈｔ−１，ｃｔ−１に対して実行される全ての行列乗算を集め、それらを単一の行列乗算にまとめる。一例として、最適化器３７０は、ＬＳＴＭの８個の行列乗算、ｘｔの４個の小さな行列乗算、及びｈｔ−１の４個の小さな行列乗算を、２つの大きな行列乗算に簡略化するために、この最適化を実行する。この最適化は、例えばより高いＧＰＵ（graphics  processing  unit）利用率及び並列計算プラットフォーム、例えばＣＵＤＡのより低いカーネル開始オーバヘッドのために、結果として生じるＲＮＮの実行の効率がより高い場合、生じる。
【００３３】
コード生成器３８０は、ＲＮＮアーキテクチャのＤＳＬ表現からコードを生成する。所与のアーキテクチャ定義について、コード生成器３８０は、起点ノードから最終ノードｈｔへ向かう木をトラバースすることにより、ＤＳＬをコードにコンパイルする。一実施形態では、コード生成器３８０は、２つのソースコードセットを生成する。１つは、行列乗算のための重みセットを定めるような、ノードにより必要とされる初期化のためであり、１つは、ランタイム中のＲＮＮの実行ためである。
＜ＲＮＮアーキテクチャの生成のための処理＞
【００３４】
ＲＮＮの自動生成に関する種々の処理がここに記載される。ここに開示される処理のステップは、ここに記載され図に示されるものと異なる順序で実行されて良い。さらに、ステップは、ここで説明中に示されたものと異なるモジュールにより実行されて良い。
【００３５】
図４は、一実施形態による、ＲＮＮアーキテクチャの生成のための全体処理を示す。候補アーキテクチャ生成器３１０は、ＤＳＬを用いて表現される候補ＲＮＮアーキテクチャを生成する４１０。一実施形態では、候補アーキテクチャ生成器３１０は、ランダムアーキテクチャ生成ストラテジを用いて候補アーキテクチャを生成する４１０。別の実施形態では、候補アーキテクチャ生成器は、増分アーキテクチャ生成ストラテジを用いて候補アーキテクチャを生成する４１０。増分アーキテクチャ生成ストラテジは、候補ＲＮＮアーキテクチャを増加的に構築する。一実施形態では、増分アーキテクチャ生成ストラテジは、アーキテクチャ生成ニューラルネットワークを用いて、部分候補ＲＮＮアーキテクチャを増大させるために、該部分候補ＲＮＮアーキテクチャに追加されるべき次のＤＳＬ演算子を選択する。
【００３６】
候補アーキテクチャ格付けモジュール４２０は、候補アーキテクチャの性能を予測するために、各候補アーキテクチャを格付けする。一実施形態では、候補アーキテクチャ格付けモジュール４２０は、アーキテクチャ格付けニューラルネットワークを用いて各入力候補アーキテクチャについて性能スコアを決定する。候補アーキテクチャ格付けモジュール４２０は、所与のタスクについて良好に実行することが期待されない候補ＲＮＮアーキテクチャをフィルタリングし除去するために、性能スコアを使用する。候補アーキテクチャの性能は、候補アーキテクチャにより生成される結果の正確さの総指標を表し得る。例えば、結果の正確さは、ラベル付けされたデータセットの生成された結果と既知の結果との間の差を表して良い。候補アーキテクチャ格付けモジュール４２０は、アーキテクチャのＤＳＬ指定に基づきＲＮＮのコードを生成し、及びＲＮＮを訓練することにより、候補アーキテクチャの性能を測定して良い。しかしながら、これは遅い処理である。したがって、候補アーキテクチャ格付けモジュール４２０は、アーキテクチャ格付けニューラルネットワークを用いて、候補アーキテクチャの性能を推定する。
【００３７】
候補アーキテクチャ評価モジュール４４０は、それらのＤＳＬ指定を実行可能コードにコンパイルし、及び各モデルを所与のタスクで訓練することにより、最も有望な候補アーキテクチャを評価する４３０。ＲＮＮアーキテクチャ生成器１１０は、訓練及び評価の結果に基づき、アーキテクチャ−性能対を有するトレーニングデータセットを形成する。ＲＮＮアーキテクチャ生成器１１０は、トレーニングデータセットを用いて、候補アーキテクチャ格付けモジュール４２０により使用されるアーキテクチャ格付けニューラルネットワークを訓練する。トレーニングデータセットは、本願明細書に更に記載されるアーキテクチャ生成ニューラルネットワークを訓練するためにも使用できる。
＜ＲＮＮアーキテクチャ生成＞
【００３８】
図５は、一実施形態による、候補ＲＮＮアーキテクチャの生成のための処理を説明する例を示す。候補アーキテクチャ生成器３１０は、出力ｈｔで開始するアーキテクチャを増大させる。候補アーキテクチャ生成器３１０は、満たされるべき演算子ノード又は起点ノードのプレイスホルダとして、空ノードφ（ストローク付き０）を使用する。起点ノードは、入力値、例えばｘｔに対応する。
【００３９】
候補アーキテクチャ生成器３１０は、出力ノードｈｔから開始する演算子を選択し、それらをＲＮＮの計算を表す木に追加する。候補アーキテクチャ生成器３１０は、空ノードφを指す出力ノードｈｔを有する部分候補アーキテクチャ５１０を初期化する。候補アーキテクチャ生成器３１０が、演算子は満たされるべき１又は複数の子を有すると決定した場合、候補アーキテクチャ生成器３１０は、左から右の順序でその子を満たす。
【００４０】
候補アーキテクチャ生成器３１０は、ＤＳＬを用いて表現される候補アーキテクチャを構築し、増加的にノードは、出力ｈｔから始まる時間にある。一実施形態では、候補アーキテクチャ生成器３１０は、部分的に構成された候補ＲＮＮアーキテクチャを表現する木に追加するために、演算子セットから次ノードをランダムに選択する。別の実施形態では、候補アーキテクチャ生成器３１０は、強化学習を使用して、部分的に構成された候補ＲＮＮアーキテクチャを表現する木に追加するために次ノードを選択する。強化学習の使用は、候補アーキテクチャ生成器３１０が可能なＲＮＮアーキテクチャ空間の中で見込みのある方向に集中できるようにする。
【００４１】
一実施形態では、候補アーキテクチャ生成器３１０は、次ノード５２０の知的選択を実行し、２つのコンポーネント：部分ＲＮＮアーキテクチャの現在状態を表す木エンコーダ、及び入力として現在部分ＲＮＮアーキテクチャの表現を受信し部分ＲＮＮアーキテクチャに追加するために次ノードを予測するよう構成される機械学習に基づくモデルを用いて、部分ＲＮＮアーキテクチャに追加する。別の実施形態では、木エンコーダは、ノードトークン及び全てのその子に再帰的に適用されるＬＳＴＭ（long  short  term  memory）ニューラルネットワークである。
【００４２】
一実施形態では、部分ＲＮＮアーキテクチャに追加されるべき次ノードを予測するために使用される機械学習に基づくモデルは、本願明細書でアーキテクチャ生成ニューラルネットワークとして参照されるニューラルネットワークである。一実施形態では、アーキテクチャ生成ニューラルネットワークはＲＮＮである。アーキテクチャ生成ニューラルネットワークは、部分ＲＮＮアーキテクチャにノードとして追加可能な各演算子についてスコアを生成する。候補アーキテクチャ生成器３１０は、生成されたスコア値に基づき部分ＲＮＮアーキテクチャにノードとして追加するために、演算子を選択する。
【００４３】
図６は、一実施形態による、候補ＲＮＮアーキテクチャの生成の処理を説明するフローチャートを示す。候補アーキテクチャ生成器３１０は、部分ＲＮＮアーキテクチャを初期化する６１０。候補アーキテクチャ生成器３１０は、部分ＲＮＮアーキテクチャの中で空ノードφを識別する６２０。候補アーキテクチャ生成器３１０は、アーキテクチャ生成ニューラルネットワークへの入力として、部分ＲＮＮアーキテクチャの符号化を提供する６３０。アーキテクチャ生成ニューラルネットワークは、空ノードφの代わりに、部分ＲＮＮアーキテクチャに追加可能なノードに対応するスコアを出力する。候補アーキテクチャ生成器３１０は、生成されたスコアに基づき部分ＲＮＮアーキテクチャに追加するために、ノードを選択する６４０。候補アーキテクチャ生成器３１０は、部分アーキテクチャの空ノードを選択したノードで置き換える６５０。候補アーキテクチャ生成器３１０が、部分アーキテクチャの空ノードを演算子ノードで置き換える場合６５０、演算子ノードは、１又は複数の空ノードφを指して良い。例えば、単項ノードは単一入力を表す１つの空ノードφを指し、二項ノードはそれぞれ入力を表す２つの空ノードφを指す、等である。
【００４４】
候補アーキテクチャ生成器３１０は、部分ＲＮＮアーキテクチャのサイズが閾値より大きいかどうかを調べる６６０。候補アーキテクチャ生成器３１０は、部分ＲＮＮアーキテクチャのサイズを、部分ＲＮＮアーキテクチャを表す木の高さ（又は深さ）、つまり出力ノードｈｔ及び部分ＲＮＮアーキテクチャを表す木のノードからの最大距離として決定する。代替として、候補アーキテクチャ生成器３１０は、部分ＲＮＮアーキテクチャのサイズを、部分ＲＮＮアーキテクチャを表す木の中の合計ノード数として決定して良い。閾値は、専門家により又は候補アーキテクチャ生成器３１０により前に生成されたＲＮＮの性能評価に基づき決定され得る構成可能な値であって良い。
【００４５】
したがって、候補アーキテクチャ生成器３１０が、更なる非起点ノードの追加が木の最大高さを超えさせると決定した場合、候補アーキテクチャ生成器３１０は、起点ノードのうちの１つになるよう木を増大させながら、木に追加される次の子に進む。したがって、候補アーキテクチャ生成器３１０が、部分ＲＮＮアーキテクチャのサイズは閾値より小さい（又は等しい）と決定した場合、候補アーキテクチャ生成器３１０は、ステップ６２０、６３０、６４０、６５０、及び６６０を繰り返して、部分ＲＮＮアーキテクチャに他の演算子を追加する。候補アーキテクチャ生成器３１０が、部分ＲＮＮアーキテクチャのサイズは閾値より大きいと決定した場合、候補アーキテクチャ生成器３１０は、空値φを、起点ノード、例えばｘｔで置き換える。部分ＲＮＮアーキテクチャの全ての空ノードφが演算子ノード又は起点ノードにより置き換えられると、部分ＲＮＮアーキテクチャは、ＲＮＮアーキテクチャになる。候補アーキテクチャ生成器３１０は、生成したＲＮＮアーキテクチャを格付けのために候補アーキテクチャ格付けモジュール３２０に、又は評価のために候補アーキテクチャ評価モジュール３３０に提供する。
【００４６】
一実施形態では、図６に示した処理は、目標トークンを用いて、次に処理されるべき空ノードを識別する６２０。部分ＲＮＮアーキテクチャは、２以上の空ノードを含んで良い。例えばｈｔ＝ｇａｔｅ３（φ，φ，σ（φ））。したがって、候補アーキテクチャ生成器３１０は、導入されるべき次ノードを識別する目標トークンＴを導入する。例えば、候補アーキテクチャ生成器３１０は、第１引数が次に満たされるべきノードを表すことを木エンコーダに示すために、表現ｈｔ＝ｇａｔｅ３（Ｔ，φ，σ（φ））を使用して良い。
【００４７】
一実施形態では、候補アーキテクチャ生成器３１０は、等価アーキテクチャの複数の表現を防ぐために、候補アーキテクチャを順序付ける。ＤＳＬは、ＲＮＮアーキテクチャを表現する際に柔軟性を可能にし、それにより、同じＲＮＮアーキテクチャを生じる複数のＤＳＬ指定を可能にする。例えば、交換可能演算子（つまり、Ａｄｄ（ａ，ｂ）＝Ａｄｄ（ｂ，ａ））は、入力が指定される順序に依存して、同じ演算子の２つのＤＳＬ表現を有することができる。候補アーキテクチャ生成器３１０は、任意の交換可能ノードの引数を格納することにより、アーキテクチャの標準順序を定める。例えば、各引数は、英数字値として表現され、引数は必要に応じてアルファベット順又は数値順に表現される。格納された引数は、引数の数と独立の単一の表現を有する。候補アーキテクチャ生成器３１０は、各交換可能演算子の引数の格納されたリストを使用するＲＮＮアーキテクチャのＤＳＬ表現を使用する。候補アーキテクチャ生成器３１０が、演算子は順序の影響を受けること、例えばＳｕｂ及びＤｉｖ演算子、を決定した場合、候補アーキテクチャ生成器３１０は、演算子の引数の並べ替えを実行しない。
＜候補ＲＮＮアーキテクチャ格付け＞
【００４８】
候補アーキテクチャ評価モジュール３３０は、候補ＲＮＮアーキテクチャを評価するために使用されて良い。しかしながら、候補アーキテクチャ評価モジュール３３０は、候補ＲＮＮアーキテクチャ指定から生成されたＲＮＮを訓練することにより、候補ＲＮＮアーキテクチャを評価する。これは、遅く非効率な処理であり得る。候補アーキテクチャ格付けモジュール３２０の実施形態は、機械学習に基づくモデルを用いて、候補ＲＮＮアーキテクチャの性能を予測する。
【００４９】
図７は、一実施形態による、候補ＲＮＮアーキテクチャの格付けのための処理を示す。候補アーキテクチャ格付けモジュール３２０は、候補アーキテクチャ生成器３１０により生成された複数の候補ＲＮＮアーキテクチャを受信する。候補アーキテクチャ格付けモジュール３２０は、複数の候補アーキテクチャの各々の性能を推定する。候補アーキテクチャの性能は、該候補アーキテクチャが所与のタスク、例えば機械翻訳を実行する能力を示す。高い性能スコアを有する候補ＲＮＮアーキテクチャは、高い精度で所与のタスクを実行する。したがって、高い性能スコアを有する候補ＲＮＮアーキテクチャから生成されたＲＮＮから得られる結果は、例えばラベル付けされたデータセットの知られている結果と一致する高い可能性を有する。
【００５０】
候補アーキテクチャ格付けモジュール３２０は、候補ＲＮＮアーキテクチャの符号化、例えば候補ＲＮＮアーキテクチャのＤＳＬ指定を、アーキテクチャ格付けニューラルネットワークへの入力として、提供する７２０。アーキテクチャ格付けニューラルネットワークは、候補ＲＮＮアーキテクチャの性能スコアを生成する。性能スコアは、候補ＲＮＮアーキテクチャの性能を示す。候補アーキテクチャ格付けモジュール３２０は、複数の候補ＲＮＮアーキテクチャの部分集合を、それらの性能スコアに基づき選択する７４０。
【００５１】
一実施形態によると、候補アーキテクチャ格付けモジュール３２０は、所与のＲＮＮアーキテクチャの性能を予測するために、アーキテクチャ格付けニューラルネットワークを訓練する。候補アーキテクチャ格付けモジュール３２０は、候補アーキテクチャ評価モジュール３３０により前に評価されたＲＮＮアーキテクチャ及びそれらの既知の性能スコアを有するトレーニングデータセットを用いて、アーキテクチャ格付けニューラルネットワークを訓練する。トレーニングデータセットは、専門家により推定されたそれらの性能スコアと一緒に、専門家により提供されるＲＮＮアーキテクチャも有して良い。一実施形態では、アーキテクチャ格付けニューラルネットワークはＲＮＮである。アーキテクチャ格付けニューラルネットワークは、学習したベクトル表現により起点ノード（ｘｔ，ｘｔ−１，ｈｔ−１，及びｃｔ−１）を表し、学習した関数により演算子を表す。一実施形態では、アーキテクチャ格付けニューラルネットワークは、木構造超短期記憶ネットワークを用いて演算子ノードを表す。
【００５２】
一実施形態では、候補アーキテクチャ格付けモジュール３２０は、単一時間ステップの間、候補ＲＮＮアーキテクチャを展開し、ｈｔ−１及びｃｔ−１をそれらの関連グラフ及びサブグラフで置き換える。これは、ｈｔ−１の表現が、ｈｔ−１を生成するために使用される起点ノード及び演算子を識別することを可能にする。展開はｈｔ−１の表現を向上し、これは、ｃｔ−１の正確な表現を可能にする。
＜候補ＲＮＮアーキテクチャ評価＞
【００５３】
候補ＲＮＮアーキテクチャの評価は、ＲＮＮアーキテクチャを表すコードを生成することにより実行される。図８は、一実施形態による、ＲＮＮアーキテクチャのＤＳＬ指定からのコード生成の処理を示す。処理は、アプリケーションにおける使用のために最終的に選択された候補ＲＮＮアーキテクチャに基づきＲＮＮを生成するためにも使用されて良い。ＤＳＬコンパイラは、候補アーキテクチャのＳＤＬ指定を受信する８１０。
【００５４】
ＤＳＬパーサ３６０は、ＤＳＬ指定をパースして、候補ＲＮＮアーキテクチャを記述する全ての情報への効率的アクセスを提供するデータ構造を有する候補ＲＮＮアーキテクチャの表現を生成する。最適化器３７０は、幾つかの最適化を実行して、候補ＲＮＮアーキテクチャの性能を向上させて良い。最適化は、候補ＲＮＮアーキテクチャの表現を、同じ結果を提供するがより効率的である候補ＲＮＮアーキテクチャの他の等価表現に変換することにより、実行されて良い。
【００５５】
コード生成器３８０は、候補アーキテクチャのトラバースを実行し、各ノードについて以下のコード生成ステップを繰り返す。コード生成器３８０は、ノードの初期化のためのコードを生成する８４０。コード生成器３８０は、ノードの順方向呼び出しのためのコードを更に生成する８５０。候補アーキテクチャ評価モジュール３３０又はアプリケーションは、ＲＮＮの生成したコードを実行する８６０。
【００５６】
本願明細書に開示の実施形態により生成された候補ＲＮＮは、人間の直感に従わないが、所与のタスクについて良好に実行するアーキテクチャを生成する。開示の実施形態は、言語モデル化（language  modeling：ＬＭ）及び機械翻訳（machine  translation：ＭＴ）のようなタスクのために使用できるが、これらのタスクに限定されない。
＜コンピュータアーキテクチャ＞
【００５７】
図９は、図１のクライアント装置及び／又はコンピューティングシステムを実装する例示的なコンピュータを説明する高レベルブロック図である。コンピュータ９００は、チップセット９０４に結合される少なくとも１つのプロセッサ９０２を有する。チップセット９０４は、メモリ制御ハブ９２０、及び入力／出力（Ｉ／Ｏ）制御ハブ９２２を有する。メモリ９０６及びグラフィックアダプタ９１２は、メモリ制御ハブ９２０に結合され、ディスプレイ９１８はグラフィックアダプタ９１２に結合される。記憶装置９０８、入力装置９１４、及びネットワークアダプタ９１６は、Ｉ／Ｏ制御ハブ９２２に結合される。コンピュータ９００の他の実施形態は、異なるアーキテクチャを有する。
【００５８】
記憶装置９０８は、ハードドライブ、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、又は固体記憶装置のような、非一時的コンピュータ可読記憶媒体である。メモリ９０６は、プロセッサ９０２により使用される命令及びデータを保持する。入力インタフェース９１４は、タッチスクリーンインタフェース、マウス、トラックボール、又は他の種類のポインティングデバイス、キーボード、又はそれらの何らかの組み合わせであり、コンピュータ９００にデータを入力するために使用される。幾つかの実施形態では、コンピュータ９００は、ユーザからのジェスチャにより、入力インタフェース９１４から入力（例えばコマンド）を受信するよう構成されて良い。グラフィックアダプタ９１２は、ディスプレイ９１８に画像及び多の情報を表示する。ネットワークアダプタ９１２は、コンピュータ９００を１又は複数のコンピュータネットワークに結合する。
【００５９】
コンピュータ９００は、本願明細書に記載の機能を提供するためにコンピュータプログラムモジュールを実行するよう適応される。本願明細書で使用されるとき、用語「モジュール」は、特定機能を提供するために使用されるコンピュータプログラムロジックを表す。したがって、モジュールは、ハードウェア、ファームウェア、及び／又はソフトウェアで実装され得る。一実施形態では、プログラムモジュールは、記憶装置９０８に格納され、メモリ９０６にロードされ、プロセッサ９０２により実行される。
【００６０】
図１のエンティティにより使用されるコンピュータ９００の種類は、実施形態及びエンティティにより必要とされる処理能力に依存して変化し得る。コンピュータ９００は、グラフィックアダプタ９１２及びディスプレイ９１８のような、上述のコンポーネントのうちの幾つかを欠くことができる。例えば、システム１４０は、サーバファームにおけるような、ネットワークを通じて通信する複数のブレードサーバにより形成できる。
【００６１】
アプリケーションの主題の理解は、特に以下の例１〜２４であって良い。
（例１）  複数の候補再帰型ニューラルネットワーク（ＲＮＮ）アーキテクチャを生成するステップであって、各候補ＲＮＮアーキテクチャがドメイン固有言語（ＤＳＬ）を用いて表され、前記ＤＳＬは複数の演算子をサポートし、特定候補ＲＮＮの表現は前記ＤＳＬの１又は複数の演算子を有する、ステップと、
前記複数の候補ＲＮＮアーキテクチャの各々について、
前記候補ＲＮＮアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補ＲＮＮアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補ＲＮＮアーキテクチャの性能を表す、ステップと、
前記候補ＲＮＮアーキテクチャの性能を示すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補ＲＮＮアーキテクチャの各々の前記スコアに基づき、候補ＲＮＮアーキテクチャを選択するステップと、
目標ＲＮＮを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標ＲＮＮを表す前記コードを実行するステップと、
を有する方法。
（例２）  前記複数の候補ＲＮＮアーキテクチャを生成するステップは、
部分ＲＮＮアーキテクチャに追加するためにノードを評価するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分ＲＮＮアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ生成ニューラルネットワークの結果に基づき、前記部分ＲＮＮアーキテクチャに追加するノードを選択するステップと、
を有する、例１に記載の方法。
（例３）  前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分ＲＮＮアーキテクチャ及び前記サンプル部分ＲＮＮアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、例２に記載の方法。
（例４）  目標ＲＮＮを生成するために前記候補アーキテクチャをコンパイルするステップは、
前記目標ＲＮＮのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
を含む、例１に記載の方法。
（例５）  前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、例１に記載の方法。
（例６）  前記アーキテクチャ格付けニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプルＲＮＮアーキテクチャ及び前記サンプルＲＮＮアーキテクチャの性能を示すスコア値を有する、例１に記載の方法。
（例７）  前記ＤＳＬは、１又は複数の単項演算子を有し、単項演算子は、重み及びバイアス値を指定する線形演算子、ｓｉｇｍｏｉｄ演算子、ｔａｎｈ演算子、又は正規化線形関数を表すＲｅＬＵ演算子のうちの１つを有する起動機能を表す、例１に記載の方法。
（例８）  前記ＤＳＬは、１又は複数の二項演算子を有し、二項演算子は、加算演算子、乗算演算子、減算演算子、又は除算演算子のうちの１つを有する、例１に記載の方法。
（例９）  前記ＤＳＬは１又は複数の三項演算子を有し、三項演算子は、２つの入力に基づき加重和を実行するｇａｔｅ３演算子を表し、重みが第３入力により表される、例１に記載の方法。
（例１０）  命令を格納する非一時的コンピュータ可読記憶媒体であって、前記命令は、
複数の候補再帰型ニューラルネットワーク（ＲＮＮ）アーキテクチャを生成するステップであって、各候補ＲＮＮアーキテクチャがドメイン固有言語（ＤＳＬ）を用いて表され、前記ＤＳＬは複数の演算子をサポートし、特定候補ＲＮＮの表現は前記ＤＳＬの１又は複数の演算子を有する、ステップと、
前記複数の候補ＲＮＮアーキテクチャの各々について、
前記候補ＲＮＮアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補ＲＮＮアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補ＲＮＮアーキテクチャの性能を表す、ステップと、
前記候補ＲＮＮアーキテクチャの性能を示すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補ＲＮＮアーキテクチャの各々の前記スコアに基づき、候補ＲＮＮアーキテクチャを選択するステップと、
目標ＲＮＮを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標ＲＮＮを表す前記コードを実行するステップ、
のためである、非一時的コンピュータ可読媒体。
（例１１）  前記複数の候補ＲＮＮアーキテクチャを生成するステップのための命令は、
部分ＲＮＮアーキテクチャに追加するためにノードを評価するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分ＲＮＮアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ生成ニューラルネットワークの結果に基づき、前記部分ＲＮＮアーキテクチャに追加するノードを選択するステップ、
のための命令を有する、例１０に記載の非一時的コンピュータ可読記憶媒体。
（例１２）  前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分ＲＮＮアーキテクチャ及び前記サンプル部分ＲＮＮアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、例１１に記載の非一時的コンピュータ可読記憶媒体。
（例１３）  目標ＲＮＮを生成するために前記候補アーキテクチャをコンパイルするステップは、
前記目標ＲＮＮのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
を含む、例１０に記載の非一時的コンピュータ可読記憶媒体。
（例１４）  前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、例１０に記載の非一時的コンピュータ可読記憶媒体。
（例１５）  前記アーキテクチャ格付けニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプルＲＮＮアーキテクチャ及び前記サンプルＲＮＮアーキテクチャの性能を示すスコア値を有する、例１０に記載の非一時的コンピュータ可読記憶媒体。
（例１６）  コンピュータシステムであって、１又は複数のコンピュータプロセッサと、前記１又は複数のプロセッサにより実行されると該１又は複数のプロセッサに工程を実行させるコンピュータ実行可能コードを有する非一時的コンピュータ可読記憶媒体と、を有し、前記工程は、
複数の候補再帰型ニューラルネットワーク（ＲＮＮ）アーキテクチャを生成するステップであって、各候補ＲＮＮアーキテクチャがドメイン固有言語（ＤＳＬ）を用いて表され、前記ＤＳＬは複数の演算子をサポートし、特定候補ＲＮＮの表現は前記ＤＳＬの１又は複数の演算子を有する、ステップと、
前記複数の候補ＲＮＮアーキテクチャの各々について、
前記候補ＲＮＮアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補ＲＮＮアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補ＲＮＮアーキテクチャの性能を表す、ステップと、
前記候補ＲＮＮアーキテクチャの性能を示すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補ＲＮＮアーキテクチャの各々の前記スコアに基づき、候補ＲＮＮアーキテクチャを選択するステップと、
目標ＲＮＮを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標ＲＮＮを表す前記コードを実行するステップと、を有する、コンピュータシステム。
（例１７）  前記複数の候補ＲＮＮアーキテクチャを生成するステップのための命令は、
部分ＲＮＮアーキテクチャに追加するためにノードを評価するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分ＲＮＮアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ生成ニューラルネットワークの結果に基づき、前記部分ＲＮＮアーキテクチャに追加するノードを選択するステップ、
のための命令を有する、例１６に記載のコンピュータシステム。
（例１８）  前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分ＲＮＮアーキテクチャ及び前記サンプル部分ＲＮＮアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、例１７に記載のコンピュータシステム。
（例１９）  目標ＲＮＮを生成するために前記候補アーキテクチャをコンパイルするステップのための命令は、
前記目標ＲＮＮのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
のための命令を含む、例１６に記載のコンピュータシステム。
（例２０）  前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、例１０に記載の非一時的コンピュータ可読記憶媒体。
（例２１）  柔軟なドメイン固有言語（ＤＳＬ）を用いて再帰型ニューラルネットワークを定め、ＤＳＬ表現の予備プールを候補アーキテクチャ集団に書き込むステップと、
１又は複数の自然言語処理タスクについてのアーキテクチャの性能を推定する価値関数に前記ＤＳＬ表現を提出するステップと、
性能指標に依存して、前記候補アーキテクチャ集団から廃棄するためにＤＳＬ表現を選択するステップと、
廃棄のために未だ選択されていないＤＳＬ表現をコンパイルし実行するステップと、
前記候補アーキテクチャ集団に新しいアーキテクチャを追加するステップと、
収束条件が満たされるまで、前記提出するステップ、前記選択し実行するステップ、及び前記追加するステップを繰り返すステップと、
を有する方法。
（例２２）  前記再帰型ニューラルネットワークアーキテクチャは、Gated  Recurrent  Unit（略称、ＧＲＵ）である、例２１に記載の方法。
（例２３）  前記再帰型ニューラルネットワークアーキテクチャは、long−short  term  memory（略称、ＬＳＴＭ）である、例２１に記載の方法。
（例２４）  前記再帰型ニューラルネットワークアーキテクチャは、quasi−recurrent  neural  network（略称、ＱＲＮＮ）である、例２１に記載の方法。
（例２５）  柔軟なドメイン固有言語（ＤＳＬ）を用いて再帰型ニューラルネットワークを定め、ＤＳＬ表現の予備プールを候補アーキテクチャ集団に書き込むステップと、
性能指標に依存して、前記候補アーキテクチャ集団から廃棄するためにＤＳＬ表現を選択するステップと、
廃棄のために未だ選択されていないＤＳＬ表現をコンパイルし実行するステップと、
前記候補アーキテクチャ集団に新しいアーキテクチャを追加するステップと、
機械翻訳タスクについて収束条件が満たされるまで、前記提出するステップ、前記選択し実行するステップ、及び前記追加するステップを繰り返すステップと、
を有する機械翻訳方法。
（例２６）  前記再帰型ニューラルネットワークアーキテクチャは、Ｇａｔｅｄ  Ｒｅｃｃｕｒｅｎｔ  Ｕｎｉｔ（略称、ＧＲＵ）である、例２５に記載の方法。
（例２７）  前記再帰型ニューラルネットワークアーキテクチャは、long−short  term  memory（略称、ＬＳＴＭ）である、例２５〜２６のいずれかに記載の方法。
（例２８）  前記再帰型ニューラルネットワークアーキテクチャは、quasi−recurrent  neural  network（略称、ＱＲＮＮ）である、例２５〜２７のいずれかに記載の方法。
（例２９）  強化学習を用いて前記再帰型ニューラルネットワークアーキテクチャを訓練するステップ、を更に含む例２５〜２８のいずれかに記載の方法。
＜追加的考察＞
【００６２】
前述の実施形態の記載は、説明を目的として提示されたが、包括的であること又は特許権を開示された正確な形式に限定することを意図しない。関連分野の当業者は、上述の開示に照らして、多くの変形及び変更が可能であることを理解できる。
【００６３】
この記載の幾つかの部分は、情報に対する演算のアルゴリズム及び記号表現の観点で実施形態を記載する。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者により、業務内容を効率的に他の当業者に伝えるために一般的に用いられる。これらの演算は、機能的、計算的、又は論理的に記載されるが、コンピュータプログラム又は等価な電気回路、マイクロコード、等により実装されることが理解される。さらに、一般性を喪失することなく、操作のこれらの構成をモジュールとして参照することが、時には便利であることも分かっている。記載の演算及びそれらの関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせで実施されて良い。
【００６４】
本願明細書に記載の任意のステップ、演算、又は処理は、１又は複数のハードウェア若しくはソフトウェアにより、単独で又は他の装置と組み合わされて実行され又は実装されて良い。一実施形態では、ソフトウェアモジュールは、記載のステップ、動作、又は処理のうちの何れか又は全部を実行するためにコンピュータプロセッサにより実行可能なコンピュータプログラムコードを有するコンピュータ可読媒体を含むコンピュータプログラムプロダクトにより実装される。
【００６５】
本発明は、本願明細書の演算を実行する装置にも関する。この装置は、所要の目的のために特に構成されて良く、及び／又はコンピュータに格納されたコンピュータプログラムにより選択的に起動され又は再構成される汎用目的コンピューティング装置を有して良い。このようなコンピュータプログラムは、非一時的有形コンピュータ可読記憶媒体又は電子命令を格納するのに適しコンピュータシステムバスに結合され得る任意の種類の媒体に格納されて良い。さらに、本願明細書で言及された任意のコンピューティングシステムは、単一のプロセッサを含んで良く、又は計算能力の増大のために複数プロセッサ設計を用いるアーキテクチャであって良い。
【００６６】
実施形態は、本願明細書に記載のコンピューティング処理により生成される製品にも関連し得る。このような製品は、コンピューティング処理から生じる情報を含み、該情報は、非一時的有形コンピュータ可読記憶媒体に格納され、コンピュータプログラムプロダクト又は本願明細書に記載の他のデータの組み合わせの任意の実施形態を含み得る。
【００６７】
最後に、本願明細書で使用される言語は、原則的に、読み易さ及び教示の目的で選択されており、特許権を線引きする又は制限するために選択されてものではない。したがって、特許権の範囲はこの詳細な説明に限定されず、本願が基づき関連する任意の請求項により定められる。したがって、実施形態の本開示は、限定ではなく、以下の請求項に示される特許権の範囲の説明を目的とする。
【００６８】
本願の主題の更なる詳細、態様及び理解は、本願の開示の説明及び部分の一体部分である以下の付録Ａ及びＢに開示される。
＜付録Ａの概要＞
【００６９】
以下の「A  Domain  Specific  Language  for  Automated  RNN  Architecture  Search」と題される文書は、この付録の一部であり、したがって、本願の開示の一部であり、大部分が人間により設計されたアーキテクチャを表すことのできる再帰型ニューラルネットワークを定める柔軟なドメイン固有言語（ＤＳＬ）を開示する。開示の技術は、候補再帰型ニューラルネットワークアーキテクチャがＤＳＬを介して表現される自動アーキテクチャ探索フレームワークを含む。アーキテクチャのＤＳＬ指定は、したがって、アーキテクチャの性能を推定する価値関数に提出される。良好に実行される可能性の高いアーキテクチャのサブサンプルは、次に、コンパイルされ実行される。開示のフレームワークは、新規な再帰型ニューラルネットワークモデルを生成し、そのうち最適なものは、言語モデル化のタスクについて長短期記憶（long−short  term  memory：ＬＳＴＭ）より優れている。
＜付録Ｂの概要＞
【００７０】
以下の「A  FLEXIBLE  APPROACH  TO  AUTOMATED  RNN  ARCHITECTURE  GENERATION」と題される文書は、この付録の一部であり、したがって、本願の開示の一部であり、大部分が人間により設計されたアーキテクチャを表すことのできる再帰型ニューラルネットワークを定める柔軟なドメイン固有言語（ＤＳＬ）を開示する。ニューラルアーキテクチャを設計する処理は、専門知識及び広範囲に及ぶ試行錯誤を必要とする。自動アーキテクチャ探索はこれらの要件を簡略化するが、既存手法により生成された再帰型ニューラルネットワーク（ＲＮＮ）アーキテクチャは、柔軟性及びコンポーネントの両方において制限されている。私達は、任意の深さ及び幅の新規なＲＮＮを生成可能な自動アーキテクチャ探索において使用するためのドメイン固有言語（ＤＳＬ）を提案する。ＤＳＬは、Gated  Recurrent  Unit及びLong  Short  Term  Memoryのような標準的アーキテクチャを定めるために十分に柔軟であり、三角法曲線及び層正規化のような非標準的ＲＮＮコンポーネントの導入を可能にする。２つの異なる候補生成技術、格付け機能及び強化学習によるランダム探索を用いて、私達は、言語モデル化及び機械翻訳分野のために、ＲＮＮ  ＤＳＬにより生成される新規なアーキテクチャを研究する。結果として生じるアーキテクチャは、人間の直感に従わないが、それらの対象とするタスクについて良好に実行し、使用可能なＲＮＮアーキテクチャの空間の提案は、従前に想定されたものより遙かに大きい。
（特定の実装）
【００７１】
開示の技術の方法の実装は、機械翻訳技術を含む。方法は、柔軟なドメイン固有言語（ＤＳＬ）を用いて再帰型ニューラルネットワークアーキテクチャを定め、ＤＳＬ表現の予備プールを候補アーキテクチャ集団に書き込むステップを含む。
方法は、次に、性能指標に依存して候補アーキテクチャ集団から廃棄するために、ＤＳＬ表現を選択するステップを含む。方法は、次に、廃棄のために未だ選択されていないＤＳＬ表現をコンパイルし実行するステップを含む。
方法は、次に、候補アーキテクチャ集団に新しいアーキテクチャを追加するステップを含む。方法は、次に、機械翻訳タスクについて収束条件が満たされるまで、提出するステップ、選択するステップ、コンパイルし実行するステップ、及び追加するステップを繰り返すステップを含む。
再帰型ニューラルネットワークアーキテクチャは、Gated  Recurrent  Unit（略称、ＧＲＵ）、long−short  term  memory（略称、ＬＳＴＭ）、又は準再帰型（quasi−recurrent）ニューラルネットワーク（略称、ＱＲＮＮ）であり得る。
方法は、強化学習を用いて再帰型ニューラルネットワークアーキテクチャを訓練するステップを更に含む。
他の実装は、上述の方法を実行するためにプロセッサにより実行可能な命令を格納する非一時的コンピュータ可読記憶媒体（computer  readable  storage  medium：ＣＲＭ）を含み得る。更に別の実装は、メモリと、上述の方法を実行するために該メモリに格納された命令を実行するよう動作する１又は複数のプロセッサと、を含むシステムを有し得る。
【符号の説明】
【００７２】
１００  システム環境
１１０  クライアント装置
１２０  クライアントアプリケーション
１２５  ネットワーク
１３０  再帰型ニューラルネットワーク
１４０  システム
１５０  ＲＮＮアーキテクチャ生成器
１５５  入力シーケンス
１６５  出力シーケンス
【００７３】
＜付録Ａの詳細＞
2018195314.tif 000004
2018195314.tif 000005
2018195314.tif 000006
2018195314.tif 000007
2018195314.tif 000008
2018195314.tif 000009
2018195314.tif 000010
2018195314.tif 000011
2018195314.tif 000012
2018195314.tif 000013
2018195314.tif 000014
2018195314.tif 000015
2018195314.tif 000016
2018195314.tif 000017
2018195314.tif 000018
2018195314.tif 000019
2018195314.tif 000020
2018195314.tif 000021
2018195314.tif 000022
2018195314.tif 000023
2018195314.tif 000024
2018195314.tif 000025
2018195314.tif 000026
2018195314.tif 000027
2018195314.tif 000028
2018195314.tif 000029
2018195314.tif 000030
2018195314.tif 000031
2018195314.tif 000032
2018195314.tif 000033
2018195314.tif 000034
2018195314.tif 000035
2018195314.tif 000036
2018195314.tif 000037
2018195314.tif 000038
2018195314.tif 000039
2018195314.tif 000040
2018195314.tif 000041
2018195314.tif 000042
2018195314.tif 000043
2018195314.tif 000044
2018195314.tif 000045
2018195314.tif 000046
2018195314.tif 000047
2018195314.tif 000048
2018195314.tif 000049
2018195314.tif 000050
2018195314.tif 000051
2018195314.tif 000052
2018195314.tif 000053
2018195314.tif 000054
2018195314.tif 000055
2018195314.tif 000056
2018195314.tif 000057
2018195314.tif 000058
2018195314.tif 000059
2018195314.tif 000060
2018195314.tif 000061
2018195314.tif 000062
2018195314.tif 000063
2018195314.tif 000064
2018195314.tif 000065
2018195314.tif 000066
2018195314.tif 000067
2018195314.tif 000068
2018195314.tif 000069
2018195314.tif 000070
2018195314.tif 000071
2018195314.tif 000072
2018195314.tif 000073
2018195314.tif 000074
2018195314.tif 000075
2018195314.tif 000076
2018195314.tif 000077
2018195314.tif 000078
2018195314.tif 000079
2018195314.tif 000080
2018195314.tif 000081
2018195314.tif 000082
2018195314.tif 000083
2018195314.tif 000084
2018195314.tif 000085
2018195314.tif 000086
2018195314.tif 000087
2018195314.tif 000088
【００７４】
＜付録Ｂの詳細＞
2018195314.tif 000089
2018195314.tif 000090
2018195314.tif 000091
2018195314.tif 000092
2018195314.tif 000093
2018195314.tif 000094
2018195314.tif 000095
2018195314.tif 000096
2018195314.tif 000097
2018195314.tif 000098
2018195314.tif 000099
2018195314.tif 000100
2018195314.tif 000101
2018195314.tif 000102
2018195314.tif 000103
2018195314.tif 000104
【図１】
2018195314.tif 000105
【図２】
2018195314.tif 000106
【図３】
2018195314.tif 000107
【図４】
2018195314.tif 000108
【図５】
2018195314.tif 000109
【図６】
2018195314.tif 000110
【図７】
2018195314.tif 000111
【図８】
2018195314.tif 000112
【図９】
2018195314.tif 000113
【外国語明細書】
2018195314000001.pdf