Transformer: マルチヘッドアテンションが主部品の系列対系列変換ネットワーク

1. Transformer とは [概要]

Transformer は,マルチヘッドアテンションを主部品に用いた,残差接続型の系列対系列変換ネットワークである [Vaswani et al., 2017].旧来の seq2seq with attention よりも,計算コスト・予測精度の両面で良くなった系列対系列変換モデルである.

この記事では,Transformerの機械翻訳むけの最初の提案 [Vaswani et al.,2017] にフォーカスして紹介をする(2~4節).構成部品の説明(2節)を行ったのち,全体のネットワーク構成(3節)および,学習方法(4節)について述べる.Transformerの発展型については,少しだけ触れる(Transformer-XL.5節).

Transformerは,以下の3点の設計を用いたseq2seq変換モデルを,機械翻訳向けに提案した:

  • スタック化: EncoderとDecoderは6ブロック直列に並べて階層化 (GoogleNMT 等の路線を踏襲).
  • マルチヘッドアテンション: 並列分散計算後に結合する,効率的で高精度なアテンションを考案.
    1. Encoder-Decoder間の相互アテンションを,マルチヘッドアテンションに変更.
    2. Encoder内/Decoder内も自己(マルチヘッド)アテンションで符号化(再帰型や,時間方向畳み込みは用いない).
    3. Decoder側は普通のアテンションだと未来予測モデルにできないので,未来部分をマスクで隠すマスク化(マルチヘッド)アテンションも追加で使用.

このように,並列・分散処理が可能な「マルチヘッドアテンション」を基盤としたseq2seqモデルを提案することで,高精度ながらも,高速ぶ計算・学習が可能な機械翻訳モデルを実現した.ただしTransformerモデルは巨大であり,かなりメモリを喰う欠点もある.

seq2seq with attention スケール化できるTransformerが登場したことで,機械学習界隈の全域にブレイクスルーを起こすきっかけともなった.まずすでにseq2seq with attentionで解かれていた各種の系列変換問題(機械翻訳,音声認識,TTS, 画像キャプション生成などのvision and languageなど)が,新モデルであるTransformerで主に解かれるという,2019年ごろ以降の状況に移行していった.

またOpenAI GPT-2 [Radford et al., 2019], GPT-3[Brown et al., 2020]や,BERT [Devlin et al., 2019] 等の,巨大一般化言語モデル全体教師なし事前学習でも,TransformerのEncoderかDecoderが,主部品として使用されている.

2020年頃以降は,画像認識分野でも,Transformerを用いた大規模モデルのVision Transformer (ViT) や MLP-Mixer などが積極的に研究されている.ViTやMLP-Mixerは,CNNの物体認識精度を上回ったり,Transformerの(マルチヘッドアテンションによる)並列計算のメリットも効いてくるので,画像認識の研究でもTransformerを用いたネットワークが台頭する状況になりつつある.また,物体検出も,「CNN + Transformer」のモデルであるDETRの提案により,DETRで画像上の全物体の検出具合を同時学習し,ハンガリアンマッチングで行っていた対応付もTransformerに学習させるようになっている.

以降は,まずTransformerの導入として,時系列順に3つに分けた概要(1.1 過去の変遷,1.2 モデルの概要,1.3 その後の展開)を行う.それにより,2節以降の詳細に入る前に,各部品にそれぞれ意図を持つ全体として複雑なTransformerの俯瞰度を先に高めてもらいたい.

1.1 登場前夜まで: 系列対系列変換モデルの変遷

機械翻訳などの系列対系列変換を学習するモデルは,以下の順に「計算効率化しつつも,より広い範囲で,単語・トークン間のコンテキストを学習したい」という発展の方向性で,提案されて定着していった(※ 以前のモデルの方が,得意な場面もあることには注意):

  1. seq2seq(sequence-to-sequence): RNN2つを直列接続 (RNN Encoder→RNN Decoder).
  2. seq2seq with attention [Luong et al., 2015]: seq2seqに,アテンション機構を追加.
  3. ConvSeq2seq [Gehring et al., 2017]: RNN再帰の代わりに(系列)1D畳込みを使用して計算効率化.
  4. Transformer (この記事):マルチヘッドアテンションを中心に構成.系列全体のコンテキストを加味できる自己アテンションも追加.

