郭震 AI公众号:郭震AI

12 ChatGPT原理小白教程:生成过程之温度与多样性控制

发布日期:

最近更新:

分类: ChatGPT原理

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点8 个
图文要点6 张
正文规模1.6k 字
温度与多样性控制图解查看大图
温度与多样性控制图解

温度不是越高越聪明,也不是越低越专业。写事实性说明、代码和合同时要稳;做头脑风暴、标题备选和创意草稿时可以更开放。参数要跟任务风险匹配。

读完这节可以做一个小实验:同一个问题分别用低温和高温生成几次,比较事实稳定性和表达变化。你会发现参数不是魔法开关,而是让模型在稳妥和多样之间移动。越高风险的内容,越要降低随机性并加强核对。

温度参数按任务选查看大图
温度参数按任务选

在上一篇文章中,我们探讨了采样与生成的基本概念,以及如何利用不同的生成策略影响模型的输出。而在本篇中,我们将深入分析温度多样性控制的机制,如何影响文字生成的风格与内容多样性,这些概念对于理解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 原理阅读地图卡查看大图
ChatGPT 原理阅读地图卡

看《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

在上面的代码中,我们通过调整temperaturetop_ktop_p的参数,来控制生成文本的风格和多样性。这使得ChatGPT能够适应不同的应用场景和用户需求。

ChatGPT原理小白教程:生成过程之温度与多样性控制应用复盘卡查看大图
ChatGPT原理小白教程:生成过程之温度与多样性控制应用复盘卡

读到这里,可以把《ChatGPT原理小白教程:生成过程之温度与多样性控制》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

ChatGPT原理小白教程:生成过程之温度与多样性控制应用检查卡查看大图
ChatGPT原理小白教程:生成过程之温度与多样性控制应用检查卡

读完《ChatGPT原理小白教程:生成过程之温度与多样性控制》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

3. 总结

在本篇中,我们学习了温度多样性控制的概念,以及它们在生成过程中如何影响输出的样式与多样性。掌握这些概念后,可以更好地理解ChatGPT如何在各种应用场景中(如问答系统)进行灵活而富有创意的文本生成。接下来,我们将探讨应用场景之问答系统,并进一步了解ChatGPT在实际应用中的表现和潜力。

相关教程

相关入口

AI 教程总索引

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

相关内容

相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...