【大模型结构】输出参数配置

news2024/9/20 16:46:17

文章目录

  • 大模型生成策略
  • Top_k
  • Top_p
  • Temperature
  • 联合使用的顺序
  • 参考资料

大家在体验大语言模型或者多模态大模型的开源应用时,经常会看到类似下面这个页面,用来控制大模型输出的一些参数设置:

在这里插入图片描述
或者在代码中也经常需要设置以下几个参数:

{
 "num_beams": 1,
 "max_tokens": 2048,
 "do_sample": true,
 "repetition_penalty": 1.05,
 "temperature": 0.7,
 "top_p": 0.8,
 "top_k": 20,
}

这些参数设置会直接影响大模型的输出多样性和质量,因此很多面试官都喜欢通过提问这些参数的含义或者使用技巧,来考察首选人对大模型的掌握程度。本文主要介绍 top_k, top_p, temperature以及num_beams, repetition_penalty, max_new_tokens 这几个核心参数的含义及使用技巧。

大模型生成策略

我们首先要知道大模型是如何生成结果的。大语言模型根据输入token序列来输出下一个token。每次模型想要生成另一个token时,会重新阅读整个token序列(输入token序列+已经生成的token序列)并预测接下来应该出现的token,也就是自回归生成(Auto-Regressive Generation),如下图所示:

在这里插入图片描述

GIF来源:https://pic2.zhimg.com/v2-a8e2ff8e26fa1a78b02bf000ad1397db_b.webp

大模型在自回归生成过程中,达到终止条件(如一个标点符号或一个最大长度)时就会停止输出。在每一步,模型会对于词表中的所有token,给出一个概率分布,表示它对下一个单词的预测,然后通过解码策略选出一个token作为最终的输出。

例如,如果输入的文本是“我喜欢”,那么模型可能会给出下面的概率分布,假设选择概率最大token作为输出结果,也就是“吃”,那么第二次预测,大模型的输入就变成了“我喜欢吃”,然后再选择下一个token,直到达到终止条件:

在这里插入图片描述

常用解码方法如下

  • 贪心解码(Greedy Decoding):直接选择词表中概率最高的token。这种方法简单高效,但是可能会导致生成的文本过于单调和重复。
  • 随机采样(Random Sampling):按照概率分布随机选择一个token。这种方法可以增加生成的多样性,但是可能会导致生成的文本不连贯和无意义。
  • 束搜索(Beam Search):维护一个大小为 num_beams 的候选序列集合,每一步从所有词表的概率分布中选择概率最高的 num_beams 个token,然后保留总概率最高的 num_beams 个候选序列。从所有完成的候选序列中,选择概率最高的序列作为最终生成的结果。这种方法可以平衡生成的质量和多样性,但是可能会导致生成的文本过于保守和不自然。搜索过程如下图所示(此时num_beams=2)。beam search在每一步需要考察的候选人数量是贪心搜索的num_beams倍,因此是一种牺牲时间换性能的方法

在这里插入图片描述

可以看到,贪心解码和束搜索对于同一个输入,大模型的输出都是固定的,缺乏多样性,而随机采样又存在生成内容质量不高的问题。我们想要大模型的输出的内容质量又高,同时又兼顾多样性(创造性)。因此,有了下面的几个获取候选token的方法(采样参数)。

Top_k

Top-k 采样是对前面“贪心解码”的优化,它从词表logits 排名前 k 的 token 中进行抽样,允许其他分数或概率较高的token 也有机会被选中。在很多情况下,这种抽样带来的随机性有助于提高生成质量。如下图所示:
在这里插入图片描述

Top_p

top-k 有一个缺陷,那就是“k 值取多少是最优的?”非常难确定。于是出现了动态设置 token 候选列表大小策略——即核采样(Nucleus Sampling)。

top-p 采样思路:在每一步,只从累积概率超过某个阈值 p 的最小token集合中进行随机采样,而不考虑其他低概率的token。这种方法也被称为核采样(nucleus sampling),因为它只关注概率分布的核心部分,而忽略了尾部部分。

例如,如果 p=0.8,那么我们只从累积概率达到 0.8 的最小token集合中选择一个单词,而不考虑其他的token。这样可以避免采样到一些不合适或不相关的token,同时也可以保留一些有趣或有创意的token。如下图所示:

