Transformer: アテンションを主部品とする系列変換ネットワーク

1. はじめに

Transformer は,機械翻訳などの系列対系列変換問題向けの,マルチヘッドアテンションを主部品に用いたディープニューラルネットワークである [Vaswani et al., 2017].

この記事では,Transformerの機械翻訳むけの最初の提案 [Vaswani et al.,2017] のみにフォーカスし(2~4節),発展型(Transformer-XLなど)については,概要だけ少し触れる(5節).記事の焦点を [Vaswani et al., 2017] に限定するのは,この元論文だけでも,説明量が多いからである.

Transformerは,以下の3点のような全体構造を用いた,あらたな系列対系列変換モデルである:

  1. スタック化: EncoderとDecoderは,6層直列に並べて階層化 (GoogleNMTなどの当時の路線を踏襲).
  2. マルチヘッドアテンション: アテンションを並列計算後に合成化する,表現力の高い基本ブロックを考案.
  3. Encoder内/Decoder内も自己アテンションで符号化(再帰型や,時間方向畳み込みは用いない).

この構成により,Transformerは,高精度ながらも,並列に高速な計算・学習が可能な機械翻訳モデルを実現した(ただしTransformerモデルは巨大であり,かなりメモリを喰う).

この意味で,Transformerの登場は,機械学習界隈の全域にブレイクスルーを起こすきっかけともなった.まず,seq2seq with attentionで解かれていた各種の系列変換問題(機械翻訳,音声認識,TTS, vision and languageなど)が,信モデルのTransformerで取り組まれる状況に移行していった.また BERT [Devlin et al., 2019] 等の,言語モデル全体の教師なし事前学習にも,Transformerが主部品として使用されている.画像認識分野でも,Vision Transformer (ViT) が積極的に研究されており,CNNの精度を上回って台頭する状況になりつつある.

以降は,導入として時系列順に3つに分けた概要(1.1 過去の変遷,1.2 モデルの概要,1.3 その後の展開)を通じて,複雑で各部品にそれぞれ意味を持つTransformerの俯瞰度を,1節で先に高めてもらいたい.その後,2節以降の「Transformerモデルの詳しい紹介(2節~4節)」に進んでもらえればと思う.

1.1 登場前夜まで: 系列対系列変換(機械翻訳モデル)の変遷

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

  1. seq2seq :RNN2つを直列に接続(前半RNNの最後の隠れ状態を,後半RNNの最初の隠れ状態に移す).
  2. seq2seq with attention [Luong et al., 2015]:seq2seqに,フレームごとに動的変化するアテンション機構を追加.
  3. ConvSeq2seq [Gehring et al., 2017]: RNNの再帰の代わりに(系列方向の)畳込みを使用して,計算を効率化.
  4. Transformer:アテンションを中心に構成.系列全体のコンテキストを加味できる自己アテンションによる,符号化・復号化を機械翻訳向けに提案.

Transformerが登場するまでは,NLP・機械翻訳以外でも,seq2seq with attention が,音声認識・TTS・Vision and Languageなどにおいて広く活用されていた.よって,Transformerは,seq2seq with attentionの,発展型の対抗モデルである.

一方で,機械翻訳やNLPでは,サブワード分割を使用する方向性もその頃に登場し,「単語+サブワード」の単位で入力をベクトル化するようになってきていた(4.1 節).そこに,Transformerの論文 “Attention is all you need.” が登場した.よって,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化されている』と言える(ただしResNetのように最初から最後まで直列な構造ではない).

