アテンション機構(Attention Mechanism)

1 アテンション機構 (Attention Mechanism)の概要

アテンション機構 (Attention Mechanism)は,視覚注意 (visual attention) にインスパイアされ考案されたディープニューラルネットの拡張機構である.

系列変換モデルを用いて,出力単語ベクトル系列を予測する際に「次の予測値が,どの入力単語ベクトルとの関連度(relevance)が強いか」も同時に学習しておきたい.そこで,その関連度を表すアテンション係数(各単語ベクトルの線形重み係数)についても,ネットワークに追加挿入したサブネットワーク(スコア関数)で予測する.そして注意(=予測値との関連度)の高い単語ベクトル・画像グリッド特徴ベクトルに対してアテンション係数で強めに重み付けして,アテンション係数が高い単語ベクトルを重視した予測モデルを構築できる.

アテンション(機構)は,系列・集合間の変換問題(機械翻訳,音声認識,画像キャプショニングなど)などによく用いられる.最初の提案としては,NLP (Natural Language Processing) 分野における系列変換モデルの seq2seq (Sequence-to-Sequenceの略)に,アテンション機構を追加した seq2seq with attention が提案され,言語間機械翻訳にまず活用された [Bahdanau et al., 2015], [Luong et al. , 2015] .

その後,NLP(自然言語処理)分野では,文章の質問応答(Question Answering)や 機械読解 (Machine Comprehension)をはじめ,多くのNLP応用でアテンション機構が応用されている.また視覚と言語(Vision and Language)音声認識TTS (text-to-Speech合成) などにおいても,seq2seq with attentionおよびTransformer (4節)が頻繁に用いられている.

seq2seq with attentionは「次の予測単語と,どの入力単語ベクトルが予測に『強く関連するか (注意を払うべきか) 』or 『不要か』」の度合いを,アテンション係数 としてスコア関数に学習する.テスト時は,スコア関数からアテンション係数を予測し,単語ベクトルの重み付け平均を取ったコンテキストベクトルを,Decoderの入力に追加でコンテキスト特徴として使用する.この拡張機構により,予測するのに重要な単語ベクトル群だけを注視(重みを高くして優先)したDecodeが可能となり,予測精度の向上に加えて,モデルの説明度向上も達成できる

そもそもアテンション機構は,NLP目的だけに限定されない,汎用的なディープニューラルネットの拡張機構である.機械翻訳向けの最初の提案以後,NLP以外の様々な問題においても応用されている.たとえば画像キャプショニング(3節)においても,CNN特徴マップの各局所ベクトルに,生成中の単語に対するアテンションを学習する応用が活用されているなど,Vision and Language(V&L)におけるアテンション機構の応用も盛んである [岡崎 2018].

また,2018年以降の近年は,機械翻訳同様に系列変換問題である「音声認識」や「text-to-speech」においても4節のTransformer [Vaswani et al., 2017]が頻繁に用いられている.

1.1 記事の構成

以降,今後の各節にて,アテンション機構を以下の順に紹介する:

  • 1節: 概要
    • 1.2 系列変換モデル向けのアテンション機構.
    • 1.3 アテンション機構の利点と仕組み.
  • 2節:NLP分野におけるseq2seq とAttention(初期の提案)
  • 3節:画像キャプショニングにおける seq2seq with attention (Vision and Languageでの初期応用例).
  • 4章:Self-AttentionおよびTransformer.

3節は V&L における2モーダル間の変換ネットワークにおけるアテンションの話の代表として,画像キャプショニングの具体例を紹介することで,アテンション機構への理解を高めてもらう.

1.2 系列変換モデル向けのアテンション機構

系列間変換タスクにおけるアテンション機構では.変換前後の「入力文 v.s. 出力文」のあいだで,言語間での単語同士の相関度(関連度)の対応付け(alignment)状況を,アテンション係数の推定を行う「スコア関数」に学習する.

例えば「英語からドイツ語」への翻訳を行うseq2seq with attention [Luong et al., 2015] を学習する場合,英語のLSTMをEncoderとして使用し,ドイツ語のLSTMをDecoderとして使用する.Encoder LSTMでEncodeされた英語文の情報をもとに,Decoder LSTMにより,ドイツ語の単語を(1単語ずつ先頭から)予測する.

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

