大模型解码策略详解:top-k、top-p与temperature

具有温度系数(Temperature)的Softmax函数 softmax 函数是一种激活函数,通常用作神经网络最后一层的输出函数。该函数是两个以上变量的逻辑函数的推广。Softmax 将实数向量作为输入,并将其归一化为概率分布。softmax函数的输出是与输入具有相同维度的向量,每个元素的范围为0到1。并且所有元素的总和等于1。 阅读详情

为什么需要解码策略?

在大型语言模型(如GPT、LLaMA)的文本生成过程中,直接选择概率最高的词(贪心搜索)会导致重复和机械化的输出,而完全随机采样又可能产生不合理的文本。top-k、top-p和temperature这三个参数,正是为平衡创造性与可控性设计的核心工具。


核心参数解析

1. Top-k 采样

原理
# 伪代码实现
def top_k_sampling(prob_distribution, k=50):
    top_k_probs, top_k_indices = get_top_k(prob_distribution, k)
    sampled_token = random.choice(top_k_indices, weights=top_k_probs)
    return sampled_token
  • 功能:每步生成时,仅保留概率最高的前k个候选词
  • 特点:
    • k越大,多样性越强(例:k=100适合创意写作)
    • k越小,输出越保守(例:k=10适合技术问答)
典型值建议
场景k值范围
开放创作50-100
技术内容生成20-50
高精度任务1-10

2. Top-p(核采样)

原理
# 伪代码实现
def top_p_sampling(prob_distribution, p=0.9):
    sorted_probs, sorted_indices = sort_descending(prob_distribution)
    cumulative_probs = calculate_cumulative(sorted_probs)
    cutoff_index = find_first_exceeding(cumulative_probs, p)
    valid_probs = sorted_probs[:cutoff_index+1]
    sampled_token = random.choice(sorted_indices[:cutoff_index+1], weights=valid_probs)
    return sampled_token
  • 功能:动态选择累积概率超过p的最小词集合
  • 特点:
    • p=0.9表示只考虑覆盖90%概率质量的词汇
    • 自适应上下文:候选词数量随分布变化
典型值建议
场景p值范围
故事生成0.9-0.95
对话系统0.85-0.9
代码生成0.7-0.85

3. Temperature(温度系数)

3.1. 背景知识:Softmax函数

Softmax函数是将一个实数向量转换为概率分布向量的常用函数。其定义为:对于输入向量 x = ( x 1 , x 2 , ⋯   , x n ) \mathbf{x}=(x_1,x_2,\cdots,x_n) x=(x1​,x2​,⋯,xn​),经过Softmax函数处理后得到的输出概率分布向量 p = ( p 1 , p 2 , ⋯   , p n ) \mathbf{p}=(p_1,p_2,\cdots,p_n) p=(p1​,p2​,⋯,pn​),其中 p i = e x i ∑ j = 1 n e x j p_i = \frac{e^{x_i}}{\sum_{j = 1}^{n}e^{x_j}} pi​=∑j=1n​exj​exi​​。该函数使得所有输出元素 p i p_i pi​都在 [ 0 , 1 ] [0,1] [0,1]之间,并且 ∑ i = 1 n p i = 1 \sum_{i = 1}^{n}p_i = 1 ∑i=1n​pi​=1。同时,当(x_i)的值相对较大时, e x i e^{x_i} exi​在求和 ∑ j = 1 n e x j \sum_{j = 1}^{n}e^{x_j} ∑j=1n​exj​中占比较大,对应的 p i p_i pi​也较大;反之, x i x_i xi​较小时, p i p_i pi​也较小。

3.2. 温度调整公式及作用
# 温度调整公式
def apply_temperature(logits, temperature=1.0):
    scaled_logits = logits / temperature
    return softmax(scaled_logits)

此公式的作用是通过调整温度系数(temperature)来控制概率分布的尖锐程度,具体表现如下:

  • 高温(temperature > 1.0):放大长尾词概率,使结果更随机。
  • 低温(0 < temperature < 1.0):聚焦头部词,使结果更确定。
3.3. 温度系数对概率分布的数学影响分析
高温情况(temperature > 1.0)

