当前位置: 首页 > news >正文

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

一、说明

        在我之前的博客中,我们研究了关于生成式预训练转换器的整个概述,以及一篇关于生成式预训练转换器(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 具有确定性的计算输出,但最后我们将添加一个采样函数,这将确保我们每次都采样不同的令牌,从而生成不同的序列。

相关文章:

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

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

蔚来-安全开发一面/二面

基本不怎么会渗透测试&#xff0c;本科期间有过大数据隐私保护(密码)的项目&#xff0c;硕士期间有个华为合作的项目一篇在投的ai安全论文 一面&#xff08;45min&#xff09; 1.介绍自己 2.介绍一下实习 3.场景题轰炸&#xff0c;主要针对实习中的场景&#xff0c;主要考察…...

Redis Cluster集群模式容器化部署

Redis Cluster集群模式容器化部署 安装Docker和docker-compose准备docker-compose文件准备Redis配置文件Linux内核参数优化启停Redis实例Redis集群搭建 环境准备&#xff1a; IP版本角色端口172.x.x.11RHEL 7.9master6379172.x.x.12RHEL 7.9master6379172.x.x.13RHEL 7.9maste…...

网络原理(6)——IP协议

目录 一、网段划分 现在的网络划分&#xff1a; 1、一般情况下的家庭网络环境 2、IP地址 3、子网掩码 4、网关 以前的网络划分&#xff1a; 二、特殊IP 1、环回 IP 2、主机号为全 0 的IP 3、广播地址IP 三、路由选择&#xff08;路线规划&#xff09; 一、网段划分…...

淘宝商品详情API接口:快速获取商品信息的高效工具

淘宝商品详情API接口&#xff1a;快速获取商品信息的高效工具 请求示例&#xff0c;API接口接入Anzexi58 在信息化、数字化的今天&#xff0c;数据已成为商业决策的重要依据。对于电商行业而言&#xff0c;快速准确地获取商品信息对于商家和消费者都至关重要。淘宝作为中国最大…...

一分钟学习Markdown语法

title: 一分钟学习Markdown语法 date: 2024/3/24 19:33:29 updated: 2024/3/24 19:33:29 tags: MD语法文本样式列表结构链接插入图片展示练习实践链接问题 欢迎来到Markdown语法的世界&#xff01;Markdown是一种简单而直观的标记语言&#xff0c;让文本排版变得轻松有趣。接下…...

Power Apps 学习笔记 -- OrganizationRequestCollection

文章目录 1. OrganizationRequestCollection 简介2. OrganizationRequestCollection2.1 OrganizationRequest 使用2.2 OrganizationRequestCollection 使用 1. OrganizationRequestCollection 简介 OrganizationRequestCollection 链接 : OrganizationRequestCollection Orga…...

python绘图matplotlib——使用记录1

本博文来自于网络收集&#xff0c;如有侵权请联系删除 使用matplotlib绘图 1 常用函数汇总1.1 plot1.2 legend1.3 scatter1.4 xlim1.5 xlabel1.6 grid1.7 axhline1.7 axvspan1.8 annotate1.9 text1.10 title 2 常见图形绘制2.1 bar——柱状图2.2 barh——条形图2.3 hist——直…...

Spring Data访问Elasticsearch----创建存储库实例

Spring Data访问Elasticsearch----创建存储库实例 一、Java配置二、XML配置三、使用过滤器四、独立使用 本文介绍如何为已定义的存储库接口创建实例和bean定义。 一、Java配置 在Java配置类上使用特定于存储的EnableElasticsearchRepositories注解来定义用于存储库激活的配置。…...

Wireshark TS | DNS 案例分析之外的思考

前言 承接之前一篇《Packet Challenge 之 DNS 案例分析》&#xff0c;在数据包跟踪文件 dnsing.pcapng 中&#xff0c;关于第 4 题&#xff08;What is the largest DNS response time seen in this trace file? &#xff09;的分析过程中曾经碰到一个小问题&#xff0c;主要…...

nginx集群部署访问不了怎么解决

如果你的Nginx集群部署无法访问&#xff0c;可能有多种原因导致&#xff0c;以下是一些常见的解决方法&#xff1a; 检查网络连接&#xff1a;确保服务器之间的网络连接是正常的&#xff0c;可以通过ping命令或telnet命令检查服务器之间的网络连通性。 检查防火墙设置&#xff…...

抖音小程序开发资质认证流程和资料

开发小程序前&#xff0c;你需要先入驻抖音开发平台开发者平台。包含注册账号、主体认证和对公认证&#xff0c;具体操作可参考注册开发者平台账号。 基础信息提交需要资料 1、营业执照。 本文介绍开发者在抖音开放平台的入驻流程。​ 入驻标准​ 入驻主体主要为中国或海外…...

【JAVA】通过JAVA实现用户界面的登录

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-wyCvaz0EBNwHcwsi {font-family:"trebuchet ms",verdana,arial,sans-serif;f…...

UE5 C++ 3D血条 响应人物受伤 案例

一.3Dwidget 1.创建C Userwidget的 MyHealthWidget&#xff0c;声明当前血量和最大血量 UCLASS() class PRACTICEC_API UMyHealthWidget : public UUserWidget {GENERATED_BODY() public:UPROPERTY(EditAnywhere,BlueprintReadWrite,Category "MyWidget")float C…...

阿里云2核4G服务器支持多少人在线?2C4G多少钱一年?

2核4G服务器支持多少人在线&#xff1f;阿里云服务器网账号下的2核4G服务器支持20人同时在线访问&#xff0c;然而应用不同、类型不同、程序效率不同实际并发数也不同&#xff0c;2核4G服务器的在线访问人数取决于多个变量因素。 阿里云2核4G服务器多少钱一年&#xff1f;2核4…...

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

导弹任务分析工具 Missile Mission Toolbox MMT包括4个部分,分别是 导弹设计工具 Missile Design Tool MDT 导弹飞行工具 Missile Flight Tool MFT 拦截飞行工具 Interceptor Flight Tool MCT 导弹转换工具 Missile Conversion Tool MCT 可以用于 创建高保真弹道 评估导弹系统…...

新台阶——蓝桥杯单片机省赛第十四届程序设计题目

在做十四届题目之前&#xff0c;常常听学长说&#xff0c;十四届以前拿省一真的是右手就行&#xff0c;并不相信&#xff0c;在经历十四届痛苦的大量修bug和优化之后&#xff0c;或许学长的话真说对了几分。话不多说&#xff0c;我们开始一起完成单片机第十四届程序设计题目。 …...

php魔术方法

PHP 中的魔术方法&#xff08;Magic Methods&#xff09;是一组具有特殊名称的方法&#xff0c;它们会在特定的事件发生时自动被调用。这些事件包括对象的创建、销毁、属性的访问和修改等。通过使用魔术方法&#xff0c;你可以更好地控制对象的行为&#xff0c;并增加代码的灵活…...

Linux系统——Mysql索引详解

目录 一、索引介绍 1.索引的概念 2.索引的作用 3.索引的缺点 4.创建索引的原则依据 5.索引优化 二、索引的分类和创建 1.索引分类 1.1普通索引 1.1.1直接创建索引 1.1.2修改表方式创建 1.1.3创建表的时候指定索引 1.2唯一索引 1.2.1直接创建唯一索引 1.2.2修改表…...

Java22已发布,支持SpringBoot3.3.0正式版

Java22已发布&#xff0c;支持SpringBoot3.3.0正式版 文章目录 Java22已发布&#xff0c;支持SpringBoot3.3.0正式版1. JDK22现已推出&#xff01;2. Java22的新功能1. 语言改进1. 语言预览 2. 库文件3. 性能4. 工具 3. 资源 Java 22现已发布 下一个Java版本提高了Java应用程序…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...