図1は,その[Luong et al., 2015] にて,例文から予測された単語ペア同士に対応する各アテンション係数を,表に可視化したものである.ドイツ語の次の1単語を予測する時に,入力文の全英単語のうち,どれと予測の関連度が高いかを,アテンション係数(単語間の関連度行列)として学習されている.このアテンションにより,言語間の単語同士の対応付(アラインメント)をシンプルに把握することができ,なおかつそのアテンション係数を重み付け係数に用いた予測がなされる (2.2節).

一方,画像キャプショニング(3節)でのseq2seq with attentionの使用について,以下の図2 [Xu et al. 2015] のような例をみてみよう.

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

「人がフリスビーを投げている」状態の画像を入力とし,出力としてキャプション文 “A woman is throwing a frisbee in a park.” を生成している.この時,出力側RNNが単語「frisbee」を予測する時には,画像中のフリスビー領域のグリッド特徴ベクトルが,高いアテンション係数値を持つよう.また,単語「woman」を出力する時は,画像中の女性のグリッド特徴ベクトルのアテンション係数が高い値を持つ.

このようにseq2seq with attentionでは,出力単語を予測する時ごとに,入力画像・単語のどこが関連度が高いか(正しく予測するのに重要か)を示すアテンション係数が,次に予測する単語ごとに適応的に変化する.

1.3 利点と大まかな仕組み

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

1.3.1 Attention 機構の利点

アテンション機構では,予測モデルの入力を構成する特徴ベクトル集合に対して,各特徴ベクトルの重要度(Importance)もしくは関連度(Relevance)を表した「アテンション係数」を潜在変数として追加で学習・推定する.テスト時には,アテンション係数で重み付けしたコンテキストベクトルも予測に用いる.これにより,注意(アテンション)の強い局所特徴ベクトル(単語や画像局所領域)だけを重要コンテキストとみなして,重みを強くした重み付け済みベクトル(=コンテキストベクトル)も用いた予測が可能となる.

全ての部分特徴(単語や局所画像領域)にアテンション(どこに注意を払うと予測が良くなるか)が割り振られるので,アテンションで拡張すると,予測モデルの解釈可能性が高くなるのも利点である.従って,ブラックボックスになりがちな画像認識CNNでも,アテンション機構による拡張を行うことでモデルに説明可能性を得られる価値が出てくる [山下 2019].また,系列間やモーダル間で「どの単語同士が対応づいているか(図1)」や「どの単語がどの画像領域に対応づいているか(図2)」のアラインメント(alignment)も,アテンション係数として学習できるのも便利である.

seq2seqの単語ベクトルの埋め込みには,事前学習済みの Word2Vecを用いる(それらの事前学習済みEncoderはパラメータを固定しておきfine-tuningは行わない).したがって,アテンション機構部分とそれ以外の後半の予測部分の層だけを,新しいデータセットに対して学習すればよい.ゆえに,最初からEnd-to-Endの学習を行うコストを抑えながら,系列変換モデルの構築が行える.

一方,画像認識や音声認識など,文章以外の入力を用いる場合でも,アテンションの力が発揮できる.図2の画像キャプション生成のように,予測に不要な背景・ノイズ部分を無視でき,ロバストな予測モデルの学習もアテンション機構で実現できる.

1.3.2 Attention の大まかな仕組み

2節以降の準備として,まずアテンション機構の仕組みの大まかな仕組みだけを,ここで短く示しておきたい.

単語特徴ベクトルの系列である「文章」や,各グリッド特徴群集合で構成された「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の特徴を,アテンション係数の重み付けによって,重要なコンテキストのみ重要視するアレンジされた特徴を取得できる.

一方で,アテンションの系列変換以外での活用例である, 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」がseq2seqである.

seq2seqにより,入力言語がRNNによってEncodeされた結果の潜在変数ベクトルを入力として,出力言語のDecoder(RNN)が,対応する出力言語単語を,1単語ずつ生成することを続けていくことで,入力文と同じ意味の翻訳済み文章を出力する.

