【GPT概念04】仅解码器(only decode)模型的解码策略

news2024/9/22 3:42:24

一、说明

        在我之前的博客中,我们研究了关于生成式预训练转换器的整个概述,以及一篇关于生成式预训练转换器(GPT)的博客——预训练、微调和不同的用例应用。现在让我们看看所有仅解码器模型的解码策略是什么。

     

二、解码策略

        在之前的博客中,我们将转换器视为一个函数,它接受输入并开始生成下一个标记或输出,同时进行自回归,即它在所有步骤中将自己的输出作为输入并生成输出。

        在训练过程中,我们也以类似的方式进行训练,因为我们展示了某些文本,我们知道下一个单词是什么,我们要求它预测下一个标记是什么,然后根据最大标记的概率反向传播损失。下一个代币预测的想法可以迭代完成,以生成我们想要的任意数量的代币,并且可能会生成完整的故事。

        例如,假设一个句子“你能不能拿一个从前开始的故事”,所以整个事情已经成为给模型的第一个“k”个标记,从这个时间步长开始,我们需要生成一个故事,其中标记的预测发生,直到我们满意或一旦我们到达序列的末尾<eos>。

        鉴于模型已经过训练来预测下一个标记和一些额外的东西,我们将做一些称为“指令微调”的事情,现在我们希望模型在我给它某些输入的场景中工作,它必须从那里开始继续答案,所以给出的任何问题,或者如果给出一些段落并要求总结,那么它必须总结。

        最初的微调问题,如预测情绪或像两个句子一样,是相似还是不相似——与我们使用现代 LLM 应用程序看到的相比,这些要容易得多,这些应用程序是更具创造性的应用程序,如(写诗等、写简历、建立网站等),所以这些是目前让我们感到惊讶的事情。显然,目前我们不知道这些高级 LLM(大型语言模型)如何能够产生如此精确和创造性的输出,但我们目前看到的是关于下一个单词预测如何发生的解码部分——我们知道的一件事是,如果我们要选择最大概率标记的过程,那么显然我们将获得与此相同的标记输出确定性输出。现在让我们看一些或一些解码策略,其中我们为每个策略都有一些创造性的输出,其中确定性将提供相同的输出,随机性将产生不同的输出。

详尽搜索:

        假设我们想生成一个 5 个单词的序列,词汇表为 { cold, coffee, I , like , water, <stop>}

        穷举搜索所有可能的序列和相关的概率,并输出具有最高概率的序列。

  • 我喜欢冷水
  • 我喜欢冷咖啡
  • 像冷咖啡一样的咖啡
  • 我喜欢我喜欢
  • 咖啡 咖啡 咖啡 咖啡

        因此,对于每个句子输出,概率将是

P(x1, x2, x3,.....xn) = P(x1).P(x2/x1), ..........., P(xn/x1, x2, ......xn-1)

        由于这是详尽的搜索 - 我们将通过解码过程找到所有可能的序列。在每个时间步长中,我们将传递所有单词

        由于这里有 6 个单词,我们可以有这 6 个单词的分布,如下所示。

        如果其中一个示例输入序列是“我喜欢冷咖啡<停止>”

        上述序列的总概率将等于

P(I) * P(like/I)*P(冷/I,like)*P(咖啡/I,like,冷)

        同样,序列的其他组合也将遵循与上述相同的模式,并给我们提供具有最大概率的输出——这种概率计算是在每个时间步对所有标记完成的。

        因此,基于上述详尽的搜索,让我们假设这些是搜索空间中的概率

        假设该序列在所有 |v|⁵ 序列中具有最高的概率——在上面的本例中,如果生成“我喜欢冷咖啡”序列作为最高概率,则结果将突出显示

        通过这种详尽的搜索,无论我们计算多少次——对于给定的相同输入,我们都会得到相同的答案,我们看不到任何创造性的输出。这属于确定性策略。包含所有树类型输出的最终示例图如下所示 —

        在这 9 种可能性中,以最大概率为准,它在时间步长 =2 时给出输出。如果我们的时间步长 = 3,那么我们将有 27 个具有概率的序列,并且我们对所有这 27 个序列都获得最高分。

        如果 |v|= 40000,那么我们需要并行运行解码器 40000 次。

        贪婪的搜索:

        使用贪婪搜索 - 在每个时间步,我们总是以最高的概率输出令牌(贪婪)

