seq2seq with attention

1. seq2seq with attention の概要

seq2seq with attention [Bahdanau et al. 2015] は,seq2seqアテンション機構を追加して拡張することで,変換精度と解釈性を向上させた系列対系列変換モデルである.

この記事では,「ニューラル機械翻訳」むけのseq2seq with attentionの初期モデル[Bahdanau et al. 2015] [Luong et al., 2015]ついて,その仕組みを紹介したのち(2節),アテンション機構を導入したことで生まれる利点を整理する(4節).

seq2seq with attentionは,機械翻訳以外にも,画像のキャプショニングやテキストからの音声合成(Text-to-Speech)など,系列間ドメイン変換やモーダル間系列変換で広く応用されている.また,seq2seq向けに登場したアテンション機構であるが,その後seq2seq以外の問題にも,汎用的な拡張機構として応用されていく.よってseq2seq with attentionは,ディープラーニング界隈で,最も重要な進歩の1つといえる.ただし,Transformer [Vaswani et al.,2017] の登場以降,多くの系列対系列変換問題ではTransformerを用いるのが主流となってきている.

seq2seq with attentionでは,デコーダRNN側で次の単語を毎フレーム予測する際に,エンコーダRNN側の各入力単語へのアテンション係数を,単語間の類似度計算的なスコア関数(3.2節)から推定する.各フレームごとに,スコア関数によって適応的に変化するアテンション係数値を重みに用いて,単語を予測する(3.1節).

このように,毎フレームで異なる入力コンテキストを使用して,単語予測ができるのが,アテンション無しの「プレーンなseq2seq」との違いである.また,その(重みづけに用いた)アテンション係数を可視化することで,入力系列と出力系列(の予測)との対応関係を行列として可視化できて把握できるので,モデルの説明性が向上する利点も得られる(3.3節, 3.4節).

一方,系列対系列変換問題以外でも,アテンション機構は頻繁に使用されている.ただし,この記事では画像認識で用いられるアテンション機構は対象外とする.すなわち,機械翻訳モデル向けのseq2seq with attentionの初提案である [Bahdanau et al. 2015], [Luong et al., 2015]の紹介に,記事内容を限定した(画像キャプション生成やTransformerなど,その他のモデルやドメインでのアテンション機構の応用については,親記事を参照)

1.1 記事の構成

2節以降は以下の構成で,seq2seq with attention について紹介する:

  • 2節 seq2seqの登場と,基本的仕組みの復習(attention登場前夜の話)
  • 3節 seq2seq with attention
    • 3.1 seq2seq with attentionの一般形
    • 3.2 スコア関数の例
    • 3.3 アテンション係数による単語間位置合わせ(アラインメント)
    • 3.4 コンテキストベクトルという仕組みの利点
  • 4節 まとめ

2節で前身となるseq2seqを紹介(復習)したのち,それにアテンションを追加したseq2seq with attentionを3節で紹介する.

2. Attention の登場前夜:seq2seqが登場

アテンション登場の前夜,ディープニューラルネットを用いた初めての機械翻訳システムのseq2seq(sequence-to-sequence) [Sutskever et al., 2014] が登場した.seq2seq [Sutskever et al., 2014] は,RNNによるニューラル言語モデル [Mikolov et al. , 2011], [Sutskever et al., 2010] を2つ直列に並べて接続した,言語変換モデルである.要するに「RNN2つを,直列に結合したEncoder-Decoder モデル」であり,文章を入力として,別モーダルの文章を生成できる.

seq2seqにより,入力言語がRNNによってエンコードされた結果の潜在変数ベクトルを入力として,出力言語のデコーダRNNが,対応する出力言語単語を,1単語ずつ生成する処理を繰り返す.これによりseq2seqは,入力文と同じ意味の翻訳済み文章を出力す.

3. seq2seq with attention : 機械翻訳向けに登場した,最初のアテンション機構

[Bahdanau et al., 2015] は,seq2seqにアテンション機構を追加した seq2seq with attention を,ニューラル機械翻訳(Neural machine translation)向けに提案した.また,同時期の [Luong et al., 2015] は,seq2seq with attention をシンプルに改良したものを提案した.

3.1 seq2seq with attention の一般形: soft attention

この節ではsoft attentionを用いたニューラル機械翻訳を定式化し,seq2seq with attentionの一般系として紹介する[Bahdanau et al., 2015], [Luong et al., 2015].argmaxで,最大アテンション係数値のベクトルだけ1つを,コンテキストベクトルとして採用するhard Attention とよぶ.それに対し,全ての入力単語ベクトルの,アテンション係数による重み付け和としてコンテキストベクトルを計算する方法を,soft attentionと各論文では呼び分ける.

seq2seq with attention
図1seq2seq with attention

図1は,seq2seqに soft attentionを挿入して拡張した「seq2seq with attention」の図解である.

