GPT语言模型

news2024/11/24 22:43:15
GPT:GPT采用了大量的无监督的数据进行预训练(Pre-training),并在有监督的数据上进行微调(Fine-tuning)来做具体的NLP的任务。
    结构:GPT使用了12层12头,单向transformer的decoder部分,编码出来的向量768维
    1.GPT中所使用的transformer的decoder部分相比较transformer的decoder少了一层全局的attention和残差标准化。
        全局的attention是为了关联编码器和解码器,但是GPT没有解码器,因此去掉。
    2.为什么不用encoder而用decoder?
        因为decoder第一层用了遮蔽的self-attention,形成了天然的语言模型。
    3.transformer是编解码模型,怎么做特征提取?
        transform不能做特征提取,但是把它拆开看,单看tranform的encoder、decoder都可以做特征提取。
    4.为什么GPT不用双向,而用单向?
        GPT当中一定不能用双向,第一层的遮蔽多头self-attention,因为已经把后边遮蔽掉了,如果用双向,那就又使得模型看到后边的信息。
    GPT:不能证明通过语言训练所得到的词向量,一定比通过分类训练的词向量好。

GPT:

GPT采用了大量的无监督的数据进行预训练(Pre-training),并在有监督的数据上进行微调(Fine-tuning)来做具体的NLP的任务。

在NLP当中标注的数据是少量的,而未标注的数据是大量的,如果只用有监督的数据的话,肯定达不到很好的效果,因为要充分的利用无监督的数据,并且在其中提取大量的信息,并提取特征。

GPT提出的动机:

1.现实世界中,无标签的文本语料库非常巨大,而带有标签的数据则显得十分匮乏,如何有效利用无标签的原始文本,对缓解自然语言处理相关任务对有监督学习方式的依赖显得至关重要。

2.有效的从无标签文本中利用超单词级信息有两个主要的难点:
无法确定什么样的优化目标能学到最有效的文本表征,使之更好的用于迁移目的
②对于学习到的文本表征,采用何种方式将其迁移到目标任务上,目前尚无共识。

3.论文中提出了半监督的方式来做语言理解,也就是无监督的pre-train,和有监督的fine-tune。该方法首先利用无监督的pre−train模型,学习到更加普遍、更适用的表征,然后模型以很小的微调迁移到众多特定的有监督学习任务上。在实验效果上,大幅超过了众多任务的state-of-art。不同于word Embedding、ELMo 以无监督的方式学习到一些特征,然后利用这些特征喂给一些特定的有监督模型,这里是先无监督的pre−train模型,然后直接fine-tune预训练后的模型,迁移到一些特定的有监督任务上。

4.ELMo方法中,训练基于LSTM的双向语言模型能结合上下文内容学习到语义更丰富的词表征,而本论文中预训练的语言模型中使用了transformer(Masked Multi-Head Attention,单向)结构,相对而言,transformer更加鲁棒,在长距离依赖上的效果更好,迁移效果也更好。

5.适用场景:无标签样本量(只有X)远大于有标签样本量的数据集(同时有X,y),如果只用这少量的带标签样本训练出的模型泛化能力肯定比较弱,这个时候我们可以先用无标签样本(也就是只用X)预训练好一个语言模型,然后在该语言模型基础上用少量带标签的样本(同时有X,y)进行fine-tune,有监督的训练。

GPT 训练过程分为两个阶段:第一个阶段是 Pre-training 阶段,主要利用大型语料库完成非监督学习;第二阶段是 Fine-tuning,针对特定任务在相应数据集中进行监督学习,通过 Fine-tuning 技术来适配具体任务。

上图中,每一层的所有Trm属于一个自左向右的单向transformer,故在embedding输入和上一层的输出到下一层的输入时,都会做self attention操作,而这个self attention操作相当于当前位置cell会结合上一层所有位置的状态信息,这样就相当于双向连接了,因此需要乘以一个mask矩阵,用来屏蔽当前位置后面的位置的隐藏层状态信息。这是transformer decoder的一个关键。如果不做这样的一个屏蔽操作,那么就变成双向的了。

预训练阶段