2.1.1 seq2seqの詳しい挙動

ここでは,テスト時におけるseq2seqの挙動を,より具体的に説明したい.

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

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

seq2seqは,系列長$N$の入力文$\bm{X}$ (言語A)と,入力文と同じ意味を持つ系列長さ$M$の変換後の出力文$\bm{Y}$(Aと異なる言語B)のペアを用意する (図3):

  • 入力文:$\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 (図3)による機械翻訳では,以下の2つのRNNを潜在ベクトルで接続したEncoder-Decoder構造を使用して,言語間の変換を行う:

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

ここで,Encoderの$j$番目の隠れ状態ベクトルを$\bm{s}_j $とし,Decoderの$i$番目の潜在状態ベクトルを$\bm{h}_i$とする.

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

.seq2seqでは,Encoderの最後の$\bm{s}_N$がDecoderの最初の\bm{h}_1$に接続していて,Encoderで符号化された潜在変数ベクトルがDecoderに受け渡される (図3).

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 をシンプルに改良したものを提案した.

2.2.1 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に,seq2seqへ(soft)アテンション機構を挿入した「seq2seq with attention」を図示する.

seq2seq with attention
図4:seq2seq with attention.

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

  1. seq2seqの予測系列の現在のステップ$i$の潜在変数ベクトル$\bm{h}_{i}$から隠れベクトル$\bm{h}_{i+1}$を予測する際に,まず$\bm{h}_i$に対する,入力文章中の各単語$\bm{x}_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)$の算出の際には,まずスコア関数から$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))}$$

このように,補助入力$N$個(コンテキスト)に対して,それぞれ類似度スコア関数$score(\bm{s}_j, \bm{h}_i)$で2者間の関連度を計算し,それらをSoftmaxした$a_j (i)$を最終的なアテンション係数として使用する.

手順2の詳細:

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

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

2.2.2 コンテキストベクトルを導入した利点

フレームごとに変化するコンテキストベクトル (seq2seq with attention)
図5 フレームごとに適応的に変化するコンテキストベクトル$\bm{c}_i$ をDecoderに受け渡す様子.

図5はフレームごとに異なるコンテキストベクトルを各フレームで計算してDecoderに受け渡している様子を,図4より大まかに示したものである.

以前のseq2seqでは,Encoderの最後のフレームMの1つの潜在状態$\bm{s}_M$のみ,Decoderへ受け渡していた.それがseq2seq with attentionでは,次の単語を予測するのに適する入力単語群へのアテンションを用いたコンテキストベクトルに動的に変化するのが,コンテキストベクトルを導入したメリットである.すなわち図5のように,各フレームで異なるコンテキスト$\bm{c}_i$が受け渡されることで,毎フレーム異なる単語にアテンション重みを強めた単語予測が可能となった.

2.3 attention に用いる「スコア関数」の例

単語間の予測関連度を,アテンション係数として推定するスコア関数には,例えば [Luong et al. 2015] だと以下の3種類が試されている:

  • $score(\bm{s}_j,\bm{h}_i) = \bm{s}_j^\mathsf{T} \bm{h}_i$ (ドット積)
  • $score(\bm{s}_j,\bm{h}_i) = \bm{s}_j^\mathsf{T} \bm{W}_a \bm{h}_i $ (バイリニア.学習可能)
  • $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アテンションでは,このような単純なベクトル同士の足し算や掛け算をスコア関数として設定し,アテンション係数を予測する(スコア関数はdesign choiceである).

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

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

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

Show Attend and Tellの Attention の可視化
図6: 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]が提案された(図6).

この研究で提案されたのは,seq2seq with attentionの前半の文章RNNの代わりに,画像をCNNでEncodeした結果の,縦横のグリッド位置特徴 $ \bm{x}_i (i = 1, \ldots, h \times w)$ をアテンション計算する学習対象として用いる.前進のインスパイア元の”Show and Tell“[Vinyals et al., 2015] に,アテンション機構を挿入して拡張したものである.”Show and Tell“の時点ではアテンション機構は用いず,画像識別CNNでEncodeしGloval poolingしたあとの,画像全体に対する単一特徴ベクトルを後半の文章生成RNNに入力していた.

