
要说近些年来最火的深度学习模型,十个人中会有九个人说是Transformer。Transformer的通用性与易训性使得其在自然语言处理领域大方异彩。自2017年提出以来,近5年来大量NLP领域的创新均是基于transformer进行的,例如我们熟知的BERT,GPT2等,均取得良好的实验效果。本篇博客介绍transformer的结构,并提出自己对模型结构的看法。
目录
transformer结构
transformer最初被应用在文本翻译中,即输入一段文本sequence,输出其翻译文本sequence。一个sequence由多个token组成,每个token本身就是一个向量,一个sequence可以理解成是一个向量序列,其中每个元素是向量,元素之间有顺序关系。transformer有2个最核心的模块:encoder和decoder,二者均使用了attention机制和残差神经网络结构。

上面这张图你从各种各样讲解transformer的博客中都能看见,它就是transformer的完整结构。事实上encoder和decoder的框架设计并不是transforme的创新点,在transformer之前的GAN和a utoencoder均有encoder+decoder的设计。transformer最核心的创新点在于:只使用attention机制,避免使用循环神经网络和卷积网络,从而增加并行性,提升速度。1
encoder
encoder即是一个编码器,其作用是获得一个输入的中间表示。其有3个核心要点:
- multi-head attention机制
- add & Norm 归一化
- add & Norm 残差结构
multi-head attention
这个模块是transformer摆脱RNN的关键,在整个transformer中应用广泛,不仅在encoder中使用,也在decoder中有使用。在介绍multi-head attention之前,我们先要了解self-attention机制。self-attention机制最核心的想法是通过计算相关性(也可以理解成相似性)来获得每个value的权重,进而得到一个加权平均的表示。聪明的你一定猜到了,这里的相关性即是attention的由来,哪个元素的相关性大,则其获得的attention则越多。multi-head attention是在self-attention基础上的变形。self-attention可以用公式表示成:
a t t e n t i o n = s o f t m a x ( Q K T / ( d k ) ) V attention=softmax(QK^T/\sqrt(d_k))V attention=softmax(QKT/(dk))V
这里的 Q Q Q、 K K K、 V V V是矩阵,举例来说如果 Q

最低0.47元/天 解锁文章
2万+





