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

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向量算的,当然是每一次理解前后文的时候都要去算的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CentOS安装MySQL数据库
  • java操作mongodb详解
  • 汽车CAN网络中的checksum和Rollingcounter的作用?
  • FSQ8罗德与施瓦茨FSQ8信号分析仪
  • 第六题:标题统计
  • 第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-航班时间
  • Transformer重磅更新!新SOTA提速50%,更节省计算资源
  • 无人售货奶柜:开启便捷生活的新篇章
  • 记一次Cannot deploy POJO class [xxx$$EnhancerBySpringCGLIB$$xxx]的错误
  • 秒杀活动库存扣减逻辑详解:从批量到单个,再到缓存与日志记录
  • redis链表结构和简单动态字符串(SDS)
  • Docker之镜像与容器的相关操作
  • docker-相关
  • STL--list和vector有什么区别
  • 企业如何选择合适自己的ERP系统?ERP系统应该具有哪些功能和特点?
  • [deviceone开发]-do_Webview的基本示例
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • java8 Stream Pipelines 浅析
  • javascript数组去重/查找/插入/删除
  • Less 日常用法
  • Redis 中的布隆过滤器
  • socket.io+express实现聊天室的思考(三)
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 好的网址,关于.net 4.0 ,vs 2010
  • 精彩代码 vue.js
  • 如何选择开源的机器学习框架?
  • 推荐一个React的管理后台框架
  • 微信开源mars源码分析1—上层samples分析
  • 怎么将电脑中的声音录制成WAV格式
  • 白色的风信子
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # dbt source dbt source freshness命令详解
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #if #elif #endif
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (3)选择元素——(17)练习(Exercises)
  • (BFS)hdoj2377-Bus Pass
  • (web自动化测试+python)1
  • (windows2012共享文件夹和防火墙设置
  • (超详细)语音信号处理之特征提取
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)模仿学习-完成后台管理页面查询
  • (一)基于IDEA的JAVA基础1
  • (转)scrum常见工具列表
  • (转)可以带来幸福的一本书
  • (转)人的集合论——移山之道
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .ai域名是什么后缀?
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 使用配置文件
  • .NET 直连SAP HANA数据库
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .NET中统一的存储过程调用方法(收藏)