LLM学习笔记-3

温度缩放


概念

1)在机器学习中,"温度缩放"通常指的是一种技术,用于调整神经网络输出的概率分布。这个技术通常在 softmax 函数的输出上进行操作。

2)在 softmax 函数中,神经网络会输出一个概率分布,表示每个类别的预测概率。温度缩放通过引入一个称为"温度"的参数来调整这些概率值。增大温度会使得概率分布更加平滑,降低温度会使得概率分布更加尖锐。

3)但是也不是说,温度越高越好,较高的温度可以使得概率分布更加平滑,从而降低模型的过度自信,有助于减少模型的过拟合,提高模型的泛化能力。然而,如果温度设置得过高,可能会导致模型失去了对真实分布的区分能力,造成预测的不准确性。另一方面,较低的温度可以使得概率分布更加尖锐,增强模型的置信度,有助于更准确地进行分类。但是,如果温度设置得过低,可能会导致模型过于自信,忽略了真实世界的不确定性,从而产生过拟合的风险。

下面是一个关于温度变化导致单词相关性变化的例子

vocab = { "closer": 0,"every": 1, "effort": 2, "forward": 3,"inches": 4,"moves": 5, "pizza": 6,"toward": 7,"you": 8,
} inverse_vocab = {v: k for k, v in vocab.items()}# 假设input是 "every effort moves you", 模型返回的logits值为下面tensor中的数值:
next_token_logits = torch.tensor([4.51, 0.89, -1.90, 6.75, 1.63, -1.62, -1.89, 6.28, 1.79]
)probas = torch.softmax(next_token_logits, dim=0)
next_token_id = torch.argmax(probas).item()# 下一个标记:
print(inverse_vocab[next_token_id])

forward

torch.manual_seed(123)
next_token_id = torch.multinomial(probas, num_samples=1).item()
print(inverse_vocab[next_token_id])

toward

def print_sampled_tokens(probas):torch.manual_seed(123) # Manual seed for reproducibilitysample = [torch.multinomial(probas, num_samples=1).item() for i in range(1_000)] # 使用torch.multinomial函数从probas中进行了1000次采样sampled_ids = torch.bincount(torch.tensor(sample)) # 使用torch.bitcount函数统计每个token的采样数量for i, freq in enumerate(sampled_ids):print(f"{freq} x {inverse_vocab[i]}")print_sampled_tokens(probas)

71 x closer
2 x every
0 x effort
544 x forward
2 x inches
1 x moves
0 x pizza
376 x toward
4 x you

我们记:大于1的温度值将在应用softmax后导致更均匀分布的标记概率。
小于1的温度值将在应用softmax后导致更自信(更尖锐或更高峰)的分布。

def softmax_with_temperature(logits, temperature):scaled_logits = logits / temperaturereturn torch.softmax(scaled_logits, dim=0)# Temperature values
temperatures = [1, 0.1, 5]  # Original, higher confidence, and lower confidence# Calculate scaled probabilities
scaled_probas = [softmax_with_temperature(next_token_logits, T) for T in temperatures]
# Plotting
x = torch.arange(len(vocab))
bar_width = 0.15fig, ax = plt.subplots()
for i, T in enumerate(temperatures):# 条形图的绘制,ax.bar()函数里面的参数分别为条形的x轴位置、高度、宽度、图例标签rects = ax.bar(x + i * bar_width, scaled_probas[i], bar_width, label=f'Temperature = {T}')ax.set_ylabel('Probability')
ax.set_xticks(x)
ax.set_xticklabels(vocab.keys(), rotation=90)
ax.legend()plt.tight_layout()
# plt.savefig("temperature-plot.pdf")
plt.show()

在这里插入图片描述

print_sampled_tokens(scaled_probas[1])#通过温度0.1进行重新缩放会得到一个更尖锐的分布

0 x closer
0 x every
0 x effort
992 x forward
0 x inches
0 x moves
0 x pizza
8 x toward

print_sampled_tokens(scaled_probas[2])#通过temperature=5重新缩放的概更加均匀

153 x closer
68 x every
55 x effort
223 x forward
102 x inches
50 x moves
43 x pizza
218 x toward
88 x you

通过这种方法调参,使得输出的变化更加趋向于平滑,但是也有缺陷使用上述方法有时会产生无意义的文本,例如“every effort moves you pizza”,这种情况发生的频率是3.2%。

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

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

相关文章

探索 虚拟化技术+Docker部署与操作

目录 一、你知道哪些云 1.1国内云 1.2国外云 二、Iaas、 Paas、SaaS三种云服务区别 2.1第一层叫做IaaS 2.2第二层就是所谓的PaaS 2.3第三层也就是所谓SaaS 三、虚拟化架构 3.1寄居架构 3.2源生架构 3.3操作系统虚拟化架构 3.4混合虚拟化架构 四、虚拟化特点及优势…

服务网关GateWay基础