Transformerが登場するまでは,NLP・機械翻訳以外でもseq2seq with attentionが,音声認識・TTS・V-Lなどにおいて,広く活用されていた.Transformerは,その後継版となって代替されることになり,以降のTransformerブームとも言える,あらゆる問題でTransformerを使用する2020年以降の状況につながった.

一方その頃,機械翻訳やNLPでは,Google NMTなどの「サブワード分割を使用する方向性」も登場して,「単語 + サブワード」の単位である「トークン」の単位を入力とするようになってきていた (4.1 節).そこへ,Transformerの論文 “Attention is all you need.” が登場したことから,Transformerでも,入力・出力系列の分割単位として「サブワード化したトークン(ワード + サブワード)」を用いる.これにより,語彙外の単語を含む文章への対応力の強さも,学習後のTransformerに期待出来ることになる.

1.2 Transformer の概要

Transformer の概要図
図1 Transformerの概要図

上の図1は,Transformer のネットワーク構造の概要図である.図1は,[Ruan et al., 2021] の図の構成のアイデアもとに,少しアレンジした図である(全体の見やすさを優先し,残差接続とレイヤー正規化は,全て省略).

より具体的には,Transformerは,6ブロックのEncoder(図1 緑色)と6ブロックのDecoder(図1青色)から構成されるEncoder-Decoder型ネットワークである

各ブロックは以下の2つの構成部品から構成され,このブロックが6階層スタック化され繰り返し実施される.

  • ブロック(1): 並列ヘッドのアテンションを最後に結合する「マルチヘッドアテンション(図1薄茶色)」.
  • ブロック(2): トークン位置ごとに使用して,トークン表現を変換するための「順伝搬ネットワーク(図1黄色:「線形-ReLU-線形」の構成)」.

また,これらの各ブロック(1),(2)は,毎回 残差接続 により残差ブロック化されているので,『Transformer全体がResNet化されている』点も重要である.これにより,深いTransformerネットワークが学習できる.

まず,一番重要な構成部品である「マルチヘッドアテンション層」についてにまとめたあと(1.2.1節),マルチヘッドアテンションを元にした,Transformerの全体構成の概要・特徴を述べる(1.2.2節).

1.2.1 マルチヘッドアテンションの構成と役割

Transformerは,以下のマルチヘッドアテンション(並列化したQKVアテンション)を,主たる部品層として用いる:

  • マルチヘッドアテンション
    • スケール化ドット積アテンションを採用し系列全体のトークン間の関係(コンテキスト)を学習.
    • 行列計算(ドット積)が中心のQKVアテンション方式を採用し,畳込み・RNNより計算量が少なく済む.
    • マルチヘッド化:並列にスケールドット積アテンションを使用することで,表現力を向上して高精度化しつつ,並列計算によって高速化も実現(※ Google NMT [Wu et al., 2016] が,GPU並列化を実現していた影響).

マルチヘッドアテンション層は,Transformer内で以下の2種の役割を担当する:

  1. Encoder内とDecoder内:系列全体でのトークン間の関係を,自己アテンションにより階層的に学習.
  2. Encoder-Decoder間:相互アテンションで橋渡し(※ seq2seq with attentionと同様の処理).

1.2.2 Transformer全体構成の概要

つづいて,Transformerの,全体的な概要・特徴を述べる(各部品と特徴の詳細は3~4節):

  • 入力・出力系列:バイト対符号化サブワード単位にもトークン化 [Sennrich et al., 2016] したトークン系列からベクトル埋め込みの系列を作り,2言語間で翻訳をおこなう.
    • 入力埋め込み層/出力埋め込み層:$d_{model}$次元への埋め込み層を,それぞれ入力・出力向けに学習.
    • 位置符号の付与:各トークンの$d_{model}$次元埋め込みベクトルに,位置情報(系列の何番目か)も符号化して加える.
  • 全体のEncoder-Decoder構造:
    • SubCoderブロックを$N$回繰り返すEncoderとDecoderで,全体を構成.
    • 各ブロックは,2種の層で構成:
      1. マルチヘッドアテンション
      2. 順伝搬ネットワーク(トークン位置ごとに個別に順伝搬して変換).
  • 出力(softmax):次フレームの予測トークンのクラス確率.
  • マスク化アテンション
    • Decoder側の,各ブロックの入力層に使用.
    • 現フレーム以降のアテンション係数は,マスク値の$-\inf$に変える(softmax後に0になる).
    • これにより,現フレームの予測単語以前のトークンだけ入力したseq2seqライクな予測が可能に.

