大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search

在大模型训练好之后,如何对训练好的模型进行解码(decode)是一个重要问题。

大模型输出过程

大模型根据给定的输入文本(比如一个开头或一个问题)生成输出文本(比如一个答案或一个结尾)。为了生成输出文本,模型会逐个预测每个 token,直到达到一个终止条件(如一个标点符号或一个最大长度)。在每一步,模型会给出一个概率分布,表示它对下一个单词的预测概率。在这里插入图片描述

为什么要进行不同的采样策略

进行不同的采样策略可以对生成文本的多样性和质量进行调控,以满足不同的需求和应用场景。通过选择不同的采样策略,可以平衡生成文本的多样性和质量。贪婪采样适用于需要高准确性的任务,而温度采样、Top-k 采样和Top-p 采样则可以在一定程度上增加生成文本的多样性,使得输出更加丰富和有趣。具体选择哪种采样策略取决于应用的需求和期望的输出效果。

采样策略介绍

1.Greedy search

在这里插入图片描述

  • 思路:直接选择分布中概率最大的token当作解码出来的词,但是该问题在于,总是选择概率最大的词,将会生成很多重复的句子
  • 优点:计算简单高效
  • 缺点:文本重复,没有多样性

2.Beam Search(集束搜索)

在这里插入图片描述

  • 思路beam search是对贪心策略一个改进。思路也很简单,就是稍微放宽一些考察的范围。在每一个时间步,不再只保留当前分数最高的1个输出,而是保留num_beams个。当num_beams=1时集束搜索就退化成了贪心搜索。是一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。这样减少了空间消耗,并提高了时间效率,但缺点就是有可能存在潜在的最佳方案被丢弃,因此Beam Search算法是不完全的,一般用于解空间较大的系统中。
  • 优点:不仅仅关注当下的策略,一定程度上保证了最终得到的序列概率是最优的。
  • 缺点:Beam Search虽然比贪心强了不少,但还是会生成出空洞、重复、前后矛盾的文本。

3.Top-k抽样

在这里插入图片描述

  • 思路:从 tokens 里选择 k 个作为候选,然后根据它们的 likelihood scores 来采样模型从最可能的"k"个选项中随机选择一个,如果k=3,模型将从最可能的3个单词中选择一个
  • 优点:Top-k 采样是对前面“贪心策略”的优化,它从排名前 k 的 token 中进行抽样,允许其他分数或概率较高的token 也有机会被选中。在很多情况下,这种抽样带来的随机性有助于提高生成质量。
  • 缺点在分布陡峭的时候仍会采样到概率小的单词,或者在分布平缓的时候只能采样到部分可用单词。k不太好选:k设置越大,生成的内容可能性越大;k设置越小,生成的内容越固定;设置为1时,和 greedy decoding 效果一样。

4.Top-p抽样——核采样(Nucleus Sampling)

在这里插入图片描述

  • 思路候选词列表是动态的,从 tokens 里按百分比选择候选词,模型从累计概率大于或等于“p”的最小集合中随机选择一个,如果p=0.9,选择的单词集将是概率累计到0.9的那部分。
    • top-P采样方法往往与top-K采样方法结合使用,每次选取两者中最小的采样范围进行采样,可以减少预测分布过于平缓时采样到极小概率单词的几率。如果k和p都启用,则p在k之后起作用。
    • top-P越高,候选词越多,多样性越丰富。top-P越低,候选词越少,越稳定
  • 优点:top-k 有一个缺陷,那就是“k 值取多少是最优的?”非常难确定。于是出现了动态设置 token 候选列表大小策略——即核采样(Nucleus Sampling)。
  • 缺点:采样概率p设置太低模型的输出太固定,设置太高,模型输出太过混乱。

5.Temperature

在这里插入图片描述

  • 思路:通过温度,在采样前调整每个词的概率分布。温度越低,概率分布差距越大,越容易采样到概率大的字。温度越高,概率分布差距越小,增加了低概率字被采样到的机会。
  • 参数:temperature(取值范围:0-1)设的越高,生成文本的自由创作空间越大,更具多样性。温度越低,生成的文本越偏保守,更稳定。
  • 一般来说,prompt 越长,描述得越清楚,模型生成的输出质量就越好,置信度越高,这时可以适当调高 temperature 的值;反过来,如果 prompt 很短,很含糊,这时再设置一个比较高的 temperature 值,模型的输出就很不稳定了。

6.联合采样(top-k & top-p & Temperature)

  • 思路通常我们是将 top-k、top-p、Temperature 联合起来使用。使用的先后顺序是 top-k->top-p->Temperature。
    在这里插入图片描述
  1. 首先我们设置 top-k = 3,表示保留概率最高的3个 token。这样就会保留女孩、鞋子、大象这3个 token。
    女孩:0.664
    鞋子:0.199
    大象:0.105
  2. 接下来,我们可以使用 top-p 的方法,保留概率的累计和达到 0.8 的单词,也就是选取女孩和鞋子这两个 token。接着我们使用 Temperature = 0.7 进行归一化,变成:
    女孩:0.660
    鞋子:0.340
  3. 接着,我们可以从上述分布中进行随机采样,选取一个单词作为最终的生成结果。

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

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

相关文章

2024智慧城市革命:人工智能、场景与运营的融合之力

在数字革命的浪潮中,2024年的智慧城市将成为人类社会进步的新地标。 三大关键元素——人工智能、场景应用和精准运营——正在重新塑造城市面貌,构建未来的智慧城市生活图景。 一、人工智能:赋能智慧城市 随着人工智能技术的快速发展&#x…

【无标题】积鼎CFD VirtualFlow:航空及汽车燃油晃动流体仿真计算及试验对比