p(w2 = like|w1=I) = 0.35

p(w3= 冷 | w1,w2) = 0.45

p(w4 = 咖啡 |w1,w2,w3) = 0.35

p(w5 = 止损 | w1, w2, s3, s4) = 0.5

则生成序列的概率为

p(w5,w1,w2,w3,w4) = 0.5*0.35*0.45*0.35*0.5 = 0.011

三、一些局限!

Is this the most likely sequence?

如果我们想得到各种相同长度的序列怎么办?

如果起始标记是单词“I”,那么它最终总是会产生相同的序列:我喜欢冷咖啡。

如果我们在第一个时间步中选择了第二个最可能的代币怎么办?

然后,后续时间步长中的条件分布将发生变化。则生成序列的概率为

p(w5,w1,w2,w3,w4) = 0.25*0.55*0.65*0.8*0.5 = 0.035

如果我们在第一个时间步中选择了第二个最可能的代币怎么办?

然后,后续时间步长中的条件分布将发生变化。那么生成的序列的概率为

p(w5,w1,w2,w3,w4) = 0.25*0.55*0.65*0.8*0.5 = 0.035

        我们可以输出这个序列,而不是贪婪搜索生成的序列。当我们发送相同的输入令牌时,这也将产生相同的输出。贪婪地选择具有最大概率的令牌,每个时间步长并不总是给出具有最大概率的序列。

光束搜索:

        不要考虑每个时间步长的所有标记的概率(如在穷举搜索中),而只考虑 top-k 标记

        假设 (k=2),在时间步长 = 2 时,我们有两个概率为 I , cold 的标记,我们将有 12 个这样的序列。

        现在我们必须选择使序列概率最大化的标记。它需要 k x |v|每个时间步的计算。在第二个时间步长,我们有 2 x 6=12 次计算,然后进行排名,我们选择最高概率序列。

        让我们从上述概率分数中选出前 2 名。

        按照类似的计算,我们最终选择时间步长 = 3 和 3 个单词或标记

        现在,我们将在时间步长 T 的末尾有 k 个序列,并输出概率最高的序列。

        参数 k 称为光束尺寸。它是穷举搜索的近似值。如果 k = 1,则它等于贪婪搜索。如果 k > 1,则我们正在进行波束搜索,如果 k = V,则我们正在进行穷举搜索。

        现在让我们举一个例子,k = 2,标记词汇是 |v|。

        以上 2 * |V|我们将再次取前 2 个概率的值

        我们将有更多这样的序列,我们将只有 2 个序列继续前进——所以最后我们的流程图看起来像这样

  • 贪婪搜索和光束搜索都容易退化,即它们可能是重复的,没有任何创造力。
  • 贪婪搜索的延迟低于波束搜索
  • 贪婪的搜索和光束搜索都无法产生创造性的输出
  • 但请注意,波束搜索策略非常适合翻译和摘要等任务。

        基本上,我们需要一些带有创造性答案或输出的惊喜——因此我们需要一些基于采样的策略,而不需要贪婪或光束搜索。

