Seq2Seq模型中的序列解码策略

导读:在序列生成类任务中,如机器翻译、自动摘要等,Seq2Seq是一种非常强大的模型。作为一种条件语言模型,它直接对P(y|x)进行建模,在生成y的过程中,始终有x作为条件。当训练好了一个这样的模型后,在预测过程中,需要进行解码来找到最有可能的输出序列。这篇文章主要讲解Sequence to Sequence模型在预测阶段中使用的序列解码策略。

一些自然语言处理任务,如脚注生成、机器翻译等,会涉及到生成单词序列,也就是预测结果是单词组成的一个序列。通常情况下,针对这些问题开发的模型会为输出序列中的每个单词生成词汇表中的每个单词上的概率分布,然后用在解码过程中以把这些概率分布转换成最终的单词序列。

解码最有可能的输出序列会涉及到在所有可能的输出序列上基于其概率进行搜索。词汇表的大小通常是由成百上千甚至百万个单词。可以想象,搜索难度在输出序列的长度上是呈指数级增长的,并且穷举所有的可能情况是不切实际的。

因此,在实践中,采用启发式搜索方法来返回一个或更多的近似的或者足够好的被解码好的的输出序列作为最终的预测结果,依据它们的概率值对候选词序列进行评分。

“As the size of the search graph is exponential in the source sentence length, we have to use approximations to find a solution efficiently.” —— Handbook of Natural Language Processing and Machine Translation

很常见的做法就是使用贪心搜索(Greedy Search)或集束搜索(Beam Search)来确定候选文本序列。

“Each individual prediction has an associated score (or probability) and we are interested in output sequence with maximal score (or maximal probability) (…) One popular approximate technique is using greedy prediction, taking the highest scoring item at each stage. While this approach is often effective, it is obviously non-optimal. Indeed, using beam search as an approximate search often works far better than the greedy approach.”——Neural Network Methods in Natural Language Processing

贪心搜索解码器

一种简单直观的方法是使用贪心搜索进行序列解码,在输出序列的每一步中始终选择最有可能(即最大概率)的词。具体来说,就是在生成第一个词 y < 1 > y^{<1>} y<1> 的分布之后,根据条件语言模型挑选出最有可能的第一个词 y < 1 > y^{<1>} y<1>,然后生成第二个词 y < 2 > y^{<2>} y<2> 的概率分布,再挑选出第二个词 y < 2 > y^{<2>} y<2>,以此类推。贪心搜索方法的好处就是它非常快,但是它只能保证每一步都是最优的,无法保证最终的预测序列整体是最优的,特别是如果在 t t t 时刻贪心搜索选择的词不是全局最优,会导致 t t t 时刻往后的所有预测词都是错误的,没有回头路了。如果每个时间步都穷举所有可能的情况的话,时间复杂度 O ( V T ) O(V^T) O(VT) 又太高了。下面我们以机器翻译为例来说明。

法语句子:“Jane visite l’Afrique en septembre.”
翻译 1:Jane is visiting Africa in September.
翻译 2:Jane is going to be visiting Africa in September.

很明显,翻译 1 要比翻译 2 更好,更加简洁明了,相比之下,翻译 2 就显得啰嗦。如果贪心搜索算法挑选’Jane’、‘is’作为输出序列的前两个词,即 y < 1 > , y < 2 > = y^{<1>},y^{<2>}= y<1>,y<2>=(‘Jane’, ‘is’),那么当挑选第三个词 y < 3 > y^{<3>} y<3> 时,贪心搜索算法会选择’going’而不是’visiting’,因为在英语中’is going’比’is visiting’更加常见,'going’的概率是最大的,即 P ( ′ g o i n g ′ ∣ ′ J a n e ′ , ′ i s ′ ) > P ( ′ v i s i t i n g ′ ∣ ′ J a n e ′ , ′ i s ′ ) P('going' | 'Jane', 'is') > P('visiting' | 'Jane', 'is') P(

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值