ChatGPT中 top_p 和 temperature 的作用机制

1. temperature 的作用机制

GPT 中的 temperature 参数调整模型输出的随机性。随机性大可以理解为多次询问的回答多样性、回答更有创意、回答更有可能没有事实依据。随机性小可以理解为多次询问更有可能遇到重复的回答、回答更接近事实(更接近训练数据)。

Temperature 参数通常用于调整 softmax 函数的输出,用于增加或减少模型对不同类别的置信度。具体来说,softmax 函数将模型对每个类别的预测转换为概率分布。Temperature 参数可以看作是一个缩放因子,它可以增加或减少 softmax 函数输出中每个类别的置信度。

下面从模型的计算逻辑上来看 temperature 的作用机制。

当模型在根据上文计算下一个 token 时,他会先得到一组候选 token 及每一个 token 的概率 (原始概率,原始概率取决于训练方法、训练采用的数据和 prompt)。然后使用数学方法 softmax调整候选项的概率分布。这时 temperature 就会起作用。

忽略 softmax 的内部算法,直接看影响。

假设我们有这几个单词和他们出现在下一个位置的概率:
the: 0.5
a: 0.25
an: 0.15
some: 0.08
this: 0.02

当应用 temperature 时,他们的概率会被改变。下图表示在不同 temperature 下 softmax 对概率的影响
在这里插入图片描述
可以看到,当 temperature 更大时,模型的选择更加随机(每个 token 的概率更加接近), 给予原本低概率的 token 更大的选择机会,从而产生更多样化和创意的输出。大的更大,小的更小

相反, temperature 更小使模型的选择更加确定,给予原本高概率的 token 更大的选择机 会,从而产生更集中和一致的输出。大的更小,小的更大。

当 temperature = 0 =0 =0 时,模型在每次选择 token时只选择概率最大的那一个,于是我们每次询 问 (同样的prompt) 都会得到完全相同的回答。

2. top_p 的作用机制

Top P 参数是指在生成文本等任务中,选择可能性最高的前 P 个词的概率累加和。这个参数被称为 Top P,也称为 Nucleus Sampling。

top_ p 对回答的影响时机,是在 temperature 调整完 token 概率之后。但是官方建议不要同 时使用这两个参数。

top_p 弃数接受的是一个累积概率, top_p 的大小影响到候选 token 的数量

我们还是假设有这几个单词可供选择
the: 0.5
a: 0.25
an: 0.15
some: 0.08
this: 0.02

假设我们设定 top_p = 0.7 =0.7 =0.7 ,模型使用以下逻辑选择部分单词加入备选集合

1、对所有单词按照概率从大到小进行排序

2、将富选集合中的概率逐个相加,当超过 0.7 时停止处理后面的单词

考虑 the,将它加入备选集合。他的概率(前面的概率之和是 0 ) 小于 0.7 ,于是继续考虑下一 个羊词。

考虑 a$,他的概率是 0.25 ,加上前面的所有概率得到 0.75 。这时已经超过了 0.7 的阈值。a 会被加入家选集合,但是不再处理后面的单词。

现在集合中有 the 和 a 两个单词,模型会根据概率进行选择(the 还是更容易选中)

为什么不建议同时使用

这一部分暂时还没想明白,也欢迎知道细节的小伙伴一起讨论。
从资料上看,如果同时使用top_p 和 temperature 会导致模型的输出更不可控,可能导致意 外的输出。

如何选择

使用 temperature 比 top_p 更容易控制创造性的回答。当需要获得更有创意、更多样性 的回答时,可以把 temperature 设置为2。当需要多次询问且获得一致性的回答时,可以 把 temperature 设置为 0 。

top_p 比 temperature 更容易控制输出的质量。top_p 可以把较低概率的单词滤掉,避免得到低质量的回答, 也避免得到不常见的单词。

有些研究中表明,top_p 越高,输出的内容会越长。但是这种现象在 ChatGPT 中并不明 显, 可能是因为 ChatGPT 的训练数据集已经有比较高的质量,避免了低概率单词的输出。

在之前 Hugging Face 上的 prompt 比赛中,为了保证所有选手的 prompt 能够有统一 的评价标准,也为了保证每次询问 prompt 都得到完全一样的回答,评判系统会同时设置 temperature =0, top_ p=0 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试框架[Cypress概述]

目录 前言: Cypress简介 Cypress原理 Cypress架构图 Cypress特性 各类自动化测试框架介绍 Selenium/WebDriver Karma Karma的工作流程 Nightwatch Protractor TestCafe Puppeteer 前言: Cypress是一个基于JavaScript的端到端自动化测试框架…

【SpringMVC 学习笔记】

SpringMVC 笔记记录 1. SpringMVC 简介2. 入门案例3. 基本配置3.1 xml形式配置3.2 注解形式配置 4. 请求4.1 请求参数4.1.1 普通类型传参4.1.2 实体类类型传参4.1.3 数组和集合类型传参 4.2 类型转换器4.3 请求映射 5. 响应 1. SpringMVC 简介 三层架构 2. 入门案例 3. 基本…

基于matlab使用深度学习估计身体姿势(附源码)

一、前言 此示例演示如何使用 OpenPose 算法和预训练网络估计一个或多个人的身体姿势。 身体姿势估计的目标是识别图像中人的位置及其身体部位的方向。当场景中存在多个人时,由于遮挡、身体接触和相似身体部位的接近,姿势估计可能会更加困难。 有两种…

Spring概念:容器、Ioc、DI

