【干货】大模型输出机制揭秘:采样策略与结构化输出技巧!
本文详细解析了大模型输出环节的采样策略,包括温度、top-k和top-p三种方法如何影响输出的随机性与创造性。同时探讨了结构化输出的实现途径,如提示词设计、后置处理和受限采样。文章最后指出,LLM的创造力来源于概率性,理解并管理这种不确定性是有效使用大模型的关键,而非简单地将其视为缺陷。
简介
本文详细解析了大模型输出环节的采样策略,包括温度、top-k和top-p三种方法如何影响输出的随机性与创造性。同时探讨了结构化输出的实现途径,如提示词设计、后置处理和受限采样。文章最后指出,LLM的创造力来源于概率性,理解并管理这种不确定性是有效使用大模型的关键,而非简单地将其视为缺陷。
通过前面的文章,我们了解了输入阶段的嵌入,以及 Transformer 模型的处理。从整体来看,输出环节还没有“打开”,本文将一探究竟。
借用 Chip Huyen 的著作《AI Engineering》[1]中的一张配图:

从矩阵运算的角度来看,最终输出的是一个长度为字典大小的向量,经过 softmax 激活函数得到就是每个token的概率分布。
如何选择 token 呢?这蕴含着确定性与随机性的权衡:选择概率最大的 token 会使输出更稳定、更可预测,而采用随机采样则能提升多样性与创造性。这一权衡最终反映在模型的采样策略上。
一、采样策略
总的来说有温度、top-k 和 top-p 三种采样策略。
1.1 温度
“温度”这个名字比较传神,温度越高越活跃,也就是更有创造性。
我们就以 DeepSeek 体验一下温度的作用,发送下述提示词,控制温度的值,观察输出:
{ "model": "deepseek-chat", "messages": [ {"role": "system", "content": "你是一位诗人,我出上句,你来对下句"}, {"role": "user", "content": "天若有情天亦老,"} ], "temperature": 0, "stream": false}
当 temperature 设置为 0 时,输出是固定的:
- • 月如无恨月长圆
当 temperature 设置为 2 时,输出比较随机:
- • 月如无恨月长圆
- • 人间道义尽沧桑
- • 情深偏易断肠多
- • 月如无恨月长圆。踏破璀璨星空,为寻前世因缘。清风拂柳千年慢,我倾战意翻云,乾坤内,与谁来争。凝望明月高悬,此意气飘然,今夜群星皆不醒,我本肆意剑出行!啊 举杯与苍天似深情,放声狂笑称心情。剑指长天向侠行!尽我此生豪马踏名城!
- • 酒逢知己醉千杯
- • 水能无怨水当干,然未曾几测高深。
- • 红绡先冷迎风眠
- • …
效果与直观理解一致,其背后的原理也很简单,作用点就在 softmax 的计算上。
token 的 logit 除了一下温度值,实现的效果就是 越大, 之间的差值就越小,也就是提高了其他 token 被选中的概率。
1.2 top-k
top-k 采样的动机是减少 softmax 激活函数的计算量,对 logits 进行排序选择数值最大的 k 个,然后对这个 k 个,不是整个字典,进行 softmax 计算。
该采样策略使用的比较少,例如 DeepSeek 就没有提供相关的参数,原因是 k 是绝对的数,需要根据输出的大小进行调整。
1.3 top-p
top-p 采样策略是当前比较流行的策略,它并没有降低计算量,还是得全量计算 softmax 激活函数,然后对概率进行排序,选择累积概率大于 p 的 tokens 作为备选。
我们还是以上面的示例,控制 top_p 的值,观察输出:
当 top_p 设置为 0.01 时,输出是固定的:
- • 月如无恨月长圆
当 top_p 设置为 1 时,输出也很固定:
- • 月如无恨月长圆
与预期不太相符,笔者猜测可能的原因是最相关的 token 概率值遥遥领先,此时可以通过设置 logprobs 来验证一下:
{ "token": "月", "logprob": -0.031558793, "bytes": [ 230, 156, 136 ], "top_logprobs": [ { "token": "月", "logprob": -0.031558793, "bytes": [ 230, 156, 136 ] }, { "token": "人间", "logprob": -3.471668, "bytes": [ 228, 186, 186, 233, 151, 180 ] }, { "token": "人", "logprob": -14.080235, "bytes": [ 228, 186, 186 ] } ]}
返回的这个是对数概率,换算一下,“月”的概率是96.89%,“人间”的概率是3.1%,“月”的概率确实遥遥领先。
二、结构化输出
在某些实际的应用场景中,我们期望 LLM 的输出是结构化的,例如生成一个 SQL 或者正则表达式。
对于结构化输出,有办法对 LLM 进行限制么?方法还是有一些,但是不能完全保障。
-
- 提示词,在提示词中明确要求输出的格式
-
- 后置处理,对输出进行格式校验
-
- 受限采样,在采样的过程中进行限制,过滤掉不符合格式的token
-
- 微调
一般情况下“后置处理”是成本最小,但是效果最好的方式。
三、 如何看待输出的不确定性
大模型在训练时汇集了海量的数据,对于相同或相似的输入,可能生成截然不同的输出。这种不一致是预期内的,比较难理解的现象是幻觉,对其原因业界也有一些猜想,但是并没有原理解释(如果理解了其原理,不就能解决了😅)。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝 一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
更多推荐



所有评论(0)