在这里插入图片描述

从top_p的选择过程可以看出:

  • 如果词表的概率分布平缓,那么候选的token会多一些,会增加输出结果的多样性
  • 如果词表的概率分布尖锐,那么候选的token会少一些,会增加输出结果的准确性

Temperature

Temperature 采样受统计热力学的启发,高温意味着更可能遇到低能态。在实际应用中,Temperature 采样是对Softmax函数的一个参数调节,如下图所示:


根据公式中的参数计算可以看到:

  • 较低的 temperature,会使得原本概率较高的token获得更高的概率值,原本概率较低的token获得更低的概率值,这就导致输出结果更确定,质量更高
  • 较高的 temperature,会使得原本token的概率分布更平缓,导致输出结果的多样性更高

在这里插入图片描述

联合使用的顺序

通常我们是将 Top-k、Top-p、Temperature 联合起来使用。使用的先后顺序是 Top_k->Top_p->Temperature

参考资料

  • [1] https://blog.csdn.net/u012856866/article/details/140308083
  • [2] https://www.bilibili.com/video/BV1nK421Y72d/?share_source=copy_web&vd_source=79b1ab42a5b1cccc2807bc14de489fa7
  • [3] https://www.bilibili.com/video/BV1UM4m127A2/?share_source=copy_web&vd_source=79b1ab42a5b1cccc2807bc14de489fa7

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

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

相关文章

git-describe获取不到新创建的标签

一、问题描述 1、新建的分支 2、git-describe 失败 二、查询资料 (1)git-describe - 根据可用的ref给对象一个人类可读的名称 (2)该命令查找可从提交访问的最新标记。如果标记指向提交,则仅显示标记。否则&#xf…

权威认证 | HelpLook荣获ISO 27001认证,信息安全能力获国际认可

“信息,如同其他核心业务资产,同样具有极高的价值。” 有很多用户关心,在HelpLook上传的数据安全有保障吗?其实,HelpLook早已通过了国际权威的ISO 27001信息安全管理体系认证。这一认证不仅标志着HelpLook的信息安全管…

服务业如何运用控制图来监控服务质量?