当温度系数大于 1 1 1时,scaled_logits中的元素会变小,因为是将logits除以一个大于 1 1 1的数。根据指数函数 y = e x y = e^x y=ex的性质,对于不同的输入 x i x_i xi​和 x j x_j xj​,当对其进行缩放(除以 T > 1 T>1 T>1)后, e x i T e^{\frac{x_i}{T}} eTxi​​和 e x j T e^{\frac{x_j}{T}} eTxj​​之间的相对差异会比 e x i e^{x_i} exi​和 e x j e^{x_j} exj​之间的相对差异小。因为 y = e x y = e^x y=ex是一个凸函数,对 x x x进行缩小操作会使指数值之间的差距缩小。

然后经过Softmax函数 p i = e x i T ∑ j = 1 n e x j T p_i=\frac{e^{\frac{x_i}{T}}}{\sum_{j = 1}^{n}e^{\frac{x_j}{T}}} pi​=∑j=1n​eTxj​​eTxi​​​,得到的概率分布会更加“平滑”。也就是说,原本概率较高的值会降低,原本概率较低的值会升高,使得概率分布更加均匀,从而放大了长尾词的概率,结果更具随机性。

常温情况(temperature = 1.0)

当温度系数等于 1 1 1时,scaled_logits = logits,此时经过Softmax函数得到的概率分布就是常规的分布,保持原始的分布状态。如温度效应示意图中,常温( 1.0 1.0 1.0)时为 原始分布。

低温情况(0 < temperature < 1.0)

当温度系数小于 1 1 1时,scaled_logits中的元素会变大,因为是将logits除以一个小于 1 1 1的正数。例如,假设logits=(x_1,x_2),当temperature = 0.5时,scaled_logits=(2x_1,2x_2)。

根据指数函数的性质,对不同的输入 x i x_i xi​和 x j x_j xj​进行缩放(除以 T < 1 T<1 T<1)后, e x i T e^{\frac{x_i}{T}} eTxi​​和 e x j T e^{\frac{x_j}{T}} eTxj​​之间的相对差异会比 e x i e^{x_i} exi​和 e x j e^{x_j} exj​之间的相对差异大。因为 y = e x y = e^x y=ex是凸函数,对 x x x进行放大操作会使指数值之间的差距增大。

然后经过Softmax函数 p i = e x i T ∑ j = 1 n e x j T p_i=\frac{e^{\frac{x_i}{T}}}{\sum_{j = 1}^{n}e^{\frac{x_j}{T}}} pi​=∑j=1n​eTxj​​eTxi​​​,得到的概率分布会更加“尖锐”。即原本概率较高的值会变得更高,原本概率较低的值会变得更低,使得概率分布更加集中在具有较高logits值的类别上,也就是聚焦头部词,结果更确定。

例如,在温度效应示意图中,低温( 0.5 0.5 0.5)时头部尖锐化,即 头部尖锐化。

综上所述,通过调整温度系数的值,可以改变scaled_logits的值,进而改变经过Softmax函数后的概率分布的形状,实现对分布尖锐程度的调控。


实战代码示例(Hugging Face)

from transformers import AutoTokenizer, AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")

input_text = "人工智能的未来将"
input_ids = tokenizer.encode(input_text, return_tensors="pt")

# 组合参数生成
output = model.generate(
    input_ids,
    max_length=100,
    do_sample=True,
    top_k=50,          # 限制候选词数量
    top_p=0.95,        # 控制概率质量覆盖
    temperature=0.8,   # 调节随机性
    num_return_sequences=3
)

for seq in output:
    print(tokenizer.decode(seq, skip_special_tokens=True))

参数组合策略

推荐配置表

场景top-ktop-ptemperature
创意写作1000.951.0-1.2
技术文档生成400.850.7-0.9
客服对话500.90.8-1.0
代码补全300.750.5-0.7

黄金法则

  1. 优先使用top-p:比top-k更自适应
  2. 组合调节技巧:
    • 高创造性:top-p=0.95 + temperature=1.2
    • 高准确性:top-p=0.8 + temperature=0.5
  3. 避免冲突设置:
    • 不要同时设top_k=10和top_p=0.99(相互矛盾)
    • 当temperature→0时,top-k/p将失效

常见问题

Q:应该同时使用top-k和top-p吗?

A:Hugging Face的实现默认是联合使用:先按top-k筛选,再按top-p过滤。但更推荐单独使用top-p(设置top_k=0)以获得动态调整优势。

Q:temperature如何影响top-p?

A:温度调节发生在概率计算阶段,相当于对原始logits进行缩放,会影响后续top-p的候选词选择范围。


最佳实践:从top_p=0.9+temperature=0.8开始实验,根据输出质量逐步调整。记住:没有普适的最优参数,只有适合具体场景的平衡点。

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search 大模型推理采样策略,举例通俗易懂汇总介绍 阅读详情

相关推荐

Cohere 的 temperature、top-p、top-k、frequency_penalty、presence_penalty和likelihood参数

Cohere 的 temperature、top-p、top-k、frequency_penalty、presence_penalty和likelihood参数

engchina的专栏 2194

ChatGPT中 top_p 和 temperature 的作用机制

可以看到,当 temperature 更大时,模型的选择更加随机(每个 token 的概率更加接近), 给予原本低概率的 token 更大的选择机会,从而产生更多样化和创意的输出。相反, temperature 更小使模型的选择更加确定,给予原本高概率的 token 更大的选择机 会,从而产生更集中和一致的输出。考虑 a$,他的概率是 0.25 ,加上前面的所有概率得到 0.75。时,模型在每次选择 token时只选择概率最大的那一个,于是我们每次询 问 (同样的prompt) 都会得到完全相同的回答。

weixin_43815222的博客 1万+

LLM探索:GPT类模型的几个常用参数 Top-k, Top-p, Temperature

上一篇文章介绍了几个开源LLM的环境搭建和本地部署,在使用ChatGPT接口或者自己本地部署的LLM大模型的时候,经常会遇到这几个参数,本文简单介绍一下~top_ptop_k。

具身机器人和通用AI 7322

Huggingface的GenerationConfig 中的top_k与top_p详细解读

举个例子,在使用语言模型生成「这个周末天气很」的句子时,top-k保留概率最高的三个单词为「好」「热」「冷」,此时将剩余单词进行概率归一化,把它们的概率设定为0,之后在三个保留的单词中随机选择一个,比如选择了「好」后,这个句子就变成了「这个周末天气很好」。从这个例子可以看出,top-k和top-p可以结合使用,确保我们生成的语句既具有多样性,又具有合理性,同时可以吸引读者的注意力。接下来,我们可以使用top-p的方法,保留概率的累计和达到0.9的单词,也就是选取橙子、苹果、草莓三种水果。

Hanze的博客 1万+

VM与欧姆龙PLC通讯设置实战:Fins TCP/UDP协议详解

本文详细解析了VM(VisionMaster)与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战设置。内容涵盖网络配置、协议选择(TCP可靠性与UDP实时性)、VM端地址映射与数据点添加、以及数据接收解析流程,并提供了常见错误排查与高级调试技巧,帮助视觉与自动化工程师快速实现稳定可靠的工业通讯集成。

weixin_29172963的博客 329

CamoFox MCP:让AI助手隐身操作浏览器的反检测自动化实战

浏览器自动化是提升工作效率和实现数据采集的关键技术,其核心原理在于通过程序脚本模拟人类在网页上的交互行为。传统方案如Selenium或Playwright虽功能强大,但需要开发者编写复杂脚本并处理反爬机制。随着AI Agent技术的发展,自然语言驱动的自动化成为新趋势,它能将任务规划与逻辑判断交由AI处理,大幅降低使用门槛。Model Context Protocol(MCP)作为连接AI与外部工具的标准协议,在此场景下价值凸显,它使得AI助手能直接调用丰富的浏览器操作工具。CamoFox MCP创新性地将

weixin_42551967的博客 726

Top-p与Top-k采样实战指南:如何通过Transformers库优化大模型生成效果

本文深入解析Top-p与Top-k采样在大模型推理中的核心原理与实战应用,通过Transformers库实现优化生成效果。详细介绍了参数调优技巧、高级问题排查方法及真实案例分析,帮助开发者在创意写作、客服问答等场景中提升文本生成质量与多样性。

weixin_29214199的博客 366

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2206

大模型Temperature参数详解:从概率分布到实际调参

大模型生成文本时并非机械地选取最高分词汇,而是基于一套概率分布进行抽样,这也是AI输出有时稳定、有时“脑洞大开”的根源。解码阶段的关键参数Temperature(温度),通过对logit分数进行缩放,直接调节概率分布的尖锐或平坦程度,从而控制输出的随机性与多样性。理解其背后的Softmax数学原理,以及它与top_k、top_p等采样策略的协同关系,是进行大模型API调参、提升AI输出稳定性的必备基础。无论是代码生成、数学推理还是创意写作,不同任务对温度的要求差异巨大,掌握温度梯度测试与“先发散后收敛”的组

weixin_29043895的博客 261

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 510

国产PHY芯片YT8512H替代LAN8742A的实战指南(STM32F407平台)

本文详细介绍了在STM32F407平台上,使用国产PHY芯片YT8512H替代LAN8742A的完整实战过程。文章深入剖析了硬件设计中的关键信号连接差异(如CRS_DV与RXDV复用)、时钟布线要点,并提供了软件驱动修改、PHY配置及调试排错的系统指南,旨在帮助工程师高效完成国产化替代,规避常见陷阱。

defi6farmer的博客 858

大模型推理输出阶段:采样、解码、流式乱码与推理成本

大模型推理通常分为prefill与decode两个阶段,其中输出阶段决定了用户最终看到的文本、生成速度与计费成本。模型先输出logits,再经过温度、top-k/top-p、重复惩罚等采样策略选出token id,随后由分词器将token映射为字节序列,拼接后再按UTF-8解码成字符串。理解这条链路,能解释流式输出为何出现乱码方块、输出为何突然截断、结束符为何漏配,以及为何输出token比输入更贵。在本地对话服务、API网关、代码补全和结构化抽取等场景中,这些细节直接影响稳定性与成本。围绕大模型推理输出阶段

weixin_29081163的博客 266

【二.图像处理核心技术】【5.形态学操作:腐蚀/膨胀/开闭运算】

想象一下,你拍了一张布满雪花点的老照片,或者扫描了字迹断裂的文档,这时候形态学操作就是你的像素整形师!它们能让模糊的边界变清晰,把断裂的笔画连起来,甚至从X光片里揪出癌细胞。今天我们要聊的,是计算机视觉界的"广场舞双雄"——腐蚀和膨胀。这俩操作就像给像素点们请了个健身教练,要么集体减肥(腐蚀),要么组团增肌(膨胀)。下次当你用美颜相机时,不妨会心一笑——这看似魔法的背后,正是形态学在默默耕耘。腐蚀的规则很简单:如果一个像素点周围的邻居不全白,它就"狗带"(变黑)。:先用砂纸打磨(腐蚀),再喷漆填补(膨胀)

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 426

[LLM]大语言模型文本生成—解码策略(Top-k & Top-p & Temperature)

在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。在自然语言任务中,我们通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,我们需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。

摩登都市天空---专栏 9794

[毕设项目-MCP+ENSP]一句话搞定ENSP自动化:MCP + LLM实战(架构图、工具清单、踩坑全解)

用 MCP + LLM 把“人话”变成对华为 ENSP 的安全自动化操作,三款工具覆盖配置/查询/落盘,配套架构、实战与排坑清单。

逐梦苍穹的博客 2540

UDS诊断服务基础详解之二19服务

本文主要介绍UDS统一诊断服务的19 01服务,包含状态位和故障码的解析以及19 01服务的具体说明

车载网络小D的博客 1万+

MiniMind实战:3块钱2小时训练你的第一个大语言模型

大语言模型通常需要海量算力,但通过参数高效的Transformer架构与数据工程优化,个人开发者也能以极低成本完成从零训练。以MiniMind为例,仅64M参数的模型能在2小时内、3元预算下走完数据处理、分词器训练、预训练、生成与微调的完整流程。这种压缩到极致的技术方案不仅适用于教学与实验,也为垂直领域快速验证和端侧部署提供了新的可能性。通过合理设计词表、序列长度与混合精度策略,小模型同样能学会流畅的中文表达,适合学生、开发者与研究者快速搭建可复现的实验基线,并支持进一步使用LoRA等工具进行指令微调。

