位置: IT常识 - 正文

GPT模型总结【模型结构及计算过程_详细说明】(gpt详解)

编辑:rootadmin
GPT模型总结【模型结构及计算过程_详细说明】 GPT模型

推荐整理分享GPT模型总结【模型结构及计算过程_详细说明】(gpt详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:gpt3 模型大小,gpt2模型大小,gpt3 模型大小,gpd模型,gpt3模型结构,gpt-2模型,gpt 模型,gpt 模型,内容如对您有帮助,希望把文章链接给更多的朋友!

GPT模型:生成式预训练模型(Generative Pre-Training)

总体结构:

无监督的预训练 有监督的下游任务精调

核心结构:中间部分主要由12个Transformer Decoder的block堆叠而成

下面这张图更直观地反映了模型的整体结构:

模型描述

GPT 使用 Transformer的 Decoder 结构,并对 Transformer Decoder 进行了一些改动,原本的 Decoder 包含了两个 Multi-Head Attention 结构,GPT 只保留了 Mask Multi-Head Attention,如下图所示。 (很多资料上说类似于decoder结构,因为采用了decoder的mask机制,不过抛开这一点,其实感觉和encoder会更像,所以实现时有时反而是调encoder实现 莫烦Python GPT实现代码)

对比原有transformer的结构

阶段描述预训练阶段:

预训练阶段为文本预测,即根据已有的历史词预测当前时刻的词,7-2,7-3,7-4三个式子对应之前的GPT结构图,输出P(x)为输出,每个词被预测到的概率,再利用7-1式,计算最大似然函数,据此构造损失函数,即可以对该语言模型进行优化。

下游任务精调阶段

损失函数

下游任务与上游任务损失的线性组合

计算过程:输入Embedding多层transformer的block拿到两个输出端结果计算损失反向传播更新参数

一个具体的GPT实例代码: 可以看到GPT模型的forward函数中,首先进行Embedding操作,然后经过12层transformer的block中进行运算,然后分别经过两个线性变换得到最终计算值(一个用于文本预测,一个用于任务分类器),代码与最开始展示的模型结构图保持一致。 参考:莫烦Python GPT实现代码 下面我们着重关注计算步骤2, 3

计算细节:【Embedding层】:GPT模型总结【模型结构及计算过程_详细说明】(gpt详解)

查表操作 Embedding层就是以one hot为输入、中间层节点为字向量维数的全连接层。而这个全连接层的参数,就是一个“字向量表”。 one hot型的矩阵相乘,就像是相当于查表,于是它直接用查表作为操作,而不写成矩阵再运算,这大大降低了运算量。再次强调,降低了运算量不是因为词向量的出现,而是因为把one hot型的矩阵运算简化为了查表操作。

【GPT中类似transformer的decoder层】:

每个decoder层包含两个子层

sublayer1: mask的多头注意力层sublayer2: ffn (feed-forward network)前馈网络(多层感知机)sublayer1:mask的多头注意力层

输入: q, k, v, mask 计算注意力:Linear(矩阵乘法)→Scaled Dot-Product Attention→Concat(多个注意力的结果, reshape )→Linear(矩阵乘法)

残差连接和归一化操作:Dropout操作→残差连接→层归一化操作

计算过程:

下面这段内容介绍了计算注意力的整体过程:

分解说明:Mask Multi-head Attention1.矩阵乘法:

将输入的q,k,v进行变换

2.Scaled Dot-Product Attention

主要就是进行attention的计算以及mask的操作 Mask操作:masked_fill_(mask, value) 掩码操作,用value填充tensor中与mask中值为1位置相对应的元素。mask的形状必须与要填充的tensor形状一致。(这里采用-inf填充,从而softmax之后变成0,相当于看不见后面的词) transformer中的mask操作

mask后可视化矩阵: 直观理解是每个词只能看到它之前的词(因为目的就是要预测未来的词嘛,要是看到了就不用预测了)

3.Concat操作:

综合多个注意力头的结果,实际上是对矩阵做变换:permute,reshape操作,降维。(如下图红框中所示)

4.矩阵乘法:一个Linear层,对注意力结果线性变换

整个mask多头注意力层的代码: 注意到:上述代码中后面几行是对注意力结果进行残差连接和归一化操作 下说明这一过程:

残差连接和归一化操作:5.Dropout层6.矩阵加法7.层归一化

批量归一化是不同训练数据之间对单个神经元的归一化,层归一化是单个训练数据对某一层所有神经元之间的归一化。 输入归一化、批量归一化(BN)与层归一化(LN)

代码展示:

sublayer2: ffn (feed-forward network)前馈网络1.线性层(矩阵乘法)2.relu函数激活3.线性层(矩阵乘法)4.Dropout操作5.层归一化

【线性层】:

多层block的输出结果放到两个线性层中进行变换,比较简单,不做赘述。

补充:注意力层流程图示

参考资料

1.参考论文:Radford et al. 《Improving Language Undersatnding by Generative Pre-Training"》 2.参考书籍:《自然语言处理 基于预训练模型的方法》车万翔,郭江,崔一鸣 3.本文中代码来源:莫烦Python GPT实现代码 4.其它参考链接(博文中已提到部分): word embedding计算过程剖析 Transformer的矩阵维度分析和Mask详解

本文链接地址:https://www.jiuchutong.com/zhishi/293129.html 转载请保留说明!

上一篇:LangChain与大型语言模型(LLMs)应用基础教程:信息抽取

下一篇:CSS: overflow-anchor 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容

  • iphone11如何设置微信锁(iphone11如何设置信任软件)

    iphone11如何设置微信锁(iphone11如何设置信任软件)

  • vivos6有nfc功能的吗(vivos6的nfc功能怎样打开)

    vivos6有nfc功能的吗(vivos6的nfc功能怎样打开)

  • ai更改语言设置在哪里(ai切换语言)

    ai更改语言设置在哪里(ai切换语言)

  • 顺序数据用什么图表示(顺序数据用什么统计方法)

    顺序数据用什么图表示(顺序数据用什么统计方法)

  • 安居码怎么弄(安居码怎么申请,几天就申请好)

    安居码怎么弄(安居码怎么申请,几天就申请好)

  • 桌面文件夹名称怎么修改(电脑桌面文件夹名称)

    桌面文件夹名称怎么修改(电脑桌面文件夹名称)

  • wifi6手机有哪些(支持wifi6的手机)

    wifi6手机有哪些(支持wifi6的手机)

  • qq屏蔽一个人对方知道吗(qq屏蔽一个人对方发的消息你知道吗)

    qq屏蔽一个人对方知道吗(qq屏蔽一个人对方发的消息你知道吗)

  • 拼多多钱包在哪里(拼多多的拼多多钱包在哪)

    拼多多钱包在哪里(拼多多的拼多多钱包在哪)

  • 网桥是用于哪一层的设备(网桥是用于哪一部分)

    网桥是用于哪一层的设备(网桥是用于哪一部分)

  • td-lte流量费是什么(td-lte费用)

    td-lte流量费是什么(td-lte费用)

  • 笔记本内存条低压和标压区别(笔记本内存条低电压)

    笔记本内存条低压和标压区别(笔记本内存条低电压)

  • 微信怎么顶置好友(微信怎么顶置好友信息)

    微信怎么顶置好友(微信怎么顶置好友信息)

  • yy实名认证能注销吗(yy实名认证能注销账号吗)

    yy实名认证能注销吗(yy实名认证能注销账号吗)

  • 内存储器包括哪些(内存储器包括哪三类)

    内存储器包括哪些(内存储器包括哪三类)

  • nova65g参数(nova65g参数详细参数)

    nova65g参数(nova65g参数详细参数)

  • 怎么打开手机运动权限(怎么打开手机运营商)

    怎么打开手机运动权限(怎么打开手机运营商)

  • 苹果手机系统怎么升级(苹果手机系统怎么读)

    苹果手机系统怎么升级(苹果手机系统怎么读)

  • 苹果11查找朋友在哪里(苹果查找朋友位置怎么弄)

    苹果11查找朋友在哪里(苹果查找朋友位置怎么弄)

  • 小米音响可以连接几个手机(小米音响可以连接手机热点WiFi么)

    小米音响可以连接几个手机(小米音响可以连接手机热点WiFi么)

  • 两个小爱同学能联机吗(两个小爱同学能联机一起放音乐吗)

    两个小爱同学能联机吗(两个小爱同学能联机一起放音乐吗)

  • gtx950能玩什么游戏

    gtx950能玩什么游戏

  • steam兑换码怎么用(steam兑换码怎么用手机版)

    steam兑换码怎么用(steam兑换码怎么用手机版)

  • ipad分屏大小怎么调整(ipad分屏大小怎么调整不了)

    ipad分屏大小怎么调整(ipad分屏大小怎么调整不了)

  • uc浏览器如何设置无痕浏览(uc浏览器如何设置电脑版)

    uc浏览器如何设置无痕浏览(uc浏览器如何设置电脑版)

  • 小米6触屏失灵一招解(小米6触屏失灵怎么关机)

    小米6触屏失灵一招解(小米6触屏失灵怎么关机)

  • layui-icon各种常用动态图标(layui iconfont)

    layui-icon各种常用动态图标(layui iconfont)

  • mysql间隙锁的用法(mysql的间隙锁与排他锁)

    mysql间隙锁的用法(mysql的间隙锁与排他锁)

  • Java之POI导出Excel(一):单sheet(poi java 导入导出)

    Java之POI导出Excel(一):单sheet(poi java 导入导出)

  • 城建税要减进项税吗
  • 征地费用应计入什么会计科目
  • 资产项目有
  • 现金流量表中支付的税费包括哪些
  • 民办美术高中有哪些
  • 交易性金融资产是什么意思
  • 房产过户的相关问题
  • 土地租赁合同交不交印花税
  • 企业发生什么
  • 所有的罚款都不能税前扣除吗
  • 高速公路通行费发票怎么开
  • 财务保证金怎么做分录
  • 单位发的奖金怎样交个税
  • 资产计税基础是怎么填
  • 企业进口葡萄酒税率多少
  • 房屋出租何时缴纳房产税?
  • win7原版系统安装后没有任何驱动
  • windows10如何关机
  • 计算工业总产值指数
  • 交易性金融资产公允价值变动怎么算
  • 供电企业收费项目管理的暂行规定
  • 设计费包含概算费用吗
  • php图片大小设置
  • 制造业企业预提短期借款利息
  • vue能实现什么
  • 蒙大拿州美景
  • phpmailer 使用
  • 收到车险发票含增值税吗
  • 自行建造厂房如何缴税
  • php读取数据输出html
  • 年报写歇业 可以写多久
  • c#创建web
  • 前端 自动化脚本 怎么写
  • 应付职工薪酬怎么冲平
  • 电子口岸报关单在哪下载
  • 异地预缴的附加税在申报税时会抵消掉么
  • python科学计算库有哪些
  • 所得税预缴申报表
  • access中宏的操作
  • sql语句自动执行
  • 资产减值损失的定义
  • 医院要发票
  • 分公司交总公司管理费怎么做账
  • 职工工资如何计算天数
  • 法院的申请执行费是多少
  • 公司员工餐费如何做账
  • 丢失的发票怎么查询
  • 工程分包总包产生的 税费由谁承担
  • 公司财务人员的作用
  • 同比增长怎么算出来的
  • 账簿的类型有哪几种
  • 工业企业生产什么
  • sqlserver开启远程
  • 删除数据库重复
  • 安装sql2000sp4提示挂起
  • 常用的sql语句有哪些
  • imac固态
  • CentOS 7.0.1406 正式版发布(附CentOS7下载地址)
  • ubuntu18.04启用root
  • xp系统超级终端机在哪
  • 如何创建一个wifi
  • win7右键没有
  • 系统导航栏已禁用怎么办
  • win10系统打不开应用程序
  • win7系统运行在哪
  • windows补丁kb3033929
  • win8怎么打开远程连接
  • javascript ?
  • android获取json数据
  • 环境变量windows
  • prize draw是什么意思
  • node.js操作文件
  • 创建ie浏览器
  • JavaScript中常用的数据类型有
  • PreferenceActivity、PreferenceFragment使用
  • Python的内置字典数据类型为___
  • 消费税的纳税义务的发生时间是如何规定的
  • 于开年 山东省国家税务局
  • 锦江区税务局搬迁新地址
  • 转租房子转租人需要签合同吗合法吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设