Background
-
生成模型目前主要使用自回归(Autoregressive)模型,通过上文信息预测下文信息,如GPT系列;
-
BERT系列使用自编码(AutoEncode)模型,在输入中随机mask一部分token,通过上下文预测这个token;
-
自回归主要用于生成文本,如机器翻译和对话系统,而自编码主要用于降维和特征提取,如情感分析、聚类和分类等任务。
自回归模型当生成文本时,并不是同时生成一段文字,而是一个字一个字的去生成,同时新生成的字会继续加入上文,用于生成下一个字。
在自回归架构中,模型针对输入内容逐个token生成输出内容的文本。这个过程一般被称为解码。
在本章的内容中,我们将首先介绍常见的解码策略
解码策略
我们可以将模型预测的结果看作一个向量,这个向量的长度是vocab size,其中每个位置的大小表示选取这个token的概率,如何基于这个信息选择合适的token作为本次生成的token即为解码策略(decoding strategy)
贪婪策略(Greedy Strategy)
最朴素的方案是直接选择概率最高的token,也就是贪婪策略
优点
- 简单高效
缺点
-
可能导致生成的文本缺乏多样性和创意
-
容易产生重复的句子
-
每次选取概率最大的token还可能造成看起来每次达到局部最优,但是最终错过全局最优的情况
由于贪心搜索所采取的是确定性策略,它的效果在不同类型的任务中具有一定的差异。在机器翻译和文本摘要等任务中,任务输出高度依赖于输入内容,贪心搜索通常能够获得不错的结果,但是在开放式生成任务(如故事生成和对话系统)中,贪心搜索有时会因为过于关注局部最优,而生成不自然、重复的句子
针对这种问题,提出了beam search
束搜索(Beam Search)
beam search的思路是既然每次选一个概率最大的可能会错过全局最优的选择,那么每次多选择n(i.e. Beam Size)个概率较大的token,再下一次time step继续多选n个概率较大的token,最后综合评估这几条线路的整体概率,选择其中整体概率较大的情况
-
比如第一步保留了概率最高的两个词“dog”和“nice”作为候选;第二步基于“dog”和“nice” 均进行扩展,我们发现第一步概率较小的dog后面遇到了概率很大的has,使得the dog has整体联合概率达到0.4_0.9=0.36, 而第一步较大概率的the nice women 整理联合概率为0.5_0.4=0.2,通过beam search我们找到了更好的句子序列。
-
在下面的生成步骤中,将会继续基于这两个候选去进行扩展,每次都选择联合概率最高的两个句子。最后,当两个束的句子均生成结束后,选择整体生成概率最高的候选句子作为最终的输出。
-
在实践中,Beam Size的数量通常设定在 3 到 6 的范围内,设置过大的束会显著增加运算开销,并可能会导致性能下降。
-
Beam Size为1即退化为贪婪策略
优点
- 缓解了贪婪策略过于关注局部最优导致错误全局最优的情况
缺点
-
beam search生成的结果相较于人类的结果,仍然有明显的缺点,缺乏多样性,生成内容重复度较高,比较机械
-
https://arxiv.org/pdf/1904.09751
概率采样(Probability Sampling)
另一类方法是根据模型给出的概率分布对token进行采样。虽然较大概率会选中概率较大的token,但是为其他概率较小的token被选中增加了可能性,进而加强生成过程的随机性和文本的多样性。
基于概率采样的方法会在整个词表中选择词元,这可能会导致生成相关性很低的token,导致生成质量下降。为了进一步提高生成质量,减少具有极低概率词汇对于生成结果的影响,主要有以下改进方案:
-
Top-K
-
Top-P
-
temperature
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等,