当前位置: 首页 > news >正文

GPT 解码策略全解析:从 Beam Search 到 Top-p 采样

大语言模型(LLM)如 GPT 在推理时,并不是一次性生成整句话,而是一步步预测下一个 token。每一步都会输出一个概率分布,告诉我们在当前上下文下每个词(或子词)出现的可能性。

如何从这个概率分布中选择下一个 token,决定了模型输出的风格和质量。这就是解码策略(Decoding Strategies)的核心。

本文将介绍几种常见的解码方法,并结合公式、例子分析它们的优缺点。

1. Greedy Search(贪心搜索)

原理
每一步都选择概率最高的 token:

其中 V 是词表。

例子
假设 GPT 在预测下一个词时输出:

  • apples:0.5

  • bananas:0.3

  • cars:0.2

贪心搜索直接选 apples,然后继续下一个 token 的预测。

优点

  • 快,计算开销最小

  • 结果稳定,可复现

缺点

  • 容易陷入局部最优(早期错误无法修正)

  • 多样性差,常出现重复循环

2. Beam Search(束搜索)

原理
不是每步只保留一个候选,而是保留 k 条概率最高的序列,并在生成过程中并行推进它们。
目标是近似求解:

常用长度归一化

例子:Beam 宽度 k = 2

Step 0

起始输入:["I", "like"]
累计 log 概率 = 0(初始化)

Step 1(预测第一个词)

GPT 输出概率:

  • "apples":0.5

  • "bananas":0.3

  • "cars":0.2

保留 top-2(k=2):

  1. ["I", "like", "apples"],log 概率 = log(0.5)

  2. ["I", "like", "bananas"],log 概率 = log(0.3)

Step 2(预测第二个词)

对每条 beam 扩展:

"apples" 扩展

  • "very":0.6

  • "red":0.4

"bananas" 扩展

  • "are":0.5

  • "yellow":0.5

所有候选(带累计概率):

  1. I like apples very:log(0.5) + log(0.6)

  2. I like apples red:log(0.5) + log(0.4)

  3. I like bananas are:log(0.3) + log(0.5)

  4. I like bananas yellow:log(0.3) + log(0.5)

排序取前 k=2:

  1. I like apples very

  2. I like apples red(假设它比 banana 组合得分高)

Step 3(预测第三个词)

继续扩展 top-2:

"I like apples very" 扩展

  • "much":0.7

  • "sweet":0.3

"I like apples red" 扩展

  • "and":0.6

  • "juicy":0.4

最终所有候选(累计概率最高的排前面):

  1. I like apples very much

  2. I like apples red and

优点

  • 比贪心更可能找到全局最优

  • 适合机器翻译、摘要等确定性任务

缺点

  • 计算量大(随 k 增长)

  • 多样性低,生成结果常相似

  • 对开放式生成(聊天、创作)效果一般

3. Top-k Sampling(截断采样)

原理
在每一步的概率分布中,只保留概率最高的 k 个 token,并归一化后按概率随机采样:

例子(k=3)
如果概率分布是:

  • apples:0.5

  • bananas:0.3

  • cars:0.2

  • 其他:很小概率

只保留 applesbananascars,再随机抽一个。

优点

  • 保证词汇质量(只在高概率集合内选)

  • 增加多样性

缺点

  • k 选得太小 → 变得接近贪心

  • k 太大 → 噪音增多

4. Top-p Sampling(核采样,Nucleus Sampling)

原理
动态选择最小的子集 V_p,使得累计概率 ≥ p:

然后在这个子集内按概率采样。

例子(p=0.9)
假设概率排序:

  • apples:0.5

  • bananas:0.3(累计 0.8)

  • cars:0.1(累计 0.9)

此时只保留 applesbananascars,随机采样一个。

优点

  • 动态调节候选集合大小

  • 在保持流畅性的同时增加创意性

缺点

  • p 太高会引入低概率词

  • p 太低会变得保守

5. 温度采样(Temperature)

原理
温度参数 T>0 调整概率分布的平滑度:

  • T < 1:放大高概率 token,输出更确定

  • T > 1:平滑概率,输出更随机

例子
原始分布:apples 0.5, bananas 0.3, cars 0.2

  • T=0.7:apples 概率会更大

  • T=1.5:三者概率更接近

优缺点

  • 控制随机性

  • 需要与 Top-k / Top-p 搭配使用

6. 对比总结

策略多样性确定性计算成本典型场景
Greedy快速摘要、确定性任务
Beam机器翻译、摘要
Top-k创意写作、对话
Top-p对话、故事生成
温度可调可调调整生成风格

7. GPT 的实际选择

在开放式生成任务(聊天、创作)中,GPT 很少用 Beam Search,而是采用 Top-p + 温度,因为这种方式能在保持流畅性的同时,增加多样性与创造性。

机器翻译或摘要类任务,Beam Search 仍有用武之地,但在大多数对话场景中,它会显得“死板”。

结语
解码策略是连接“模型概率”与“实际输出”的桥梁。选对策略,就像给 GPT 配上一双合适的鞋:

  • 想跑得稳?用 Beam Search。

  • 想跑得花?用 Top-p + 温度。

http://www.xdnf.cn/news/1301113.html

相关文章:

  • 流处理、实时分析与RAG驱动的Python ETL框架:构建智能数据管道(上)
  • CPU、内存、存储:生信分析任务的服务器配置精要
  • 第20章 LINQ 笔记
  • 8.15网络编程——UDP和TCP并发服务器
  • 【数据分享】上市公司创新韧性数据(2007-2023)
  • 数据驱动测试提升自动化效率
  • 终极手撸cpu系列-详解底层原理-CPU硬核解剖:从0和1到 看透CPU逻辑设计内部原理,弄清楚现代多线程cpu工作原理
  • Microsoft Visual Studio常用快捷键和Windows系统常用快捷键的整理
  • Linux-地址空间
  • 开发避坑指南(27):Vue3中高效安全修改列表元素属性的方法
  • 【学习笔记】NTP服务客户端配置
  • Go语言中安全停止Goroutine的三种方法及设计哲学
  • 前瞻性技术驱动,枫清科技助力制造企业借助大模型完成生产力转化
  • zabbix部署问题后常见问题
  • 新手入门Makefile:FPGA项目实战教程(二)
  • 【CV 目标检测】②R-CNN模型
  • 【Redis】分布式系统的演化过程
  • MyBatis的基本用法和配置方式
  • Highcharts Dashboards | 打造企业级数据仪表板:从图表到数据驾驶舱
  • 全球电商业财一体化:让出海品牌实现“看得见的增长“
  • demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记
  • Nginx反向代理与缓存实现
  • 人工智能与社会治理:从工具到生态的范式重构
  • Kafka生产者——提高生产者吞吐量
  • 切换VSCODE 中的默认 shell
  • GitHub 上 Star 数量前 18 的开源 AI Agent 项目
  • 制造装配、仓储搬运、快递装卸皆适配!MinkTec 弯曲形变传感器助力,让人体工学改变劳动生活
  • Vue3从入门到精通: 4.5 数据持久化与同步策略深度解析
  • Elasticsearch 深分页问题
  • 计算图的力量:从 PyTorch 动态图到 TensorFlow 静态图的全景与实战