gpt的构造和原理

gpt是序列预测模型。

问答是通过确定问答格式样本训练出来的!比如“Q:xxxx.A:xxx"本质还是根据前面的序列预测后面的序列。在自回归训练过程中,文本序列(可能包含问题和紧随其后的答案)被视为一个整体输入到模型中。

词嵌入是把词汇转换成n维向量的层,此时向量不考虑前后文只考虑这个词是什么。类似查词典。

自注意力机制是把局部特征向量转换成全局特征向量的层,也就是考虑前后文改变这个词意,q反映是元素关注特征的向量,k是元素有的供别人关注特征的向量,所以点积之后反映的相似度代表了关注的和对方有的的契合度,也就可以衡量注意力得分了,除以维度开根是为了防止梯度爆炸,softmax是为了标准化。得到的就是注意力得分然后乘以对方的v向量就是受到对方的影响。

预测则是靠fnn(前馈网络)进行的。

gpt的参数通过反向传递和梯度下降进行查找的。经典的梯度下降就是通过链式法则的数学方法,不过也有随机梯度下降,adam什么的方法。变动一点的数值方法不知道有没有。

完整预测过程:

词嵌入矩阵是二维的,就像词典一样把词转换成n维度向量,有两个索引,分别是词语,还有维度,比如cat的向量是3,2,57,1,62。[cat,3]就是57.这样转换完得到的就是3维的局部向量,比如第1句的第3个词语是cat,转换后就是[1,3,0:4]=3,2,57,1,62。
再去多头自注意机制层,各个头平分维度,在低维子空间计算,所以每一个头管5(维度)/头数个维度,这个数也是dk,dq和dv,就是查询向量,键向量和值向量的维度。然后用序列内每一个元素的局部特征向量乘以查询向量变换矩阵,键向量变换矩阵和值向量变换矩阵,就可以得到查询向量,键向量和值向量。用a的查询向量点积b的键向量就可以得到a对b的注意力得分,然后除以向量维度(kqv的,都一样,等于局部特征向量除以头数)的1/2次方,这是为了防止过大,我之前有想为什么不除以模,说是实践中训练时间会高很多,除以这个可以削弱维度太多造成相似度的数值过大。再把这个注意力得分除以根号维度的东西做softmax归一化就可以放注意力得分矩阵里的a,b位置了,这个矩阵n*n,代表每一个元素i对元素j的注意(s受影响)程度,用这个值乘上j的v向量就是对i的影响,把每一个头得到的这个影响,重新拼起来,就是和原来局部特征向量维数一样的一个向量,通过残差连接把他加回原来的局部特征向量再做层归一化(归一化加缩放平移)就是全局特征向量。全局特征向量再放FNN里面预测后面的序列,特别是我发现预测的序列长度和原来的序列一定是相同的,因为算完的是改变值,加上原来的全局特征序列(残差)就是新的序列的全局特征序列。再归一化然后用词嵌入矩阵的转置矩阵(向量to词汇)(词汇,维度)转回去。
但是这个时候转回去可能发现转回的向量没有对应的词,比如这里适合放意思是15,2,66的词语,但是词嵌入矩阵里没有,只有15,2,63的apple和15,2,67的banana。那么就转概率或者说得分,所有概率用三维概率/得分分布矩阵保存。[1(第一句),4(第4个词),apple(词汇,通常也会转编码)]=4(得分),[1,4,banana]=6(得分)。
然后用softmax归一化之后,所有得分之和变成1,就是概率了,[1(第一句),4(第4个词),apple(词汇,通常也会转编码)]=0.4,[1,4,banana]=0.6。
然后选最大或者全输出什么的就看选择了。比如选最大,那么就推测下一个词语是banana。

sleepgpt主要是利用了全局特征向量这个功能。光通过局部特征无法判断有病与否。

某一个时间点不看前后,无论处在哪一个睡眠时期都不是有问题的。

但是特定的一些序列比如121(我乱说的,举个例子),323之类的就能说明有睡眠问题。

这就是gpt在分类中的运用。

最后说明一下知识是以参数形式隐性的存储在自注意力,FNN,层归一化等层的训练参数中的。绝大多数比如查询(Q)、键(K)和值(V)矩阵是通过训练学习到的参数,但是像注意力得分矩阵这种是需要根据q向量和前后文kv向量算的,当然是每一次理解前后文的时候都要去算的。

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

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

相关文章

深入理解数据结构——堆

前言: 在前面我们已经学习了数据结构的基础操作:顺序表和链表及其相关内容,今天我们来学一点有些难度的知识——数据结构中的二叉树,今天我们先来学习二叉树中堆的知识,这部分内容还是非常有意思的,下面我们…

前端秘法番外篇----学完Web API,前端才能算真正的入门

目录 一.引言 二.元素的获取和事件 1.获取元素 2.各种事件 2.1点击事件 2.2键盘事件 三.获取&修改操作 1.获取修改元素属性 2.修改表单属性 2.1暂停播放键的转换 2.2计数器的实现 2.3全选的实现 3.样式操作 3.1行内样式操作 3.2类名样式操作 四.节点 1.创…

记录Xshell使用ed25519公钥免密链接SSH

