最新AI論文をキャッチアップ

Transformerは本当に変化しているのか?

Transformerは本当に変化しているのか?

Transformer

3つの要点
✔️ これまでの様々なTransformerを調査
✔️ vanilla transformerモデルと25の異なるバリエーションの比較
✔️ Transformerアーキテクチャにおける精度向上のための提案

Do Transformer Modifications Transfer Across Implementations and Applications?
written by Sharan Narang, Hyung Won Chung, Yi Tay, William Fedus, Thibault Fevry, Michael Matena, Karishma Malkan, Noah Fiedel, Noam Shazeer, Zhenzhong Lan, Yanqi Zhou, Wei Li, Nan Ding, Jake Marcus, Adam Roberts, Colin Raffel
(Submitted on 23 Feb 2021)
Comments: 
Accepted to arXiv.

Subjects: Machine Learning (cs.LG); Computation and Language (cs.CL)

code:  

はじめに

深層学習のほとんどの進歩は、アーキテクチャ、損失関数、学習技術の段階的な改善に続いて、性能の急激な飛躍によってもたらされます。残差接続、正規化、ドロップアウト、Adamなど、すべてのドメインで技術水準向上の一部です。当初から、CNNアーキテクチャへのわずかな改善は、いくつかのビジョン・タスクにおける技術水準の向上に役立ってきました。

しかし、2017年に提案されたTransformerは、いまだに元のモデルに大きな変更を加えることなく使用されています。Transformerは、NLP関連タスクにおけるsequence-to-sequenceモデリングだけでなく、同じアーキテクチャがビジョンタスク(ViT)にも有効であることも分かってきました。活性化、正規化、深さ、埋め込み、重み付けなど、特定のタスクに有効な修正が科学的なコミュニティで提案されていますが、それらの技術が広く採用されているわけではありません。

本論文ではこれらの様々な修正が、それらが提案されたものとは異なる他のモダリティにどのように適用するのかを調査し、またいくつかの手法が複数のモダリティにまたがって機能しない理由も推測されています。

キーポイント

このセクションでは、Transformerのアーキテクチャについて簡単に説明します。より詳細な情報については、原著論文またはこの記事をお読みください。

Transformerネットワークは、主にエンコーダとデコーダの2つの部分から構成されています。エンコーダは、ベクトル{x[1], x[2],.......x[T]}のシーケンスを受け取り、ラベル{y[1], y[2],....y[U]}を予測するように学習されます。エンコーダでは入力シーケンスの各トークンが、次元dmodelの対応する埋め込みベクトルに置き換えられます。self-attention操作は順列不変であるため、位置エンコーディングp[t]がエンベッディング・ベクトルに追加されます。

エンコーダの各ブロックは、2つのサブブロックで構成されています。1つはmulti-headed self-attention(MHSA)層、もう1つは密なフィードフォワード層です。MHSAブロックへの入力は、3つの異なる密なプロジェクション層に通され、key(k), value(v), query(q)のベクトルが得られます。ネットワークの層「l」の各ヘッド「h」は、次のような計算を行います。

すべてのMHSAブロックの出力は連結され、dmodelの次元に再投影されます。この出力は残差入力に追加され、正規化され、ReLU非線形性を持つ密なフィードフォワードネットワークに渡されます。

どちらのサブブロックも残差接続を持ち、層の正規化を使用しています。レイヤーの正規化は、シーケンスh[1],h[2]...h[T]に適用される操作で、次のように定義されます。

ここで、γ, β ∈ Rd_modelは、各層ノルム層に固有の学習パラメータを持つ。 

デコーダの1つの違いは、デコーダがターゲットシーケンスの将来のアイテムに注意を払わないようにするアテンションマスクを利用していることです。もう一つの違いは、デコーダはエンコーダからkeyvalueの投影入力を受け取るのに対し、マスクされたMHSA層からqueryの投影入力を受け取ります。その他の構成要素はエンコーダと同様である。

オリジナルモデルの修正

このセクションでは、transformerモデルをテストするために行ったさまざまな修正を見ていきます。

活性化

フィードフォワードネットワークのReLUを、GeLU、Swish、Exponential Linear Units (ELU)、SeLU、Sigmoid(σ)、Softplus、Gated Linear Units(GLU)に置き換えます。GLUは、F(x)・σ(F(x))という演算を行います。GLUのシグモイドをReLU(ReGLU)、GeLU(GeGLU)、標準線形変換(LiGLU)に置き換えてみます。

正規化

Root-Mean-Square Normalization(RMS norm)、Rezeroの初期化、Rezero+layernorm、Rezero+RMSnorm、Fixupの初期化を試します。

深さ

フィードフォワードサブブロックの幅(dff)と深さ(L)の間のトレードオフを、パラメータサイズを一定に保ちながら検討します。

パラメータの共有

