この記事は、スタンフォードcs224nlec08から翻訳および要約されています。
1. Seq2seq
1.1seq2seqトレーニング
seq2seqモデル全体が、エンコーダーRNNとデコーダーRNNの2つの部分に分割されていることがわかります。
エンコーダRNNの一部、第RNN(ここでバニラRNN、LSTM、GRU、等であることができる)、及び初期のように、文全体の符号化表現として、最後の隠れ状態を使用することにより、翻訳されるべき元のテキストを渡しデコーダーRNNの非表示状態入力デコーダーRNNに移動します。
デコーダRNNの一部の入力各時間ステップは、訳語埋め込みがある。の隠された状態の各ステップであり、実際の単語を全体語彙の各単語の確率分布を得るために、完全に接続された層を通過させ、そして(1 -ホットエンコーディング)比較するには、クロスエントロピー損失を取得します。すべてのクロスエントロピー損失を平均して、全体的な損失を取得します。
1.2Seq2seqテスト
1.2.1ネットワーク構造
デコーダーRNNの最初の入力は< START >であり、各ステップの非表示状態は完全に接続されたレイヤーを通過して語彙全体の確率分布を取得し、確率が最も高い単語(argmax)がでの翻訳として使用されます。今回。各タイムステップの翻訳ワードは、次のタイムステップの入力として使用され、最終出力< END >まで続きます。
1.2.2極小ビーム検索を解決する
欲張りデコード:
欲張りデコード方法は、各ステップの次のステップの入力として、最も確率の高い単語を選択することです。この方法の問題は、ロールバックできないことです->ローカル最小値に分類される可能性があります。
そこで、ビームサーチ法を導入しました。
ビーム検索の中心的な考え方は、各ステップでk個の最も可能性の高い翻訳単語を考慮することです。kはビームサイズと呼ばれます。最後に、いくつかの翻訳結果が得られ、これらの結果は仮説と呼ばれ、最も確率の高い仮説を選択できます。
たとえば、k = 2が選択されている場合、il a'm'entarte:
<START>を翻訳した後に最も確率が高い2つの単語は「I」と「he」であり、確率の対数値は-0.9です。それぞれ-0.7。これらの2つの単語を取得し、再帰的に続行します。「<start> he」からの確率が最も高い2つの単語は、「hit」と「struck」であり、確率の対数が前の-0.7にそれぞれ追加されます。-1.7 -2.9、つまり、「彼がヒットした」と「彼がヒットした」のスコアは、それぞれ-1.7と-2.9です。同様に、「Iwas」と「Igot」のスコアはそれぞれ-1.6と-1.8です。このステップで、スコアが最も高い2つの文、「he hit」(-1.7)と「Iwas」(- 1.6))再帰的にダウンし、ここでいくつかの手順を省略します。
数回繰り返した後、次のようになります。
「彼はパイで私を殴った」という最終スコアが最も高い文を取得します。
ビーム検索の終了条件:
ビーム検索では、単語の選択方法が異なると<END>が異なる時間に表示されるため、各仮説(翻訳された文)の長さが異なります。仮説が最終的に<END>を予測するとき、それは文が予測されたことを意味します。最初にこの文を脇に置いてから、ビーム検索を使用して他の文を検索できます。
したがって、ビーム検索の終了条件は次のようになります。
- タイムステップTに到達
- n個の完全な仮説を取得
最良の仮説を選択してください:xx
を翻訳する必要がある外国の文の場合x、いくつかの可能な仮説があります。各仮説についてy 1、... yt y_1、... y_tY1、。。。Yトンどちらもスコアを計算します:
しかし、これには非常に明白な問題があります!つまり、文が長くなるほど、スコアは低くなります。これは、乗算によって確率値がますます小さくなるためです。もちろん、この問題を解決する方法も非常に簡単です。つまり、各文の長さを平均することです。
しかし、前の例を思い出して
ください。長さを平均していないようですよね?これは、各ステップの文の長さが同じであり、平均と不均等の間に違いがないためです。
1.3seq2seqの他のアプリケーション
- テキストの要約(長いテキスト->短いテキスト)。テキストの概要については、こちらをご覧ください:https://blog.csdn.net/weixin_41332009/article/details/111475885
- 対话(前の発話->次の発話)
- コード生成(自然言語-> pythonコード)、もちろんこれは難しすぎます...
1.4機械翻訳の評価
BLEU(Bilingual Evaluation Understudy )は、類似性の計算のために、機械翻訳の結果を人間の翻訳結果(グラウンドトゥルース)と比較します。ここでのいわゆる「類似性」は、2つの1グラム、2グラム... nグラムの一致度を使用して計算されます。
同時に、短い翻訳にはペナルティを課すことを忘れないでください。これは、翻訳を非常に短くして特定の単語のみを翻訳する場合、n-gramのオーバーラップを高くする必要があるためですが、これはそれほどではありません。良い翻訳!
BLEU評価は非常に効果的ですが、完全ではない場合もあります。これは、外国の文には多くの翻訳方法が考えられるためです。完全一致にnグラムのみを使用すると、元々良好な翻訳のスコアが低くなる可能性があります。
1.5機械翻訳の難しさ
- どのように我々は単にそれの翻訳を見ていない言葉(語彙外の単語、<UNK>)に?
- トレーニングセットとテストセットは非常に似ている必要があります。(トレーニングにウィキペディアのような非常に正式なコーパスを使用し、テストとして人々を使用してTwitterでチャットする場合、効果は良くありません)
- 長いテキストを翻訳するのは難しい
- 一部の言語(Thai-Engなど)には並列コーパスがほとんどありません
- トレーニングコーパスのいくつかのバイアスは、機械翻訳アルゴリズムによっても学習され、その結果、このバイアスが翻訳テストに反映されます。
例:(
この裸の性差別ではないので、プログラムは納得していません)しかし、これは、トレーニングコーパスでは、「彼女」が「看護師」である可能性が高く、「彼」が「プログラマー」である可能性が高いためです。 。
もっと恐ろしい例を見てみましょう。
これは、ソマリ語の対訳コーパスが主に「聖書」に基づいているためです。したがって、ここでの機械翻訳アルゴリズムは、言語モデルを使用してランダムな単語を生成しているだけです...
2.注意メカニズム
2.1注意なしで何が起こりますか?
-
オレンジ色のボックスはソースセンテンス全体のエンコーディングです。ソースセンテンスのすべての情報をキャプチャする必要があります—>情報のボトルネック!(この単一のベクトルに過度のプレッシャーをかけると、ソースセンテンスを適切に表現できなくなります。)
-
ターゲットセンテンスには入力が1つ、つまりオレンジ色のボックスしかないため、位置情報は提供されません。
したがって、この情報のボトルネックの問題を解決するために注意メカニズムが導入されました。
2.2注意のコアアイデア
デコーダーの各ステップで、エンコーダーへの直接接続を使用して、ソースセンテンスの特定の部分に焦点を合わせます。
例:
デコーダーの各タイムステップtについて、デコーダーとエンコーダーの各ステップの内積をスコアとして計算します。次に、これらのスコアをソフトマックスにして、確率分布に変換します。ご覧のとおり、最初の列が最も高くなっています。つまり、<start>を翻訳するときは、ソースセンテンスの最初の位置に特別な注意を払う必要があります。
確率分布を使用して、エンコーダーの各ステップの非表示状態を乗算し、重み付けされたソースセンテンス表現を取得します。
その後、ソースセンテンスの表現とデコーダーRNNの各ステップの非表示状態が一緒にスプライスされて長いベクトルが取得されます。次に、完全に接続されたネットワークのレイヤーを介して、語彙全体の確率分布が取得されます。argmaxを使用して、このステップの予測値を取得します。