从上图我们可以看出,GPT 采用 Transformer 来代替 LSTM 作为特征提取器,并基于语言模型进行训练。这里只使用了 Transformer 的 Decoder 部分,并且每个子层只有一个 Masked Multi Self-Attention(768 维向量12 个 Attention Head)和一个 Feed Forward,共叠加使用了 12 层的 Decoder。

这里简单解释下为什么没有用decoder中的encoder-decoder attention:语言模型是利用上文预测下一个单词的,因为 Decoder 使用了 Masked Multi Self-Attention 屏蔽了单词的后面内容,所以 Decoder 是现成的语言模型。又因为没有使用 Encoder,所以也就不需要 encoder-decoder attention 了。

GPT 输入文本和位置 Embedding(采用使用 one-hot 编码),经过 12 层的 Transformer 的 Decoder 后通过 Softmax 得到输出:

 

 

预训练时的代价函数:

 

其中,k是上下文窗口的大小,P为条件概率,Θ 为条件概率的参数,参数更新采用 SGD。

微调:

 

实战中其他任务微调的使用:

 

上图是对不同任务进行微调的输入转换。将所有的结构化输入转换为 Token 序列,然后使用预训练模型(Transformer)进行处理,最后使用线性和 Softmax 层完成特定的监督学习任务。

对于文本蕴涵(Text Entailment)来说,作者将前提 p 和假设 h 令牌序列连接起来,并使用分隔符($)分开。

对于句子相似(Similarity)来说,为了消除两个句子之间的内在的顺序,作者以不同顺序合并了两个句子并以分隔符进行分割,然后独立地处理每一种顺序并得到两个句子的表征,对两个句子进行元素求和后送给 Linear 层。

对于问答和常识推理来说,有上下文文档 z 、问题 q 和可能答案的集合{ ak },作者将上下文和问题与每个可能的答案连接起来并在中间添加分隔符令牌 $ 得到。每个序列都将由模型独立处理,然后通过 Linear 层和 Softmax 层,从而在可能的答案上产生一个输出分布。

 

 

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

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

相关文章

2001-2020年全国31省城镇居民人均可支配收入/居民实际收入水平