控制图,最初起源于制造业,用于监控生产过程中的质量波动,确保产品符合预定标准。然而,其原理同样适用于服务业,成为衡量和监控服务质量的得力助手。通过收集关键服务指标的数据(如客户满意度、服务响应时间…

不信这个书单治不了你的大模型焦虑症!学习大模型最值得推荐的几本书

前言 要说现在最热门的技术,可谓非大模型莫属! 不少小伙伴都想要学习大模型技术,转战AI领域,以适应未来的大趋势,寻求更有前景的发展~~ 然而,在学习大模型技术这条道路上,却不知道如何进行系…

Vue3 TS 验证子组件中的表单,多级表单验证

Vue3 TS 验证子组件中的表单,多级表单验证 1. 使用情形2. 子组件script中定义并expose3. 父组件使用 1. 使用情形 在某些交互场景下,我们同一个页面会嵌套多个表单,例如表单2为表单1的子组件里的表单,但是我们需要在提交场景下同…

centos 7 升级Docker 与Docker-Compose 到最新版本

一 升级docker 可参考docker官方升级 1, 查看docker 信息 docker info 2,查看docker 版本 docker --version 3 升级前 可停止docker : sudo systemctl stop docker 4 查看已安装的docker 并卸载 [rootlocalhost docker]# yum list installed | grep docker docker.x86…

Java学习中,强制类型转换时,没有检查兼容性,引发 ClassCastException怎么办?

Java是一门强类型语言,这意味着在编译时,变量的数据类型已经确定。然而,在实际开发过程中,可能会遇到将对象转换为其他类型的需求,这时就会涉及到类型转换问题。Java提供了自动类型转换和强制类型转换两种方式来处理不…

中秋节好物抢先看!中秋佳节有什么好用又实惠的好物推荐!

中秋佳节即将悄然而至,你是否已经开始为家中的温馨氛围挑选那些寓意团圆与美好的中秋好物?一年一度的中秋佳节,正是我们精心筹备,以物寄情,共享天伦之乐的美好时刻。错过了此刻的精选与筹备,便需再等一年&a…

《Python编程:从入门到实践》外星人入侵

一、规划 在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出现在天空中,他们在屏 幕中向下移动。玩家的任务是射杀这些外星…

进程查看和计划任务

进程查看 用top查看 其中stopped为前台任务在后台暂停 jobs&#xff1a;查看系统有多少暂停任务 fg 进程序号&#xff1a;进入暂停任务 M&#xff1a;按内存占比排序 P&#xff1a;按cpu占比排序 写一个死循环脚本并杀死 #!/bin/bash NUM0 while(($NUM<3)) doecho &qu…

基于SSM的驾校管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的驾校管理系统拥有三种角色&#xff0c;分别为管理员、教员、学员。实现了学员信息管理、课表信息管理、车辆信息管理、缴费管理、反馈管理、课程安排等功能&#xff0c;具体请参…

口含烟怎么使用?

“口含烟”通常指的是在吸烟过程中将烟草放在嘴里&#xff0c;但不直接吸入肺部。这种方法的使用方式如下&#xff1a; 1. 点燃烟草&#xff1a;使用打火机或火柴点燃香烟的端部。 2. 将烟草放在口中&#xff1a;吸气时&#xff0c;将烟草含在口腔内&#xff0c;不要深吸到肺…

大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【数字IC自整资料】笔试相关

目录 1、使用连续赋值来模拟buffer惯性延时的写法正确的是?&#xff08;A&#xff09; 2、AXI总线位宽32bit&#xff0c;频率500MHZ,假设AXI cmd是基于burst8传输的&#xff0c;第一笔数据返回的延迟是200ns。那么outstanding 数量至少(13)才能满带宽传输 3、一个线性反馈移…

ICETEK-DM6437-AICOM—— DMA直接存储器访问设计

#一、设计目的&#xff1a; 1 进一步了解 ICETEK-DM6437-AF 的内部存储器空间的分配及指令寻址方式&#xff1a; 内部存储器空间分配&#xff1a;研究 ICETEK-DM6437-AF 的存储器架构&#xff0c;包括但不限于片内 SRAM、片外 DRAM 和其他存储器模块。了解这些存储器的大小、起…

Pytorch深度学习快速入门笔记【小土堆】

目录 1 Python学习中两大重要函数 2 Python代码编辑的三种方式 3 Pytorch学习 3.1 Dataset和DataLoader 3.1.1 Dataset 3.1.2 DataLoader 3.2 TensorBoard 3.2.1 add_scalar 3.2.2 add_image 3.3 Transforms 3.3.1 ToTensor 3.3.2 Normalize 3.3.3 Resize 3.3.4 C…

数据场景练习

1 行列转换 (1) 列拆分为多行 把指定字段按指定分隔符进行拆分为多行,然后其它字段直接复制. select字段列,hobby2 from tbl -- lateral view udtf(expression) tablealias as columnalias (‘,’ columnalias) lateral view explode(split(hobby,;)) temp as hobby2 (2) 行扁…

uniapp小程序,使用腾讯地图获取定位

本篇文章分享一下在实际开发小程序时遇到的需要获取用户当前位置的问题&#xff0c;在小程序开发过程中经常使用到获取定位功能。uniapp官方也提供了相应的API供我们使用。 官网地址&#xff1a;uni.getLocation(OBJECT)) 官网获取位置的详细介绍这里就不再讲述了&#xff0c;大…

区块链的可伸缩性以及面临的挑战

1. 可伸缩性 在过去的几年中&#xff0c;可伸缩性&#xff08;Scalability,也称为可扩展性) 问题一直是激烈辩论、严格研究和媒体关注的焦点。 这是一个至关重要的问题&#xff0c;因为它可能意味着区块链不适于广泛应用&#xff0c;而仅限于联盟许可的私有网络。在经过对该领域…

C++设计模式——Mediator中介者模式

一&#xff0c;中介者模式的定义 中介者模式是一种行为型设计模式。它通过一个中介者对象将多个对象之间的交互关系进行封装&#xff0c;使得对象之间的交互需要通过中介者对象来完成。该设计模式的结构很容易理解&#xff0c;以中介者为中心。 中介者模式的设计思想侧重于在…