Re:ゼロから始めるML生活

どちらかといえばエミリア派です

"Attention is All You Need" は本当か調べる

f:id:nogawanogawa:20220326162601p:plain

”Attention is All You Need”というタイトルでTransformerの論文が発表されてから随分経ちます。

ただ、最近は”大事なのはSelf Attentionじゃない”といった趣旨の論文をちらほら見かけるようになってきていると感じていて、これについて自分用のメモがてらまとめてみようと思います。

出発点:Transformer

まずはTransformerの構造について紹介しないと、Self Attentionが重要かどうか云々についてもわからないので、見ていきたいと思います。

Transformer

Transformerは、有名な"Attention is all you need"の論文で発表されたモデルでした。 詳しいTransformerの理屈はこちらの記事が非常にわかりやすいのでこちらをご参照ください。

tips-memo.com

Transformerの基本的な構造は下のようになっています。

f:id:nogawanogawa:20220326190116p:plain
Attention Is All You Need より引用

入力に対して、

  1. (Decoderのみ) Masked Multi-Head Attention(Self Attention)
  2. (Decoderのみ) Add & Norm
  3. Multi-Head Attention(Self Attention)
  4. Add & Norm
  5. Feed Forward
  6. Add & Norm

の順に処理が行われる構造になっていることがわかります。

Vision Transformer (ViT)

NLPの世界だけでなく、画像の世界でもVision Transformerが登場しています。

f:id:nogawanogawa:20220326190738p:plain
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale より引用

こちらも入力に対して、

  1. Norm
  2. Multi-Head Attention(Self Attention)
  3. Norm
  4. MLP (Multi Layer Perceptron)

の順に処理が行われる構造になっています。 これも見る限り、Transformerとの基本的な構造での違いは

  • Normが他の処理の後ではなく前に来ている
  • Feed ForwardがMLPになっている

点でしょうか。 MLP層には、2層のNNになっているようで、活性化関数がGELUになっているようです。

Transformer同様、 Multi-Head Attentionが含まれており、こちらもSelf Attentionが使われていることがわかります。

Attention

上で紹介したTransformerはどちらも、NLP・画像の分野で高い性能を達成しています。 そしてこれらどちらもに、Self Attention層が含まれており、長らくこのAttentionがTransformerの肝のように思われていました。 実際、Transformerが発表された論文のタイトルは"Attention is All You Need"と、Attentionこそが最も重要な要素だと言わんばかりのタイトルですしね。

Multi head AttentionはNLPの世界では、あるtermが他のどのtermと強く関連しているかを表したものであり、直感的には人間もこの情報を頭で捉えて言語処理を行っているように思えます。 実際Attentionが登場してから、各種タスクの精度が飛躍的に高まったことから、その有用性を信じ、それを前提とした数多くの改良が研究されていきました。 しかし、TransformerにおけるAttentionモジュールが真に有用だと示されているわけではありませんでした。

Attentionを使わなかったモデル

さて、それでは本題です。 最近のAttentionを使わなかったモデルについて見ていきます。

MLP-Mixer

https://arxiv.org/abs/2105.01601

まずは画像に関して、Attentionを使用しなかったモデルとしてMLP-Mixerです。 MLP-Mixerの主なBlockの構造は下記のようになっています。

f:id:nogawanogawa:20220402163153p:plain
MLP-Mixer: An all-MLP Architecture for Vision より引用

転置(上図上段のT)の処理を無視してみてみると、ViTの構造からAttentionの層がMLP層に置き換わっているのが主な変更だということがわかります。

MLP-Mixerの性能はViT系の先行研究の他のモデルに若干劣るものの、全体的に高い性能を示しています。

f:id:nogawanogawa:20220410015626p:plain
MLP-Mixer: An all-MLP Architecture for Vision より引用

そのため、ViTと同程度の性能をAttentionを使用せず達成できることが確認できます。

MetaFormer (PoolFormer)

https://arxiv.org/abs/2111.11418

MLP-mixerが登場した後、この手のAttentionを使わずに高い性能が達成しようとした研究がいくつか登場したようです。 その後、こうした動きを踏まえてTransformerの構造を一般的な形に整理したのがMetaFormerです。 Vision Transformerの構造をMetaFormerという形で下記のように一般化して整理しています。

f:id:nogawanogawa:20220327151602p:plain
MetaFormer is Actually What You Need for Vision より引用

図のように、MetaFormerの構造の中でSelf Attentionの代わりにPoolingを使用したPoolFormerが登場します。

このPoolFormerの性能を確認すると、モデルサイズが小さくなっているにもかかわらず、ViT系の先行研究より高い精度を達成しています。

f:id:nogawanogawa:20220410020120p:plain
MetaFormer is Actually What You Need for Vision より引用

そのためPoolFormer (MetaFormer) でも、Attentionを使用せずにViTと同程度、あるいは高い性能を達成できることが示されています。

gMLP

