语言模型|主流的解码方法(采样方法)

在采用自回归范式的文本生成任务中,语言模型将依次生成一组向量并将其解码为文本,将这组向量解码为文本的过程被成为语言模型解码。当前,两类主流的解码方法可以分为:

1 概率最大化方法

语言模型每次输出的向量大小为整个词表的大小,向量的每个元素代表对应的词的概率。假设,现在我们要在“长颈鹿”后再得到两个词,如下图所示:

  1. 贪心搜索(Greedy Search):在每个词生成时都选择当下概率最大的。贪心搜索只顾“眼前利益”,忽略了“远期效益”。当前概率大的词有可能导致后续的词概率都很小。贪心搜索容易陷入局部最优,难以达到全局最优解。为了缓解此问题,可以采用波束搜索。
  2. 波束搜索(Beam Search):在每轮预测中都先保留b个可能性最高的词。如下图所示:如果我们采用 b = 2 的波束搜索方法,我们可以得到“是草食”,“是反刍”,“脖子
    长”,“脖子优雅”四个候选组合,对应的概率分别为:0.03,0.027,0.1,0.04。我
    们容易选择到概率最高的“脖子长”,而不是贪心搜索的“是草食”。

概率最大的文本通常是最为常见的文本。这些文本会略显平庸。在开放式文本生成中,无论是贪心搜索还是波束搜索都容易生成一些“废话文学”—重复且平庸的文本。其所生成的文本缺乏多样性。        

2 随机采样方法

为了增加生成文本的多样性,随机采样的方法在预测时增加了随机性。在每轮预测时,其先选出一组可能性高的候选词,然后按照其概率分布(利用softmax得到候选词的概率分布)进行随机采样,采样出的词作为本轮的预测结果。

当前,主流的 Top-K 采样和 Top-P 采样方法分别通过指定候选词数量和划定候选词概率阈值的方法对候选词进行选择。在采样方法中加入 Temperature 机制可以对候选词的概率分布进行调整。

  1. TOP-K采样:选取K个概率最大的词作为候选。缺点:当候选词的分布的方差较大的时候,可能会导致本轮预测选到概率较小、不符合常理的词,从而产生“胡言乱语”。例如,在如图1.9 (a) 所示的例子中,Top-2 采样有可能采样出“长颈鹿有四条裤子”;而当候选词的分布的方差较小的时候,甚至趋于均匀分布时,固定尺寸的候选集中无法容纳更多的具有相近概率的词,导致候选集不够丰富。
  2. TOP-P采样(Nucleus采样):设定阈值 p 来对候选集进行选取。解决了TOP-K的两个缺点:可以避免选到概率较小、不符合常理的词,从而减少“胡言乱语”。例如在图1.9 (a) 所示例子中,我们若以 0.9作为阈值,则就可以很好的避免“长颈鹿有四条裤子”的问题;同时可以容纳更多的具有相近概率的词,增加文本的丰富度。
  3. Temperature机制:Top-K 采样和 Top-P 采样的随机性由语言模型输出的概率决定,不可自由调整。但在不同场景中,我们对于随机性的要求可能不一样。比如在开放文本生成中,我们更倾向于生成更具创造力的文本,所以我们需要采样具有更强的随机性。而在代码生成中,我们希望生成的代码更为保守,所以我们需要较弱的随机性。引入 Temperature 机制可以对解码随机性进行调节。
    1. Temperature 机制通过对 Softmax函数中的自变量进行尺度变换,然后利用 Softmax 函数的非线性实现对分布的控制。设 Temperature 尺度变换的变量为 T。
    2. 结论:当 T > 1 时,Temperature 机制会使得候选集中的词的概率差距减小,分布变得更平坦,从而增加随机性。当 0 < T < 1 时,Temperature 机制会使得候选集中的元素的概率差距加大,强者越强,弱者越弱,概率高的候选词会容易被选到,从而随机性变弱。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值