以上がTransformerの概要であるが,結局はseq2seqの発展型であり,seq2seq同様,汎用性の高さを持つ.よって,その後継として,音系の分野やVision and LanguageなどでもTransforerが用いられていく(ただし言語モーダル以外でも,信号のトークン化が必要).

1.3 Tranformer 登場後:BERTの登場と,自己教師あり事前学習の流行.

系列データ向けの自己教師あり事前学習である一般化言語モデル(BERT [Devlin et al., 2019],XLNet,GPT-3,T5など)で,Transformerが主部品として使用されている.

また Huggingface社のTransformersフレームワーク(PyTorchベース)が急発展・普及したことから,Transformer・BERTはNLP業界界隈で一気に利用が広まった.ただし,Huggingface Transformersなどの最新NLPソフトウェアでは,英語圏主導のライブラリなので,初期は日本語データセット向けの学習がすぐにはできず,あとから日本語対応モデルが登場している側面もある(サブワードへのトークナイザの整備も必要だった;4.1節).

NLP以外でも,クロスモーダルな応用でTransformerが人気となる.1.2でも述べたが,seq2seq with attentionで従来は解いていた「クロスモーダル問題」が,解く手段がTransformerへ移行したというだけではある.例えば,画像キャプション生成などや,音声認識・TTSなど「入出力間のモーダルが異なる,系列対系列変換モデル」でも,Transformerが用いられる.また,音声系の分野でも ESPNet (Github)の普及が見られるなど,NLP以外の分野でもTransformerベースのソフトウェアライブラリが充実しはじめている.

このサイトの主テーマの「コンピュータビジョン」でも,CNNの代わりにTransformerで解く「Vision Transformer(ViT)」が登場し,物体検出やセグメンテーションなどの主要タスクを,Vision Transformerで解く研究が台頭し,乱立している状況である(2020年以降〜).

1.4 記事の構成

2節以降は,以下の構成で Transformerの基本モデルを紹介していく

  • 2節Transformer の構成部品
  • 3節 Transformer の全体像
  • 4節 Transformer の学習
  • 5節 Transformer の発展型(Transformer-XL)
  • 6節 まとめ

Transformer(2~4節)について紹介したのち,少しだけ発展型(5節)の紹介を行う.Transformerの詳細については,各部品の紹介(2節),全体構成の紹介(3節),学習(4節)の順番で構成した.

2. Transformer の構成部品

seq2seq with attentionと同様に「動的に,毎フレームの予測ごとにアテンションの係数が変わる」点は,Transformerになっても同じである.

ただし,そのときに用いるのがマルチヘッドアテンションという並列化されたシンプルなアテンション層で,系列間の相互アテンション(Cross Attention)を計算する点がseq2seq with attentionとは違う.

また,Encoder内,Decoder内も「マルチヘッドアテンション層を主に用いて,自己アテンション(self-attention)により符号化する」という点が異なる.

2.1 Transformerのおおまかな全体像

Transformerは「マルチヘッドアテンション」を主部品として採用した.これにより系列内・系列外ともにトークン同士の全関係を,毎回のブロックで一括処理できるモデルとなった(Transformerで最も重要な点.2.2.1節で解説).

Transformerでは,Encoder(3.2節)中とDecoder(3.3節)中に6回繰り返し配置する,サブ符号化部品である.以下の2種類の部分層を紹介する:

  1. マルチヘッドアテンション層(2.2節)
  2. トークン位置ごとに実行する順伝搬ネットワーク(FFN)(2.3節)

また,入力言語と出力言語のトークンを埋め込んだ$d_{model}$次元の埋め込みベクトル群を,Encoder・Decoderに入力する前に,位置符号化(2.1節)で得られた位置情報を付加する.

2.2 位置符号化(Positional Encoding)

まず入力系列は,サブワードも含むトークン列へトークン分割(4.1節)され,$d_{\text{model}} $次元ベクトルの表現へ埋め込み変換済みであるとする(デフォルトでは$d_{\text{model}} = 512$).

