(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-01
(45)【発行日】2022-11-10
(54)【発明の名称】再帰型ニューラルネットワークアーキテクチャの生成のためのドメイン固有言語
(51)【国際特許分類】
G06N 3/08 20060101AFI20221102BHJP
G06N 3/04 20060101ALI20221102BHJP
【FI】
G06N3/08 120
G06N3/04 145
【外国語出願】
(21)【出願番号】P 2018095206
(22)【出願日】2018-05-17
【審査請求日】2021-05-14
(32)【優先日】2017-05-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-10-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-04-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース ドット コム インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】スティーブン ジョセフ メリティ
(72)【発明者】
【氏名】リチャード ソーチャー
(72)【発明者】
【氏名】ジェームズ ブラッドベリー
(72)【発明者】
【氏名】カイミング ション
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特開2004-192584(JP,A)
【文献】ZOPH, Barret, et al.,Neural Architecture Search with Reinforcement Learning,arXiv.org,2017年02月15日,[検索日:2022.05.10] <URL: https://arxiv.org/abs/1611.01578>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
1又は複数のコンピュータを有するコンピュータシステムにより実行される方法であって、前記コンピュータシステムは、以下のステップ:
複数のRNNアーキテクチャを生成するステップであって、各候補RNNアーキテクチャがドメイン固有言語(DSL)を用いて定められ、前記DSLは複数の演算子をサポートし、特定候補RNNの定義は前記DSLの1又は複数の演算子を有する、ステップと、
前記複数の候補RNNアーキテクチャの各々について、
前記候補RNNアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補RNNアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補RNNアーキテクチャの性能を表す、ステップと、
前記候補RNNアーキテクチャの性能を表すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補RNNアーキテクチャの各々の前記スコアに基づき、候補RNNアーキテクチャを選択するステップと、
目標RNNを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標RNNを表す前記コードを実行するステップと、
を実行する、方法。
【請求項2】
前記複数の候補RNNアーキテクチャを生成するステップは、
部分RNNアーキテクチャにノードとして追加可能な各演算子のスコアを生成するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分RNNアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ格付けニューラルネットワークにより生成された前記スコアに基づき、前記部分RNNアーキテクチャに追加する演算子を選択するステップと、
前記部分RNNアーキテクチャにノードとして前記選択した演算子を追加するステップと、
を有する、請求項1に記載の方法。
【請求項3】
前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分RNNアーキテクチャ及び前記サンプル部分RNNアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、請求項2に記載の方法。
【請求項4】
目標RNNを生成するために前記候補アーキテクチャをコンパイルするステップは、
前記目標RNNのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
を含む、請求項1乃至3のいずれか一項に記載の方法。
【請求項5】
前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
前記アーキテクチャ格付けニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプルRNNアーキテクチャ及び前記サンプルRNNアーキテクチャの性能を示すスコア値を有する、請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
前記DSLは、1又は複数の単項演算子を有し、単項演算子は、重み及びバイアス値を指定する線形演算子、sigmoid演算子、tanh演算子、又は正規化線形関数を表すReLU演算子のうちの1つを有する
活性化関数を表す、請求項1乃至6のいずれか一項に記載の方法。
【請求項8】
前記DSLは、1又は複数の二項演算子を有し、二項演算子は、加算演算子、乗算演算子、減算演算子、又は除算演算子のうちの1つを有する、請求項1乃至7のいずれか一項に記載の方法。
【請求項9】
前記DSLは1又は複数の三項演算子を有し、三項演算子は、2つの入力に基づき加重和を実行するgate3演算子を表し、重みが第3入力により表される、請求項1乃至8のいずれか一項に記載の方法。
【請求項10】
非一時的コンピュータ可読記憶媒体であって、1又は複数のコンピュータにより実行されると、前記1又は複数のコンピュータに、請求項1乃至9のいずれか一項に記載の方法のステップを実行させるコンピュータ実行可能コードを有する、非一時的コンピュータ可読記憶媒体。
【請求項11】
再帰型ニューラルネットワーク(RNN)アーキテクチャを生成するコンピュータシステムであって、前記コンピュータシステムは、
1又は複数のコンピュータプロセッサと、
請求項10に記載の非一時的コンピュータ可読記憶媒体と、
を有するコンピュータシステム。
【請求項12】
コンピュータシステムであって、1又は複数のコンピュータプロセッサと、1又は複数の非一時的コンピュータ可読記憶媒体とを有し、
複数の候補RNNアーキテクチャを生成する手段であって、各候補RNNアーキテクチャがドメイン固有言語(DSL)を用いて定められ、前記DSLは複数の演算子をサポートし、特定候補RNNの定義は前記DSLの1又は複数の演算子を有する、手段と、
前記複数の候補RNNアーキテクチャの各々について、
前記候補RNNアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補RNNアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補RNNアーキテクチャの性能を表す、ステップと、
前記候補RNNアーキテクチャの性能を表すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行する手段と、
前記複数の候補RNNアーキテクチャの各々の前記スコアに基づき、候補RNNアーキテクチャを選択する手段と、
目標RNNを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルする手段と、
前記目標RNNを表す前記コードを実行する手段と、
を更に有するコンピュータシステム。
【請求項13】
請求項2乃至9のいずれか一項に記載の方法のステップを実行する手段、を有する請求項12に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、再帰型ニューラルネットワークアーキテクチャに関し、より具体的には、ドメイン固有言語を用いて表現される再帰型ニューラルネットワークアーキテクチャの自動生成に関する。
【背景技術】
【0002】
ニューラルネットワーク又は人工ニューラルネットワークは、特定の問題を解くために一緒に動作する多数の高度に相互接続された処理要素(ニューロン)で構成される。ニューラルネットワークは、複雑な又は不明確なデータから情報を引き出すことができ、人間又は他のコンピュータ技術により気付くには複雑すぎるパターンを抽出し又は傾向を検出するために使用できる。ニューラルネットワークは、人工ニューロンがノードであり及び重みを有する有向エッジがニューロン出力とニューロン入力との間の接続である、加重有向グラフとして表すことができる。ニューラルネットワークは、複雑なタスク、例えば自然言語処理、コンピュータビジョン、会話認識、生物情報学、画像内のパターン認識、等を実行するために使用される。再帰型ニューラルネットワーク(recurrent neural network:RNN)は、人工ニューラルネットワークの1つの分類であり、接続がニューロン間の有向周期を形成する。
【0003】
ニューラルネットワークの成功は、ニューラルネットワークのアーキテクチャに大きく依存する。ニューラルネットワークのアーキテクチャは、ニューラルネットワークのニューロンがどのように互いに関連して配置されるかを定める。人間の専門家は、直感に導かれて、軽微な変更でも予期しない結果を生成し得る可能なアーキテクチャの広大な範囲を探索する。その結果、ニューラルネットワークアーキテクチャの処理は遅く、コストが高く、労力を要する。したがって、ニューラルネットワークアーキテクチャを設計する従来技術は、時間がかかり、準最適アーキテクチャを生成する場合が多い。
【図面の簡単な説明】
【0004】
【
図1】一実施形態による、RNNアーキテクチャを生成し、生成したアーキテクチャに基づきRNNを実行するシステム環境のブロック図である。
【0005】
【0006】
【
図3】一実施形態による、RNNアーキテクチャ生成器のシステムアーキテクチャのブロック図である。
【0007】
【
図4】一実施形態による、RNNアーキテクチャの生成のための全体処理を示す。
【0008】
【
図5】一実施形態による、候補RNNアーキテクチャの生成のための処理を説明する例を示す。
【0009】
【
図6】一実施形態による、候補RNNアーキテクチャの生成の処理を説明するフローチャートを示す。
【0010】
【
図7】一実施形態による、候補RNNアーキテクチャの格付けの処理を説明するフローチャートを示す。
【0011】
【
図8】一実施形態による、RNNアーキテクチャのDSL指定からのコード生成の処理を説明するフローチャートを示す。
【0012】
【
図9】
図1のクライアント装置及び/又はシステムを実装する例示的なコンピュータを説明する上位ブロック図である。
【0013】
図(FIGS.)及び以下の説明は、単に説明により特定の実施形態を記載する。当業者は、本願明細書に示された構造及び方法の代替の実施形態が本願明細書に記載された原理から逸脱することなく用いられてもよいことを以下の記載から直ちに認識するだろう。以下では、幾つかの実施形態の詳細を参照する。これらの例は添付の図面に示される。
【発明を実施するための形態】
【0014】
<システム環境>
図1は、一実施形態による、RNNアーキテクチャを生成し、生成したアーキテクチャに基づきRNNを実行するシステム環境のブロック図である。
図1により示されるシステム環境100は、1又は複数のクライアント装置110、ネットワーク125、及びシステム140を有する。代替の構成では、異なる及び/又は追加のコンポーネントがシステム環境100に含まれて良い。例えば、システム140は、オンラインシステム又はオフラインで動作するシステムであって良い。
【0015】
システム140は、RNNアーキテクチャ生成器150を含む。RNNアーキテクチャ生成器150は、特定タスク、例えば機械翻訳を実行するよう構成されるRNNアーキテクチャを自動的に生成する。RNNアーキテクチャ生成器150は、ドメイン固有言語(domain specific language:DSL)を用いて種々の候補アーキテクチャを表す。RNNアーキテクチャ生成器150は、種々の候補RNNアーキテクチャの性能を評価し、性能に基づきRNNアーキテクチャを選択する。RNNアーキテクチャ生成器150は、RNNアーキテクチャに基づきRNN130を生成する。
【0016】
図1に示すように、RNN130は、入力シーケンス155を受信し、出力シーケンス165を生成するよう構成される。入力シーケンス155は、ある言語内の文(sentence)であ得る。出力シーケンス165は別の言語内の文であり得る。しかしながら、入力/出力シーケンスは、文字データに限定されず、他の種類のデータ、例えば音声シーケンス又は画像内の連続するピクセルを表して良い。入力シーケンス155は、クライアント装置110上で実行するクライアントアプリケーション120から受信されて良い。RNN130の実行結果は、クライアントアプリケーション120にも、例えばクライアント装置110のユーザへの表示のために、提供されて良い。幾つかの実施形態では、システム140は、複数のプロセッサを有する並列又は分散型システムである。例えば、システム140は、RNN130の訓練及び/又は実行を並列に実行して良い。
【0017】
クライアント装置110は、ユーザ入力を受信し及びネットワーク125を介してデータを送信し及び/又は受信できる1又は複数のコンピューティング装置である。幾つかの実施形態では、クライアント装置110は、システム140に入力データを提供するために、例えば、RNN130により処理された入力シーケンス155を提供するために、及びユーザへの表示のために出力シーケンス165を提供するために、使用される。したがって、クライアント装置110は、システム140の種々のコンポーネントと接続するユーザインタフェースを提供するアプリケーションを実行する。他の実施形態では、クライアント装置自体がRNN130を格納し、RNN130を用いて入力シーケンス155を処理して出力シーケンス165を生成可能である。
【0018】
一実施形態では、クライアント装置110は、デスクトップ又はラップトップコンピュータのような従来のコンピュータシステムである。代替として、クライアント装置110は、パーソナルデジタルアシスタント(PDA)、携帯電話機、スマートフォン、又は別の適切な装置のような、コンピュータ機能を有する装置であって良い。クライアント装置110は、ネットワーク125を介して通信するよう構成される。一実施形態では、クライアント装置110は、クライアント装置110のユーザがシステム140と相互作用することを可能にするアプリケーションを実行する。例えば、クライアント装置110は、ネットワーク125を介してクライアント装置110とシステム140との間の相互作用を可能にするブラウザアプリケーションを実行する。別の実施形態では、クライアント装置110は、IOS(登録商標)又はANDROID(登録商標)のような、クライアント装置110のネイティブオペレーティングシステム上で実行するAPI(application programming interface)を通じてシステム140と相互作用する。
【0019】
ネットワーク125は、有線及び/又は無線通信システムの両方を用いる、ローカルエリア及び/又はワイドエリアネットワークの任意の組み合わせを有して良い。一実施形態では、ネットワーク125は、標準的な通信技術及び/又はプロトコルを使用する。ネットワーク125を介して交換されるデータは、HTML(hypertext markup language)又はXML(extensible markup language)のような任意の適切なフォーマットを用いて表されて良い。幾つかの実施形態では、ネットワーク125の通信リンクのうちの全部又は一部は、任意の適切な技術又は複数の技術を用いて暗号化されて良い。
【0020】
図2は、一実施形態による例示的なRNNである。RNN130は、入力層Li、1又は複数の隠れ層Lh、及び出力層Loを有する。入力層Liは、エッジ210aを介して入力を受信する。出力層Loは、1又は複数のエッジ210dを介して出力を生成する。入力層Liは、1又は複数のエッジ210bを介して隠れ層Lhへ入力を提供する。隠れ層Lhは、1又は複数のエッジ210cを介して出力層Loへ入力を提供する。エッジ210eは、RNN130の層の出力から隠れ層の入力へのフィードバックを表す。フィードバックループは、RNNが今まで何を計算していたかに関する情報をキャプチャする「記憶」を、RNNに提供する。これは、RNNが任意の長さのシーケンスとして表されるデータ、例えば自然言語の文を処理することを可能にする。
【0021】
図1に関連して記載したように、RNNアーキテクチャ生成器150は、ドメイン固有言語(DSL)を用いて種々の候補アーキテクチャを表す。以下は、一実施形態によるDSLの記述である。
<RNNを定義するドメイン固有言語>
【0022】
ドメイン固有言語は、RNNアーキテクチャを定めるシンタックスを提供する。したがって、DSLを用いる指定(specification)は、RNNアーキテクチャを検索しながら、RNNアーキテクチャ生成器150がトラバース可能な探索空間を設定する。DSLのシンタックスは、機械可読であり、及び人間可読でもある。DSLは、GRU(Gated Recurrent Unit)及びLSTM(Long Short Term Memory)、MGU(Minimal Gate Unit)、QRNN(Quasi-Recurrent Neural Network)、NASCell(Neural Architecture Search Cell)及び単純なRNNを含むRNNのアーキテクチャの指定を可能にする。
【0023】
DSLは、単項演算子、二項演算子、三項演算子を含む種々の演算子をサポートする。単項演算子の例は、バイアスを有する単一の線形層を表すMM演算子、つまりMM(x):=Wx+b、tanh関数を表すTanh演算子、関数Sigmoid(x)=σ(x)を表すSigmoid演算子、正規化線形関数を表すReLU演算子である。
【0024】
二項演算子の例は、要素毎の乗算を表すMult演算子Multi(x;y)=x×y、及び要素毎の加算を表すAdd演算子Add(x,y)=x+y、を含む。三項演算子の例は、2つの入力間の加重和を実行するGate3演算子であり、Gate3(x,y,f)=σ(f)ox+(1-σ(f))oyにより定められる。これらの演算子は、集合[xt,xt-1,ht-1,ct-1]からのソースノードに適用される。ここで、xt及びxt-1は現在及び前の時間ステップの入力ベクトルであり、ht-1は前の時間ステップのRNNの出力であり、ct-1は任意的な長期記憶である。Gate3演算子は、制御(gating)する目的で単一のSigmoidの出力を再利用するGRUのような、幾つかのアーキテクチャを定めるために使用される。DSLを用いて定められる例示的なRNNアーキテクチャは次の通りである:
tanh(Add(MM(xt),MM(ht-1)))
【0025】
DSLは、上述のもの以外の他の単項、二項、及び三項演算子をサポートして良い。例えば、幾つかの実施形態では、DSLは、2つの値の比を決定するDiv演算子、つまりDiv(a,b)=a/b、第1値を第2値から減算するSub演算子、つまりSub(a,b)=a-b、三角関数を定める単項演算子、例えばそれぞれ正弦及び余弦関数(activation)としてSin及びCos、現在の時間ステップに従い位置符号化(positional encoding)を適用した結果である変数を表すPosEnc、最適化を表す演算子、例えば入力に層最適化を適用するLayerNorm演算子、及びスケーリングされた指数関数的線形ユニット(scaled exponential linear unit)活性化関数を表すSeLU、を含む追加の演算子をサポートする。
【0026】
種々の演算子がどのように構成されるかを説明するGRU(gated recurrent unit)のDSL定義の一例を次に示す。
【数1】
【0027】
DSLは、隠れ状態htだけでなく、長期記憶のために追加隠れ状態ctも使用するアーキテクチャの指定についてサポートを提供する。ctの値は、htを生成する間に計算される内部ノードから抽出される。DSLは、ノードを番号付けし、次にどのノードからctを抽出すべきか(つまり、ct=Node5)を指定することにより、ctの使用をサポートする。ノード番号は、区切り文字の後のDSL定義の終わりに付加される。ノードは、アーキテクチャを表す木の一貫したトラバースに従うことにより、番号付けされて良い。例えば、ノードは、上から下へ(htが最大である)、及び左から右へ、番号付けされて良い。
<システムアーキテクチャ>
【0028】
図3は一実施形態による、RNNアーキテクチャ生成器のシステムアーキテクチャのブロック図である。RNNアーキテクチャ生成器150は、候補アーキテクチャ生成器310、候補アーキテクチャ格付けモジュール320、候補アーキテクチャ評価モジュール330、RNNアーキテクチャストア340、及びDSLコンパイラ350を有する。他の実施形態では、RNNアーキテクチャ生成器150は、種々の用途のために、追加の、より少数の、又は異なるコンポーネントを有して良い。ネットワークインタフェース、セキュリティ機能、負荷平衡器、障害迂回サーバ、管理及びネットワーク操作コンソール、等のような従来のコンポーネントは、システムアーキテクチャの詳細を不明瞭にしたいために図示されない。
【0029】
候補アーキテクチャ生成器310は、候補アーキテクチャを生成し、それらをフィルタリング及び評価のために送信する。候補アーキテクチャ生成器310は、RNNアーキテクチャストア340に任意の生成したRNNアーキテクチャを格納する。候補アーキテクチャ生成器310は、格付けのために、候補アーキテクチャを候補アーキテクチャ格付けモジュール320に提供する。候補アーキテクチャ生成器310は、格付けに基づき候補アーキテクチャをフィルタリングする。候補アーキテクチャ評価モジュールは、RNNアーキテクチャを評価する。これらのモジュールの詳細は、種々の処理と関連して本願明細書に記載される。
【0030】
DSLコンパイラ350は、DSLを用いて指定されたRNNアーキテクチャ記述を取り込み、この指定からRNNアーキテクチャを生成する。DSLコンパイラ350は、DSLパーサ360、最適化器370、及びコード生成器380を有する。DSLコンパイラ350の他の実施形態は、より多くの又はより少ないコンポーネントを含んで良い。
【0031】
DSLパーサ360は、RNNアーキテクチャのDSL指定を取り込み、この指定がDSLのシンタックスに従うことを保証するために、この指定をパースする。DSLパーサ360は、RNNアーキテクチャ生成器150の種々のソフトウェアモジュールが受信したDSL指定に対応するRNNアーキテクチャを処理することを可能にする表現(例えば、データ構造)を構築する。例えば、DSLパーサ360は、より効率的なアーキテクチャへの表現の変換を実行するために、生成した表現を最適化器に提供する。生成された表現は、指定RNNアーキテクチャに対応するコードを生成するために、コード生成器により更に処理される。
【0032】
最適化器370は、生成されたコードに基づきRNNの実行を高速化するよう最適化を実行する。一実施形態では、RNNアーキテクチャの実行速度を向上するために、最適化器370は、単一のソースノード、例えばxt,xt-1,ht-1,ct-1に対して実行される全ての行列乗算を集め、それらを単一の行列乗算にまとめる。一例として、最適化器370は、LSTMの8個の行列乗算、xtの4個の小さな行列乗算、及びht-1の4個の小さな行列乗算を、2つの大きな行列乗算に簡略化するために、この最適化を実行する。この最適化は、例えばより高いGPU(graphics processing unit)利用率及び並列計算プラットフォーム、例えばCUDAのより低いカーネル開始オーバヘッドのために、結果として生じるRNNの実行の効率がより高い場合、生じる。
【0033】
コード生成器380は、RNNアーキテクチャのDSL表現からコードを生成する。所与のアーキテクチャ定義について、コード生成器380は、起点ノードから最終ノードhtへ向かう木をトラバースすることにより、DSLをコードにコンパイルする。一実施形態では、コード生成器380は、2つのソースコードセットを生成する。1つは、行列乗算のための重みセットを定めるような、ノードにより必要とされる初期化のためであり、1つは、ランタイム中のRNNの実行ためである。
<RNNアーキテクチャの生成のための処理>
【0034】
RNNの自動生成に関する種々の処理がここに記載される。ここに開示される処理のステップは、ここに記載され図に示されるものと異なる順序で実行されて良い。さらに、ステップは、ここで説明中に示されたものと異なるモジュールにより実行されて良い。
【0035】
図4は、一実施形態による、RNNアーキテクチャの生成のための全体処理を示す。候補アーキテクチャ生成器310は、DSLを用いて表現される候補RNNアーキテクチャを生成する410。一実施形態では、候補アーキテクチャ生成器310は、ランダムアーキテクチャ生成ストラテジを用いて候補アーキテクチャを生成する410。別の実施形態では、候補アーキテクチャ生成器は、増分アーキテクチャ生成ストラテジを用いて候補アーキテクチャを生成する410。増分アーキテクチャ生成ストラテジは、候補RNNアーキテクチャを増加的に構築する。一実施形態では、増分アーキテクチャ生成ストラテジは、アーキテクチャ生成ニューラルネットワークを用いて、部分候補RNNアーキテクチャを増大させるために、該部分候補RNNアーキテクチャに追加されるべき次のDSL演算子を選択する。
【0036】
候補アーキテクチャ格付けモジュール420は、候補アーキテクチャの性能を予測するために、各候補アーキテクチャを格付けする。一実施形態では、候補アーキテクチャ格付けモジュール420は、アーキテクチャ格付けニューラルネットワークを用いて各入力候補アーキテクチャについて性能スコアを決定する。候補アーキテクチャ格付けモジュール420は、所与のタスクについて良好に実行することが期待されない候補RNNアーキテクチャをフィルタリングし除去するために、性能スコアを使用する。候補アーキテクチャの性能は、候補アーキテクチャにより生成される結果の正確さの総指標を表し得る。例えば、結果の正確さは、ラベル付けされたデータセットの生成された結果と既知の結果との間の差を表して良い。候補アーキテクチャ格付けモジュール420は、アーキテクチャのDSL指定に基づきRNNのコードを生成し、及びRNNを訓練することにより、候補アーキテクチャの性能を測定して良い。しかしながら、これは遅い処理である。したがって、候補アーキテクチャ格付けモジュール420は、アーキテクチャ格付けニューラルネットワークを用いて、候補アーキテクチャの性能を推定する。
【0037】
候補アーキテクチャ評価モジュール440は、それらのDSL指定を実行可能コードにコンパイルし、及び各モデルを所与のタスクで訓練することにより、最も有望な候補アーキテクチャを評価する430。RNNアーキテクチャ生成器110は、訓練及び評価の結果に基づき、アーキテクチャ-性能対を有するトレーニングデータセットを形成する。RNNアーキテクチャ生成器110は、トレーニングデータセットを用いて、候補アーキテクチャ格付けモジュール420により使用されるアーキテクチャ格付けニューラルネットワークを訓練する。トレーニングデータセットは、本願明細書に更に記載されるアーキテクチャ生成ニューラルネットワークを訓練するためにも使用できる。
<RNNアーキテクチャ生成>
【0038】
図5は、一実施形態による、候補RNNアーキテクチャの生成のための処理を説明する例を示す。候補アーキテクチャ生成器310は、出力h
tで開始するアーキテクチャを増大させる。候補アーキテクチャ生成器310は、満たされるべき演算子ノード又は起点ノードのプレイスホルダとして、空ノードφ(ストローク付き0)を使用する。起点ノードは、入力値、例えばx
tに対応する。
【0039】
候補アーキテクチャ生成器310は、出力ノードhtから開始する演算子を選択し、それらをRNNの計算を表す木に追加する。候補アーキテクチャ生成器310は、空ノードφを指す出力ノードhtを有する部分候補アーキテクチャ510を初期化する。候補アーキテクチャ生成器310が、演算子は満たされるべき1又は複数の子を有すると決定した場合、候補アーキテクチャ生成器310は、左から右の順序でその子を満たす。
【0040】
候補アーキテクチャ生成器310は、DSLを用いて表現される候補アーキテクチャを構築し、増加的にノードは、出力htから始まる時間にある。一実施形態では、候補アーキテクチャ生成器310は、部分的に構成された候補RNNアーキテクチャを表現する木に追加するために、演算子セットから次ノードをランダムに選択する。別の実施形態では、候補アーキテクチャ生成器310は、強化学習を使用して、部分的に構成された候補RNNアーキテクチャを表現する木に追加するために次ノードを選択する。強化学習の使用は、候補アーキテクチャ生成器310が可能なRNNアーキテクチャ空間の中で見込みのある方向に集中できるようにする。
【0041】
一実施形態では、候補アーキテクチャ生成器310は、次ノード520の知的選択を実行し、2つのコンポーネント:部分RNNアーキテクチャの現在状態を表す木エンコーダ、及び入力として現在部分RNNアーキテクチャの表現を受信し部分RNNアーキテクチャに追加するために次ノードを予測するよう構成される機械学習に基づくモデルを用いて、部分RNNアーキテクチャに追加する。別の実施形態では、木エンコーダは、ノードトークン及び全てのその子に再帰的に適用されるLSTM(long short term memory)ニューラルネットワークである。
【0042】
一実施形態では、部分RNNアーキテクチャに追加されるべき次ノードを予測するために使用される機械学習に基づくモデルは、本願明細書でアーキテクチャ生成ニューラルネットワークとして参照されるニューラルネットワークである。一実施形態では、アーキテクチャ生成ニューラルネットワークはRNNである。アーキテクチャ生成ニューラルネットワークは、部分RNNアーキテクチャにノードとして追加可能な各演算子についてスコアを生成する。候補アーキテクチャ生成器310は、生成されたスコア値に基づき部分RNNアーキテクチャにノードとして追加するために、演算子を選択する。
【0043】
図6は、一実施形態による、候補RNNアーキテクチャの生成の処理を説明するフローチャートを示す。候補アーキテクチャ生成器310は、部分RNNアーキテクチャを初期化する610。候補アーキテクチャ生成器310は、部分RNNアーキテクチャの中で空ノードφを識別する620。候補アーキテクチャ生成器310は、アーキテクチャ生成ニューラルネットワークへの入力として、部分RNNアーキテクチャの符号化を提供する630。アーキテクチャ生成ニューラルネットワークは、空ノードφの代わりに、部分RNNアーキテクチャに追加可能なノードに対応するスコアを出力する。候補アーキテクチャ生成器310は、生成されたスコアに基づき部分RNNアーキテクチャに追加するために、ノードを選択する640。候補アーキテクチャ生成器310は、部分アーキテクチャの空ノードを選択したノードで置き換える650。候補アーキテクチャ生成器310が、部分アーキテクチャの空ノードを演算子ノードで置き換える場合650、演算子ノードは、1又は複数の空ノードφを指して良い。例えば、単項ノードは単一入力を表す1つの空ノードφを指し、二項ノードはそれぞれ入力を表す2つの空ノードφを指す、等である。
【0044】
候補アーキテクチャ生成器310は、部分RNNアーキテクチャのサイズが閾値より大きいかどうかを調べる660。候補アーキテクチャ生成器310は、部分RNNアーキテクチャのサイズを、部分RNNアーキテクチャを表す木の高さ(又は深さ)、つまり出力ノードht及び部分RNNアーキテクチャを表す木のノードからの最大距離として決定する。代替として、候補アーキテクチャ生成器310は、部分RNNアーキテクチャのサイズを、部分RNNアーキテクチャを表す木の中の合計ノード数として決定して良い。閾値は、専門家により又は候補アーキテクチャ生成器310により前に生成されたRNNの性能評価に基づき決定され得る構成可能な値であって良い。
【0045】
したがって、候補アーキテクチャ生成器310が、更なる非起点ノードの追加が木の最大高さを超えさせると決定した場合、候補アーキテクチャ生成器310は、起点ノードのうちの1つになるよう木を増大させながら、木に追加される次の子に進む。したがって、候補アーキテクチャ生成器310が、部分RNNアーキテクチャのサイズは閾値より小さい(又は等しい)と決定した場合、候補アーキテクチャ生成器310は、ステップ620、630、640、650、及び660を繰り返して、部分RNNアーキテクチャに他の演算子を追加する。候補アーキテクチャ生成器310が、部分RNNアーキテクチャのサイズは閾値より大きいと決定した場合、候補アーキテクチャ生成器310は、空値φを、起点ノード、例えばxtで置き換える。部分RNNアーキテクチャの全ての空ノードφが演算子ノード又は起点ノードにより置き換えられると、部分RNNアーキテクチャは、RNNアーキテクチャになる。候補アーキテクチャ生成器310は、生成したRNNアーキテクチャを格付けのために候補アーキテクチャ格付けモジュール320に、又は評価のために候補アーキテクチャ評価モジュール330に提供する。
【0046】
一実施形態では、
図6に示した処理は、目標トークンを用いて、次に処理されるべき空ノードを識別する620。部分RNNアーキテクチャは、2以上の空ノードを含んで良い。例えばht=gate3(φ,φ,σ(φ))。したがって、候補アーキテクチャ生成器310は、導入されるべき次ノードを識別する目標トークンTを導入する。例えば、候補アーキテクチャ生成器310は、第1引数が次に満たされるべきノードを表すことを木エンコーダに示すために、表現h
t=gate3(T,φ,σ(φ))を使用して良い。
【0047】
一実施形態では、候補アーキテクチャ生成器310は、等価アーキテクチャの複数の表現を防ぐために、候補アーキテクチャを順序付ける。DSLは、RNNアーキテクチャを表現する際に柔軟性を可能にし、それにより、同じRNNアーキテクチャを生じる複数のDSL指定を可能にする。例えば、交換可能演算子(つまり、Add(a,b)=Add(b,a))は、入力が指定される順序に依存して、同じ演算子の2つのDSL表現を有することができる。候補アーキテクチャ生成器310は、任意の交換可能ノードの引数を格納することにより、アーキテクチャの標準順序を定める。例えば、各引数は、英数字値として表現され、引数は必要に応じてアルファベット順又は数値順に表現される。格納された引数は、引数の数と独立の単一の表現を有する。候補アーキテクチャ生成器310は、各交換可能演算子の引数の格納されたリストを使用するRNNアーキテクチャのDSL表現を使用する。候補アーキテクチャ生成器310が、演算子は順序の影響を受けること、例えばSub及びDiv演算子、を決定した場合、候補アーキテクチャ生成器310は、演算子の引数の並べ替えを実行しない。
<候補RNNアーキテクチャ格付け>
【0048】
候補アーキテクチャ評価モジュール330は、候補RNNアーキテクチャを評価するために使用されて良い。しかしながら、候補アーキテクチャ評価モジュール330は、候補RNNアーキテクチャ指定から生成されたRNNを訓練することにより、候補RNNアーキテクチャを評価する。これは、遅く非効率な処理であり得る。候補アーキテクチャ格付けモジュール320の実施形態は、機械学習に基づくモデルを用いて、候補RNNアーキテクチャの性能を予測する。
【0049】
図7は、一実施形態による、候補RNNアーキテクチャの格付けのための処理を示す。候補アーキテクチャ格付けモジュール320は、候補アーキテクチャ生成器310により生成された複数の候補RNNアーキテクチャを受信する。候補アーキテクチャ格付けモジュール320は、複数の候補アーキテクチャの各々の性能を推定する。候補アーキテクチャの性能は、該候補アーキテクチャが所与のタスク、例えば機械翻訳を実行する能力を示す。高い性能スコアを有する候補RNNアーキテクチャは、高い精度で所与のタスクを実行する。したがって、高い性能スコアを有する候補RNNアーキテクチャから生成されたRNNから得られる結果は、例えばラベル付けされたデータセットの知られている結果と一致する高い可能性を有する。
【0050】
候補アーキテクチャ格付けモジュール320は、候補RNNアーキテクチャの符号化、例えば候補RNNアーキテクチャのDSL指定を、アーキテクチャ格付けニューラルネットワークへの入力として、提供する720。アーキテクチャ格付けニューラルネットワークは、候補RNNアーキテクチャの性能スコアを生成する。性能スコアは、候補RNNアーキテクチャの性能を示す。候補アーキテクチャ格付けモジュール320は、複数の候補RNNアーキテクチャの部分集合を、それらの性能スコアに基づき選択する740。
【0051】
一実施形態によると、候補アーキテクチャ格付けモジュール320は、所与のRNNアーキテクチャの性能を予測するために、アーキテクチャ格付けニューラルネットワークを訓練する。候補アーキテクチャ格付けモジュール320は、候補アーキテクチャ評価モジュール330により前に評価されたRNNアーキテクチャ及びそれらの既知の性能スコアを有するトレーニングデータセットを用いて、アーキテクチャ格付けニューラルネットワークを訓練する。トレーニングデータセットは、専門家により推定されたそれらの性能スコアと一緒に、専門家により提供されるRNNアーキテクチャも有して良い。一実施形態では、アーキテクチャ格付けニューラルネットワークはRNNである。アーキテクチャ格付けニューラルネットワークは、学習したベクトル表現により起点ノード(xt,xt-1,ht-1,及びct-1)を表し、学習した関数により演算子を表す。一実施形態では、アーキテクチャ格付けニューラルネットワークは、木構造超短期記憶ネットワークを用いて演算子ノードを表す。
【0052】
一実施形態では、候補アーキテクチャ格付けモジュール320は、単一時間ステップの間、候補RNNアーキテクチャを展開し、ht-1及びct-1をそれらの関連グラフ及びサブグラフで置き換える。これは、ht-1の表現が、ht-1を生成するために使用される起点ノード及び演算子を識別することを可能にする。展開はht-1の表現を向上し、これは、ct-1の正確な表現を可能にする。
<候補RNNアーキテクチャ評価>
【0053】
候補RNNアーキテクチャの評価は、RNNアーキテクチャを表すコードを生成することにより実行される。
図8は、一実施形態による、RNNアーキテクチャのDSL指定からのコード生成の処理を示す。処理は、アプリケーションにおける使用のために最終的に選択された候補RNNアーキテクチャに基づきRNNを生成するためにも使用されて良い。DSLコンパイラは、候補アーキテクチャのSDL指定を受信する810。
【0054】
DSLパーサ360は、DSL指定をパースして、候補RNNアーキテクチャを記述する全ての情報への効率的アクセスを提供するデータ構造を有する候補RNNアーキテクチャの表現を生成する。最適化器370は、幾つかの最適化を実行して、候補RNNアーキテクチャの性能を向上させて良い。最適化は、候補RNNアーキテクチャの表現を、同じ結果を提供するがより効率的である候補RNNアーキテクチャの他の等価表現に変換することにより、実行されて良い。
【0055】
コード生成器380は、候補アーキテクチャのトラバースを実行し、各ノードについて以下のコード生成ステップを繰り返す。コード生成器380は、ノードの初期化のためのコードを生成する840。コード生成器380は、ノードの順方向呼び出しのためのコードを更に生成する850。候補アーキテクチャ評価モジュール330又はアプリケーションは、RNNの生成したコードを実行する860。
【0056】
本願明細書に開示の実施形態により生成された候補RNNは、人間の直感に従わないが、所与のタスクについて良好に実行するアーキテクチャを生成する。開示の実施形態は、言語モデル化(language modeling:LM)及び機械翻訳(machine translation:MT)のようなタスクのために使用できるが、これらのタスクに限定されない。
<コンピュータアーキテクチャ>
【0057】
図9は、
図1のクライアント装置及び/又はコンピューティングシステムを実装する例示的なコンピュータを説明する高レベルブロック図である。コンピュータ900は、チップセット904に結合される少なくとも1つのプロセッサ902を有する。チップセット904は、メモリ制御ハブ920、及び入力/出力(I/O)制御ハブ922を有する。メモリ906及びグラフィックアダプタ912は、メモリ制御ハブ920に結合され、ディスプレイ918はグラフィックアダプタ912に結合される。記憶装置908、入力装置914、及びネットワークアダプタ916は、I/O制御ハブ922に結合される。コンピュータ900の他の実施形態は、異なるアーキテクチャを有する。
【0058】
記憶装置908は、ハードドライブ、コンパクトディスク読み出し専用メモリ(CD-ROM)、DVD、又は固体記憶装置のような、非一時的コンピュータ可読記憶媒体である。メモリ906は、プロセッサ902により使用される命令及びデータを保持する。入力インタフェース914は、タッチスクリーンインタフェース、マウス、トラックボール、又は他の種類のポインティングデバイス、キーボード、又はそれらの何らかの組み合わせであり、コンピュータ900にデータを入力するために使用される。幾つかの実施形態では、コンピュータ900は、ユーザからのジェスチャにより、入力インタフェース914から入力(例えばコマンド)を受信するよう構成されて良い。グラフィックアダプタ912は、ディスプレイ918に画像及び多の情報を表示する。ネットワークアダプタ912は、コンピュータ900を1又は複数のコンピュータネットワークに結合する。
【0059】
コンピュータ900は、本願明細書に記載の機能を提供するためにコンピュータプログラムモジュールを実行するよう適応される。本願明細書で使用されるとき、用語「モジュール」は、特定機能を提供するために使用されるコンピュータプログラムロジックを表す。したがって、モジュールは、ハードウェア、ファームウェア、及び/又はソフトウェアで実装され得る。一実施形態では、プログラムモジュールは、記憶装置908に格納され、メモリ906にロードされ、プロセッサ902により実行される。
【0060】
図1のエンティティにより使用されるコンピュータ900の種類は、実施形態及びエンティティにより必要とされる処理能力に依存して変化し得る。コンピュータ900は、グラフィックアダプタ912及びディスプレイ918のような、上述のコンポーネントのうちの幾つかを欠くことができる。例えば、システム140は、サーバファームにおけるような、ネットワークを通じて通信する複数のブレードサーバにより形成できる。
【0061】
アプリケーションの主題の理解は、特に以下の例1~24であって良い。
(例1) 複数の候補再帰型ニューラルネットワーク(RNN)アーキテクチャを生成するステップであって、各候補RNNアーキテクチャがドメイン固有言語(DSL)を用いて表され、前記DSLは複数の演算子をサポートし、特定候補RNNの表現は前記DSLの1又は複数の演算子を有する、ステップと、
前記複数の候補RNNアーキテクチャの各々について、
前記候補RNNアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補RNNアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補RNNアーキテクチャの性能を表す、ステップと、
前記候補RNNアーキテクチャの性能を示すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補RNNアーキテクチャの各々の前記スコアに基づき、候補RNNアーキテクチャを選択するステップと、
目標RNNを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標RNNを表す前記コードを実行するステップと、
を有する方法。
(例2) 前記複数の候補RNNアーキテクチャを生成するステップは、
部分RNNアーキテクチャに追加するためにノードを評価するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分RNNアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ生成ニューラルネットワークの結果に基づき、前記部分RNNアーキテクチャに追加するノードを選択するステップと、
を有する、例1に記載の方法。
(例3) 前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分RNNアーキテクチャ及び前記サンプル部分RNNアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、例2に記載の方法。
(例4) 目標RNNを生成するために前記候補アーキテクチャをコンパイルするステップは、
前記目標RNNのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
を含む、例1に記載の方法。
(例5) 前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、例1に記載の方法。
(例6) 前記アーキテクチャ格付けニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプルRNNアーキテクチャ及び前記サンプルRNNアーキテクチャの性能を示すスコア値を有する、例1に記載の方法。
(例7) 前記DSLは、1又は複数の単項演算子を有し、単項演算子は、重み及びバイアス値を指定する線形演算子、sigmoid演算子、tanh演算子、又は正規化線形関数を表すReLU演算子のうちの1つを有する活性化関数を表す、例1に記載の方法。
(例8) 前記DSLは、1又は複数の二項演算子を有し、二項演算子は、加算演算子、乗算演算子、減算演算子、又は除算演算子のうちの1つを有する、例1に記載の方法。
(例9) 前記DSLは1又は複数の三項演算子を有し、三項演算子は、2つの入力に基づき加重和を実行するgate3演算子を表し、重みが第3入力により表される、例1に記載の方法。
(例10) 命令を格納する非一時的コンピュータ可読記憶媒体であって、前記命令は、
複数の候補再帰型ニューラルネットワーク(RNN)アーキテクチャを生成するステップであって、各候補RNNアーキテクチャがドメイン固有言語(DSL)を用いて表され、前記DSLは複数の演算子をサポートし、特定候補RNNの表現は前記DSLの1又は複数の演算子を有する、ステップと、
前記複数の候補RNNアーキテクチャの各々について、
前記候補RNNアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補RNNアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補RNNアーキテクチャの性能を表す、ステップと、
前記候補RNNアーキテクチャの性能を示すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補RNNアーキテクチャの各々の前記スコアに基づき、候補RNNアーキテクチャを選択するステップと、
目標RNNを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標RNNを表す前記コードを実行するステップ、
のためである、非一時的コンピュータ可読媒体。
(例11) 前記複数の候補RNNアーキテクチャを生成するステップのための命令は、
部分RNNアーキテクチャに追加するためにノードを評価するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分RNNアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ生成ニューラルネットワークの結果に基づき、前記部分RNNアーキテクチャに追加するノードを選択するステップ、
のための命令を有する、例10に記載の非一時的コンピュータ可読記憶媒体。
(例12) 前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分RNNアーキテクチャ及び前記サンプル部分RNNアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、例11に記載の非一時的コンピュータ可読記憶媒体。
(例13) 目標RNNを生成するために前記候補アーキテクチャをコンパイルするステップは、
前記目標RNNのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
を含む、例10に記載の非一時的コンピュータ可読記憶媒体。
(例14) 前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、例10に記載の非一時的コンピュータ可読記憶媒体。
(例15) 前記アーキテクチャ格付けニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプルRNNアーキテクチャ及び前記サンプルRNNアーキテクチャの性能を示すスコア値を有する、例10に記載の非一時的コンピュータ可読記憶媒体。
(例16) コンピュータシステムであって、1又は複数のコンピュータプロセッサと、前記1又は複数のプロセッサにより実行されると該1又は複数のプロセッサに工程を実行させるコンピュータ実行可能コードを有する非一時的コンピュータ可読記憶媒体と、を有し、前記工程は、
複数の候補再帰型ニューラルネットワーク(RNN)アーキテクチャを生成するステップであって、各候補RNNアーキテクチャがドメイン固有言語(DSL)を用いて表され、前記DSLは複数の演算子をサポートし、特定候補RNNの表現は前記DSLの1又は複数の演算子を有する、ステップと、
前記複数の候補RNNアーキテクチャの各々について、
前記候補RNNアーキテクチャのスコアを決定するよう構成されるアーキテクチャ格付けニューラルネットワークへの入力として、前記候補RNNアーキテクチャの符号化を提供するステップであって、前記スコアは所与の特定タスク種類に対する前記候補RNNアーキテクチャの性能を表す、ステップと、
前記候補RNNアーキテクチャの性能を示すスコアを生成するために、前記アーキテクチャ格付けニューラルネットワークを実行するステップと、
を実行するステップと、
前記複数の候補RNNアーキテクチャの各々の前記スコアに基づき、候補RNNアーキテクチャを選択するステップと、
目標RNNを表すコードを生成するために、前記選択した候補アーキテクチャをコンパイルするステップと、
前記目標RNNを表す前記コードを実行するステップと、を有する、コンピュータシステム。
(例17) 前記複数の候補RNNアーキテクチャを生成するステップのための命令は、
部分RNNアーキテクチャに追加するためにノードを評価するよう構成されるアーキテクチャ生成ニューラルネットワークへの入力として、前記部分RNNアーキテクチャの符号化を提供するステップと、
前記アーキテクチャ生成ニューラルネットワークの結果に基づき、前記部分RNNアーキテクチャに追加するノードを選択するステップ、
のための命令を有する、例16に記載のコンピュータシステム。
(例18) 前記アーキテクチャ生成ニューラルネットワークは、タプルを有するトレーニングデータセットを用いて訓練され、各タプルは、サンプル部分RNNアーキテクチャ及び前記サンプル部分RNNアーキテクチャに追加する候補ノードに関連付けられたスコア値を有する、例17に記載のコンピュータシステム。
(例19) 目標RNNを生成するために前記候補アーキテクチャをコンパイルするステップのための命令は、
前記目標RNNのノードを初期化するコードを生成するステップと、
前記ノードに対応する順方向呼び出しを表すコードを生成するステップと、
のための命令を含む、例16に記載のコンピュータシステム。
(例20) 前記アーキテクチャ格付けニューラルネットワークは、再帰型ニューラルネットワークである、例10に記載の非一時的コンピュータ可読記憶媒体。
(例21) 柔軟なドメイン固有言語(DSL)を用いて再帰型ニューラルネットワークを定め、DSL表現の予備プールを候補アーキテクチャ集団に書き込むステップと、
1又は複数の自然言語処理タスクについてのアーキテクチャの性能を推定する価値関数に前記DSL表現を提出するステップと、
性能指標に依存して、前記候補アーキテクチャ集団から廃棄するためにDSL表現を選択するステップと、
廃棄のために未だ選択されていないDSL表現をコンパイルし実行するステップと、
前記候補アーキテクチャ集団に新しいアーキテクチャを追加するステップと、
収束条件が満たされるまで、前記提出するステップ、前記選択し実行するステップ、及び前記追加するステップを繰り返すステップと、
を有する方法。
(例22) 前記再帰型ニューラルネットワークアーキテクチャは、Gated Recurrent Unit(略称、GRU)である、例21に記載の方法。
(例23) 前記再帰型ニューラルネットワークアーキテクチャは、long-short term memory(略称、LSTM)である、例21に記載の方法。
(例24) 前記再帰型ニューラルネットワークアーキテクチャは、quasi-recurrent neural network(略称、QRNN)である、例21に記載の方法。
(例25) 柔軟なドメイン固有言語(DSL)を用いて再帰型ニューラルネットワークを定め、DSL表現の予備プールを候補アーキテクチャ集団に書き込むステップと、
性能指標に依存して、前記候補アーキテクチャ集団から廃棄するためにDSL表現を選択するステップと、
廃棄のために未だ選択されていないDSL表現をコンパイルし実行するステップと、
前記候補アーキテクチャ集団に新しいアーキテクチャを追加するステップと、
機械翻訳タスクについて収束条件が満たされるまで、前記提出するステップ、前記選択し実行するステップ、及び前記追加するステップを繰り返すステップと、
を有する機械翻訳方法。
(例26) 前記再帰型ニューラルネットワークアーキテクチャは、Gated Reccurent Unit(略称、GRU)である、例25に記載の方法。
(例27) 前記再帰型ニューラルネットワークアーキテクチャは、long-short term memory(略称、LSTM)である、例25~26のいずれかに記載の方法。
(例28) 前記再帰型ニューラルネットワークアーキテクチャは、quasi-recurrent neural network(略称、QRNN)である、例25~27のいずれかに記載の方法。
(例29) 強化学習を用いて前記再帰型ニューラルネットワークアーキテクチャを訓練するステップ、を更に含む例25~28のいずれかに記載の方法。
<追加的考察>
【0062】
前述の実施形態の記載は、説明を目的として提示されたが、包括的であること又は特許権を開示された正確な形式に限定することを意図しない。関連分野の当業者は、上述の開示に照らして、多くの変形及び変更が可能であることを理解できる。
【0063】
この記載の幾つかの部分は、情報に対する演算のアルゴリズム及び記号表現の観点で実施形態を記載する。これらのアルゴリズムの説明及び表現は、データ処理技術の当業者により、業務内容を効率的に他の当業者に伝えるために一般的に用いられる。これらの演算は、機能的、計算的、又は論理的に記載されるが、コンピュータプログラム又は等価な電気回路、マイクロコード、等により実装されることが理解される。さらに、一般性を喪失することなく、操作のこれらの構成をモジュールとして参照することが、時には便利であることも分かっている。記載の演算及びそれらの関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせで実施されて良い。
【0064】
本願明細書に記載の任意のステップ、演算、又は処理は、1又は複数のハードウェア若しくはソフトウェアにより、単独で又は他の装置と組み合わされて実行され又は実装されて良い。一実施形態では、ソフトウェアモジュールは、記載のステップ、動作、又は処理のうちの何れか又は全部を実行するためにコンピュータプロセッサにより実行可能なコンピュータプログラムコードを有するコンピュータ可読媒体を含むコンピュータプログラムプロダクトにより実装される。
【0065】
本発明は、本願明細書の演算を実行する装置にも関する。この装置は、所要の目的のために特に構成されて良く、及び/又はコンピュータに格納されたコンピュータプログラムにより選択的に起動され又は再構成される汎用目的コンピューティング装置を有して良い。このようなコンピュータプログラムは、非一時的有形コンピュータ可読記憶媒体又は電子命令を格納するのに適しコンピュータシステムバスに結合され得る任意の種類の媒体に格納されて良い。さらに、本願明細書で言及された任意のコンピューティングシステムは、単一のプロセッサを含んで良く、又は計算能力の増大のために複数プロセッサ設計を用いるアーキテクチャであって良い。
【0066】
実施形態は、本願明細書に記載のコンピューティング処理により生成される製品にも関連し得る。このような製品は、コンピューティング処理から生じる情報を含み、該情報は、非一時的有形コンピュータ可読記憶媒体に格納され、コンピュータプログラムプロダクト又は本願明細書に記載の他のデータの組み合わせの任意の実施形態を含み得る。
【0067】
最後に、本願明細書で使用される言語は、原則的に、読み易さ及び教示の目的で選択されており、特許権を線引きする又は制限するために選択されてものではない。したがって、特許権の範囲はこの詳細な説明に限定されず、本願が基づき関連する任意の請求項により定められる。したがって、実施形態の本開示は、限定ではなく、以下の請求項に示される特許権の範囲の説明を目的とする。
【0068】
本願の主題の更なる詳細、態様及び理解は、本願の開示の説明及び部分の一体部分である以下の付録A及びBに開示される。
<付録Aの概要>
【0069】
以下の「A Domain Specific Language for Automated RNN Architecture Search」と題される文書は、この付録の一部であり、したがって、本願の開示の一部であり、大部分が人間により設計されたアーキテクチャを表すことのできる再帰型ニューラルネットワークを定める柔軟なドメイン固有言語(DSL)を開示する。開示の技術は、候補再帰型ニューラルネットワークアーキテクチャがDSLを介して表現される自動アーキテクチャ探索フレームワークを含む。アーキテクチャのDSL指定は、したがって、アーキテクチャの性能を推定する価値関数に提出される。良好に実行される可能性の高いアーキテクチャのサブサンプルは、次に、コンパイルされ実行される。開示のフレームワークは、新規な再帰型ニューラルネットワークモデルを生成し、そのうち最適なものは、言語モデル化のタスクについて長短期記憶(long-short term memory:LSTM)より優れている。
<付録Bの概要>
【0070】
以下の「A FLEXIBLE APPROACH TO AUTOMATED RNN ARCHITECTURE GENERATION」と題される文書は、この付録の一部であり、したがって、本願の開示の一部であり、大部分が人間により設計されたアーキテクチャを表すことのできる再帰型ニューラルネットワークを定める柔軟なドメイン固有言語(DSL)を開示する。ニューラルアーキテクチャを設計する処理は、専門知識及び広範囲に及ぶ試行錯誤を必要とする。自動アーキテクチャ探索はこれらの要件を簡略化するが、既存手法により生成された再帰型ニューラルネットワーク(RNN)アーキテクチャは、柔軟性及びコンポーネントの両方において制限されている。私達は、任意の深さ及び幅の新規なRNNを生成可能な自動アーキテクチャ探索において使用するためのドメイン固有言語(DSL)を提案する。DSLは、Gated Recurrent Unit及びLong Short Term Memoryのような標準的アーキテクチャを定めるために十分に柔軟であり、三角法曲線及び層正規化のような非標準的RNNコンポーネントの導入を可能にする。2つの異なる候補生成技術、格付け機能及び強化学習によるランダム探索を用いて、私達は、言語モデル化及び機械翻訳分野のために、RNN DSLにより生成される新規なアーキテクチャを研究する。結果として生じるアーキテクチャは、人間の直感に従わないが、それらの対象とするタスクについて良好に実行し、使用可能なRNNアーキテクチャの空間の提案は、従前に想定されたものより遙かに大きい。
(特定の実装)
【0071】
開示の技術の方法の実装は、機械翻訳技術を含む。方法は、柔軟なドメイン固有言語(DSL)を用いて再帰型ニューラルネットワークアーキテクチャを定め、DSL表現の予備プールを候補アーキテクチャ集団に書き込むステップを含む。
方法は、次に、性能指標に依存して候補アーキテクチャ集団から廃棄するために、DSL表現を選択するステップを含む。方法は、次に、廃棄のために未だ選択されていないDSL表現をコンパイルし実行するステップを含む。
方法は、次に、候補アーキテクチャ集団に新しいアーキテクチャを追加するステップを含む。方法は、次に、機械翻訳タスクについて収束条件が満たされるまで、提出するステップ、選択するステップ、コンパイルし実行するステップ、及び追加するステップを繰り返すステップを含む。
再帰型ニューラルネットワークアーキテクチャは、Gated Recurrent Unit(略称、GRU)、long-short term memory(略称、LSTM)、又は準再帰型(quasi-recurrent)ニューラルネットワーク(略称、QRNN)であり得る。
方法は、強化学習を用いて再帰型ニューラルネットワークアーキテクチャを訓練するステップを更に含む。
他の実装は、上述の方法を実行するためにプロセッサにより実行可能な命令を格納する非一時的コンピュータ可読記憶媒体(computer readable storage medium:CRM)を含み得る。更に別の実装は、メモリと、上述の方法を実行するために該メモリに格納された命令を実行するよう動作する1又は複数のプロセッサと、を含むシステムを有し得る。
【符号の説明】
【0072】
100 システム環境
110 クライアント装置
120 クライアントアプリケーション
125 ネットワーク
130 再帰型ニューラルネットワーク
140 システム
150 RNNアーキテクチャ生成器
155 入力シーケンス
165 出力シーケンス
【0073】
【0074】