简介
在nlp方面,transformer已经成为了标配。但是在cv方向,transformer的应用仍然是受限的。通常人们只是利用transformer来辅助cnn网络。这篇文章就完全抛弃了cnn,单纯地使用transformer也能够处理分类任务。
贡献
- 证明了单纯地使用transformer是work的。
- 使用大量的数据训练transformer,将精度做到了SOTA。
- pretrain model的开源
CNN vs Transformer
CNN是一种分层(hierarchical)的数据表示方式,高层的特征表示依赖于底层的特征表示,由浅入深逐步抽象地提取更具备高级语义信息的特征。此外,cnn还具有一定的平移不变性和平移等变性。cnn的感受野较小,通过堆叠cnn网络理论上可以做到感受野很大,但是实际感受野远小于理论的。而transformer可以建立一个全局依赖。
transformer的特征提取能够更好地去利用大量的数据量,这个在nlp任务上进行了证明。(在大量的数据集上,超过了cnn结构的最好分类网络)
之前也有很多论文使用self attention来代替cnn,但是由于设计的算法并不利于计算(理论上是高效的)。且最好效果并没有超过cnn结构的最好分类网络。只是按照resnet的设计,进行替换,带来提升。
复杂度的对比。cnn是 O ( m 2 ∗ k 2 ∗ C i n ∗ C o u t ) O(m^2*k^2* C_{in} * C_{out}) O(m