> For the complete documentation index, see [llms.txt](https://doraemonzzz.gitbook.io/transformer_evolution_paper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doraemonzzz.gitbook.io/transformer_evolution_paper/mha/sparseorlowrank/013.md).

# Separable Self-attention for Mobile Vision Transformers

论文地址：

* <https://arxiv.org/abs/2206.02680>

## 整体思路以及计算方式

提出了一种Attention的计算方式，主要思想是将$$Q$$压缩为一个向量，这里带来的问题是，$$K$$交互的token变成了一个，所以应该会带来一些性能损失，计算公式如下：

* 输入：$$X\in \mathbb R^{n\times d}$$
* $$c\_s = \mathrm{Softmax}(X W\_1) \in \mathbb R^{n\times 1}$$
* $$X\_k = XW\_k \in \mathbb R^{n\times d}, X\_v=XW\_v \in \mathbb R^{n\times d}$$
* $$c\_v= c\_s^{\top} X\_k \in \mathbb R^{1\times d}$$
* $$O\_1=c\_v \odot \mathrm{ReLU}(X\_v)\in \mathbb R^{n\times d}$$
* $$O\_2=O\_1 W\_o \in \mathbb R^{n\times d}$$

## 时间复杂度

$$O(nd^2)$$。

## 训练以及loss

不变。

## 代码

* <https://github.com/apple/ml-cvnets>

## 实验以及适用场景

只适用于Encoder（$$c\_s$$的计算），性能尚可，作者这里考虑的主要是效率，从效率角度来说却是不错。

## 简评

思路总体来说是很简单的，可以考虑适配到NLP任务中。