また初期の画像キャプショニングシステムが提案された2015年頃は,物体検出システムが今ほど頑健でなかった.しかしFaster R-CNN の登場後,画像からFaster R-CNNで物体領域検出し,その各領域をアテンション機構で説明文中の物体単語に対応付ける手法が提案されていく.以後は「物体検出結果を,物体単語の生成に,明示的に活用するアプローチ [Anderson et al., 2018 など] 」も主流となっていく.

4 Self-Attention と Transformer

Transformer [Vaswani et al. 2017] は,Self-Attentionを多層化・並列化したEncoder-Decoder型の系列変換モデルである.

Transformerでは,QKV(Query-Key-Value)アテンション+ Scaled dot-product方式による計算が簡潔で効率的なアテンションを用いることで,(回帰を繰り返すRNNと比べて)高速な学習とテストが実施できるようになっている.また,数十層のSelf-Attentionを用いて深いアテンションの連続を用いることにより,高精度かつスケーラブルな系列変換モデルの学習が可能となった.Transformerの登場は,のちのBERTやGPTなどの「事前学習言語モデル」の登場にも繋がる.

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

Self-Attention
図7 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 : RNNを用いずに,Attentionのみで構成されたseq2seq.

Transformer [Vaswani et al., 2017] (図7-b)は,Self-Attentionをメイン部品として構成された,文章系列変換モデルである.今までのseq2seq with attention (2節)のような「LSTM2つを直列に繋げたEncoder-Decoder」の代わりに,seq2seqの全てがMultihead Self-Attentionモジュール (図7-a)を用いたEncoderとDecoderで構成されている.

すなわちTransformer [Vaswani et al., 2017]とは「アテンション機構だけで,系列変換が達成できる」という提案である.従って,論文タイトルも「Attention is all you need系列変換モデルに必要なのはアテンションだけ」となっている.

self-attention
図8 (a) Multi-Head Self-Attention モジュール.  [Vaswani et al., 2017] から引用
Transformers
図8 (b) Transformers のアーキテクチャ [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)として行列で一気に全ベクトル分を計算する方式を採用している [図8-(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のアーキテクチャ[図8-(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 (全結合)層は,それぞれ残差接続されているので,これだけ深い総層数のモデルが学習できる.(関連記事:ResNetとResNeXt)

また,Decoder側の序盤のSelf-Attentionでは,予想前の未来の単語は全て「マスクアウト(mask out)」して対象外にしておき,現在ステップでは未知の未来の単語へ注意がいかないようにしてある( 図8-(b) Decoderモジュール前半の,Masked Multi-Head Attention).

以前のseq2seq (with attention)の系列変換はRNNに頼っていたので,学習する系列データ長が長くなると勾配消失・爆発問題が起こりやすく,うまく学習が終了できないことが多かった.しかし,Transformerでは,構成部品を全てアテンションで済ませている上に,RNN回帰も使用しない.また,Self-Attention内では,系列全体にいっぺんに順伝播・逆伝播を行うことができる.従って,Transformerは長い文章や長い波形シーケンスの変換問題のデータに対しても,学習を安定化・高速化できるようになった.

ただし,データセットの規模,シーケンス長,使用するデータモーダルなど,条件次第ではTransformerの方がseq2seq with attentionより高性能にはならない場合もある点には注意.音声や動画などでも単語同様にまずトークン化して埋め込みベクトルにする必要があるが,NLPのような良い「単語トークンの埋め込み空間」が,音声や画像などの他モーダルにおいては,事前に手に入っているとは限らないのも理由のひとつである.

4.2.3 Positional Encoding

Transformer [Vaswani et al. 2017] の論文では,単語の各特徴ベクトルに単語埋め込みだけでなく「文章中の単語位置を示す特徴ベクトル」も結合するPositional Encodingも使用することが提案された.

回帰も畳み込み層もなくSelf-Attetntionだけでseq2seqを構成しようとすると各単語の位置情報が欠落してしまう.そこで,Positional Encodingを導入することで,文章中の各単語の位置情報も考慮された埋め込みを学習できる仕組みになっている.

4.2.4 改良モデル: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 京都

参考サイト

関連記事