
Seq2seqは、自然言語処理に使用される機械学習アプローチのファミリーです。[ 1 ]元々は、 Google Brainのベトナム人コンピュータ科学者で機械学習のパイオニアであるLê Viết Quốcによって開発されたこのフレームワークは、多くの最新の AI システムの基礎となっています。アプリケーションには、言語翻訳、[ 2 ]画像キャプション、[ 3 ]会話モデル、[ 4 ]音声認識、[ 5 ]およびテキスト要約が含まれます。[ 6 ] Seq2seq はシーケンス変換を使用します。つまり、1 つのシーケンスを別のシーケンスに変換します。
翻訳の問題を暗号学の問題として扱うことができるかどうか、当然疑問に思うだろう。ロシア語の記事を読むとき、私はこう思う。「これは実際には英語で書かれているが、奇妙な記号で暗号化されている。これから解読してみよう。」
—ウォーレン・ウィーバー、ノーバート・ウィーナー宛の手紙、1947年3月4日

seq2seqは、情報理論に根ざした機械翻訳(より一般的にはシーケンス変換)のアプローチであり、情報理論では通信をエンコード・送信・デコードのプロセスとして捉え、機械翻訳を通信の特殊なケースとして研究します。この視点は、例えば機械翻訳のノイズチャネルモデルにおいて詳細に説明されています。
実際には、seq2seqはニューラルネットワーク(エンコーダー)を使用して入力シーケンスを実数値ベクトルにマッピングし、次に別のニューラルネットワーク(デコーダー)を使用してそれを出力シーケンスにマッピングし直します。
エンコーダー・デコーダー配列変換のアイデアは2010年代初頭に開発されました。seq2seqを開発した最初の論文として最もよく引用されるのは、2014年の2つの論文です。[ 2 ] [ 1 ]
彼らが提案した seq2seq では、エンコーダとデコーダの両方がLSTMでした。エンコードベクトルのサイズが固定されているため、長い入力シーケンスでは固定長のエンコードベクトルに収まりにくく、情報が失われる傾向がありました。2014年に提案されたアテンションメカニズム[ 7 ]は、このボトルネック問題を解決しました。彼らは、翻訳をデコードする際にソース文を検索することを模倣するモデルとして、 RNNsearchと名付けました。
この時点でのseq2seqモデルの問題点は、リカレントニューラルネットワークの並列化が難しいことでした。2017年に発表されたTransformers [ 8 ]は、エンコーディングRNNを自己注意Transformerブロック(「エンコーダーブロック」)に、デコーディングRNNをクロスアテンション因果マスクTransformerブロック(「デコーダーブロック」)に置き換えることでこの問題を解決しました。
seq2seq の起源として引用されている論文の 1 つは (Sutskever et al 2014) [ 1 ]で、Google の機械翻訳プロジェクトに参加していたときに Google Brain で発表されました。この研究により、Google は2016 年にGoogle 翻訳をGoogle ニューラル機械翻訳に刷新することができました。[ 1 ] [ 9 ] Tomáš Mikolov氏は、 ( Google Brainに参加する前に) 「文のペアにニューラル言語モデルを使用し、最初の文を見た後に翻訳を生成する」というアイデアを開発したと主張しており、これは seq2seq 機械翻訳と同じものだとしています。また、このアイデアをIlya Sutskever 氏とQuoc Le氏(Google Brain に在籍中) に伝えたが、彼らは論文で彼に言及しなかったと述べています。[ 10 ] Mikolov 氏は博士論文で RNNLM (言語モデリングに RNN を使用) に取り組んでおり、[ 11 ] word2vecの開発でより有名です。
このセクションの主な参考文献は[ 12 ]です。

エンコーダは、入力シーケンスを処理し、その重要な情報をキャプチャする役割を担います。キャプチャされた情報は、ネットワークの隠れ状態として、また、アテンション機構を備えたモデルではコンテキストベクトルとして保存されます。コンテキストベクトルは、入力の隠れ状態の重み付き和であり、出力シーケンスの各時間インスタンスごとに生成されます。