1. 网关基础介绍1.1 网关是什么1.2 为啥要用网关1.3 常见的网关组件NginxNetflix ZuulSpring Cloud GatewayKongAPISIX综合比较 2. gateWay的使用2.1 springCloud整合gateway2.2 GateWay的相关用法2.3 GateWay路由使用示例基本用法转发/重定向负载请求动态路由 2.5 断言(Predic…

SourceInsight中文编码格式乱码

参考文章:https://blog.csdn.net/m0_53754590/article/details/135594860 file–>Reload as Encoding —>选择编码格式UTF-8,或者GB2312;哪个显示不乱码设置那个; 我这里选择GB2312

线程池 ThreadPoolExecutor 参数详解

一、引言 提到 Java 线程池,就不得不说 ThreadPoolExecutor,它是 Java 并发包 java.util.concurrent 中的一个类,提供一个高效、稳定、灵活的线程池实现,用于实现多线程并发执行任务,提高应用程序的执行效率。 在《任…

【ARM 裸机】C 语言 led 驱动

前面刚学习了汇编 led 驱动的编写和验证,现在开始就要进入 C 语言 led 驱动编写与验证了 ! 1、C 语言运行环境构建 1.1、设置处理器模式 使 6ULL 处于 SVC 模式下,之前已经提到了处理器的九种模式,参考:【ARM 裸机】汇编 led 驱…

Docker 的基本管理

一. 云的相关知识 1. 关于云 云端服务器都有哪些提供商: 国内: 阿里云(Alibaba Cloud): 提供ECS(Elastic Compute Service)弹性计算服务,包括通用型、计算型、内存型等多种实例…

根据图片模板动态生成图片(Java)

根据图片模板生成图片 背景流程简介代码实现 背景 根据提供的证书模板生成对应证书,证书内容有,姓名,身份证号,证书名称,证书编号,发证日期 根据用户达成的条件自动生成证书图片。 证书模板如下&#xff…

【51单片机项目】基于51单片机自制多功能小键盘/模拟USB键盘【附源码】(STC89C52RC+CH9328)

目录 一、效果展示 二、创作灵感 三、硬件电路 注意事项 工作原理 四、源码 main.c 五、附录 CH9328工作原理 CH9328的模式选择 ​编辑 全键盘键码值表 参考链接 一、效果展示 该小键盘具有三种功能: 1、自动输入开机密码 2、每隔一段时间自动按下ct…

多模态大模型训练数据量以及训练方式

多模态大模型系列:LLaVALLaVA1.5/1.6LLaVA-Med - 知乎就在前两天LLaVA 1.6发布了,带来了更大的分辨率,更强的LLM,在最后补充了这一部分的介绍。 LLaVA repo:https://github.com/haotian-liu/LLaVA/ LLaVA 1.0&#xff…

《C语言深度解剖》(9):深度剖析数据在内存中的存储

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&am…

操作系统安全:Windows与Linux的安全标识符,身份鉴别和访问控制

「作者简介」:2022年北京冬奥会中国代表队,CSDN Top100,学习更多干货,请关注专栏《网络安全自学教程》 操作系统有4个安全目标,也就是说想要保证操作系统的安全,就必须实现这4个需求: 标识系统…

系统安全与应用(1)

目录 1、账号安全管理 (1)禁止程序用户登录 (2)锁定禁用长期不使用的用户 (3)删除无用的账号 (4)禁止账号和密码的修改 2、密码安全管理 设置密码有效期 1)针对已…

一句话或一张图讲清楚系列之——ISERDESE2的原理

主要参考: https://blog.csdn.net/weixin_50810761/article/details/137383681 xilinx原语详解及仿真——ISERDESE2 作者:电路_fpga https://blog.csdn.net/weixin_45372778/article/details/122036112 Xilinx ISERDESE2应用笔记及仿真实操 作者&#x…

K8S Prometheus Springboot Actuator ServiceMonitor配置

用于展示Springboot Actuator监控内容 引入Springboot相关的监控配置包 Springboot pom配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><depende…

K8s: Ingress对象, 创建Ingress控制器, 创建Ingress资源并暴露服务

Ingress对象 1 &#xff09;概述 Ingress 是对集群中服务的外部访问进行管理的 API 对象&#xff0c;典型的访问方式是 HTTPIngress-nginx 本质是网关&#xff0c;当你请求 abc.com/service/a, Ingress 就把对应的地址转发给你&#xff0c;底层运行了一个 nginx但 K8s 为什么不…

modelsim波形高度异常,值为X

一、问题 波形高度异常&#xff0c;忽高忽低&#xff0c;正常波形高电平和低电平是统一高度的 timescale 1ns/1nsmodule key_test_tb();//parameter define parameter CLK_PERIOD 20; parameter CNT_MAX 25d25; //仅用于仿真,对应 500nsreg sys_clk; //周期 20ns reg d; wir…

ffmpeg初体验

一&#xff1a;安装 sudo yum install epel-release -y sudo yum update -ysudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpmyum -y install …

Vs Code npm install 报错解决方法

用的人家的前端框架发现是封装过的&#xff0c;要修改人家前端的话还得把前端源码放在Vs Code 上运行&#xff0c;后端放在IDEA上运行&#xff0c;然后前后端并行开发&#xff0c;在配置前端环境时遇到&#xff1a; npm install 这个的原因是我把node下载到D盘了权限不够框框爆…

android学习笔记(五)-MVP模式

1、MVP模式demo的实现&#xff0c;效果下&#xff1a; 2、创建一个Fruit类&#xff1a; package com.example.listview; //Fruit类就是Model&#xff0c;表示应用程序中的数据对象。 public class Fruit {private int imageId;private String name;private String price;publi…

代码随想录算法训练营Day6 | 242.有效的字母异位词 ●349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

基础&#xff1a; 1.哈希表是根据关键值进行直接访问的数据结构&#xff0c;时间复杂度是O(1)&#xff0c;也就是通过数组的索引下标&#xff0c;直接访问数组中的元素哈希表的作用就是用来快速判断一个元素是否出现在集合里。 2.常见的哈希结构&#xff1a; 数组set &#…