Transformerの構造について調べてまとめた
Attention Is All You Needを中心として、Transformerの構造についてまとめました。
解釈間違い等ある時がありますので、その場合指摘いただけると助かります。
目次
概要
- 言語モデリングやシーケンスモデリングにおいて、RNN(特にLSTMやgated RNN)が主要なアルゴリズムとなっていた。
- RNNでの処理:前の隠れ状態と位置tの入力の関数として、隠れ状態を生成
- RNNのsequentialな性質により学習での並列化が出来ないため、シーケンス長が長くなるとバッチ処理が制限される(逐次計算の制約)事が課題となっていた。
- RNNを用いないシンプルなネットワークアーキテクチャとしてTransformerが提案された
- encoder-decoderモデル
- 以下の機構を持つ
- Self-Attention
- Multi-Head Attention
- Positional-Encoding
- データを逐次的に入力する機構を用いない事で、並列学習を可能としている。
Model Architecture
- encoder-decoder構造。
- encoder:入力sequenceを連続的表現のsequenceにマッピングする(入力の原言語をencodeする)。
- decoder:encoderの出力zを入力として、出力sequenceを生成する(目的言語の単語列を生成する)。
Encoder and Decoder stacks
Encoder(上図の左側)
- N=6の同一層のstackで構成
- 各layer:2つのsub-layerで構成
- 1層目:multi-head self-attention mechanism
- 2層目:全結合のfeed-forward network
- sub-layer後に残差接続、layerの正規化を実行(上図のAdd&Norm)
- 各layer:2つのsub-layerで構成
- 各sub-layerの出力は、LayerNorm(x + SubLayer(x)) (SubLayer(x)はsub-layer自身が実装)
Decoder(上図の右側)
- Encoder同様N=6の同一層のstackで構成
- 各layer:3つのsub-layerで構成
- 1層目:マスキング付きmulti-head self-attention mechanism
- 2層目:原言語と目的言語間のmulti-head attention mechanism(Src-Target Attention)
- encoderの出力が入力となる。
- 3層目:全結合のfeed-forward network
- sub-layer後に残差接続、layerの正規化を実行するのはencoder同様
- 各layer:3つのsub-layerで構成
Attention
- Attention:一般的に入力データのうち、どの部分を重視するか決定する手段の総称。以下は論文においてて定義された内容。
- Attention関数は、3つの入力ベクトルであるクエリ(q)およびkey(k)とvalue(v)のペアのセットを出力にマッピングする。 以下はAttention構造を示している。
Scaled Dot-Product Attention(上図左)
入力:次元のクエリ(行列:Q)とkey(行列:K)、次元のvalue(行列:V)で構成されているとする。
keyとクエリとの内積を計算し、各々をで割りsoftmax関数を適用しvalueの重みを求める。
実際の計算は以下となる。
Multi-Head Attention
- 単語間の関連の強さを考慮する機構
- 入力からQ,K,Vそれぞれを重み行列により 次元に線形写像し、h個の内積Attentionを計算。
- Self-Attentionでは直前の層の出力からQ,K,V全ての部分空間への射影を行っている
- 通常はクエリを別の情報源(入力)から用いる所を、self-attentionでは同一の情報源のみでAttentionを実施する。
- 同一文中で離れた単語の関係性が理解しやすくなる。
- decoderの2層目である(Src-Target Attention)では、Qがdecoderの直前の層の出力であり、KおよびVがencoderの出力となっている。
- Self-Attentionでは直前の層の出力からQ,K,V全ての部分空間への射影を行っている
- 本研究ではh=8の並行なattention layerを採用し、としている。
Position-wise Feed-Forward Networks
- encoder-decoderの各レイヤには完全結合のfeed-forward networkが含まれている。
- そしてそれはReLUを挟んだ2つの線形変換で構成される。
Positional Encoding
- Transformerは再帰も畳み込みも含んでいない(入力を並列に処理する)。
- そのため、sequenceの順序を利用するためにsequence内のtokenの相対位置or絶対位置についての情報を入れる必要がある。
- そこでencoder、decoderのbottomにあるinput embeddingに絶対位置である「positional encoding」を追加する。
- positional encodingはembeddingとおなじd次元なため、両者の和を取ることが出来る。
- 本研究では、sin,cos関数を用いてpositional encodingを表現している。
- 以下の式で計算されたpositional encodingの行列を単語の埋め込み行列に可算したもの:encoder、decoderの入力となる。
参考文献
- Attention Is All You Need
https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf
- Transformerによる時系列予測
https://www.jstage.jst.go.jp/article/pjsai/JSAI2020/0/JSAI2020_1N4GS1301/_pdf/-char/ja
- 英日翻訳タスクにおけるスワップモデルを通したseq2seqとTransformerの比較
https://www.anlp.jp/proceedings/annual_meeting/2019/pdf_dir/P5-21.pdf
- 係り受け構造に基づくAttentionの制約を用いたNMT
https://www.anlp.jp/proceedings/annual_meeting/2019/pdf_dir/A1-4.pdf
- 係り受け構造に対する相対位置表現を考慮したNMT
https://www.anlp.jp/proceedings/annual_meeting/2019/pdf_dir/P3-26.pdf
- 深層学習におけるアテンション技術の最新動向
https://www.journal.ieice.org/bin/pdf_link.php?fname=k101_6_591&lang=J&year=2018