(58)【調査した分野】(Int.Cl.,DB名)
前記ゲーティングサブシステムが、親ゲーティングサブネットワークおよび複数の子ゲーティングサブネットワークを備え、前記子ゲーティングサブネットワークの各々が、他の各々の子ゲーティングサブネットワークからの前記複数のエキスパートニューラルネットワークの共通の要素を持たないサブセットを管理する、請求項1から3のいずれか一項に記載のシステム。
【発明を実施するための形態】
【0013】
様々な図面中の同様の参照番号および名称は、同様の要素を示す。
【0014】
図1は、ニューラルネットワークシステム100の一例を示している。ニューラルネットワークシステム100は、1つまたは複数の場所にある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの一例であり、その中で、以下に説明するシステム、構成要素、および技法を実装することができる。一般に、システム100は、任意の種類のデジタルデータ入力を受信することと、その入力に基づいて任意の種類のスコア、分類、または回帰出力を生成することとを行うように構成することができるニューラルネットワーク102を含む。
【0015】
たとえば、ニューラルネットワーク102への入力が画像または画像から抽出された特徴である場合、所与の画像についてニューラルネットワーク102によって生成された出力はオブジェクトカテゴリのセットごとのスコアであり得、各スコアは、その画像がそのカテゴリに属するオブジェクトの画像を含む推定尤度を表す。
【0016】
別の例として、ニューラルネットワーク102への入力が、インターネットリソース(たとえば、ウェブページ)、文書、または文書の一部、あるいはインターネットリソース、文書、または文書の一部から抽出された特徴である場合、所与のインターネットリソース、文書、または文書の一部についてニューラルネットワークによって生成される出力は、トピックのセットごとのスコアであり得、各スコアは、インターネットリソース、文書、または文書の一部がトピックについてである推定尤度を表す。
【0017】
別の例として、ニューラルネットワーク102への入力が特定のコンテンツ要素についてのインプレッションコンテキストの特徴である場合、ニューラルネットワーク102によって生成される出力は、その特定のコンテンツ要素がクリックされる推定尤度を表すスコアであり得る。
【0018】
別の例として、ニューラルネットワーク102への入力が、ユーザ向けのパーソナライズされた推奨の特徴、たとえば推奨のコンテキストを特徴付ける特徴、たとえばユーザによって行われた以前のアクションを特徴付ける特徴である場合、ニューラルネットワーク102によって生成される出力は、コンテンツ要素のセットの各々に対するスコアであり得、各スコアは、ユーザがコンテンツ要素を推奨されることに好意的に応答するであろう推定尤度を表す。
【0019】
別の例として、ニューラルネットワーク102への入力がある言語のテキストのシーケンスである場合、ニューラルネットワーク102によって生成される出力は、別の言語の一連のテキストの各々に対するスコアであり得、各スコアは他の言語のテキストが他の言語への入力テキストの適切な翻訳であるという推定尤度を表す。
【0020】
別の例として、ニューラルネットワーク102への入力が話された発話を表すシーケンスである場合、ニューラルネットワーク102によって生成される出力は、一連のテキストの各々に対するスコアであり得、各スコアは、そのテキストが発話の正しいトランスクリプトであるという推定尤度を表す。
【0021】
ニューラルネットワーク102は、ニューラルネットワーク層のスタックを含む。ニューラルネットワーク層のスタックは、任意の種類のニューラルネットワーク層、たとえば長期短期記憶(LSTM)ニューラルネットワーク層または他の再帰型ニューラルネットワーク層、畳み込みニューラルネットワーク層、あるいは完全接続ニューラルネットワーク層であり得る。いくつかの実装形態では、ニューラルネットワーク層のスタックは、2つ以上の異なる種類のニューラルネットワーク層の混合を含み得る。ニューラルネットワーク102の計算能力を高めるために、ニューラルネットワーク102は、スタック型ニューラルネットワーク層の間に1つまたは複数の混合エキスパート(MoE)サブネットワークを含む。
【0022】
具体的には、
図1に示されるように、ニューラルネットワーク102は、ニューラルネットワーク102内の第1のニューラルネットワーク層104と第2のニューラルネットワーク層108との間に配置されたMoEサブネットワーク130を含む。第1のニューラルネットワーク層104および第2のニューラルネットワーク層108は、任意の種類のネットワーク層、たとえばLSTMニューラルネットワーク層または他の再帰型ニューラルネットワーク層、畳み込みニューラルネットワーク層、あるいは完全接続ニューラルネットワーク層であり得る。いくつかの実装形態では、第1のニューラルネットワーク層104および第2のニューラルネットワーク層108のうちの一方または両方は他のMoEサブネットワークであり得る。
【0023】
MoEサブネットワーク130は、複数のエキスパートニューラルネットワーク、たとえばエキスパートニューラルネットワーク114〜122を含む。MoEサブネットワーク130内の各エキスパートニューラルネットワークは、エキスパートニューラルネットワークのエキスパートパラメータのそれぞれのセットに従って第1のニューラルネットワーク層104によって生成された第1の層出力124を処理して、それぞれのエキスパート出力を生成するように構成され得る。
【0024】
図1は、MoEサブネットワーク130が5つのエキスパートニューラルネットワークのみを含むことを示すが、一般に、MoEサブネットワークは多数のエキスパートニューラルネットワーク、たとえば数千のエキスパートニューラルネットワークを含むことができる。各エキスパートニューラルネットワークは、それ自身のパラメータを有するフィードフォワードニューラルネットワークであり得る。エキスパートニューラルネットワークは、同じサイズの入力を受信し、同じサイズの出力を生成するように構成される。いくつかの実装形態では、エキスパートニューラルネットワークは、同一のアーキテクチャを有するが異なるパラメータを有するフィードフォワードニューラルネットワークである。各エキスパートニューラルネットワークは、非常に多数のパラメータを有し得る。たとえば、各エキスパートニューラルネットワークは、百万から二百万のパラメータを有し得、MoEサブネットワークのパラメータの総数を数十億のパラメータにする。
【0025】
MoEサブネットワークは多数のエキスパートニューラルネットワークを含むが、ニューラルネットワーク102による任意の所与のネットワーク入力の処理中に、それらのうちの少数のみ、たとえばエキスパートニューラルネットワークのうちの少数のみが第1の層出力124を処理するために選択される。ニューラルネットワーク102は、第1の層出力124に基づいてエキスパートニューラルネットワークのうちの1つまたは複数を選択することと、選択されたエキスパートニューラルネットワークごとにそれぞれの重みを決定することとを行うように構成されたゲーティングサブシステム110を含む。次いで、ゲーティングサブシステム110は、選択されたエキスパートニューラルネットワークの各々への入力として第1の層出力を提供する。ゲーティングサブシステム110は、選択されたエキスパートニューラルネットワークの重みに従って、選択されたエキスパートニューラルネットワークによって生成されたエキスパート出力を結合して、MoE出力132を生成する。次いで、ゲーティングサブシステム110はMoE出力132を第2のニューラルネットワーク層108への入力として提供する。
【0026】
具体的には、ゲーティングサブシステム110は、第1の層出力を処理して、ゲーティングサブネットワークのゲーティングパラメータのセットに従って複数のエキスパートニューラルネットワークの各々に対するそれぞれの重みを含む重みベクトルを生成することと、重みベクトルにおける重みに基づいて、エキスパートニューラルネットワークのうちの1つまたは複数を選択することとを行うように構成されたゲーティングサブネットワーク112を含む。
【0027】
たとえば、MoEサブネットワーク130がn個のエキスパートニューラルネットワークE
1、...、E
nのセットを含むと仮定すると、Gで示されるゲーティングサブネットワーク112は、所与の入力x(たとえば、第1の層出力124)を処理して、重みベクトルG(x)を生成するように構成される。重みベクトルG(x)は、n個のエキスパートニューラルネットワークのセット内のエキスパートニューラルネットワークごとにそれぞれの重みを含む。ゲーティングサブネットワーク112は、重みベクトルG(x)における重みに基づいて、n個のエキスパートニューラルネットワークのセットから1つまたは複数のエキスパートニューラルネットワークを選択するように構成される。具体的には、重みベクトルG(x)は、セット内のエキスパートニューラルネットワークのうちの少数に対してのみ非ゼロ重みを含むスパースn次元ベクトルである。非ゼロ重みの数は整数であり、MoEサブネットワーク130内のエキスパートニューラルネットワークの数と比較して非常に少ない。たとえば、MoEサブネットワーク130は数百から数千のエキスパートニューラルネットワークを有し得、重みベクトルG(x)は、1、2、または5個の非ゼロ重みを有し得る。非ゼロ重みの数は、計算コスト、モデル品質(たとえば、予測品質)、およびMoEサブネットワーク130がテストまたはトレーニング条件下にあるかどうかなどの基準に基づいて決定することができる。一般に、より少数の非ゼロ重みはより少ない計算を必要とし、より多数の非ゼロ重みはより高いモデル品質をもたらす。一般に、非ゼロ重みの数は、各ネットワーク入力の前に修正することもでき、すべてのネットワーク入力に対して固定に保つこともできる。トレーニング中に、トレーニング中に処理された少なくともいくつかのネットワーク入力について、非ゼロ重みの数が1より大きい値に設定される。ゲーティングサブネットワーク112は、重みベクトルG(x)内に非ゼロ重みを有するエキスパートニューラルネットワークのみを選択する。たとえば、
図1のエキスパートニューラルネットワーク116および120は非ゼロ重みを有し、したがって、さらなる処理のために選択される。
【0028】
あらかじめ定められた数の非ゼロ重みを有する重みベクトルを生成するための処理が、
図3を参照して以下により詳細に説明される。
【0029】
重みベクトルが生成され、1つまたは複数のエキスパートニューラルネットワーク(たとえば、エキスパートニューラルネットワーク116および120)が選択された後、ゲーティングサブシステム110は、選択されたエキスパートニューラルネットワークの各々によって生成されたエキスパート出力(たとえば、エキスパートニューラルネットワーク116によって生成されたエキスパート出力126、およびエキスパートニューラルネットワーク120によって生成されたエキスパート出力128)を、選択されたエキスパートニューラルネットワークの重みによって重み付けすることによって、選択されたエキスパートニューラルネットワークによって生成されたエキスパート出力を結合して、重み付けされたエキスパート出力を生成し、重み付けされたエキスパート出力(たとえば、重み付けされたエキスパート出力134および136)を合計して、MoE出力132を生成すする。
【0030】
具体的には、MoE出力132は以下のように表すことができる:
【0032】
上式で、yは重みベクトルG(x)の出力のスパース性に基づいて計算されるMoE出力である。これは、G(x)
i=0であるところはどこでも、エキスパートニューラルネットワークのセット内のi番目のエキスパートニューラルネットワークE
iがそれぞれのエキスパート出力E
i(x)を計算する必要がないことを意味する。
【0033】
MoE出力132を生成した後、ゲーティングサブシステム110は、さらなる処理のために、MoE出力132を第2のニューラルネットワーク層108への入力として提供する。
【0034】
いくつかの実装形態では、第2のニューラルネットワーク層108は、従来のニューラルネットワーク層ではなく別のMoEサブネットワークであり得る。
【0035】
いくつかの実装形態では、エキスパートニューラルネットワークの数が非常に多い場合(たとえば、1000以上のエキスパートニューラルネットワーク)、ゲーティングサブネットワーク112の分岐係数は、マルチレベル階層MoEサブネットワークを使用することによって低減することができる。たとえば、2レベルの階層MoEサブネットワークでは、ゲーティングサブシステム110は、親ゲーティングサブネットワークと複数の子ゲーティングサブネットワークとを含むことができ、その中で、子ゲーティングサブネットワークの各々はそれ自身が、それ自身のゲーティングサブネットワークを有するセカンダリMoEサブネットワークである。子ゲーティングサブネットワークの各々は、他の各子ゲーティングサブネットワークからの複数のエキスパートニューラルネットワークの
共通の要素を持たないサブセットを管理する。親ゲーティングサブネットワークは、子ゲーティングサブネットワークのスパース重み付けされた組合せを選択し、スパース重み付けされた組合せに基づいてMoE出力を生成する。
【0036】
MoEサブネットワーク130の一部が入力例ごとにアクティブである条件付き計算の使用は、計算を比例的に増加させることなしにニューラルネットワーク102の計算能力を著しく高めることができる。これは、MoEサブネットワーク130が数千のエキスパートニューラルネットワークを有することができるが、入力ごとに評価される必要があるのは非常に少数のエキスパートニューラルネットワークのみであるためである。その結果、ニューラルネットワーク102は、特にモデル容量がトレーニングコーパスにおいて利用可能な膨大な量の知識を吸収するために重要である言語モデリングや機械翻訳などなどのタスクに対して、より低い計算コストで、従来の手法よりも著しく良好な結果を達成することができる。一例として、ニューラルネットワーク102は、10億〜1000億ワードを含むデータセットを有する言語モデリングタスクについてトレーニングすることができる。別の例では、ニューラルネットワーク102は、数千万の文のペアのデータセットを用いて単一の言語ペア機械翻訳タスクについてトレーニングすることができる。別の例では、ニューラルネットワーク102は、12の言語ペアの非常に大きな結合されたデータセットを有する多言語機械翻訳タスクについてトレーニングすることができる。トレーニング中、ニューラルネットワーク102の様々な構成要素は、逆伝搬によって共同でトレーニングすることができる。
【0037】
図2は、MoEサブネットワーク、たとえば
図1のMoEサブネットワーク130を使用して、入力のための混合エキスパート(MoE)出力を生成するための例示的な処理200の流れ図である。便宜上、処理は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、ニューラルネットワークシステム、たとえば、適切にプログラムされた
図1のニューラルネットワークシステム100は、処理を実行することができる。
【0038】
システムは、MoEサブネットワークに先行するニューラルネットワーク層によって生成された第1の層出力を入力として受信する(ステップ202)。MoEサブネットワークは、複数のエキスパートニューラルネットワークと、ゲーティングサブネットワークを含むゲーティングサブシステムとを含む。
【0039】
システムは、第1の層出力に基づいて、複数のエキスパートニューラルネットワークのうちの1つまたは複数を選択し、選択されたエキスパートニューラルネットワークごとにそれぞれの重みを決定する(ステップ204)。
【0040】
具体的には、システムは、第1の層出力を処理して、ゲーティングサブネットワークのゲーティングパラメータのセットに従って、複数のエキスパートニューラルネットワークの各々に対するそれぞれの重みを含む重みベクトルを生成する。次いで、システムは、重みベクトルにおける重みに基づいて、複数のエキスパートニューラルネットワークのうちの1つまたは複数を選択する。具体的には、重みベクトルは、エキスパートニューラルネットワークのうちの少数に対してのみ非ゼロ重みを含むスパースベクトルであり、システムは、重みベクトル内に非ゼロ重みを有するエキスパートニューラルネットワークのみを選択する。重みベクトルを生成することが、
図3を参照して以下により詳細に説明される。
【0041】
システムは、選択されたエキスパートニューラルネットワークの各々への入力として第1の層出力を提供する(ステップ206)。選択されたエキスパートニューラルネットワークの各々は、選択されたエキスパートニューラルネットワークのパラメータのそれぞれの現在値に従って第1の層出力を処理して、それぞれのエキスパート出力を生成するように構成される。
【0042】
次いで、システムは、選択されたエキスパートニューラルネットワークに対する重みに従って、選択されたエキスパートニューラルネットワークによって生成されたエキスパート出力を結合して、MoE出力を生成する(ステップ208)。
【0043】
具体的には、システムは、重み付けされたエキスパート出力を生成するために、選択されたエキスパートニューラルネットワークの各々によって生成されたエキスパート出力を、選択されたエキスパートニューラルネットワークの重みによって重み付けする。次いで、システムは、重み付けされたエキスパート出力を合計して、MoE出力を生成する。
【0044】
次いで、システムは、さらなる処理のために、MoEサブネットワークに続く第2のニューラルネットワーク層への入力としてMoE出力を提供する。
【0045】
図3は、重みベクトルを決定し、重みベクトルに基づいて、MoEサブネットワーク、たとえば、
図1のMoEサブネットワーク130に含まれるエキスパートニューラルネットワークのうちの1つまたは複数を選択するための例示的な処理300の流れ図である。便宜上、処理は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、ニューラルネットワークシステム、たとえば、適切にプログラムされた
図1のニューラルネットワークシステム100は、処理を実行することができる。
【0046】
システムは、MoEサブネットワークのゲーティングサブネットワークのゲーティングパラメータのセットを第1の層出力に適用して、修正された第1の層出力を生成する(ステップ302)。
【0047】
システムは、修正された第1の層出力にノイズを追加して、初期ゲーティング出力を生成する(ステップ304)。ノイズは、負荷分散、すなわち、エキスパートニューラルネットワークが、トレーニング中にトレーニングデータセット内でほぼ等しい数のトレーニング例を受信すること、またはトレーニング中に入力データ内にほぼ等しい数の入力例を受信することを促進することを助ける。
【0048】
たとえば、ノイズは調整可能なガウスノイズであり得る。修正された第1の層出力に調整可能なガウスノイズを追加するために、システムは、トレーニング可能なノイズパラメータのセットを第1の層出力に最初に適用して、初期ノイズ出力を生成する。次いで、システムは、初期ノイズ出力に正規分布からサンプリングされたノイズ値のベクトルを要素ごとに乗算して、最終ノイズ出力を生成する。いくつかの実装形態では、システムは、初期ノイズ出力に正規分布からサンプリングされたノイズ値のベクトルを要素ごとに乗算して、最終ノイズ出力を生成する前に、初期ノイズ出力にsoftplus関数を適用し得る。次いで、システムは、最終ノイズ出力を修正された第1の層出力に追加して、初期ゲーティング出力を生成する。
【0049】
たとえば、第1の層出力xに対する初期ゲーティング出力は、MoEサブネットワーク内のエキスパートニューラルネットワークの数に等しい次元を有するベクトルH(x)として表すことができる。i番目のエキスパートニューラルネットワークに対応するi番目のH(x)の要素は、次のように計算することができる:
H(x)
i=(x・W
g)
i+StandardNormal()・Softplus((x・W
noise)
i)
上式で、W
gは修正された第1の層出力xW
gを生成するために第1の層出力xに適用されるゲーティングパラメータのセットであり、W
noiseはトレーニング可能なノイズパラメータのセットであり、StandardNormal()は、ノイズ値のベクトルをサンプリングするために使用される正規分布である。
【0050】
システムは、スパース化関数を初期ゲーティング出力に適用して、スパース化初期ゲーティング出力を生成する(ステップ306)。スパース化関数は、k個の最大値以外の初期ゲーティング出力のすべての値を、softmax関数によってゼロにマッピングされる値に設定し、ここでkは整数である。kは、計算コスト、モデル品質(たとえば、予測品質)、およびMoEサブネットワークがテストまたはトレーニング条件下にあるかどうかなどの基準に基づいて決定することができる。一般に、より小さい値のkはより少ない計算を必要とし、より大きい値のkはより高いモデル品質をもたらす。一般に、非ゼロ重みの数は、各ネットワーク入力の前に修正することもでき、すべてのネットワーク入力に対して固定に保つこともできる。トレーニング中に処理された少なくともいくつかのネットワーク入力について、トレーニング中に、非ゼロ重みの数が1より大きい値に設定される。スパース化関数の例は次のような形式を有する:
【0052】
スパース化初期ゲーティング出力は、KeepTopK(H(x)、k)と表すことができる。
【0053】
システムは、スパース化初期ゲーティング出力にsoftmax関数を適用して、重みベクトルを生成する(ステップ308)。重みベクトルは、エキスパートニューラルネットワークのうちの少数に対してのみ非ゼロ重みを含むスパースベクトルである。たとえば、重みベクトルG(x)は次のように計算することができる:
G(x)=Softmax(KeepTopK(H(x),k))
【0054】
システムは、重みベクトルにおける重みに基づいて、エキスパートニューラルネットワークのうちの1つまたは複数を選択する(ステップ310)。具体的には、システムは、重みベクトル内に非ゼロ重みを有するエキスパートニューラルネットワークのみを選択する。
【0055】
ニューラルネットワーク102のトレーニング中に、処理200および300は、トレーニング入力用のネットワーク出力を生成することの一部として使用することができる。目的関数の勾配は、トレーニング入力の知られている出力と比較してネットワーク出力の品質を改善するために、ニューラルネットワーク102の様々な構成要素のパラメータの値を調整するために逆伝播することができる。
【0056】
本明細書は、システムおよびコンピュータプログラム構成要素に関連して「構成された」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されることは、動作中にシステムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをシステムがインストールしたことを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されたとき、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0057】
本明細書に記載される主題および機能動作の実施形態は、本明細書に開示されている構造およびそれらの構造上の均等物を含む、デジタル電子回路、有形に具現化されたコンピュータソフトウェアまたはファームウェア、コンピュータハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装され得る。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわちデータ処理装置による実行のため、またはデータ処理装置の動作を制御するための有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、あるいはそれらの1つまたは複数の組合せとすることができる。代替的または追加的に、プログラム命令は、データ処理装置による実行のために適切な受信機装置への送信のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば機械生成電気、光、または電磁信号上に符号化され得る。
【0058】
「データ処理装置」という用語はデータ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置はまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路であるか、またはさらにそれを含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、たとえばプロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、あるいはそれらの1つまたは複数の組合せを任意に含むことができる。
【0059】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれ得る、または記述され得るコンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語、あるいは宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で記述され得、また、スタンドアロンプログラムとして、あるいはモジュール、構成要素、サブルーチン、またはコンピューティング環境での使用に適した他のユニットとしてなどを含む、あらゆる形式で展開され得る。プログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの一部、たとえばマークアップ言語文書に記憶されている1つまたは複数のスクリプトや、問題のプログラム専用の単一のファイルや、または複数の調整されたファイル、たとえば1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルに記憶され得る。コンピュータプログラムは、1つのサイト上に配置されているか、または複数のサイトにわたって分散されており、データ通信ネットワークによって相互接続されている1つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
【0060】
本明細書に記載される処理および論理フローは、入力データを操作して出力を生成することによって機能を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実行され得る。処理および論理フローは、たとえばFPGAまたはASICなどの専用論理回路によって、あるいは専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行され得る。
【0061】
コンピュータプログラムの実行に適したコンピュータは、汎用または専用のマイクロプロセッサまたはその両方、あるいは任意の他の種類の中央処理装置に基づくものとすることができる。一般に、中央処理装置は、読出し専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置およびメモリは、専用論理回路によって補完されてもよく、またはその中に組み込まれてもよい。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば磁気ディスク、光磁気ディスク、または光ディスクを含むか、それらからデータを受信するか、またはそれらにデータを転送するように、あるいはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえばモバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、または、ほんの数例を挙げると、たとえばユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブル記憶デバイスに組み込むことができる。
【0062】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体には、例として半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスが含まれる。
【0063】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにキーボードおよびポインティングデバイス、たとえばユーザがコンピュータに入力を提供することができるマウスまたはトラックボールを有するコンピュータ上に実装され得る。ユーザとの対話を提供するために他の種類のデバイスも使用され得、たとえば、ユーザに提供されるフィードバックは、たとえば視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚的フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受信され得る。さらに、コンピュータは、ユーザによって使用されるデバイスに文書を送受信することによって、たとえば、ウェブブラウザから受信した要求に応じて、ウェブページをユーザのデバイスのウェブブラウザに送信することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス、たとえばメッセージングアプリケーションを実行しているスマートフォンに送信し、その代わりにユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0064】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば、機械学習トレーニングまたは製作、すなわち推論、作業負荷の共通部分および計算集約的部分を処理するための専用ハードウェアアクセラレータユニットを含むことができる。
【0065】
機械学習モデルは、機械学習フレームワーク、たとえばTensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装および展開され得る。
【0066】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンド構成要素を含むか、またはたとえばアプリケーションサーバなどのミドルウェア構成要素を含むか、または、たとえば、ユーザが本明細書に記載される主題の実装形態と対話することができるグラフィカルユーザインタフェース、ウェブブラウザ、またはアプリを有するクライアントコンピュータなどのフロントエンド構成要素を含むか、そのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の1つまたは複数の任意の組合せを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットを含む。
【0067】
コンピューティングシステムはクライアントおよびサーバを含むことができる。クライアントとサーバは一般に互いに離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、たとえば、クライアントとして動作するデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受け取る目的で、データ、たとえばHTMLページをユーザデバイスに送信する。たとえば、ユーザ対話の結果として、ユーザデバイスにおいて生成されたデータは、デバイスからサーバにおいて受信され得る。
【0068】
本明細書は多くの具体的な実装形態の詳細を含むが、これらはいかなる発明の範囲または請求され得るものの範囲に対する限定としてではなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において別々の実施形態の文脈に記載される特定の特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈に記載される様々な特徴はまた、別々にまたは任意の適切なサブコンビネーションで複数の実施形態で実装され得る。さらに、特徴は特定の組合せで作用するものとして上記に記載され、最初はそのように主張されることもあるが、主張される組合せからの1つまたは複数の特徴は、場合によっては組合せから切り取られることができ、主張される組合せはサブコンビネーションまたはサブコンビネーションのバリエーションに向けられ得る。
【0069】
同様に、動作は図面に示され、特許請求の範囲に特定の順序で記載されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序または順番に実行されること、または示されたすべての動作が実行されることを要求するものとして理解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラム構成要素およびシステムは一般に単一のソフトウェア製品に統合されてもよく、複数のソフトウェア製品にパッケージ化されてもよいことが理解されるべきである。
【0070】
主題の特定の実施形態が説明された。他の実施形態は添付の特許請求の範囲内にある。たとえば、特許請求の範囲に記載されたアクションは異なる順序で実行することができ、依然として望ましい結果を達成することができる。一例として、添付の図面に示された処理は、望ましい結果を達成するために、示された特定の順序、または順番を必ずしも必要としない。場合によっては、マルチタスキングおよび並列処理が有利な場合がある。