デコーダはエンコーダからコンテキストベクトルと隠れ状態を受け取り、最終的な出力シーケンスを生成します。デコーダは自己回帰的に動作し、出力シーケンスの要素を一度に1つずつ生成します。各ステップにおいて、デコーダは以前に生成された要素、コンテキストベクトル、および入力シーケンス情報を考慮して、出力シーケンスの次の要素を予測します。具体的には、アテンション機構を備えたモデルでは、コンテキストベクトルと隠れ状態が連結されてアテンション隠れベクトルが生成され、これがデコーダへの入力として使用されます。
2010年代初頭に開発されたseq2seqメソッドは、2つのニューラルネットワークを使用します。エンコーダーネットワークは入力文を数値ベクトルに変換し、デコーダーネットワークはそのベクトルをターゲット言語の文に変換します。2014年にこの構造にアテンション機構が組み込まれ、以下に示します。その後、2017年にはエンコーダー・デコーダー型のTransformerアーキテクチャへと改良されました。


学習と予測には微妙な違いがあります。学習時には、入力シーケンスと出力シーケンスの両方が既知です。一方、予測時には、入力シーケンスのみが既知であり、出力シーケンスはネットワーク自身によってデコードされる必要があります。
具体的には、入力シーケンスを考えてみましょう。出力シーケンスエンコーダは入力を処理する段階的に。その後、デコーダはエンコーダからの出力と<bos>を入力として受け取り、予測を生成します。さて、問題は、次のステップでデコーダーに何を入力すべきかということです。
標準的なトレーニング方法は「ティーチャーフォーシング」です。ティーチャーフォーシングでは、デコーダーが何を出力しても、デコーダーへの次の入力は常に参照です。つまり、たとえデコーダーへの次の入力はまだ、 等々。
予測時間中、「先生」利用できない。したがって、デコーダへの入力は、 それから、 等々。
モデルが教師強制のみでトレーニングされた場合、モデル自身の出力に基づく生成と教師の出力に基づく生成が異なるため、予測時にその性能が低下することがわかっています。これは露出バイアスまたはトレーニング/テスト分布シフトと呼ばれます。2015年の論文では、トレーニング中に教師強制と教師強制なしをランダムに切り替えることを推奨しています。[ 13 ]
アテンションメカニズムは、Bahdanau らが 2014 年に導入した機能強化で、入力シーケンスが長くなるとエンコーダの隠れ状態出力がデコーダにとって無関係になるという基本的な Seq2Seq アーキテクチャの制限に対処するものです。これにより、モデルはデコード処理中に入力シーケンスの異なる部分に選択的に焦点を合わせることができます。各デコーダステップで、アライメントモデルは、現在のデコーダ状態とすべてのアテンション隠れベクトルを入力として使用してアテンションスコアを計算します。アライメントモデルは、隠れ状態で表される入力が、アテンション隠れ状態で表される以前の出力とどの程度一致するかを計算するために seq2seq モデルと共同でトレーニングされる別のニューラルネットワークモデルです。次に、アテンションスコアにソフトマックス関数を適用してアテンション重みを取得します。

一部のモデルでは、エンコーダーの状態が直接活性化関数に入力されるため、アライメントモデルは不要になります。活性化関数は、デコーダーの状態とエンコーダーの状態をそれぞれ1つずつ受け取り、それらの関連性を示すスカラー値を返します。

seq2seq言語の英語からフランス語への翻訳タスクを考えてみましょう。具体的には、「the zone of international control <end>」を「la zone de contrôle international <end>」に翻訳する場合を考えます。ここでは、エンコーダーとデコーダーの両方で入力の終わりを区切る制御文字として、特別なトークン<end>を使用します。
テキストの入力シーケンスニューラルネットワーク(LSTM、Transformerエンコーダー、またはその他のネットワーク)によって処理され、実数値ベクトルのシーケンスに変換される。、 どこ「隠れベクトル」の略です。
エンコーダの処理が完了すると、デコーダは隠れベクトルに対して動作を開始し、出力シーケンスを生成します。自己回帰的である。つまり、エンコーダによって生成された隠れベクトルと、デコーダ自身が以前に生成したものの両方を入力として受け取り、次の出力ワードを生成する。
ここでは、デコーダへの入力の開始を区切る制御文字として、特別なトークン「<start>」を使用します。デコーダの出力に「<end>」が現れると、デコード処理は終了します。

