アテンション( Attention ) 機構 : seq2seqから Transformer

1 概要

アテンション機構 (Attention Mechanism)は,視覚注意 (visual attention) にインスパイアされて発展してきた,ディープニューラルネットの拡張機構である.seq2seq / 識別CNNなどの予測ニューラルネットにおいて,出力単語ベクトル/出力ラベルを予測する際に,「どの入力単語ベクトル/局所画像グリッド特徴ベクトル」との「関連度」が強いかを学習した「線形重み係数(= アテンション)」を,追加で挿入したサブネットワーク(スコア関数)で予測できるようにサブネットワークも学習させる.そして,スコア関数により予測した重み係数をテスト時に用いると,注意が高い入力単語ベクトル/入力画像グリッド特徴ベクトルを高く重み付けした,新たなベクトルで予測を行えるようになるという拡張機構である.

系列・集合間の変換問題(機械翻訳,音声認識,画像キャプショニングなど)などによく用いられるアテンション機構は,最初の提案としては,NLP (Natural Language Processing) の seq2seq (※ Sequence-to-Sequenceを略してseq2seq) を用いた系列変換モデルにおいて,従来のseq2seqにアテンション機構を追加した seq2seq with attention が提案され [Bahdanau et al., 2015] [Luong et al. , 2015] (2.2節),NLP(自然言語処理)分野では,文章のQuestion Answeringや読書理解 (Reading Comprehension)など幅広く応用されている.またVision and Languageや音声認識,TTS (text-to-Speech合成) などでも,seq2seq with attention およびTransformer (4節) は頻繁に用いられている.

seq2seq with attentionでは「入力文章の集合の各単語埋め込みベクトルのうち,どの単語が現在のステップでの次の単語の予測に効いてくるか (注意を払うか)/効いてこないか(注意を払わないか)」を,スカラー値のアテンション係数として学習する.これにより,予測に関連するサブ特徴ベクトルを重視して重み付け平均を撮ったコンテキストベクトルを予測時に使用し,入力領域の特徴ベクトルを,予測に重要な単語群だけ注視(重みを高くして優先)するベクトルも用いて予測を行えるようになり,予測精度の向上が期待できる.

NLP向けの使用だけに限らない,汎用的な拡張機構がアテンション機構であり,[Bahdanau et al., 2015] [Luong et al. , 2015]の初期提案の後,NLP以外の様々な問題においても広く応用されている.たとえば画像キャプショニングなどの Vision and Language 問題において,CNN出力グリッドの各局所特徴に対するアテンションを学習する応用が用いられる [岡崎 2018].また,機械翻訳同様に系列変換問題である「音声認識」や「text-to-speech」においても,アテンション機構 (特に4節のTransformer [Vaswani et al., 2017] ) が近年導入されてきている.

1.1 系列変換モデルでのアテンション機構

系列間変換タスクにおけるアテンション機構では.変換前後の「入力文 v.s. 出力文」のあいだで,言語間での単語同士の相関度(関連度)の対応付け(alignment)状況を,アテンション推定を行うサブネットワーク(スコア関数)に追加で学習させる.例えば「英語からドイツ語」への機械翻訳を行うseq2seq with attentionを学習する場合,英語のLSTMをEncoderとして使用し,ドイツ語のLSTMをDecoderとして使用する.入力LSTMには英語文のみを用い,入力LSTMでEncodeされた英語文の情報をもとに,DecoderのRNNを用いてドイツ語の単語を(1単語ずつ先頭から)予測を行う.

図1は,[Luong et al 2015]で,学習されたアテンション係数を可視化したものである (詳細は2.2節).学習後の系列変換モデルにおいて,ドイツ語の各単語を予測する時に,英語のどの単語と関連度(や類似度)が高いかが,アテンション係数を通して把握することができる.したがって,予測モデルの説明可能性 (explainability)も向上する.