weixin_29058331的博客 62

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大模型核心参数解析(Top-k、Top-p、Temperature、frequency penalty、presence penalty)

我们熟悉的大多数语言模型都是通过重复生成token序列(sequence)中的下一个token来运作的。每次模型想要生成另一个token时,会重新阅读整个token序列并预测接下来应该出现的token。这种策略被称为自回归生成(autoregressive generation)。在自然语言任务中,我们通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。

酒酿小圆子呀~ 4万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

逐行讲解大模型解码超参数大全(temperature、top-k、top-p等所有参数)

大模型解码策略除了temperature、top-k、top-p,你还知道哪些呢,本文全面解析transformers源码中的所有策略

芒果不茫的博客 4177

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大模型文本生成——解码策略(Top-k & Top-p & Temperature)

在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。在自然语言任务中,我们通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,我们需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。

zhengddzz的博客 2985

LLM 采样参数详解:Temperature, Top-k 与 Top-p

本文详细解析了大型语言模型文本生成中的三个关键参数:Temperature、Top-k和Top-p。Temperature控制概率分布的平滑度,低温(<1)使输出更确定,高温(>1)增加随机性。Top-k采样固定保留前k个候选词,但存在无法适应预测置信度变化的缺陷。Top-p采样则动态保留累积概率达到阈值p的最小候选集,能更好地处理模型确定性和不确定性情况。实践建议优先使用Top-p(0.9-0.95)配合Temperature调整:低温(0-0.3)适合精准任务,较高温(0.7-1.0)适合创意场景。To

nvd11的专栏 1685

大模型之解码策略(Top-k & Top-p & Temperature)

在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个火热的研究话题。一般给模型传入的解码参数如下所示。在自然语言任务中,通常使用一个预训练的大模型(比如GPT)来根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,需要让模型逐个预测每个 token ,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测。

weixin_44245188的博客 979

大模型推理常见采样策略总结:贪心解码, Beam Search, Top-k, Top-p, Temperature等

较低的温度值会使得模型倾向于选择概率较高的词,而较高的温度值会增加低概率词被选中的机会,从而增加生成文本的多样性。Top-p Sampling,也称为Nucleus Sampling,是一种更加精细的采样策略,它选择累计概率超过某个阈值p的最小集合,然后从这个集合中随机采样。Top-k Sampling 是一种随机采样策略,它从模型预测的词汇分布中选择概率最高的k个词,然后基于这些词的概率分布随机选择下一个词。贪心解码是一种简单直接的解码策略,它在每一步都选择概率最高的下一个词。

samoyan的博客,记录技术成长~ 6245

【大模型】解码策略:Greedy Search、Beam Search、Top-k/Top-p、Temperature Sampling等

解码策略是自然语言处理生成任务中的关键环节,决定了如何从概率分布中选择词语生成序列。本文对比了三种主要策略:贪心搜索简单高效但缺乏多样性;Beam Search通过保留多路径提升质量,但仍受限于重复问题;采样策略(随机采样、Top-k和Top-p)通过引入随机性增强多样性,其中Top-p采样根据概率分布自适应选择词汇,在质量和多样性间取得更好平衡。实际应用中常结合温度调节和惩罚项等技巧。解码策略的选择需权衡速度、质量和多样性需求,Top-p采样是目前创意类任务的较优方案。

欢迎来到我的优快云个人博客主页! 1316

大模型(LLM)解码:从Greedy Search到Top-P

LLM意为大型语言模型。ChatGPT就是一种LLM,作为一种人工智能技术,通过使用深度学习算法来处理和生成自然语言文本,这些模型通常需要大量的数据来训练,以便能够理解和生成人类语言。

Mike0010的博客 6668

一文让你读懂大模型推理常见采样:Top-k, Top-p, Temperature, Beam Search

思路:直接选择分布中概率最大的token当作解码出来的词,但是该问题在于,总是选择概率最大的词,将会生成很多重复的句子优点:计算简单高效缺点:文本重复,没有多样性。

aolan123的博客 1784
上一篇: LLaMA论文+源码分享
下一篇: 大模型(LLM)微调方法分类框架
ACEEE-1222
博客等级 码龄4年 432粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值