序列生成
-
序列生成问题概述
根据输入的内容X和Y历史序列信息来预测序列中的下一个值的生成——有监督任务;-
深度学习中建模序列生成问题方法:构建一个联合的神经网络,以端到端的方式将一个序列化数据映射成另一个序列化数据,简称Seq2Seq模型,主流的Seq2Seq模型通常基于Encoder-Decoder框架实现
-
Seq2Seq模型按输出产生方式分为三类:
-
生成式模型Decoder:编码端和解码端有各自的词表,二者可相同可不同,解码端需要处理集外词OOV,一般用UNK代替
-
选择式模型Decoder:解码端和编码端词表相同
-
选择-生成式模型Decoder:编码端和解码端有各自的词表,二者可相同可不同,解码端需要处理集外词OOV,一般用UNK代替,该方法可有效处理输出端OOV问题
-
-
生成式-序列生成模型
-
基本RNN架构生成模型
存在问题:对不同的输出 Y i Y_i Yi中间语义表示 C = f ( x 1 , x 2 , x 3 , . . . , x m ) C = f(x_1, x_2, x_3,..., x_m) C=f(x1,x2,x3,...,xm)相同
-
RNN+attention架构
-
Transformer架构生成模型
-
Transformer应用:
-
预测:训练好的模型在预测时将源句子在编码端输入,encoder对其并行编码后得到编码端的输出tensor(不直接作decoder输入),然后Decoder端进行解码
-
步骤:1. 用起始符<Go> 当作decoder的输入,得到输出的第一个词;2. 用<Go> + 已输出的词解码得到后继的输出词;3. 重复2.直至输出为结束符号<EOS>
-
注:输入端编码并行进行,预测解码过程中,一个单词一个单词的穿行进行输出
-
-
选择式-序列生成模型
-
指针网络
-
指针网络的应用
指针网络在NLP领域有广泛的用途,如文本摘要,阅读理解等从输入序列选输出序列的一系列复制类型的任务,指针网络也适合用于解决OOV类问题
-
-
选择生成式-序列生成模型
指针网络:输出直接从输入中选择,输出词表与输入词表相同,无法处理输出需要产生输入词表以外词的情况
生成式网:高度的依赖词的表征,当遇到OOV会出现表达不准确,而实际应用中,有些场合仅仅需对该生僻字逐字保留即可
改进思路:将指针网和生成式网结合,构建可生成也可将输入序列中的词拷贝到输出中的选择的选择-生成式网络-
指针生成器:
-
基本思想:将编码-解码+注意力模型和指针网结合,生成既可以产生也可选择的输出
-
特点: Y i Y_i Yi既可以从输入端C的标识词典中产生也可以从输出端Y的标识词典中产生,这样既可以生成高质量的摘要,也可以处理原文中的未登录词(OOV)
-
模型结构:包括三个主要部分
-
Sequence-to-sequence attention model
-
pointer-generator network
-
Coverage mechanism
-
加入Coverage机制可以有效降低重复出现次数
-
-
序列生成评价指标
-
BLEU:BLEU(Bilingual Evaluation Understudy)是衡量模型生成序列与参考序列之间的N元词组(N-Gram)的重合度,最早用来评价机器翻译模型的质量,目前也广泛应用在各种序列生成任务中。(主要用来衡量精度)
-
RGOUGE:
-
-
序列生成模型存在问题
- 曝光偏差问题:模型生成的分布和真实的数据分布并不严格一致,一旦在预测前缀
y
^
1
:
(
t
−
1
)
\hat{y}_{1:(t-1)}
y^1:(t−1)的过程中存在错误,会导致错误传播,使得后续生成的序列也会偏离真实分布。这个问题成为曝光偏差
错误,会导致错误传播,使得后续生成的序列也会偏离真实分布。这个问题成为曝光偏差 - 解决:训练过程中混合使用真实数据和模型生成数据
- 曝光偏差问题:模型生成的分布和真实的数据分布并不严格一致,一旦在预测前缀
y
^
1
:
(
t
−
1
)
\hat{y}_{1:(t-1)}
y^1:(t−1)的过程中存在错误,会导致错误传播,使得后续生成的序列也会偏离真实分布。这个问题成为曝光偏差