transformerには、エンコーダ入力エンベッディング、デコーダ入力エンベッディング、デコーダ出力(ソフトマックス)層の重みという、dmodel×dvocab形状の3つの重み行列があります。これらの行列を結ぶ(重みを共通化する)ことと解く(異なる重みを使用する)ことを試みます。具体的には、エンコーダ入力エンベッディングとデコーダ入力エンベッディングを結びつけたり、デコーダ入力エンベッディングと出力エンベッディングを結びつけたり、すべてのエンベッディングマトリクスを結びつけないようにしてテストします。また、「適応型入力エンベッディング」では、アイテムがその頻度に基づいてクラスター化されることをテストします。エンベッディングの次元はクラスタサイズに比例し、エンベッディングベクトルは同じ次元に投影され、連結されます。場合によっては、dmodel×dvocabのサイズのエンベッディング行列を、dmodel × dinnerdinner × dmodelに因数分解した。埋め込み行列の共有に加えて、他のパラメータ(self-attentionブロックなど)のセットをL層すべてで共有する実験も行っています。 

ソフトマックス

Softmaxのバリエーションとして、Adaptive Softmaxを試します。Adaptive Softmaxは、単語の頻度に基づいてクラスターを形成します。各クラスターは異なるサイズを持つことができ、希少な単語のクラスターのサイズは投影行列を使って縮小されます。また、Mixture of softmax(MoS)と呼ばれる手法は、1つのソフトマックスだけではなく、学習した係数で重み付けされたソフトマックスの線形結合を計算します。

アーキテクチャ

科学界で長年にわたって提案されてきたいくつかのアーキテクチャを用いてテストを行います。

  1. Transparent Attentionは、重み付けされた残差接続を使用します。
  2. 進化ベースのアーキテクチャ探索を用いて設計されたEvolved Transformer。
  3. self-attentionの操作を「synthetic attention」のパターンに置き換えた、因数分解型、高密度型、ランダム型のシンセサイザーのバリエーションを実行します。"プラス”は合成的注意にドットプロダクト的注意が加わる場合、”プラスアルファ”は合成的注意とドットプロダクト的注意の間をスカラーウェイトαで補う場合を示します。
  4. Funnel Transformerは、入力配列を効率的に符号化するために、エンコーダの配列長を短くします。
  5. Lightweight Convolutionsでは、連続するmチャンネル(合計d_modelチャンネル)の重みを共有し、一緒に正規化します。Dynamic Convolutionsでは、値mを固定のハイパーパラメータとして残すのではなく、層の入力の単純な一次関数を用いて決定します。
  6. Switch TransformerとMixture of Experts(MoE)transformerは、適応計算を利用しています。すなわち、フィードフォワード層を、各トークンのパラメータを選択することを学習する疎らに活性化されたエキスパート層に置き換えています。
  7. プロダクトキーメモリーネットワークは、エキスパート層と似ていますが、学習されたアプローチの代わりにk-nearest neighborの加重和を用いてパラメータを選択します。
  8. Universal Transformerは、ある条件が満たされるまで、同じトランスフォーマー・ブロックを入力シーケンスに繰り返し使用します。

実験と評価

前節で挙げたすべてのバリエーションをベースラインモデルであるオリジナルのtransformerモデル(「vanilla transformer」と呼ばれる)に2つの変更を加えてテストします。ハイパーパラメータ、パラメータ数/FLOPs、学習セット、オプティマイザはすべてのモデルで一定に保たれています。これらのモデルは、C4データセットで事前に学習され、3つの伝達学習タスクで評価されました。自然言語理解のためのSuperGLUE、抽象的な要約のためのXSum、質問応答のためのWebQuestionsの3つのタスクで評価されます。さらに、WMT'14英独翻訳タスクの教師付き学習タスクでも評価を行います。実装の詳細については、原著論文をご参照ください。

GLUのバリエーション(LiGLU, SwiGLU...)は、ReLU活性化よりも効果的であることがわかりました。さらに、RMSNormは、モデルの速度と性能を向上させます。Mixture-of-expertsとSwitch transformersは良い性能を示しましたが、各ステップですべてのパラメータが使用されないため、演算(Ops)は同等ですが、パラメータの数はvanilla transformersよりもはるかに多くなります。

性能を大幅に向上させた修正は、マイナーな修正(GLUバリアント、RMSNorm、埋め込み行列のアンタイズ)、パラメータ数の増加(Switch Transformer、プロダクトキーメモリ)または速度が遅い(ソフトマックスの混合、より深いモデル)、今回の実験で使用したMesh TensorFlowコードベースで独自に考案されたもの(エキスパートの混合、Switch Transformer、シンセサイザー)の3つのカテゴリのいずれかにあることに注意しなければなりません。

vanilla transformerのモデル性能を向上させることができた技術はほとんどなく、これらの技術のオリジナル論文に含まれる実験で示唆されていることとは逆の結果となりました。信頼性を確保するために、これらの論文著者のうち12人に実装の検証を依頼したところ、全員が肯定的な回答をしています。

まとめ

本論文は、アーキテクチャの変更を提案する前に様々なタスクやコードベースでモデルの変更を試すことがいかに重要であるかを示しています。トランスフォーマーの改良は、教師付き学習、転移学習、言語モデリング、さらには視覚タスクでテストする必要があります。変更点を比較する際には、ハイパーパラメータを一定に保つことが重要であり、よく調整されたモデルを選ぶことは避けるべきかもしれません。これらの行動規範により、将来的には貴重な時間と資源を浪費することなく、様々なタスクに広く採用される可能性のある柔軟な技術を開発することができるはずです。   

 

 

 

 

Thapa Samrat avatar
今大阪大学の電子情報工学科で学習している2年生のネパールからの留学生です。 機械学習・深層学習に興味あります。だから、暇なときにそれらについて記事を書いています。

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする