- 先普及一些NLP基本概念,也给自己提个醒。
- tokenization指的是分词,分出来的每一个词语叫做token。文本向量化,转化成vector(一般不用one-hot,文本很多就完蛋了)
- word-embedding:使用了浮点型的稠密矩阵表示token,根据词典大小,向量会使用不同的维度,可以是100,256,300等等。向量中每一个值是个超参数,初始的时候是随机生成的,之后会在训练的过程中进行学习而获得。能够比one-hot表示减少大量的空间。可以把文本转化成向量,句子也可以。一般来说会先用token使用数字表示,然后用数字转化成向量。
- 要对各种x-transformer进行理解,首先要了解他们的祖师爷,原版transformer。transformer抛弃了CNN,RNN,成为了自立门户的新模型,广泛应用于NLP领域,在很多领域能够达到SOTA。
原版Transformer:
- 每一个encoder和decoder的内部结构都是下面这张图片所展示的。要理解transformer,这两个重要的知识点一定不能放过。

-
encoder部分:
- encoder包括前馈神经网络和self-attention部分。我们可以得到下面的流程箭头图:
- input embedding->positional encoding->
- for i in range(6): 因为transformer有6个encoder
- self attention->layer normalization->FFN->layer normlization

- self attention->layer normalization->FFN->layer normlization
-
decoder部分:
- decoder主要包括self-attention, encoder decoder attention, 加上FFN,可以得到下面的箭头流程图:
- input embedding->positional encoding->
- for i in range(6): 因为transformer有6个decoder
- self attention->layer normalization->encoder decoder attention->layer normalization->FFN->layer normlization
-
总体流程图可以从这幅图得到,从总体到局部,这样方便我们逐个击破:

Positional Encoding:
- transformer并没有存储单词位置信息的方法,比如狗咬人和人咬狗它区分不出来,为了解决这个问题,在encoder和decoder层都加入了positional embedding。positional embedding是一个维度和embedding向量,如何得到这个独特的向量呢?虽然方法有很多,但是作者采用了周期函数对位置进行标定,函数如下图所示:
- PE(pos,2i)=sin(pos/100002i/dmodel )PE(pos,2i+1)=cos(pos/100002i/dmodel )\begin{aligned} P E_{(p o s, 2 i)} &=\sin \left(p o s / 10000^{2 i / d_{\text {model }}}\right) \\ P E_{(p o s, 2 i+1)} &=\cos \left(p o s / 10000^{2 i / d_{\text {model }}}\right) \end{aligned}PE(pos,2i)PE(pos,2i+1)=sin(pos/100002i/dmodel )=cos(pos/100002i/d

本文详细介绍了Transformer模型的基本原理,包括自我注意力机制、多头注意力、位置编码等核心组件,并探讨了其相较于传统RNN的优势。
最低0.47元/天 解锁文章
2131

被折叠的 条评论
为什么被折叠?



