読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】Seq2Seqの翻訳、長い文になるとボロボロ。Attentionで何が解決したん?【G検定】

10レスカテゴリ:AI・機械学習
1: 名無しさん

Seq2SeqにAttentionを足したら翻訳がよくなった、って話の中身が分からん

2: 名無しさん

前提のおさらい。LSTMやGRUは、ゲートで情報の流れを調節して、ふつうのRNNより長い系列を扱える。系列を読み終わったときの隠れ状態に、それまでの内容がまとまる

3: 名無しさん

>>1
Seq2Seqは、系列を入れて系列を出すモデル。エンコーダのRNNで入力の文を読みこんで1本のベクトルにまとめ、デコーダのRNNがそのベクトルから訳文を1語ずつ作る
サツケヴァーらの2014年の論文で、LSTMを使った翻訳として示された

4: 名無しさん

>>3
問題は、どんなに長い文でも決まった長さのベクトル1本に押しこむこと。短い文ならええけど、50語の文を同じ大きさに詰めると、前のほうの情報がこぼれる

5: 名無しさん

>>4
そこでAttention。デコーダが1語作るたびに、エンコーダの全時刻の隠れ状態を見直して、今どこを見るべきかの重みをつけて混ぜる
バダナウらの論文(2014年に公開)で翻訳に入れられた

6: 名無しさん

>>5
数字で。入力の3語のエンコーダの状態が 、、 で、今のデコーダの状態との相性の点数が 2, 1, 0 やったとする
ソフトマックスで重みにすると約 0.67, 0.24, 0.09

この混ぜたベクトル(文脈ベクトル)を使って次の語を出す。1語目と相性がええから、1語目の情報が強く入る

7: 名無しさん

>>6
1語ごとに見る場所を変えられるから、文が長くなっても、ベクトル1本に全部を詰める必要がなくなったんか

8: 名無しさん

>>5
このように、デコーダ側(出力の文)からエンコーダ側(入力の文)を見るAttentionを、Source-Target Attentionという。入力と出力の2つの系列のあいだのAttention

9: 名無しさん

>>8
重みを並べると、訳語と原語のどれが対応してるかも見える。英語と日本語みたいに語順が違っても、重みが大きいところが斜めにずれて並ぶ

10: 名無しさん

>>9
ただ、これでもエンコーダもデコーダもRNNやから、1語ずつ順番に計算するしかなくて並列にできん。そこをRNNなしでAttentionだけにしたのがTransformer

管理人のひとこと