四、抽样策略 — Top -K

        在这里,在每个时间步长中,考虑概率分布中的 top — k 个标记。

        从 top-k 令牌中对令牌进行采样。假设 k = 2

        在对代币进行采样之前,top-k 代币的概率将相对归一化为 , P(I) = 0.61 ~ (0.25/ (0.25+0.4)), P(Coffee) = 0.39 ~ 0.4/(0.25+0.4)。

        让我们假设并创建一个随机数生成器,它预测介于 0 和 1 之间 — rand(0,1)。假设如果获得的数字是 ~0.7,那么咖啡将是作为输入的单词或标记,如果再次生成的随机数是 ~0.2,那么在时间步长 2 中,单词或标记“I”将是输入。

        对前 2 个单词使用 top-K 采样生成的序列是

        就像<停下来一样>

        等价和<止损>的归一化概率分别为 0.15/(0.55+0.15)~0.23 和 0.55/(0.55+0.15) ~0.77。

        现在我们运行 Rand 函数来生成从 0 到 1 的数字——假设如果值为 0.9,则输出<stop> 将是输出,那么结果过程将就此停止。下次当随机生成器输出为 0.5 时,我们将以“喜欢”作为结果。因此,通过进行这种随机生成,我们将获得不同的输出。可能是第一个“我”,生成“<停止>”——对于所有其他情况,结果可能会有所不同,如下所示。

惊喜是随机的结果。波束搜索与人类预测在每个时间步长上的预测相比如何?

        如果我们看一下波束搜索,它会以非常高的概率产生输出,因此我们看不到任何惊喜——但是如果要求人类填写句子,我们将得到不同和随机的结果,概率非常小,因为人类预测具有高方差,而波束搜索预测具有低方差。给其他极有可能的代币一个机会会导致生成的序列出现多样性。

        假设我们有 40K 词汇表中的前 5 个单词(I、go、where、now、then),概率分别为 (0.3、0.2、0.1、0.1、0.3)。

        如果随机生成器生成任意数字 b/w 0 和 1,并且基于该值,我们将选择或采样单词或标记以选择高概率值。我们必须记住,在这里我们不是从 40K 词汇表中随机选择样本,而是我们正在做的是,我们已经从 40K 词汇表中获得了前 5 个单词,并且从前 5 个单词或样本的子集中,我们正在创建序列——这里它是随机的,但它是序列的受控随机选择。

五、抽样策略 — Top -P

        k 的最优值应该是多少?

        让我们举 2 个例子,分别是平坦分布和峰值分布。

示例-1:(平坦分布)

示例 — 2:(峰值分布)

        根据分布类型,K 的值会有所不同——如果我们有一个峰值分布,那么与平坦分布相比,K值高一点将无济于事。

        如果我们修复 的 vlaue,比如 k = 5,那么我们就会从平坦分布中遗漏其他同样可能的标记。

        它会错过生成各种句子(创意较少)

        对于峰值分布,使用相同的值 k = 5,我们最终可能会为更少的句子创造一些意义。

解决方案 — 1 : 低温采样

        当温度 = 1 时,这就是正态 softmax 方程的分布。给定 logits,u1: |v|和温度参数 T ,计算概率为

        如果我们减小 T 值,我们会得到峰值分布。

  • 低温 = 偏态分布 = 创造力降低
  • 高温 = 更平坦的分布 = 更多的创造力

解决方案 — 2: 顶部 — P(原子核)采样

让我们再考虑上面的两个例子。

  • 按降序对概率进行排序
  • 设置参数 p, 0 < p < 1 的值
  • 将代币从顶部代币开始的概率相加
  • 如果总和超过 p,则从所选令牌中抽取令牌
  • 它类似于 top-k,k 是动态的。假设我们将 p = 0.6 设置为阈值,

例如,-1 分布:该模型将从标记中采样(思想、知道、有、看到、说)

例如-2 分布:模型将从令牌中采样(热、冷却)

        根据生成的随机值,我们将选择不同的单词标记进行序列形成。

        这是对仅解码器模型的所有解码策略的总结,即我们在确定性和随机性上徘徊的 GPT——这种随机策略确保即使 transformer 具有确定性的计算输出,但最后我们将添加一个采样函数,这将确保我们每次都采样不同的令牌,从而生成不同的序列。

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

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

相关文章

财报解读:“高端化”告一段落,华住开始“全球化”?