ここで,系列中の各pos番目のトークン表現ベクトルをTransformerのEncoder or Decoderに入力する前に,以下の正弦関数をもちいた位置符号化(Positional Encoding)で計算した$d_{\text{model}}$次元ベクトルを,元の埋め込みベクトルに加算することにより,トークン位置情報の付加を行う:

\[ P(\text{pos},2d) = \sin \left( \frac{ \text{pos} }{ 10000^{2d/d_{model}} }\right) \]

\[ P(\text{pos},2d+1) = \cos \left( \frac{ \text{pos} }{ 10000^{(2d+1)/d_{model}} }\right) \]

ここで,$\text{pos}$は系列中のトークンの登場位置を意味し,$d$は$d_{model}$次元トークン埋め込みベクトルの,各次元のインデックスである.

このように,埋込み層は学習せずに決め打ちの関数で,トークン位置をEncodeする」点は,Transformerの重要な差異である.Transformer以前の系列対系列変換や,埋込み層も初期化しておいて,seq2seqと一緒に学習する戦略が主流となっていた (DETRなどでも,Positional Embedding層を学習させるより,Positional Encodingで済ませた方が性能が良い傾向がある).

これらの関数の出力値を使うことで,可変長の系列に対応できる.出力値は$d$が小さいと波長が短く,$d$が大きいほど長い波長になり,隣接トークン位置が,ほぼ同じ値を示すようになっていく.逆に言うと,あまり長期の位置関係はEndodeできないことが欠点でもある.この点は,Tranformer-XL(5節)などで,改善案が提案されていく.

この位置符号化したベクトル表現を全$L$個のトークン並べたものも,$d_{\text{model}} \times L$の行列となる.よって,その行列を,サブワード分割で作成した$d_{\text{model}} \times L$の系列行列表現に,各要素ごとに加算して合成することで,「位置情報も加味したトークン系列表現(行列)」を,DecoderとEncoderへ入力できることになる(図1).

2.3 マルチヘッドアテンション

2.3.1 節では,「マルチヘッドアテンション(図2)」を説明する準備として,「自己アテンション」と,従来のseq2seqでも使われてきた「相互アテンション」の違いについて整理する.

その後,2.3.2節で,マルチヘッドアテンションの構成部品「スケール化ドット積アテンション」を紹介し,2.3.3では,それを8個並列接続した「マルチヘッドアテンション層の全体処理」を紹介する.

2.3.1 自己アテンションと相互アテンションの違い

自己アテンション (self-attention)
図2 自己アテンション (self-attention).

NLP や Vision and Language,マルチモーダルの文脈では,以下の2種類に,アテンションの方式を分類して呼び分ける:

  • [図2-a] 自己アテンション(self-attention) : 系列内における,トークンベクトル間のアテンション.
  • [図2-b] 相互アテンション(cross-attention): 系列間での,トークンベクトル間のアテンション(「source-target アテンション」と呼ぶこともある).

自己アテンション [Cheng et al, 2016] [Parikh et al, 2016] は,系列自身内で,トークン埋め込みベクトル同士の関連度を学習する(図2-a).

これまでのseq2seqでは,RNN時系列畳込み層をもちいて「ローカルなトークン間の関係の学習」を行っていた.一方,Transformerでは,系列内の符号化も自己アテンション(self-attention)により行う.これにより,系列全体(=global)におけるトークン間の関係の表現学習に変えることができた.(なおかつ,マルチヘッド化して分散処理化するので,計算量も抑えられる).

また,従来のseq2seq with attentionの系列間アテンションは相互アテンション(cross-attention)であったが(図2-b),Transformerでは,その「系列間の相互アテンション」も,マルチヘッドアテンションで行う.

ただし,アテンションによる関係づけだけだと,線形の変換しか学習できず,表現力に乏しいネットワークになってしまう.そこで,Transformerでは,(線形)アテンションの並列化と合成(2.2.3節)や,非線形層の使用(2.3節)を通じて,全体の表現力を高めるカラクリになっている.

2.3.2 スケール化ドット積アテンション

Transformerの「マルチヘッドアテンション」と,その構成部品の「スケール化ドット積アテンション」
図3 Transformerの「マルチヘッドアテンション」と,その構成部品「(基本形 or マスク化)スケール化ドット積アテンション」.

