(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】段階的に展開されたノイズ除去ニューラルネットワーク
(51)【国際特許分類】
G06N 3/08 20230101AFI20241016BHJP
G06N 3/0455 20230101ALI20241016BHJP
【FI】
G06N3/08
G06N3/0455
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024521003
(86)(22)【出願日】2022-10-06
(85)【翻訳文提出日】2024-06-04
(86)【国際出願番号】 EP2022077806
(87)【国際公開番号】W WO2023057565
(87)【国際公開日】2023-04-13
(32)【優先日】2021-10-06
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-10-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】517030789
【氏名又は名称】ディープマインド テクノロジーズ リミテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ニコライ・サヴィノフ
(72)【発明者】
【氏名】ジュンヨン・チュン
(72)【発明者】
【氏名】ミコライ・ビンコウスキー
(72)【発明者】
【氏名】アーロン・ヘラルト・アントニウス・ファン・デン・オールト
(72)【発明者】
【氏名】エリック・コンラッド・エルセン
(57)【要約】
非自己回帰ニューラルネットワークを使用して出力シーケンスを生成するための、コンピュータストレージ媒体上にエンコードされたコンピュータプログラムを含む方法、システム、および装置。
【特許請求の範囲】
【請求項1】
デコーダニューラルネットワークを備えるニューラルネットワークシステムをトレーニングする方法であって、前記デコーダニューラルネットワークは、複数の出力位置の各々における出力トークンのボキャブラリからのそれぞれの出力トークンを備える現在の出力シーケンスを入力として受信することと、前記複数の出力位置の各々について、出力トークンの前記ボキャブラリ内の出力トークンごとのそれぞれのスコアを備えるデコーダ出力を生成するために、コンテキスト入力に条件付けされながら前記現在の出力シーケンスを処理することとを行うように構成され、前記方法は、
1つまたは複数のトレーニング例のバッチを取得するステップであって、各トレーニング例が、トレーニングコンテキスト入力と、前記トレーニングコンテキスト入力のターゲット出力シーケンスとを備える、ステップと、
前記バッチ内のトレーニング例ごとに、
前記出力シーケンス内の1つまたは複数のトークンの各々について、前記出力シーケンス内の前記出力トークンを前記ボキャブラリからランダムに選択されたトークンに置き換えることによって、前記ターゲット出力シーケンスから破損した出力シーケンスを生成するステップと、
1回または複数回の更新反復の各々において、
前記デコーダニューラルネットワークが前記トレーニングコンテキスト入力に基づいて条件付けされる間、前記デコーダニューラルネットワークを使用して前記更新反復の時点で前記破損した出力シーケンスを処理して、前記更新反復の時点で前記破損した出力シーケンスのデコーダ出力を生成するステップと、
前記複数の出力位置の各々について、前記破損した出力シーケンスの前記デコーダ出力を使用して出力トークンの前記ボキャブラリからトークンを選択することによって、前記破損した出力シーケンスを更新するステップと
によって、前記破損した出力シーケンスを更新するステップと、
前記デコーダニューラルネットワークが前記トレーニングコンテキスト入力に基づいて条件付けされる間、前記デコーダニューラルネットワークを使用して、前記最後の更新反復後に前記更新された破損した出力シーケンスを処理して、前記更新された破損した出力シーケンスのデコーダ出力を生成するステップと、
トレーニング例ごとに、前記ターゲット出力シーケンスに対する前記最後の更新反復後の前記更新された破損した出力シーケンスの前記デコーダ出力の品質を測定する第1の項を含む損失関数の前記デコーダニューラルネットワークの前記パラメータに関する勾配を決定するステップと、
前記勾配を使用して前記デコーダニューラルネットワークの前記パラメータを更新するステップと
を備える、方法。
【請求項2】
更新反復が1回だけ実行される、請求項1に記載の方法。
【請求項3】
前記第1の項が、トレーニング例ごとに、および出力位置ごとに、前記ターゲット出力シーケンス内の前記出力位置において前記出力トークンに、前記更新された破損した出力シーケンスに対する前記デコーダ出力によって割り当てられた前記スコアの対数を測定する、請求項1または2に記載の方法。
【請求項4】
前記損失関数が、更新反復ごとに、前記ターゲット出力シーケンスに対する前記更新反復の時点で前記破損した出力シーケンスに対する前記デコーダ出力の品質をトレーニング例ごとに測定するそれぞれの第2の項を含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記第2の項が、トレーニング例ごとに、および出力位置ごとに、前記ターゲット出力シーケンス内の前記出力位置における前記出力トークンに、前記更新反復の時点で前記破損した出力シーケンスに対する前記デコーダ出力によって割り当てられた前記スコアの対数を測定する、請求項4に記載の方法。
【請求項6】
前記出力シーケンス内の1つまたは複数のトークンの各々について、前記出力シーケンス内の前記出力トークンを前記ボキャブラリからランダムに選択されたトークンに置き換えることによって、前記ターゲット出力シーケンスから破損した出力シーケンスを生成するステップが、
第1の分布から予想される破損割合値をサンプリングするステップと、
出力位置ごとに、前記予想される破損割合を使用して、前記ターゲット出力シーケンス内の前記出力位置において前記出力トークンを置き換えるかどうかを決定するステップと、
前記出力トークンを置き換えると決定された出力位置ごとに、
前記ボキャブラリからランダムなトークンをサンプリングするステップと、
前記出力位置における前記出力トークンを前記ボキャブラリから前記サンプリングされたランダムなトークンと置き換えるステップと
を備える、請求項1から5のいずれか一項に記載の方法。
【請求項7】
出力位置ごとに、前記予想される破損割合を使用して、前記出力位置において前記出力トークンを置き換えるかどうかを決定するステップが、
前記予想される破損値によってパラメータ化されたベルヌーイ分布から前記出力位置の変数をサンプリングするステップを備える、請求項6に記載の方法。
【請求項8】
前記複数の出力位置の各々について、前記破損した出力シーケンスの前記デコーダ出力を使用して出力トークンの前記ボキャブラリからトークンを選択することによって前記破損した出力シーケンスを更新するステップが、出力位置ごとに、
前記出力位置の前記それぞれのスコアに従って前記ボキャブラリから出力トークンをサンプリングするステップを備える、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記ニューラルネットワークシステムが、前記コンテキスト入力のエンコードされた表現を生成するために前記コンテキスト入力を処理するように構成されたエンコーダニューラルネットワークを備え、トレーニング例ごとに、前記デコーダニューラルネットワークが、前記エンコーダニューラルネットワークによって生成された前記トレーニングコンテキスト入力のエンコードされた表現に条件付けされ、前記方法が、
前記損失関数の前記エンコーダニューラルネットワークの前記パラメータに関して勾配を決定するステップと、
前記勾配を使用して前記エンコーダニューラルネットワークの前記パラメータを更新するステップと
をさらに備える、請求項1から8のいずれか一項に記載の方法。
【請求項10】
トレーニング後に、新しいコンテキスト入力を受信するステップと、
前記複数の出力位置の各々においてそれぞれの出力トークンを備える新しい出力シーケンスを生成するステップと、
複数の生成反復の各々において前記新しい出力シーケンスを更新するステップであって、各生成反復において、
前記デコーダニューラルネットワークが前記新しいコンテキスト入力に基づいて条件付けされている間に、前記新しい出力シーケンスを更新するために、前記デコーダニューラルネットワークを使用するステップを備える、ステップと、
前記複数の更新反復のうちの最後の生成反復の後に、前記新しい出力シーケンスから前記新しいコンテキスト入力に対する最終出力シーケンスを生成するステップと
をさらに備える、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記デコーダニューラルネットワークが前記新しいコンテキスト入力に基づいて条件付けされる間、前記デコーダニューラルネットワークを使用して前記新しい出力シーケンスを更新するステップが、
前記デコーダニューラルネットワークが前記新しいコンテキスト入力に基づいて条件付けされる間、前記デコーダニューラルネットワークを使用して、前記生成反復の時点で前記新しい出力シーケンスを処理して、前記新しい出力シーケンスのデコーダ出力を生成するステップと、
前記複数の出力位置のサブセットについて、前記新しい出力シーケンスに対する前記デコーダ出力を使用して、出力トークンの前記ボキャブラリからトークンを選択するステップと
を備える、請求項10に記載の方法。
【請求項12】
前記サブセットが適切なサブセットであり、前記方法が前記サブセット内の前記複数の出力位置をランダムに選択するステップをさらに備える、請求項11に記載の方法。
【請求項13】
前記サブセットが適切なサブセットではない、請求項11に記載の方法。
【請求項14】
前記新しい出力シーケンスに対する前記デコーダ出力を使用して、出力トークンの前記ボキャブラリからトークンを選択するステップが、温度調整されたスコアを生成し、前記温度調整されたスコアを使用して前記トークンをサンプリングするために、前記デコーダ出力内のそれぞれのスコアに温度値を適用するステップを備える、請求項11から13のいずれか一項に記載の方法。
【請求項15】
1つまたは複数のコンピュータによって実行される方法であって、
コンテキスト入力を受信するステップと、
複数の出力位置の各々において、それぞれの出力トークンを備える出力シーケンスを生成するステップであって、各出力トークンが出力トークンのボキャブラリから選択される、ステップと、
出力位置ごとに、出力トークンの前記ボキャブラリ内の出力トークンごとのそれぞれのスコアを備えるそれぞれのスコア分布を備えるデコーダ出力を生成するために、前記コンテキスト入力に基づいて条件付けされたデコーダニューラルネットワークを使用して前記出力シーケンスを処理するステップと、
前記デコーダ出力を使用して、出力位置ごとにトークンの前記ボキャブラリからそれぞれのトークンを選択することによって、前記出力シーケンスを更新するステップと、
複数の生成反復の各々において、
前記生成反復の時点の前記デコーダ出力を使用して、前記出力位置の適切なサブセットを選択するステップと、
前記デコーダ出力を更新するために前記コンテキスト入力に基づいて条件付けされる前記デコーダニューラルネットワークを使用して、前記生成反復の時点で前記出力シーケンスを処理するステップと、
前記デコーダ出力を更新した後、前記適切なサブセット内の前記出力位置の各々について、前記デコーダ出力を使用してトークンをサンプリングすることを備える一時的な出力シーケンスを生成するステップと、
一時的なデコーダ出力を生成するために、前記コンテキスト入力に基づいて条件付けされる前記デコーダニューラルネットワークを使用して前記一時的な出力シーケンスを処理するステップと、
前記適切なサブセット内にない出力位置ごとに、前記デコーダ出力を使用して前記ボキャブラリからトークンを選択するステップと、
前記適切なサブセット内の出力位置ごとに、前記一時的なデコーダ出力を使用して前記ボキャブラリからトークンを選択するステップと
によって、前記出力シーケンスを更新するステップと、
前記複数の更新反復のうちの最後の更新反復後の前記出力シーケンスから最終出力シーケンスを生成するステップと
を備える、方法。
【請求項16】
前記デコーダニューラルネットワークが、前記出力位置の前記それぞれのスコア分布を並行して生成する非自己回帰モデルである、請求項15に記載の方法。
【請求項17】
前記コンテキスト入力の1つまたは複数の埋め込みのシーケンスを含む前記コンテキスト入力のエンコードされた表現を生成するために、エンコーダニューラルネットワークを使用して前記コンテキスト入力を処理するステップをさらに備え、
前記デコーダニューラルネットワークが、前記エンコードされた表現に基づいて条件付けされる、請求項15または16に記載の方法。
【請求項18】
前記最終出力シーケンス内の出力トークンの予測数を表す予測ターゲット長を定義する長さ予測を生成するために、長さ予測ニューラルネットワークを使用して前記コンテキスト入力の前記1つまたは複数の埋め込みを処理するステップであって、前記エンコードされた表現が前記予測ターゲット長の埋め込みを含む、ステップをさらに備える、請求項17に記載の方法。
【請求項19】
出力シーケンスを生成するステップが、前記出力位置のうちの1つまたは複数のトークンの前記ボキャブラリからトークンをランダムにサンプリングするステップを備える、請求項15から18のいずれか一項に記載の方法。
【請求項20】
一時的な出力シーケンスを生成するステップが、前記適切なサブセットにない前記出力位置の各々について、前記デコーダ出力を使用して、または前記更新反復の時点の前記出力位置における前記トークンを、前記出力位置における前記トークンとして使用してトークンを選択するステップを備える、請求項15から19のいずれか一項に記載の方法。
【請求項21】
前記適切なサブセット内にない出力位置ごとに、前記デコーダ出力を使用して前記ボキャブラリからトークンを選択するステップが、前記デコーダ出力に従って、前記位置のargmaxトークンを選択するステップを備える、請求項15から20のいずれか一項に記載の方法。
【請求項22】
前記適切なサブセット内の出力位置ごとに、前記一時的なデコーダ出力を使用して前記ボキャブラリからトークンを選択するステップが、前記一時的なデコーダ出力に従って、前記位置のargmaxトークンを選択するステップを備える、請求項15から21のいずれか一項に記載の方法。
【請求項23】
a)前記トレーニングコンテキスト入力またはコンテキスト入力が、ある言語でテキストを定義するシーケンスであり、前記ターゲットまたは最終出力シーケンスが、前記テキストの別の言語への翻訳を表し、
b)前記トレーニングコンテキスト入力またはコンテキスト入力が、話された発話を表すシーケンスであり、前記ターゲットまたは最終出力シーケンスが、前記発話の転写であるテキストの一部を表し、
c)前記トレーニングコンテキスト入力またはコンテキスト入力が、自然言語でテキストまたはテキストの特徴を表すシーケンスであり、前記ターゲットまたは最終出力シーケンスが、前記自然言語で話されている前記テキストのオーディオを定義するデータであり、
d)前記トレーニングコンテキスト入力またはコンテキスト入力が、画像のピクセルを表すシーケンスであり、前記ターゲットまたは最終出力シーケンスが、前記画像のキャプションを表すテキストシーケンスであり、
e)前記トレーニングコンテキスト入力またはコンテキスト入力が、画像を生成するための条件付き入力を表すシーケンスであり、前記ターゲットまたは最終出力シーケンスが、前記条件付き入力に応じた画像のピクセルを表す、
請求項1から22のいずれか一項に記載の方法。
【請求項24】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータによって遂行されると、前記1つまたは複数のコンピュータに、請求項1から23のいずれか一項に記載のそれぞれの動作を実行させる命令を記憶する1つまたは複数のストレージデバイスと
を備える、システム。
【請求項25】
1つまたは複数のコンピュータによって遂行されると、前記1つまたは複数のコンピュータに、請求項1から23のいずれか一項に記載の方法の前記それぞれの動作を実行させる命令を記憶する1つまたは複数のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ニューラルネットワークを使用した入力の処理に関する。
【背景技術】
【0002】
ニューラルネットワークは、受信した入力に対する出力を予測するために1つまたは複数の非線形ユニットの層を使用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含んでいる。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータの各セットの現在値に従って、受信した入力から出力を生成する。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Kudoら、arXiv:1808.06226
【非特許文献2】Dosovitskiyら、arXiv:2010.11929
【非特許文献3】Vaswaniら、arXiv:1706.03762
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書は、非自己回帰ニューラルネットワークを使用して出力シーケンスを生成する、1つまたは複数の場所にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムについて説明する。
【0005】
特に、ニューラルネットワークは、現在の出力シーケンスを入力として受信するように構成されたデコーダニューラルネットワークを含む。
【0006】
現在の出力シーケンスは、複数の出力位置の各々における出力トークンのボキャブラリからのそれぞれの出力トークンを含む。
【0007】
デコーダニューラルネットワークは、複数の出力位置の各々について、出力トークンのボキャブラリ内の出力トークンごとのそれぞれのスコアを含むデコーダ出力を生成するために、コンテキスト入力に条件付けされながら現在の出力シーケンスを処理するように構成されている。
【0008】
したがって、システムは、各反復において、反復時点での現在の出力シーケンス内のトークンのうちの1つまたは複数を、デコーダニューラルネットワークによって生成されたスコアを使用して選択されたトークンに置き換えることによって、新しい出力シーケンスを反復的に生成するために、ニューラルネットワークを使用することができる。
【0009】
本明細書に記載される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装することができる。
【0010】
自己回帰(autoregressive: AR)モデルは、テキストおよび他のトークンのシーケンスを生成する際に優れた結果を示している。しかしながら、トレーニングの拡張性は非常に優れているが、サンプリングは多くの実際のアプリケーションにとって法外に遅い。さらに、ARモデルがシームレスに処理できる条件付けの種類には制限があり、左から右への制限により、部分的に書かれたテキストの下書きまたは他の不完全なシーケンスの「ギャップを埋める」ことが困難になる。最後に、ARモデルは、ネットワークアーキテクチャに因果関係があることを必要とし、テキストモデリングのために使用することができるニューラルネットワークアーキテクチャの種類が大幅に制限される。
【0011】
本明細書は、出力シーケンスを正確に生成するために非自己回帰ニューラルネットワークをトレーニングする方法と、出力シーケンスをデコードするためにトレーニングされたニューラルネットワークを使用する方法について説明する。ARベンチマークに後れを取り、実際に大規模なARモデルの蒸留を必要とする他の非自己回帰手法とは異なり、説明されている技法はAR手法より高速であり、シーケンス生成タスクにおいてAR手法と同等またはそれを超える結果を達成する。たとえば、機械翻訳タスクにおいて非ARモデル間で最先端のパフォーマンスを実現するために、説明されている技法を使用することができる。
【0012】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0013】
【
図1】例示的なシーケンス生成システムを示す図である。
【
図2】ニューラルネットワークシステムをトレーニングするための例示的なプロセスの流れ図である。
【
図3】単一の更新反復が実行される場合のニューラルネットワークシステムのトレーニングを示す図である。
【
図4】出力シーケンスを生成するための例示的なプロセスの流れ図である。
【
図5】後続の生成反復を実行するための例示的なプロセスの流れ図である。
【発明を実施するための形態】
【0014】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0015】
本明細書は、非自己回帰ニューラルネットワークを使用して出力シーケンスを生成する、1つまたは複数の場所にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムについて説明する。
【0016】
システムは、たとえば、テキスト、オーディオ、画像データなどの、様々なタイプの連続出力のいずれかを生成するように構成することができる。
【0017】
一例として、システムはリクエストの一部としてコンテキスト入力を受信し、リクエストに対する応答である出力シーケンスを生成することができる。特定の例として、システムはダイアログシステムの一部であり、コンテキストデータはダイアログシステムのユーザによって提出されたプロンプトであり得る。
【0018】
別の例として、コンテキスト入力が単語のシーケンス、すなわち1つの言語、たとえば自然言語によるテキストである場合、ニューラルネットワークによって生成される出力シーケンスは、入力テキストの別の言語への翻訳、たとえば自然言語への翻訳、すなわち翻訳である単語のシーケンスであり得る。
【0019】
別の例として、コンテキスト入力が、話された発話を表すシーケンス(たとえば、時間周波数領域表現を使用してデジタル化されたオーディオ波形など)である場合、ニューラルネットワークによって生成される出力シーケンスは、発話のトランスクリプトであるテキストの一部(すなわち、単語のシーケンス)であり得る。
【0020】
別の例として、コンテキストデータはプロンプトであり得、出力シーケンスはプロンプトに続くテキストであり得、すなわち、ニューラルネットワークは条件付きテキスト生成タスクを実行するようになる。
【0021】
別の例として、コンテキスト入力は、自然言語のテキストまたは自然言語のテキストの特徴であり得、出力シーケンスは、自然言語で話されているテキストのオーディオを定義するスペクトログラムまたは他のデータである(後で説明するトークンがオーディオフレームを表し得る場合)。
【0022】
別の例として、コンテキスト入力は画像、すなわち画像ピクセルまたは画像ピクセルのパッチの強度値であり得、出力シーケンスは画像のキャプションを表すテキストシーケンスである。
【0023】
別の例として、コンテキスト入力は、画像を生成するための任意の条件付き入力、たとえば、テキスト入力または条件付き画像の表現であり得、ターゲットまたは最終出力シーケンスは、条件付き入力に従った画像のピクセルを表す(後で説明するトークンが個々のピクセル値、または画像パッチなどのピクセルのグループを表し得る場合)。これは、たとえば、テキストによって説明されている画像、または条件付き画像に類似した画像を生成するために、あるいは画像を埋め込む(in-filling)ために使用することができる。
【0024】
別の例として、コンテキスト入力は、コンピュータコードであり得、または、コンピュータコードの機能のテキスト記述であり得、出力シーケンスは、コンテキスト入力における入力コードを完了するか、コンテキスト入力において記述された機能を実行するプログラミング言語のコンピュータコードのシーケンスであり得る。
【0025】
別の例として、コンテキスト入力は、たとえばグラフとして、またはSMILES(Simplified Molecular Input Line Entry System、簡易分子入力ライン入力システム)を使用して、分子を表すシーケンス、あるいはDNAまたはRNAシーケンス、あるいは合成用分子の1つまたは複数の特性若しくはプロパティのテキスト記述であり得、出力シーケンスは、たとえば所望の特性またはプロパティを有する、あるいはコンテキスト入力に似ている合成用の分子を表すシーケンスであり得る。分子は、出力シーケンスに従って合成され得る。
【0026】
図1は、例示的なシーケンス生成システム100を示している。シーケンス生成システム100は、1つまたは複数の場所にある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例であり、以下に説明するシステム、コンポーネント、および技法を実装することができる。
【0027】
シーケンス生成システム100は、出力シーケンス112を生成するために、ニューラルネットワークシステム110を使用してコンテキスト入力102を処理する。
【0028】
上述したように、システムは、任意の適切なタイプのコンテキスト入力102を条件として、任意の適切なタイプの出力シーケンス112を生成するように構成することができる。
【0029】
一般に、各出力シーケンス112は、複数の出力位置の各々にトークンのボキャブラリからのそれぞれの出力トークンを含む。
【0030】
たとえば、システム100がテキストシーケンスを生成する場合、ボキャブラリ内のトークンは、1つまたは複数の自然言語においてテキストの要素を表す任意の適切なテキストトークン、たとえば単語、単語片、句読点など、および任意で、テキストのコーパスに含まれる数字および他のテキスト記号であり得る。たとえば、システム100は、シーケンスをボキャブラリからのトークンに分割するために、トークナイザ、たとえばSentencePieceトークナイザ(Kudoら、arXiv:1808.06226)または別のトークナイザを適用することによって、所与の単語シーケンスをトークン化することができる。
【0031】
システム100が可変長の出力シーケンスを生成できるようにするために、ボキャブラリはまた、システム100の最終出力における所与の出力位置にトークンがあってはいけないことを示す「パディング」トークンを含むことができる。
【0032】
より具体的には、ニューラルネットワークシステム110は、デコーダニューラルネットワーク120を含む。
【0033】
デコーダニューラルネットワーク120は、複数の出力位置の各々における出力トークンのボキャブラリからのそれぞれの出力トークンを含む現在の出力シーケンスを入力として受信することと、複数の出力位置の各々について、それぞれのスコアを含むスコア分布、たとえば出力トークンのボキャブラリ内の出力トークンごとのロジット値を含むデコーダ出力を生成するために、コンテキスト入力に条件付けされながら現在の出力シーケンスを処理することとを行うように構成されている。本明細書で使用される場合、ニューラルネットワークによって生成される「スコア」は、ニューラルネットワークによって生成されるロジット値か、または、出力トークンのロジット値のセットにソフトマックスを適用することによって生成される確率かのいずれかを指すことができる。
【0034】
一般に、デコーダニューラルネットワーク120は、デコーダ出力全体を並列に生成する、すなわち、単一の順方向パスにおいて出力位置のすべてに対するスコア分布を生成する非自己回帰ニューラルネットワークである。しかしながら、デコーダニューラルネットワーク120は、自己回帰ニューラルネットワーク、たとえばリカレントニューラルネットワークであってもよい。
【0035】
たとえば、デコーダニューラルネットワーク120は、非因果トランスフォーマデコーダとして実装することができ、または単一の順方向パスにおいて複数の出力位置のスコア分布を生成する別のニューラルネットワークとして実装することができる。トランスフォーマネットワークは、一連のセルフアテンションニューラルネットワーク層を有することを特徴とするニューラルネットワークであり得る。セルフアテンションニューラルネットワーク層は、入力の要素ごとにアテンション層入力を有し、入力の要素ごとに対するアテンション層出力を生成するためにアテンションメカニズムをアテンション層入力に適用する。使用され得る多くの異なるアテンションメカニズムが存在する。
【0036】
次いで、システム100は、現在の出力シーケンスを更新するために、デコーダ出力を使用することができる。
【0037】
トレーニング後、デコーダニューラルネットワーク120を使用して現在の出力シーケンスを繰り返し更新することによって、システム100は、非自己回帰方式で所与の受信コンテキスト入力102に対する出力シーケンス112を生成することができる。
【0038】
すなわち、システム100は、コンテキスト入力102に条件付けされながら複数の生成反復の各々において現在の出力シーケンスを更新し、次いで、出力シーケンス112を生成するために、最終生成反復後に現在の出力シーケンスを使用することができる。
【0039】
生成反復の数は一般に、出力シーケンス112内の位置の数に比べて非常に小さく、たとえば、6、8、10、12、または16に等しいため、システム100は、自己回帰モデルを使用するシステムと比較して大幅に短縮された遅延で出力シーケンスを生成することができる。
【0040】
場合によっては、コンテキスト入力102は出力シーケンス112の一部であり、すなわち、システム100は、トークンが欠落している出力シーケンスを完了しようとしているか、または出力シーケンス112の継続を生成しようとしている。コンテキスト入力の一部ではない出力シーケンス112内のトークンは、出力トークンのボキャブラリからランダムに初期化されうる。
【0041】
他の場合には、ニューラルネットワークシステム110はまた、コンテキスト入力102のエンコードされた表現を生成するためにコンテキスト入力102を処理するように構成されたエンコーダニューラルネットワーク130を含み、これはたとえば、コンテキスト入力の1つまたは複数の埋め込みのシーケンスを含む。デコーダニューラルネットワーク120は、たとえば、エンコードされた表現に注目することによって、エンコードされた表現に基づいて条件付けされる。このような場合、出力シーケンス内のすべてのトークンは、第1の生成の反復の前にランダムに初期化することができる。
【0042】
たとえば、コンテキスト入力102がテキストである場合、エンコーダニューラルネットワーク130は、コンテキスト入力102内のそれぞれのテキストトークンをそれぞれ表す埋め込みのシーケンスを生成するトランスフォーマエンコーダであり得る。
【0043】
別の例として、コンテキスト入力102が画像である場合、エンコーダニューラルネットワーク130は、ビジョントランスフォーマ(たとえば、Dosovitskiyら、arXiv:2010.11929)であり得、または画像のそれぞれのパッチをそれぞれ表す埋め込みのシーケンスを生成する畳み込みニューラルネットワークであり得る。
【0044】
ニューラルネットワークシステム110がエンコーダニューラルネットワーク130を含む場合、デコーダニューラルネットワーク120は、エンコーダニューラルネットワーク130によって生成されたエンコードされた表現に基づいて、様々な方法のいずれかで条件付けされ得る。特定の例として、デコーダ120は、エンコードされた表現にクロスアテンションを適用する1つまたは複数のクロスアテンション層を含むことができる(たとえば、Vaswaniら、arXiv:1706.03762)。
【0045】
いくつかの実装形態では、ニューラルネットワークシステム110は、長さ予測ニューラルネットワークを含む。長さ予測ニューラルネットワークは、最終出力シーケンス内の出力トークンの予測数を表す予測ターゲット長を定義する長さ予測を生成するために、コンテキスト入力102の埋め込みを処理するニューラルネットワークである。
【0046】
次いで、システム100は、デコーダ120を条件付けするために使用されるエンコードされた表現の一部として、出力シーケンスの予測ターゲット長の埋め込みを含む。このように長さ予測ニューラルネットワークを利用すると、デコーダニューラルネットワーク120が、長さ予測ニューラルネットワークによって予測された長さであるシーケンスを生成することを要求せずに、デコーダニューラルネットワーク120が出力シーケンス内の端末位置に対するパディングトークンをいつ予測するかを決定するように「ガイド」するために役立てることができる。
【0047】
推論時に出力シーケンスを生成するためにニューラルネットワークシステム110を使用することについては、
図4および
図5を参照して以下で説明する。
【0048】
出力シーケンス112を生成するためにニューラルネットワークシステム110を使用する前に、システム100内のトレーニングシステム150は、トレーニング例160に関してニューラルネットワークシステム110をトレーニングする。
【0049】
一般に、各トレーニング例160は、トレーニングコンテキスト入力およびトレーニング出力シーケンス、すなわち、トレーニングコンテキスト入力からニューラルネットワークシステム110によって生成されるべきグラウンドトゥルーストレーニング出力シーケンスを含む。
【0050】
ニューラルネットワークシステム110をトレーニングすることについては、
図2および
図3を参照して以下でさらに詳細に説明する。
【0051】
図2は、ニューラルネットワークシステムをトレーニングするための例示的なプロセス200の流れ図である。便宜上、プロセス200は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。たとえば、適切にプログラムされたシーケンス生成システム、たとえば
図1のシーケンス生成システム100は、プロセス200を実行することができる。
【0052】
システムは、ニューラルネットワークシステム、すなわち、デコーダニューラルネットワーク、および任意でエンコーダニューラルネットワークのパラメータを更新するために、トレーニング例の異なるバッチに対してプロセス200の反復を繰り返し実行することができる。
【0053】
すなわち、プロセス200の反復ごとに、システムは、たとえば、より大きいトレーニングデータセットからバッチをサンプリングすることによって、1つまたは複数のトレーニング例のバッチを取得し、ニューラルネットワークシステムのパラメータを更新するために1つまたは複数のトレーニング例のバッチを使用する。所与の出力シーケンスに含まれる出力トークンが最大数より少ない場合、システムは、所与の出力シーケンスをトレーニングのために使用する前に、パディングトークンを用いて出力シーケンスを拡張することができる。
【0054】
システムは、ニューラルネットワークシステムのトレーニングの終了基準が満たされるまで、たとえば、パラメータが収束するまで、しきい値量の実時間が経過するまで、またはプロセス200のしきい値数の反復が実行されるまで、プロセス200の反復を実行し続けることができる。
【0055】
各トレーニング例は、トレーニングコンテキスト入力と、トレーニングコンテキスト入力のターゲット出力シーケンスとを含む。
【0056】
プロセス200の各反復において、システムは、バッチ内のトレーニング例ごとにステップ202~206を実行する。
【0057】
特に、システムは、バッチ内のターゲット出力シーケンスから破損した出力シーケンスを生成する(ステップ202)。
【0058】
システムは、出力シーケンス内の1つまたは複数のトークンの各々について、出力シーケンス内の出力トークンをボキャブラリからランダムに選択されたトークンに置き換えることによって、破損した出力シーケンスを生成する。
【0059】
システムは、様々な方法のいずれかを使用して、どの出力トークンをランダムに選択されたトークンと置き換えるかを決定することができる。
【0060】
たとえば、システムは、予想される破損割合値の分布から、予想される破損割合値をサンプリングすることができる。各破損割合値は、破損プロセスを実行することによって破損すると予想される、出力シーケンス内の出力トークンの割合を定義する。
【0061】
次いで、システムは、予想される破損割合を使用して、すなわち、予想される破損割合に等しい確率で出力トークンを置き換えると決定し、1から予想される破損割合を引いたものに等しい確率で出力トークンを置き換えないと決定することによって、ターゲット出力シーケンス内の出力位置において出力トークンを置き換えるかどうかを出力位置ごとに決定することができる。
【0062】
出力トークンを置き換えると決定された出力位置ごとに、システムはボキャブラリからランダムなトークンをサンプリングし、出力位置における出力トークンをボキャブラリからサンプリングされたランダムなトークンと置き換えることができる。
【0063】
したがって、結果として得られる破損した出力シーケンスは、通常、いくつかのランダムに選択されたトークンと、トレーニング例における出力シーケンスからのいくつかの元のトークンを含む。
【0064】
次いで、システムは、1回または複数回の更新反復の各々において、破損した出力シーケンスを更新する(ステップ204)。
【0065】
更新反復の数は通常、バッチ内のトレーニング例ごとに同じ数に固定されており、場合によってはトレーニング全体を通じて固定される。特定の例として、システムはトレーニング全体を通じてトレーニング例ごとに1回の更新反復のみを実行することができる。別の特定の例として、システムは、トレーニング全体を通じてトレーニング例ごとに2回の更新反復を実行することができる。
【0066】
特に、各更新反復において、システムは、デコーダニューラルネットワークがトレーニング例におけるトレーニングコンテキスト入力に基づいて条件付けされる間、デコーダニューラルネットワークを使用して、更新反復の時点で破損した出力シーケンスを処理して、更新反復の時点で破損した出力シーケンスのデコーダ出力を生成する。上述したように、デコーダ出力は、ボキャブラリ内の出力トークンごとのそれぞれのスコアを含む。さらに、上述したように、デコーダニューラルネットワークは、出力シーケンスにコンテキスト入力からのトークンを含める(および、システムがトークンを破損することを防ぐ)ことによって、またはエンコーダニューラルネットワークによって生成されたコンテキスト入力のエンコードされた表現に条件付けされることによって、コンテキスト入力に条件付けされ得る。長さ予測ニューラルネットワークが推論時に使用される場合、システムはまた、トレーニング出力シーケンスのグラウンドトゥルースの長さ(パディングトークンの追加前)に基づいてデコーダを条件付けることができる。
【0067】
次いで、システムは、破損した出力シーケンスのデコーダ出力を使用して出力トークンのボキャブラリからトークンを選択することによって、破損した出力シーケンスを複数の出力位置の各々について更新する。たとえば、システムはスコアに従ってトークンをサンプリングすることもでき、最高スコアの出力トークンを選択することもできる。
【0068】
したがって、各更新反復は、反復の開始時点での出力シーケンス内のトークンを、デコーダニューラルネットワークの出力を使用して選択されたトークンに置き換える。
【0069】
最後の更新反復が実行された後、システムは、デコーダニューラルネットワークがトレーニングコンテキスト入力に基づいて条件付けされる間、デコーダニューラルネットワークを使用して、最後の更新反復後に、更新された破損した出力シーケンスを処理して、更新された破損した出力シーケンスのデコーダ出力を生成する(ステップ206)。このデコーダ出力はまた、ボキャブラリ内の出力トークンごとのそれぞれのスコアを含む。
【0070】
次に、システムは、損失関数のデコーダニューラルネットワークのパラメータに関する勾配を決定する(ステップ208)。
【0071】
損失関数は、トレーニング例ごとに、ターゲット出力シーケンスに対する最後の更新反復後の更新された破損した出力シーケンスのデコーダ出力の品質を測定する第1の項を含む。デコーダ出力の品質を測定する損失関数項の第1の項は、ターゲット出力シーケンスの再構築損失における第1の項を表し得る。
【0072】
たとえば、第1の項は、トレーニング例ごと、および出力位置ごとに、更新された破損した出力シーケンスのデコーダ出力によってターゲット出力シーケンス内の出力位置における出力トークンに割り当てられたスコアの対数を測定する負の対数尤度項であり得る。たとえば、第1の項は、トレーニング例ごとに、ターゲット出力シーケンス内の出力位置において出力トークンに、更新された破損した出力シーケンスに対するデコーダ出力によって割り当てられたスコアの対数を、出力位置ごとに合計した値の平均の負の値であり得る。
【0073】
任意で、損失関数はまた、更新反復ごとにそれぞれの第2の項を含むことができる。所与の更新反復の第2の項は、トレーニング例ごとに、ターゲット出力シーケンスに対する更新反復の時点で破損した出力シーケンス(すなわち、最後の更新反復後に更新された破損した出力シーケンスの代わりに)に対するデコーダ出力の品質を測定する。デコーダ出力の品質を測定する損失関数項の第2の項は、ターゲット出力シーケンスの再構築損失における第2の項を表し得る。
【0074】
たとえば、各第2の項は、トレーニング例ごとに、および出力位置ごとに、ターゲット出力シーケンス内の出力位置における出力トークンに、更新反復の時点で破損した出力シーケンスに対するデコーダ出力によって割り当てられたスコアの対数を測定する負の対数尤度項であり得る。たとえば、第2の項は、トレーニング例ごとに、ターゲット出力シーケンス内の出力位置における出力トークンに、更新反復の時点で破損した出力シーケンスに対してデコーダ出力によって割り当てられたスコアの対数を、出力位置ごとに合計した値の平均の負の値であり得る。
【0075】
一般に、システムは、第1の項、および含まれている場合は第2の項の勾配を計算する際に、サンプリング動作、すなわち更新反復時にデコーダ出力を使用してトークンを選択するステップを通じて逆伝播しない。すなわち、システムは、勾配項の各々を計算する際に、各更新反復後に「停止勾配」を適用する。
【0076】
損失関数が複数の項を有する場合、全体の損失関数は個々の項の合計または加重和になり得る。
【0077】
システムは、勾配を使用してデコーダニューラルネットワークのパラメータを更新する(ステップ210)。たとえば、システムは、パラメータを更新するために、適切なオプティマイザ、たとえばAdamオプティマイザ、rmsPropオプティマイザ、Adafactorオプティマイザ、または別の機械学習オプティマイザを勾配およびパラメータに適用することができる。
【0078】
ニューラルネットワークシステムがエンコーダニューラルネットワークも含む場合、システムはまた、エンコーダパラメータに関する損失関数に関して、すなわち、デコーダニューラルネットワークを通じて勾配をエンコーダニューラルネットワークに逆伝播することによって、勾配を計算し、次いで、勾配を使用して、たとえば、上述のオプティマイザを使用して、エンコーダニューラルネットワークのパラメータを更新することもできる。
【0079】
ニューラルネットワークシステムが長さ予測ニューラルネットワークも含む場合、これは教師付きトレーニングを使用して、たとえばクロスエントロピ損失に基づいて、個別に(ただし、同じトレーニング例で)トレーニングすることができる。
【0080】
したがって、プロセス200を繰り返し実行することによって、システムは、正確な出力シーケンスを生成するために、ニューラルネットワークを効率的にトレーニングすることができる。特に、システムは、後の推論時に使用される更新反復の数よりも少ない数の更新反復を使用できるため、トレーニングの計算効率が向上する。それを補うため、すなわち、推論精度を最大化するためにニューラルネットワークが引き続きトレーニングされていることを確認するために、システムは、推論時に行われるような事前の分布またはノイズ分布からサンプリングされた出力シーケンスからではなく、破損した出力シーケンスから開始する。このようにして、モデルは、推論時に使用される完全な展開中に遭遇する可能性のあるサンプルのノイズを除去する方法を学習する。
【0081】
【0082】
図3は、単一の更新反復が実行される場合のトレーニング例のトレーニングプロセスの例を示している。
図3の例では、トークンは、たとえば、SentencePieceモデルまたは別の適切な単語片トークナイザなどの単語片モデルを使用してトレーニングデータをトークン化することによって生成される単語片である。
【0083】
図3に示されるように、トレーニング例には、「サンデーとは、典型的には1つまたはからなるアイスクリームデザートです」というトレーニング出力シーケンス310を含む。
【0084】
次いで、システムは、複数の単語片をランダムに選択された単語片に置き換えて「サンドループGa遺伝子アイスはその76fen $30ワンフレンチを大きくphotograpする(A sund loop Ga genes ice greatly photograp that76fen $30 oneFrench)」を生成するための破損したトレーニングシーケンス330を生成するために、破損320を実行する。
【0085】
次いで、システムは、「生成展開」340を実行し、すなわち、更新された破損したシーケンス350「サンデーは、1つのpとしてよい光学クリーム片である」を生成するために、上述したように単一の更新反復を実行する。この例からわかるように、ニューラルネットワークは単一の更新反復において出力シーケンス310を正しく再構築することができないが、更新された破損したシーケンス350は破損した出力シーケンス330よりも出力シーケンス310にはるかに近くなる。
【0086】
次いで、システムは、トレーニング出力シーケンス310に対する破損した出力シーケンス330から生成されたデコーダ出力を測定するノイズ除去項360(上述の「第1の項」)と、トレーニング出力シーケンス310に対する更新された破損した出力シーケンス350から生成されたデコーダ出力を測定する展開されたノイズ除去項370(上述の単一の更新反復の「第2の項」)とを含む損失を計算する。
【0087】
したがって、単一の更新反復のみが実行される場合でも、損失は、ターゲット出力とは大幅に異なるシーケンス、すなわち、推論時の初期の更新反復において見られる可能性が高いシーケンスと、ターゲット出力に多少似ているシーケンス、すなわち、推論時の後の更新反復において見られる可能性が高いシーケンスとの両方から予測する際のニューラルネットワークのパフォーマンスを依然として測定する。
【0088】
図4は、コンテキスト入力から最終出力シーケンスを生成するための例示的なプロセス400の流れ図である。便宜上、プロセス400は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。たとえば、適切にプログラムされたニューラルネットワークシステム、たとえば
図1のシーケンス生成システム100は、プロセス400を実行することができる。
【0089】
システムは、(新しい)コンテキスト入力を受信する(ステップ402)。
【0090】
システムは、複数の出力位置の各々においてそれぞれの出力トークンを含む(新しい)出力シーケンスを生成する(ステップ404)。
【0091】
たとえば、システムは、ボキャブラリから各トークンをランダムにサンプリングすることもでき、ボキャブラリ内のトークンに対する事前の分布からランダムに各トークンをサンプリングすることもできる。
【0092】
別の例として、タスクが部分的な出力シーケンス、すなわち、出力シーケンス内のトークンのうちのいくつかを含むが1つまたは複数の位置に欠落したトークンがあるシーケンスを完了することになっており、コンテキスト入力が部分的な出力シーケンスを含む場合、システムは、コンテキスト入力に基づいて、すなわち、適切な位置においてコンテキスト入力からのトークンを有し、欠落しているトークンをランダムにまたは以前の分布からサンプリングされたトークントークンで置き換える出力シーケンスを生成することによって、新しい出力シーケンスを生成することができる。
【0093】
たとえば、コンテキスト入力には、タスクが入力シーケンスを完了する必要がある場合に、出力シーケンス内に1つまたは複数の初期トークンを含むこともでき、タスクが部分的な入力シーケンスの「埋め込み」を必要とする場合に、出力シーケンス全体の位置に1つまたは複数のトークンを含むこともできる。
【0094】
ニューラルネットワークシステムがエンコーダニューラルネットワークを含む場合、システムはまた、コンテキスト入力の1つまたは複数の埋め込みのシーケンスを含むコンテキスト入力のエンコードされた表現を生成するために、エンコーダニューラルネットワークを使用してコンテキスト入力を処理する。
【0095】
ニューラルネットワークシステムが長さ予測ニューラルネットワークも含む場合、システムは、最終出力シーケンス内の出力トークンの予測数を表す予測ターゲット長を定義する長さ予測を生成するために、長さ予測ニューラルネットワークを使用してコンテキスト入力の1つまたは複数の埋め込みを処理する。次いで、システムは、たとえば、エンコーダによって生成された1つまたは複数の埋め込みのシーケンス上に予測ターゲット長の埋め込みを連結することによって、予測ターゲット長をエンコードされた表現の一部として含む。
【0096】
次に、システムは、複数の生成反復の各々において、新しい出力シーケンスを更新する(ステップ406)。
【0097】
特に、システムは一般に、固定回数の生成反復、たとえば4、8、12、または16回の更新反復を実行する。上述したように、生成反復の数は、一般に、トレーニング中に使用された更新反復の数よりも大きくなる。
【0098】
更新の反復ごとに、システムは、新しい出力シーケンスを更新するためにデコーダニューラルネットワークを使用し、デコーダニューラルネットワークは新しいコンテキスト入力に基づいて条件付けされる。
【0099】
特に、各生成反復において、システムはデコーダニューラルネットワークを使用して生成反復の時点で新しい出力シーケンスを処理し、デコーダニューラルネットワークは、新しい出力シーケンスのデコーダ出力を生成するために、新しいコンテキスト入力に基づいて条件付けされる。
【0100】
ニューラルネットワークシステムがエンコーダニューラルネットワークを含む場合、デコーダニューラルネットワークは、エンコードされた表現(任意で長さ予測ニューラルネットワークの出力の埋め込みも含む)に基づいて条件付けされる。
【0101】
次いで、システムは、複数の出力位置のサブセットについて、新しい出力シーケンスに対するデコーダ出力を使用して、出力トークンのボキャブラリからトークンを選択する。サブセットは、適切なサブセットであってもよいが、そうである必要はなく、出力位置の適切なサブセットは、すべての出力位置を含まないものである。数学的に、そして本明細書で使用されるように、サブセットは、複数の出力位置内のすべての出力位置を含むことができる(すなわち、それは「不適切なサブセット」を含む)。言い換えれば、システムは、複数の出力位置の適切なサブセットまたは複数の出力位置のすべてについて、新しい出力シーケンスのデコーダ出力を使用して出力トークンのボキャブラリからトークンを選択する。
【0102】
いくつかの実装形態では、システムはすべての出力位置のトークンを選択し、すなわち、サブセットは適切なサブセットではない。
【0103】
いくつかの他の実装形態では、システムは出力位置の適切なサブセットのみに対してトークンを選択する。たとえば、システムは出力位置の適切なサブセットをランダムに選択し、次いで、適切なサブセット内の位置に対して新しいトークンのみを選択することができる。出力位置の適切なサブセットのみを更新すると、たとえば条件付きまたは無条件のテキスト生成など、多様性が必要なタスクに対してシステムが多様な最終出力シーケンスを生成する際に役立ち得る。
【0104】
いくつかの実装形態では、所与の出力位置のトークンを選択するために、システムはデコーダ出力を使用してトークンをサンプリングすることができる。特定の例として、システムは、温度調整されたスコアを生成し、温度調整されたスコアを使用してトークンをサンプリングするために、デコーダ出力内のそれぞれのスコアに温度値を適用することができる。温度値τをスコアscoreに適用することは、修正されたスコアscoreτを決定することを備え得、したがって、
【0105】
【0106】
である。すなわち、システムは、温度調整されたスコア(確率)の分布を生成するために、温度を下げたソフトマックス、すなわち0から1の間の温度を使用してトークンのスコア(「ロジット」)を出力位置ごとに処理することができ、次いで、温度調整されたスコアを使用してトークンをサンプリングすることができる。温度を下げると、システムがより少ない生成反復において高品質の出力シーケンスに収束する際に役立ち得る。
【0107】
他の実装形態では、システムは、各生成反復においてトークンを選択するために、argmax展開された(argmax-unrolled)デコーディングを使用する。
【0108】
argmax展開されたデコーディングを実行する際、第1の生成反復において、システムは、たとえば、温度の低下の有無にかかわらず、スコア分布からサンプリングすることによって、出力位置ごとにそれぞれのトークンを選択する。
【0109】
次いで、システムは、更新された出力シーケンスに加えて、前の反復からのデコーダ出力を後続の各生成反復に渡し、後続の反復において、出力シーケンスを更新するために、前の反復からのデコーダ出力を使用する。システムがargmax展開されたデコーディングを使用する場合に、後続の生成反復において出力シーケンスを更新することについては、
図5を参照して以下でより詳細に説明する。
【0110】
システムは、複数の更新反復のうちの最後の生成反復後の新しい出力シーケンスから、新しいコンテキスト入力に対する最終出力シーケンスを生成する(ステップ408)。
【0111】
いくつかの実装形態では、システムは、たとえば、新しい出力シーケンスからパディングトークンを削除し、結果として得られるシーケンスを最終出力シーケンスとして提供することによって、最終出力シーケンスを生成するために、新しい出力シーケンスを直接使用する。
【0112】
いくつかの他の実装形態では、システムは、複数の新しい出力シーケンスを生成するためにプロセス400の複数の反復を並行して実行し、次いで、最終出力シーケンスを生成するために、最も高いスコア、たとえば、最も高い対数尤度を有する新しい出力シーケンスのみを直接使用する。
【0113】
図5は、システムがargmax展開されたデコーディングを使用する場合に、後続の生成反復において出力シーケンスを更新するための例示的なプロセス500の流れ図である。便宜上、プロセス500は、1つまたは複数の場所に配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明する。たとえば、ニューラルネットワークシステム、たとえば
図1のシーケンス生成システム100は、適切にプログラムされると、プロセス500を実行することができる。
【0114】
上述したように、第1の生成反復において、システムは、デコーダ出力を生成するためにコンテキスト入力に基づいて条件付けされたデコーダニューラルネットワークを使用して出力シーケンスを処理し、デコーダ出力を使用して、出力位置ごとにトークンのボキャブラリからそれぞれのトークンを選択することによって、出力シーケンスを更新する。
【0115】
次いで、システムは、後続の各生成反復においてプロセス500を実行する。
【0116】
システムは、更新反復の時点のデコーダ出力を使用して、出力位置の適切なサブセットを選択する(ステップ502)。特に、システムは、最も不確実な出力位置のしきい値数を選択することによって、適切なサブセットを選択することができる。たとえば、システムは、出力位置における出力トークンがデコーダ出力において最低スコアを受信した出力位置のしきい値数を選択することができる。
【0117】
システムは、デコーダ出力を更新するためにコンテキスト入力に基づいて条件付けされるデコーダニューラルネットワークを使用して、生成反復の時点で出力シーケンスを処理する(ステップ504)。
【0118】
デコーダ出力を更新した後、システムは、適切なサブセット内の出力位置の各々について、デコーダ出力を使用してトークンをサンプリングすることによって、一時的な出力シーケンスを生成する(ステップ506)。
【0119】
適切なサブセットにない出力位置の各々について、システムは、デコーダ出力を使用して、または更新反復の時点の出力位置におけるトークンを、出力位置におけるトークンとして使用してトークンを選択する。
【0120】
システムは、一時的なデコーダ出力を生成するために、コンテキスト入力に基づいて条件付けされるデコーダニューラルネットワークを使用して一時的な出力シーケンスを処理する。(ステップ508)。
【0121】
次いで、システムは出力シーケンスを更新する(ステップ510)。
【0122】
特に、システムは、適切なサブセット内にない出力位置ごとに、デコーダ出力を使用してボキャブラリからトークンを選択することによって、出力シーケンスを更新する。より具体的には、システムは、デコーダ出力に従って、その位置のargmaxトークン(すなわち、最も高いスコアを有するトークン)を選択する。
【0123】
適切なサブセット内の出力位置ごとに、システムは一時的なデコーダ出力を使用してボキャブラリからトークンを選択する。より具体的には、システムは一時的なデコーダ出力に従って、その位置のargmaxトークンを選択する。
【0124】
したがって、最も不確実な適切なサブセット内のトークンは、適切なサブセット内にないトークンに対して追加の「展開」ステップを使用して選択される。すなわち、後続の生成反復は、単一ステップの予測ロジットだけではなく、展開されたロジットに従って、確実性の低いトークンをリサンプリングすることによって実行される。これにより、出力シーケンスの品質を維持しながら、サンプリング速度を向上させることができ、すなわち必要な生成反復の実行が少なくなることによってこれを行える。
【0125】
【0126】
Table 1(表1)は、英語からドイツ語(English to German: EN→DE)およびドイツ語から英語(German to English: DE→EN)という2つの機械翻訳タスクにおける様々なシステムのパフォーマンスを示している。特に、この表は、各タスクにおける各システムのパフォーマンスをRaw BLEUスコアの観点から示している。他のシステムは、自動回帰(AR)システムと他の非ARシステムの両方を含む。この表は、argmax展開デコーディングを使用した場合(「決定論的」)および使用しない場合(「確率論的」)と、様々な生成ステップTとの両方を用いて、説明されている技法(サンデー)のパフォーマンスを示している。
【0127】
Table 1(表1)からわかるように、説明された技法は遅延が減少しているにもかかわらずARシステムと競合し、他の非ARシステムよりも優れたパフォーマンスを達成する。さらに、Table 1(表1)からわかるように、決定論的バリアントは、より少ない生成ステップ数で確率論的バリアントよりも優れたパフォーマンスを達成する。
【0128】
【0129】
Table 2(表2)は、様々な数の生成ステップTを使用したARモデル(前述のトランスフォーマベースモデル)と比較して、EN→DE翻訳タスクに関して説明された技法によって達成された改善を示している。表からわかるように、説明されている技法は、16個の生成ステップでもARモデルと比較して大幅な高速化を実現し、生成ステップ数がより少ない場合は、妥当な品質を依然として維持しながら最大4.7倍の速度向上を達成することができる。
【0130】
本明細書は、システムおよびコンピュータプログラムコンポーネントに関連して「構成された」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されているということは、システムに、動作中にその動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがインストールされていることを意味する。特定の動作またはアクションを実行するように構成される1つまたは複数のコンピュータプログラムは、1つまたは複数のプログラムが、データ処理装置によって遂行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0131】
本明細書で説明される主題の実施形態および機能動作は、デジタル電子回路、有形に具体化されたコンピュータソフトウェアまたはファームウェア、本明細書で開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による遂行またはデータ処理装置の動作の制御のために有形の非一時的ストレージ媒体上にエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムアクセスメモリデバイスまたはシリアルアクセスメモリデバイス、あるいはそれらの1つまたは複数の組合せであり得る。代替的または追加的に、プログラム命令は、データ処理装置による遂行のために適切なレシーバ装置に送信するための情報をエンコードするために生成される、人工的に生成された伝播信号、たとえば機械生成された電気信号、光信号、または電磁信号上にエンコードすることができる。
【0132】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、あるいは複数のプロセッサまたはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。この装置は、専用論理回路、たとえばFPGA(field programmable gate array:フィールドプログラマブルゲートアレイ)またはASIC(application specific integrated circuit:特定用途向け集積回路)であってもよく、またはさらにそれを含んでもよい。この装置は、ハードウェアに加えて、コンピュータプログラムの遂行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、あるいはそれらのうちの1つまたは複数の組合せを構成するコードを任意で含むことができる。
【0133】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれ、または記述される場合があるコンピュータプログラムは、コンパイラ型言語またはインタープリタ型言語、あるいは宣言型言語または手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、あるいはコンピューティング環境における使用に適したモジュール、コンポーネント、サブルーチン、または他のユニットとしてなど、あらゆる形式で展開することができる。プログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの一部、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトに、問題のプログラム専用の単一のファイルに、あるいは複数の調整されたファイル、たとえば1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルに記憶することができる。コンピュータプログラムは、1台のコンピュータ、あるいは1つのサイトに配置されている、または複数のサイトに分散されデータ通信ネットワークによって相互接続されている複数のコンピュータ上で遂行されるように展開することができる。
【0134】
本明細書では、「データベース」という用語は、データの任意の集合を指すために広く使用されており、データは任意の特定の方法で構造化する必要はなく、またはまったく構造化する必要はなく、1つまたは複数の場所にあるストレージデバイスに記憶することができる。したがって、たとえば、インデックスデータベースは複数のデータコレクションを含むことができ、データコレクションの各々は異なる方法で編成およびアクセスされ得る。
【0135】
同様に、本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされたソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用される。一般に、エンジンは1つまたは複数のソフトウェアモジュールまたはコンポーネントとして実装され、1つまたは複数の場所にある1つまたは複数のコンピュータにインストールされる。場合によっては、1つまたは複数のコンピュータが特定のエンジン専用になることもあり、場合によっては、複数のエンジンを同じコンピュータにインストールして実行することもできる。
【0136】
本明細書で説明するプロセスおよび論理フローは、入力データを操作して出力を生成することによって機能を実行する1つまたは複数のコンピュータプログラムを遂行する1つまたは複数のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローはまた、たとえばFPGAまたはASICなどの専用論理回路によって、あるいは専用論理回路と1つまたは複数のプログラムされたコンピュータの組合せによって実行することができる。
【0137】
コンピュータプログラムの遂行に適したコンピュータは、汎用または専用のマイクロプロセッサあるいはその両方、あるいは任意の他の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、読取り専用メモリ、ランダムアクセスメモリ、またはその両方から命令とデータを受信する。コンピュータの必須要素は、命令を実行または遂行するための中央処理装置と、命令とデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置とメモリは、専用論理回路によって補完したり、専用論理回路に組み込んだりすることができる。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気、光磁気ディスク、または光ディスクを含むか、あるいは、それらからデータを受信するか、またはそれらにデータを転送するために動作可能に結合される。しかしながら、コンピュータにそのようなデバイスが搭載されている必要はない。さらに、コンピュータは、モバイル電話、携帯情報端末(personal digital assistant: PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(Global Positioning System: GPS)レシーバ、あるいはポータブルストレージデバイス、たとえばほんの数例を挙げると、ユニバーサルシリアルバス(universal serial bus: USB)フラッシュドライブなどの別のデバイスに組み込むこともできる。
【0138】
コンピュータプログラム命令およびデータを記憶するために適したコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、フラッシュメモリデバイス、磁気ディスクたとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性メモリ、媒体およびメモリデバイスを含む。
【0139】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータ上で実装することができる。ユーザとの対話を提供するために他の種類のデバイスを使用することもでき、たとえば、ユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなど、任意の形式の感覚的フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力など、任意の形式で受け取ることができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信したリクエストに応じて、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、代わりにユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0140】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば、機械学習トレーニングまたは制作の一般的で計算集約的な部分、すなわち推論、ワークロードを処理するための専用ハードウェアアクセラレータユニットを含むことができる。
【0141】
機械学習モデルは、たとえば、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークなどの機械学習フレームワークを使用して実装および展開することができる。
【0142】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含む、またはたとえばアプリケーションサーバなどのミドルウェアコンポーネントを含む、またはフロントエンドコンポーネント、たとえばユーザが本明細書で説明されている主題の実装形態と対話できるグラフィカルユーザインターフェース、ウェブブラウザ、もしくはアプリを有するクライアントコンピュータ、あるいは1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムに実装することができる。システムのコンポーネントは、通信ネットワークなどのデジタルデータ通信の任意の形式または媒体によって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(local area network: LAN)およびワイドエリアネットワーク(wide area network: WAN)、たとえばインターネットを含む。
【0143】
コンピューティングシステムはクライアントとサーバを含むことができる。クライアントとサーバは通常、互いにリモートにあり、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、相互にクライアントとサーバの関係を有するコンピュータプログラムによって発生する。いくつかの実施形態では、サーバは、たとえばクライアントとして機能するデバイスと対話するユーザにデータを表示し、ユーザからのユーザ入力を受信する目的で、データ、たとえばHTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、たとえばユーザ対話の結果は、デバイスからサーバにおいて受信することができる。
【0144】
本明細書には多くの特定の実装形態の詳細が含まれているが、これらは発明の範囲または特許請求の範囲に対する制限として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において別個の実施形態に関連して説明される特定の特徴はまた、単一の実施形態において組み合わせて実装することができる。逆に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において個別に、または任意の適切なサブコンビネーションにおいて実装することができる。さらに、特徴が特定の組合せにおいて作用するものとして上記で説明され、最初はそのようにクレームされることもあるが、クレームされた組合せからの1つまたは複数の特徴が場合によっては組合せから削除され、クレームされた組合せがサブコンビネーションまたはサブコンビネーションのバリエーションに向けられる場合がある。
【0145】
同様に、動作は特定の順序で図面に示され、特許請求の範囲に記載されているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序または連続した順序で実行されること、または図示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスクと並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に統合することもでき、複数のソフトウェア製品にパッケージ化することもできることを理解されたい。
【0146】
主題の特定の実施形態について説明した。他の実施形態は、以下の特許請求の範囲内に含まれる。たとえば、特許請求の範囲に記載されたアクションは、異なる順序で実行されても、依然として望ましい結果を達成することができる。一例として、添付の図面に示されているプロセスは、望ましい結果を達成するために、必ずしも示されている特定の順序、または一連の順序を必要とするわけではない。場合によっては、マルチタスクと並列処理が有利な場合がある。
【符号の説明】
【0147】
100 シーケンス生成システム
102 コンテキスト入力
110 ニューラルネットワークシステム
112 出力シーケンス
120 デコーダニューラルネットワーク
130 エンコーダニューラルネットワーク
150 トレーニングシステム
160 トレーニング例
200 プロセス
310 トレーニング出力シーケンス
320 破損
330 トレーニングシーケンス
340 生成展開
350 シーケンス
360 ノイズ除去項
370 展開されたノイズ除去項
400 プロセス
500 プロセス
【国際調査報告】