（論文紹介）Fastformer: Additive Attention Can Be All You Need

注意を引くタイトルの論文 [Fastformer: Additive Attention Can Be All You Need](https://arxiv.org/abs/2108.09084) の紹介です。ただし、タイトルほどの価値がある論文ではないのではないか、という批判的なコメントも出ています。それでもこの論文に興味がある、でも、元論文を読むのにあまり時間をかけたくないという方は、以下をお読みください。参考となれば幸いです。

# 論文の概要

**背景:**
機械学習の自然言語処理の分野において、**self-attention**をベースとするTransformer、BERT、およびそれらの発展形モデルは、強力な言語モデルであり、多くのデータセットやタスクに関してトップレベルの予測精度を達成してきました。

**論文が解決しようとしている課題:**
しかし、これらのモデルは、入力テキストが長くなると、学習や推論にかかる時間が急激に増加するという課題を抱えています。TransformerやBERTの場合、入力テキストの語数の二乗のオーダーの計算量が必要になります。

**関連研究:** 
そのため、入力テキストの語数が増えても、予測精度を低下させずに、計算量や所要時間を抑えられるような言語モデルが研究され提案されてきています。そのような有名な言語モデルとしては、Lineformer や BigBird があります。

**本論文の提案モデル:**
本論文で提案している言語モデル Fastformer は、**self-attention**の代わりに**additive attention**を用いることで、語数の線形オーダーの計算量で学習や推論を行うことができます。本論文の実験結果によると、Fastformer は、Lineformer や BigBird と比較して、同程度以上の予測精度を達成しつつ、推論と学習の所要時間を数分の一に短縮しています。


# 計算量の比較


| Method             | Complexity (計算量のオーダー) |
| ------------------ | ----------------------------- |
| Transformer        | $O(N^2・d)$                   |
| Longformer         | $O(N・K・d)$                  |
| BigBird            | $O(N・K・d)$                  |
| Linformer          | $O(N・d/\epsilon^2)$          |
| Linear Transformer | $O(N・d^2)$                   |
| Poolingformer      | $O(N・d・w)$                  |
| **Fastformer**     | $O(N・d)$                     |

ここで
* $N$ は、入力テキストの語数の上限値
* $d$は、分散表現ベクトルの（embedding空間の）次元数。
* $K$は、それぞれのtokenに対してattension計算をするtokenの個数の平均値
* $\epsilon$は、attention matrix approximation error in Linformer
* $w$は、window size in Pooingformer


# 実験結果

テキストの分類タスクの評価結果を以下に示します（元論文より引用）。長いテキストを入力可能な代表的な言語モデルを比較対象としています。Fastformerは、それらのモデルと比べて、概ね同程度以上の予測精度を達成しています。

![Table4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471567/2c4704b7-a22d-20dd-fd42-05687a69e40d.jpeg)

テキストの要約タスクの評価結果を以下に示します（元論文より引用）。Fastformer は、ここでも概ねよい結果を達成しています。

![Table6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471567/68a5a568-7f48-760f-172c-26891ccaecc5.jpeg)

推論速度の評価結果を以下に示します（元論文より引用）。推論速度では、Fastformerは他のモデルの数倍以上を達成しています。学習速度についても、概ね同様の評価結果が得られています。

![Fig2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471567/ad965368-670f-471d-d74b-fd7e2aab4025.jpeg)

# Fastformer のアーキテクチャ

Fastformerのlayerのアーキテクチャ図を以下に示します（元論文より引用）。Fastformerは、このlayerを複数階層並べたものです。

![Fig1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471567/5809a594-6164-69bb-85de-fa25b8ceabab.jpeg)

アーキテクチャの詳細は、元論文や、以下の参照に挙げているYannic Kilcher氏によるyoutube論文解説を参照してください。以下では、このアーキテクチャが計算量のオーダーをどのように削減しているかという点を中心に説明します。

TransformerやBERTで用いられているself-attentionでは、queryを表現するN個のd次元ベクトル $(q_1, q_2,,, q_N)$ と keyを表現するN個のd次元ベクトル $(k_1, k_2,,, k_N)$ に対して、$N^2$個の内積$q_i^Tk_j$を計算します。そのため、$O(N^2・d)$ の計算量が発生します。一方、上記のFastformerのlayerでは、$(q_1, q_2,,, q_N)$の荷重平均$q$を算出してから、$q$と$(k_1, k_2,,, k_N)$の要素ごとの積(element-wise product)をとっています。そのため、計算量が$O(N・d)$で抑えられています。（このあたりの計算を additive attention と呼んでいるようです。）

同様に、queryとkeyから得られたN個のd次元ベクトル $(p_1, p_2,,, p_N)$ と valueを表現するN個のd次元ベクトル $(v_1, v_2,,, v_N)$ に対しても同様の計算をします。そのため、ここでも、計算量が$O(N・d)$で抑えられています。

# 他の研究者のコメント

本論文に対して、以下のような疑問が提示されています（[Yannic Kilcher氏によるyoutube論文解説](https://www.youtube.com/watch?v=qgUegkefocg)）。

* 実験による検証が不十分ではないか？（論文では５種類の評価実験をしているが、その内の３種類がtopic分類や感情分類など比較的簡単の分類問題タスクとなっている。）
* アーキテクチャについて、query, key, valueという名前のベクトルが登場しているが、queryベクトルとkeyベクトルが質的に同等の扱いとなっており、QKV構造による辞書メカニズムが実現されているように見えない。そのため、self-attention のように、うまく文章の文脈を学習できているかわからない。
* ネットワークの一部の区間で residual connection が使用されているが、使用目的がわからない。


# 感想

この言語モデルが速いという主張に関しては、アーキテクチャから考えて確かにそうなるだろうなと思うのですが、Yannic Kilcher氏の挙げている疑問点ももっともだと思います。今後、追加の評価結果や改良モデルが出て再評価されるようならば、この論文を読み返してみたいと思います。

# 参照

- 元論文： [Fastformer: Additive Attention Can Be All You Need](https://arxiv.org/abs/2108.09084)
- 元論文のコード： [github Fastformer](https://github.com/wuch15/Fastformer)
- 元論文のyoutube解説（Yannic Kilcher氏）：[Fastformer: Additive Attention Can Be All You Need (Machine Learning Research Paper Explained)](https://www.youtube.com/watch?v=qgUegkefocg)
- 関連論文：[Attention Is All You Need](https://arxiv.org/abs/1706.03762)
- 関連論文の解説（Ryobotさん）：[Attention Is All You Need （Transformer） ](https://deeplearning.hatenablog.com/entry/transformer)
- 関連論文の解説（birdwatcherさん）：[Qiita:図で理解するTransformer](https://qiita.com/birdwatcher/items/b3e4428f63f708db37b7)