様々な図面における同様の参照符号および名称は、同様の要素を示す。
図1は、エンティティを特徴づけるネットワーク出力150を生成することが可能な例示的なニューラルネットワークシステム100のブロック図である。ニューラルネットワークシステム100は、後段で説明されるシステム、構成要素、および技術が実装される、1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されたシステムの例である。
本明細書の全体にわたって、「エンティティ」は、任意の適切な種類のデータを含み得る。例えば、エンティティは、画像、オーディオ波形、点群(例えば、LiDARまたはレーダセンサによって生成される)、タンパク質、語のシークエンス(例えば、1つまたは複数の文または段落を形成する)、ビデオ(例えば、ビデオフレームのシークエンスを代表した)、または他の任意の適切な種類のデータ、あるいはこれらの組合せを含むことが可能である。
一部の実装形態において、エンティティは、空間的構造において配置された多数のユニットを含むことが可能であり、例えば、エンティティは、画像であることが可能であり、各ユニットは、画像におけるピクセルであることが可能である。エンティティにおける各ユニット、またはデータ要素は、例えば、空間的構造におけるユニットの位置、および/または空間的構造におけるユニットに関連付けられた特徴を特徴づけることが可能な、関連付けられたデータ要素埋め込みを有することが可能である。このため、エンティティは、空間的構造を有してよく、ユニットまたはデータ要素は、空間的構造における関連付けられた位置を有してよい。空間的構造は、物理的な空間的構造、例えば、画像におけるピクセルに対応してよく、または抽象的な空間的構造、例えば、オーディオサンプルの時間シークエンスに対応してよい。例示的なエンティティおよびユニットについて、図5Aおよび図5Bを参照して後段でより詳細に説明される。
ニューラルネットワークシステム100は、エンティティを特徴づけるネットワーク出力150を生成すべく、(i)データ要素埋め込み104のセットとしてのエンティティの表現、および(ii)潜在的埋め込み102のセット(例えば、ランダムに初期設定された)を処理するように構成されることが可能である。エンティティを表すデータ要素埋め込み104を生成するための例示的なプロセスについて、図4を参照して後段でより詳細に説明される。ネットワーク出力150は、例えば、分類出力、回帰出力、シークエンス出力(すなわち、出力要素のシークエンスを含む)、セグメント化出力、または他の任意の適切なネットワーク出力、あるいはこれらの組合せであることが可能である。
「埋め込み」は、数値の順序付けられた集まり、例えば、数値のベクトル、行列、または他のテンソルを一般的に指すことが可能である。「データ要素埋め込み」は、エンティティにおける特定のユニットに関連付けられたデータ要素の埋め込みを指すことが可能である。「潜在的埋め込み」は、潜在的空間において事前定義された埋め込み、および/またはランダムに初期設定された埋め込みを指すことが可能である。一般に、データ要素埋め込みおよび潜在的埋め込みは、任意の適切な次元を有することが可能である。一部の実装形態において、データ要素埋め込みの次元は、潜在的埋め込みの次元とは異なることが可能である。
後段でより詳細に説明されるとおり、一部の実装形態において、潜在的埋め込み102の数は、データ要素埋め込み104の数より少ないことが可能である。例えば、エンティティが、224×224ピクセルのディメンションを有する画像であり、データ要素埋め込みの数が、M=50176である場合、潜在的埋め込みの数は、N<<Mであるように、例えば、N=512であることが可能である。さらに、一部の実装形態において、潜在的埋め込み102の数は、事前定義され、データ要素埋め込み104の数とは独立であることが可能である。例えば、潜在的埋め込み102は、例えば、正規分布を使用して、ランダムに初期設定されることが可能である。特定の例として、潜在的埋め込みは、平均0、標準偏差0.02、および切断限界[-2, 2]を有する切断正規分布を使用して初期設定されることが可能である。潜在的埋め込み102がどのように獲得されてよいかの単に別の例として、これらは、例えば、各重みが後段で説明される「潜在的アレイ」の要素を定義する、学習された重みのセットを含んでよい。一部の実装形態において、潜在的埋め込み102の数は、ニューラルネットワークシステム100のハイパーパラメータであることが可能である。
前述したとおり、ニューラルネットワークシステム100は、エンティティを特徴づけるネットワーク出力150を生成すべく、エンティティを表すデータ要素埋め込み104および潜在的埋め込み102を処理するように構成されることが可能である。より具体的には、ニューラルネットワークシステム100は、1つまたは複数のニューラルネットワークブロックのシークエンスを有するニューラルネットワーク160を含むことが可能である。「ニューラルネットワークブロック」は、ニューラルネットワークにおける1つまたは複数のニューラルネットワーク層のグループを一般に指すことが可能である。ニューラルネットワークブロックのシークエンスは、(i)1つまたは複数の相互注意ブロック120と、(ii)例えば、相互注意ブロック120に続く、1つまたは複数の自己注意ブロック130と、(iii)出力ブロック140とを含むことが可能である。図1に例示される一例において、ニューラルネットワークブロックのシークエンスは、第1の相互注意ブロック120と、その後に続く第1の自己注意ブロック130と、その後に続く第2の相互注意ブロック120と、その後に続く第2の自己注意ブロック130と、その後に続く出力ブロック140とを含むことが可能である。ニューラルネットワークシステム100は、データ要素埋め込み104および潜在的埋め込み102を処理して、エンティティを特徴づけるネットワーク出力150を生成すべくニューラルネットワークブロックのシークエンスを使用することが可能である。
注意ブロック(例えば、相互注意ブロック120および自己注意ブロック130)は、注意動作を実行するように、例えば、第2のセットの埋め込みに対する注意を使用して第1のセットの埋め込みの中の各埋め込みを更新するように構成されることが可能である。一般に、第2のセットの埋め込みに対する注意を使用して第1のセットの埋め込みを更新することは、第2のセットの埋め込みに対する注意機構を適用することによって第1のセットの埋め込みを更新することを指し、使用され得る多くの異なる可能な注意機構が存在する。例えば、第1のセットの埋め込みの中の各目標埋め込みに関して、各注意ブロックは、第2のセットの埋め込みの中の各埋め込みに関するそれぞれの注意重みを生成すること、ならびに第2のセットの埋め込みおよび対応する注意重みに基づいて、組み合わされた埋め込みを生成することが可能である。特定の例として、各注意ブロックは、組み合わされた埋め込みを、例えば、第2のセットの埋め込みの中の各埋め込みに対応する重みを掛けること、および重み付けされた埋め込みを総和することによって、第2のセットの埋め込みの重み付けされた総和として生成することが可能である。次に、各注意ブロックは、例えば、目標埋め込みを組み合わされた埋め込みで置き換えることによって、組み合わされた埋め込みを目標埋め込みに足すことによって、または他の任意の適切な方法において、第1のセットの埋め込みの中の目標埋め込みを更新すべく組み合わされた埋め込みを使用することができる。
一部の実装形態において、注意ブロックは、クエリ-キー値(QKV)注意動作を実行すること、例えば、クエリ(Q)埋め込み、キー(K)埋め込み、および値(V)埋め込みを使用する第2のセットの埋め込みに対する注意を使用して第1のセットの埋め込みの中の各埋め込みを更新することが可能である。詳細には、各注意ブロックは、(i)クエリサブネットワークと、(ii)キーサブネットワークと、(iii)値サブネットワークとを含むことが可能である。第1のセットの埋め込みの中の各目標埋め込みに関して、クエリサブネットワークは、目標埋め込みに関するそれぞれのクエリ埋め込み(Q)を生成すべく第1のセットの埋め込みの中の目標埋め込みを処理するように構成されることが可能である。キーサブネットワークは、第2のセットの埋め込みの中の各埋め込みに関するそれぞれのキー埋め込み(K)を生成すべく第2のセットの埋め込みの中の各埋め込みを処理するように構成されることが可能である。同様に、値サブネットワークは、第2のセットの埋め込みの中の各埋め込みに関するそれぞれの値埋め込み(V)を生成すべく第2のセットの埋め込みの中の各埋め込みを処理するように構成されることが可能である。
次に、各注意ブロックは、第2のセットの埋め込みに対して第1のセットの埋め込みの中の各目標埋め込みを更新すべくクエリ埋め込み(Q)、キー埋め込み(K)、および値埋め込み(V)を使用することが可能である。具体的には、各注意ブロックは、第2のセットの埋め込みの中の各埋め込みに関する注意重みを、例えば、クエリ埋め込み(Q)とキー埋め込み(K)の各キー埋め込みの内(例えば、ドット)積として生成することが可能である。第2のセットの埋め込み、および注意重みに基づいて、各注意ブロックは、組み合わされた埋め込みを、例えば、それぞれの注意重みによって重み付けされた値埋め込み(V)の線形組合せとして生成することが可能である。最後に、各注意ブロックは、例えば、第1のセットの埋め込みの中の目標埋め込みを値埋め込み(V)の重み付けされた総和で置き換えることによって、組み合わされた埋め込みを使用して第1のセットの埋め込みの中の目標埋め込みを更新することが可能である。
一部の実装形態において、第1のセットの埋め込みと第2のセットの埋め込みは、異なるセットの埋め込みであることが可能である。そのような事例において、注意動作(例えば、QKV注意動作)は、「相互注意」動作と呼ばれることが可能である。相互注意動作は、例えば、相互注意ブロック120によって実行されることが可能である。例えば、第1のセットの埋め込みは、潜在的埋め込み102のセットであることが可能であり、第2のセットの埋め込みは、データ要素埋め込み104であることが可能であり、相互注意ブロック120は、データ要素埋め込み104のセットの中のいくつかの、またはすべてのデータ要素埋め込みに対する相互注意を使用して、各潜在的埋め込みを更新することが可能である。
一部の実装形態において、第1のセットの埋め込みと第2のセットの埋め込みは、同一のセットの埋め込みであることが可能である。そのような事例において、注意動作(例えば、QKV注意動作)は、「自己注意」動作と呼ばれることが可能である。自己注意動作は、例えば、自己注意ブロック130によって実行されることが可能である。例えば、第1のセットの埋め込みは、潜在的埋め込み102のセットであることが可能であり、第2のセットの埋め込みもまた、潜在的埋め込みのセットであることが可能であり、自己注意ブロック130は、潜在的埋め込みのセットに対する自己注意を使用して潜在的埋め込み102のセットの中の各潜在的埋め込みを更新することが可能である。一部の実装形態において、自己注意ブロック130は、潜在的埋め込みのセットに対する自己注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを繰り返し更新することが可能である。
一部の実装形態において、ニューラルネットワーク160は、1つまたは複数の選択ブロック180をさらに含むことが可能である。選択ブロック180は、注意を払うべき相互注意ブロック120に関するデータ要素埋め込み104のセットからデータ要素埋め込みのサブセットを選択することが可能である。言い換えると、一部の実装形態において、相互注意ブロック120は、選択ブロック180によって選択されたデータ要素埋め込みのサブセットだけに対する相互注意を使用して潜在的埋め込み102のセットの中の各潜在的埋め込みを更新することが可能である。例示的な選択ブロック180について、図3を参照して後段でより詳細に説明される。
一部の実装形態において、相互注意ブロック120および自己注意ブロック130は、前述した注意動作に加えて、他の動作を実行するように構成されることが可能である。例えば、1つまたは複数の注意ニューラルネットワーク層を実装することに加えて、注意ブロックは、任意の適切な数(例えば、2層、5層、または10層)の、任意の適切な構成で(例えば、層の線形シークエンスとして)接続された他の任意のニューラルネットワーク層(例えば、畳み込み層、全結合層、再帰層、注意層、その他)を含むことも可能である。
一部の実装形態において、各注意ブロックは、埋め込み(例えば、データ要素埋め込み104および/または潜在的埋め込み102)を処理すること、および埋め込みの次元を変更することを行うように構成されることが可能な1つまたは複数の正規化ニューラルネットワーク層をさらに含むことが可能である。例えば、各データ要素埋め込みが、例えば、Cのチャネル(構成要素)を含み、各潜在的埋め込みが、例えば、Dのチャネルを含む場合、1つまたは複数の正規化層は、同一の数のチャネル、例えば、Cのチャネルを有する、データ要素埋め込みと、潜在的埋め込みとを含む出力を生成すべく埋め込みを処理することが可能である。
一部の実装形態において、各注意ブロックは、入力を組み合わせて、各それぞれの注意ブロックからの出力を有する各注意ブロックにすること、およびその組合せを正規化することを行うように構成された1つまたは複数のニューラルネットワーク層をさらに含むことが可能である。例えば、1つまたは複数のニューラルネットワーク層は、潜在的埋め込み入力を組み合わせて、自己注意ブロック130からの潜在的埋め込み出力を有する(例えば、前述した自己注意動作を使用して自己注意ブロック130によって更新されている潜在的埋め込みを有する)自己注意ブロック130にするように構成されることが可能である。
相互注意ブロック120および自己注意ブロック130に加えて、ニューラルネットワーク160は、出力ブロック140をさらに含むことが可能である。出力ブロック140は、エンティティを特徴づけるネットワーク出力150を生成すべく注意ブロックのシークエンスにおける最後の注意ブロックからの(例えば、図1における自己注意ブロック130からの)出力を処理することが可能である。例えば、出力ブロック140は、プールされた潜在的埋め込み、例えば、グローバル要約ベクトルを生成すべく出力に含まれる潜在的埋め込みをプールする(すなわち、組み合わせる、例えば、平均プールする、または最大プールする)ことが可能である。出力ブロック140は、エンティティを特徴づけるネットワーク出力150を生成すべく、出力ブロック140に含まれる1つまたは複数のニューラルネットワーク層を使用してプールされた潜在的埋め込みを処理することが可能である。例えば、単一の線形ニューラルネットワーク層が、分類出力をもたらすべくグローバル要約ベクトルを或る数の目標クラスまたは目標カテゴリに投影することが可能である。
一部の実装形態において、エンティティを特徴づけるネットワーク出力150は、出力要素のシークエンスを有することが可能である。そのような事例において、時間ステップのシークエンスにおける各時間ステップにおいて、出力ブロック140は、その時間ステップに関する出力要素を生成すべく、注意ブロックのシークエンスにおける最後の注意ブロックからの出力、および任意の先行する時間ステップにおいて生成された出力要素を処理することが可能である。
前述したとおり、ニューラルネットワークシステム100は、データ要素埋め込み104のセットにおけるいくつかの、またはすべてのデータ要素埋め込みに対する相互注意を使用して、潜在的埋め込み102のセットの中の各潜在的埋め込みを更新することが可能である。システム100が相互注意動作を実行するたびに、システム100は、潜在的埋め込み102をデータ要素埋め込み104からの情報で豊かにする。潜在的埋め込み102の数(例えば、N)は、データ要素埋め込み104の数(例えば、M)とは独立であるため、相互注意動作の計算の複雑度は、データ要素埋め込み104の数から部分的に切り離され、多数のデータ要素埋め込み104に関しても実現可能なままである。したがって、ニューラルネットワークシステム100は、計算リソース(例えば、メモリおよび計算パワー)の消費を低減しながら、大きく、複雑な入力を処理することが可能である。
さらに、ニューラルネットワークシステム100は、潜在的埋め込みのセットに対する自己注意を使用して、データ要素埋め込みからの情報で豊かにされた潜在的埋め込みのセットを更新することが可能であり、例えば、自己注意動作は、データ要素埋め込みの数とは独立である。例えば、相互注意動作は、約MNの複雑度を有することが可能であり、自己注意動作は、約N2の複雑度を有することが可能であり、ここで、N<<Mである。自己注意動作の計算の複雑度は、データ要素埋め込みの数から切り離されるため、ニューラルネットワークシステム100は、計算の複雑度を大幅に増大させることなしに、大量の入力を処理すること、および自己注意動作を繰り返し実行することが可能である。したがって、ニューラルネットワークシステム100は、高い予測精度を示すことが、それと同時に計算リソース(例えば、メモリおよび計算パワー)の消費を低減しながら、できる。
一般に、ニューラルネットワーク160は、ニューラルネットワーク160が、規定された機能を実行することができるようにする任意の適切なニューラルネットワークアーキテクチャを有することが可能である。例えば、ニューラルネットワーク160、ならびに相互注意ブロック120、自己注意ブロック130、出力ブロック140、および選択ブロック180のそれぞれは、任意の適切な数(例えば、2層、5層、または10層)の、任意の適切な構成で(例えば、層の線形シークエンスとして)接続された任意の適切なニューラルネットワーク層(例えば、畳み込み層、全結合層、再帰層、注意層、その他)を有することが可能である。また、ニューラルネットワークシステム100は、任意の適切な動作を実行するように構成された任意の数のニューラルネットワークブロックをさらに含むことも可能である。
相互注意ブロック120と自己注意ブロック130は、図1においてインターリーブされたものとして示されるものの、注意ブロックは、任意の適切な構成で配置されることが可能である。例えば、システム100は、2つの相互注意ブロック120と、その後に続く2つの自己注意ブロック130と、その後に続く2つの相互注意ブロック120とを有する注意ブロックのシークエンスを含むことが可能である。別の例において、システム100は、1つの相互注意ブロック120と、その後に続く多数の自己注意ブロック130とを有する注意ブロックのシークエンスを含むことが可能である。一般に、システム100は、任意の適切な構成で配置された任意の数の注意ブロック120、130、および/または選択ブロック180(例えば、5、10、100、その他)を含むことが可能である。
ニューラルネットワークシステム100は、多数の訓練イテレーションにわたって訓練データのセットに対してニューラルネットワーク160を訓練することができる訓練エンジンをさらに含むことが可能である。訓練データは、訓練例のセットを含むことが可能であり、ここで、各訓練例は、(i)訓練入力、および(ii)訓練入力を処理することによってニューラルネットワーク160によって生成されるべき目標出力を指定する。
各訓練イテレーションにおいて、訓練エンジンは、訓練データから訓練例のバッチをサンプリングすること、および対応するネットワーク出力を生成すべく、ニューラルネットワーク160に含まれるニューラルネットワークブロックのシークエンスを使用して、訓練例によって指定される訓練入力を処理することが可能である。詳細には、各訓練入力に関して、ニューラルネットワーク160は、第1の注意ブロックから出力を生成すべく、シークエンスにおける第1の注意ブロック(例えば、図1における相互注意ブロック120)の現在のモデルパラメータ値を使用して訓練入力を処理する。ニューラルネットワーク160は、シークエンスにおける第2の注意ブロックから出力を生成すべく、シークエンスにおける第2の注意ブロック(例えば、図1における自己注意ブロック130)の現在のモデルパラメータ値を使用して、シークエンスにおける第1の注意ブロックによって生成された出力を処理する。ニューラルネットワーク160は、訓練入力に対応するネットワーク出力を生成すべく、出力ブロック140の現在のモデルパラメータ値を使用して、シークエンスにおける最後の注意ブロック(例えば、図1における自己注意ブロック130)によって生成された出力を処理する。
訓練エンジンは、(i)ニューラルネットワーク160によって生成されたネットワーク出力と(ii)訓練例によって指定される目標ネットワーク出力の間の類似度を測定する目的関数を最適化すべく、注意ブロック120、130、および出力ブロック140のモデルパラメータ値、ならびに一部の実装形態において、潜在的埋め込み102に関する値を調整することが可能である。目的関数は、例えば、交差エントロピー目的関数、平方誤差目的関数、または他の任意の適切な目的関数であることが可能である。
訓練エンジンは、例えば、誤差逆伝播法技術を使用して目的関数の勾配を算定することが可能である。訓練エンジンは、その勾配を使用して、例えば、任意の適切な勾配降下最適化アルゴリズム、例えば、Adam最適化アルゴリズムを使用して、注意ブロック120、130、および出力ブロック140のモデルパラメータ値を更新することが可能である。訓練エンジンは、ニューラルネットワーク160の訓練中に使用されない検証データのセットに対してニューラルネットワーク160のパフォーマンス測度を算定することが可能である。
前述したとおり、一部の実装形態において、ニューラルネットワークシステム100は、1つまたは複数の選択ブロック180をさらに含むことが可能である。訓練エンジンは、図3を参照して後段でより詳細に説明されるとおり、強化学習技術を使用して1つまたは複数の選択ブロック180を訓練することが可能である。訓練の後、ニューラルネットワークシステム100は、機械学習タスクを実行すべく、例えば、入力を処理して、エンティティを特徴づける出力を生成すべく使用されることが可能である。
ニューラルネットワークシステム100は、任意の適切な機械学習タスクを実行するように構成されることが可能である。いくつかの例について、以下に述べる。
一部の実装形態において、ニューラルネットワークシステム100は、可能な物体カテゴリのセットの中の各物体カテゴリ(例えば、乗り物、歩行者、自転車に乗る人、その他)に関するそれぞれの得点を含む分類出力150を生成すべく、画像のピクセルを表すデータ要素埋め込み104のセットを処理することが可能である。物体カテゴリに関する得点は、その画像がその物体カテゴリに属する物体を描く尤度を定義することが可能である。
一部の実装形態において、システム100は、オーディオ波形におけるオーディオサンプルを表すデータ要素埋め込み104のセットを、音声認識を実行すべく、すなわち、そのオーディオ波形に対応する音素、書記素、文字、または語のシークエンスを定義する出力150を生成すべく、処理することが可能である。
一部の実装形態において、システム100は、自然言語処理タスク、例えば、トピック分類または要約を実行すべく、語のシークエンスにおける語を表すデータ要素埋め込み104のセットを処理することが可能である。トピック分類を実行すべく、システム100は、可能なカテゴリのセットの中の各トピックカテゴリ(例えば、スポーツ、ビジネス、科学、その他)に関するそれぞれの得点を含むネットワーク出力150を生成することが可能である。トピックカテゴリに関する得点は、語のシークエンスがトピックカテゴリに関係する尤度を定義することが可能である。要約を実行すべく、システムは、語の入力シークエンスより短い長さを有し、語の入力シークエンスから重要な、または関係のある情報をキャプチャする語の出力シークエンスを含むネットワーク出力150を生成することが可能である。
一部の実装形態において、システム100は、例えば、テクストのシークエンス、例えば、1つの言語における語、句、文字、または語の断片を表すデータ要素埋め込み104のセットを処理して、テクストのシークエンスの別の言語への翻訳であってよいネットワーク出力150、すなわち、テクストの入力シークエンスの翻訳である他方の言語におけるテクストのシークエンスを生成する、ニューラル機械翻訳タスクを実行することが可能である。特定の例として、そのタスクは、システム100が、多数の異なるソース言語-目標言語ペアの間で翻訳を行うように構成された、多言語機械翻訳タスクであってよい。この例において、ソース言語テクストは、ニューラルネットワークがソース言語テクストを翻訳すべき先の目標言語を示す識別子で増強されてよい。
一部の実装形態において、システム100は、オーディオ処理タスクを実行することが可能である。例えば、データ要素埋め込み104が口頭の発話を表す場合、システム100によって生成される出力150は、各得点が、テクストの断片が発話の正しい転記である推定される尤度を表す、セットのテクストの断片のテクストの各断片に関する得点であってよい。別の例として、データ要素埋め込み104が口頭の発話を表す場合、システム100によって生成される出力150は、特定の語または句(「ホットワード」)が発話において発せられたかどうかを示すことが可能である。別の例として、データ要素埋め込み104が口頭の発話を表す場合、システム100によって生成される出力150は、発話が発せられた自然言語を識別することが可能である。
一部の実装形態において、システム100は、いくつかの自然言語におけるテクストを表すデータ要素埋め込み104のセットに対して動作を行う自然言語処理タスクまたは自然言語理解タスク、例えば、含意関係タスク、言い換えタスク、テクスト類似度タスク、感情タスク、文完成タスク、文法性タスク、その他を実行することが可能である。
一部の実装形態において、システム100は、データ要素埋め込み104が自然言語におけるテクスト、または自然言語におけるテクストの特徴を表し、ネットワーク出力150が自然言語において話されたテクストのオーディオを定義するスペクトログラム、波形、または他のデータである、テクスト音声変換タスクを実行することが可能である。
一部の実装形態において、システム100は、データ要素埋め込み104が、患者に関する電子健康記録データから導出されたデータを表し、出力150は、患者の将来の健康に関係がある予測、例えば、患者に処方されるべき予測される治療、患者に有害健康事象が生じる尤度、または患者に関する予測される診断である、健康予測タスクを実行することが可能である。
一部の実装形態において、システム100は、データ要素埋め込み104がテクストのシークエンスを表し、出力150は、テクストの別のシークエンス、例えば、テクストの入力シークエンスの完成、入力シークエンスにおいて示された質問に対する応答、またはテクストの第1のシークエンスによって指定されたトピックについてのテクストのシークエンスである、テクスト生成タスクを実行することが可能である。別の例として、データ要素埋め込み104は、テクスト以外のデータ、例えば、画像を表すことが可能であり、出力シークエンス150は、データ要素埋め込み104によって表されるデータについて説明するテクストであることが可能である。
一部の実装形態において、システム100は、データ要素埋め込み104が条件設定入力を表し、出力150は、画像のピクセルに関する輝度値入力のシークエンスである、画像生成タスクを実行することが可能である。
一部の実装形態において、システム100は、データ要素埋め込み104が、1つまたは複数の観察のシークエンス、あるいは環境の状態を特徴づける他のデータを表し、出力150は、シークエンスにおける最新のデータに応答してエージェントによって実行されるべきアクションを定義する、エージェント制御タスクを実行することが可能である。エージェントは、例えば、現実世界の、もしくはシミュレートされたロボット、産業施設のための制御システム、または異なる種類のエージェントを制御する制御システムであることが可能である。
一部の実装形態において、システム100は、データ要素埋め込み104が、DNAシークエンスの断片、または他の分子シークエンスを表し、出力150は、例えば、DNAシークエンス断片のデータセットに対して教師なし学習技術を利用することによって、下流のタスクにおいて使用されるようにその断片の埋め込みである、または下流のタスクのための出力である、ゲノミクスタスクを実行することが可能である。下流のタスクの例は、プロモーターサイト予測、メチル化解析、非コード変異体の機能効果を予測することなどを含む。
一部の実装形態において、システム100は、例えば、データ要素埋め込み104がタンパク質を表し、ネットワーク出力150は、タンパク質を特徴づける、タンパク質モデリングタスクを実行することが可能である。例えば、ネットワーク出力150は、タンパク質の予測される安定性、またはタンパク質の予測される構造を特徴づけることが可能である。
一部の実装形態において、システム100は、例えば、データ要素埋め込み104が点群(例えば、LiDARまたはレーダセンサによって生成される)を表し、ネットワーク出力150は、例えば、その点群によって表される物体の種類を特徴づける点群処理タスクを実行することが可能である。
一部の実装形態において、システム100は、多数の個々の機械学習タスクの組合せを実行することが可能であり、すなわち、システム100は、異なる多数の個々の機械学習タスク、例えば、前述した機械学習タスクのうちの2つ以上を実行するように構成される。例えば、システム100は、多数の個々の自然言語理解タスクを実行するように構成されることが可能であり、ニューラルネットワークによって処理されるデータ要素埋め込み104は、データ要素埋め込みに対して実行されるべき個々の自然言語理解タスクのための識別子を含む。
ニューラルネットワークシステム100について、図2を参照して後段でより詳細に説明される。
図2は、より詳細な例示的なニューラルネットワークシステム200(例えば、図1におけるニューラルネットワークシステム100)のブロック図である。ニューラルネットワークシステム200は、後段で説明されるシステム、構成要素、および技術が実装される1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されたシステムの例である。
ニューラルネットワークシステム200は、ニューラルネットワークブロックのシークエンス、例えば、1つまたは複数の注意ブロック、出力ブロック、および、オプションとして、1つまたは複数の選択ブロックを含むことが可能である。ニューラルネットワークシステム200が、第1の相互注意ブロック220aと、その後に続く第1の自己注意ブロック230aと、その後に続く第2の相互注意ブロック220bと、その後に続く第2の自己注意ブロック230bと、その後に続く出力ブロック240とを含む、特定の例が、図2に示される。
図1を参照して前述したとおり、ニューラルネットワークシステム200は、エンティティを特徴づけるネットワーク出力を生成すべく、エンティティ(例えば、画像)を表すデータ要素埋め込み204のセット、および潜在的埋め込み202のセット(例えば、ランダムに初期設定された)を処理するように構成されることが可能である。データ要素埋め込み204のセット(例えば、「バイトアレイ」)は、M×Cのディメンションを有することが可能であり、ここで、Mは、データ要素埋め込みの数であり、Cは、各データ要素埋め込みのチャネルの数である。例えば、エンティティが画像を含む場合、Mは、その画像におけるピクセルの数であってよく、Cは、1ピクセル当たりのチャネルの数であってよい。潜在的埋め込み202のセット(例えば、「潜在的アレイ」)は、N×Dのディメンションを有することが可能であり、ここで、Nは、潜在的埋め込みの数であり、Dは、各潜在的埋め込みのチャネルの数である。一部の実装形態において、Nは、事前定義され、Mとは独立である。一部の実装形態において、N<<Mである。一部の実装形態において、NおよびDは、利用可能な計算リソースに応じて選択されることが可能なハイパーパラメータである。
各注意ブロックは、第2のセットの埋め込みにおけるいくつか、またはすべての埋め込みに対する注意を使用して、第1のセットの埋め込みの中の各埋め込みを更新するように構成されることが可能である。具体的には、各相互注意ブロック220a、220bは、データ要素埋め込み204のセットの中のいくつか、またはすべてのデータ要素埋め込みに対する相互注意を使用して潜在的埋め込み202のセットの中の各潜在的埋め込みを更新することによって、相互注意出力206を生成するように構成されることが可能である。同様に、各自己注意ブロック230a、230bは、潜在的埋め込みのセットに対する自己注意を使用して潜在的埋め込み202のセットの中の各潜在的埋め込みを更新することによって、自己注意出力208を生成するように構成されることが可能である。
図1を参照して前述したとおり、相互注意および自己注意動作は、クエリ-キー値(QKV)注意として実装されることが可能である。例えば、注意ブロックのそれぞれが、クエリ埋め込み(「Q」)を生成すべくクエリサブネットワークを使用し、キー埋め込み(「K」)を生成すべくキーサブネットワークを使用し、値埋め込み(「V」)を生成すべく値サブネットワークを使用することが可能である。相互注意ブロック220a、220bは、相互注意動作を実行すべくクエリ埋め込み、キー埋め込み、および値埋め込みを使用することが可能であり、自己注意ブロック230a、230bは、自己注意動作を実行すべくクエリ埋め込み、キー埋め込み、および値埋め込みを使用することが可能である。
出力ブロック240は、エンティティを特徴づけるネットワーク出力を生成すべく、シークエンスにおける最後の注意ブロックからの出力(例えば、自己注意ブロック230bからの自己注意出力208)を受け取り、その出力を処理することが可能である。具体的には、出力ブロック240は、プールされた潜在的埋め込みを生成すべく潜在的埋め込みをプールするように構成された1つまたは複数のニューラルネットワーク層(例えば、図2における「平均」)を含むことが可能である。出力ブロック240は、エンティティを特徴づける出力を生成すべく1つまたは複数のさらなるニューラルネットワーク層を使用してプールされた潜在的埋め込みを処理することが可能である。
図1を参照して前述したとおり、注意ブロック220、230、および出力ブロック240はそれぞれ、訓練エンジンによって訓練され得るそれぞれのセットのモデルパラメータを有することが可能である。一部の実装形態において、ニューラルネットワークシステム200は、異なるニューラルネットワークブロックの間でモデルパラメータ値を共有することが可能である。例えば、システム200は、第1の相互注意ブロック220aと第2の相互注意ブロック220bの間でモデルパラメータ値を共有することが可能である。同様に、システム200は、第1の自己注意ブロック230aと第2の自己注意ブロック230bの間でモデルパラメータ値を共有することが可能である。一部の実装形態において、システム200は、第1の相互注意ブロック220aとシステム200における他のいずれのニューラルネットワークブロックの間でもモデルパラメータ値を共有するのを控えることが可能である。
異なるニューラルネットワークブロックの間でモデルパラメータ値を共有することは、例えば、過剰適合の尤度を低減すること、および、一部の事例において、システム200のモデルパラメータの総数を低減することによって、訓練されたニューラルネットワークシステム200のパフォーマンスを向上させることが可能である。その結果、システム200は、しきい値レベルのパフォーマンス(例えば、予測精度)を実現するのにより少ない訓練データしか要求しないこと、またはより少ない訓練イテレーションしか要求しないこと、あるいはその両方が可能である。
前述したとおり、一部の実装形態において、ニューラルネットワークシステム200は、1つまたは複数の選択ブロック(例えば、図1における選択ブロック180)をさらに含むことが可能である。各選択ブロックは、注意を払うべきいくつか、またはすべての相互注意ブロック(例えば、ブロック220a、220b)に関してデータ要素埋め込み204のセットからデータ要素埋め込みのサブセットを選択するように構成されることが可能である。そのような事例において、相互注意ブロックは、選択ブロックによって選択されたデータ要素埋め込みのサブセットだけに対する相互注意を使用して潜在的埋め込み202のセットの中の各潜在的埋め込みを更新することが可能である。
特定の例として、一部の実装形態において、エンティティは、毎秒24フレームを有する224×224ピクセルの画像解像度の1秒長のビデオであることが可能である。そのような事例において、データ要素埋め込みの数は、極めて大きいこと、例えば、約1.2百万であることが可能である。データ要素埋め込みの数を低減することが所望される場合、システムは、空間および/または時間にわたって拡張するビデオパッチの埋め込みをサブサンプリングすること、または生成することが可能である。一部の実装形態において、システム200は、注意を払うべき相互注意ブロックに関して約1.2百万のデータ要素埋め込みからデータ要素埋め込みのサブセットを適応的に選択すべく選択ブロックを使用することが可能である。例示的な選択ブロックについて、後段でより詳細に説明される。
図3は、エンティティを特徴づけるネットワーク出力を生成すべく使用されるニューラルネットワークシステム(例えば、図1におけるニューラルネットワークシステム100、または図2におけるニューラルネットワークシステム200)に含まれる例示的な選択ブロック300のブロック図である。選択ブロック300は、後段で説明されるシステム、構成要素、および技術が実装される1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されたシステムの例である。
選択ブロック300は、データ要素埋め込み304のセットからデータ要素埋め込みの適切なサブセットを選択すべく、エンティティ(例えば、画像)を表すデータ要素埋め込み304のセット、および潜在的埋め込み302のセット(例えば、ランダムに初期設定された)を処理するように構成されることが可能である。ニューラルネットワークシステムは、データ要素埋め込みのサブセットを、注意を払うべき1つまたは複数の相互注意ブロックに与えることが可能である。具体的には、1つまたは複数の相互注意ブロックは、選択ブロック300によって選択されたデータ要素埋め込みのサブセットだけに対する相互注意を使用して、潜在的埋め込みのセットの中の各潜在的埋め込みを更新することが可能である。
一部の実装形態において、システムは、データ要素埋め込みのサブセットを選択して、そのサブセットを、注意を払うべき1つまたは複数の相互注意ブロックに与えるべく1つだけの選択ブロックを使用することが可能である。一部の実装形態において、システムは、データ要素埋め込みのサブセットを選択すべく多数の選択ブロックを使用することが可能である。例えば、各選択ブロックは、データ要素埋め込みのセットからデータ要素埋め込みの異なるサブセットを選択することが可能である。一部の実装形態において、システムは、それぞれの選択ブロックによって選択された各サブセットを、注意を払うべきそれぞれの相互注意ブロックに与えることが可能であり、例えば、いくつかの相互注意ブロックが、データ要素埋め込みの異なるサブセットに注意を払うことが可能である。選択ブロック300は、任意の数のデータ要素埋め込み、例えば、データ要素埋め込み304の完全なセットの50%未満、25%未満、10%未満、または5%未満を選択することが可能である。
選択ブロック300は、それぞれについて次により詳細に説明される、(i)パラメータ選択ニューラルネットワーク310、および(ii)ユニット選択ニューラルネットワーク320を使用することによって、データ要素埋め込みのサブセットを選択することが可能である。
ニューラルネットワークシステムが1つまたは複数の相互注意ブロック、1つまたは複数の自己注意ブロック、あるいはその両方を使用して潜在的埋め込み302のセットを更新した後(例えば、図1および図2を参照して前述したとおり)、パラメータ選択ニューラルネットワーク310が、ユニット選択ニューラルネットワークパラメータ360の値を定義するネットワーク出力を生成すべく、潜在的埋め込み302を処理することが可能である。例えば、一部の実装形態において、ユニット選択ニューラルネットワーク320は、ユニット選択ニューラルネットワークパラメータの対応するテンソル(例えば、行列)をそれぞれが有することが可能な1つまたは複数の全結合ニューラルネットワーク層を含むことが可能である。したがって、パラメータ選択ニューラルネットワーク310からの出力360は、例えば、ユニット選択ニューラルネットワーク320のこれらの全結合ニューラルネットワーク層のパラメータ値を定義する数値の順序付けられた集まりを含むことが可能である。
ユニット選択ニューラルネットワーク320は、各データ要素埋め込み304に関する選択得点380を生成すべく、ユニット選択ニューラルネットワークパラメータの値(例えば、パラメータ選択ニューラルネットワーク310によって生成された)に応じてデータ要素埋め込み304のセットの中の各データ要素埋め込みを処理することが可能である。一例において、各データ要素埋め込みに関する選択得点380は、1次元の値、例えば、強化学習Q値であることが可能である。
選択得点308に基づいて、選択ブロック300は、データ要素埋め込み304の完全なセットからデータ要素埋め込みのサブセットを選択することが可能である。例えば、選択ブロックは、データ要素埋め込み304のセットから、最高の選択得点を有する1つまたは複数のデータ要素埋め込みを選択することが可能である。別の例において、選択ブロック300は、データ要素埋め込み304のセットからデータ要素埋め込みの事前定義された一部分、例えば、最高の選択得点を有する5%のデータ要素埋め込みを選択することが可能である。
したがって、選択ブロック300は、データ要素埋め込み304の完全なセットからデータ要素埋め込みの適切なサブセットを適応的に選択することが可能である。例えば、エンティティが224×224ピクセルの画像解像度の1秒長のビデオである場合、選択ブロック300は、例えば、ビデオの最大の値の10,000ピクセルに対応するデータ要素埋め込みのサブセットを選択することが可能である。
図1を参照して前述したとおり、訓練エンジンは、例えば、教師あり学習技術を使用して1つまたは複数の注意ブロック、および出力ブロックのモデルパラメータ値を調整することが可能である。訓練エンジンは、例えば、強化学習技術を使用して1つまたは複数の選択ブロックをさらに訓練することが可能である。例えば、訓練エンジンは、選択ブロック300を介して強化学習目的関数の勾配を反復的に誤差逆伝播させることによって選択ブロック300のモデルパラメータ値を反復的に調整することによって選択ブロック300を訓練することが可能である。強化学習関数は、例えば、平方ベルマン誤差目的関数、または他の任意の適切な強化学習目的関数であることが可能である。一部の実装形態において、訓練エンジンは、ニューラルネットワークの(例えば、1つまたは複数の注意ブロック、出力ブロック、および選択ブロックの)全体的な損失を、教師あり損失と強化学習損失の線形組合せとして算定することが可能である。
選択ブロック300を訓練すべく、各訓練イテレーションにおいて、訓練エンジンは、エンティティを特徴づけるネットワーク出力を生成すべく、データ要素埋め込みのセットおよび潜在的埋め込みのセットを処理するようにニューラルネットワークを使用することが可能である(例えば、図1を参照して前述したとおり)。訓練エンジンは、エンティティを特徴づけるネットワーク出力に基づいてタスクパフォーマンス測度を算定することが可能である。例えば、訓練エンジンは、注意ブロックおよび出力ブロックを訓練すべく訓練エンジンによって使用される、図1を参照して前述されるのと同一の目的関数を評価することが可能である。言い換えると、訓練エンジンは、例えば、図1を参照して前述したとおり、ニューラルネットワークの残りの部分を訓練するのに使用されるのと同一の分類信号に対して直接に選択ブロック300を訓練することが可能である。
次に、各訓練イテレーションにおいて、訓練エンジンは、タスクパフォーマンス測度に基づいて報酬を算定することが可能である。報酬は、タスクパフォーマンス測度の任意の適切な関数であることが可能である。他の例において、タスクパフォーマンス測度は、予測誤差を特徴づける(例えば、交差エントロピー損失によって)ことが可能であり、報酬は、より低い予測誤差がより高い報酬をもたらすようにタスクパフォーマンス測度の負であることが可能である。
報酬に基づいて、訓練エンジンは、報酬に依存する強化学習目的関数に対して選択ブロック300を訓練することが可能である。強化学習目的関数は、ニューラルネットワークによって受け取られる報酬の増加をもたらすデータ要素埋め込みの選択を奨励することが可能である。
特定の例として、訓練エンジンは、平方ベルマン誤差目的関数、
E[(R-Q(xi;φ(zl)))2] (1)
を最小化することによって選択ブロック300を訓練することが可能であり、ここで、Q(xi;・)は、データ要素埋め込みxiに関する選択ブロック300の出力であり、φ(zl)は、l番目の自己注意ブロックからの出力であり、Rは、タスクパフォーマンス測度(例えば、負の交差エントロピー分類誤差)である。
選択ブロック300を訓練した後、ニューラルネットワークシステムは、データ要素埋め込み304の完全なセットからデータ要素埋め込みのサブセットを選択すべく選択ブロック300を使用することが可能である。システムは、データ要素埋め込みのサブセットを、注意を払うべき1つまたは複数の相互注意ブロックに与えることが可能である。データ要素埋め込みの完全なセットに対する相互注意を使用して各潜在的埋め込みを更新するのではなく、1つまたは複数の相互注意ブロックは、選択ブロック300によって適応的に選択されたデータ要素埋め込みのサブセットだけに対して各潜在的埋め込みを更新することが可能である。その結果、システムは、許容可能なタスクパフォーマンス(例えば、予測精度)を維持しながら、データ要素埋め込みに対して相互注意動作を実行するのに要求される計算リソースの量を低減することが可能である。
エンティティを特徴づけるネットワーク出力を生成すべくニューラルネットワークシステムを使用するための例示的なプロセスについて、次により詳細に説明される。
図4は、エンティティを特徴づけるべくニューラルネットワークシステムを使用するための例示的なプロセス400のフローチャートである。便宜のため、プロセス400は、1つまたは複数のロケーションに配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。例えば、本明細書により適切にプログラミングされたニューラルネットワークシステム、例えば、図1におけるニューラルネットワークシステム100、または図2におけるニューラルネットワークシステム200が、プロセス400を実行することが可能である。
システムが、エンティティの表現をデータ要素埋め込みのセットとして獲得する(402)。エンティティは、例えば、空間的構造において配置された(ユニットの1次元(1D)アレイとして、2次元(2D)アレイとして、または3次元(3D)アレイとして)多数のユニットを含むことが可能であり、ここで、各ユニットは、空間的構造におけるユニットのそれぞれの位置を定義する位置データに関連付けられる。例えば、エンティティは、画像を含むことが可能であり、画像における各ピクセルが、エンティティにおけるそれぞれのユニットを定義することが可能である。別の例において、エンティティは、オーディオ波形を含むことが可能であり、オーディオ波形における、または、例えば、オーディオ波形のメルスペクトログラムにおける各オーディオサンプルが、エンティティにおけるそれぞれのユニットを定義することが可能である。さらに別の例において、エンティティは、点群を含むことが可能であり、点群における各点が、エンティティにおけるそれぞれのユニットを定義することが可能である。さらに別の例において、エンティティは、タンパク質を含むことが可能であり、タンパク質のアミノ酸シークエンスにおける各アミノ酸が、エンティティにおけるそれぞれのユニットを定義することが可能である。さらに別の例において、エンティティは、語のシークエンスを含むことが可能であり、語のシークエンスにおける各語が、エンティティにおけるそれぞれのユニットを定義することが可能である。例示的なエンティティおよびユニットについて、図5Aおよび図5Bを参照して後段でより詳細に説明される。
エンティティの表現をデータ要素埋め込みのセットとして獲得することは、エンティティにおける各ユニットに関して、そのユニットのデータ要素埋め込みを生成することを含むことが可能である。エンティティにおける各ユニットに関して、システムは、特徴埋め込み、およびそのユニットの位置埋め込みに基づいてデータ要素埋め込みを生成することが可能である。
システムは、ユニットの特徴に基づいて特徴埋め込みを生成することが可能である。例えば、エンティティが画像(例えば、図5における画像520)であり、ユニットが、その画像におけるピクセル(例えば、図5におけるピクセル525)である場合、システムは、そのピクセルの周囲の画像のパッチを選択すること、およびそのパッチを連結してベクトルにすることによって特徴埋め込みを獲得することが可能である。別の例において、エンティティがオーディオ波形(例えば、図5におけるオーディオ波形540)であり、ユニットがオーディオサンプル(例えば、図5におけるオーディオサンプル545)である場合、システムは、或る時点における特徴埋め込みを、その時点におけるオーディオサンプルの振幅を選択することによって獲得することが可能である。
システムは、空間的構造におけるそのユニットの位置に基づいて位置埋め込みを生成することが可能である。例えば、エンティティの空間的構造が1次元であり、例えば、エンティティが語のシークエンス(例えば、図5における語のシークエンス530)であり、ユニットがそのシークエンスにおける語(例えば、図5における語535)である場合、システムは、語のシークエンスにおける語のインデックスに基づいて位置埋め込みを生成することが可能である。別の例において、エンティティが、ピクセルの2次元アレイである場合、システムは、ピクセルのアレイにおけるピクセルのx-y座標に基づいて位置埋め込みを生成することが可能である。さらに別の例において、エンティティが点群(例えば、図5における点群510)であり、ユニットがその点群における点(例えば、図5における点515)である場合、システムは、点群における点のx-y-z座標に基づいて位置埋め込みを生成することが可能である。
一般に、エンティティにおける各ユニットに関して、システムは、位置埋め込みを、空間的構造におけるユニットの位置の任意の適切な関数として生成することが可能である。一部の実装形態において、位置埋め込みは、例えば、事前定義された目標周波数範囲にわたって対数線形に間隔が空けられた周波数帯域を有するフーリエ特徴位置符号化であることが可能である。一般に、フーリエ特徴位置符号化は、1つまたは複数の次元における入力座標を、事前定義された目標周波数範囲にわたって対数線形に(対数スケールで線形に)間隔が空けられた周波数(「帯域」)を有するフーリエ級数のフーリエ係数にマップする符号化であってよい。他の一部の実装形態において、位置符号化は、固定であっても、学習されてもよい。ユニットの位置埋め込みについて、図5Aおよび図5Bを参照して後段でより詳細に説明される。
特徴埋め込みおよび位置埋め込みを獲得した後、システムは、例えば、そのユニットの特徴埋め込みとそのユニットの位置埋め込みを連結することによって、エンティティにおける各ユニットに関して、対応するデータ要素埋め込みを生成することが可能である。他の一部の実装形態において、対応するデータ要素埋め込みは、ユニットの特徴埋め込みとそのユニットの位置埋め込みを足すことによって生成されてよい。
システムが、潜在的埋め込みのセットを獲得する(404)。一部の実装形態において、潜在的埋め込みのセットの中の潜在的埋め込みの数は、データ要素埋め込みのセットの中のデータ要素埋め込みの数より少ないことが可能である。一部の実装形態において、潜在的埋め込みのセットの中の潜在的埋め込みの数は、事前定義され、データ要素埋め込みのセットの中のデータ要素埋め込みの数とは独立であることが可能である。
システムが、エンティティを特徴づけるネットワーク出力を生成すべくニューラルネットワークを使用して(i)データ要素埋め込みのセット、および(ii)潜在的埋め込みのセットを処理する(406)。
システムは、(i)1つまたは複数の相互注意ブロックと、(ii)1つまたは複数の自己注意ブロックと、(iii)出力ブロックとを有するニューラルネットワークブロックのシークエンスを含むことが可能である。例えば、システムは、多数の相互注意ブロックと、多数の自己注意ブロックとを含むことが可能であり、ここで、相互注意ブロックと自己注意ブロックは、インターリーブされる。
ニューラルネットワークブロックのシークエンスは、1つまたは複数の選択ブロックをさらに含むことが可能であり、各選択ブロックは、データ要素埋め込みの完全なセットからデータ要素埋め込みの適切なサブセット(すなわち、セットの、そのセット自体を含まないサブセット)を選択するように構成されることが可能である。例えば、1つまたは複数の相互注意ブロック、1つまたは複数の自己注意ブロック、あるいはその両方を使用して潜在的埋め込みのセットが更新された後、選択ブロックは、各データ要素埋め込みに関するそれぞれの選択得点を生成すべく潜在的埋め込みのセットおよびデータ要素埋め込みのセットを処理することが可能である。選択得点に基づいて、選択ブロックは、1つまたは複数の指定された相互注意ブロックによって使用されるようにデータ要素埋め込みのセットの適切なサブセット(例えば、最高の選択得点を有する事前定義された数のデータ要素埋め込み)を選択することが可能である。各指定された相互注意ブロックは、例えば、データ要素埋め込みの完全なセットの代わりに、データ要素埋め込みのセットの選択された適切なサブセットの中のデータ要素埋め込みだけに対する相互注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを更新することが可能である。
各選択ブロックは、(i)パラメータ選択ニューラルネットワークと、(ii)ユニット選択ニューラルネットワークとを含むことが可能である。各選択ブロックに関して、データ要素埋め込みのセットの中の各データ要素埋め込みに関してそれぞれの選択得点を生成すべく、潜在的埋め込みのセットおよびデータ要素埋め込みのセットを処理することは、ユニット選択ニューラルネットワークのニューラルネットワークパラメータのセットの値を定義するネットワーク出力を生成すべく、パラメータ選択ニューラルネットワークを使用して潜在的埋め込みを処理すること、およびユニット選択ニューラルネットワークのニューラルネットワークパラメータのセットの値に応じてデータ要素埋め込みに関する選択得点を生成すべく、ユニット選択ニューラルネットワークを使用してデータ要素埋め込みのセットの中の各データ要素埋め込みを処理することを含むことが可能である。
一部の実装形態において、システムは、エンティティを特徴づけるネットワーク出力に基づいてタスクパフォーマンス測度(例えば、交差エントロピー分類誤差)を算定すること、タスクパフォーマンス測度に基づいて報酬を算定すること、および報酬に依存する強化学習目的関数(例えば、平方ベルマン誤差)に対して選択ブロックを訓練することが可能である。
各相互注意ブロックは、データ要素埋め込みのセットの中のデータ要素埋め込みのうちのいくつか、またはすべてに対する注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを更新することが可能である。このことは、例えば、潜在的埋め込みのセットの中の各潜在的埋め込みに関するそれぞれのクエリ埋め込みを生成すること、データ要素埋め込みのセットの中の多数のデータ要素埋め込みのそれぞれに関して、それぞれのキー埋め込みおよびそれぞれの値埋め込みを生成すること、ならびに(i)潜在的埋め込みに関するクエリ埋め込み、および(ii)データ要素埋め込みに関するキー埋め込みおよび値埋め込みに基づいて、データ要素埋め込みのセットの中の多数のデータ要素埋め込みに対するクエリ-キー値注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを更新することを含む、データ要素埋め込みのセットの中のデータ要素埋め込みのうちのいくつか、またはすべてに対するクエリ-キー値注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを更新することを含むことが可能である。
各自己注意ブロックは、潜在的埋め込みのセットに対する注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを更新すること(例えば、繰り返し)が可能である。このことは、例えば、潜在的埋め込みのセットに対するクエリ-キー値注意を使用して潜在的埋め込みのセットの中の各潜在的埋め込みを更新することを含むことが可能である。
潜在的埋め込みのセットが、1つまたは複数の相互注意ブロック、および1つまたは複数の自己注意ブロックを使用して更新された後、出力ブロックは、エンティティを特徴づけるネットワーク出力を生成すべく潜在的埋め込みのセットからの1つまたは複数の潜在的埋め込みを処理することが可能である。このことは、プールされた潜在的埋め込みを生成すべく潜在的埋め込みのセットの中の潜在的埋め込みをプールすること、例えば、平均すること、およびエンティティを特徴づけるネットワーク出力を生成すべく1つまたは複数のニューラルネットワーク層を使用して、プールされた潜在的埋め込みを処理することを含むことが可能である。
一部の実装形態において、ネットワーク出力は、出力要素のシークエンスを含むことが可能である。そのような事例において、出力ブロックによる、エンティティを特徴づけるネットワーク出力を生成すべく潜在的埋め込みのセットからの1つまたは複数の潜在的埋め込みを処理することは、多数の時間ステップの各時間ステップにおいて、その時間ステップにおける出力要素を生成すべく、(i)潜在的埋め込みのセットからの1つまたは複数の潜在的埋め込み、および(ii)任意の先行する時間ステップにおいて生成された出力要素を処理することを含むことが可能である。
例示的なエンティティおよびユニットについて、次により詳細に説明される。
図5Aは、ニューラルネットワークシステム(例えば、図1におけるシステム100、または図2におけるシステム200)によって特徴づけられることが可能なエンティティおよびユニットの例500を示す。2種類だけのエンティティが図5Aに示されるものの、ニューラルネットワークシステムは、任意の適切な種類またはモダリティのエンティティを特徴づけるべく使用されることが可能である。
前述したとおり、ニューラルネットワークは、エンティティを特徴づけるネットワーク出力を生成すべくエンティティの表現をデータ要素埋め込みのセットとして獲得して、それを処理する(例えば、潜在的埋め込みと一緒に)ことが可能である。エンティティは、空間的構造において配置された多数のユニットを含むことが可能であり、エンティティにおける各ユニットは、空間的構造におけるユニットのそれぞれの位置を定義する位置データに関連付けられることが可能である。空間的構造は、例えば、ユニットの1次元(1D)アレイ、2次元(2D)アレイ、または3次元(3D)アレイであることが可能である。
図5Aに示されるとおり、一例において、エンティティは、画像520を含むことが可能であり、画像520における各ピクセル525は、エンティティにおけるそれぞれのユニットを定義することが可能であり、例えば、画像520におけるピクセル525は、ユニットの2次元アレイとして配置されることが可能である。別の例において、エンティティは、点群510を含むことが可能であり、点群510における各点515は、エンティティにおけるそれぞれのユニットを定義することが可能であり、例えば、点群510における点515は、ユニットの3次元アレイとして配置されることが可能である。ピクセル525および点515は、位置データ(例えば、それぞれの空間的構造におけるピクセル525および点群515のそれぞれの位置を定義する座標)に関連付けられることが可能である。
一部の実装形態において、ニューラルネットワークシステムは、位置およびモダリティ特有の特徴をエンティティ510、520における各ユニット515、525に関連付けることが可能である。例えば、エンティティにおける各ユニットに関して、ニューラルネットワークシステムは、ユニットの特徴埋め込みを、そのユニットの特徴に基づいて生成することが可能であり、そのユニットの位置埋め込みを、空間的構造におけるそのユニットの位置に基づいて生成することが可能である。一部の実装形態において、システムは、事前定義された目標周波数範囲にわたって対数線形に間隔が空けられた周波数帯域を有するフーリエ特徴位置符号化を生成することによって位置埋め込みを生成することが可能である。例えば、フーリエ符号化は、以下、すなわち、
[sin(fkπxd),cos(fkπxd)] (2)
のとおり生成されることが可能であり、ここで、周波数fkは、1からμ/2の間で等間隔が空けられた周波数のバンクの第k番目の帯域であり、μ/2は、例えば、μの目標サンプリングレートに対応するナイキスト周波数であることが可能であり、xdは、エンティティにおける第d番目のディメンション(例えば、画像に関するd=2、およびビデオに関するd=3)に沿ったユニットの値である。詳細には、xdは、エンティティにおける各ディメンションに関して[-1、1]の値を有することが可能である。一部の実装形態において、システムは、位置の最終的な表現を生成すべく生の位置値xdを連結して、サイズd(2K+1)の位置符号化をもたらすことが可能である。したがって、エンティティにおける各ユニットに関して、ニューラルネットワークシステムは、例えば、特徴埋め込みと位置埋め込みを連結することによって、特徴埋め込みおよび位置埋め込みに基づいてそのユニットの対応するデータ要素埋め込みを生成することが可能である。
図1および図2を参照して前述したとおり、ニューラルネットワークシステムは、注意動作を使用してエンティティを表すデータ要素埋め込み、および潜在的埋め込みを処理することが可能である。注意動作は、データ要素埋め込みが固定の空間的配置に関連付けられているものと想定することを要求しない。例えば、注意動作は、データ要素埋め込みが、例えば、画像ピクセル525の2次元アレイにされた、空間的配置に関連付けられているものと想定することに依拠しない。むしろ、ニューラルネットワークシステムは、データ要素埋め込みに位置符号化をタグ付けすること(例えば、連結すること)、および正確なネットワーク出力を生成することに関係がある場合、注意動作がこの情報を利用することを学習するのを許すことによって、データ要素埋め込みの空間的配置に関する情報を柔軟に組み込むことが可能である。したがって、ニューラルネットワークシステムは、事前定義された空間的配置に関連付けられていないデータ要素埋め込みのセット、例えば、点群510または画像520を表すデータ要素のセットを処理するのに使用されることが可能であり、その結果、システムをより広く応用可能にする。
図5Bは、ニューラルネットワークシステム(例えば、図1におけるシステム100、または図2におけるシステム200)によって特徴づけられることが可能なエンティティおよびユニットの別の例500を示す。3種類だけのエンティティが図5Bに示されるものの、ニューラルネットワークシステムは、任意の適切な種類の、例えば、任意の適切なモダリティのエンティティを特徴づけるのに使用されることが可能である。
図5Bに示されるとおり、一例において、エンティティは、語のシークエンス530を含むことが可能であり、語のシークエンス530における各語535は、エンティティにおけるそれぞれのユニットを定義することが可能である。別の例において、エンティティは、オーディオ波形540を含むことが可能であり、オーディオ波形540における各オーディオサンプル545は、エンティティにおけるそれぞれのユニットを定義する。さらに別の例において、エンティティは、タンパク質550を含むことが可能であり、タンパク質550のアミノ酸シークエンスにおける各アミノ酸555は、エンティティにおけるそれぞれのユニットを定義することが可能である。一部の実装形態において、エンティティは、異なるモダリティの混合を含むことが可能である。例えば、エンティティは、図5Aに示される画像520と、図5Bに示されるオーディオ波形540とを含むビデオを含むことが可能である。
本明細書において説明されるシステムの実装形態は、マルチモーダルエンティティのマルチモーダルデータを処理することが可能である。すなわち、前述したとおり、特徴づけられたエンティティは、画像もしくはビデオデータとオーディオデータ、画像もしくはビデオデータと言語データ、体性感覚入力データ(接触データ、圧力データ、動きデータ、温度データ、または振動データを感知することなどの、物理的エージェントの現実世界の環境を感知するセンサデータ)とモータフィードバックデータ(すなわち、物理的エージェントの動きを制御する制御データ)などの異なる種類のデータの組合せを含んでよい。マルチモーダルデータの場合、各種類、または各領域のデータは、異なる位置埋め込みを使用することが可能である。詳細には、異なる各位置埋め込みが、その種類のデータに関して正しい次元を、例えば、ビデオデータもしくは点群データに関して3Dを、画像データに関して2Dを、オーディオデータに関して1Dを有することが可能である。位置埋め込みは、フーリエ特徴位置埋め込み、あるいは固定の位置埋め込み、または学習される位置埋め込みであってよい。マルチモーダルデータの場合、各種類、または各領域のデータは、1つまたは複数のモダリティ特有の特徴、すなわち、埋め込みに関連付けられてもよい。これらは、固定であっても、学習されてもよく、これらは、モダリティ特有であるため、モダリティを識別すべくシステムによって使用されることが可能である。このため、マルチモーダルエンティティのユニットは、位置とモダリティ特有の特徴(埋め込み)の両方でタグ付けされてよい。
マルチモーダルエンティティがシステムによって処理される場合、異なるモダリティのユニットまたはデータ要素は、組み合わされてよい。より具体的には、異なるモダリティに関するデータ要素埋め込みは、例えば、異なるモダリティに関するバイトアレイを融合して、各モダリティに関して同一の数のチャネルを有する組み合わされたバイトアレイにすることによって、例えば、学習されたモダリティ特有の符号化を各データ要素埋め込みに連結することによって、組み合わされてよい。一部の実装形態において、モダリティ特有の符号化は、位置符号化と組み合わされてよい。
マルチモーダルエンティティに関するネットワーク出力については、前段で説明されるとおりであってよい。例えば、ネットワーク出力が分類タスクに関する分類出力(例えば、可能なカテゴリのセットの各カテゴリに関する得点を定義する)である場合、そのことは、ネットワーク出力が、入力として与えられるマルチモーダルデータ埋め込みに基づいて生成されること以外は、前段で説明されるのと変わらないことが可能である。このため、システムによって実行される機械学習タスク、例えば、分類が、その結果、より良好に、例えば、より正確に実行されることが可能である。例えば、分類タスクが、より正確な分類結果を獲得すべくビデオと(対応する)オーディオデータの組合せに対して実行されてよい。別の例として、機械学習タスクは、画像もしくはビデオが特定のキャプションによって記述されるかどうかを判定すべく、例えば、ビデオデータもしくは画像データと言語データ、例えば、テクストデータを組み合わせるタスクにおいて、異なるモダリティのデータを処理することに基づくものであってよい。
図6Aは、エンティティを特徴づけることが可能なニューラルネットワークシステム(例えば、図1におけるシステム100、または図2におけるシステム200)によって生成された例示的な注意地図600を示す。この例において、ニューラルネットワークシステムは、8つの相互注意ブロックを含む。
左側の最初の画像は、ニューラルネットワークシステムによって特徴づけられる元の画像(例えば、エンティティ)である。2番目の画像は、ニューラルネットワークシステムの第1の相互注意ブロックによって生成された注意地図である。3番目の画像は、ニューラルネットワークシステムの第2の相互注意ブロックによって生成された注意地図である。最後の画像は、ニューラルネットワークシステムの第8の相互注意ブロックによって生成された注意地図である。
図6Bは、エンティティを特徴づけることが可能なニューラルネットワークシステム(例えば、図1におけるシステム100、または図2におけるシステム200)によって生成された例示的な注意地図600を示す。この例において、特徴づけられるエンティティは、図6Aにおける最初の画像であり、ニューラルネットワークシステムは、8つの相互注意ブロックを同様に含む。
上側のパネルは、ニューラルネットワークシステムの第1の相互注意ブロックによって生成された注意地図の概観である。中間のパネルは、ニューラルネットワークシステムの第2の相互注意ブロックによって生成された注意地図の概観である。下側のパネルは、ニューラルネットワークシステムの第8の相互注意ブロックによって生成された注意地図の概観である。注意地図は、空間周波数の範囲でタータン様のパターンを使用して入力画像をスキャンすることが可能である。
図7は、エンティティを特徴づけることが可能なニューラルネットワークシステム700(例えば、図1におけるシステム100、または図2におけるシステム200)の異なる構成の例示的なパフォーマンスを示す。
具体的には、図7は、ニューラルネットワークシステムのパフォーマンスを、相互注意の数、およびニューラルネットワークシステムにおけるその他のニューラルネットワークブロックに関する相互注意ブロックのそれぞれの配置の関数として示す。
「インターリーブされた」において、相互注意層は、ネットワーク全体にわたって間隔が空けられる(リエントラント処理のため)一方で、「始めに」において、すべての相互注意は、ネットワークの始めに置かれ、その後に、すべての潜在的自己注意層が続く。最初の相互注意層以外のすべての相互注意層が、共有され、自己注意もまた、共有される(例えば、6つの自己注意モジュールの8つのブロックを使用して)。結果は、ImageNet上のトップ1検証精度(%における)(より高い方がより良い)である。
図8Aは、エンティティを特徴づけることが可能なニューラルネットワークシステム800(例えば、図1におけるシステム100、または図2におけるシステム200)の例示的なパラメータを示す。すべてのプロットは、トップ1精度(より高い方がより良い)を示す。
具体的には、図8Aは、ニューラルネットワークシステムのパフォーマンスに対するモデルハイパーパラメータの効果を示す。潜在的埋め込みの数、1ブロック当たりの自己注意の数、および相互注意の数を増加させることが、一般に、ニューラルネットワークシステムのパフォーマンスを向上させる。一部の事例において、各潜在的埋め込みのチャネルの数を増加させることもまた、ニューラルネットワークシステムのパフォーマンスを向上させることが可能である。
図8Bは、エンティティを特徴づけることが可能なニューラルネットワークシステム800(例えば、図1におけるシステム100、または図2におけるシステム200)のパラメータの別の例を示す。すべてのプロットは、トップ1精度(より高い方がより良い)を示す。
具体的には、図8Bは、ニューラルネットワークシステムのパフォーマンスに対する潜在的埋め込み初期設定スケールおよびフーリエ特徴位置符号化パラメータの効果を示す。一般に、帯域の数および最大解像度を(ナイキストまで)増加させることが、パフォーマンスを高めた。一部の事例において、線形に間隔の空けられた位置符号化帯域を使用するか、対数的に間隔の空けられた位置符号化帯域を使用するかにかかわらず、同一の効果が観察され得る。
図9は、本明細書において説明されるニューラルネットワークシステムを使用して実現された実験結果を示す。詳細には、表910は、本明細書において説明されるニューラルネットワークシステム(例えば、「Perceiver」)および代替のニューラルネットワークシステムのトップ1検証精度(%における)を示す。本明細書において説明されるニューラルネットワークシステムは、領域特有のアーキテクチャ上の想定に依拠することなしに、代替のシステムを大幅に上回るパフォーマンスをもたらすことが認識され得る。表920もまた、トップ1検証精度を示す。本明細書において説明されるニューラルネットワークシステムは、学習された位置符号化またはフーリエ特徴を使用しながら、代替のシステムを大幅に上回るパフォーマンスをもたらすことが認識されよう。
図10は、本明細書において説明されるニューラルネットワークシステムを使用して実現された実験結果を示す。詳細には、表1010は、本明細書において説明されるニューラルネットワークシステム(例えば、「Perceiver」)および代替のニューラルネットワークシステムのトップ1分類精度(%における)を示す。表1020は、ビデオおよびオーディオのみの実験に関する本明細書において説明されるニューラルネットワークシステムのパフォーマンスを示す。本明細書において説明されるニューラルネットワークシステムは、代替のニューラルネットワークシステムを大幅に上回るパフォーマンスをもたらすことが認識されよう。
本明細書は、システム構成要素およびコンピュータプログラム構成要素に関連して「構成された」という術語を使用する。1つまたは複数のコンピュータのシステムが、特定の動作またはアクションを実行するように構成されることは、作動時に、システムに、その動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがシステムにインストールされていることを意味する。1つまたは複数のコンピュータプログラムが、特定の動作またはアクションを実行するように構成されることは、その1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に、その動作またはアクションを実行させる命令を含むことを意味する。
本明細書において説明される主題および機能上の動作の実施形態は、本明細書において開示される構造、およびそれらの構造上の均等物、またはこれらのうちの1つまたは複数の組合せを含む、デジタル電子回路において、有形で実現されたコンピュータソフトウェアもしくはコンピュータファームウェアにおいて、コンピュータハードウェアにおいて実装されることが可能である。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行されるように、またはデータ処理装置の動作を制御するように有形の非一時的な記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されることが可能である。コンピュータ記憶媒体は、機械可読のストレージデバイス、機械可読の記憶基板、ランダムアクセスメモリデバイスもしくはシリアルアクセスメモリデバイス、またはこれらのうちの1つまたは複数の組合せであることが可能である。代替として、またはさらに、プログラム命令は、データ処理装置によって実行されるように適切な受信装置に送信するために情報を符号化するように生成された、人工的に生成された伝播される信号、例えば、機械によって生成された電気信号、光信号、または電磁信号の上に符号化されることが可能である。
「データ処理装置」という術語は、データ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、または多数のプロセッサもしくは多数のコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。また、その装置は、専用のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)であること、またはそのような専用のロジック回路をさらに含むことも可能である。その装置は、オプションとして、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つまたは複数の組合せを構成するコードを含むことが可能である。
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれてもよい、またはそのようなものとして説明されてもよい、コンピュータプログラムは、コンパイルされる言語もしくは解釈される言語、または宣言型言語もしくは手続き型言語を含め、任意の形態のプログラミング言語で書かれることが可能であり、コンピューティング環境において使用されるのに適した、スタンドアローンのプログラムとして、あるいはモジュール、構成要素、サブルーチン、または他のユニットとして展開されることを含め、任意の形態で展開されることが可能である。プログラムは、ファイルシステムにおけるファイルに対応してよいが、対応しなくてもよい。プログラムは、他のプログラムまたは他のデータを保持するファイルの一部分に、例えば、マークアップ言語文書に記憶された1つまたは複数のスクリプトに、当該のプログラムに専用の単一のファイルに、あるいは多数の協調型のファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルに記憶されることが可能である。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置された、もしくは多数のサイトに分散されて、データ通信ネットワークによって互いに接続された多数のコンピュータ上で実行されるべく展開されることが可能である。
本明細書において「エンジン」という術語は、1つまたは複数の特定の機能を実行するようにプログラムされたソフトウェアベースのシステム、サブシステム、またはプロセスを広く指すように使用される。一般に、エンジンは、1つまたは複数のロケーションにおける1つまたは複数のコンピュータにインストールされた1つまたは複数のソフトウェアモジュールもしくはソフトウェア構成要素として実装される。一部の事例において、1つまたは複数のコンピュータは、特定のエンジンに専用であり、他の事例において、多数のエンジンが、同一のコンピュータ、または同一の複数のコンピュータにインストールされて、実行されていることが可能である。
本明細書において説明されるプロセスおよび論理フローは、入力データを操作すること、および出力を生成することによって機能を実行すべく1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行されることが可能である。また、プロセスおよび論理フローは、専用のロジック回路、例えば、FPGAもしくはASICによって、または専用のロジック回路と1つもしくは複数のプログラムされたコンピュータの組合せによって実行されることも可能である。
コンピュータプログラムを実行するのに適したコンピュータは、汎用のマイクロプロセッサもしくは専用のマイクロプロセッサ、またはその両方、あるいは他の任意の種類の中央処理装置に基づくことが可能である。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリから、あるいはその両方から命令およびデータを受け取る。コンピュータの不可欠な要素は、命令を実行するため、または執行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。中央処理装置およびメモリは、専用のロジック回路によって補足されること、または専用のロジック回路に組み込まれることが可能である。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクも含む、あるいはそのような大容量ストレージデバイスからデータを受け取るように、または大容量ストレージデバイスにデータを転送するように、あるいはその両方を行うように動作上、結合される。しかし、コンピュータは、そのようなデバイスを有さなくてもよい。さらに、コンピュータは、別のデバイス、例えば、いくつかだけを挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオプレーヤもしくはモバイルビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに埋め込まれることが可能である。
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクもしくはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。
ユーザとの対話を可能にすべく、本明細書において説明される主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができる、キーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールを有するコンピュータ上に実装されることが可能である。他の種類のデバイスが、ユーザとの対話を可能にするのに使用されることも可能であり、例えば、ユーザに与えられるフィードバックは、任意の形態の知覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受け取られることが可能である。さらに、コンピュータは、ユーザによって使用されるデバイスに文書を送ること、およびそのようなデバイスから文書を受け取ることによって、例えば、ユーザのデバイス上のウェブブラウザに、そのウェブブラウザから受け取られた要求に応答して、ウェブページを送ることによって、ユーザと対話することが可能である。また、コンピュータは、個人用デバイスに、例えば、メッセージングアプリケーションを実行しているスマートフォンに、テクストメッセージまたは他の形態のメッセージを送信すること、および返しでユーザから応答メッセージを受信することによってユーザと対話することが可能である。
機械学習モデルを実装するためのデータ処理装置は、例えば、機械学習訓練または機械学習生産の通常の、計算が大量である部分、すなわち、推論、作業負荷を処理するための専用のハードウェアアクセラレータユニットを含むことも可能である。
機械学習モデルは、機械学習フレームワーク、例えば、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装されて、展開されることが可能である。
本明細書において説明される主題の実施形態は、バックエンド構成要素を含むコンピューティングシステムにおいて、例えば、データサーバとして、またはミドルウェア構成要素を含むコンピューティングシステムにおいて、例えば、アプリケーションサーバ、またはフロントエンド構成要素を含むコンピューティングシステムにおいて、例えば、ユーザが本明細書において説明される主題の実装形態と対話することができるグラフィカルユーザインターフェース、ウェブブラウザ、またはアプリを有するクライアントコンピュータ、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装されることが可能である。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって互いに接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えば、インターネットを含む。
コンピューティングシステムは、クライアントと、サーバとを含むことが可能である。クライアントとサーバは、一般に、互いに遠隔であり、通常、通信ネットワークを介して対話する。クライアントとサーバの間の関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムのお陰で生じる。一部の実施形態において、サーバが、例えば、クライアントとして動作するデバイスと対話するユーザにデータを表示する目的、およびそのようなユーザからユーザ入力を受け取る目的で、データ、例えば、HTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、例えば、ユーザ対話の結果が、サーバにおいてデバイスから受信されることが可能である。
本明細書は、多くの特定の実装の詳細を包含するが、これらは、発明の範囲に対する限定としても、請求の対象とされる可能性がある範囲に対する限定としても解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有である可能性がある特徴の説明として解釈されるべきである。また、別々の実施形態の脈絡において本明細書において説明されるいくつかの特徴は、単一の実施形態において組合せで実装されることも可能である。逆に、単一の実施形態の脈絡において説明される様々な特徴が、多数の実施形態において別々に、または任意の適切な部分的組合せで実装されることも可能である。さらに、特徴は、或る組合せで作用するものとして前段で説明される可能性があり、当初、そのようなものとして請求される可能性さえあるものの、請求される組合せからの1つまたは複数の特徴は、一部の事例において、その組合せから取り除かれることが可能であり、請求される組合せは、部分的組合せ、または部分的組合せの変形を対象とすることが可能である。
同様に、動作は、特定の順序で図面に描かれ、特許請求の範囲において記載されるが、このことは、望ましい結果を実現するのに、そのような動作が、図示される特定の順序で実行されるべきことも、順次の順序で実行されるべきことも、例示されるすべての動作が実行されるべきことも要求するものと理解されるべきではない。いくつかの状況において、マルチタスキングおよび並行処理が、有利である可能性がある。さらに、前段で説明される実施形態における様々なシステムモジュールおよびシステム構成要素の分離は、すべての実施形態においてそのような分離が要求されるものと理解されるべきではなく、説明されるプログラム構成要素とシステムは、一般に、単一のソフトウェア製品として一緒に統合されること、または多数のソフトウェア製品としてパッケージ化されることが可能であるものと理解されるべきである。
主題の特定の実施形態について説明されてきた。他の実施形態が、添付の特許請求の範囲に含まれる。例えば、特許請求の範囲に記載されるアクションは、異なる順序で実行されることが可能であり、それでも、望ましい結果を実現することが可能である。一例として、添付の図に描かれるプロセスは、望ましい結果を実現するのに、図示される特定の順序も、順次の順序も必ずしも要求しない。一部の事例において、マルチタスキングおよび並行処理が、有利である可能性がある。