近年来,由于基于大型Transformer的语言模型(如OpenAI的ChatGPT和Meta的LLaMA)在数百万网页上进行训练,人们对开放式语言生成的兴趣越来越大。基于条件的开放式语言生成的结果令人印象深刻,表现出对新任务的泛化能力、处理代码的能力,或接受非文本数据作为输入。除了改进的Transformer架构和大量的无监督训练数据,更好的解码方法也发挥了重要作用。
在大语言模型(如GPT)中,解码是生成文本的关键步骤。解码方法决定了模型如何从可能的词汇中选择下一个单词。以下是三种常见的解码方法:贪婪搜索、束搜索(Beam Search)和采样(Sampling)。
1. 贪婪搜索 (Greedy Search)
贪婪搜索是最简单的解码方法。在每个时间步,它只选择概率最高的单词作为下一个单词。这种方法直截了当,但也可能错过全局最优解,因为一旦选择了某个词,就不会再考虑其他可能性。
优点:
- 速度快,计算简单。
缺点:
- 容易陷入局部最优解,生成的文本可能缺乏多样性。
2. 束搜索 (Beam Search)
束搜索是一种改进的贪婪搜索方法,它在每一步都保留多个(称为“束宽”)概率最高的候选序列,而不是只保留一个。在下一步时,这些候选序列会继续扩展,并再次保留概率最高的若干序列。最终,选择整个序列中总体概率最高的序列。
优点:
-
在保持效率的同时,生成的文本质量通常比贪婪搜索更好。
-
能够探索多种可能性,减少陷入局部最优的风险。
缺点:
-
计算复杂度高于贪婪搜索,尤其是当束宽较大时。
-
仍然可能产生较为单一的输出,缺乏多样性。
3. 采样 (Sampling)
采样是一种更加随机的解码方法。在每个时间步,根据条件概率分布随机选择下一个单词。这种方法引入了随机性,因此每次生成的序列可能都不一样。常见的采样策略包括温度采样(Temperature Sampling)和核采样(Top-k或Top-p Sampling),它们通过调整选择的随机性来平衡质量和多样性。
优点:
-
生成的文本更加多样,适合创造性任务。
-
可以通过调整温度或核采样参数来控制随机性。
缺点:
-
如果随机性过大,生成的文本可能不连贯或不合理。
-
需要仔细调节参数以达到最佳效果。
总结
-
贪婪搜索:简单快速,但可能生成较为单一的文本。
-
束搜索:权衡效率和质量,适合需要平衡准确性和多样性的任务。
-
采样:生成多样性高的文本,适用于创造性生成,但可能需要调节参数以保持连贯性。
以下所有功能都可以用于自回归语言生成(这里有一个简短回顾)。简而言之,自回归语言生成基于这样的假设:一个词序列的概率分布可以分解为下一个词的条件概率分布的乘积。
我们将介绍目前最常用的解码方法,主要包括贪婪搜索、束搜索和采样。
贪婪搜索
贪婪搜索是最简单的解码方法。它在每个时间步ttt 选择概率最高的词作为下一个词:
下面的示意图展示了贪婪搜索的过程。
从单词 ‘The’ 开始,算法贪婪地选择下一个概率最高的单词 ‘nice’,依此类推,最终生成的词序列为 (‘The’, ‘nice’, ‘woman’),其总体概率为 0.5 × 0.4 = 0.2。
接下来,我们将在上下文 (‘I’, ‘enjoy’, ‘walking’, ‘with’, ‘my’, ‘cute’, ‘dog’) 上使用GPT2生成词序列。让我们看看如何在Transformers库中使用贪婪搜索。
然而,贪婪搜索的主要缺点是它可能会错过被低概率词隐藏的高概率词,正如我们上面的示意图所示:
单词 ‘has’ 具有0.9的高条件概率,但它被单词 ‘dog’ 隐藏了起来,而‘dog’的条件概率只是第二高,因此贪婪搜索错过了词序列 ‘The’, ‘dog’, ‘has’。
我们可以使用束搜索来缓解这个问题!
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
束搜索
束搜索通过在每个时间步保留 num_beams
个最有可能的假设,从而减少了错过隐藏的高概率词序列的风险,并最终选择总体概率最高的假设。我们用 num_beams=2
来说明这一点:
在时间步1,除了最有可能的假设 (‘The’, ‘nice’),束搜索还会跟踪第二可能的假设 (‘The’, ‘dog’)。在时间步2,束搜索发现词序列 (‘The’, ‘dog’, ‘has’) 的概率为 0.36,高于 (‘The’, ‘nice’, ‘woman’),其概率为 0.2。太好了,在我们的示例中,它找到了最有可能的词序列!
束搜索总能找到比贪婪搜索概率更高的输出序列,但不一定能找到最可能的输出。
让我们看看如何在Transformers中使用束搜索。我们将 num_beams
设置为大于1,并将 early_stopping=True
,这样当所有束搜索的假设都到达EOS(结束)标记时,生成过程就会结束。
采样
在最基本的形式中,采样意味着根据条件概率分布随机选择下一个单词 wtw_twt:
以上面的例子为例,下面的图示化了采样时的语言生成过程。
使用采样进行语言生成不再是确定性的。单词(“car”)是从条件概率分布P(w∣"The")P(w \mid \text{“The”})P(w∣"The") 中采样的,然后从P(w∣"The",“car”)P(w \mid \text{“The”}, \text{“car”})P(w∣"The",“car”) 中采样(“drives”)。
在Transformers中,我们将 do_sample=True
,并通过 top_k=0
关闭
Top-K采样(稍后会详细讲解)。在接下来的部分,我们将固定随机种子以便于说明。你可以更改 set_seed 参数以获得不同的结果,或者去掉它以实现非确定性。
一个技巧是通过降低所谓的softmax温度来使分布P(w∣w1:t−1) 更加尖锐(即增加高概率词的可能性,减少低概率词的可能性)。
Fan et al (2018) 介绍了 简单但非常强大的采样方案,称为 Top-K 采样。在 Top-K 抽样中,对 K 个最有可能的下一个单词进行过滤,然后 概率质量仅在接下来的 K 个单词中重新分配。GPT2的 采用这种抽样方案,这也是其 在故事生成方面取得成功。
在示例中,我们扩展了用于两个采样步骤的单词范围 以上从 3 个字到 10 个字,以更好地说明 Top-K 抽样。
Top-p(原子核)采样
在 Top-p 抽样中,不是仅从最可能的 K 个单词中抽样,而是从最小的可能单词集中选择这些单词,这些单词 累积概率超过概率 P。概率质量 然后在这组单词之间重新分配。这样一来,这个 单词集(也称为集合中的单词数)可以动态地 根据下一个单词的概率增加和减少 分配。好吧,这很罗嗦,让我们想象一下。
已设置p=0.92p=0.92,Top-p 抽样选择_最小_数量 共同超越的话语p=92%p=92%概率质量,定义为VTOP-PVTOP-P.在第一个示例中,这包括 9 个最 可能的单词,而它只需要选择第二个中的前 3 个单词 示例超过 92%。其实很简单!可以看出,它 保留了广泛的单词范围,而下一个单词可以说更少 可预测的,例如 P(w∣“的”)P(w∣“的”),而只有几句话的时候 下一个词似乎更可预测,例如 P(w∣“的”,“汽车”)P(w∣“The”,“car”).
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