2023年旅游业快速复苏&#xff0c;全球酒店业直接受益&#xff0c;总体运营指标大放异彩&#xff0c;多数酒店企业都实现了营收上的明显增长&#xff0c;身为国内龙头的华住也不例外。 3月20日晚&#xff0c;华住集团发布2023年四季度及全年财报。整体实现扭亏为盈&#xff0c;…

阿里云安装宝塔后面板打不开

前言 按理来说装个宝塔面板应该很轻松的&#xff0c;我却装了2天&#xff0c;真挺恼火的&#xff0c;网上搜的教程基本上解决不掉我的问题点&#xff0c;问了阿里云和宝塔客服&#xff0c;弄了将近2天&#xff0c;才找出问题出在哪里&#xff0c;在此记录一下问题的处理。 服…

深度探析:7天后不过期的微信群二维码生成的优势

在日常生活和工作中&#xff0c;微信不过期二维码深受用户的欢迎。因为传统的微信群二维码被下载下来后&#xff0c;只有7天有效期。但企业在日常运营中&#xff0c;如果直接使用下载下来的微信群二维码&#xff0c;会造成很多的不便和宣传资源浪费。这些问题&#xff0c;可以通…

华为ensp中ospf基础 原理及配置命令(详解)

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言———— OSPF 的全称是 Open Shortest Path First&#xff0c;意为“开放式最短路径优先”。是一种内部网关协…

MySQL之基本操作与用户授权

一 基本操作 1 SQL分类 数据库&#xff1a;database 表&#xff1a;table&#xff0c;行&#xff1a;row 列&#xff1a;column 索引&#xff1a;index 视图&#xff1a;view 存储过程&#xff1a;procedure 存储函数&#xff1a;function 触发器&#xff1a;trigger 事…

“Python神技:一键转换PPT页面为高清图片,源码大公开!”(附Python源码)

今天让claude3帮忙写了个python代码&#xff0c;实现了将ppt转换成图片功能。WPS中实现这个功能还需要开通会员&#xff0c; 其实也就一点代码就可以实现&#xff0c;而且powerpoint中还没有这个将页面转换成图片的功能&#xff0c;废话不多说&#xff0c;直接上源码。 import …

欧科云链:从技术与数据视角,看Solana如何成为Web3“流量担当”?

出品&#xff5c;欧科云链研究院 作者&#xff5c;Jason Jiang 坎昆升级完成后&#xff0c;除一众L2手续费锐减外&#xff0c;以太坊生态并未掀起涟漪&#xff0c;相反Solana凭借一波短暂的Meme热潮&#xff0c;再次成为焦点。尽管本周Solana生态的Meme热度褪去&#xff0c;但…

最新,955神仙公司名单(非外企)

955 神仙公司名单&#xff08;非外企&#xff09; 往常爆料最多的 955 神仙公司名单通常都是集中在一线城市的外企。 例如下面这张最为流行的名单图&#xff1a; 最近牛客网上有同学整理出了非外企的版本&#xff0c;其中不乏一些耳熟能详的互联网产品。 随手把名单分享给大家。…

SDKMAN多版本SDK并行管理工具

一、简介 SDKMAN是管理多个SDK并行版本的工具&#xff0c;它提供了方便的命令行界面&#xff08;CLI&#xff09;和API&#xff0c;用于列出&#xff0c;安装&#xff0c;切换和删除候选对象。此外&#xff0c;它还为我们设置了环境变量。 它还允许开发人员安装基于JVM的SDK&…

短剧分销cps推广很简单,短剧分销授权平台怎么搭建?

一、短剧分销是什么&#xff1f; 短剧分销&#xff0c;也被称为短剧CPS&#xff0c;是一种通过推广短剧并获得收益的方式。分销方会提供短剧片单&#xff0c;内容创作者可以根据这些片单剪辑成短视频内容进行分发。这样既能避免版权问题&#xff0c;又可以利用优质内容吸引用户…

JAVA入门第一步