マルチヘッドアテンションは,「スケール化ドット積アテンション(図3-b, c)」を構成部品として,アテンションの並列計算をおこなう.

スケール化ドット積アテンションは,QKVアテンション方式のアテンションに,スケール化の後処理を追加したものである.系列全体のベクトルを積んだ行列の,Query表現行列 \bm{Q}とKey表現行列$\bm{K}$のあいだで,ドット積をもちいて,両者の行列内の,各ベクトル同士の関連度(類似度)計算を一括で行う

\[
\text{Attention}(\bm{Q},\bm{K},\bm{V}) = \text{softmax}\left(\frac{\bm{Q} \bm{K}^T}{\sqrt{d_k}}\right) \bm{V} \tag{2.1}
\]

ここで,$\sqrt{d_k}$はKey入力$\bm{K}_k$の,各ベクトルの次元数である.

「複雑なスコア関数の計算・学習」は行わずに,単なるベクトル同士の内積で算出したスカラー類似度を,$\frac{1}{\sqrt{d_k}}$でスケール化した値を,各ベクトル同士のアテンション係数として使用する(図2-b).また,QKVに対応する3つの線形層による変換(図2-a 下部)によって入力を変えることで,類似度計算および合成語の最終出力のコンテキストベクトル値が調整されることになる(2.2.3節).

ドット積アテンションを採用しているのは,行列計算テクニックを用いて高速化しやすいからである.また著者が,$\frac{1}{\sqrt{d_k}}$でスケール化するようにしているのは,次のsoftmax層の勾配が小さくなって,勾配消失してしまうのを防ぐ目的である.

マスク化の挿入による「未来予測モデル化」

一方,図2-c は,Decoder内の1層目で使われる「マスクつきアテンション」である.Decoderは,RNNと同じように系列予測モデルにしたい.しかし,アテンションで符号化しようとすると,(スケール化ドット積アテンションが)予測前のトークンも全て使用した行列計算をしてしまうことになり,これでは未来予測にならない.

そこで,直前のA個のトークンのみをマスクして入力系列にできるように,その範囲のベクトル群だけをバイナリーマスクで取り出すマスク化アテンション(Masked Attention)が,Transformer論文では提案された.Decoder側では,マルチヘッドアテンションを,マスク化アテンションとして用いる.

具体的には,ドット積後の行列中で,現フレーム以降にあたる箇所の値を,全て$-\inf$に変更してマスク化する.これによりマスク化した箇所は,softmax後の値が0になり,未来の予測前単語は全て,コンテキストベクトルに加味されないようにできる(※ 参考書籍Getting Started with Google BERT では,マスク前と後の行列を,具体的な数値で図示してくれているなど,実際の値ベースの説明があり理解しやすい).

よって,マスク化を行うと,学習中の各フレーム$i$において,(1)Decoder内の,自己アテンション(1つ目のマルチヘッドアテンション)と,(2)Encoder-Decoderアテンション(2つ目のマルチヘッドアテンション)の双方が,予測前の未来トークンを全て無視できる.これにより,テスト時と同じ条件である「現フレームまでのトークンしか情報を知らないアテンション」を,Decoder側で学習できるようになった.

2.3.3 マルチヘッドアテンションの全体像:アテンションのマルチヘッド化

さて,2.3.1と2.3.2で構成部品の説明が終わったので,マルチヘッドアテンション層(図3-a)の全体像を紹介したい.

マルチヘッドアテンション(図3-a)は,入力の$d_{model}=512$次元のトークンベクトルを,8ストリーム並列に分割した$512/8 =64$次元のサブベクトル入力それぞれに対し,並列にQKVアテンションによる計算化を行い計算したコンテキストベクトル8つを,また1つの$d_{model}=512$トークンベクトルに結合してまとめる.

具体的には,以下のように,スケール化ドット積アテンションを8個並列に実施し,各ヘッド出力の表現$\bm{Z}_i$を,結合して元の1つにまとめる:

\[
\text{MultiHeadAttention}(\bm{Q},\bm{K},\bm{V}) = \text{Concat}(\bm{Z}_1, \bm{Z}_2, \ldots, \bm{Z}_8) \bm{W}^{O} \tag{2.2}
\]

