本文已参与「新人创作礼」活动,一起开启掘金创作之路。
纯Transformer模型缺点:
- 参数多,算力要求高
- 缺少空间归纳偏置
绝对位置偏置:在训练时,指定了输入图像尺度,绝对位置偏置的序列长度就固定了,如果后期要更改输入图片尺寸的话,会发现通过图片生产的token序列长度和绝对位置偏置的序列长度是不一致的,就没法进行相加以及后续处理了。
针对这个问题现在最简单的是插值,就是将绝对位置编码插值到与输入token序列相同的长度,插值后会引入另一个问题:插值后的模型拿来直接用可能会出现掉点。但是对于CNN模型,比如在224×224尺度上训练,在384×384进行验证,一般都是会出现涨点,比如在ImageNet可能会涨1个点左右。所以一般对Transformer的绝对位置偏置插值后还要进行微调。
有人可能会说可以用像swim transformer那样的相对位置偏置,确实它对输入尺度并不敏感,他只和设置的window的大小有关,但如果训练时的尺度和迁移到其他任务时的尺度相差较大的话,一般还是会对window的尺寸进行调整的。一旦调整了window尺寸,那么相对位置编码的序列长度也会发生变化,所以还是会遇到刚刚的问题。 - 迁移到其他任务比较繁琐(主要还是由位置偏置导致的)
- 模型训练困难
训练一个Transformer往往要更多训练数据,迭代更多的epoch,更大的L2正则,更多的数据增强,且对数据增强是比较敏感的。比如在MobileViT引言中说,如果移除CutMix以及DeiT style的数据增强方式,那么模型在ImageNet的acc会直接掉6个点
现有的针对上述问题的一种方法就是将CNN与Transformer结合,因为CNN本身就带有空间归纳偏置,并且加入CNN后能加速网络的收敛,使整个网络训练过程更加稳定。
Visual transformer vs. MobileViT
纯Transformer模型缺点:
- 参数多,算力要求高
- 缺少空间归纳偏置
绝对位置偏置:在训练时,指定了输入图像尺度,绝对位置偏置的序列长度就固定了,如果后期要更改输入图片尺寸的话,会发现通过图片生产的token序列长度和绝对位置偏置的序列长度是不一致的,就没法进行相加以及后续处理了。
针对这个问题现在最简单的是插值,就是将绝对位置编码插值到与输入token序列相同的长度,插值后会引入另一个问题:插值后的模型拿来直接用可能会出现掉点。但是对于CNN模型,比如在224×224尺度上训练,在384×384进行验证,一般都是会出现涨点,比如在ImageNet可能会涨1个点左右。所以一般对Transformer的绝对位置偏置插值后还要进行微调。
有人可能会说可以用像swim transformer那样的相对位置偏置,确实它对输入尺度并不敏感,他只和设置的window的大小有关,但如果训练时的尺度和迁移到其他任务时的尺度相差较大的话,一般还是会对window的尺寸进行调整的。一旦调整了window尺寸,那么相对位置编码的序列长度也会发生变化,所以还是会遇到刚刚的问题。 - 迁移到其他任务比较繁琐(主要还是由位置偏置导致的)
- 模型训练困难
训练一个Transformer往往要更多训练数据,迭代更多的epoch,更大的L2正则,更多的数据增强,且对数据增强是比较敏感的。比如在MobileViT引言中说,如果移除CutMix以及DeiT style的数据增强方式,那么模型在ImageNet的acc会直接掉6个点
现有的针对上述问题的一种方法就是将CNN与Transformer结合,因为CNN本身就带有空间归纳偏置,并且加入CNN后能加速网络的收敛,使整个网络训练过程更加稳定。