专栏介绍:本栏目为 “2021秋季中国科学院大学胡玥老师的自然语言处理” 课程记录,不仅仅是课程笔记噢~ 如果感兴趣的话,就和我一起入门NLP吧
目录
- 1.序列生成问题概述
- 2.生成式-序列生成模型
- 基于RNN结构生成模型
- RNN+Attention 架构生成模型
- Transformer 架构生成模型
- 3.选择式-序列生成模型
- 指针网络
- 4.选择-生成式序列生成模型
- 指针生成器网络(Pointer-generator network)
- 拷贝网络( Copy-Network )
- 5.序列生成模型评价指标
- 正确率 (precision, P)
- 召回率(Recall ratio, R)
- BLEU
- ROUGE
- 6.序列生成模型存在问题
- 1️⃣曝光偏差问题(Exposure Bias)
- 2️⃣训练-评价目标不一致的问题
序列生成任务是NLP中的常见的重要任务之一,应用非常广泛,例如机器翻译‚自动文摘、机器阅读理解、对话生成 、自动生成字幕等多项任务。
深度学习中建模序列生成问题方法:
Seq2Seq模型:
Encoder和Decoder具体使用什么模型都是由研究者自己确定。比如:CNN/RNN/BiRNN/GRU/LSTM/transformer等。很明显本次实验机器翻译任务是生成式decoder。
这种模型结构会存在曝光(Exposure Bias)偏差问题(会在本篇博客的最后一小节解释)
对于普通的RNN生成模型对不同的输出 Yi 中间语义表示C是相同的,实际应该:在翻译“杰瑞”的时候,体现出英文单词对于翻译当前中文单词不同的影响程度,比如(Tom,0.3)(Chase,0.2) (Jerry,0.5)。于是可以加入attention机制来解决这个问题。
这一部分内容较多,并且很重要,可以单独看这篇博客:【一起入门NLP】中科院自然语言处理第14课-Transfomer以及Transfomer架构生成模型
编码-解码架构模型的问题:
指针网络应用
指针网络的问题
模型结构
coverage向量表示过往时刻的所有注意力机制的累加,其告诉模型,输入中哪些部分是已经被注意力关注过的,哪些没有。为了使得模型不过多地关注已经关注过的区域,所以将coverge向量作为下一步的注意力的构成部分,这样下一步生成的注意力分布就会有意识地减少已经关注过的区域的概率。
传统 seq2seq存在的问题:
如:对话
hello, my name is Tony Jebara.
hi,Tony Jebara.
Copy-Net 通过 Copy mechanism可以将输入序列中的词拷贝到输出序列中,较好的处理 OOV 问题 (测试-文本摘要)
BLEU(Bilingual Evaluation Understudy)是衡量模型生成序列与参考序列之间的N元词组(N-Gram)的重合度,最早用来评价机器翻译模型的质量,目前也广泛应用在各种序列生成任务中。
1. 基本思想
2.实现方法
3. BLEU修正
为什么要修正?
修正方法
其中()是元组在候选序列中出现的次数,C()是元组在参考序列中出现的次数。例中修正后的一元文法精确度为 p1(x)= 2/7 。
4.长度惩罚
由于精度只衡量生成序列中的 N 元组合是否在参考序列中出现,生成序列越短,其精度会越高,因此可以引入长度惩罚因子 (Brevity Penalty)。如果候选序列的长度短于参考序列,就对其进行惩罚 。
为候选序列的长度, 为参考序列的最短长度。
5.定义
BLEU 是通过计算不同长度的 N 元组合的精度,并进行几何加权平均而得到。
其中为不同 N元组合的权重,一般设为/。BLEU取值范围是 [0, 1],越大表明生成的质量越好。但是 BLEU只计算精度,而不关心召回率(即参考序列里的 N元组合是否在生成序列中出现)
在自回归生成模型中,第步的输入为模型生成的前缀序列y(t-1)。而在训练时,我们使用的前缀是训练集中真实的数据:(−),而不是模型生成的y(t-1)。这种学习方式也成为Teacher Forcing。
模型生成的分布与真实的数据分布并不严格一致。一旦在预测前缀y(t-1)的过程中存在错误,会导致错误传播,使得后续生成的序列也会偏离真实分布。这个问题成为曝光偏差(Exposure Bias)。
解决办法:Scheduled Sampling
解决办法:可采用强化学习的策略进行模型训练
序列生成问题的实验-机器翻译-可以参考这篇博客,NLP作业四:RNN+Attention实现Seq2Seq中英文机器翻译(Pytorch)【代码+报告】