temperature、top_p、top_k

news/2025/11/16 21:55:58/文章来源:https://www.cnblogs.com/chengshaoting/p/19229159

temperature、top_p、top_k

大模型问答的交互流程

阿里通义千问

​ 图片来源:阿里大模型ACP考试课件

temperature

temperature和top_p的调整是发生在大模型交互流程的第四阶段即输出Token,大模型会根据候选Token的概率进行随机挑选,这就会导致“即使问题完全相同,每次的回答都略有不同”。

在大模型生成下一个词(next-token)之前,它会先为候选Token计算一个初始概率分布。这个分布表示每个候选Token作为next-token的概率。temperature是一个调节器,它通过改变候选Token的概率分布,影响大模型的内容生成。通过调节这个参数,你可以灵活地控制生成文本的多样性和创造性。

img

图中的低、中、高温度基于通义千问Max模型的范围[0, 2)划分。

由上图可知,温度从低到高(0.1 -> 0.7 -> 1.2),概率分布从陡峭趋于平滑,候选Token“RAG”从出现的概率从0.8 -> 0.6 -> 0.3,虽然依然是出现概率最高的,但是已经和其它的候选Token概率接近了,最终输出也会从相对固定到逐渐多样化。

针对不同使用场景,可参考以下建议设置 temperature 参数:

  • 明确答案(如生成代码):调低温度。
  • 创意多样(如广告文案):调高温度。
  • 无特殊需求:使用默认温度(通常为中温度范围)。

需要注意的是,当 temperature=0 时,虽然会最大限度降低随机性,但无法保证每次输出完全一致。

top_p

top_p 是候选词向量生成阶段的设置参数,也叫 Nucleus Sampling(核采样) 的核心阈值,它也是一种筛选机制,用于从候选 Token 集合中选出符合特定条件的“小集合”。具体方法是:按概率从高到低排序,选取累计概率达到设定阈值的 Token 组成新的候选集合,从而缩小选择范围。

下图展示了不同top_p值对候选Token集合的采样效果。

img

图示中蓝色部分表示累计概率达到top_p阈值(如0.5或0.8)的Token,它们组成新的候选集合;灰色部分则是未被选中的Token。

当top_p=0.5时,模型优先选择最高概率的Token,即“RAG”;而当top_p=0.8时,模型会在“RAG”、“提示词”、“模型”这三个Token中随机选择一个生成输出。

由此可见,top_p值对大模型生成内容的影响可总结为:

  • 值越大 :候选范围越广,内容更多样化,适合创意写作、诗歌生成等场景。
  • 值越小 :候选范围越窄,输出更稳定,适合新闻初稿、代码生成等需要明确答案的场景。
  • 极小值(如 0.0001):理论上模型只选择概率最高的 Token,输出非常稳定。但实际上,由于分布式系统、模型输出的额外调整等因素可能引入的微小随机性,仍无法保证每次输出完全一致。

通过 Assistant API 的 Assistant 类创建的智能体对象,可以通过设置top_p参数来设定概率质量的阈值,从而在保持多样性的同时提高输出质量

相似与区别:

top_p和温度的特点是值越大 生成结果越多样性 那这俩有啥区别呢?

步骤 温度 T top_p(nucleus)
① 原始 logits z(候选 token 打出的“原始得分”) z
② 温度缩放 z’ = z / T
③ Softmax p = softmax(z’) p = softmax(z)
④ 裁剪候选集 保留累计概率 ≤ p 的最小集合
⑤ 重归一化 已在③完成 对保留集合再 softmax
⑥ 采样 多项式采样 多项式采样

模型幻觉

大模型可能会产生一些不真实的内容,通常称为幻觉。你可以通过提示词要求大模型:「如果所提供的信息不足以回答问题,请明确告知"根据现有信息,我无法回答这个问题。"切勿编造答案。」,来减少大模型产生幻觉的几率。

top_k和top_p的区别是什么?

top_k 和 top_p 都是要“砍候选”,但top_k按个数砍,top_p按累计概率砍;场景也因此不同。

1. 直观对比(同一 logits)