attention による別言語間の単語アラインメント
図1 機械翻訳seq2seq with attentionにおける単語間アテンション係数値の可視化.白いほど単語間のアテンション係数の値が高い([Luong et al. , 2015] Figure 7から引用.)

また,画像キャプショニング(3節)でのにseq2seq with attention の使用については,以下の図2 [Xu et al. 2015] のようが「人がフリスビーを投げている」状態の画像を入力とし,出力としてキャプション文 “A woman is throwing a frisbee in a park.” を生成した場合を考えてみよう.この時,出力側RNNが,単語「frisbee」を予測する時には,画像中のフリスビー領域の特徴が,高いアテンション係数値を持つようになり,単語「woman」を出力する時は(強く関連する)画像中の女性の領域特徴のアテンション係数は高い値を持つように,アテンション係数の変化をスコア関数に学習できる.このようにseq2seq with attentionでは,出力単語を予測する時ごとに,入力画像・単語のどこにアテンション(注意)が強く当たるかが,予測ステップごとに適応的に変化する.(詳しくは2.2節)

画像キャプショニングでの attention
図2 [Xu et al. 2015] のFigure 3 より引用.左側が入力画像,下の文章が出力文.右側画像が下線を引いた単語 (frisbee) を出力する際の画像アテンション係数を可視化したもので,フリスビー部分に対応するアテンション係数の値(右側画像)が高くなっている.

1.2 利点と大まかな仕組み

まずは,1.1節でも少し述べたアテンション機構の「利点」と,アテンション機構の「大まかな仕組み」を,2節以降に入る準備として簡潔に整理しておきたい.

利点

アテンション機構では,予測モデルの入力を構成する特徴ベクトル集合に対して,各特徴ベクトルの重要度(Importance)もしくは関連度(Relevance)を表す.潜在重み付け係数の「アテンション係数」を追加で推定する.テスト時に,アテンション係数で重み付けした新しい入力ベクトルを用いることで,注意(attention)の強い特徴ベクトルだけ重み付けして重要視する予測が可能となる.

こうして,各部分特徴(単語やサブ画像領域)にアテンション(どこに注意を払うと予測が良くなるか)が割り振られるので,モデルの解釈可能性(interpretablity)が高くなるのもアテンション機構をディープニューラルネットワークに導入する際のメリットである.従って,初めに提案された自然言語処理向けの応用に限らず,ブラックボックスになりがちなCNN画像認識でも,アテンション機構による拡張を行うことでモデルに説明可能性を得られる価値が出てくる [山下 2019].また,系列変換や複数モーダル入力の間で,どのソース単語とどのターゲット単語が対応づいているかのアラインメント(alignment)が,アテンション係数(もといスコア関数の学習結果)を通して得られるのも利点である.

単語ベクトルや画像ベクトルを計算するEncoderには,事前学習(プレトレーニング)済みの Word2Vecや画像認識CNNを用い,それらの事前学習済みEncoderの重みは固定しておきfine-tuningは行わない.したがって,アテンション機構部分とそれ以外の後半の予測部分の層だけを,新しいデータセットに対して学習すればよいので,End-to-Endの学習コストを抑えながら予測精度向上を狙える利点が出る.

一方,画像認識や音声認識など文章以外の入力を用いる場合でも,アテンションによる対応付けの利点が発揮できる.例えば,図2の画像キャプショニングの例を見ていただくとわかる通り,入力単語に対応するの注意が高い画像領域部分だけ重み付けで優先した特徴を,キャプション生成時の単語予測に用いることになる (詳しくは3節で).これにより,画像中の不要な背景部分を無視でき(画像認識的に)ノイズに強いロバストな変換モデルの学習も同時に達成できる.例えば,物体画像認識器を学習するときも,認識対象の前景マスク部分全体を重要とみなしたアテンション係数が学習されることが多い.また同様に,画像キャプショニング以外のvison and language系のタスクでも,各単語が対応する画像局所領域のみにアテンション(注意)が強く当てられることとなる.

