位置: 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 固定滚动到底部,随着页面内容增多滚动条自己滚动展示最新的内容

  • ipad播放视频没有声音(ipad2020播放视频没有声音)

    ipad播放视频没有声音(ipad2020播放视频没有声音)

  • 手机怎么充电不伤电池(手机怎么充电不费电池)

    手机怎么充电不伤电池(手机怎么充电不费电池)

  • 主观镜头的作用(主观镜头是指)

    主观镜头的作用(主观镜头是指)

  • 并排显示窗口是灰色的(并排显示窗口是灰色的不能点击)

    并排显示窗口是灰色的(并排显示窗口是灰色的不能点击)

  • 单删加回来对方有提示吗(单删加回来对方聊天记录还在吗)

    单删加回来对方有提示吗(单删加回来对方聊天记录还在吗)

  • ip协议是可靠的吗(ip协议是可靠还是不可靠)

    ip协议是可靠的吗(ip协议是可靠还是不可靠)

  • 手机怎么填表格(手机怎么填表格文档)

    手机怎么填表格(手机怎么填表格文档)

  • vivo手机微信视频怎么美颜(vivo手机微信视频横屏怎么调竖屏)

    vivo手机微信视频怎么美颜(vivo手机微信视频横屏怎么调竖屏)

  • vue怎么给视频加字幕(怎么在vue视频添加马赛克)

    vue怎么给视频加字幕(怎么在vue视频添加马赛克)

  • 拼多多月卡每月自动扣费吗(拼多多月卡每月扣多少钱)

    拼多多月卡每月自动扣费吗(拼多多月卡每月扣多少钱)

  • 快手上限是多少赞(快手上限是多少粉丝)

    快手上限是多少赞(快手上限是多少粉丝)

  • 通过手机号怎么定位(通过手机号怎么查对方信息)

    通过手机号怎么定位(通过手机号怎么查对方信息)

  • 用苹果输入法怎么换行(苹果输入法怎么手写)

    用苹果输入法怎么换行(苹果输入法怎么手写)

  • 抖音怎么取消私密作品(抖音怎么取消私密状态)

    抖音怎么取消私密作品(抖音怎么取消私密状态)

  • qq怎样设置自动回复手机(QQ怎样设置自动发消息)

    qq怎样设置自动回复手机(QQ怎样设置自动发消息)

  • 微博id是微博名吗(微博id是微博昵称)

    微博id是微博名吗(微博id是微博昵称)

  • 拼多多为什么自动扣费(拼多多为什么自动退款)

    拼多多为什么自动扣费(拼多多为什么自动退款)

  • 苹果怎么用副卡打电话(苹果怎么用副卡发短信)

    苹果怎么用副卡打电话(苹果怎么用副卡发短信)

  • vue watch报错:Error in callback for watcher “xxx“: “TypeError: Cannot read properties of undefined ...(vue的watch不生效)

    vue watch报错:Error in callback for watcher “xxx“: “TypeError: Cannot read properties of undefined ...(vue的watch不生效)

  • 普罗旺斯瓦朗索勒高原上的薰衣草田,法国 (© Shutterstock)(“普罗旺斯”)

    普罗旺斯瓦朗索勒高原上的薰衣草田,法国 (© Shutterstock)(“普罗旺斯”)

  • HTML小游戏13 —— 仿《神庙逃亡》3D风格跑酷游戏《墓地逃亡》(附完整源码)(html游戏大全)

    HTML小游戏13 —— 仿《神庙逃亡》3D风格跑酷游戏《墓地逃亡》(附完整源码)(html游戏大全)

  • lpinfo命令  显示可用的设备或驱动程序(用ipconfig/all命令不能显示)

    lpinfo命令 显示可用的设备或驱动程序(用ipconfig/all命令不能显示)

  • 小规模纳税人减征额怎么计算
  • 如何查询开出的全电发票
  • 存续小微企业
  • 直接抵免和间接抵免的区别
  • 装修公司一般纳税人税率是多少啊
  • 增值税负数发票可以作废吗?
  • 商业承兑汇票托收凭证怎么做分录
  • 库存商品记错了怎样写分录
  • 私立医院整容效果都不行吗
  • 危废处置费用怎么开票
  • 减免税款怎么入账
  • 咨询费收入交什么税种
  • 建筑业的合理避税
  • 营改增实施过程中的难点
  • 会议费报销注意事项
  • 文化建设费的征收标准
  • 红字记账的四种登记方式
  • 公司注销后原有债权
  • 公司账上收到退回的多交的附加税怎么做
  • 小规模纳税人附加税会计分录
  • 如果辞职了,能一次性拿到钱吗?
  • 创业带动的就业是什么
  • 食堂伙食费账务处理
  • 有进项没有销项会计处理
  • 用商品抵账的会计分录
  • gitlab lint
  • 利润总额和净利润的区别
  • 几种方法解决一个问题的架构图怎么画
  • php抓取网页指定内容
  • 增值税中进项税额比对异常能作废申报吗
  • 计算土地增值税时增值额的扣除项目包括
  • 补交社保如何做账务处理
  • 税务登记 申报
  • 管理费用的会计编码
  • 应交增值税减免税款包括什么
  • 餐厅用的打包盒图片
  • 关系抽取系统的要求
  • 基础kl
  • point network
  • php绘制图形函数
  • 亏损弥补政策
  • discuz论坛无法登录
  • 小规模纳税人涉税会计分录是哪几个科目
  • PYTHON中使用什么符号表示单行注释
  • 公司出现质量问题员工怎么处理
  • 企业年报股东出资信息
  • 应收款和实收款区别
  • 员工实际工资
  • 利息应怎么录入收入
  • 企业计提坏账准备时应该借记什么科目
  • 处理交易性金融资产增值税买价含佣金吗
  • 政府会计计提折旧方法
  • 外汇增值税是怎样计算
  • 费用暂估是什么意思
  • 应付账款收不回发票该如何调整
  • 营业外收入的核算内容
  • 进项税转出怎样做账务处理
  • 预缴所得税会计分录怎么做东奥
  • 未认证的发票如何进项税转出
  • 先进先出法实际成本跟成本不一样吗
  • 怎么计算预缴及附加税额
  • 屠宰税属于什么税
  • win7 mysql5.7.21安装
  • linux如何安装c语言编译器
  • 用Windows Server Backup搞定服务器备份
  • Windows Server 2008网络中禁止迅雷下载
  • mac 电脑出现问题而重新启动
  • winxp回收站清空了怎么恢复
  • win8.1技巧
  • win10里的运行
  • windows10使用说明
  • win10多用户独立
  • Android游戏开发读后感
  • opengl画矩形函数
  • jquery获取滚动条位置
  • Android之Async-http
  • 如何搭建python项目架构
  • 从最近两会看苹果和谷歌的最大梦魇
  • 经营租赁属于什么费用
  • 公共卫生委员会领导小组
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设