seq2seq(sequence-to-sequence)

1 seq2seqとは (概要)

seq2seq(sequence-to-sequence) とは,機械翻訳で初めに用いられた,テキストなど系列データ同士の変換モデルをRNN2つから構成されるRNN Encoder-Decoder [Cho et al., 2014] で学習する仕組みである [Kalchbrenner and Blunsom, 2013], [Sutskever et al., 2014] .

この記事では,seq2seqの機械翻訳向けの基本形について述べる.seq2seq は,のちにアテンション機構を加えたseq2seq with attention [Bahdanau et al., 2015] が提案されて,汎用的に様々な系列変換問題に使用されるようになり,その後の Transformer へもつながる意味で,このseq2seqの提案は,深層学習時代の最も重要なターニングポイントの1つである.(※ 著者がOpenAIのIlya Sutskever氏である点も重要である).

2 seq2seq による機械翻訳

seq2seq
図1 seq2seqによる機械翻訳

seq2seqの機械翻訳問題では,系列長$N$の入力文$\bm{X}$ (言語A: ここでは英語)と,入力文と同じ意味を持つ系列長さ$N$の変換後の出力文$\bm{Y}$(Aと異なる言語B:ここでは日本語)のペアを用意し,それらの言語間で自動翻訳が行えるようにseq2seqを学習する (図1):

3.1 seq2seqの構成

まず,入力文と出力文の正しいペア1つを,以下のように定義する:

  • 入力文:$\bm{X} = \{\bm{x}^{(1)},\bm{x}^{(2)}, \ldots,\bm{x}^{(N)} \}$
  • 出力文:$\bm{Y} = \{\bm{y}^{(1)},\bm{y}^{(2)}, \ldots,\bm{y}^{(M)} \}$

ここで,$\bm{x}^{(j)}$と$\bm{y}^{(i)}$には,共に単語埋め込みベクトル行列\bm{E}を学習し,元の15,000語彙の1-of-Kベクトルから,100次元程度のベクトルに射影した,埋め込みベクトルを用いる [Cho et al., 2014].

また,語彙15,000は,各言語における頻出ワード上位15,000の単語からデータセットの単語頻度解析を通じて決める.それ以外を未知語として [UNK] (UnknownのUNK)という特別トークンとして取り扱い,語彙から除外して1クラスにまとめて扱えるようにする [Cho et al., 2014].以上が埋め込み単語ベクトルの準備である.

さて,eq2seq (図3)による機械翻訳では,以下の2つの再帰型ニューラル言語モデル(RNNLM)を,中間の潜在ベクトル1つだけで接続した「RNN Encoder-Decoder」を使用して,言語間の変換を行う:

  • エンコーダRNN:入力系列をエンコードして単語系列を潜在変数化する (図1 青色)
  • デコーダRNN:出力系列をデコードし単語を予測して,順に生成する (図1 赤色)

また,エンコーダRNNの$j$番目の隠れ状態ベクトルを$\bm{s}^{(j)}$とし,デコーダRNNの$i$番目の潜在状態ベクトルを$\bm{h}^{(i)}$とする.

  • エンコーダRNNの系列の,隠れ状態: $\{ \bm{s}^{(1)}, \bm{s}^{(2)}, \ldots,\bm{s}^{(j)}, \ldots, \bm{s}^{(N)} \}$
  • デコーダRNNの系列の,隠れ状態: $\{ \bm{h}^{(1)}, \bm{h}^{(2)}, \ldots, \bm{h}^{(i)},\ldots, \bm{h}^{(M)}\}$

前半のエンコーダRNNでは,他言語に変換したい「ソース言語」の文章全体を,隠れ層ベクトル$\bm{s}^{(j)}$にエンコードする.後半のデコーダRNNでは,エンコーダから受けわたされた最後の隠れ層ベクトル$\bm{s}^{(N)}$をもとに,「ターゲット言語」の単語を1つ生成する.そして,生成された単語も次の単語を予測する補助入力として用いながら,ターゲット言語の文章全体をRNNで1単語ずつ生成していく.

ここで,入力$\bm{x}^{(j)}$と出力$\bm{y}^{(i)}$には,汎用的な単語の分散表現のベクトル(word2vecなど)を用いるのも良い.しかし,機械翻訳ではソース言語とターゲット言語の統計から限定された語彙をデータセット文から構築することから,専用の埋め込み行列$\bm{E}$を用意し,seq2seqと一緒に学習することが普通である.すなわち,入力文の 1-of-Kベクトル入力を埋め込み行列$\bm{E}$との積を取ることで低次元埋め込みベクトル化し,その単語埋め込みベクトルをEncoderへ入力するのが定石となっており,ターゲット言語でも,埋め込み行列$\bm{E}$を別途学習する.