Attention の大まかな仕組み

2節以降にseq2seqにおけるアテンション機構の詳細を紹介する準備として,ここではまずアテンション機構の仕組みの触りだけを,短く示しておきたい.

単語特徴ベクトルの系列である「文章」や,画像のCNN特徴の各「グリッド特徴群集合」などの入力データ$\bm{X} = \{\bm{x}_1, \bm{x}_2, \ldots, \bm{x}_N \} $ のうち,どのローカル特徴ベクトル$\bm{x}_i$を予測の際に重要視するかの重み付けのためのスカラー重み係数(= アテンション係数)$a_1, a_2, \ldots, a_N $を,追加のサブネットワーク$f$を用いて$a_i = f(\bm{x}_i)$と推定する (値はsoftmaxなどで0から1の値に正規化).そして,サブネットワークで予測されたアテンション係数を用いて,ローカル特徴ベクトル群を重み付け平均したコンテキストベクトル $\bm{c} = a_i \bm{x}_1 + a_2 \bm{x}_2, \ldots, + a_N \bm{x}_N $も入力に新たに用いて,最終的な予測を行うのが,アテンション機構の一般系である.

次に,seq2seq with attentionの場合を考える.seq2seqでは,出力も$\bm{Y} = \{\bm{y}_1, \bm{y}_2, \ldots, \bm{y}_M \} $とM個の単語埋め込みベクトルから構成される系列で,この系列をDecoder のRNNで1ステップずつ予測する.出力の各ステップ$t$において,入力系列の各ローカル特徴ベクトルから得た隠れ層ベクトル$\bm{s}_j$ (入力RNNの隠れ層ベクトル)と,現在の出力RNNの隠れ層ベクトル$\bm{h}_i$の関連度を計算するサブネットワーク$f$を, $a_j (i )= f(\bm{s}_j,\bm{h}_i)$と予測するように学習する.これにより毎ステップ$i$において,現在の単語に入力単語に注意をあてた「コンテキストベクトル」を入力系列から作成し,予測時に使用することができる(詳細は2節).

アテンション機構を用いる際には,バックボーンCNNやword2vecの特徴ベクトルなどの入力の各$\bm{x}_i$を計算するEncoderは再学習せず,追加したアテンション値を予測する$サブネット$fと,予測部分の層のみを学習することが多い.これにより,元のEncoderの特徴を,アテンション係数の重み付けによって,重要なコンテキストのみ重要視するアレンジされた特徴を取得できる.

1.3 記事の構成

以降,この記事では,以降の各節にて,時系列登場順にアテンション機構を,以下の3つに分類してそれぞれ概要を紹介する:

  • 2節:NLP分野におけるseq2seq とAttention(初期の提案)
  • 3節:画像キャプショニングにおける seq2seq with attention (Vision and Languageでの初期応用例).
  • 4章:Self-AttentionおよびTransformer.

2節では,系列変換向けのアテンションの話を述べる.3節はVision and Languageにおける2モーダル間の変換ネットワークにおけるアテンションの話の代表として,画像キャプショニングでの具体例を紹介して理解を高めてもらう.4章は,系列自身に対するアテンションを学習するself-attentionと,それを応用したもので,seq2seq with attentionの代わりに用いられるようになったTransformerの紹介を簡単にだけ行う.( 2章と4章の執筆には,このNLP&音声認識向け書籍 [Uday et al. 2019] のアテンションの章も参考にしており,数式などもある程度 [Uday et al. 2019] の表記に合わせてある.) 

一方で,アテンションの系列変換以外での活用例である, Neural Turing Machine(NTM)などの「メモリー拡張付きネットワーク」や「Pointer Network」などについてはこの記事では取り上げない.

2 NLP分野における seq2seq と Attention