1、时间区间为:2001-2020年 2、范围包括:全国31省 3、基期:以2001年为基期 4、来源:国家统计J 5、指标包括: 城市居民消费价格指数(上年100)、城镇居民人均可支配收入(元)、实际可支配收入(2001年为基…

LabVIEW开发LabVIEW类

LabVIEW开发LabVIEW类 从概念上来说,LabVIEW面向对象编程和其它面向对象编程语言相似。但由于LabVIEW是数据流图形化编程环境,LabVIEW对类数据的操作和交互,以及LabVIEW类代码的调试方法和其它语言有所不同。 LabVIEW中的对象由值来传递&a…

02【SpringMVC的工作流程】

文章目录二、SpringMVC的工作流程2.1 SpringMVC的三大组件2.1.1 HandlerMapping:2.1.2 HandlerAdapter:2.1.3 ViewResolver:2.2 SpringMVC源码分析2.2.1 准备工作2.2.2 查看DispatcherServlet的继承体系:2.2.3 通过映射器获取执行…

工业机械设备设计与艺术设计

众所周知,外观设计是目前工业设计的一种,也是展示产品外观性能的最佳途径。如果外观设计做得好,产品可以在第一时间吸引顾客。说到外观设计,我们不得不说,工业机械的外观设计,因为机械工业是工业设计的主要…

Java客户关系系统(含源码+论文+答辩PPT等)

该项目采用技术Struts2代理注解反射MyBatisjqueryjscss等技术,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍: 系统管理:用户登录、用户退出 员工管理:主要实现对员工的增、删、查、改功能 客户信…

ZMQ之面向服务的可靠队列(管家模式)

管家模式协议(MDP)在扩展PPP协议时引入了一个有趣的特性:client发送的每一个请求都有一个“服务名称”,而worker在像队列装置注册时需要告知自己的服务类型。MDP的优势在于它来源于现实编程,协议简单,且容易…

孩子到底是食物过敏?还是食物不耐受?

虾蟹过敏,牛奶过敏,鸡蛋过敏,甚至花生过敏……近年来,儿童食物过敏的发病率逐年上升。食物过敏对儿童危害很大,其临床症状会使儿童患病,影响身心健康;长期禁食,影响均衡营养摄入&…

Segger RTT深度使用说明-移植-Jlink rtt viewer显示-输出到Secure CRT

简介 RTT( Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都支持RTT。RTT既可以从MCU上输出信息、也可以向应用程序发送信息,由于其高速的特性,所以不影响MCU的实…

重磅消息:Lazada和Shopee通过中国执照就可以开通本地店铺,享受更多的流量和资源扶持

目前Lazada平台是可以做跨境店和本地店铺的,跨境店铺指的是中国卖家通过国内的营业执照开店,本地店指的是东南亚本地的商家提供个人身份证或当地的营业执照开的店铺,那么有什么区别和优劣势 1.跨境店/本地店开店所需资料 跨境店&#xff1a…

横向的Excel输出为pdf自动分成两页怎么办?不分页,铺满整张纸的方法来了

我们工作中有时候会需要把Excel转换成pdf,一般我们用WPS的“输出为pdf”功能就可以转了。但是有些横向的Excel转换的时候,会自动分成两页,这并不是我们想要的效果。怎么才能不分成两页呢? 首先我们有一个Excel: 使用…

什么牌子蓝牙耳机通话质量好?通话质量好的蓝牙耳机推荐

蓝牙耳机作为手机的最佳伴侣,已经成为老百姓日常生活必备。每次有大品牌发布新款蓝牙耳机,几乎都能够得到很好的反响,蓝牙耳机不仅在音质上有了很大的提升,并且在其他功能也在不断的提升,使用蓝牙耳机通话避免不了电话…

m基于matlab的光通信误码率仿真,分别对比了OFDM+BPSK和OFDM+4QAM的误码率和星座图

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 光通信系统中,QAM调制应用广泛,因为其利用幅度和相位同时传递i信息,提高了频带利用率。目前,最高阶数的QAM已达到1024-QAM即星座图有1024个点…

网站风格变黑白的方法,用css或javascript方法将网站改为灰色

如何把网站颜色去掉?用下面的方法即可 1.通用方法 body { -webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter: grayscale(100%);filter: gray; }html {-webkit-filter: grayscale(10…

harbor私有仓库部署

一、Harbor的概念 Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker Registry服务 Harbor以 Docker 公司开源的Registry 为基础,提供了图形管理UI、基于角色的访问控制(Role Based AccessControl)、AD/LD…

python习题004--使用python实现ATM机效果

相信每一个人在日常生活中使用ATM机的次数不少,尤其是现在微信支付,支付宝支付的普及,就需要用到ATM机并将现金存入银行卡内。 接下来我就使用python并结合面向对象的知识编写一个简易的ATM机存取款的效果【仅供参考】。 题目 简易的ATM机…

K8S-1.18.20高可用集群之部署集群监控系统kube-prometheus插件

K8S-1.18.20高可用集群之部署集群插件-KUBE-PROMETHEUS插件 一、简介 kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件: The Prometheus Operator Highly available Promet…

某车app登录参数分析

目标app: Y29tLmNoZTE2OC51Y2RlYWxlcg== 抓取登录包如下: 提交的data参数: _appid (app标识,固定值) _sign(加密) appversion(app版本,固定值) channelid(固定值) pass (密码加密) udid (加密) user (手机号) 共有_sign、 pass、udid三处加密, 其中_sign预估md5加密, pa…

XShell与XFtp的安装及简单使用

目录 XShell的安装 XFtp的安装 测试XShell和XFtp XShell的安装 1、完成解压后如下,所示 2、双击exe文件进行安装 3、选中免费为家庭/学校 (因为XShell的商业版和免费版功能是一样的,区别在于可以开启的窗口数量的不同) 4、勾选 …

RK3588移植-ffmpeg交叉编译

文章目录1.下载ffmpeg2.交叉编译3.修改cmakelist.txt4.将lib文件复制到install目录下的lib目录5.测试文件6.运行测试样例7.错误n.测试文件源码1.下载ffmpeg git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg 2.交叉编译 进入下载目录,将ffmpeg编译成arm64平台…

【菜菜的sklearn课堂笔记】聚类算法Kmeans-重要参数n_clusters

视频作者:菜菜TsaiTsai 链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili n_clusters是KMeans中的k,表示着我们告诉模型我们要分几类。这是KMeans当中唯一一个必填的参数,默认为8类,但通…