文本生成系列(三)beam search的一些改进

11 篇文章 5 订阅
10 篇文章 1 订阅

引言

我们知道,在文本生成领域,所用到的解码方法有两种:greedy search和beam search。

greedy search相当于在每一步的生成过程中,都选择概率最大的token作为候选token,而beam search则是每一步都选择topk个token作为候选token,然后使用这k个token对应的句子进行下一个词的预测,总共有k*V个结果,再取topk个token,以此迭代直到出现结束符。
在这里插入图片描述

beam search相当于在greedy search的基础上进行了优化,扩大了搜索空间,但是两个解码方法本质上都是选择概率最大的结果,这会导致生成的文本多样性不足。这在一些对话的场景中尤其受限,比如模型会倾向于生成放之四海而皆准的结果(如“是的”,“好的”等等)。

改进策略

思路指引

下图是beam search生成文本与人类撰写文本在生成概率上的区别,可以看到,beam search生成的文本基本上都是取生成模型预测概率最大的结果(这是由beam search的生成策略决定的),而人类撰写的文本所使用的token不一定是生成模型预测概率最大的(这个例子比较极端,差别很大)。

这个例子给了我们一个思路:并不是取生成模型预测概率最大的结果就是最好的,我们可以从采样的角度做一些优化。
在这里插入图片描述

改进方案

随机采样

随机采样比较简单,根据生成模型预测的概率分布,我们按照概率进行采样,将采样结果作为该时刻的预测结果。这样会增大所选词的范围,引入更多的随机性。但是随机采样容易产生前后不一致的问题,所以不太适用于长文本生成领域;而在开放闲聊领域,生成文本的长度都比较短 ,这种问题就被自然的淡化了。

随机采样还有一个改进策略是:添加一个温度系数t来调控采样概率。解码器的输出层后面通常会跟一个softmax函数来将输出概率归一化,通过改变t可以控制概率的形貌。
在这里插入图片描述
t的取值范围为(0,1]。当t大的时候,概率分布趋向平均,随机性增大;当t小的时候,概率密度趋向于集中,即强者愈强,随机性降低,会更多地采样出“放之四海而皆准”的词汇。

top-k采样

随机采样的一个问题是可能会生成一些不相关的词,为了解决这个问题,我们可以采样top-k采样。

top-k采样是在随机采样的基础上,在采样前将输出的概率分布进行截断,取出概率最大的k个词构成一个子集,将这个子集的概率进行归一化,然后从新的概率分布中进行随机采样。

top-k采样存在的问题是k是固定的,但是生成模型预测的概率分布却是动态变化的,因此k的选择变成了一个不好解决的难题。
在这里插入图片描述

如上图所示,这个概率分布变化比较大,有时候可能很均匀(flat),有的时候比较集中(peaked)。当分布集中时,我们可以把k设定得小一些;当分布均匀时,一个较小的k容易丢掉很多优质候选词。但如果k定的太大,这个方法又会退化回随机采样。

Nucleus采样

Nucleus采样也可以叫做top-p采样。上文讲到top-k采样的一个问题是k的选择不好取,而Nucleus采样根据概率来选择保留哪些token,因此k是动态变化的。
在这里插入图片描述
则针对不同的样本可以有不同的k,最终的目的是k个token的概率和要大于设定的概率p。

然后,同样地进行概率归一化:
在这里插入图片描述
以上top-k采样和top-p采样在huggingface的包里都有实现了,有需要的请自行搜索。

其他

惩罚重复词

为了解决重复问题,可以通过coverage机制,即使用惩罚因子将出现过词的概率变小;或者强制不使用重复n-gram词来解决。

coverage机制可参考文本生成系列(二)Pointer Generator Network中的 Coverage Mechanism;

强制不使用重复词比较简单,在生成过程中,判断该n-gram词是否在之前时间步的生成结果中出现,如果出现,则将对应的概率强制置零。

生成限定词

生成限定词在机器翻译领域有比较大的应用,比如对某些专业名词进行限定。有以下几种方法:Grid Beam Search 和 Dynamic Beam Allocation 和 Cube Pruning(逐步递进)。

GBS的目标: 在beam search的过程中, 添加约束, 要某个词必须出现在最终输出序列中.

GBS的主要缺点是在搜索的时候, beam的数目要扩大C倍, C为约束的数目。DBA出发点是限制beam中总的候选数目为k, 在不同的beam中分配不同的候选数目.

PS:以上几篇论文本人未细读,所以暂不展开。

参考:

THE CURIOUS CASE OF NEURAL TEXT DeGENERATION

全面了解Beam Search 2:一些改进点

Beam Search 及5种优化方法

机器翻译 | Grid Beam Search 和 Dynamic Beam Allocation 和 Cube Pruning (网格束搜索和动态束分配和立体剪枝)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>