【NLP】语言模型、Transformer

一、词袋

二、Word_embedding

三、预训练模型

【NLP】语言模型、Transformer
【NLP】语言模型、Transformer

3.1:ELMO 解RNN的语言模型

【NLP】语言模型、Transformer

就是预测下一个token,训练好了之后,推知上下文不同,那么同一个token的表示也不同。
也可以双向:
【NLP】语言模型、Transformer

不同隐层的weight sum
【NLP】语言模型、Transformer

3.2 Bert

BERT-任务1 【NLP】语言模型、Transformer
语义相近词语的理解:
1、由于语义相近的词语语境类似,而其embedding语境的综合结果,故相似。
2、就算相似也要分类为不同的词语:在较进的子空间、Bert强。
任务2: 【NLP】语言模型、Transformer
第一个任务:相同语境的词靠的近一些,第二个任务是不同语境的词靠的远一些。

wwm-全词覆盖:专门为中文设计
【NLP】语言模型、Transformer
不同的任务,care的层。 【NLP】语言模型、Transformer

3.3 GPT:

【NLP】语言模型、Transformer
以下transformer,参考:https://blog.****.net/sunhua93/article/details/102764783

4、Transformer

关于self-attention
设语料库的维度为V,预设的词向量维度为512,那么首先随机初始化该矩阵,在后面的训练过程中不断的迭代更新,训练结束后就得到了每一给词的词向量。

Scaled Dot-Product Attention
1-线型变换
【NLP】语言模型、Transformer

每一个词向量和QKV矩阵相乘,得到对应的q,k,v向量。

2 打分
q和本序列内的所有单词的k向量相乘,记做匹配分数,此处需要做一次放缩,即所谓的Scaled Dot-Product Attention,然后用soft-max做归一化处理。
【NLP】语言模型、Transformer

3 加权求和

这样就得到了该【NLP】语言模型、Transformer
的向量表示,如果用矩阵来运算,就得到所有位置的向量表示。
整体过程为:
【NLP】语言模型、Transformer

对应的计算公式为:
【NLP】语言模型、Transformer

得到V*dv的矩阵

多头attention
我们知道,在scalar attention中,初始化了一组QKV矩阵,并最终将每个token表示成dv维度的向量。现在考虑初始化8组矩阵,这样得到8组结果,接着将所有矩阵concatenate到一块,最后和一个大的矩阵相乘实现维度变换。这个大矩阵也会一块学习。
【NLP】语言模型、Transformer

Wo:8dvdmodel,最后输出Vdmodel。
PS:self attention:一个句子中每个词和所有词交互进行attention计算,目的是学习内部的词依赖关系。是Q=K=V的计算。但是transformer先变换了一次。

对于使用自注意力机制的原因,论文中提到主要从三个方面考虑(复杂度,并行,长距离依赖学习),并给出了和RNN,CNN计算复杂度的比较。可以看到,如果输入序列n小于表示维度d的话,每一层的时间复杂度self-attention是比较有优势的。当n比较大时,作者也给出了一种解决方案self-attention(restricted)即每个词不是和所有词计算attention,而是只与限制的r个词去计算attention。

在并行方面,多头attention和CNN一样不依赖于前一时刻的计算,可以很好的并行,优于RNN。在长距离依赖上,由于self-attention是每个词和所有词都要计算attention,所以不管他们中间有多长距离,最大的路径长度也都只是1。可以捕获长距离依赖关系。

位置编码
【NLP】语言模型、Transformer
公式分析:
i的取值范围为0-255,对应向量维度,pos是分子,对应词,尾项是分母;
当i变化时分母取值1-10000,周期2π→ 2π * 10000
奇数维为例,固定pos,sin(pos)→sin(pos/10000)=0,所以前期震荡,后期收敛于0.

残差模块,防止退化。

Layer-Norm
首先回顾下Batch-Normalization:
BatchNorm为什么NB呢,关键还是效果好。①不仅仅极大提升了训练速度,收敛过程大大加快;②还能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果;③另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。总而言之,经过这么简单的变换,带来的好处多得很,这也是为何现在BN这么快流行起来的原因。

【NLP】语言模型、Transformer
Layer Normalization
【NLP】语言模型、Transformer

为什么是layer_norm?

解码:
Mask:transformer中有两种mask,分别是padding mask 和 sequence mask。

其中,padding mask 在所有的 scaled dot-product attention 里面都需要用到,而 sequence mask 只有在 decoder 的 self-attention 里面用到。
要区别padding和padding mask,padding是为了进行矩阵运算,并且不引入噪声,而padding-mask是为了计算softmax函数时使得padding的位置为0.所以要加-inf。

Sequence-mask:为了信息隐藏。
对于 decoder 的 self-attention,里面使用到的 scaled dot-product attention,同时需要padding mask 和 sequence mask 作为 attn_mask,具体实现就是两个mask相加作为attn_mask。其他情况,attn_mask 一律等于 padding mask。