機械翻訳向けに提案されたseq2seq with attention [Bahdanau et al. 2015] (2.2節)は,seq2seqにattention機構を追加したものである.LSTM decoder側で次の単語を毎フレーム予測する際に,毎回LSTM encoder側の各単語へのアテンション係数を計算し直し,各フレームごとに適応的に変化するアテンションを用いて単語を予測する仕組みが提案された.アテンション機構は,その後seq2seq以外の問題にも,汎用的な拡張機構として応用されていく.

1節でも述べたように,seq2seq(with attention)は機械翻訳以外にも,画像のキャプショニングやテキストからの音声合成(Text-to-Speech)などで応用されていたが,Transformer(4節)の登場以降それらの系列変換問題はTransformerで研究に取り組まれることが多くなっている.

2.1 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 Network 」であり,入力言語の単語のEncodingを担当する1つ目のRNNの最後の潜在変数と,出力言語の単語のDecodingを担当する2つ目のRNNの最初の偏在変数の間を接続してある.これにより,入力言語がRNNによってEncodeされた結果の済潜在変数ベクトルを入力として,出力言語のDecoder RNNが出力言語の対応する単語を,回帰予測で1単語ずつ生成することにより,入力文と同じ意味の文章を出力する.

関連記事: 【用語】ディープニューラルネットワークにおける Encoder-Decoder Model

seq2seq
図3:seq2seqによる機械翻訳の例. <BOS> = Beginning of Sentence, <EOS> = End of Sentence.

seq2seqの詳しい挙動

seq2seqの推定時の挙動を,より具体的に説明したい.seq2seq の前半では,EncoderのRNNで変換したいソース言語の文章全体を隠れ層にEncoderする.後半では,Decoder( Generator)のRNNで,Encoderから得たソース文の隠れ層のベクトル(潜在状態ベクトル)をもとに,単語を1つ生成しては,その生成された単語も次の単語を予測する入力として用いながら,文章全体をDecoder RNNで生成する.

入力として系列長$N$の文章$\bm{X}$(言語A)と,変換後の入力文と同じ意味を持つ系列長さ$M$のターゲット文章$\bm{Y}$(Aと異なる言語B)を用意する:

  • 入力文:$\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$は,各単語の埋め込みベクトル(word2vecなど)を用いる.

seq2seq with attention [Bahdanau et al. , 2015] [Luong et al. , 2015]では,入力系列をエンコードするRNNと,出力系列をデコードするRNNの2つを用意し,2つの間を潜在変数ベクトルで繋いだEncoder-Decoder構造を用いる.

ここで,Encoder-RNNとDecoder-RNNの潜在状態ベクトルを,それぞれ$\bm{s}_j $と$\bm{h}_i$とし,Encoderの最後の$\bm{s}_N$が遷移して\bm{h}_1に繋がる:

  • Encoderの隠れ状態: $\bm{s}_1, \bm{s}_2, \ldots, \bm{s}_N $
  • Decoderの隠れ状態: $\bm{h}_1, \bm{h}_2, \ldots, \bm{h}_M$

Decorder-RNNでは,各ステップにおいて,次の潜在変数ベクトル$\bm{h}_i$を,1つ前の予測単語$\bm{y}_{i-1}$と隠れ状態$\bm{h}_i$から予測する (図3, 右側).

seq2seqでは入力系列が長い場合に,RNNが推定していく潜在変数が,初期の単語の情報を覚えておくことができず,出力単語数が多いとその潜在変数の値が似通ってしまう問題があった.そこで,この問題を解決するために,デコード中の各フレームで動的に変化する入力コンテキストを得られるアテンション機構 [Bahdanau et al., 2015] がseq2seq向けに提案された.

2.2 Soft Attention:機械翻訳向けに登場した,最初のアテンション機構

[Bahdanau et al., 2015] は,アテンション機構をseq2seqに追加した seq2seq with attention を,ニューラル機械翻訳向けに提案した.そしてすぐのちに [Luong et al., 2015] は,seq2seq with attention をシンプルに改良したものを提案した.

[定式化] seq2seq with attentionの一般形