https://arxiv.org/abs/2105.08050

PoolFormerは画像データに関するTransformerであるViTにおいてAttention機構を他の層に置き換えることについて言及されたものでしたが、NLPに関しても同様の主張がなされています。 gMLPは下記のようなSpatial Gating Unit (SGU)を組み込んだ構造になっています。

f:id:nogawanogawa:20220327152321p:plain
Pay Attention to MLPs より引用

gMLPでは、Attentionの役割をSGUを用いることで代用し、高い性能を実現しています。

gMLPはCVとNLPどちらの分野についても適用・評価されています。 まず、CVのタスクに関して結果を確認してみます。

f:id:nogawanogawa:20220410021029p:plain
Pay Attention to MLPs より引用

上の図のように、gMLPはモデルパラメータあたりの精度が高く、先行研究に比べて高い性能を達成しています。

次に、NLPのタスクに関して、結果を確認します。

f:id:nogawanogawa:20220410021253p:plain
Pay Attention to MLPs より引用

上の表はBERTと比較した結果になりますが、gMLP自体はモデルサイズが大きくなれば、BERTより高い性能を達成できることが示されています。 また、tiny attentionと呼ばれるサイズ64の単一のheadを持つattentionを追加したaMLPでは、モデルサイズを大きくしなくてもBERTよりも高い性能を達成することができるという結果が得られています。 そのため、Attentionの役割は他の構造のモジュールで置き換えたとしても同等の性能を達成でき、Attentionを使用する際にも tiny attentionのような小さなもので十分ということが示されています。

ConvNeXt

https://arxiv.org/abs/2201.03545

ViTでは、すべてのConv層を除外して、Transformerで置き換えることで高い性能を達成していましたが、そもそもConv層を使用したとしてもViTを超える性能を達成できることを示したのがConvNeXtです。

f:id:nogawanogawa:20220327151937p:plain:w400
A ConvNet for the 2020s より引用

上図のようにConvNeXtではResNetをベースにConv層だけを使用し、先行研究での学習時の最適化や、パラメータ調整を行うことで高い性能を達成しています。

ConvNeXtについても性能を確認していきます。

f:id:nogawanogawa:20220410022302p:plain
A ConvNet for the 2020s より引用

ImageNet-1K、22KともにViTやSwin-TransformerよりAccが高いことが確認できます。 また、Cocoデータセットを使用したObjectDetectionの結果が下記のようになっています。

f:id:nogawanogawa:20220410022504p:plain
A ConvNet for the 2020s より引用

こちらもSwin-Transformerと同等以上の性能は出せていることが確認できます。

Attentionは本当に大事?に関する私見

この調査をした時点での見解としては

  • CV系の分野
    • Metaformerのような構造自体が有用で、Attention自体は実はそれほど重要ではなく、他の構造で置き換えることができる
  • NLP系の分野
    • Attentionが実は重要ではないという可能性がある
    • タスクによってはAttentionの仕組みが性能向上に寄与するが、そのときのAttentionモジュールも軽量なもので良い

といった感じかなと思ってます。

以上より、「Attentionは不必要である」ということではなく「Attentionは他の構造に置き換えたり、軽量化しても高い性能を維持できる可能性がある」というの自分の理解です。 また、CV系に関しては特にこの傾向が強く、Attentionを置き換えたとしても精度が悪くならなかったり、性能が向上している例も見られます。 逆にNLP系に関しては、Attentionを置き換えたとしても精度が悪くはならないという程度に見受けられ、今後さらに研究が進められていく気がしています。 (あくまで個人の見解なのと、自分が読んだ論文の範囲での理解なのでその点ご了承ください)

MetaFormerの論文を見る限り、CV系のタスクにおいてはAttention機構が重要なのではなく、token mixerを含めたTransformerの構造自体が性能に対して重要な役割を果たしているものと考えられています。 gMLPの論文を見る限り、NLP系の分野についても、必ずしもAttentionが不要というわけではないが、Attention以外のモジュールで代用することが可能と考えられます。

参考文献

この記事を書くにあたって下記の文献を参考にさせていただきました。

arxiv.org

arxiv.org

arxiv.org

arxiv.org

tips-memo.com

qiita.com

ai-scholar.tech

deepsquare.jp

qiita.com

qiita.com

論文メモ

紹介した論文のメモは下記にあります。

感想

よくAttentionがすごいと思われがちですが、「結局のところTransformerの肝は実はAttentionじゃなさそうだ」という説があることを紹介したいがために書いた記事でした。 この雑学(?)を職場(or 学校)で披露すれば、あなたも「機械学習チョットワカル人」認定されること間違いなしですね!(ホントか?)

…と冗談はこの辺にして、個人的には正直Transformerは何が肝なのかちょっとわからなくなってきました。 ちょっと前までは「Attentionがすごいんだ」と勝手に思っていたので、これからの研究動向には注目ですね。

以上、雑談用の記事でした。