目录 什么是容器? 什么是 IoC? 传统程序的开发 理解 Spring IoC DI 总结 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它…

Swin Transformer训练报错问题

1. 训练遇到报错问题 (1)mportError: cannot import name _pil_interp from timm.data.transforms 原因: timm.data.transforms里面没有_pil_interp,只有str_to_pil_interp、_str_to_pil_interpolation、_pil_interpolation_to_s…

【Docker】docker安装配置Jenkins

docker 安装 Jenkins #拉镜像 docker pull jenkins/jenkins#创建卷(volume) docker volume create jenkins_home#制作容器并启动 docker run -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ -v /usr/lib/jvm/java-8-openjdk-amd64:/usr/local/java…

如何将window文件夹挂载到VMware系统mnt目录

背景:项目开发过程中,通常是在Windows上编码,有些框架和软件只能够在Linux上面执行,如果在 VMware中的Linux上面开发不太方便,因此需要在Windows上面开发好再同步到Linux上面运行。 软件: Samba客户端 V…

配置Jenkins的slave agent并使用它完成构建任务

上一章,使用单机配置并运行了一个简单的maven项目,并发布到了一个服务器上启动。这一章将要配置一个slave agent,并将上一章的job放到agent上执行。我们agent使用的是ssh的方式 前置步骤 准备两台虚拟机: 192.168.233.32&#…

svn commit 用法

转载   原文:https://blog.csdn.net/qq_39790633/article/details/103700391 使用svn进行代码的提交有两种方法:一种是通过TortoiseSVN客户端界面进行提交,另一种是通过svn commit指令提交。 方法一:通过TortoiseSVN客户端界面提…

STM32速成笔记—IWDG

文章目录 一、IWDG简介二、STM32的IWDG2.1 STM32的IWDG简介2.2 喂狗2.3 IWDG框图 三、IWDG配置步骤四、IWDG配置程序4.1 IWDG初始化程序4.2 喂狗 五、应用实例 一、IWDG简介 独立看门狗(Independent Watchdog, IWDG),什么是看门狗&#xff1…

NVIDIA-Linux-x86_64-535.54.03.run cuda_12.2.0_535.54.03_linux.run下载地址

Official Drivers | NVIDIA Linux x64 (AMD64/EM64T) Display Driver | 535.54.03 | Linux 64-bit | NVIDIA 下载连接 Download NVIDIA, GeForce, Quadro, and Tesla DriversDownload drivers for NVIDIA graphics cards, video cards, GPU accelerators, and for other GeFor…

魔兽世界私人服务器怎么开

开设魔兽世界的私人服务器涉及到一系列复杂的步骤和技术要求。下面是一个大致的指南,以供参考: 1. 硬件需求:首先,你需要一台强大的服务器来承载游戏服务器。服务器的规模和配置将取决于你计划同时容纳多少玩家以及服务器的性能要…

.vm文件发邮件时js未生效,无法控制显示隐藏

需求起因 最近在做一个发邮件的功能,是后端发邮件,不过邮件内容是由前端来写。 邮件内容包括姓名、手机号、邮箱,这三个参数都是不一定有的,如果没有某个参数时,那一行内容就不显示。 写法没错,但就是js…

Java——抽象类和接口

抽象类 抽象类 使用abstract关键字定义的类称为抽象类 public abstract class Employee {private String name;private int number; }在 Java中抽象类不可以实例化为对象。例如: 抽象方法 使用abstract关键字定义的方法称为抽象方法。抽象方法没有方法体 抽象…

使用影刀RPA拆分excel数据

首先,要使程序有一定的兼容性,即增加互动性,认为选择要拆分的文件和拆分的依据列,可以利用影刀中的‘打开选择对话框’和‘打开输入对话框’来实现,这样一来便不用考虑待拆分excel的路径问题获取1中选择的依据拆分列&a…

CSS实现多头像叠加ui效果

第一种实现方式 简单粗暴直接使用margin-right实现&#xff0c;缺点是第一行右侧最右边头像溢出容器&#xff0c;代码中的三行注释的代码放开后可解决这个问题。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

【ISO26262】汽车功能安全第一部分:术语

【tommi_wei@163.com】 故障响应时间 fault reaction time 从故障(2.42) 探测到进入安全状态(2.102) 的时间间隔。 故障容错时间间隔 fault tolerant time interval 在危害事件(2.59) 发生前, 系统(2.129) 中一个或多个故障(2.42) 可存在的时间间隔。 功能安全 functio…

如何调用百度地图API

前言 要调用百度地图API&#xff0c;步骤操作如下 注册并创建一个API密钥。您可以在百度地图API控制台上创建您的密钥。选择要使用的API服务。百度地图API提供了多种服务&#xff0c;包括地图展示、路线规划、地点搜索、实时交通等。您可以在百度地图API控制台上查看所有可用…

Uniapp uni-app学习与快速上手

个人开源uni-app开源项目地址&#xff1a;准备中 在线展示项目地址&#xff1a;准备中 什么是uni-app uni&#xff0c;读 you ni&#xff0c;是统一的意思。 Dcloud即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位&#xff0c;致力于推进HTML5发展构…

亚马逊云科技“专库专用”模式,可有效提高数据库的性能和效率

近日&#xff0c;全球数据库市场发生了一件令人瞩目的事件&#xff0c;根据Gartner的数据&#xff0c;我们发现亚马逊云科技作为一个纯云厂商&#xff0c;夺得了2022年全球数据库领导者的桂冠&#xff0c;占据全球市场的25.3%份额。 云原生数据库的发展方向&#xff1a;与数据分…