ここではまず,Soft Attentionを用いた機械翻訳 [Bahdanau et al., 2015] [Luong et al., 2015]を,定式化し,seq2seq with attentionの一般系として紹介する.(このあと3節,4節で紹介する応用•発展系の基本形ともなる).argmaxで最大アテンション係数値のベクトルだけをコンテキストベクトルに採用する「Hard Attention」に対して,前入力ベクトルのアテンション重み付け和(or 平均)でコンテキストベクトルを計算するこの方法を「Soft Attention」と各論文では呼び分けている.

以下の図4に,(soft) アテンション機構を図3に挿入した「seq2seq with attention」を図示する.

seq2seq with attention
図4:seq2 seq with attentionで,$\bm{h}_i$から$\bm{h}_{i+1}$を予測する様子.スコア関数で$\bm{h}_i$と$\bm{s}_j$からアテンション係数$a_j(i)$を算出し,それらを重みとして重み付和であるコンテキストベクトル$\bm{c}_{i}$を計算.最後に,$\bm{h}_i$と$\bm{c}_{i}$を結合したベクトルから,RNNの回帰で次の単語の$\bm{h}_{i+1}$を予測する.これにより,ステップ$i$を進めるごとに,異なる重み付けのアテンション係数群が推定できる.

アテンション機構を用いたseq2seqの予測手順は,以下の3ステップ構成である:

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

$a_j (i)$は重み付け係数であることから,N個のアテンション係数$a_j (i)$の合計が1になるよう正規化も行う必要がある ( $ \sum_j^N a_j (i) = 1 $ ) .

手順1のアテンション係数の算出の際には,まず(自分で設計した)対応付けスコア関数から$score(\bm{s}_j,\bm{h}_i)$を,全ての潜在変数ベクトルN個 $\bm{s}_j$ に対して計算する.そして前述の通りアテンション係数の合計1にしたいので,SoftMax 正規化で確率値化を行う:

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

このように,seq2seq with attentionにおけるアテンション係数には,重み付け対象の補助入力$N$個(コンテキスト)に対して,類似度$score$を計算し,その値をSoftmax正規化したものをアテンション係数として使用するのが標準的な設計である.

そして,手順2では計算したアテンション係数を用いて,全入力単語埋め込みベクトルの重み付け和としてコンテキスト特徴を計算し,それを次の単語の予測に補助入力特徴ベクトルとして用いる.これにより,入力全体のコンテキスト(重み付け)も加味して,次の単語の予測を行えるようになった.

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

2.3 スコア関数の種類

単語間の位置合わせ(アラインメイント)をアテンション係数として予測するために学習する「スコア関数」には,例えば [Luong et al. 2015] では以下のような3種類の関数が試されている:

  • $score = \bm{h}_i^\mathsf{T} \bm{s}_j$ (ドット積)
  • $score = \bm{h}_i^\mathsf{T} \bm{W}_a \bm{s}_j $ (バイリニア.学習可能)
  • $score = \bm{W}_a \bm{h}_i + \bm{W}_a \bm{s}_j $ (足し算での結合.学習可能)

初期のソフトアテンションでは,このような単純なベクトル同士の足し算や掛け算をスコア関数として設定し,アテンション係数を予測する.スコア関数の設計は design choiceで,自由であり目的次第で変えれば良い.もちろん上記3つのような計算コストの軽いスコア関数ではなく,例えば3層や4層のニューラルネットワークを使用してもかまわないが,ただしその分,計算コストはかかるし,過学習の危険性は増す.

3 画像キャプショニングにおける seq2seq with attentionの応用.

サブ記事:画像キャプショニング (後日執筆予定)

画像キャプニング(Image Captioning)は,(写真的な主撮影対象のある)1枚画像を入力として,その画像内に写っている人や動物,物などが何をしているか,どう配置されているかの内容説明文(キャプション)を自動生成する技術である.画像キャプショニングはseq2seqの初期頃に登場した研究問題設定であり,その初期にseq2seqとseq2seq with attentionが(素直に)応用された問題であるので,この記事でattention 応用が行われ始めた頃の部分だけ紹介する.(詳細は,今後別記事にて)