ここで,式(2.2)中の,$i$番目ヘッドからの出力$\bm{Z}_i$は,以下の$i$番目のアテンションモジュールから,並列にそれぞれ計算される(図2-a):

\[
\bm{Z}_i = \text{Attention}(\bm{Q}\bm{W}_i^Q,\bm{K}\bm{W}_i^K,\bm{V}\bm{W}_i^V) \tag{2.3}
\]

式(2.3)は,「スケール化ドット積アテンション」と,Q,K,Vの表現をそれぞれ変換する3つの線形層($\bm{W}_i^Q,\bm{W}_i^K,\bm{W}_i^V$が重みパラメータ)から構成されている(図3(a)中盤部分).

そして式(2.2)のように,並列ヘッド8個分の結合表現$\bm{Z}$が得られたら,最後に線形層$\bm{W}^{O}$で変換して最終出力をする(図3-a).マルチヘッドアテンション前で8分割された64次元ベクトルが,元と同じ次元数の512次元のベクトルとして出力される.以上が,マルチヘッドアテンションの計算手順である.

著者らの狙い:軽くて計算も早いけどよい表現を学習する

マルチヘッドアテンションにより,Inceptionブロックのワイド化戦略のように「ワイド化されたブロック」を線形操作のアテンションだけで構成することができ,なおかつ並列化による計算高速化の効果も得られる.直列ブロックで,なおかつブロック内に活性化関数も使うと計算も重くなるので,代わりに「線形アテンションの並列化で代替して,同等の表現力を目指す」のが,マルチヘッドアテンションのポイント(著者らがこのように設計した狙い)である.

2.4 トークン位置ごとに実行する順伝搬ネットワーク(FFNN)

線形層 – ReLU – 線形層」で構成される,順伝搬ネットワーク(Feed Forward Neural Network, FFNN)を,マルチヘッドアテンション実施後のSubcoder後半に使用する.FFNNは,各トークン位置すべてに対して1つのFFNNのみ用意しておく.

マルチヘッドアテンション後に,$L$個の各トークン埋め込みベクトルに対して,同一のFFNNを,個別に適用する.これは,各位置のトークンの表現を,同一のネットワークで非線形変換する重み共有が行えており,モデル効率も計算効率も良いといえる.

3. Transformer の全体像

3.1 残差接続とレイヤー正規化層

図1.2では見やすさ優先で省略したが,各Subcoder内では,各層ごとに毎回,残差接続レイヤー正規化を行う.また,活性化関数には,ドロップアウト系の正則化作用が得られるGELU(Gaussian Error Linear Units)が採用されている.Transformerは,Encoder6個とDecoder6個の合計12個のSubencoderを用いる.

Google NMT [Wu et al., 2016]など当時の最先端の機械翻訳モデルやNLPモデルでは,LSTMを8層クラスに階層的に積み(stack)することで,各フレームでの表現力を向上させていた.このスタックの方針を,再帰型NNではなく,アテンション中心で行うようにしたのが,Transformerのencoderやdecoderである(※ この当時のスタック化技術については, Yoav GoldbergのNLP本が詳しい).

3.2 Tranformer-Encoderの構成

Transformer の Encoder構成
図3 TransformerのEncoder構成

TransformerのEncoderモジュール(図3-a)は,まず入力層で,入力系列の埋め込み表現(行列)に,位置符号を足した表現(=行列)を受け取る.その入力に対し,Encoderブロック(図3-b)を6回繰り返して,系列表現のEncodingを実行するという構成である.

各Encoderブロック(図3-b)は,以下の2つのサブ層で構成される:

  1. 順伝搬ネットワーク(2.3節):各トークン位置で実行.
  2. マルチヘッドアテンション:自己アテンションに相当する.

また,これら2つの各サブ層には,残差接続とレイヤー正規化を挿入して,Transformer 全体の深さに対する対策がとられている.

マルチヘッドアテンションでは,入力系列の自己アテンションを計算する.6ブロックそれぞれにマルチヘッドアテンション(=自己アテンションとして使用)があるので,「6層の階層的な自己アテンション」をEncoder全体(図-a)を通じて学習することとなる.また「順伝搬ネットワーク」によって,異なるトークン埋め込みベクトルへ非線形変換する.よって,アテンションだけ6層つなげて階層化するよりも,精度は増す反面,ブロックごとに毎回系列表現も変換されていくので,アテンションの説明可能性は悪くなると言える).