重みを手作業で作成することは機械学習の目的を損なうため、モデルはアテンション重みを独自に計算する必要があります。データベースクエリの言語から類推して、モデルにキー、クエリ、値の3つのベクトルを構築させます。大まかな考え方としては、キーと値のペアのリストの形式で「データベース」があるとします。デコーダはクエリを送信し、値の重み付き合計の形式で応答を受け取ります。ここで、重みはクエリが各キーにどれだけ似ているかに比例します。
デコーダはまず「<start>」入力を部分的に処理して中間ベクトルを取得します。デコーダの0番目の隠れベクトル。次に、中間ベクトルは線形マップによって変換されます。クエリベクトルに一方、エンコーダから出力される隠れベクトルは、別の線形マップによって変換される。主要ベクトルへ線形マップは、モデルがデータを表現する最適な方法を見つけるための十分な自由度を与えるのに役立ちます。
次に、クエリとキーを内積によって比較します。理想的には、モデルは次のようなキーと値を計算することを学習しているはずです。大きい、は小さく、残りは非常に小さい。これは、アテンション重みはエンコーダーの0番目の隠れベクトルに大部分適用され、1番目には少し適用され、残りにはほとんど適用されないと解釈できる。
適切な重み付き和を作成するために、このドット積のリストを確率分布に変換する必要があります。これはソフトマックス関数によって実現でき、それによってアテンション重みが得られます。これは、コンテキストベクトルを計算するために使用されます。
どここれらは値ベクトルであり、モデルが値を表現する最適な方法を見つける自由度を与えるために、別の行列によって線形変換されます。行列がない場合、すると、モデルはキーと値の両方に同じ隠れベクトルを使用することを強いられることになり、これら2つのタスクは同じではないため、適切ではない可能性があります。

これはドットアテンション機構です。このセクションで説明する特定のバージョンは「デコーダークロスアテンション」と呼ばれ、出力コンテキストベクトルはデコーダーによって使用され、入力キーと値はエンコーダーから取得されますが、クエリはデコーダーから取得されるため、「クロスアテンション」と呼ばれます。
より簡潔に書くと、次のようになります。行列は、行がクエリベクトルに注意してください。は必ずしもキーバリューベクトルと同じではありません実際には、クエリベクトル、キーベクトル、値ベクトルがすべて異なることも理論的には可能ですが、実際にはそのようなことはほとんど行われません。


2019年、Facebookは微分方程式の記号積分と解法への利用を発表した。同社は、Mathematica、MATLAB、Mapleなどの商用ソリューションよりも高速かつ高精度で複雑な方程式を解くことができると主張した。まず、表記上の特異性を避けるために方程式をツリー構造に解析する。次に、LSTMニューラルネットワークが標準的なパターン認識機能を適用してツリーを処理する。[ 14 ] [ 15 ]
2020年、Googleは341GBのデータセットでトレーニングされた26億個のパラメータを持つseq2seqベースのチャットボット、Meenaをリリースした。Googleは、このチャットボットはOpenAIのGPT-2よりも1.7倍のモデル容量を持つと主張した。[ 4 ]
2022年、Amazonは中規模(200億パラメータ)のseq2seq言語モデルであるAlexaTM 20Bを発表しました。これはエンコーダー・デコーダーを使用して、少数のサンプル学習を実現します。エンコーダーは入力の表現を出力し、デコーダーはそれを入力として使用して、入力を別の言語に翻訳するなど、特定のタスクを実行します。このモデルは、言語翻訳と要約において、はるかに大規模なGPT-3を凌駕しています。トレーニングでは、ノイズ除去(文字列内の欠落したテキストを適切に挿入)と因果言語モデリング(入力テキストを意味のある形で拡張)を組み合わせています。これにより、大規模なトレーニングワークフローなしで、異なる言語間で機能を追加できます。AlexaTM 20Bは、すべてのFlores-101言語ペアで少数のサンプル学習タスクにおいて最先端のパフォーマンスを達成し、いくつかのタスクでGPT-3を凌駕しました。[ 16 ]
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)