Show Attend and Tellの Attention の可視化
図5: Show, Attend and Tell [Xu et al., 2015] のブロック図(論文中Figure 1 を引用).まず画像識別CNNから,14 $\times$ 14のグリッドの特徴量を抽出する.その後,各ステップにおいて,次の予測単語に関連する各画像グリッドのアテンションを推定して,アテンションで重み付けされた画像コンテキストにより,LSTMの回帰係数で次の単語を生成する.

2節で紹介した seq2seq with attention [Bahdanau et al., 2015] の仕組みを活用した,画像キャプショニングのシステムとして「Show, Attend and Tell」が提案された [Xu et al., 2015] (図5).この研究 [Xu et al., 2015] で,提案されたのはseq2seq with attentionの前半の文章RNNの代わりに,画像をCNNでEncodeした結果の,縦横のグリッド位置特徴 $ \bm{x}_i (i = 1, \ldots, h \times w)$ をアテンション計算する学習対象として用いる.この研究は,前進のインスパイア元「Show and Tell」[Vinyals et al., 2015] にアテンション機構を挿入して拡張したもので,[Vinyals et al., 2015]では,アテンション機構はなく,画像識別CNNでEncodeしたpoolingしたあとの,画像全体に対する1つの特徴ベクトルを後半の文章生成CNNに入力していた.

また初期の画像キャプショニングシステムが提案された2015年頃は,物体検出システムが今ほど頑健でなかった時代であったが,Faster R-CNNの登場後は,キャプション文中に映っている物体(人や車や物など)を,Faster R-CNNで領域検出しておき,その物体領域をアテンションで説明文中の物体単に対応付けることができるようになった.これにより「物体検出結果を,物体単語の生成に明示的に活用する」アプローチ[Anderson et al., 2018 など]が,近年主流となっていく([Xu et al., 2015]のように,グリッド特徴も同時に用いる)(※ これ以降の発展や,アテンション以外の画像キャプショニング手法については,本記事では割愛する.別記事で執筆予定).

4 Self-Attention と Transformer

サブ記事:Transformer (後日執筆予定)

seq2seq with attention から,RNNの代わりにQKV方式のSelf-Attentionを多層化・並列化したものが,Transformer [Vaswani et al. 2017] と呼ばれる機械翻訳向け系列変換モデルである.Transformer では,QKV(Query-Key-Value)アテンション方式で行列計算を導入することにより,RNNと比べて学習も簡潔にできるようになった.また,数十層のSelf-Attentionを用いて深いアテンションの連続を用いることで,精度が高くかつScalableな系列変換が可能になった.ここでは,そのTransformerの構成パーツでもあるSelf-Attention (4.1節) に触れたあと,Transformer(4.2節)について簡単に紹介する(詳しくは別記事で執筆予定).

4.1 Self-Attention

Self-Attention(内部(Intra)アテンション)[Cheng et al, 2016] [Parikh et al, 2016] [Lin et al., 2017] は,名前の通り,「系列自身の単語間で学習するアテンション」である (図6).Self-Attentionでは図6[Cheng et al, 2016]の例のように,英語文の機械理解のタスクにおいてであれば,入力文内の単語間同士のアテンションを学習する.

Self-Attention
図6 Self-Attention([Cheng et al, 2016]より図は引用).文章理解のタスクにおいて,現ステップの処理中単語(赤色)に対する事前の各単語へのアテンション(紫)を学習している.

2.2節で紹介したseq2seq 向けのアテンション機構では,入力文(英語)の単語と,出力文(ドイツ語)の,「入出力文間での」単語同士の関連度をスコア関数へ学習した.一方,Self-Attention では,文章自分自身の中で学習する単語間のアテンションであるので,Vision and Languageやマルチモーダル入力の論文などでは,Inter-Attention(2.2節の他モーダル attention )とIntra-Attention(Self-Attention:モーダルアテンション)と呼び分ける場合も多い.