3.3 Transformer-Decoderの構成

TransformerのDecoder構造
図4 TransformerのDecoder構成

各Decoderブロック(図4-b)は以下の3つのサブ層で構成される:

  1. 順伝搬ネットワーク(2.3節):各トークン位置で実行.
  2. マルチヘッドアテンション:Encoder 6の表現を$\bm{K},\bm{V}$に,前Decoderブロックの表現を$\bm{Q}$に使用.
  3. マスクありマルチヘッドアテンション:入力系列のうち,現フレーム以降をマスクして無効にできるアテンション.

Decoderでも,これらの各サブ層の後に,レイヤー正規化と残差接続を毎回挿入する.

4. Transformer の学習

4.1 サブワード分割の使用

Transformerの当時(2017)は,元の文章をサブワード分割モデルを用いて,まずサブワードも含んだ「ワード + サブワード」のトークン単位への分割器をソース言語・ターゲット言語から学習し(例:「like + ed 」や 「new + er」),そのうえで「サブワードを含むトークン単位で系列変換を行う」路線が,機械翻訳などのNLP問題で,あらたに標準的アプローチになりつつあった.

seq2seq登場後の初期は,単語単位で系列をモデリングしていた.しかし,語彙数爆発でメモリ許容量を超過する問題や,逆に語彙に含まれない未知語である「語彙外(Out of Vocabulary: OOV)の単語」への対応がうまくいかず解決できてい問題でかった.例えば,seq2seq with attention [Luong et al., 2015] では,学習データの文から単語登場回数を計算し,頻出の5万語の単語のみに,語彙を限定するという対応をおこなっていた.

そこに,サブワード分割を行うと,サブワードも用いて系列表現および系列変換を学習できるようになる.すなわち,「未知語」や「合成語」の予測・認識が強化される利点が得られる.名詞や動詞に「活用」の変化があるラテン語系言語の場合,特に有効である.また我々の「日本語」も,動詞には活用が存在するし,名詞の自由な合成も起こる言語であるゆえ,サブワード化は言語モデリングにおいて有効といえる(※ 日本語サブワード分割(Tokenizer)の学習による「Transformerの日本語への対応」については,この記事では触れない).

当時の代表例としては, バイト対符号化(byte pair encoding)を用いて,サブワードありのトークン分割をおこなって機械翻訳 [Senrich et al.,2015] や,()単語ごとにトークン分割をおこなうWord-Pieceを用いたGoogle NMT [Wu et al., 2016] であれば,既に提案されていた.

そこでTransformerでは,「サブワード化済みのトークン辞書」を入力トークン単位とした実験が行われた.英語-ドイツ語の実験では,WMT2014データセットの文章から,バイト対符号化により37,000語のトークンに分割し,語彙として使用した.一方,更に大規模であるWMT2014の英語-フランス語データセットでは,word-piece で 32,000個のトークン語彙に分割した.

4.2 正則化

Transformerは巨大モデルを,スクラッチからの学習で学習する.つまり,各マルチヘッドアテンション中の8並列のQKVアテンション用の重み係数は,すべてランダム初期化である.(※ 埋め込み層の重みもスクラッチから学習).よって,巨大モデルTransformerでは,過学習対策が大事であり,正則化の使用が必須である.

具体的には,各ブロック出力にドロップアウトを使用して学習する.それに加えて,ラベル平滑化も使用する.(※ GPTやBERT内で使用されたTransformerでは,FFN内のReLUが,GELUに変更されることになる)

4.3 論文での実験結果

元論文 [Vaswani et al., 2017] では,英語-ドイツ語間,英語-フランス語間のデータセットで,機械翻訳モデルを学習する実験がおこなわれた.その結果,当時の最先端であった ConvSeq2Seq [Gehring et al 2017] や,Google NMT [Wu et al., 2016] と,同等もしくは少し上回るBLEU値の精度を,控えめの計算コスト量で実現できることを示した.

5. Transformer の発展型

5.1 Transformer-XL