方案 保留策略 保留数 是否动态 极端 token 能否留下
top_k=3 分数最高的 3 个 固定 3 不可能,池子锁死
top_p=0.9 累计概率 ≤ 0.9 的最小集合 不固定(可能 2~10) 只要累计没到 0.9,再冷门也能进

2. 优缺点速览

top_k
✅ 简单、计算量恒定,适合嵌入式/高并发场景。
❌ 池子大小死板:头部极集中时仍拉进 3 个,尾部很分散时却硬砍到 3 个,要么太乱要么太单调

top_p
✅ 概率自适应:头部集中时只剩 1-2 个,尾部分散时自动扩池,多样且干净
❌ 计算量随分布变化,极端情况下要扫整个词表;实现需排序 cumsum。

3. 典型用法

任务 推荐组合 理由
对话/创意写作 T=1.2 + top_p=0.9~0.95 保证长尾灵感,避免采到错别字
代码生成 T=0.2 + top_p=0.95 逻辑严谨,又留多种写法
嵌入式设备 T=0.8 + top_k=20~40 池大小固定,缓存友好
Beam Search 前剪枝 top_k=5~10 快速砍掉大量分支,减少后续计算

对输出结果有什么影响,相互之间有什么关系

temperature 拉伸/压缩概率分布 → top_p/top_k 再从“变形后”的分布中截取候选词 → 最终采样生成文本

top_ptop_k 是互斥的,API 通常只允许设置一个。

顺序是:temperature → top_p/top_k → 采样

关系 说明
顺序 temperature → top_p/top_k → 采样
互斥 top_ptop_k 不能同时用
优先级 top_p > top_k > temperature(推荐度)
控制维度
- temperature 整体随机性(拉伸)
- top_p 候选集合大小(动态)
- top_k 候选集合大小(固定)

为什么是这样的顺序?

为什么要先用 temperature 控制随机性,再用 top_p 控制概率质量阈值?” —— 这不是随意顺序,而是 模型解码(Decoding)的物理逻辑 + 工程最佳实践 的必然结果。

因为 temperature 作用在 logits 阶段(原始分数),决定“概率分布的形状”; 而 top_p 作用在 softmax 后的概率阶段,决定“保留多少质量”。 必须先“定形状”,才能“谈质量”!

步骤 原因 后果(如果反过来)
1. temperature 作用于 logits,控制“高低分差距” ——
2. softmax 把分数变成 概率(总和=1) ——
3. top_p 概率空间 中累计,判断“质量阈值” 如果先 top_p,根本没有概率
  • 以面试场景举例
步骤 对应参数 说明
1. 定“评分标准” temperature 是“严格模式”(T小)还是“宽松模式”(T大)?
2. 打分并归一化 softmax 所有人的得分总和 = 100 分
3. 录取“累计得分 ≥ 90 分”的前几人 top_p=0.9 动态决定录取人数
4. 或者“前 5 名” top_k=5 固定人数

所以我们必须 先定标准 → 打分 → 归一化,才能谈“录取阈值”!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm gitee: Git Pull Failed

PyCharm gitee: Git Pull Failed Your local changes will be overwritten by merge. Commit, stash, or revert them to proceed.View them Local Changes Prevent from Pull解决方法: 在资源管理器中,手工删除文…

【MySQL】实操: 慢SQL优化

MySQL的三种优化点:深分页、文件排序、小表驱动大表从数据库角度看,每个 SQL 执行都需要消耗一定 I/O 资源,SQL 执行的快慢,决定了资源被占用时间的长短。假如有一条慢 SQL 占用了 30%的资源共计 1 分钟。那么在这…

PyCharm gitee: Merge with strategy ort failed.