seq2seq with attentionの予測手順は,以下の3手順で構成される:

  1. seq2seqの予測系列の,現ステップ$i$の潜在変数ベクトル$\bm{h}_{i}$から隠れベクトル$\bm{h}_{i+1}$を予測したい.そこで,$\bm{h}_i$に対する,入力文章中の各単語の隠れ特徴$\bm{s}_j$ のアテンション係数 $a_j (i)$ を,スコア関数 (2.3節) を用いてまず予測する($a_j (i)$ は関連度スコア(relevance score)と呼ぶこともある).
  2. アテンション係数を用いて線形重み付けされた,新しい特徴 $\bm{c}_j = a_j(1) \bm{s}_1 + a_j(2) \bm{s}_2, \ldots, + a_j(N) \bm{s}_N$ をコンテキストベクトルと呼ぶ.$\bm{c}_i$も新たにDecoderの入力として加え,次のフレーム$i+1$潜在変数$\bm{h}_{i+1}$を,Decoderで予測する.その後,$\bm{h}_{i+1}$から単語$\bm{y}_{i+1}$も予測する.
  3. 上記の1と2の手順を,<EOS>が次の単語として予測されるまで繰り返す.

$a_j (i)$は重み付け係数であることから,N個の$a_j (i)$の合計が1になるよう正規化する必要がある ( $ \sum_j^N a_j (i) = 1 $ ) .上記の3ステップのうち手順1と手順2の詳細は以下の通りである:

手順1:

$a_j (i)$の算出の際には,まずスコア関数から$\text{score}(\bm{s}_j,\bm{h}_i)$を,N個の$\bm{s}^{(j)}$ に対して全て計算する.

ここで,毎フレームでのアテンション係数値の分布が整うようにしたい.そこで,softmax関数によるargmax近似処理を行い,N個のアテンション係数の和が1になるようにする:

\[
a_j(i) = \frac{\exp( \text{score}(\bm{s}_j, \bm{h}_i)}
{\sum_j^N \exp(\text{score}(\bm{s}_j,\bm{h}_i))}
\]

以上のように前半の手順1では,入力系列の補助入力ベクトル$N$個(コンテキスト)に対して,類似度スコア関数$\text{score}(\bm{s}_j,\bm{h}_i)$で2者の関連度を計算したのち,それらにsoftmaxを適用した$a_j(i)$を最終的なアテンション係数として算出する.

手順2:

後半の手順2では,アテンション係数で重みづけしたコンテキストベクトルを作成し,それを補助入力としてメインの推定ネットワークの入力に送ることを行う:

  • アテンション係数$a_j (i)$を用いて,全入力単語埋め込みベクトルの重み付け和としてコンテキストベクトル$\bm{c}_i$を計算する.
  • 次に,その$\bm{c}_i$を次単語予測時に,補助入力ベクトルとして用いる.これにより,入力全体のコンテキスト(重み付け)も加味して,次の単語の予測を行えるようになる.

アテンション機構なしの元の seq2seq(2節)では,入力文章全体が,最後の隠れベクトル1つのみに(固定して)エンコードされた.それに対し,seq2seq with attentionでは,出力予測の毎フレームで,アテンション値に沿って,注意先の入力単語が適応的に変化するコンテキスト特徴ベクトルを使用することができる.(3.3節,3.4節でその利点についてまとめる)

3.2 seq2seq with attention に用いる「スコア関数」の例

単語間の予測への関連度をアテンション係数として学習する「スコア関数」のサブネットワークには,例えば [Luong et al. 2015] だと,以下の3種類が試されている:

  • $\text{score}(\bm{s}_j, \bm{h}_i) = \bm{s}_j \cdot \bm{h}_i$ (ドット積.学習不可なので関数の外に線形層を設ける)
  • $\text{score}(\bm{s}_j, \bm{h}_i) = \bm{s}_j \cdot \bm{W}_a \bm{h}_i$ (バイリニアモデル.学習可能)
  • $\text{score}(\bm{s}_j, \bm{h}_i) = \bm{v}_a^\mathsf{T} \tanh (\bm{W}_a [\bm{s}_j ; \bm{h}_i]) $ (ベクトル結合.学習可能)

各関数の形を見るとわかるように,スコア関数は,2つのベクトル間の距離尺度のような関連度(relevance)を学習させるための単純な関数を用意している.

初期のsoft-attentionでは,このような単純なベクトル同士の足し算や掛け算をスコア関数として設定し,アテンション係数を予測する.つまり,スコア関数はdesign choiceであり,設計時に自由に決める.

もちろん上記3つの例のような計算コストの少ないスコア関数ではないものを使ってもよく,3層や4層のニューラルネットワークを使用してもかまわないが,その分だけ計算コストはかかるし,過学習の危険性も増す.

3.3 アテンション導入の利点: 単語間の位置あわせ指標にもなっている

seq2seq with attentionによる2言語間のアテンション係数の可視化
図2 機械翻訳seq2seq with attentionにおける単語間アテンション係数の可視化Luong et al 2015 から引用

図2は, [Luong et al., 2015] にて翻訳後のドイツ語と予測した英語文の間で,単語ペア同士の全アテンション係数を,表に可視化したものである.ドイツ語の次の1単語を予測する時に,入力文の英単語のどの単語と,次の予測単語の関連度が高いかの重み係数を,(スコア関数が)アテンション係数として推定した結果である.このようにseq2seq with attentionでは,言語間の単語同士の対応付け(アラインメント)重み係数の強さだけでシンプルに把握できる

この対応づけは,各フレームでの隠れ状態と入力系列の各単語間で,関連度をスコア関数に学習するから達成できることである.単純なスカラー係数であるアテンション係数に,予測における各入力単語の重要度(出力単語との関連度)が学習されるので,モデルの解釈性もよくなりデバッグもしやすく,学習モデルの理解性も高くなる利点が産まれている.

なおかつ,そのアテンション係数をコンテキストベクトル作成のための,各入力単語ベクトルの重み付けに用いるので,重要な箇所にだけ注意を限定し単語の予測を実行できる.つまり,図1のように,毎フレームごとに異なる入力単語へのアテンションが強くなる動的に入力ベクトルを変化できるモデルへ,元のモデルを拡張できる」点が,アテンション機構でseq2seqモデルを拡張する際の重要な利点である.

3.4 コンテキストベクトルの利点

フレームごとに変化するコンテキストベクトル (seq2seq with attention)
図3 フレームごとに適応的に変化するコンテキストベクトル$bmc i$ をDecoderに受け渡す様子

3.3節でアテンション係数の具体的な可視化例を見たが,ここではアテンション係数と連動する「コンテキストベクトル」の利点についても,確認しておきたい.

図3は,フレームごとに異なるコンテキストベクトルを各フレームで計算してデコーダに受け渡している様子を,図2よりも大まかに示して見やすくした図である.

以前のseq2seqでは,Encoderの最後のフレームMの1つの潜在状態$\bm{s}_M$のみ,デコーダへ受け渡していた.それがseq2seq with attentionでは,次の単語を予測するのに適する入力単語群へのアテンションを用いたコンテキストベクトルに動的に変化する.3.3節でも述べたように,これが,コンテキストベクトルを導入したメリットである.

図4のように,各フレーム$i$において,個別の異なるコンテキスト$\bm{c}_{i}$が受け渡されることで,毎フレーム異なる入力単語群にだけ注目度合いを強めた(スカラー係数で重みづけした)単語予測が可能となった.

4. まとめ

seq2seq with attentionについて,その言語翻訳における仕組みを一般形として紹介した.

元のseq2seqの課題は,固定された1つの隠れ状態ベクトルしかエンコーダRNNからは受け取れないという点にあった.そこに,類似度スコア関数を拡張する「アテンション機構」を導入したことで,動的に入力単語を変化させた結果の「コンテキストベクトル」もデコーダRNNが使用できるようになった.おかげ,毎フレームで異なる入力単語コンテキストだけに的をしぼった予測が可能となり,系列対系列変換の精度が向上した.また,アテンション係数は,入出力単語間の関連度行列を形成し,入出力間で,どの単語動詞が関連性が高いかも可視化できるようになった.

seq2seq with attentionは,仕組みこそ単純だが,高精度が達成できる革新的なモデルとなり,非常に幅広いところで,系列対系列変換問題に用いられるようになった.その後は,系列対系列モデルの更なる発展版であるTransformerが産まれるきっかけになったともいえる.

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.
  • [Luong et al., 2015] M.-T. Luong, H. Pham, and C. D. Manning, Effective approaches to attention-based neural machine translation. In EMNLP, 2015.
  • [Parikh et al., 2016] Ankur Parikh, Oscar Täckström, Dipanjan Das, and Jakob Uszkoreit. A decomposable attention model. In EMNLP, 2016.
  • [Sutskever et al., 2011] Sutskever I, Martens J, Hinton GE. Generating text with recurrent neural networks. In ICML, 2011.
  • [Sutskever et al., 2014] Sutskever, I., Vinyals, O., and Le, Q. V. Sequence to sequence learning with neural networks. In NIPS, 2014.
  • [Uday et al., 2019] Deep learning for NLP and speech recognition. Vol. 84. Cham: Springer, 2019.
  • [Vaswani et al., 2017] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, 2017.
  • [Vinyals et al., 2015] Oriol Vinyals, Alexander Toshev, Samy Bengio, Dumitru Erhan. Show and Tell: A Neural Image Caption Generator. In, CVPR 2015.
  • [Wang et al., 2018] Wang, X., Girshick, R., Gupta, A. and He, K.,. Non-local neural networks. CVPR 2018
  • [Woo et al., 2018] Woo, S., Park, J., Lee, J.Y. and Kweon, I.S.. Cbam: Convolutional block attention module. In , ECCV 2018.
  • [Xu et al., 2015] Xu, K., Ba, J., Kiros, R., Cho, K., Courville, A., Salakhudinov, R., Zemel, R., Bengio, Y.: Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. In ICML, 2015.

参考書籍

参照外部リンク