12 ChatGPT原理小白教程:生成过程之温度与多样性控制
系列进度
ChatGPT 原理入门 · 第 12 / 18 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
温度不是越高越聪明,也不是越低越专业。写事实性说明、代码和合同时要稳;做头脑风暴、标题备选和创意草稿时可以更开放。参数要跟任务风险匹配。
读完这节可以做一个小实验:同一个问题分别用低温和高温生成几次,比较事实稳定性和表达变化。你会发现参数不是魔法开关,而是让模型在稳妥和多样之间移动。越高风险的内容,越要降低随机性并加强核对。
在上一篇文章中,我们探讨了采样与生成的基本概念,以及如何利用不同的生成策略影响模型的输出。而在本篇中,我们将深入分析温度与多样性控制的机制,如何影响文字生成的风格与内容多样性,这些概念对于理解ChatGPT生成能力至关重要。
1. 温度控制
1.1 温度的定义
理解温度与多样性控制时,先看概率分布如何被拉平或压尖,再观察输出稳定性和创造性变化。
温度是生成文本时调整输出概率分布的一个超参数。其值通常在0到1之间,通过改变输出中选择单词的随机性来改变生成的文本风格。
- 高温度 (>1):当温度较高时,模型的输出将更加随机,可能生成更加创意和多样的内容,但也容易导致不合适或无关内容的产生。
- 低温度 (<1):当温度较低时,输出将更加确定和保守,生成的内容通常更加一致和合乎逻辑,但可能会导致生成的内容缺乏创意。
1.2 案例分析
让我们用一个简单的案例来展示温度如何影响文本生成:
假设我们使用以下文本提示:“Once upon a time...”来生成下一个单词。
-
高温度(如1.5):
Once upon a time, there was a dragon who loved to dance under the moonlight and tell stories to the stars. -
低温度(如0.2):
Once upon a time, there was a king who ruled a peaceful kingdom.
可以看出,高温度生成的内容更加丰富和多样,而低温度则生成了一个更加标准和常见的故事开头。
2. 多样性控制
2.1 多样性的含义
看《ChatGPT原理小白教程:生成过程之温度与多样性控制》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。
多样性是指生成内容的丰富性和独特性。在生成过程中,多样性可以通过多种方法实现,如调整温度、使用Top-k采样和Top-p(核采样)等策略。
2.2 控制方法
2.2.1 Top-k采样
Top-k采样是指在每次生成时,从概率最高的k个单词中进行随机选择。选择较小的k值可以提升生成的确定性,而较大的k值则能增加多样性。
例如,设定k=5表示我们只从生成概率最高的5个单词中进行选择,这样能够产生相对多样而有趣的内容。
2.2.2 Top-p采样(核采样)
Top-p采样(或称为核采样)是另一种控制多样性的策略。它不是设定具体的单词个数,而是选择一个概率阈值p,只考虑那部分累计概率达到p的单词。这样可以自适应地调整选择的单词数量。
例如,当设置p=0.9时,模型将选择累计概率达到90%的词,这样可以保证生成内容的多样性同时又不至于选择过于冷门的词。
2.3 案例代码
下面是一个简单的Python示例,展示如何使用温度和多样性控制的采样方法:
import numpy as np
def sample(logits, temperature=1.0, top_k=0, top_p=1.0):
# 应用温度调整
logits = logits / temperature
probabilities = np.exp(logits) / np.sum(np.exp(logits))
# Top-k采样
if top_k > 0:
top_k_indices = np.argsort(probabilities)[-top_k:]
probabilities = np.zeros_like(probabilities)
probabilities[top_k_indices] = logits[top_k_indices]
probabilities = probabilities / np.sum(probabilities)
# Top-p采样
if top_p < 1.0:
sorted_indices = np.argsort(probabilities)[::-1]
cumulative_probs = np.cumsum(probabilities[sorted_indices])
cutoff_index = np.where(cumulative_probs > top_p)[0][0]
selected_indices = sorted_indices[:cutoff_index + 1]
probabilities = np.zeros_like(probabilities)
probabilities[selected_indices] = logits[selected_indices]
probabilities = probabilities / np.sum(probabilities)
# 随机选择下一个单词
next_word_index = np.random.choice(len(probabilities), p=probabilities)
return next_word_index
在上面的代码中,我们通过调整temperature、top_k和top_p的参数,来控制生成文本的风格和多样性。这使得ChatGPT能够适应不同的应用场景和用户需求。
读到这里,可以把《ChatGPT原理小白教程:生成过程之温度与多样性控制》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。
读完《ChatGPT原理小白教程:生成过程之温度与多样性控制》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。
3. 总结
在本篇中,我们学习了温度和多样性控制的概念,以及它们在生成过程中如何影响输出的样式与多样性。掌握这些概念后,可以更好地理解ChatGPT如何在各种应用场景中(如问答系统)进行灵活而富有创意的文本生成。接下来,我们将探讨应用场景之问答系统,并进一步了解ChatGPT在实际应用中的表现和潜力。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
ChatGPT原理小白教程:生成过程之温度与多样性控制适合谁读?
这是 ChatGPT 原理入门 系列第 12 / 18 篇,适合正在学习ChatGPT 原理入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇ChatGPT 原理入门教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读