__pycache__/views.cpython-36.pyc SPDmanage/__pycache__/views.cpython-38.pyc SPDmanage/migrations/__pycache__/0001_initial.cpython-36.pyc SPDmanage/migraMerge with strategy ort failed.参考这个解决: (1…

NCA和fsQCA

NCA和fsQCA方法 核心任务 比喻 输出形式 能否告诉你“要多高才够”?NCA 检查“单因素”是不是必要条件——“没它就不行” 烤蛋糕不能没有鸡蛋 一张“天花板线”图:横轴=条件水平,纵轴=结果水平 ✅ 能定量给出“鸡蛋…

获取数据,转换成JSON,返回到前端页面

来源:豆包 获取数据,转换成JSONimport com.alibaba.fastjson.JSON; import java.io.FileWriter;public class FastJsonExport {public static void main(String[] args) throws Exception {User user = new User();u…

2025年11月副业平台推荐榜:五强生态模式深度解析

副业需求正在从“赚点零花钱”升级为“可复制的管道收入”。2025年第三季度,国家发改委《灵活就业质量监测报告》显示,已有1.9亿劳动者把副业视为收入“第二曲线”,其中62%的人把“平台是否提供完整成长路径”列为首…

PyCharm gitee: ignore

Pycharm-->File-->Settings-->Plugins-->搜索ignore-->点击安装-->重启Pycharm 使用ignore: 项目-->右键-->New-->.ignore file-->.gitignore file(Git)

python方便的桌面应用.customtkinter

python方便的桌面应用.customtkinterpython方便的桌面应用.customtkinter

完整教程:MySQL 8.0.29 及以上版本中 SSL/TLS 会话复用(Session Reuse)

完整教程:MySQL 8.0.29 及以上版本中 SSL/TLS 会话复用(Session Reuse)2025-11-16 21:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: …

红队、蓝队与紫队:网络安全攻防演练的三大支柱

本文深入解析网络安全中红队、蓝队和紫队的核心区别与协作模式。红队模拟攻击突破防御,蓝队负责监测防护与漏洞修复,紫队则促进双方知识共享与协同作战,通过实战演练持续提升企业安全防护能力。红队、蓝队与紫队:有…

2025年11月副业平台评价榜:零门槛生态对比助你安全增收

正在找副业的人,往往被“零门槛”“日入过千”等字眼包围,却苦于无法判断信息真假、担心押金被套、更怕付出时间却拿不到回报。2025年第三季度,国家信息中心发布的《共享经济发展报告》指出,国内灵活就业者已突破2…

全球云服务震荡:Amazon Web Services (AWS) 出现大规模故障 多项线上服务受冲击 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

调整电话交换机 3CX 对接微软 Teams 直接路由

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20232406 2025-2026-1 《网络与系统攻防技术》实验五实验报告

一、实验内容 1.学习总结 1)恶意代码基本概念 2)恶意代码简介 2.实验内容 1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册…

20232315 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232315 2025-2026-1 《网络与系统攻防技术》实验五实验报告20232315 2025-2026-1 《网络与系统攻防技术》实验五实验报告 目录一、实验基本信息二、实验内容三、实验过程3.1 选择DNS域名进行查询(选择`baidu.com`)…

spark启动方式

1.Spark Sql命令行// 启动 Spark SQL 命令行(类似 hive 命令) $SPARK_HOME/bin/spark-sql // 带参数的启动 $SPARK_HOME/bin/spark-sql --master local[2] --conf spark.sql.warehouse.dir=/path/to/warehouse …

2025.11.16模拟赛

赛时唐完了,前半程T1不会,被卡了好久 我要调整策略! 明天试一下,前期调动起来,4个题顺着推,推到瓶颈就下一道,然后找一个合适的直接开,一道题不要耗太长时间 检测到无效思考就赶紧换 T1分析回文串性质: 满足单…

Pycharm为什么会自动创建__pycache__

Pycharm为什么会自动创建__pycache____pycache__是 Python 存储编译后字节码(.pyc 文件)的目录,目的是提升代码运行效率,PyCharm 运行、调试 Python 文件时会触发 Python 解释器生成该目录。 关键原因存储字节码文…

20232411 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 总结一下本周学习内容,不要复制粘贴 2.实验过程 3.问题及解决方案问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX - ...4.学习感悟、思考等 xxx xxx

【EF Core】未定义实体类的数据库模型

不知道大伙伴们有没有这样的想法:如果我不定义实体类,那 EF Core 能建模吗?能正常映射数据库吗?能正常增删改查吗? 虽然一般开发场景很少这么干,但有时候,尤其是数据库中的某些视图,就不太想给它定义实体类。好…