试了半天,Xshell好像没办法导入linux生成的ssh公钥,因此需要以下步骤实现免密登录 结论,在linux公钥文件中,将客户端生成的ed25519公钥加上去即可(一个公钥单独一行) 1.使用Linux生成秘钥文件(不需要输入私钥密码passphrase)或者直接创建一…

【Servlet】继承关系以及service方法

文章目录 一、继承关系二、相关方法 一、继承关系 Servlet接口下有一个GenericServlet抽象类。在GenericServlet下有一个子类HttpServlet,它是基于http协议。 继承关系 javax.servlet.Servlet接口​ javax.GenericServlet抽象类​ javax.servlet.http.HttpServ…

生产制造园区数字孪生3D大屏展示提升运营效益

在智慧园区的建设中,3D可视化管理平台成为必不可少的工具,数字孪生公司深圳华锐视点打造的智慧园区3D可视化综合管理平台,致力于将园区的人口、经济、应急服务等各项业务进行3D数字化、网络化处理,从而实现决策支持的优化和管理的…

C++多线程:Atomic原子类与CAS锁详解(十)

1、原子操作的概念 什么是原子操作: 原子被认为是构成物质最小的单位,是不可分割的一个东西。而在程序中原子操作被认为是不可分割的一个步骤或者指令其实我们很简单的程序,在高级语言中被认为是一个步骤的操作,编译成汇编指令之…

Redis从入门到精通(三)Jedis客户端、SpringDataRedis客户端

文章目录 前言第3章 Redis的Java客户端3.1 Jedis客户端3.1.1 快速使用3.1.2 连接池 3.2 SpringDataRedis客户端3.2.1 快速使用3.2.2 自定义序列化3.2.3 StringRedisTemplate 3.3 小结 前言 在上一章【Redis从入门到精通(二)Redis的数据类型和常见命令介绍】中,学习…

Springboot+MybatisPlus+EasyExcel实现文件导入数据

记录一下写Excel文件导入数据所经历的问题。 springboot提供的文件处理MultipartFile有关方法,我没有具体看文档,但目测比较复杂, 遂了解学习了一下别的文件上传方法,本文第1节记录的是springboot原始的导入文件方法写法&#xf…

docker-compse安装es(包括IK分词器扩展)、kibana、libreoffice

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。 Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据…

MySQL 优化及故障排查

目录 一、mysql 前置知识点 二、MySQL 单实例常见故障 故障一 故障二 故障三 故障四 故障五 故障六 故障七 故障八 三、MySQL 主从故障排查 故障一 故障二 故障三 四、MySQL 优化 1.硬件方面 (1)关于 CPU (2)关…

前端低代码平台的使用学习

背景 最近发现老婆每天都要捣鼓一个 excel 表格,并将表格发到群中,询问后才知道只是为了记录每天的事物变化。我想这接收方每次都要下载表格再打开看,太麻烦了,直接做个 web 表单,支持简单的增删改查就好了。 当我着手…

【Gradle 一】Gradle入门简介(Maven/Gradle比较、Gradle目录结构常用命令)

1.maven与gradle的比较: 侧重点:同样作为项目构建工具,maven侧重于项目jar包管理,gradle侧重于项目的构建构建性能:gradle远高于maven 2.maven目录结构: target classes src main javaresources test ja…

Reversing Linked List

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specifi…

网络基础——ISIS

名词 ISIS:中间系统到中间系统,优先级是15集成化ISIS:这是在优化后,可以使用在OSI模型上的NET地址:由区域ID、系统ID和SEL组成,一台设备上最多配置3个NET地址,条件是区域号要不一致,…

Intel FPGA (7):adc adc128s102

Intel FPGA (7):adc adc128s102 前提摘要 个人说明: 限于时间紧迫以及作者水平有限,本文错误、疏漏之处恐不在少数,恳请读者批评指正。意见请留言或者发送邮件至:“Email:noahpanzzzgmail.com”。本博客的工程文件均存…

ApiFox 使用教程

ApiFox 使用教程 目录概述需求: 设计思路实现思路分析1.基本使用教程(Apifox 使用 Postman)Apifox 下使用 mockapifox 下 swaggerApifox 下使用 Jmeter 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show…

用Python实现办公自动化(自动化处理PDF文件)

自动化处理 PDF 文件 目录 自动化处理 PDF 文件 谷歌浏览器 Chrome与浏览器驱动ChromeDriver安装 (一)批量下载 PDF 文件 1.使用Selenium模块爬取多页内容 2.使用Selenium模块下载PDF文件 3.使用urllib模块来进行网页的下载和保存 4.使用urllib…

关于OcenaBase v4.2中,分区转移和负载均衡的技术解读

OceanBase​​​​​​​​​​​​​​作为一款原生分布式数据库,其核心的技术特性之一是高可扩展性,其具体表现在两个方面: 首先,是灵活的扩缩容能力,包括垂直扩缩容和水平扩缩容: 垂直扩缩容&#xff…

Dubbo 3.x源码(18)—Dubbo服务引用源码(1)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo的服务导出的源码,在DubboBootstrapApplicationListener#startSync方法中,在调用了exportServices方法进行服务导出之后,立即调用了referServices方法…

【ZZULIOJ】1025: 最大字符(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 给你三个ASCII字符(不含空白字符:包括空格、制表符\t、回车换行符\n),找出其中最大的那个 输入 输入包含三个字符,之间有一个空格隔开。 输出 输出ASCII码最大的那个字符…