NLP基础(四):Seq2Seq模型Beam search、Scheduled Sampling和ROUGE

本文介绍了Seq2Seq模型在文本生成任务中的优化策略,包括 Beam Search 用于避免局部最优,Scheduled Sampling 提升模型泛化能力,以及 ROUGE 作为文本摘要的评价标准。 Beam Search 在有限计算资源下找到Top k最优解,Scheduled Sampling 在训练过程中逐步减少真实输入,增加模型自我生成部分,而ROUGE-N和ROUGE-L则用于量化生成摘要与参考摘要的相似度。
摘要由CSDN通过智能技术生成

1.Beam search

在文本生成任务中,为了寻找最好的结果可采用greedy search贪心搜索,即每一个时间步都取出一个条件概率最大的输出,再将从开始到当前步的结果作为输入去获得下一个时间步的输出,直到模型给出生成结束的标志。

但是贪心搜索的方式可能会进入局部最优解,甚至找不到较好的结果。因此在计算资源有限的情况下采取Beam search的方式,在每次运算结果中寻找Top k个结果,不断进行迭代。如下图,每一步计算完成后会得到三个最优的结果。在进行某一步计算时,选出当前最优的三个可能,并且与前一步的结果即最优的三个组合进行两两组合,选择出最优的三个组合。然后不断迭代至 < e n d > <end> <end>。该方法应用在模型的测试生成阶段。

当Beam serch size =1时,退化为greedy search。

# greedy search
for t in range(params['max_dec_len']):
    # 单步预测
    _, pred, dec_hidden = model.decoder(dec_input, dec_hidden, enc_output, context_vector)

    context_vector, _ = model.attention(dec_hidden, enc_output)
    # 选择出现概率最大的词
    predicted_ids = tf.argmax(pred, axis=1).numpy()

    for index, predicted_id in enumerate(predicted_ids):
        predicts[index] += vocab.id_to_word(predicted_id) + ' '
    
    dec_input = tf.expand_dims(predicted_ids, 1)

2.Scheduled Sampling

A method for avoiding the problem of exposure bias.

Scheduled Sampling是⼀种解决训练和生成时输⼊数据分布不⼀致的方法,能够有效提升模型的泛化能力。在训练早期该⽅法主要使用目标序列中的真实元素作为解码器输⼊,可以将模型从随机初始化的状态快速引导⾄⼀个合理的状态。随着训练的进行,该⽅法会逐渐更多地使用生成的元素作为解码器输⼊,以解决数据分布不⼀致的问题。该方法应用在模型的训练阶段,生成阶段不可使用。公式如下:

x t = ε x t − 1 + ( 1 − ε ) x ^ t − 1 x_t = \varepsilon x_{t-1} +(1-\varepsilon) \hat x_{t-1} xt=εxt1+(1ε)x^t1

1)线性
ε i = m a x ( ε , k − c i ) \varepsilon_i = max(\varepsilon, k-ci) εi=max(ε,kci),其中 ε \varepsilon ε为最小阈值
0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值