NLP中文本生成任务
文本生成任务
- 1.生成式任务
- 2.自回归模型实现
- 3.Encoder-Decoder结构
- 3.1Attention机制出现
- 3.2Attention思想
- 3.3soft - Attention
- 3.4hard - Attention
- 3.5Teacher Forcing
- 3.6详解Mask Attention
- 3.6.1通过Mask控制训练方式
- 4.生成式任务评价指标
- 5.生成式任务常见问题
- 5.1采样策略
- 5.2指针网络-pointer-network
- 5.3T5
1.生成式任务
释义: 输出Y没有预设的范围,受输入X影响
各领域应用:
- 在人工智能的各个领域都有,包括很多跨领域任务
- 图像领域:图像/视频生成, 图像补全等
- 语音领域:语音合成等
- 文本领域:机器翻译等
在NLP中,输入输出均为不定长的序列;如:机器翻译、机器作诗、自动摘要等。
2.自回归模型实现
释义: 基于语言模型和一段“引言”,生成后续文本。
训练示意图: 即错位进行训练
预测时:
释义: 通过“引言” 预测出下一个字,将下一个字拼接到引言中,再次放入模型预测,反复执行,直到到达设置的停止条件,比如预测出结束符或者是达到预测文本长度。
3.Encoder-Decoder结构
简介: Encoder-Decoder结构是一种基于神经网络完成seq2seq任务的常用方案
释义: 下面是一个简单的LSTM网络的Encoder-Decoder结构
- Encoder:即直接将文本转化为向量,并且对其中的语义进行一定的理解,输出为向量
- Decoder:接收经过一定处理的Encoder信息,将其按照需要解码为对应的字符输出,这一步也会涉及对向量的信息进行一些理解。
3.1Attention机制出现
引子:
- 截图中可以看出,Decoder部分的解码内容,每个解码信息和前面的Encoder传递的内容关联度不一样,有的甚至没有关系。
- Encoder的内容和Decoder的每个实际解码内容重要性不一样,LSTM网络构成结构中,将Encoder的信息全部拿去参与Decoder就不太好。只需要拿关键的重要信息即可
- 找到Encoder输入的信息与Decoder的信息的重要性关联关系,这样的机制就叫注意力机制,即Attention。
举例
文本中每个词对于结果的影响是不同的,可以认为他们应当被赋予不同的权重,这种权重也可以称为attention;比如好
换为难
,意思即完全相反。
3.2Attention思想
改进版本:
释义: 改进版本后,每次计算在Decoder解码时的attention矩阵。
实现思路:
Query是Decoder解码的内容
,上一个解码的词,会加入到下一个词的解码中,这是LSTM的网络设计key是Encoder编码后输入到Decoder的内容
,因为输入的内容在具体解码的步骤的重要性不一样,中间加入了注意力矩阵。- 注意力矩阵是找出Encoder输入中,对下一个预测的重要性,该矩阵需要从
Decoder上一个输入、和Encoder输入计算的来
。
4.即在Decoder预测第二步的结果时,先通过Decoder第一步输出,结合Encoder输入,计算出当前权重矩阵
。再将Encoder输入与权重矩阵计算,得到注意力结果,结合Decoder第一步输出,解码出第二步结果。
5.第一步没有解码结果时,会有一个预设的编码代替。
3.3soft - Attention
注意: 这里的Value就是输入的key,即Encoder结果;其他逻辑没变。
3.4hard - Attention
注意: 相对于soft-attention,这里将计算的注意力结果更加极端
,之前是a1,a2,a3,a4概率加和为1;其中比较重要的概率较大;通过one-hot即,概率大的为1;其他的为0;结果就只和某些关键信息有关。
释义: 使用部分隐向量计算attention
3.5Teacher Forcing
释义: 即每次训练数据都使用正确的内容进行训练。
详细讲解
现在有一个文本生成任务,需要通过输入x1,x2,x3;生成y1,y2,y3
训练过程如下:
第一步:s1: x1, x2, x3 … xn, - > y1
第二步:s2: x1, x2, x3 … xn, ,y1
- > y2
第三步:s3: x1, x2, x3 … xn, ,y1, y2
-> y3
关键点:
需要第一步的预测结果,y1参与到第二步训练中,那么y1,模型能够百分比预测准吗?
不能
,模型前期训练时,准确率更低
怎么办?
- 每一步的训练,都使用正确的内容来训练,即第一步y1预测的值,不作为第二部训练数据,
第二步训练时,直接使用正确预测值参与训练
。这样,第一步到第三步,都可以一起训练,效率提高
;这就是Teacher Forcing;和模型预测时逻辑不一样,有信息泄露问题,但是训练材料较大时,就没有啥问题了。- 训练时,第二步预测,采取第一步预测的结果,不管第一步预测结果对不对。即和模型预测时逻辑一样。
3.6详解Mask Attention
引子: 下面是一个经典的transformer的网络结构图,在右侧Decoder部分,与Encoder不同的地方在于Masked Multi-Head Attention
在实际预测中:
1.上述transformer的左侧输入信息,经过Encoder,成为K、V值,输入到右侧的Multi-Head Attention中。
2.右侧输入就是需要预测的值,第一轮输入时,即为< sos >
,预测的头信息,经过Masked Multi-Head Attention计算后,成为Q值,参与到下一步的Multi-Head Attention计算,最后的到第一个预测结果
3.第一个预测结果出来后,加入到< sos > 后面
,开始第二轮预测,即重复步骤2
4.从上面步骤可以得知,Masked Multi-Head Attention主要是计算预测值之间的注意力关系。
在实际训练中:
- 实际训练中,在右侧输入到Masked Multi-Head Attention的预测值,
是完整的一句话
。如果不做处理,就和预测时不一样了,预测时,前面预测的值,在预测时,是没有计算和后面值得注意力结果得。
- 需要将完整得预测值输入,进行批量得训练,怎么办呢?
3.将前面预测值和后面预测值得关联关系,遮住,也就是masked的由来
下面就是Masked过程
- 计算出预测值之间的注意力关系时,将实际预测中,前面没有办法关注到后面预测值的注意力分数,减去一个较大的值。得到下面右侧的图。
- 由于实际预测中,不存在的注意力分数,即
右上角的-inf
,减去较大值后,较小;经过Softmax后,就得到右侧的注意力分数了。当然:
实际中,是不会有0值的
,可以理解经过softmax后,值会很小,这部分注意力分数几乎不影响
。
3.6.1通过Mask控制训练方式
释义:
- Bidirection LM的训练方式,
代表模型是BERT
- Left-to-Right LM的训练方式,
代表模型是GPT
,相当于Decoder only- Seq-to-Seq LM的训练方式,可以
类比为翻译任务,根据已知的输入句子,输出一个句子
,可以类比理解为原来的模型T5,相当于使用Encoder-Decoder的含义- 拓展,预训练模型GPT的微调,一般就可以理解为使用的Seq-to-Seq LM的训练方式
4.生成式任务评价指标
简介: 生成式任务的评价指标和其他的任务不太一样,并且在当前的发展情况下,没有太统一的方案。
原理:
- 本身这个评价方法是在翻译任务中的
- 采用的是N-gram的方式,将翻译的内容,和标准的翻译内容,进行字词的匹配,比如1-gram、2-gram、… n-gram;
- 这样就得到了,机器翻译的内容,在标准内容中,是否存在,存在多少,和其预测的词梳理比,得到一个概率
- Wn是指采用不同的长度的词得到的概率,最后在相加时,设置的比重。
- BP是惩罚函数;即在机器翻译的内容比标准翻译的长度短时,举例:机器预测:of the;标准译文:Red is one of the primary colors.这种情况,按照上面的计算方式仍然是100%;所以需要有一个惩罚函数。
6.机器预测比标准译文长,按照固有计算方式,就会降低其评价的指标。
拓展: ROUGE评价指标和上述方案类似,不做详细介绍。
5.生成式任务常见问题
1 .语言模型文本生成结果有时会出现段落不断重复的现象。
解决方案: 1.优化模型,增大模型参数,提供广泛的训练数据
2.采样策略相关参数调整
5.1采样策略
Beam Size:是指在序列标注任务中的解码路径保留条数。在生成式任务中也可以使用。
示意图:
Temperature Sampling: 输出每个字的概率分布时,通过参数T,对softmax部分做特殊处理
,temperature越大,结果越随机;反之则约固定。
原理: 就是在原来的Softmax函数中,添加分母T,公式如下:由于函数的性质,往右其取值约来越陡;往左越平缓。那么就导致,T特别大时,
不同的字的概率被压缩的比较小,最后导致概率接近。T特别小,
则原理概率大的预测,更是被放大,不同的字之间预测的概率差距较大。
示意图:
Top-P: (动态)采样时,先按概率从高到。低排序,从累加概率不超过P的范围内选择。取值范围0-1。
详细释义: 在CRF中,当前预测值,有多个,每个预测值的概率不一样,还需要计算前面的预测值选择对当前预测值的影响,来综合选择。在这种情况下,当前预测值的词表大小是非常大的,上万,按照当前节点预测的概率,从高到低进行,进行前后文计算。前节点的预测值有高到达,选择概率和在Top-P之内的,进行前后文计算,其他的就不管了。
Top – K: 采样从概率最高的K个字中选择,和Top-P类似,Top-P选择的K是动态的,只有K个字的概率和大于了Top-P就停止;而Top-K是指定K个。
Repetition Penalty: Frequency Penalty、Presence Penalty类似;用于限制语言模型输出重复的内容。取值范围 > 1
释义: 简单的来说,就是在模型输出,在过softmax前,将输出概率分布中,将重复内容的概率机械的减小。
示例如下:
Max Memory: 从后向前,截断送入模型文本,到指定长度。
举例:max memory = 3
输入: abcde --> cde (被截断)
5.2指针网络-pointer-network
释义: 基于文章摘要总结的任务,通常摘要总结的内容都出现在原文中,设计指针网络,是将原文中高频的词的概率加到attention的网络的预测中,和最后预测的概率分布上,提高原文词的输出概率。
5.3T5
基于seq2seq也可进行模型预训练
bert是一个encoder
seq2seq训练可以得到encoder + decoder
代表:T5
在T5中,提出了所有的NLP任务都可以看作是生成式任务这一理念。