transformers的原理及其在CV中的应用
本文分两个部分,第一部分讲解transformers的网络架构和原理,第二部分讲解如何将其应用到CV领域; 1,transformers的网络架构 是一篇Google提出的将Attention思想发挥到极致的论文。这篇论文中提出一个全新的模型,叫 Transformer,抛弃了以往深度学习任务里面使用到的 CNN 和 RNN。目前大热的Bert就是基于Transformer构建的,这个模型广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要和语音识别等等方向。
如下是Transformer的两个结构示意图: 可以看到transformers主要由多个encoder和多个decoder层叠加而成。 至于encoder和decoder的细节可以从论文中的架构图看到: 模型大致分为 Encoder (编码器)和 Decoder (解码器)两个部分,分别对应上图中的左右两部分。 其中编码器由N个相同的层堆叠在一起(我们后面的实验取N=6),每一层又有两个子层。 第一个子层是一个 Multi-Head Attention (多头的自注意机制),第二个子层是一个简单的 Feed Forward (全连接前馈网络)。两个子层都添加了一个残差连接+layer normalization的操作。 模型的解码器同样是堆叠了N个相同的层,不过和编码器中每层的结构稍有不同。对于解码器的每一层,除了编码器中的两个子层 Multi-Head Attention 和 Feed Forward ,解码器还包含一个子层 Masked Multi-Head Attention,如图中所示每个子层同样也用了residual以及layer normalization。 模型的输入由 Input Embedding 和 Positional Encoding (位置编码)两部分组合而成,模型的输出由Decoder的输出简单的经过softmax得到。
3,transformers的工程实现 由于其强大威力,pytroch已经集成了现成的框架可以使用。datawhale的教程中也给出了具体的实现方式,由于代码篇幅太长,细节很多,这里不在重复贴出。
4,使用transformer实现OCR字符识别
感谢社区提供的精彩教程!
参考文献: 1, 2,