先述の [Cho et al., 2014]よりも,seq2seq with attentionの [Bahdanau et al., 2015] の supplemental material のA2 節を読むと,式とともに詳細に説明しているので,理解しやすいと思う. この埋め込み行列も学習するのは,Transformerでも同様である.

3.2 処理手順

機械翻訳seq2seqは,前半RNN (RNNLMによる入力文解釈), 真ん中での隠れ状態の受け渡し, 後半RNN (RNNLM による出力文生成)の,「3段階の処理」で構成される:

(1) 前半RNNの処理 (翻訳元の言語Aのテキストを解釈)

前半(入力文)では,エンコーダのRNNを用いて,翻訳元であるソース言語のテキスト全体を隠れ層ベクトルにエンコードする.

(2) RNN間で潜在状態ベクトルを受け渡し

Encoder RNNの最後の$\bm{s}^{(N)}$が,Decoder RNNの最初の$\bm{h}^{(1)}$(図3 中央のピンクの潜在変数ベクトル)に接続している.この橋渡しにより,Encoder RNNで符号化された潜在変数ベクトルがDecoder RNNへと受け渡され,それをもとにDecoder RNNにより翻訳後の言語での文章生成が行われる.

(3) 後半RNNの処理 (翻訳先の言語Bのテキストを生成)

後半(出力文)では,デコーダのRNNで,エンコーダから得たソース言語の隠れ層のベクトル(潜在状態ベクトル)をもとに,単語を1つ生成しては,その生成された単語も次の単語を予測する入力として用いながら,文章全体をでコーダ RNNで生成する.

Decorder-RNNでは,各ステップにおいて,次の潜在変数ベクトル$\bm{h}^{(i+1)}$を,1つ前の予測単語$\bm{y}_{i-1}$と隠れ状態$\bm{h}^{(i)}$から予測する (図3, 右側).<EOS> =End of Sentence が予測された時点で翻訳は終了である.

3 seq2seq with attentionへの発展.

seq2seqでは入力系列が長い場合に,RNNが推定していく潜在変数が,初期の単語の情報を覚えておくことができず,出力単語数が多いとその潜在変数の値が似通ってしまう問題があった.

そこで,この問題を解決するために,seq2seqにアテンション機構を挿入して拡張をおこなった seq2seq with attention [Bahdanau et al., 2015], [Luong et al., 2015] が提案された.seq2seq with attention では,デコード中の各フレームで動的に変化する入力コンテキストを得られる.これにより,毎フレーム$t$で各入力単語群への重要度を変えた文章の生成が可能になった. .

また,seq2seq with attentionは,その他の「言語 v.s 別モーダル間」の変換モデルに応用されていく.例えば音声認識やText-to-speechに,画像キャプショニングやAudio Visual Embeddingなどで,seq2seq with attentionは応用される.そして,その流れはTransformerが登場しても継続する.( 詳しくは,親記事のアテンション機構と系列対系列変換の記事も参照)

4 まとめ

この記事では,機械翻訳向けに提案されたseq2seq (RNN Encoder-decoder)を紹介した.seq2seqによる言語翻訳は,再帰型ニューラル言語モデルを2つ繋げた拡張版として登場し,ニューラル機械翻訳を実現し,現代の高精度な機械翻訳製品の登場につながっていく,大元の技術となった.seq2seq with attentionにすぐ発展し,その後のTransforrmerやBERTにつながる重要な技術である.

References

  • [Bahdanau et al., 2015] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “Neural machine translation by jointly learning to align and translate.” In ICLR, 2015.
  • [Cho et al., 2014] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. 2014. Learning phrase representations using RNN encoder-decoder for statistical machine translation. In EMNLP.
  • [Kalchbrenner and Blunsom, 2013] N. Kalchbrenner and P. Blunsom, “Recurrent continuous translation models,” In EMNLP, 2013.
  • [Luong et al., 2015] M.-T. Luong, H. Pham, and C. D. Manning, Effective approaches to attention-based neural machine translation. In EMNLP, 2015.
  • [Sutskever et al., 2014] Sutskever, I., Vinyals, O., and Le, Q. V. Sequence to sequence learning with neural networks. In NIPS, 2014.
  • 増村亮. “深層学習に基づく言語モデルと音声言語理解.” 日本音響学会誌 73.1 (2017): 39-46.

参照外部リンク

参考書籍

関連記事