基于Seq2Seq的文本生成
作者:互联网
文章目录
1. seq2seq 框架
序列到序列模型是一种框架结构,它接受一个序列(单词、字母、图像特征等)并输出另一个序列,由编码和解码两部分构成。
如在机器翻译任务中,一个序列指的是一系列的词,一个接一个地被处理。同样,输出的也是一系列单词。
2. seq2seq任务类型
-
阅读理解
-
文本摘要
-
闲聊系统
-
看图说话
-
机器翻译
seq2seq最早是在机器翻译任务中被提出的。
在机器翻译的情况下,seq2seq的运行模式,input->encoder->context->decoder->output。
context(对源文的编码)是一个向量,代表源文的信息。
<video id=“video” controls="“src=”.\images\machine translation by seq2seq.mp4" preload=“none”>
- 编码器(为RNN的情况下):每个词首先转化为词向量,一个个地输入。在每个时间步接受两个输入:来自输入语句的单词和上一时间步的隐藏状态。
- 解码器(RNN):注意最后一个隐藏状态实际上是传递给解码器的context。
2015年,引入注意力机制,极大地提高机器翻译的质量。
<video id=“video” controls="“src=”.\images\machine translation by seq2seq+attention.mp4" preload=“none”>
添加注意力后的模型的特点,主要有两个方面:
-
编码器向解码器传递更多的数据,编码器不传递编码阶段的最后一个隐藏状态,而是将所有隐藏状态传递给解码器。
-
注意解码器在产生输出之前执行额外的步骤,为了聚焦于与该解码时间步骤相关的输入部分,解码的每一时刻执行以下操作:
-
通过编码器隐藏状态与解码器当前隐藏状态的相关性,对不同的编码器隐藏状态打分。
<video id=“video” controls=""src=“E:\课程资料\京东NLP\30-31\images\attention at time step 4.mp4” preload=“none”>
-
打分之后的编码器隐藏状态加权相加,并与当前隐藏状态结合,再进行最后的输出运算。
重复下一个时间步骤。
<video id=“video” controls="“src=”.\images\attention decoder.mp4" preload=“none”>
-
-
训练后的attention可视化结果:解码中不同的步骤会专注于不同的编码器隐状态。
<video id=“video” controls="“src=”.\images\visualization.mp4" preload=“none”>
-
模型并不是预先地将输出的第一个单词与输入的第一个单词对齐。它实际上是从训练阶段学会了如何对齐语言对中的单词。
4. 文本生成任务的评价方法
参考资料:https://baijiahao.baidu.com/s?id=1655137746278637231&wfr=spider&for=pc
4.1 BLEU
BLEU (Bilingual Evaluation Understudy)
-
核心:比较候选译文和参考译文里的 n-gram 的重合程度,重合程度越高就认为译文质量越高。
-
unigram用于衡量单词翻译的准确性,高阶n-gram用于衡量句子翻译的流畅性。
-
通常取N=1~4,再加权平均。
-
P n P_n Pn 指 n-gram 的精确率。
-
W n W_n Wn 指 n-gram 的权重。
-
B P BP BP 是惩罚因子。
-
l r lr lr指参考译文长度。
-
l c lc lc指候选译文长度。
-
希望译文更长些。
假设机器翻译的译文C和一个参考翻译S1如下:
C: a cat is on the table
S1: there is a cat on the table
则可以计算出 1-gram,2-gram,… 的准确率:
直接这样子计算 Precision 会存在一些问题,例如:
C: there there there there there
S1: there is a cat on the table
这时候机器翻译的结果明显是不正确的,但是其 1-gram 的 Precision 为1,因此 BLEU 一般会使用修正的方法。给定参考译文 S 1 , S 2 , . . . , S m S_1,S_2, ...,S_m S1,S2,...,Sm,可以计算 C C C里面 n 元组的 Precision,计算公式如下:
4.2 ROUGE
ROUGE (Recall-Oriented Understudy for Gisting Evaluation)专注于召回率(关注有多少个参考译句中的 n- gram出现在了输出之中)而非精度(候选译文中的n-gram有没有在参考译文中出现过)。
4.2.1 ROUGE-N (将BLEU的精确率优化为召回率)
公式的分母是统计在参考译文中 N-gram 的个数,而分子是统计参考译文与机器译文共有的 N-gram 个数。
C: a cat is on the table
S1: there is a cat on the table
上面例子的 ROUGE-1 和 ROUGE-2 分数如下:
如果给定多个参考译文 S i S_i Si,Chin-Yew Lin 论文也给出了一种计算方法,假设有 M 个译文 S 1 , S 2 , . . . , S m S_1,S_2, ...,S_m S1,S2,...,Sm。ROUGE-N 会分别计算机器译文和这些参考译文的 ROUGE-N 分数,并取其最大值,公式如下。这个方法也可以用于 ROUGE-L,ROUGE-W 和 ROUGE-S。
4.2.2 ROUGE-L (将BLEU的n-gram优化为公共子序列)
ROUGE-L 中的 L 指最长公共子序列 (longest common subsequence, LCS),ROUGE-L 计算的时候使用了机器译文C和参考译文S的最长公共子序列,计算公式如下:
- R L C S R_{LCS} RLCS 表示召回率,而 P L C S P_{LCS} PLCS 表示精确率, F L C S F_{LCS} FLCS 就是 ROUGE-L。
- β \beta β用于调节对精确率和召回率的关注度。
- 如果 β \beta β 很大,则 F L C S F_{LCS} FLCS 会更关注 R L C S R_{LCS} RLCS , P L C S P_{LCS} PLCS 可以忽略不计。
4.2.3 ROUGE-W (ROUGE-W 是 ROUGE-L 的改进版)
ROUGE-L在计算最长公共子序列时,对于子序列的连续性没有限制,即两个词汇之间可以有任意长度的代沟,但是这不一定是不合理的。考虑下面的例子, X X X表示参考译文,而 Y 1 Y_1 Y1, Y 2 Y_2 Y2¥表示两种机器译文。
在这个例子中,明显 Y 1 Y_1 Y1的翻译质量更高,因为 Y 1 Y_1 Y1 有更多连续匹配的翻译。但是采用 ROUGE-L 计算得到的分数确实一样的,即 R O U G E − L ( X , Y 1 ) = R O U G E − L ( X , Y 2 ) ROUGE-L(X,Y_1)=ROUGE-L(X, Y_2) ROUGE−L(X,Y1)=ROUGE−L(X,Y2)。
因此作者提出了一种加权最长公共子序列方法 (WLCS),给连续翻译正确的更高的分数。所以ROUGE-W在ROUGE-L的基础上对连续性添加一个权重。
4.2.4 ROUGE-S (Skip-Bigram Co-Occurrence Statistics)
ROUGE-S 也是对 N-gram 进行统计,但是其采用的 N-gram 允许"跳词 (Skip)",即单词不需要连续出现。skip-bigram是一句话中任意两个有序的词,它们之间可以间隔任意长,基于skip-bigram的ROUGE-S计算如下:
- ROUGE-S先对生成文本和参考文本中的2-gram进行组合,此时的2-gram不一定是连续的,可以是有间隔的,称为Skip-Bigram;
- 然后计算生成文本中出现在参考文本的Skip-Bigram在参考文本所有Skip-Bigram的比重(即 R s k i p 2 R_{skip2} Rskip2);
- 计算参考文本中出现在生成文本的Skip-Bigram在生成文本所有Skip-Bigram的比重(即 P s k i p 2 P_{skip2} Pskip2);
- 选择 β \beta β计算ROUGE-S。
例如句子 “I have a cat” 的 Skip-bigram 包括 (I, have),(I, a),(I, cat),(have, a),(have, cat),(a, cat)。
其中 C C C是组合函数,相比与ROUGE-L来说,ROUGE-S能捕捉所有有序的两个词,为了避免匹配一些相隔过长而无意义的词比如"the the",可以设置最长间隔,此时相应的分母也要按照这个最长距离来计算。
4.3 METEOR
- METEOR同时考虑了基于整个语料库上的准确率和召回率。
- 也包括其他指标没有发现一些其他功能,如同义词匹配,同形词等。
- 在评价句子流畅性的时候,用了 chunk 的概念(候选译文和参考译文能够对齐的、空间排列上连续的单词形成一个 chunk)。
- 应用不是很广泛:只有java版本;超参数多;需要外部资源(比较鸡肋)
5. 参考
- BLEU, METEOR, ROUGE:
《ROUGE: A Package for Automatic Evaluation of Summaries》
《Meteor: An Automatic Metric for MT Evaluation with High Levels of Correlation with Human Judgments》
在NLP当中,不同的评价指标,BLEU, METEOR, ROUGE和CIDEr的逻辑意义?
BLEU,ROUGE,METEOR,ROUGE-浅述自然语言处理机器翻译常用评价度量
标签:BLEU,参考,Seq2Seq,生成,gram,译文,ROUGE,文本 来源: https://blog.csdn.net/u012744245/article/details/112371565