Transformerの改良版として Transformer-XL [Dai et al. 2019] が提案された.TransformerとRNNをミックスしたハイブリッドモデルにより,Transformerよりも長期のトークン間での依存関係を学習できる.

Transformerからの改善点は以下の2点である:

  1. クラスタリングしたセグメント単位での再帰を追加.(元のTransformerでは,シーケンス全体で一気にアテンション)
  2. 位置符号化から,(query-key) 単語間の相対位置符号化に変更.

Transformerでは,固定長の短い単語間コンテキストしかマルチヘッドアテンションに学習できなかった.それを 1. により,セグメント単位でRNNのように再帰させて予測することで,小分けなセグメント間でだけ(全体)アテンションを行うようにした.なおかつ, 2.によりセグメント内で単語間の相対位置関係をトークンに使用した.

以上の2つの変更により,Transformer-XLは,元のTransformerよりも,長期のトークン間依存関係を表現できるようになり,短文の変換モデルしか学習しづらかったオリジナルのTransformerを,長文向けに改善できた.

6. まとめ

以上,Transformerの基本モデルについて「seq2seq with attentionを用いた機械翻訳(系列対系列変換)の発展型モデル」という視点で解説を行った.Transformer自体の説明ボリュームは大きいので,初提案の論文 [Vaswani et al., 2017] の解説のみにフォーカスする記事構成とした.

Transformerの一番のポイントは『マルチヘッドアテンションEncoder-Decoder全体への採用』であった.マルチヘッドアテンションは,行列積ベースで効率的に計算可能なスケール化ドット積アテンションを,マルチヘッド化することにより,並列計算可能にして計算高速化したものである.この導入により,旧来のseq2seq with attentionのような「フレームごとの逐次計算」はおこなわずに済むようになり,トークン系列全体を,一括で処理できるようになった.

6.1 強力なTransformer:「モラルの高さ」も重要.

Transformer・BERTなどの,近年の言語・音声系で登場した「系列対系列変換ネットワーク」や「一般化言語モデル」は,非常に強力な変換器や認識器を学習できるようになってきた.それにより,機械翻訳などの自然言語処理や,音声認識・音声合成などが急激に発展している.

しかし,この状況が続くようだと使用する側のモラルの高さも今後一層大事になってくる.「その研究開発は,実社会にほんとうにポジティブな影響を与える技術か?」についても,自分で考えたり,他人とも議論していただきたいところである.あなたが,「よかれと思って」研究や開発した先進的技術・サービスでも,その技術がもたらす利便性の進展を犠牲として,監視社会や,階級社会・格差社会の助長などを招いてしまう事は多々ある.気を付けないと,意図していなかったのに「望んでいなかった世界」をつくるきっかけになるケースも出てきかねない.

高いモラル意識や,疑問意識をもちつつ,アカデミックな研究開発やビジネス応用に取り組む(もしくは取り組まない)ことで,人類の最大多数にとって幸せが訪れるような「より良い未来」を切りひらいていただきたい.

参考書籍

References

  • [Brown et al., 2020] Tom B Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, et al. 2020. Language models are few-shot learners. arXiv preprint arXiv:2005.14165.
  • [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 Cohen, Jaime Carbonell, Quoc V Le, and Ruslan Salakhutdinov, Transformer-XL: Attentive language models beyond a fixed- length context. In ACL, 2019.
  • [Devlin et al., 2019] Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. (2019). “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” In Proceedings of NAACL, pp. 4171–4186.
  • [Gehring et al., 2017] Gehring, Jonas, et al. “Convolutional sequence to sequence learning.” In ICML. , 2017.
  • [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, et al.,. A decomposable attention model. In EMNLP, 2016.
  • [Radford et al., 2019] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. 2019. Language models are unsupervised multitask learners. OpenAI Blog, 1(8).
  • [Ruan et al., 2021] Ruan, Ludan, and Qin Jin. “Survey: Transformer based Video-Language Pre-training.” arXiv preprint arXiv:2109.09920 (2021).
  • [Sennrich et al., 2016] Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016. Neural machine translation of rare words with subword units. In ACL, 2016.
  • [Vaswani et al., 2017] Ashish Vaswani, et al. Attention is all you need. In NIPS, 2017.
  • [Wu et al., 2016] Yonghui Wu, et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144, 2016.

参照外部リンク

関連記事