4.2 Transformer : Attention だけで構成されたseq2seq.

Transformer [Vaswani et al., 2017] (図7-b)は,RNN回帰を用いずに Self-Attentionをメイン部品として構成された,文章系列変換モデルである.Transformerは,今までのseq2seq with attention ようなLSTMベースのEncoder-Decoderの代わりに,seq2seqの全てがMultihead Self-Attentionモジュール (図7-a) を用いたEncoderとDecoderで構成されているという「アテンション機構だけでも(RNN無しに)系列変換が達成できる」という提案である.従って,その論文 [Vaswani et al. 2017]のタイトルも「Attention is all you need (系列変換モデルに必要なのはアテンションだけである)」となっている.

Multi-Head Self-Attention
図7-a: Multi-Head Self-Attention モジュール.  [Vaswani et al., 2017] から引用
Transformer
図7-b Transformer のアーキテクチャ [Vaswani et al., 2017] から引用.Multi-head Self-Attention から構成されるEncoder (左半分)とDecoder (右半分)によりseq2seqが構成されたものである.

4.2.1 Transformer の構成要素:Multi-Head Self-Attention

TransformerのSelf-Attentionは,掛け算系のスコア関数であるscale dot-product 関数であり,それをQKVアテンション(Query-Key-Value)として行列で一気に全ベクトル分を計算する方式を採用している (図7-a).また,Self-AttentionはMulti-Head化されており,scale-dot product attentionが$h$個並列化されている.この並列 head化により( h = 8 ),多様なQKVの投影空間とそれらのQKV型Self-Attentionを学習することができる.すなわち,並列化していない同次元のsingle-head attentionだと単一の単語間の関係しか使用できないのが,Multi-head化により,多数の注意 (Scale-dot product attention)を並列計算で効率的に使用できるようになっている.

4.2.2 Transformer の構造

Transformerのアーキテクチャ(図7-b)では,異なるパラメータのMulti-head Self-Attentionから構成されるモジュールをN回,EncoderでもDecoderでも繰り返す (デフォルト設定ではN=6回).よって,学習するQKVアテンションの前結合層$W^q_i, W^k_i, W^V_i$ ($i$は並列head数のインデックス)の総数はかなり多くなるので,Transformerはかなりの大規模モデルである.1モジュールを構成する「Multi-head self-attention 」と そのあとの「Feed Forward (全結合)」層は,それぞれresidual接続されているので,これだけ深い総層数のモデルが学習できる.また,Decoder側の序盤のSelf-Attentionでは,予想前の未来の単語は全て「マスクアウト(mask out)」して対象外にしておき,現在ステップでは未知の未来の単語へ注意がいかないようにしてある (図7-b Decoderモジュール前半の,Masked Multi-Head Attention ).

以前のseq2seq (with attention)の系列変換はRNNに頼っていたので,系列が長くなるとvanishing gradient問題のせいで学習の際に微分が全部の層やスコア関数にうまく行き渡らず,学習がうまくいかなかったりしていた.しかし,Transformerでは全てアテンションで済ませている上にRNN回帰が必要無いので,長い文章や長い波形シーケンスの変換問題でも,学習が安定化・かつ高速化するようになった.ただし,データセットの規模,シーケンス長,使用するデータモーダル次第では,必ずしもTransformerの方がseq2seq with attentionより高性能になるとは限らない点には注意である(音声や動画なども,単語同様にまずToken化して埋め込みベクトルにする必要があるのも理由).とはいえ,Transformerは系列全体に対して,(回帰なしに)一気に逆伝播できるので,学習が速くなりかつモデルも単純で理解しやすくなったと言える.

