
書記が数学やるだけ#801 seq2seq with attentionの概要
seq2seq with attentionについて,大まかな構造を見ていく。
問題

説明
seq2seqでは,系列データから系列データへの変換を,エンコーダとデコーダに分けることにより行う。要するにRNNを2つくっつけたものである。
Sutskever, I., Vinyals, O., and Le, Q. V. Sequence to sequence learning with neural networks. In NIPS, 2014.

単純なseq2seqモデルの改良案として,入力から重要度として重みづけするAttention機構が追加された。これは後にTransformerにおいてMulti-head Attentionとして重要な部品となる。
Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. "Neural machine translation by jointly learning to align and translate." In ICLR, 2015.
[Luong et al., 2015] M.-T. Luong, H. Pham, and C. D. Manning, Effective approaches to attention-based neural machine translation. In EMNLP, 2015.


なお,機械翻訳では双方向RNNが採用されることもある。これにより順方向と逆方向の文脈を同時に捉えられ、かつ複数層にすることで文の抽象的な特徴も学習できる。

解答
RNNは,入力と出力が系列データか非系列データかで分類ができる。

文章を用いた感情分析では,入力は文章(系列データ),出力は感情の分類(非系列データ)のため,many to oneモデルを用いる。本モデルでは,潜在変数は最後の項のみ用いる。

画像を文章で説明する場合,入力は画像(非系列データ),出力は文章(系列データ)なので,one to manyモデルを用いる。

音声認識による文章入力では,入力は音声(系列データ),出力:文章(系列データ)なので,many to manyモデルを用いる。ここで,音声と文章は順番が対応づけられているため,以下のようにRNNを直接構築するだけでも良い。

機械翻訳では,入力と出力が共に文章(系列データ)であり,many to manyモデルを用いる。上と違い,入力と出力が順番が対応づけられていない。そこで,エンコーダで元の言語から意味を抽出し,デコーダで意味と元の言語から別の言語へと翻訳する(seq2seq)。

Attention機構の中身について。大事なのは,再構築したいベクトルと参照元ベクトルの内積により,重要度を計算しているところである。これにより重みづけ和をとることで,元の文章から重要な文脈を取り出すことができる。

Bahdanau Attentionのスコアについて,現在の文脈をst,i番目の単語の特徴をhiで示し,それぞれに重み行列をかけて足したものに非活性化関数tamhを通す。その後ソフトマックスを通して正規化し,隠れ状態をかけることで単語の重要度をまとめる。


Luong Attentionでは,デコーダのひとつ前の状態との内積を取る方法をとっており,計算がより高速である。


本記事のもくじはこちら: