2017年Ashish Vaswani等人发表论文《Attention is all you need》介绍了一种新的架构,称为带有编码器和解码器的转换器(Transformers),它是仅依赖于注意力机制来传递信息的模型。
Transformer整体结构:Encoder-Decoder结构
在Transformer网络结构图的左边部分为Encoder 部分,右边部分为Decoder部分和最后的线性输出层。其中Encoder和Decoder各有6层。一个完整可训练的网络结构便是encoder和decoder的堆叠。
Transformer架构使用了注意力机制,能够处理长序列的依赖关系。其明显的优点:
• 并行计算:由于自注意力机制的引入,Transformer可以实现并行计算,加快训练速度。
• 长序列处理:相比传统的RNN和CNN,Transformer可以处理更长的序列,是由于自注意力机制可以学习到全局的序列信息。
• 模块化结构:Transformer由编码器和解码器两部分组成,每部分都包含了多层相同的模块,这种模块化结构使得Transformer更易于扩展和调整。
缺点:
(1)粗暴的抛弃RNN和CNN虽然非常炫技,但是它也使模型丧失了捕捉局部特征的能力,RNN + CNN + Transformer的结合可能会带来更好的效果。
(2)Transformer失去的位置信息其实在NLP中非常重要,而论文中在特征向量中加入Position Embedding也只是一个权宜之计,并没有改变Transformer结构上的固有缺陷。
自2017年推出之后,Transformer已经形成了自己的家族体系。
在自然语言处理NLP领域,总体的趋势是:LSTM/CNN→Transformer。NLP领域分为两大不同类型的任务:
• 理解类人工智能
• 生成式人工智能
这两个领域的研发,已经收敛到两个不同的预训练模型框架里:
- 自然语言理解,技术体系统一到了以BERT为代表的“双向语言模型预训练+应用fine-tuning”模式;
- 自然语言生成类任务,其技术体系则统一到以GPT为代表的“自回归语言模型(即从左到右单向语言模型)+Zero/Few Shot Prompt”模式。
随着Transformer逐渐统一了NLP,计算机视觉领域显然受到了启发。一些沉迷于CNN神经网络的专家,开始将Transformer引入计算机视觉方面进行研究,取得的效果明显:
• 图像分类:ViT(Vision Transformer)是一种将Transformer应用于图像分类的模型。
• 目标检测:DETR(Detection Transformer)是基于Transformer的目标检测模型。DETR在COCO数据集上取得了与Faster R-CNN方法相当的结果。
• 语义分割:Transformer可以用于语义分割任务,其中每个像素被视为一个token。