IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ディープマインド テクノロジーズ リミテッドの特許一覧

特表2024-521621潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成
<>
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図1
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図2
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図3
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図4
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図5
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図6
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図7A
  • 特表-潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成 図7B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-04
(54)【発明の名称】潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによる、ニューラルネットワーク出力の生成
(51)【国際特許分類】
   G06V 10/80 20220101AFI20240528BHJP
   G06N 3/04 20230101ALI20240528BHJP
   G06T 7/00 20170101ALI20240528BHJP
   G06V 10/82 20220101ALI20240528BHJP
【FI】
G06V10/80
G06N3/04
G06T7/00 350C
G06V10/82
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023565960
(86)(22)【出願日】2022-05-27
(85)【翻訳文提出日】2023-12-11
(86)【国際出願番号】 EP2022064501
(87)【国際公開番号】W WO2022248727
(87)【国際公開日】2022-12-01
(31)【優先権主張番号】63/194,874
(32)【優先日】2021-05-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】517030789
【氏名又は名称】ディープマインド テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】アンドリュー・コールター・イェーグル
(72)【発明者】
【氏名】ジャン-バプティスト・アレラック
(72)【発明者】
【氏名】ゼバスティアン・ボルジョー・ディト・アヴォカト
(72)【発明者】
【氏名】カタリン-ドゥミトル・イオネスク
(72)【発明者】
【氏名】カール・デルシュ
(72)【発明者】
【氏名】フェンニン・ディン
(72)【発明者】
【氏名】オリオル・ビニャルズ
(72)【発明者】
【氏名】オリヴィエ・ジャン・エナフ
(72)【発明者】
【氏名】スカンダ・クマール・コプラ
(72)【発明者】
【氏名】ダニエル・ゾラン
(72)【発明者】
【氏名】アンドリュー・ブロック
(72)【発明者】
【氏名】エヴァン・ジェラード・シェルハマー
(72)【発明者】
【氏名】アンドリュー・ジサーマン
(72)【発明者】
【氏名】ジョアオ・カレイラ
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096AA06
5L096DA02
5L096FA02
5L096HA11
5L096JA22
5L096KA04
(57)【要約】
ニューラルネットワークを使用してネットワーク出力を生成するための、コンピュータストレージ媒体上にエンコードされたコンピュータプログラムを含む方法、システム、および装置。一態様では、方法は、(i)ニューラルネットワークへのネットワーク入力と、(ii)クエリ埋込みのセットとを取得するステップと、クエリ埋込みのセット内の各クエリ埋込みに対応するそれぞれの次元を備えるネットワーク出力を生成するために、ニューラルネットワークを使用してネットワーク入力を処理するステップであって、ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、ニューラルネットワークのエンコーダブロックを使用してネットワーク入力を処理するステップと、潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによってネットワーク出力の各次元を生成するクロスアテンションブロックを使用して、(i)潜在的な埋込みのセットと、(ii)クエリ埋込みのセットとを処理するステップとを備える、ステップとを備える。
【特許請求の範囲】
【請求項1】
1つまたは複数のデータ処理装置によって実行される方法であって、
(i)ニューラルネットワークへのネットワーク入力と、(ii)前記ネットワーク入力を処理することによって前記ニューラルネットワークによって実行される予測タスクを集合的に定義するクエリ埋込みのセットとを取得するステップと、
前記クエリ埋込みのセット内の各クエリ埋込みに対応するそれぞれの次元を備えるネットワーク出力を生成するために、前記ニューラルネットワークを使用して前記ネットワーク入力を処理するステップであって、
前記ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、前記ニューラルネットワークのエンコーダブロックを使用して前記ネットワーク入力を処理するステップと、
前記潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによって前記ネットワーク出力の各次元を生成するクロスアテンションブロックを使用して、(i)前記潜在的な埋込みのセットと、(ii)前記クエリ埋込みのセットとを処理するステップと
を備える、ステップと
を備える、方法。
【請求項2】
前記クエリ埋込みのうちの1つまたは複数の各々について、
前記クエリ埋込みが前記ネットワーク入力内のそれぞれの空間位置を定義し、
前記クエリ埋込みに対応する前記ネットワーク出力の前記次元が、前記ネットワーク入力内の前記空間位置に関連するそれぞれの予測を定義する、請求項1に記載の方法。
【請求項3】
前記クエリ埋込みのうちの1つまたは複数の各々について、
前記クエリ埋込みが、前記ネットワーク入力内のそれぞれの空間位置からの1つまたは複数の入力特徴を備え、
前記クエリ埋込みに対応する前記ネットワーク出力の前記次元が、前記ネットワーク入力内の前記空間位置に関連するそれぞれの予測を定義する、請求項1または2に記載の方法。
【請求項4】
1つまたは複数のクエリ埋込みの各々について、
前記クエリ埋込みが前記ネットワーク入力のモダリティを定義する、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記クエリ埋込みのセットが複数の予測タスクを集合的に定義し、前記クエリ埋込みのうちの1つまたは複数の各々について、
前記クエリ埋込みが、前記複数の予測タスクからそれぞれの予測タスクを指定し、
前記クエリ埋込みに対応する前記ネットワーク出力の前記次元が、前記クエリ埋込みによって指定された前記予測タスクの予測出力を定義する、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記複数の予測タスクが、分類タスク、回帰タスク、セグメンテーションタスク、または自動エンコーディングタスクのうちの1つまたは複数を備える、請求項5に記載の方法。
【請求項7】
前記潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによって前記ネットワーク出力の次元を生成するステップが、
(i)前記クエリ埋込みと、(ii)前記潜在的な埋込みとに基づいて、潜在的な埋込みごとにそれぞれのアテンション重みを生成するステップと、
前記潜在的な埋込みに対する前記アテンション重みに基づいて、前記クエリ埋込みに対応する前記ネットワーク出力の前記次元を生成するステップと
を備える、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記潜在的な埋込みに対する前記アテンション重みに基づいて、前記クエリ埋込みに対応する前記ネットワーク出力の前記次元を生成するステップが、
前記潜在的な埋込みの値埋込みを生成するために、各潜在的な埋込みを処理するステップと、
前記アテンション重みを使用して前記値埋込みを組み合わせるステップと、
前記アテンション重みを使用して前記値埋込みを組み合わせた結果に少なくとも部分的に基づいて、前記クエリ埋込みに対応する前記ネットワーク出力の前記次元を生成するステップと
を備える、請求項7に記載の方法。
【請求項9】
前記クロスアテンションが、クエリ-キー-値のアテンションである、請求項8に記載の方法。
【請求項10】
前記クエリ埋込みのセット内のクエリ埋込みの数が、前記潜在的な埋込みのセット内の潜在的な埋込みの数よりも大きい、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記クエリ埋込みのセット内の前記クエリ埋込みの数が、前記潜在的な埋込みのセット内の前記潜在的な埋込みの数より少なくとも2倍大きい、請求項10に記載の方法。
【請求項12】
前記潜在的な埋込みのセット内の潜在的な埋込みの数が事前定義されており、前記クエリ埋込みのセット内のクエリ埋込みの数が可変であり、前記潜在的な埋込みのセット内の前記潜在的な埋込みの数とは無関係である、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記ネットワーク入力がマルチモーダルデータを備える、請求項1から12のいずれか一項に記載の方法。
【請求項14】
前記潜在的な埋込みのセットを初期化するステップをさらに備え、
前記ネットワーク入力がデータ要素埋込みのセットを備え、
前記ニューラルネットワークの前記エンコーダブロックが、
前記データ要素埋込みのセット内の前記データ要素埋込みの一部またはすべてに対するアテンションを使用して、前記潜在的な埋込みのセット内の各潜在的な埋込みを更新するステップを備える動作をそれぞれが実行する1つまたは複数のクロスアテンションブロックを備え、
前記ニューラルネットワークの前記エンコーダブロックが、
前記潜在的な埋込みのセットに対するアテンションを使用して、前記潜在的な埋込みのセット内の各潜在的な埋込みを更新するステップを備える動作をそれぞれが実行する1つまたは複数のセルフアテンションブロックを備える、請求項1から13のいずれか一項に記載の方法。
【請求項15】
前記潜在的な埋込みのセット内の潜在的な埋込みの数が、前記データ要素埋込みのセット内のデータ要素埋込みの数よりも少ない、請求項14に記載の方法。
【請求項16】
各データ要素埋込みが、前記ネットワーク入力内のそれぞれの空間位置に対応し、前記空間位置における前記ネットワーク入力の特徴に基づく特徴埋込みを備える、請求項14または15に記載の方法。
【請求項17】
各データ要素埋込みが、前記ネットワーク入力内のそれぞれの空間位置に対応し、前記空間位置を特徴付ける位置埋込みを備える、請求項14から16のいずれか一項に記載の方法。
【請求項18】
各データ要素埋込みが、前記データ要素埋込みに対応するモダリティを定義するモダリティ埋込みを備える、請求項14から17のいずれか一項に記載の方法。
【請求項19】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに通信可能に結合された1つまたは複数のストレージデバイスと
を備え、前記1つまたは複数のストレージデバイスが命令を記憶し、前記命令は、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から18のいずれか一項に記載のそれぞれの方法の前記動作を実行させる、システム。
【請求項20】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から18のいずれか一項に記載のそれぞれの方法の前記動作を実行させる命令を記憶する、1つまたは複数の非一時的コンピュータストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年5月28日に出願された「GENERATING NEURAL NETWORK OUTPUTS BY CROSS ATTENTION OF QUERY EMBEDDINGS OVER A SET OF LATENT EMBEDDINGS」に関する米国仮特許出願第63/194,874号の出願日の利益を主張し、この内容は、その全体が参照により本明細書に組み込まれる。
【0002】
本明細書は、機械学習モデルを使用したデータの処理に関する。
【背景技術】
【0003】
機械学習モデルは入力を受信し、受信した入力に基づいて出力、たとえば予測出力を生成する。いくつかの機械学習モデルはパラメトリックモデルであり、受信した入力とモデルのパラメータの値とに基づいて出力を生成する。
【0004】
いくつかの機械学習モデルは、受信した入力に対する出力を生成するために複数のモデル層を使用するディープモデルである。たとえば、ディープニューラルネットワークは、出力層と、出力を生成するために受信した入力に非線形変換をそれぞれが適用する1つまたは複数の隠れ層とを含む深層機械学習モデルである。
【発明の概要】
【課題を解決するための手段】
【0005】
本明細書は一般に、ネットワーク入力を処理し、ネットワーク出力を生成するために、ニューラルネットワークを使用する1つまたは複数の位置にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムについて説明する。
【0006】
一態様では、1つまたは複数のデータ処理装置によって実行される方法が説明される。本方法は、(i)ニューラルネットワークへのネットワーク入力と、(ii)ネットワーク入力を処理することによってニューラルネットワークによって実行される予測タスクを集合的に定義するクエリ埋込みのセットとを取得するステップを備える。本方法は、クエリ埋込みのセット内の各クエリ埋込みに対応するそれぞれの次元を備えるネットワーク出力を生成するために、ニューラルネットワークを使用してネットワーク入力を処理する。本方法は、ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、ニューラルネットワークのエンコーダブロックを使用してネットワーク入力を処理する。本方法は、潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによってネットワーク出力の各次元を生成するクロスアテンションブロックを使用して、(i)潜在的な埋込みのセットと、(ii)クエリ埋込みのセットとを処理する。
【0007】
本明細書全体を通じて、埋込みは、数値の順序付けられた集合、たとえば数値のベクトルまたは行列を指す。
【0008】
さらに、本明細書全体を通じて、ニューラルネットワーク「ブロック」は、ニューラルネットワーク内の1つまたは複数のニューラルネットワーク層のグループを指す。
【0009】
一態様によれば、1つまたは複数のデータ処理装置によって実行される方法が提供され、本方法は、(i)ニューラルネットワークへのネットワーク入力と、(ii)ネットワーク入力を処理することによってニューラルネットワークによって実行される予測タスクを集合的に定義するクエリ埋込みのセットとを取得するステップと、クエリ埋込みのセット内の各クエリ埋込みに対応するそれぞれの次元を備えるネットワーク出力を生成するために、ニューラルネットワークを使用してネットワーク入力を処理するステップであって、ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、ニューラルネットワークのエンコーダブロックを使用してネットワーク入力を処理するステップと、潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによってネットワーク出力の各次元を生成するクロスアテンションブロックを使用して、(i)潜在的な埋込みのセットと、(ii)クエリ埋込みのセットとを処理するステップとを備える、ステップとを備える。
【0010】
いくつかの実装形態では、クエリ埋込みのうちの1つまたは複数の各々について、クエリ埋込みはネットワーク入力内のそれぞれの空間位置を定義し、クエリ埋込みに対応するネットワーク出力の次元は、ネットワーク入力内の空間位置に関連するそれぞれの予測を定義する。
【0011】
いくつかの実装形態では、クエリ埋込みのうちの1つまたは複数の各々について、クエリ埋込みは、ネットワーク入力内のそれぞれの空間位置からの1つまたは複数の入力特徴を備え、クエリ埋込みに対応するネットワーク出力の次元は、ネットワーク入力内の空間位置に関連するそれぞれの予測を定義する。
【0012】
いくつかの実装形態では、1つまたは複数のクエリ埋込みの各々について、クエリ埋込みはネットワーク入力のモダリティを定義する。
【0013】
いくつかの実装形態では、クエリ埋込みのセットは複数の予測タスクを集合的に定義し、クエリ埋込みのうちの1つまたは複数の各々について、クエリ埋込みは、複数の予測タスクからそれぞれの予測タスクを指定し、クエリ埋込みに対応するネットワーク出力の次元は、クエリ埋込みによって指定された予測タスクの予測出力を定義する。
【0014】
いくつかの実装形態では、複数の予測タスクは、分類タスク、回帰タスク、セグメンテーションタスク、または自動エンコーディングタスクのうちの1つまたは複数を備える。
【0015】
いくつかの実装形態では、潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによってネットワーク出力の次元を生成するステップは、(i)クエリ埋込みと、(ii)潜在的な埋込みとに基づいて、潜在的な埋込みごとにそれぞれのアテンション重みを生成するステップと、潜在的な埋込みに対するアテンション重みに基づいて、クエリ埋込みに対応するネットワーク出力の次元を生成するステップとを備える。
【0016】
いくつかの実装形態では、潜在的な埋込みに対するアテンション重みに基づいて、クエリ埋込みに対応するネットワーク出力の次元を生成するステップは、潜在的な埋込みの値埋込みを生成するために、各潜在的な埋込みを処理するステップと、アテンション重みを使用して値埋込みを組み合わせるステップと、アテンション重みを使用して値埋込みを組み合わせた結果に少なくとも部分的に基づいて、クエリ埋込みに対応するネットワーク出力の次元を生成するステップとを備える。
【0017】
いくつかの実装形態では、クロスアテンションは、クエリ-キー-値のアテンションである。
【0018】
いくつかの実装形態では、クエリ埋込みのセット内のクエリ埋込みの数は、潜在的な埋込みのセット内の潜在的な埋込みの数よりも大きい。
【0019】
いくつかの実装形態では、クエリ埋込みのセット内のクエリ埋込みの数は、潜在的な埋込みのセット内の潜在的な埋込みの数より少なくとも2倍大きい。
【0020】
いくつかの実装形態では、潜在的な埋込みのセット内の潜在的な埋込みの数は事前定義されており、クエリ埋込みのセット内のクエリ埋込みの数は可変であり、潜在的な埋込みのセット内の潜在的な埋込みの数とは無関係である。
【0021】
いくつかの実装形態では、ネットワーク入力はマルチモーダルデータを備える。
【0022】
いくつかの実装形態では、本方法は、潜在的な埋込みのセットを初期化するステップをさらに備え、ネットワーク入力はデータ要素埋込みのセットを備え、ニューラルネットワークのエンコーダブロックは、データ要素埋込みのセット内のデータ要素埋込みの一部またはすべてに対するアテンションを使用して、潜在的な埋込みのセット内の各潜在的な埋込みを更新するステップを備える動作をそれぞれが実行する1つまたは複数のクロスアテンションブロックを備え、ニューラルネットワークのエンコーダブロックは、潜在的な埋込みのセットに対するアテンションを使用して、潜在的な埋込みのセット内の各潜在的な埋込みを更新するステップを備える動作それぞれが実行する1つまたは複数のセルフアテンションブロックを備える。
【0023】
いくつかの実装形態では、潜在的な埋込みのセット内の潜在的な埋込みの数は、データ要素埋込みのセット内のデータ要素埋込みの数よりも少ない。
【0024】
いくつかの実装形態では、各データ要素埋込みは、ネットワーク入力内のそれぞれの空間位置に対応し、その空間位置におけるネットワーク入力の特徴に基づく特徴埋込みを備える。
【0025】
いくつかの実装形態では、各データ要素埋込みは、ネットワーク入力内のそれぞれの空間位置に対応し、空間位置を特徴付ける位置埋込みを備える。
【0026】
いくつかの実装形態では、各データ要素埋込みは、データ要素埋込みに対応するモダリティを定義するモダリティ埋込みを備える。
【0027】
別の態様によれば、1つまたは複数のコンピュータと、1つまたは複数のコンピュータに通信可能に結合された1つまたは複数のストレージデバイスとを備え、1つまたは複数のストレージデバイスは、命令を記憶し、命令は、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに、本明細書に記載の方法の動作を実行させる、システムが提供される。
【0028】
別の態様によれば、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに、本明細書に記載の方法の動作を実行させる命令を記憶する1つまたは複数の非一時的コンピュータストレージ媒体が提供される。
【0029】
本明細書で説明する主題は、以下の利点のうちの1つまたは複数を実現するために特定の実施形態において実装することができる。
【0030】
本明細書で説明されているニューラルネットワークシステムは、潜在的な埋込みのセットとしてネットワーク入力の表現を生成するためにネットワーク入力を処理し、次いで、潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによってネットワーク出力の各次元を生成することができる。潜在的な埋込みのセットに対するクエリ埋込みのクロスアテンションによってネットワーク出力の各次元を生成することにより、システムは、たとえば、ニューラルネットワークの隠れ層を再構築することなく、クエリ埋込みの数を修正することによって、ネットワーク出力の次元数を柔軟に修正できるようになる。
【0031】
さらに、ニューラルネットワークによって実行される予測タスクはクエリ埋込みによって定義され、クエリ埋込みを使用して修正することができる。したがって、ニューラルネットワークシステムは、最小限の変更で様々なモダリティのネットワーク入力に対する様々な予測タスクを実行するために実装することができる、柔軟で一般的なニューラルネットワークアーキテクチャを提供する。それにより、ニューラルネットワークシステムは、新しいドメインまたは予測タスクごとに新しいニューラルネットワークを設計、実装、およびトレーニングする必要性を軽減または排除することによって、リソースをより効率的に使用できるようになる。
【0032】
固定サイズの出力、たとえば固定サイズの画像セグメンテーション出力を生成する従来のニューラルネットワークとは対照的に、本明細書で説明するニューラルネットワークシステムは、まばらな、または部分的なネットワーク出力を生成するためにクエリ埋込みを使用することができる。たとえば、ニューラルネットワークシステムは、画像の完全なセグメンテーションを生成するのではなく、たとえば、関連するクエリ埋込みのみを使用して潜在的な埋込みのセットにクエリを実行することによって、画像の指定された適切なサブセットのみのセグメンテーションを生成することができる。したがって、ニューラルネットワークシステムは、適切な場合に、まばらな、または部分的なネットワーク出力を生成するオプションを提供することによって、計算リソース(たとえば、メモリおよび計算能力)の消費を削減することができる。たとえば、画像の残りの部分をセグメント化せずに、より大きい画像の関心領域のみをセグメント化するために、ニューラルネットワークシステムを使用することができる。
【0033】
より一般的には、ネットワーク出力の次元は、クエリ埋込みのセット内のクエリ埋込みの数に対応するため、ネットワーク出力のサイズはネットワーク入力のサイズに関係なく定義することができる。さらに、クロスアテンションを使用すると、ネットワークの入力および出力のサイズに対して実行される計算の二次依存性が回避され、代わりに、依存関係は線形であるため、たとえばビデオ、オーディオ、およびマルチモーダルデータの処理が容易になる。同様に、たとえば、ネットワーク出力は、クロスアテンションを使用して潜在的な埋込みにクエリを実行することによって生成されるため、説明された技法の実装形態は、ネットワーク入力および出力の空間的または時間的構造とは無関係であり得る潜在的な埋込みのセットを使用する。これにより、マルチモーダルデータ、つまり異なる構造または次元数を有するネットワーク入力の処理が容易になる。さらに、システムのいくつかの実装形態では、他のいくつかの技法よりも効率的に、より単純なアーキテクチャを使用して、タスク、たとえば、オプティカルフロー決定タスクを実行することができる。
【0034】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0035】
図1】ニューラルネットワーク出力を生成することができる例示的なニューラルネットワークシステムのブロック図である。
図2】例示的なニューラルネットワークシステムのより詳細なブロック図である。
図3】ニューラルネットワークシステムを使用してニューラルネットワーク出力を生成するための例示的なプロセスの流れ図である。
図4】例示的なクエリ埋込みを示す図である。
図5】クエリ埋込みの別の例を示す図である。
図6】ニューラルネットワークシステムによって処理され得る入力の例示的なモダリティを示す図である。
図7A】例示的なマルチモーダル結果を示す図である。
図7B】例示的なマルチモーダル結果を示す図である。
【発明を実施するための形態】
【0036】
様々な図面における同様の参照番号および呼称は、同様の要素を示す。
【0037】
図1は、例示的なニューラルネットワークシステム100のブロック図である。ニューラルネットワークシステム100は、以下に説明するシステム、コンポーネント、および技法が実装される1つまたは複数の位置にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例である。
【0038】
ニューラルネットワークシステム100は、ニューラルネットワーク入力102を取得することと、ニューラルネットワーク出力108を生成するためにニューラルネットワーク150を使用して入力102を処理することとを行うように構成することができる。
【0039】
ネットワーク入力102は、任意の適切なタイプのデータを含むことができる。すなわち、ニューラルネットワーク150は、複数のモダリティ、たとえば、画像、ビデオ、オーディオ、テキスト、もしくは他の適切なモダリティ、またはそれらの任意の組合せのいずれかの入力を処理するように構成することができる。ニューラルネットワーク150は、単一セットのパラメータを有することができると同時に、複数のモダリティのいずれか1つまたは組合せを処理することができるように実質的に柔軟である。
【0040】
いくつかの実装形態では、ネットワーク入力102はエンティティを特徴付けることができる。エンティティは、画像、オーディオ波形、点群(たとえば、ライダまたはレーダセンサによって生成される)、タンパク質、単語のシーケンス(たとえば、1つまたは複数の文または段落を形成するもの)、ビデオ(たとえば、ビデオフレームのシーケンスを表している)、または他の適切なタイプのデータ、あるいはそれらの組合せを含むことができる。本明細書で使用される画像、すなわち静止画像または動画(ビデオ)は、点群を含み得る。
【0041】
特定の例として、エンティティは、空間的または時間的構造に配置された複数のユニットを含むことができ、たとえば図4に示されるように、エンティティは画像であり得、各ユニットは画像内のピクセルである可能性がある。エンティティ内の各ユニットは、たとえば、空間的または時間的構造におけるユニットの位置、および/あるいは空間的構造におけるユニットに関連付けられる特徴を特徴付けることができる、関連付けられるデータ要素埋込みを有することができる。別の特定の例では、エンティティはテキストであってもよく、たとえば、エンティティは、1つまたは複数の言語における単語のシーケンス、フレーズ、文字、または単語片であってもよい。さらに別の特定の例では、エンティティは、異なるモダリティの組合せを含むことができ、たとえば、エンティティは、オーディオ、ビデオ、およびラベルデータの組合せを含むことができる。別の例として、エンティティは、画像データ、オーディオデータ、またはいわゆる「ファインタッチ」センサデータ(これによりローカライズが可能になる)などの、実環境の1つまたは複数の特性を認識するように構成された1つまたは複数のセンサからのセンサデータを備えることができる。ネットワーク入力102のいくつかの例を上で説明したが、一般に、ネットワーク入力102は、任意の適切な次元数および構造を有することができ、任意の適切なタイプのデータを含むことができる。
【0042】
ニューラルネットワークシステム100は、ネットワーク出力108を生成するために、ニューラルネットワーク150を使用してネットワーク入力102を処理することができる。ネットワーク出力108は、たとえば、分類出力、回帰出力、シーケンス出力(すなわち、出力要素のシーケンスを含む)、セグメンテーション出力、自動エンコーディング出力、または他の適切なネットワーク出力、またはそれらの組合せであり得る。
【0043】
ニューラルネットワークシステム100は、たとえば、まばらな、または部分的なネットワーク出力108を生成するために、ネットワーク出力108の次元数を柔軟に修正することができる。たとえば、ネットワーク入力102が画像である場合、ネットワーク出力108は、画像の指定された(適切な)サブセットのみのセグメンテーションであり得る。一般に、ネットワーク出力108は、出力ベクトルの集合として表すことができ、出力ベクトルの数は、ネットワーク出力108の「次元数(dimensionality)」と呼ぶことができる。以下でより詳細に説明するように、システム100は、クエリ埋込み106のセットを使用してネットワーク出力108の次元数を制御することができる。
【0044】
ネットワーク入力102を取得することに加えて、システム100は、クエリ埋込み106のセットをさらに取得することができる。ネットワーク入力102は、たとえば、システム100によって利用可能にされたアプリケーションプログラミングインターフェース(API)を通じて、システム100のユーザによって提供され得る。
【0045】
クエリ埋込み106のセットは、たとえば、システム100のユーザによって同じ方法で提供されてもよく、あらかじめ決定されてもよく、すなわち、システムは特定のタスクを実行するように構成され得る。クエリ埋込み106は、所望の次元数を有するネットワーク出力108を生成するためにシステム100によって使用され得る。特定のタスクに必要な場合、クエリ埋込み106のセット内の各クエリ埋込みは、ネットワーク出力108内の対応する出力次元に対する関連情報を定義することができる。言い換えれば、各クエリ埋込みは、対応する出力次元の位置および/またはモダリティ固有の特徴などを定義することができ、たとえば、ネットワーク出力は、特定の1D、2D、または3D位置、あるいは特定のデータモダリティに対する出力を備える。そのようなクエリ埋込みは、ネットワーク出力の対応する次元に必要な情報を提供するために、ベクトルのセットをクエリ埋込みに組み合わせることによって、たとえば連結または追加することによって構築することができる。
【0046】
クエリ埋込み106は、任意の適切な方法で定義することができ、たとえば、手動でエンジニアリングすることも、学習することも、ネットワーク入力102の関数として定義することもできる。一般に、ニューラルネットワークシステム100は、いかなる特定のタイプのクエリ埋込みの使用にも依存せず、単純な埋込みでも良好な結果を生み出すことができる。トレーニング中、ネットワーク出力を生成するために、システムにネットワーク入力とクエリ埋込みのセットが提供される。システムは、予測タスクを実行するネットワーク出力を生成するようにトレーニングされている。これについては後でさらに説明する。
【0047】
集合的に、クエリ埋込み106のセットは、ネットワーク入力102を処理することによってニューラルネットワーク150によって実行される予測タスクを定義することができる。予測タスクは、たとえば、分類タスク、回帰タスク、セグメンテーションタスク、自動エンコーディングタスク、または他の任意の適切なタスク、あるいはそれらの組合せであり得る。いくつかの実装形態では、クエリ埋込み106のセット内の各クエリ埋込みは、空間、モダリティ、タスク固有、および/またはネットワーク出力108の対応する出力次元に関連する他の適切な特徴を組み合わせる(たとえば、連結または合計する)ことによって生成することができる。
【0048】
特定の例として、ネットワーク入力102は、それぞれ同じシーンを表す第1の画像および第2の画像の表現を含むことができ、予測タスクは、点の2次元変位(たとえば、オプティカルフロー)、たとえば第1の画像内のピクセルまたはピクセルの適切なサブセット(すなわち、すべてのピクセルではない)を推定することである。いくつかの実装形態では、そのような点は、ピクセルまたは複数のピクセルを備える画像パッチを備え得る。そのような場合、クエリ埋込み106のセット内の各クエリ埋込みは、たとえば、第1の画像内の対応する点のx座標およびy座標を指定することができ、オプティカルフロー予測タスク、たとえば点の第1の画像と第2の画像の表現用の1つまたは複数のさらなる埋込みを含むことができる。すなわち、クエリ埋込み106のセットは、予測を生成するために第1の画像内の点のセットを定義することができ、予測はオプティカルフローを推定することである。たとえば、ネットワーク出力の次元によって、ある点におけるオプティカルフローの大きさと方向を定義し得る。クエリ埋込みおよび予測タスクの例については、図4および図5を参照して以下でより詳細に説明する。
【0049】
ネットワーク入力102およびクエリ埋込み106のセットを取得した後、システム100は、入力102を処理することと、所望の次元数を有するネットワーク出力108、たとえば、クエリ埋込み106のセット内の各クエリ埋込みに対応するそれぞれの次元を含む出力を生成することとを行うためにニューラルネットワーク150を使用することができる。このプロセスについては次により詳細に説明する。
【0050】
システム100は、ネットワーク入力102の表現を潜在的な埋込み104のセットとして生成するために、ニューラルネットワーク150のエンコーダブロック110を使用してネットワーク入力102を処理することができる。「潜在的な埋込み(latent embedding)」は、潜在的な空間内の埋込みを指すことができる。一般に、潜在的な埋込み104は、任意の適切な次元数の空間に含まれ得る。一般に、埋込みのセットの次元数は、埋込みのセット内の埋込みの数(たとえば、N)によって定義することができる。いくつかの実装形態では、エンコーダブロックは、潜在的な埋込みのセットを生成するために、ネットワーク入力と潜在的な埋込みの初期セットを処理する。
【0051】
いくつかの実装形態では、ネットワーク入力102の次元数は、潜在的な埋込み104および/またはクエリ埋込み106の次元数よりもはるかに大きくなり得る。たとえば、ネットワーク入力102が224×224ピクセルの寸法を有する画像を含み、データ要素の埋込み(たとえば、画像内の各ピクセルに対応する)の数がM=50176である場合、潜在的な埋込み104の数は、たとえば、N=512であり得、したがってN<<Mとなる。エンコーダブロック110は、任意の適切な方法で入力の表現を潜在的な埋込み104のセットとして生成するために、ネットワーク入力102を処理することができる。このプロセスの特定の例については、図2を参照して以下でより詳細に説明する。
【0052】
エンコーダブロック110を使用して潜在的な埋込み104のセットを生成した後、ニューラルネットワークシステム100は、ネットワーク出力108を生成するために、ニューラルネットワーク150の出力ブロック120を使用して、潜在的な埋込み104のセットおよびクエリ埋込み106のセットを処理することができる。特に、出力ブロック120は、「アテンション(attention)」動作を実行するように構成することができる。アテンション動作は、第2の埋込みのセットに対するアテンションを使用して、第1の埋込みのセット内の各埋込みを更新することを含むことができる。いくつかの実装形態では、アテンション動作を実行した後(たとえば、各埋込みを更新した後)、出力ブロック120は、1つまたは複数のニューラルネットワーク層、たとえば完全に接続されたニューラルネットワーク層を使用して、更新された各埋込みを処理することができる。使用できる多くの異なるアテンションメカニズムがあり、例示的なアテンション動作については、図2を参照して以下でさらに詳しく説明する。
【0053】
特に、出力ブロック120は、潜在的な埋込み104のセットに対するクエリ埋込み106のセット内の各クエリ埋込みを更新することができる。上述のオプティカルフローの例を続けると、クエリ埋込み106のセット内の各クエリ埋込みは、たとえば、第1の画像内の対応するピクセルのx座標およびy座標、ならびにオプティカルフロー予測タスクを指定する埋込みを指定することができる。出力ブロック120は、潜在的な埋込み106のセットに対する対応するクエリ埋込みのクロスアテンションを通じて、ネットワーク出力108の特定の次元を生成することができる。例示として前の例に戻ると、ネットワーク出力108の次元は、たとえば、クエリ埋込みによって定義される第1の画像内のピクセルのオプティカルフローを表す単一のフローベクトルとすることができる。出力ブロック120は、クエリ埋込み106のセット内のクエリ埋込みごとにこのプロセスを繰り返すことができ、それによって、ネットワーク出力108のそれぞれの次元を生成することができる。いくつかの実装形態では、クエリ埋込み104のセット内の各クエリ埋込みに対応する出力は、並行して生成することができる。このプロセスについては、図2を参照して以下でより詳細に説明する。
【0054】
エンコーダブロック110および出力ブロック120は、それらが所定の機能を実行できるようにする任意の適切なニューラルネットワークアーキテクチャを有することができる。たとえば、エンコーダブロック110および出力ブロック120は、任意の適切な数(たとえば、2層、5層、10層)の任意の適切なニューラルネットワーク層(たとえば、畳み込み層、全結合層、リカレント層、アテンション層など)を有し、任意の適切な構成において接続され得る(たとえば、層の線形シーケンスとして)。ニューラルネットワークシステム100はまた、任意の適切な動作を実行するように構成された任意の数のニューラルネットワークブロックをさらに含むことができる。エンコーダブロック110および出力ブロック120の特定の例については、図2を参照して以下でより詳細に説明する。
【0055】
このように、システム100は、たとえば、ニューラルネットワーク150の隠れ層を再構築することなく、クエリ埋込み106の数を修正することによって、ネットワーク出力108の次元数を柔軟に修正することができる。さらに、上述のように、ニューラルネットワーク150によって実行される予測タスクはクエリ埋込み106によって定義され、いくつかの実装形態では、クエリ埋込み106を使用して修正することができる。したがって、ニューラルネットワークシステム100は、最小限の変更で様々なモダリティのネットワーク入力に対する様々な予測タスクを実行するために実装することができる、柔軟で一般的なニューラルネットワークアーキテクチャを提供することができる。
【0056】
ニューラルネットワークシステム100は、複数のトレーニング反復にわたってトレーニングデータのセットに関してニューラルネットワーク150をトレーニングすることができるトレーニングエンジンをさらに含むことができる。トレーニングデータは、トレーニング例のセットを含むことができ、各トレーニング例は、(i)トレーニング入力、および(ii)トレーニング入力を処理することによってニューラルネットワーク160によって生成されるべきターゲット出力を指定する。
【0057】
各トレーニング反復において、トレーニングエンジンは、トレーニングデータからトレーニング例のバッチをサンプリングし、対応するネットワーク出力を生成するために、ニューラルネットワーク150(たとえば、エンコーダブロック110および出力ブロック120)に含まれるニューラルネットワークブロックのシーケンスを使用して、トレーニング例によって指定されたトレーニング入力を処理することができる。特に、トレーニング入力ごとに、ニューラルネットワーク150は、潜在的な埋込み104のセットを生成するために、エンコーダブロック110の現在のモデルパラメータ値を使用してトレーニング入力を処理する。ニューラルネットワーク150は、トレーニング入力に対応するネットワーク出力108を生成するために、出力ブロック120の現在のモデルパラメータ値を使用して潜在的な埋込み104のセットおよびクエリ埋込み106のセットを処理する。
【0058】
トレーニングエンジンは、(i)ニューラルネットワーク150によって生成されたネットワーク出力と、(ii)トレーニング例によって指定されたターゲットネットワーク出力との間の類似性を測定する目的関数を最適化するために、エンコーダブロック110および出力ブロック120のモデルパラメータ値を調整することができる。目的関数は、たとえば、クロスエントロピ目的関数、二乗誤差目的関数、または他の任意の適切な目的関数であり得る。いくつかの実装形態では、トレーニング中、ニューラルネットワーク150によって生成されるネットワーク出力は、可能な出力の全セットの一部のみを含むことができる。そのような場合、目的関数は、出力の合計セットではなく、生成された出力のみを参照して評価することができる。これにより、ニューラルネットワークのトレーニングが加速し、トレーニング効率が向上する。
【0059】
トレーニングエンジンは、たとえば逆伝播技法を使用して、目的関数の勾配を決定することができる。トレーニングエンジンは、勾配を使用して、たとえば任意の適切な勾配降下最適化アルゴリズム、たとえばAdamを使用して、エンコーダブロック110および出力ブロック120のモデルパラメータ値を更新することができる。トレーニングエンジンは、ニューラルネットワーク150のトレーニング中に使用されない検証データのセットに基づいてニューラルネットワーク150の性能尺度を決定することができる。トレーニング後、ニューラルネットワークシステム100は、機械学習タスクを実行するために、たとえば、ネットワーク入力を処理し、ネットワーク出力を生成するために使用することができる。
【0060】
いくつかの実装形態では、トレーニングエンジンは、強化学習技法を使用してニューラルネットワーク150をトレーニングすることができる。たとえば、トレーニングエンジンは、ニューラルネットワーク150(たとえば、エンコーダブロック、クロスアテンションブロック、またはその両方)を通じて強化学習目的関数の勾配を反復的に逆伝播することによってニューラルネットワーク150のモデルパラメータ値を反復的に調整することによって、ニューラルネットワーク150をトレーニングすることができる。強化学習関数は、任意の適切な強化学習目的関数とすることができる。
【0061】
ニューラルネットワークシステム100は、任意の適切な機械学習タスクを実行するように構成することができる。以下にいくつかの例を示す。
【0062】
いくつかの実装形態では、システム100は、画像またはオーディオのセグメント化タスクを実行するために、ニューラルネットワーク150を使用する。たとえば、ニューラルネットワークは、入力画像内のピクセルごと、またはオーディオサンプルごとに、可能なクラスのセットに対するそれぞれのスコア分布を定義するネットワーク出力を生成するために、オーディオ波形を表す画像または一連のオーディオサンプルを含むネットワーク入力を処理することができる。クラスのスコアは、対応するピクセルまたはサンプルがクラスに含まれる可能性を定義することができる。たとえば、画像の場合、可能なクラスは、たとえば、水、建物、車両、歩行者などを含むことができる。この例では、クエリ埋込みによって、入力画像内の対応するピクセルの位置、またはオーディオ内の対応するサンプルの位置を指定することができ、クエリ埋込みに対応するネットワーク出力の次元によって、入力画像内の対応するピクセルまたはオーディオ内の対応するサンプルのスコア分布を定義することができる。画像は動画、すなわちビデオであってもよい。同様の方法で、システム100は、画像の(空間3D)深度マップを取得するためにネットワーク出力が対応するピクセルの予測深度値を定義する画像深度予測タスクを実行するために、ニューラルネットワーク150を使用し得る。
【0063】
いくつかの実装形態では、システム100は、タンパク質モデリングタスクを実行するためにニューラルネットワーク150を使用し、たとえば、ネットワーク入力はタンパク質(たとえば、タンパク質の複数配列アラインメント)を特徴付け、ネットワーク出力はタンパク質の予測構造(たとえば、タンパク質構造における各アミノ酸のそれぞれの3次元(3-D)空間位置と配向)を特徴付ける。この例では、クエリ埋込みにより、タンパク質のアミノ酸シーケンス内のアミノ酸のインデックスを指定でき、任意で、指定されたインデックスにおけるアミノ酸のタイプ(たとえば、アラニン、アルギニン、アスパラギンなど)を指定することができる。クエリ埋込みに対応するネットワーク出力の次元は、クエリ埋込みによって指定されるアミノ酸の予測される空間位置および配向を定義することができる。
【0064】
いくつかの実装形態では、システム100は、エージェント制御タスクを実行するためにニューラルネットワーク150を使用し、ネットワーク入力は、環境の状態を特徴付ける1つまたは複数の観察あるいは他のデータのシーケンスを表し、出力は、シーケンス内の最新のデータに応答してエージェントによって実行されるアクションを定義する。環境は、実環境または模擬環境であり得、エージェントは、たとえば、ロボット、自律型陸上、海上、または航空車両、あるいは産業施設用の制御システムであり得る。各クエリ埋込みは、環境内のエージェントによって実行されるそれぞれのタスクを指定することができ、たとえば、タスクはエージェントが環境内の目標位置に移動するためのものであり、クエリ埋込みは目標位置を指定することができる。
【0065】
いくつかの実装形態では、システム100は、たとえば、オーディオ波形に対応する音素、書記素、文字、または単語のシーケンスを特徴付けるネットワーク出力を生成するために、ニューラルネットワーク150を使用して、オーディオ波形におけるオーディオサンプルを表すネットワーク入力を処理してスピーチ認識を実行する。オーディオサンプルはサンプルのシーケンスを定義し、任意で、ネットワーク入力はシーケンス内のサンプルの位置のエンコーディングも含み得る。ネットワーク出力の各次元は、たとえばオーディオ波形におけるそれぞれの時間間隔に対応し、可能な音素、書記素、文字、または単語のセットにわたるそれぞれのスコア分布を定義することができる。この例では、ニューラルネットワークは、たとえば、(i)オーディオ波形におけるそれぞれの時間間隔、たとえばシーケンス内の位置、およびオプションで(ii)オーディオ波形における時間間隔の予測タスク、たとえば、時間間隔に対応する音素、書記素、文字、または単語のデコーディングを定義するクエリ埋込みによって、ネットワーク出力を生成することができる。
【0066】
いくつかの実装形態では、システム100は、たとえば、ネットワーク入力の予測された再構築を定義するネットワーク出力を生成するためにネットワーク入力を処理することによって、自動エンコーディングタスクなどの再構築タスクを実行するために、ニューラルネットワーク150を使用する。ネットワーク入力は、たとえば、画像またはビデオ、オーディオ波形、点群、あるいはテキストのシーケンスであり得る。この例では、各クエリ埋込みは、再構築されるネットワーク入力内の対応する位置、たとえば画像内の空間位置、ビデオ内の空間位置および/または時間位置、あるいはオーディオ波形内の時間ウィンドウを指定するデータを含むことができる。任意で、各クエリ埋込みはまた、再構築されるネットワーク入力のモダリティを定義することができ、たとえば、ネットワーク入力が画像、オーディオ波形、または点群であるかどうかを定義する。ネットワーク出力の各次元は、たとえば、クエリ埋込みによって指定された1D、2D、または3Dのネットワーク入力の再構築された点に対応することができる。元のネットワーク入力よりも多いまたは少ない点が再構築される場合がある。点は、連続的に、および/または並行して再構築され得る。たとえば、クエリ埋込みのセットは、ネットワーク入力内の点ごとのクエリ埋込み、たとえば画像のピクセルまたはオーディオ信号のサンプルを備えてもよく、ただ1つの点に対するクエリ埋込みを備えてもよく、ネットワーク出力は、所望の各点を指定することによって一度に1つの点ずつ連続的に再構築されてもよく、クエリ埋込みのセットが、ネットワーク入力内の点のすべてではなく一部を再構築してもよい。
【0067】
いくつかの実装形態では、システム100は、テキストのシーケンスを別の言語に翻訳したネットワーク出力、すなわち、テキストの入力シーケンスの翻訳である他の言語のテキストのシーケンスを生成するために、たとえば、1つの言語でテキストのシーケンス、たとえば単語のシーケンス、フレーズ、文字、または単語片を表すネットワーク入力を処理するためにニューラル機械翻訳タスクのためにニューラルネットワーク150を使用する。この例では、各クエリ埋込みは、たとえば、入力されたテキストシーケンスが翻訳されるべき自然言語(たとえば、英語、フランス語、ドイツ語など)を識別するデータを含むことができる。さらに、各クエリ埋込みは、テキストの出力シーケンス内の対応する位置を指定することができる。
【0068】
いくつかの実装形態では、システム100は、オーディオまたはオーディオビジュアル処理タスクを実行するために、ニューラルネットワーク150を使用する。たとえば、ネットワーク入力が口頭での発話を表す場合、ニューラルネットワークによって生成されるネットワーク出力は、テキストのセットの各々のスコアになる可能性があり、各スコアは、テキストが発話の正しい転写であるという推定された可能性を表す。この例では、各クエリ埋込みは、それぞれのテキストの表現、またはそれに対応することができる。別の例として、ネットワーク入力が口頭での発話を表す場合、ニューラルネットワークによって生成された出力は、特定の単語またはフレーズ(「ホットワード(hotword)」)が発話内で話されたかどうかを示すことができる。この例では、各クエリ埋込みは、たとえば、それぞれの単語またはフレーズに対応するワンホット埋込みであるか、またはそれに対応することができる。
【0069】
いくつかの実装形態では、システム100は、テキスト読み上げタスクを実行するためにニューラルネットワーク150を使用し、ネットワーク入力は、自然言語におけるテキストまたは自然言語におけるテキストの特徴を表し、ネットワーク出力は、スペクトログラム、波形、または自然言語で話されているテキストのオーディオを定義する他のデータである。この例では、各クエリ埋込みは、テキストを発声する際に使用されるそれぞれの話し声を識別するためのものであり得る(たとえば、各話し声がそれぞれの人の声に対応する場合)。さらに、各クエリ埋込みは、ネットワーク出力内の対応する時間ウィンドウを指定することができる。
【0070】
いくつかの実装形態では、システム100は、健康予測タスクを実行するためにニューラルネットワーク150を使用し、ネットワーク入力は患者の電子健康記録データから得られたデータを表し、出力は、患者の将来の健康に関連する予測、たとえば、患者に処方されるべき予測治療法、患者に健康有害事象が発生する可能性、または患者の予測される診断などである。この場合、各クエリ埋込みは、患者の人生における対応する時点または期間を指定することができる。いくつかの実装形態では、システム100は、テキスト生成タスクを実行するためにニューラルネットワーク150を使用し、ネットワーク入力はテキストのシーケンスを表し、出力は別のテキストのシーケンス、たとえばテキストの入力シーケンスの完了、入力シーケンスにおいて提起された質問に対する応答、または第1のテキストシーケンスによって指定されたトピックに関するテキストのシーケンスである。別の例として、ネットワーク入力は、テキスト以外のデータ、たとえば画像を表すことができ、出力シーケンスは、ネットワーク入力によって表されるデータを説明するテキストとすることができる。この例では、各クエリ埋込みは、テキストの出力シーケンス内の対応する位置を指定することができる。
【0071】
いくつかの実装形態では、システム100は、画像生成タスクを実行するためにニューラルネットワーク150を使用し、ネットワーク入力は調整入力を表し、出力は画像のピクセルの強度値のシーケンスである。
【0072】
いくつかの実装形態では、システム100は、ゲノミクスタスクを実行するためにニューラルネットワーク150を使用し、ネットワーク入力はDNA配列または他の分子配列のフラグメントを表し、ネットワーク出力は、たとえば、DNA配列フラグメントのデータセットに対する教師なし学習技法を利用することによる下流タスクにおいて使用するためのフラグメントの埋込み、または下流タスクのための出力のいずれかである。下流タスクの例は、プロモータ部位の予測、メチル化解析、非コーディング変異体の機能的効果の予測などを含む。この例では、各クエリ埋込みはDNA配列内の対応する位置を指定することができる。
【0073】
いくつかの実装形態では、システム100は、画像、ビデオ、またはオーディオの分類タスクを実行するためにニューラルネットワーク150を使用する。次いで、ネットワーク入力は、前述したように、画像またはビデオのピクセル、あるいはオーディオ波形のサンプルを表し得る。任意で、ネットワーク入力は、画像またはビデオのピクセル、あるいはオーディオのサンプルの位置エンコーディングを含み得、ビデオの場合、位置エンコーディングは空間位置および/または時間位置であり得る。ネットワーク出力は、画像、ビデオ、またはオーディオの分類を定義する。分類は、可能なオブジェクトカテゴリのセット内のオブジェクトカテゴリ(たとえば、画像、車両、歩行者、自転車など)ごとのそれぞれのスコアを含むことができる。オブジェクトカテゴリのスコアは、ネットワーク入力がそのオブジェクトカテゴリに属するオブジェクトを備える、たとえば、画像またはビデオがオブジェクトを描写する可能性を定義することができる。ビデオの分類は、たとえばジェスチャ認識に、ビデオ内で描写されるアクションの分類を備え得る。クエリ埋込みのセットは、(学習され得る)単一のクエリ埋込みを備え得る。同様の方法で、システム100は、画像またはオーディオ境界ボックスタスクを実行するためにニューラルネットワーク150を使用することができ、ネットワーク出力は、分類と、1、2、または3次元(ここでは時間を次元として数える)におけるオブジェクトの境界ボックスの座標を定義するベクトルとを備える。
【0074】
前述したように、一般に上記の例では、画像またはビデオへの参照は点群を含む。たとえば、いくつかの実装形態では、システム100は、点群処理タスクを実行するためにニューラルネットワーク150を使用し、たとえば、ネットワーク入力は点群(たとえば、ライダまたはレーダセンサによって生成される)を表し、ネットワーク出力は、たとえば、点群によって表されるオブジェクトのタイプを特徴付ける。この例では、各クエリ埋込みは、点群内の1つまたは複数の点の対応する空間位置を指定することができる。
【0075】
いくつかの実装形態では、システム100は、画像またはビデオのキャプションタスクを実行するために、ニューラルネットワーク150を使用する。たとえば、ニューラルネットワークは、その画像あるいは一連の画像のうちの1つまたは複数について、その画像またはビデオを記述するトークンのセットを定義するネットワーク出力を生成するために、画像または一連の画像を備えるビデオを含むネットワーク入力を処理することができ、トークンは単語、単語の一部、または文章を表し得る。トークンは、たとえば1つまたは複数の定義された分布からサンプリングすることによって、決定論的に定義されてもよく、確率論的に定義されてもよい。ビデオの場合、クエリ埋込みにより、一連の画像の各々の時間的な位置を指定することができる(ただし、必ずしも指定する必要はない)。本明細書で使用される場合、時間的な位置は時間的順序を含む。
【0076】
いくつかの実装形態では、ネットワーク入力はマルチモーダル入力であり、システム100は、マルチモーダルタスクを実行するためにニューラルネットワーク150を使用する。一般に、このようなマルチモーダル入力は、2つ以上の異なるタイプまたはモダリティのデータの組合せであり、異なるタイプのデータは、異なるモダリティを使用してネットワーク入力内の同じオブジェクトまたは重複するオブジェクトを表し得るが、必ずしもそうである必要はない。そのようなマルチモーダルデータは、画像またはビデオのピクセルと、オーディオ波形のサンプルを表すオーディオデータとの組合せを備えるオーディオビジュアルデータを備え得る。別の例として、そのようなマルチモーダルデータは、自然言語におけるテキストを表すテキストデータ、たとえばトークンと、画像またはビデオのピクセル、あるいはオーディオ波形のサンプルとの組合せを備え得る。マルチモーダルタスクは上記のタスクのいずれかであるが、ネットワーク入力に追加モードのデータを含み得る。いくつかの例として、マルチモーダルタスクは、分類タスク、セグメンテーションタスク、スピーチ認識タスク、再構築タスク、認識タスク、キャプションタスク、およびエージェント制御タスクを備え得る。ネットワーク入力を構築するために、各モダリティタイプにモダリティ固有の埋込みが提供され得、次いで、マルチモーダルデータが2D入力配列202にシリアル化され得る。一般に、クエリ埋込みは前述したとおりであり得るが、いくつかの実装形態では、モダリティごとに出力を生成するためにモダリティ固有の埋込みが追加される。埋込みは学習された埋込みであってもよい。空間位置または時間位置がクエリ埋込みに組み込まれる場合、たとえばビデオまたはオーディオデータの場合、これは、モダリティ固有の埋込みによりシステムが各モダリティを選択できるようになるため、前述したとおりである可能性があり得る。ネットワーク出力は前述したものに対応し得るが、適用されたものはマルチモーダル入力に提供される。たとえば、マルチモーダル分類タスクは、たとえば入力に対して可能な複数のカテゴリのカテゴリごとのスコアを定義することによって、マルチモーダル入力を複数のカテゴリのうちの1つまたは複数に分類するネットワーク出力を生成し得る。同様に、キャプションタスクは、マルチモーダル入力を記述するトークンのネットワーク出力を生成し、対応するクエリは、クエリ埋込みごとの空間位置または時間位置などを、必須ではないが含み得る。別の例として、マルチモーダルデータが、テキストデータと、画像、ビデオ、またはオーディオデータとの組合せを備える場合、タスクは、たとえば、特定のキャプションによって、たとえばテキストまたはキャプションのスコアを定義することによって、画像、ビデオ、またはオーディオ波形がテキストによって記述されるかどうかを定義するネットワーク出力を提供するために、その組合せを処理することを備え得る。クエリは、分類に関して前述したとおりであってもよく、クエリ埋込みのセット内のクエリ埋込みのうちの1つによって表される位置ごとのそれぞれのスコアを生成するための位置データを含んでもよい。
【0077】
一般に、上記の例では、ネットワーク入力は、生のデータ、たとえば生のピクセルデータまたはオーディオサンプル、あるいは、たとえば特徴エンコーダニューラルネットワークによる前処理によって取得された空間特徴、時間特徴、または時空間特徴を定義する、特徴埋込みを備え得る。
【0078】
ニューラルネットワークシステム100の例示的なアーキテクチャは、図2を参照して以下でより詳細に説明する。
【0079】
図2は、ニューラルネットワークシステム100の例示的なアーキテクチャのより詳細なブロック図である。ニューラルネットワークシステム100は、以下に説明するシステム、コンポーネント、および技法が実装される1つまたは複数の位置にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例である。
【0080】
ニューラルネットワークシステム100は、エンティティを特徴付けるデータ要素埋込みのセット(たとえば、「入力配列」)を含むことができるネットワーク入力202を取得するように構成することができる。エンティティは、たとえば、空間的および/または時間的構造に配置された複数のユニットを含むことができる。
【0081】
いくつかの実装形態では、各データ要素埋込みは、ネットワーク入力内のそれぞれの空間位置に対応することができ、その空間位置におけるネットワーク入力の特徴に基づく特徴埋込みを含むことができる。たとえば、エンティティが画像であり、ユニットが画像内のピクセルである場合、システムは、そのピクセルの周囲の画像のパッチを選択し、パッチ内のピクセルをベクトルに連結することによって、特徴埋込みを取得することができる。本明細書で使用される場合、空間位置への言及は、一般に、単語のシーケンスまたはオーディオ波形サンプルのシーケンスなどのシーケンス内の位置を含むものとして理解されるべきである。
【0082】
いくつかの実装形態では、各データ要素埋込みは、データ要素埋込みに対応する空間位置を特徴付ける位置埋込みを含むことができる。たとえば、エンティティが単語のシーケンスであり、エンティティ内の各ユニットが単語である場合、システムは単語のシーケンス内の単語のインデックスに基づいて位置埋込みを生成することができる。いくつかの実装形態では、各データ要素埋込みは、データ要素埋込みに対応するモダリティを定義するモダリティ埋込みを含むことができる。たとえば、ネットワーク入力がオーディオ波形である場合、データ要素の埋込みは、ネットワーク入力がオーディオ波形であることを指定するモダリティ埋込みを含むことができる。
【0083】
一般に、ネットワーク入力はM×Cの次元を有することができ、Mはデータ要素の埋込みの数であり、Cは各データ要素埋込みのチャネルの数である。
【0084】
ニューラルネットワークシステム100は、ネットワーク入力202を処理することによってニューラルネットワーク250によって実行される予測タスクを集合的に定義するクエリ埋込み206のセット(たとえば、「出力クエリ配列」)をさらに取得することができる。クエリ埋込み206は任意の適切な次元数を有することができ、たとえば、クエリ埋込みはO個のクエリベクトルを含むことができる。
【0085】
いくつかの実装形態では、ニューラルネットワークシステム100は、潜在的な埋込み204の初期セット(たとえば、「潜在的なアレイ」)をさらに取得することができる。潜在的な埋込み204は、事前定義および/またはランダムに初期化されてよく、またはこれらは学習されてもよく、すなわちそれらは、学習された、たとえば重みなどの配列の要素をそれぞれが定義する学習されたパラメータのセットを備え得る。すなわち、いくつかの実装形態では、エンコーダブロックは、ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、ネットワーク入力および潜在的な埋込みの初期セットを処理する。潜在的な埋込み204のセットは、次元N×Dを有することができ、Nは潜在的な埋込みの数であり、Dは各潜在的な埋込みのチャネルの数であり、両方ともニューラルネットワークシステム100のハイパパラメータであり得る。いくつかの実装形態では、クエリ埋込みの数Oは、潜在的な埋込みの数Nよりも、たとえば少なくとも2倍大きくなり得る。さらに、クエリ埋込みの数Oは可変であり、潜在的な埋込みの数Nとは無関係であり得る。
【0086】
ニューラルネットワークシステム100は、クエリ埋込み206のセット内の各クエリ埋込みに対応するそれぞれの次元を含むネットワーク出力208(たとえば、「出力配列」)を生成するために、ニューラルネットワーク250を使用してネットワーク入力202を処理することができる。たとえば、ネットワーク出力208は、O×E配列によって表すことができ、Oは出力ベクトルの数であり、Eは各出力ベクトル内の出力要素(ハイパパラメータ)の数である。ニューラルネットワークシステム100は、クエリ埋込み206のセット内の各クエリ埋込みに対応するそれぞれの次元(たとえば、それぞれの出力ベクトル)を生成することができる。出力ベクトルの数は、クエリベクトルの数と同じであり得る。
【0087】
ニューラルネットワークシステム100は、エンコーダブロック210および出力ブロック250を使用することによってネットワーク出力208を生成することができる。エンコーダブロック210は、1つまたは複数のニューラルネットワークブロックのシーケンス、たとえば、(i)1つまたは複数のクロスアテンションブロック230、および(ii)1つまたは複数のセルフアテンションブロック240を含むことができる。エンコーダブロック210は、ネットワーク入力202の表現を潜在的な埋込み204のセットとして生成するために、ネットワーク入力202を処理するように構成することができる。出力ブロック250は、ネットワーク出力208を生成するために、エンコーダブロック210によって生成された潜在的な埋込み204のセットおよびクエリ埋込み206のセットを処理するように構成することができる。ニューラルネットワーク250に含まれるアテンションブロックについては、以下でより詳細に説明する。
【0088】
クロスアテンションブロック230、セルフアテンションブロック240、および出力ブロック250は、それぞれ、アテンション動作を実行するように、たとえば、第2の埋込みのセットに対するアテンションを使用して、第1の埋込みのセット内の各埋込みを更新するように構成することができる。
【0089】
たとえば、第1の埋込みのセット内のターゲット埋込みごとに、各アテンションブロックは、第2の埋込みのセット内の埋込みごとにそれぞれのアテンション重みを生成し、第2の埋込みのセットと対応するアテンション重みとに基づいて、組み合わせた埋込みを生成することができる。特定の例として、各アテンションブロックは、たとえば、第2の埋込みのセット内の各埋込みを対応する重みと乗算し、重み付けされた埋込みを合計することによって、第2の埋込みのセットの重み付き合計として組み合わされた埋込みを生成することができる。次いで、各アテンションブロックは、たとえば、ターゲット埋込みを組み合わされた埋込みで置き換えること、組み合わされた埋込みをターゲット埋込みに追加すること、または他の適切な方法によって、第1の埋込みのセット内のターゲット埋込みを更新するために、組み合わされた埋込みを使用することができる。
【0090】
いくつかの実装形態では、アテンションブロックは、クエリキー値(QKV)アテンション動作を実行することができ、たとえば、クエリ(Q)、キー(K)、および値(V)の埋込みを使用する、第2の埋込みのセットに対するアテンションを使用して、第1の埋込みのセット内の各埋込みを更新することができる。特に、各アテンションブロックは、(i)クエリサブネットワーク、(ii)キーサブネットワーク、および(iii)値サブネットワークを含むことができる。第1の埋込みのセット内のターゲット埋込みごとに、クエリサブネットワークは、ターゲット埋込みに対するそれぞれのクエリ埋込み(Q)を生成するために、第1の埋込みのセット内のターゲット埋込みを処理するように構成することができる。キーサブネットワークは、第2の埋込みのセット内の埋込みごとのそれぞれのキー埋込み(K)を生成するために、第2の埋込みのセット内の各埋込みを処理するように構成することができる。同様に、値サブネットワークは、第2の埋込みのセット内の埋込みごとのそれぞれの値埋込み(V)を生成するために、第2の埋込みのセット内の各埋込みを処理するように構成することができる。
【0091】
次いで、各アテンションブロックは、第2の埋込みのセットに対するアテンションを使用して、第1の埋込みのセット内の各ターゲット埋込みを更新するために、クエリ埋込み(Q)、キー埋込み(K)、および値埋込み(V)を使用することができる。具体的には、各アテンションブロックは、たとえば、クエリ埋込み(Q)とキー埋込み(K)の各々との内積(たとえば、ドット)として、第2の埋込みのセット内の埋込みごとにアテンション重みを生成することができる。第2の埋込みのセットおよびアテンション重みに基づいて、各アテンションブロックは、たとえば、それぞれのアテンション重みによって重み付けされた値埋込み(V)の線形結合として、組み合わされた埋込みを生成することができる。最後に、各アテンションブロックは、組み合わされた埋込みを使用して、たとえば、第1の埋込みのセット内のターゲット埋込みを値埋込み(V)の加重和で置き換えることによって、第1の埋込みのセット内のターゲット埋込みを更新することができる。
【0092】
いくつかの実装形態では、第1の埋込みのセットと第2の埋込みのセットは同じ埋込みのセットにすることができる。そのような場合、アテンション動作(たとえば、QKVアテンション動作)は、「セルフアテンション」動作と呼ばれることがある。セルフアテンション動作は、たとえばセルフアテンションブロック240によって実行することができる。たとえば、第1の埋込みのセットは潜在的な埋込み204のセットであることができ、第2の埋込みのセットも潜在的な埋込み204のセットであることができ、セルフアテンションブロック240は、潜在的な埋込み204のセットに対するセルフアテンションを使用して、潜在的な埋込み204のセット内の各潜在的な埋込みを更新することができる。いくつかの実装形態では、セルフアテンションブロック240は、潜在的な埋込み204のセットに対するセルフアテンションを使用して、潜在的な埋込み204のセット内の各潜在的な埋込みを繰り返し更新することができる。
【0093】
いくつかの実装形態では、第1の埋込みのセットと第2の埋込みのセットは、異なる埋込みのセットにすることができる。そのような場合、アテンション動作(たとえば、QKVアテンション動作)は、「クロスアテンション」動作と呼ばれることがある。クロスアテンション動作は、たとえば、エンコーダ210に含まれるクロスアテンションブロック230および出力ブロック250によって実行することができる。
【0094】
特定の例として、エンコーダ210に含まれるクロスアテンションブロック230の場合、第1の埋込みのセットは、潜在的な埋込み204のセット(たとえば、ランダムに初期化される、または以前に学習された値に初期化される)であり得、第2の埋込みのセットは、入力としてニューラルネットワーク250に提供されるデータ要素埋込み202であり得る。クロスアテンションブロック230は、データ要素埋込み202のセット内の一部またはすべてのデータ要素埋込みに対するクロスアテンションを使用して、潜在的な埋込み204のセット内の各潜在的な埋込みを更新することができる。
【0095】
別の特定の例として、出力ブロック250の場合、第1の埋込みのセットはクエリ埋込み206のセットであり得、第2の埋込みのセットはセルフアテンションブロック240によって生成された潜在的な埋込み204のセットであり得る。出力ブロック250は、潜在的な埋込み204のセットに対するクロスアテンションを使用して、クエリ埋込み206のセット内の各クエリ埋込みを更新することができる。言い換えれば、出力ブロック250は、潜在的な埋込み204のセットに対するクエリ埋込み206のセット内の対応するクエリ埋込みのクロスアテンションによって、ネットワーク出力208の各次元を生成することができる。潜在的な埋込み204のセットに対するクエリ埋込み206のセット内の各クエリ埋込みをクロスアテンディングさせた後、出力ブロック250は、クエリ埋込み206のセット内のクエリ埋込みごとのそれぞれの次元を含む完全なニューラルネットワーク出力208を生成することができる。
【0096】
ニューラルネットワークシステム100が、第2の異なるクエリ埋込み206のセット(たとえば、異なる数のクエリベクトル、異なる空間位置、および/または異なるモダリティ特有の特徴を指定する)を取得する場合、ニューラルネットワークシステム100は、第2の異なるクエリ埋込み206のセット内の各クエリ埋込みに対応するネットワーク出力208を生成するために、ネットワーク入力202および第2のクエリ埋込み206のセットを上述のように処理することができる。したがって、クエリ埋込み206を修正することによって、ニューラルネットワークシステム100は、ネットワーク出力208の次元数および/またはニューラルネットワーク250によって実行される予測タスクを柔軟に修正することができる。
【0097】
次に、ニューラルネットワーク出力208を生成するためにニューラルネットワークシステム100を使用する例示的なプロセスをより詳細に説明する。
【0098】
図3は、ニューラルネットワークシステムを使用してニューラルネットワーク出力を生成するための例示的なプロセス300の流れ図である。便宜上、プロセス300は、1つまたは複数の位置に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。たとえば、ニューラルネットワークシステム、たとえば図1のニューラルネットワークシステム100、または図2のニューラルネットワークシステム100は、本明細書に従って適切にプログラムされると、プロセス300を実行することができる。
【0099】
本システムは、(i)ニューラルネットワークへのネットワーク入力と、(ii)ネットワーク入力を処理することによってニューラルネットワークによって実行される予測タスクを集合的に定義するクエリ埋込みのセットとを取得する(302)。いくつかの実装形態では、ネットワーク入力は、一例として、ビデオデータ、オーディオデータ、およびラベルデータなどのマルチモーダルデータを含むことができる。一般に、図6Aに示されるように、ネットワーク入力は、任意の適切なタイプのデータまたはそれらの組合せを含むことができる。
【0100】
システムは、クエリ埋込みのセット内の各クエリ埋込みに対応するそれぞれの次元を備えるネットワーク出力を生成するために、ニューラルネットワークを使用してネットワーク入力を処理する(304)。
【0101】
たとえば、本システムは、ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、ニューラルネットワークのエンコーダブロックを使用してネットワーク入力を処理することができる。
【0102】
次いで、システムは、潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンション(たとえば、クエリ-キー-値アテンションなど)によってネットワーク出力の各次元を生成する、クロスアテンションブロック、たとえば上述の出力ブロック250を使用して、(i)潜在的な埋込みのセット、および(ii)クエリ埋込みのセットを処理することができる。たとえば、図2を参照して上述したように、システムは、(i)クエリ埋込み、および(ii)潜在的な埋込みに基づいて、潜在的な埋込みごとにそれぞれのアテンション重みを生成することと、潜在的な埋込みのアテンション重みに基づいて、クエリ埋込みに対応するネットワーク出力の次元を生成することとを行うことができる。特に、システムは、潜在的な埋込みの値埋込みを生成するために、各潜在的な埋込みを処理することができる。次いで、システムは、アテンションの重みを使用して値埋込みを組み合わせることができる。最後に、システムは、アテンション重みを使用して値埋込みを組み合わせた結果に少なくとも部分的に基づいて、クエリ埋込みに対応するネットワーク出力の次元を生成することができる。
【0103】
いくつかの実装形態では、クエリ埋込みにより、ネットワーク入力内のそれぞれの空間位置を定義することができる。そのような場合、クエリ埋込みに対応するネットワーク出力の次元によって、ネットワーク入力の空間位置に関連するそれぞれの予測を定義することができる。たとえば、図4に示されるように、ネットワーク入力は100×100ピクセルのサイズを有する画像にすることができ、各クエリ埋込みは画像内の対応するピクセルのそれぞれの空間位置(たとえば、x座標およびy座標)を定義することができる。予測タスクは、たとえば、元の画像を再構築することなどであり得る。クエリ埋込みのセットは、10,000個のクエリベクトル、たとえば画像内のピクセルごとのベクトルを含むことができる。クエリ埋込みに対応するネットワーク出力の次元は、ネットワーク入力の空間位置に関連するそれぞれの予測、たとえばクエリ埋込みによって定義される画像内のピクセルの再構築を定義することができる。
【0104】
いくつかの実装形態では、クエリ埋込みは、ネットワーク入力内のそれぞれの空間位置からの1つまたは複数の入力特徴を含むことができる。そのような場合、クエリ埋込みに対応するネットワーク出力の次元によって、ネットワーク入力内の空間位置に関連するそれぞれの予測を定義することができる。たとえば、図5に示されるように、オプティカルフロー予測タスクの場合、各クエリ埋込みは、ネットワーク入力内のそれぞれの空間位置における1つまたは複数の入力特徴、たとえば、画像内のピクセルの空間位置(たとえば、x座標およびy座標)およびそのピクセルに関連付けられる1つまたは複数の入力特徴を指定することができる。たとえば、ネットワーク入力において、対応するピクセルが(チャネル次元Cにおいて連結される)入力配列の同じ(M)次元によってインデックス付けされるように、2つの画像を連結することができ、別の手法では、2つの画像が連結されず、次いで、ネットワーク入力と、任意でクエリ埋込みにもまた、時間エンコーディング特徴が提供されてもよい。一例では、画像内のピクセルの入力特徴は、ベクトルに連結されたそのピクセルの周囲の画像のパッチとすることができる。画像内のそのピクセルを定義するクエリ埋込みに対応するネットワーク出力の次元は、たとえば、画像内のそのピクセルの予測フローベクトルを指定することができる。
【0105】
いくつかの実装形態では、クエリ埋込みはネットワーク入力のモダリティを定義することができる。マルチモーダル入力、たとえば、ビデオ、オーディオ、およびラベルを含む入力の場合、3つのモダリティすべてを、クエリ埋込みのセット内の各クエリ埋込みによって指定することができる。一般に、クエリ埋込みは様々な異なる方法で表すことができる。特定の例として、クエリ埋込みはワンホット埋込みとして表すことができる。
【0106】
いくつかの実装形態では、クエリ埋込みのセットは、複数の予測タスクを集合的に定義することができ、たとえば、各クエリ埋込みはそれぞれの予測タスクを定義することができる。そのような場合、クエリ埋込みに対応するネットワーク出力の次元によって、クエリ埋込みによって指定された予測タスクの予測出力を定義することができる。予測タスクは、たとえば、分類タスク、回帰タスク、セグメンテーションタスク、自動エンコーディングタスク、または他の適切なタスクを含むことができる。たとえば、図5に示されるように、埋め込まれた「task_id」は、特定の予測タスクを指定することができる。8つの予測タスクの場合、クエリ埋込みのセットは、それぞれが特定の予測タスクを指定する8つのクエリ埋込みを含むことができる。
【0107】
例示的なクエリ埋込みおよび予測タスクについては、図4および図5を参照して以下でより詳細に説明する。
【0108】
図4は、ニューラルネットワーク出力408を生成するために、ニューラルネットワークシステム(たとえば、図1のシステム100、または図2のシステム100)によって使用され得る、例示的なクエリ埋込み400を示している。
【0109】
図4に示されるように、ネットワーク入力402は画像とすることができる。ニューラルネットワークシステムに含まれるニューラルネットワークによって実行される予測タスクは、自動エンコーディングタスク、たとえば元の画像402の再構成であり得る。この場合、クエリ埋込みのセット内の各クエリ埋込みは、画像402内の対応するピクセルのそれぞれの空間位置(たとえば、x座標およびy座標)を定義することができる。画像402は、100×100ピクセルのサイズを有することができ、クエリ埋込みのセットは、10,000のクエリベクトル、たとえば画像402内のピクセルごとのベクトルを含むことができる。
【0110】
図1および図2を参照して上述したように、ニューラルネットワークは、エンコーダ410および出力ブロック420を含むことができる。エンコーダ410は、画像402の表現を潜在的な埋込み404のセットとして生成するために、画像402を処理することができる。出力ブロック420は、潜在的な埋込み404のセットに対する対応するクエリ埋込みのクロスアテンションによってネットワーク出力408を生成するために、潜在的な埋込み404のセットおよびクエリ埋込み404のセットを処理することができる。ネットワーク出力408は、たとえば、画像402の再構築であり得、各ピクセルは、クエリ埋込み400のセット内の対応するクエリ埋込みによって表される。
【0111】
図5は、クエリ埋込み500の別の例を示している。一般に、様々なセマンティクスを有するネットワーク出力を生成するために、出力固有の特徴を使用してクエリ埋込みを構築することができる。
【0112】
たとえば、ネットワーク出力が単語のシーケンスである場合、クエリ埋込みは位置埋込みを含むことができ、各位置埋込みは単語のシーケンス内のそれぞれの単語の位置を指定する。特定の例として、位置埋込みは、単語のシーケンス内の単語のインデックスに基づくことができる。別の例では、ネットワーク出力がピクセルの2次元配列である場合、位置埋込みは、ピクセルの配列内のピクセルのx-y座標に基づくことができる。さらに別の例では、ネットワーク出力が点群である場合、位置埋込みは、点群内の点のx-y-z座標に基づくことができる。いくつかの実装形態では、位置埋込みは、たとえば、あらかじめ定義されたターゲット周波数範囲にわたって対数線形に間隔をあけられた周波数帯域を有するフーリエ特徴位置エンコーディングであり得る。いくつかの実装形態では、「生の」座標、たとえばx、y、またはz、およびフーリエ特徴の両方が含まれ得る。
【0113】
いくつかの実装形態では、ターゲット出力の入力特徴はまた、単独で、または位置特徴と一緒に、クエリを実行するために使用することができる。たとえば、ネットワーク出力が画像である場合、画像内のピクセルの入力特徴は、たとえば、ベクトルに連結されたそのピクセルの周囲の画像のパッチであり得る。別の例では、出力がオーディオ波形である場合、オーディオ波形における特定の時点の入力特徴は、その時点における波形の振幅であり得る。
【0114】
マルチタスクまたはマルチモーダル設定の場合、タスクまたはモダリティごとにそれぞれ埋込みを使用することができる。分類タスクでは、単一の学習された埋込みを使用することができる。特に、図1を参照して上述したように、トレーニングエンジンはニューラルネットワークをトレーニングすることができる。トレーニングの一部として、トレーニングエンジンは、たとえば、ニューラルネットワークを通じて損失の勾配を埋込みに逆伝播することによって、ニューラルネットワークと同時に埋込みをトレーニングすることができる。マルチモーダル自動エンコーディングなどの異種出力を伴うタスクの場合、一部のクエリに固有の特徴(たとえば、x座標およびy座標で表される空間位置)をモダリティ埋込みと組み合わせることができる。マルチモーダル自動エンコーディングの場合、各クエリ埋込みは、再構築することが望ましいモダリティを指定することができる。
【0115】
図6は、ニューラルネットワークシステム(たとえば、図1のシステム100、または図2のシステム100)によって処理され得る入力の例示的なモダリティ600を示している。このシステムは、マルチタスク言語理解、オプティカルフローなどの高密度視覚タスク、およびビデオ+オーディオ+クラス自動エンコーディングなどのハイブリッド高密度/まばらなマルチモーダルタスクなどを含む、様々な入出力スペースを有するドメインにおいて使用することができる。いくつかの実装形態では、入力は、たとえば非常に大きい入力および/または出力のサイズをそれぞれ縮小するために、前処理および/または後処理することができる。最後の2つの列は、入力の次元数とそれぞれの出力の次元数を示している。
【0116】
図7Aおよび図7Bは、例示的なマルチモーダル結果700、たとえばオーディオ-ビデオ-ラベルの自動エンコーディングを示している。入力は左側に示され、再構成は右側に示されている。ニューラルネットワークシステムは、非常に異なる特性を有するモダリティを共同で表現し、実質的に高い予測精度を達成することができる。図7Bにおいて、「PSNR」は、ピーク信号対雑音比を指す。
【0117】
本明細書では、システムおよびコンピュータプログラムコンポーネントに関連して「構成された(configured)」という用語を使用する。1つまたは複数のコンピュータからなるシステムが特定の動作またはアクションを実行するように構成されているということは、システムに、動作中にその動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがインストールされていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されているということは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0118】
本明細書で説明される主題の実施形態および機能動作は、デジタル電子回路、有形に具体化されたコンピュータソフトウェアまたはファームウェア、本明細書で開示された構造およびそれらの構造的等価物を含むコンピュータハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行またはデータ処理装置の動作の制御のために有形の非一時的ストレージ媒体上にエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムアクセスメモリデバイスまたはシリアルアクセスメモリデバイス、あるいはそれらの1つまたは複数の組合せであり得る。代替的または追加的に、プログラム命令は、データ処理装置による実行のために適切なレシーバ装置に送信するための情報をエンコードするために生成される、人工的に生成された伝播信号、たとえば機械生成された電気信号、光信号、または電磁信号上にエンコードされ得る。
【0119】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。本装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路であってもよく、またはさらにそれを含んでもよい。本装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、あるいはそれらのうちの1つまたは複数の組合せを構成するコードを任意で含むことができる。
【0120】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとして参照あるいは説明されることもあるコンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語、あるいは宣言型言語または手続き型言語を含む、あらゆる形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、あるいはコンピューティング環境における使用に適したモジュール、コンポーネント、サブルーチン、または他のユニットとしてなど、あらゆる形式で展開することができる。プログラムは、ファイルシステム内のファイルに対応し得るが、対応しなくてもよい。プログラムは、他のプログラムまたはデータを保持するファイルの一部、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプト、当のプログラム専用の単一ファイル、あるいは複数の調整されたファイル、たとえば、1つまたは複数のモジュール、サブプログラム、あるいはコードの一部を記憶するファイルに記憶することができる。コンピュータプログラムは、1台のコンピュータ、あるいは1つのサイトに配置されている、または複数のサイトに分散されデータ通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開することができる。
【0121】
本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされたソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用されている。一般に、エンジンは1つまたは複数のソフトウェアモジュールあるいはコンポーネントとして実装され、1つまたは複数の位置にある1つまたは複数のコンピュータにインストールされる。場合によっては、1つまたは複数のコンピュータが特定のエンジン専用になることがあり、場合によっては、複数のエンジンを当の1つまたは複数のコンピュータにインストールして実行することもできる。
【0122】
本明細書で説明するプロセスおよび論理フローは、機能を実行するために、入力データ上で操作して出力を生成することによって1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローは、たとえばFPGAまたはASICなどの専用論理回路によって、あるいは専用論理回路と1つまたは複数のプログラムされたコンピュータの組合せによって実行することもできる。
【0123】
コンピュータプログラムの実行に適したコンピュータは、汎用または専用のマイクロプロセッサあるいはその両方、または他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読取り専用メモリ、ランダムアクセスメモリ、またはその両方から命令とデータを受信する。コンピュータの必須要素は、命令を実行または実行するための中央処理装置と、命令とデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置とメモリは、専用論理回路によって補完したり、専用論理回路に組み込んだりすることができる。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気、光磁気ディスク、または光ディスクを含むか、またはそれらからデータを受信するか、またはそれらにデータを転送するか、あるいはその両方のために動作可能に結合される。しかしながら、コンピュータにそのようなデバイスが搭載されていなくてもよい。さらに、コンピュータは、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、ポータブルストレージデバイス、たとえば、ほんの数例を挙げると、ユニバーサルシリアルバス(USB)フラッシュドライブなどの別のデバイスに埋め込むこともできる。
【0124】
コンピュータプログラム命令およびデータを記憶するために適したコンピュータ可読媒体は、例として、たとえばEPROM、EEPROM、フラッシュメモリデバイスなどの半導体メモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクなどの、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。
【0125】
ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにキーボード、およびユーザがコンピュータに入力を提供できるマウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装することができる。ユーザとの対話を提供するために、他の種類のデバイスを使用することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚的フィードバック、聴覚的フィードバック、触覚的フィードバックなど、任意の形式の感覚的フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力など、あらゆる形式で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信したリクエストに応じて、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス、たとえばメッセージングアプリケーションを実行しているスマートフォンに送信し、代わりにユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0126】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば、機械学習のトレーニングまたは本番の一般的で計算集約的な部分、すなわち推論、ワークロードを処理するための専用ハードウェアアクセラレータユニットを含むことができる。
【0127】
機械学習モデルは、TensorFlowフレームワークなどの機械学習フレームワークを使用して実装および展開することができる。
【0128】
本明細書で説明される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含むコンピューティングシステム、または、たとえばアプリケーションサーバなどのミドルウェアコンポーネントを含むコンピューティングシステム、または、たとえば、グラフィカルユーザインターフェース、ウェブブラウザ、またはユーザが本明細書で説明する主題の実装と対話できるアプリを備えたクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピューティングシステム、あるいは1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて、実装することができる。システムのコンポーネントは、たとえば、通信ネットワークなどのデジタルデータ通信の任意の形式または媒体によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットを含む。
【0129】
コンピューティングシステムはクライアントとサーバを含むことができる。クライアントとサーバは通常、互いにリモートにあり、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、相互にクライアントとサーバの関係を有するコンピュータプログラムによって発生する。いくつかの実施形態では、サーバは、たとえばクライアントとして機能するデバイスと対話するユーザにデータを表示し、ユーザからのユーザ入力を受信する目的で、データ、たとえばHTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、たとえばユーザ対話の結果は、デバイスからサーバにおいて受信することができる。
【0130】
本明細書は多くの具体的な実装形態の詳細を含んでいるが、これらは、発明の範囲または請求され得る特許請求の範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において別個の実施形態の文脈において説明される特定の特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈において説明される様々な特徴は、複数の実施形態で別々に、または任意の適切なサブコンビネーションで実装することもできる。さらに、特徴は特定の組合せで機能するものとして上で説明されており、最初はそのように特許請求の範囲で請求されている場合もあるが、場合によっては、特許請求の範囲で請求された組合せからの1つまたは複数の特徴を当の組合せから削除することができ、特許請求の範囲で請求された組合せはサブコンビネーションまたはサブコンビネーションのバリエーションを対象とする場合がある。
【0131】
同様に、動作は特定の順序で図面に示され、特許請求の範囲に記載されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序でまたは順番通りに実行されること、あるいは示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスクと並列処理が有利になる場合がある。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に統合することも、複数のソフトウェア製品にパッケージ化することもできることを理解されたい。
【0132】
主題の特定の実施形態について説明した。他の実施形態は、以下の特許請求の範囲内に含まれる。たとえば、特許請求の範囲に記載されたアクションは、異なる順序で実行されても、依然として所望の結果を達成することができる。一例として、添付の図面に示されているプロセスは、所望の結果を達成するために、必ずしも示されている特定の順序または順番通りであることを必要とするわけではない。場合によっては、マルチタスクと並列処理が有利になる場合がある。
【符号の説明】
【0133】
100 ニューラルネットワークシステム
102 ニューラルネットワーク入力
104 潜在的な埋込み
106 クエリ埋込み
108 ネットワーク出力
110 エンコーダブロック
120 出力ブロック
150 ニューラルネットワーク
160 ニューラルネットワーク
202 ネットワーク入力
202 2D入力配列
202 データ要素埋込み
204 潜在的な埋込み
206 クエリ埋込み
208 ネットワーク出力
210 エンコーダブロック
230 クロスアテンションブロック
240 セルフアテンションブロック
250 ニューラルネットワーク
250 出力ブロック
300 プロセス
400 クエリ埋込み
402 ネットワーク入力
402 画像
404 潜在的な埋込み
408 ニューラルネットワーク出力
410 エンコーダ
420 出力ブロック
500 クエリ埋込み
600 モダリティ
700 例示的なマルチモーダル結果
図1
図2
図3
図4
図5
図6
図7A
図7B
【手続補正書】
【提出日】2023-12-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つまたは複数のデータ処理装置によって実行される方法であって、
(i)ニューラルネットワークへのネットワーク入力と、(ii)前記ネットワーク入力を処理することによって前記ニューラルネットワークによって実行される予測タスクを集合的に定義するクエリ埋込みのセットとを取得するステップと、
前記クエリ埋込みのセット内の各クエリ埋込みに対応するそれぞれの次元を備えるネットワーク出力を生成するために、前記ニューラルネットワークを使用して前記ネットワーク入力を処理するステップであって、
前記ネットワーク入力の表現を潜在的な埋込みのセットとして生成するために、前記ニューラルネットワークのエンコーダブロックを使用して前記ネットワーク入力を処理するステップと、
前記潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによって前記ネットワーク出力の各次元を生成するクロスアテンションブロックを使用して、(i)前記潜在的な埋込みのセットと、(ii)前記クエリ埋込みのセットとを処理するステップと
を備える、ステップと
を備える、方法。
【請求項2】
前記クエリ埋込みのうちの1つまたは複数の各々について、
前記クエリ埋込みが前記ネットワーク入力内のそれぞれの空間位置を定義し、
前記クエリ埋込みに対応する前記ネットワーク出力の前記次元が、前記ネットワーク入力内の前記空間位置に関連するそれぞれの予測を定義する、請求項1に記載の方法。
【請求項3】
前記クエリ埋込みのうちの1つまたは複数の各々について、
前記クエリ埋込みが、前記ネットワーク入力内のそれぞれの空間位置からの1つまたは複数の入力特徴を備え、
前記クエリ埋込みに対応する前記ネットワーク出力の前記次元が、前記ネットワーク入力内の前記空間位置に関連するそれぞれの予測を定義する、請求項1に記載の方法。
【請求項4】
1つまたは複数のクエリ埋込みの各々について、
前記クエリ埋込みが前記ネットワーク入力のモダリティを定義する、請求項1に記載の方法。
【請求項5】
前記クエリ埋込みのセットが複数の予測タスクを集合的に定義し、前記クエリ埋込みのうちの1つまたは複数の各々について、
前記クエリ埋込みが、前記複数の予測タスクからそれぞれの予測タスクを指定し、
前記クエリ埋込みに対応する前記ネットワーク出力の前記次元が、前記クエリ埋込みによって指定された前記予測タスクの予測出力を定義する、請求項1に記載の方法。
【請求項6】
前記複数の予測タスクが、分類タスク、回帰タスク、セグメンテーションタスク、または自動エンコーディングタスクのうちの1つまたは複数を備える、請求項5に記載の方法。
【請求項7】
前記潜在的な埋込みのセットに対する対応するクエリ埋込みのクロスアテンションによって前記ネットワーク出力の次元を生成するステップが、
(i)前記クエリ埋込みと、(ii)前記潜在的な埋込みとに基づいて、潜在的な埋込みごとにそれぞれのアテンション重みを生成するステップと、
前記潜在的な埋込みに対する前記アテンション重みに基づいて、前記クエリ埋込みに対応する前記ネットワーク出力の前記次元を生成するステップと
を備える、請求項1に記載の方法。
【請求項8】
前記潜在的な埋込みに対する前記アテンション重みに基づいて、前記クエリ埋込みに対応する前記ネットワーク出力の前記次元を生成するステップが、
前記潜在的な埋込みの値埋込みを生成するために、各潜在的な埋込みを処理するステップと、
前記アテンション重みを使用して前記値埋込みを組み合わせるステップと、
前記アテンション重みを使用して前記値埋込みを組み合わせた結果に少なくとも部分的に基づいて、前記クエリ埋込みに対応する前記ネットワーク出力の前記次元を生成するステップと
を備える、請求項7に記載の方法。
【請求項9】
前記クロスアテンションが、クエリ-キー-値のアテンションである、請求項8に記載の方法。
【請求項10】
前記クエリ埋込みのセット内のクエリ埋込みの数が、前記潜在的な埋込みのセット内の潜在的な埋込みの数よりも大きい、請求項1に記載の方法。
【請求項11】
前記クエリ埋込みのセット内の前記クエリ埋込みの数が、前記潜在的な埋込みのセット内の前記潜在的な埋込みの数より少なくとも2倍大きい、請求項10に記載の方法。
【請求項12】
前記潜在的な埋込みのセット内の潜在的な埋込みの数が事前定義されており、前記クエリ埋込みのセット内のクエリ埋込みの数が可変であり、前記潜在的な埋込みのセット内の前記潜在的な埋込みの数とは無関係である、請求項1に記載の方法。
【請求項13】
前記ネットワーク入力がマルチモーダルデータを備える、請求項1に記載の方法。
【請求項14】
前記潜在的な埋込みのセットを初期化するステップをさらに備え、
前記ネットワーク入力がデータ要素埋込みのセットを備え、
前記ニューラルネットワークの前記エンコーダブロックが、
前記データ要素埋込みのセット内の前記データ要素埋込みの一部またはすべてに対するアテンションを使用して、前記潜在的な埋込みのセット内の各潜在的な埋込みを更新するステップを備える動作をそれぞれが実行する1つまたは複数のクロスアテンションブロックを備え、
前記ニューラルネットワークの前記エンコーダブロックが、
前記潜在的な埋込みのセットに対するアテンションを使用して、前記潜在的な埋込みのセット内の各潜在的な埋込みを更新するステップを備える動作をそれぞれが実行する1つまたは複数のセルフアテンションブロックを備える、請求項1に記載の方法。
【請求項15】
前記潜在的な埋込みのセット内の潜在的な埋込みの数が、前記データ要素埋込みのセット内のデータ要素埋込みの数よりも少ない、請求項14に記載の方法。
【請求項16】
各データ要素埋込みが、前記ネットワーク入力内のそれぞれの空間位置に対応し、前記空間位置における前記ネットワーク入力の特徴に基づく特徴埋込みを備える、請求項14に記載の方法。
【請求項17】
各データ要素埋込みが、前記ネットワーク入力内のそれぞれの空間位置に対応し、前記空間位置を特徴付ける位置埋込みを備える、請求項14に記載の方法。
【請求項18】
各データ要素埋込みが、前記データ要素埋込みに対応するモダリティを定義するモダリティ埋込みを備える、請求項14に記載の方法。
【請求項19】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに通信可能に結合された1つまたは複数のストレージデバイスと
を備え、前記1つまたは複数のストレージデバイスが命令を記憶し、前記命令は、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から18のいずれか一項に記載の方法を実行させる、システム。
【請求項20】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から18のいずれか一項に記載の方法を実行させる命令を記憶する、1つまたは複数のコンピュータストレージ媒体。
【国際調査報告】