また,Transformer [Vaswani et al. 2017] の論文では,単語の各特徴ベクトルに単語埋め込みだけでなく「文章中の単語位置を示す特徴ベクトル」も結合するPositional Encodingも提案された.RecurrenceもConvolution層もないのでSelf-Attetntionだけだと位置情報が欠落してしまうので,Positional Encodingを導入することにより,文章中の各単語の位置情報も考慮されたEmbeddingをTransformerに学習できるようになっている.

4.2.3 改良モデル:Transformer-XL

Transformerの改良版としてTransformer-XL [Dai et al. 2019]が提案された.TransformerとRNNをミックスすることにより,Self-attention形式でありながら(Transformerよりも)長期の単語間依存関係を学習できるモデルに改善できた.Transformer-XLのTransformerからの改善点は2つで,(1)セグメント単位の回帰 と,(2) Positional Encodingを(query-key)単語間の相対位置のEncodingに変更,である.Transformerでは,固定長の短い単語間コンテキストしかSelf-Attentionに学習できなかったが,(1)によりセグメント単位でRNNのように回帰させ,かつ(2)によりセグメント内で単語間の位置関係をTokenに使用することで,Transformerよりも長期の依存関係を表現できるようになった.

5 まとめ

この記事では,機械翻訳用に登場したseq2seqでよく用いられるアテンション機構を,初期のsoft-attentionによるseq2seq with attention,その画像キャプショニングへの応用,ならびに,Self-attentionによるTransformerについて簡単に紹介した.3節「画像キャプショニング」や4節「Transformer」については,ほんの概要だけをこの記事では述べただけであり,今後,別記事で詳細に述べる予定である.

2節のseq2seq attention や,アテンションのスコア関数のバリエーション等ついて更に詳しく知りたい方は,今回参考にしたNLPと音声認識向けの書籍 [Uday et al. 2019] や,リンクにも示した参考記事「Lil’s log : Attention? Attention!」にも,テーブルに簡潔にまとめられているので参照されたい.ちなみに本記事では,画像認識向けのアテンション応用であるChannel-wiseアテンション (CBAM [Woo et al., 2018] など) や,Self-attentionの画像向け類似系であるNon-Local Neural Networks [Wang et al., 2018] などについては,まだ触れていないことに注意されたい.

References

  • [Anderson et al., 2018] Anderson P, He X, Buehler C, Teney D, Johnson M, Gould S, Zhang L. Bottom-up and top-down attention for image captioning and visual question answering. In CVPR 2018.
  • [Bahdanau et al., 2015] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “Neural machine translation by jointly learning to align and translate.” In ICLR, 2015.
  • [Cheng et al., 2016] Jianpeng Cheng, Li Dong, and Mirella Lapata. Long short-term memory-networks for machine reading. In EMNLP, 2016.
  • [Dai et al., 2019] Zihang Dai, Zhilin Yang, Yiming Yang, William W Co- hen, Jaime Carbonell, Quoc V Le, and Ruslan Salakhutdinov, Transformer-XL: Attentive language models beyond a fixed- length context. In ACL, 2019.
  • [Lin et al., 2017] Lin, Z., Feng, M., Santos, C.N.D., Yu, M., Xiang, B., Zhou, B. and Bengio, Y., 2017. A structured self-attentive sentence embedding. arXiv preprint arXiv:1703.03130.
  • [Luong et al., 2015] M.-T. Luong, H. Pham, and C. D. Manning, Effective approaches to attention-based neural machine translation. In EMNLP, 2015.
  • [Mikolov et al., 2010] Mikolov T, Karafiát M, Burget L, Černocký J, Khudanpur S. Recurrent neural network based language model. In, InterSpeech, 2010.
  • [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]
  • [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.
  • [岡崎 2018] 岡崎 直観「自然言語による状況理解」 SSII2018 OS2-2
  • [山下 2019] ICML2019 読み会 in Kyoto「CNNを用いた画像認識における判断根拠と精度向上への活用方法」ICML 2019 読み会 in 京都

参考サイト