图1 汽车储液罐内的液体晃动 燃油晃动,作为航空、航海及汽车工业中一个重要的物理现象,一直以来都受到广泛关注。在飞行器、船舶或汽车的运行过程中,由于外部扰动或内部燃料的消耗,油箱内的燃油会产生晃动。这种晃动不仅会影响燃…

如何让线索经营更高效、有转化?(一)

​汽车主机厂和经销商从线索经营的:线索获取、线索清洗、线索转化3个环节入手,做精线索、做强转化。 本篇先介绍第一个环节-线索获取。 线索获取:一个平台管理多个投放平台,用更少成本拿到精准线索 一旦投放渠道变多&#xff0…

【Maven】Maven 基础教程(一):基础介绍、开发环境配置

Maven 基础教程(一):基础介绍、开发环境配置 1.Maven 是什么1.1 构建1.2 依赖 2.Maven 开发环境配置2.1 下载安装2.2 指定本地仓库2.3 配置阿里云提供的镜像仓库2.4 配置基础 JDK 版本2.5 配置环境变量 1.Maven 是什么 Maven 是 Apache 软件…

SpringMVC 学习(十)之异常处理

目录 1 异常处理介绍 2 通过 SimpleMappingExceptionResolver 实现 3 通过接口 HandlerExceptionResolver 实现 4 通过 ExceptionHandler 注解实现(推荐) 1 异常处理介绍 在 SpringMVC中,异常处理器(Exceptio…

港中文联合MIT提出超长上下文LongLoRA大模型微调算法

论文名称: LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models 文章链接:https://arxiv.org/abs/2309.12307 代码仓库: https://github.com/dvlab-research/LongLoRA 现阶段,上下文窗口长度基本上成为了评估…

误删文件怎么恢复?别错过这3个实用方法!

“我在电脑里不小心将几个比较重要的文件误删了,误删的文件应该怎么恢复呢?大家有没有比较好用的恢复方法可以推荐一下呢?” 在日常生活和工作中,我们会将各种重要的文件保存在电脑上,如果在操作时我们误删了重要的文件…

完全分布式运行模式

完全分布式运行模式 分析:之前已经配置完成 ​ 1)准备3台客户机(关闭防火墙、静态ip、主机名称) ​ 2)安装JDK ​ 3)配置环境变量 ​ 4)安装Hadoop ​ 5)配置环境变量 ​ 6&am…

东芝工控机维修东芝电脑PC机维修FA3100A

TOSHIBA东芝工控机维修电脑控制器PC机FA3100A MODEL8000 UF8A11M 日本东芝TOSHIBA IA controller维修SYU7209A 001 FXMC12/FXMC11;BV86R-T2GKR-DR7YF-8CPPY-4T3QD; CPU处理单元是可编程逻辑控制器的控制部分。它按照可编程逻辑控制器系统程序赋予的功能接收并存储从编程器键入…

使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212,用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:…

8.字符串转换整数

题目:请实现一个myAtoi(string s)函数,使其能将字符串转换成一个32位有符号整数。 函数myAtoi(string s)的算法如下: 1.读入字符串并丢弃无用的前导空格 2.检查下一个字符(假设还未到字符末尾)为正还是负号&#xf…

Leetcode 134. 加油站 java版 如何解决环路加油站算法

# 官网链接:. - 力扣(LeetCode) 1. 问题描述: 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升…

目标检测——车辆障碍物数据集

检测道路上障碍物对于道路安全、自动驾驶技术的发展以及交通流畅性都具有重要性和意义。以下是这些重要性和意义的详细解释: 道路安全 从道路安全的角度来看,小障碍物可能给行驶中的车辆带来潜在风险。例如,一个丢弃在道路上的轮胎或纸箱可能…

MCU最小系统电路设计(以STM32F103C8T6为例)

目录 一、何为最小系统? 二、最小系统电路设计 1.电源 (1)各种名词解释 (2)为什么会有VDD_1 _2 _3区分? (3)Mirco USB (4)5v->3.3v滤波电路 &#…

JVM相关工具【jps、jstat、jinfo、jmap、jhat、jstack、VisualVM、GCEasy、MAT、GCViewer、Arthas】

JVM相关工具 JDK工具包jpsjstatjinfojmapjhatjstackVisualVM 第三方工具【GCEasy、MAT、GCViewer、Arthas】 转自 《极客时间》 JDK工具包 jps jstat jinfo jmap jhat jstack VisualVM 第三方工具【GCEasy、MAT、GCViewer、Arthas】

常见面试题——说说堆内存与栈内存的区别

在C中,堆(heap)和栈(stack)是两种不同的内存分配方式,它们在存储数据、生命周期和访问方式上有很大的区别。让我们深入了解一下这两者之间的关键区别: 栈(Stack)&#xf…

用户故事编写指南:写出最贴近用户实际场景的故事

用户故事在软件开发过程中被作为“描述需求”的一种表达形式,是定义用户想要什么的简单方法。通过它可以清楚地解释产品。一个好的用户故事能帮助利益相关者理解产品的功能,并且有助于向客户介绍产品是什么。用户故事都会写,但如何写出最贴近…

Stable Diffusion 模型分享:【Checkpoint】YesMix(动漫、2.5D)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四下载地址模型介绍 条目内容类型大模型基础模型SD 1.5来源

10个常考的前端手写题,你全都会吗?(上)

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

XXE 漏洞简单研究

近期在做个基础的 web 常见漏洞的 ppt,主要参考 OWASP TOP 10 2017RC2,此版本中增加了 XXE 攻击,所以自己简单的研究下 XXE 攻击。XXE(XML External Entity)XML 外部实体,当前端和后端通信数据采用 xml&…