学习总结&#xff1a; 打开CMD常见的CMD命令 一、打开CMD CMD的概念 CMD是Windows操作系统中的命令提示符(Command Prompt)程序&#xff0c;它是一种命令行工具&#xff0c;可以让用户通过键入命令来与计算机进行交互。CMD是Windows中一个基本的系统组件&#xff0c;它提供了一…

基于springboot+vue的库存管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

SQL:窗口函数之OVER()

窗口函数 通用格式 “函数 OVER (PARTITION BY 分组 ORDER BY 排序依据 升降序)”。 这里记录下OVER() 以及搭配LEAD/LAG函数的使用方法&#xff08;执行平台Impala&#xff09; 目录 OVER函数1、不加条件的OVER函数——得到所有的汇总结果2、仅有排序的OVER函数——得到按顺序…

基于XENSIV电容原理的KP236N6165XTMA1、KP276D1201XTMA1、KP276D1505XTMA1压力传感器,采用BiCMOS技术

1、XENSIV™ KP236N6165 压力传感器 23.93PSIA 4.85V DSOF8 描述&#xff1a;KP236N6165XTMA1 是一款模拟大气压力传感器&#xff0c;适用于大温度范围的汽车应用。它采用表面微加工技术&#xff0c;内置一个采用BiCMOS技术的单片集成信号调理电路。该器件将60 kPa至165 kPa的…

题注或页码中不含章节编号。若要应用章节编号,请使用“开始”选项卡上的“多级列表”按钮,然后选择连接到标题样式的编号方案

问题&#xff1a; 给图片或表格插入含有章节号的题注时&#xff0c;提示【题注或页码中不含章节编号。若要应用章节编号&#xff0c;请使用“开始”选项卡上的“多级列表”按钮&#xff0c;然后选择连接到标题样式的编号方案】。 原因&#xff1a; 当前图片或表格所在的段落…

力扣Lc20--- 202.快乐数(java版)-2024年3月20日

1.题目 2.知识点 &#xff08;1&#xff09;while (seen.contains(n) false) { // 循环体 } 与 !seen.contains(n) 等同 &#xff08;2&#xff09; 当传入数字 19 给 isHappy(19) 方法时&#xff0c;下面是每一行代码的执行过程&#xff1a; 初始化一个空的 HashSet&#…

Python 日志记录库之loguru使用详解

概要 在软件开发中,良好的日志记录是至关重要的。它不仅可以帮助开发人员跟踪应用程序的运行状态和诊断问题,还可以为用户提供更好的支持和维护。而Python的Loguru库则为日志记录提供了一种简洁而强大的解决方案。本文将深入探讨Loguru库的各个方面,包括其基本概念、功能、…

Linux环境JMeter脚本性能测试、easyNmon生成监控报告

一、下载JMeter安装包 Jmeter是Java开发的&#xff0c;需要依赖JDK环境&#xff0c;因此我们需提前安装好JDK。 Jmeter是开源的工具&#xff0c;我们直接到官网下载即可。 最新版本下载地址&#xff1a;Apache JMeter - Download Apache JMeter 二、安装JMeter #新建jmete…

OneNote 中的云端字典在哪里? RoamingCustom.dic 在哪里?

早期懵懂不知&#xff0c;使用 OneNote 时直接将所有标红的单词添加到字典中了。后面才发现默认会添加到云端字典中。因为云端字典是存储在云端上的&#xff0c;所以 onenote 没有给出路径&#xff1a; 难道没办法获取了吗&#xff1f;有的&#xff01; 方案如下&#xff1a;考…

前端全栈必学的Dockerfile-ABC!

举个很简单的例子&#xff0c;我有一个Centos7的服务器&#xff0c;但是由于系统限制&#xff0c;我无法安装nodejs18… 但是&#xff01;我在Docker里就可以&#xff01; Dockerfile是Docker的心脏&#xff0c;一个文本文件&#xff0c;包含了一系列的指令&#xff0c;用来构…