まず,一番重要な構成部品である「マルチヘッドアテンション層」についてにまとめたあと(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 Transformerライブラリが広まったことなどから,Transformer・BERTはNLP業界界隈で一気に利用が広まった.ただし,Huggingface Transformerなどの最新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 の構成部品

1.2節の概要でみたとおり,Transformer全体は,それまでのseq2seq with attentionと同じく,「動的に,毎フレームの予測ごとにアテンションの係数が変わる」点は同じである.ただ,そのときに使うのがマルチヘッドアテンションという並列化されたシンプルなアテンション層である.一方,Encoder内,Decoder内もマルチヘッドアテンション層を用いてcodingする点は異なる.

2節では,Encoder(3.2節)中とDecoder(3.3節)中に6回繰り返し配置する,Subcoderモジュールの部品である,以下の2種類の部分層を紹介する:

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

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

2.1 位置符号の合成

まず入力系列は,サブワードも含むトークン列へトークン分割(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}$次元トークン埋め込みベクトルの,各次元のインデックスである.

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

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

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

TransformerのEncoderとDecoderでは,「マルチヘッドアテンション(並列線形変換の結合)」と,「順伝搬ニューラルネットワーク(による非線形変換)」を,N(=6)ブロック繰り返す.これにより,トークン間の複雑な関係性を(再帰や畳み込み無しに)階層的に学習する.

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

2.2.1 節では,上記2通りの使われ方をする「マルチヘッドアテンション層(図2)」を説明する準備として,まずは「自己アテンション」と,従来のseq2seqでも使われてきた「相互アテンション」の違いについてはなす.

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

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

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

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

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

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

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

また,従来のseq2seq with attentionの系列間アテンションは「相互アテンション」であった(図2-b)が,Tranformerでは,そのこれまでもアテンションが使用されてきた「系列間の相互アテンション」も,マルチヘッドアテンションにより行う.

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

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

マルチヘッドアテンション」と,その構成部品の「スケール化ドット積アテンション」
図3 「マルチヘッドアテンション(a)」と,その構成部品「スケール化ドット積アテンション(b,c)」.

マルチヘッドアテンションは,「スケール化ドット積アテンション(図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個のトークンのみをマスクして入力系列にできるように,その範囲のベクトル群だけをバイナリーマスクで取り出す,「マスク化アテンション」を提案した.

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

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

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

さて,2.2.1と2.2.2で構成部品の説明がおわったので,ようやく,マルチヘッドアテンション層(図3-a)の全体構を紹介したい.

マルチヘッドアテンション(図3-a)は,スケール化ドット積アテンションを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}
\]

元論文同様に行列計算で表記しているが,これは各8個のベクトルを長い1つのベクトルの連結(concat)に相当している.

ここで,式(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).以上で,マルチヘッドアテンションの紹介は終了である.

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

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

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

3 Transformer の全体像

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

図1.2では見やすさ優先で省略したが,各Subcoder内では,各層ごとに毎回,残差接続レイヤー正規化を行う.Transformerは,Encoder6個とDecoder6個の合計12個のSubencoderを用いる.

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

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万語の単語のみに,語彙を限定するという対応をおこなっていた.

そこに,サブワード分割を行うと,サブワードも用いて系列表現および系列変換を学習できるようになる.よって,「未知語」や「合成語」の予測・認識が強化される利点が得られる.名詞や動詞に「活用」の変化があるラテン語系言語の場合,特に有効である.また我々の「日本語」も,動詞には活用が存在するし,名詞の自由な合成も起こる言語であるゆえ,サブワード化は言語モデリングにおいて有効といえる.(※ 日本語へのサブワード分割による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は巨大モデルをスクラッチモデルから学習するので,正則化が必須である.

具体的には,各ブロック出力にドロップアウトを使用して学習する.それに加えて,ラベル平滑化も使用する.

4.3 論文での実験結果

[Vaswani et al., 2017] では,英語ードイツ語間,英語ーフランス語間のデータセットで,機械翻訳モデルを学習する実験をおこなった.

その結果,当時の最先端であった ConvSeq2Seq [Gehring et al 2017] や,Google NMT(GMNT)[Wu et al., 2016] と,同等もしくは少し上回るBLEU値の精度を,控えめの計算コスト量で実現できることを示した.

5 Transformer の発展型

5.1 Transformer-XL

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

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

  1. セグメント単位での再帰を追加.
  2. 位置符号化から,(query-key) 単語間の相対位置符号化に変更.

Transformerでは,固定長の短い単語間コンテキストしかマルチヘッドアテンションに学習できなかった.それを,1. により,セグメント単位でRNNのように再帰させ,なおかつ 2.によりセグメント内で単語間の位置関係をトークンに使用することで,Transformerよりも長期のトークン間依存関係を表現できるようになった.

6 まとめ

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

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

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

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

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

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

参考書籍

References

  • [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.
  • [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.
  • [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.

参照外部リンク

関連記事

↓ ためになった方は,記事をSNSでシェアをしてくださると,管理人の記事執筆モチベーションが上がります