深入探索:GPT系列模型揭秘

news2024/9/20 22:38:10

Transformer发展 之 GPT系列模型结构

我按照Transformer的发展路线来学习入门

Transformer–BERT—GPT—DETR—ViT—Swin ViT / DeiT

上一篇写了Transformer,听了李宏毅和李沐老师的课一下子就懂了,今天学习GPT-123

核心思想:

GPT和BERT的区别
还在于目标函数的选取,GPT预测未来,BERT预测中间(完形填空)

GPT核心思想
:无标签文本数据预训练+有标签数据微调

GPT-2核心思想
:只用无标签数据进行预训练,让模型自己学会解决多任务问题

GPT-3核心思想
:不进行梯度更新或者微调,仅使用个别示例与模型进行文本交互,使用参数量更大的模型,大力出奇迹!!!


GPT

简单总结一下:

paper
:Improving Language Understanding by Generative Pre-Training

问题背景

无标签的文本很多,但是针对特定任务的有标签文本数据很稀少,导致针对特定任务来训练一个准确的模型很有挑战。

解决方法

在无标签数据上训练一个语言模型,在下游具体任务上用有标签数据进行微调

核心思想
:预训练+微调

主要步骤
:采用两段式训练。第一个阶段是利用语言模型进行预训练(无监督形式),第二阶段通过 Fine-tuning 的模式解决下游任务(监督模式下),有点类似于迁移学习

模型主要架构

1.无监督预训练:

假设输入一个无标签文本U,里面向量为u1…un,GPT使用一个语言模型来极大化这个似然函数,这个语言模型是12层的Transformer中Decoder部分堆叠在一起,这个似然函数(第一个式子)就是在这个语言模型下预测第i个词出现的概率,每次拿K(K为滑动窗口)个连续的词来预测K个词后面那个词的概率,然后选取概率最高的,就是下一个词最可能出现的。后面几个式子相当于Transformer的Decoder数学表达式,具体不懂看Transformer

2.微调:

当预训练后,作者将预训练好的参数直接迁移到下游任务中来。下游任务数据集表示为C,其中数据集中的每一个数据含有一系列的token:x1…xm,标签为y。将这些数据送到预训练好参数的transformer decoder中,将得到的结果用softmax进行分类,得到最后的结果。

作者发现,在做微调时,加入了两个损失函数,一个是预训练时的损失函数L1,一个是分类的损失函数L2。

3.具体任务:

在下游任务输入时,此处还加入了开始符,结束符,间隔符。

模型结构

是12层的Transformer-Decoder,并只保留了masked self-attention,这样做是为了保证只保留了masked self-attention,预测第k个词时,只能看见k-1个词的内容。

另外,作者在position encoding上做了调整,使用了可学习的位置编码,不同于transformer的三角函数位置编码

GPT-2

简单总结一下:

paper
:Language Models are Unsupervised Multitask Learners

问题背景

使用预训练+微调的方式虽然能解决带标签文本稀少的问题,但是在针对具体任务时,仍然是需要重新训练,泛化性比较差,不能广泛应用。

解决方法

与GPT-1不同,GPT-2彻底放弃微调阶段,仅通过大规模多领域的数据预训练,让模型在Zero-shot Learning的设置下自己学会解决多任务的问题语言模型.

核心思想
:在做到下游任务的时候,会用一个叫做zero-shot的设定,zero-shot是说,在做到下游任务的时候,不需要下游任务的任何标注信息,那么也不需要去重新训练已经预训练好的模型。这样子的好处是我只要训练好一个模型,在任何地方都可以用,实现从已知领域到未知领域的迁移学习。

模型主要架构

在输入方面:

为了实现zero-shot,下游任务的输入就不能像GPT那样在构造输入时加入开始、中间和结束的特殊字符,这些是模型在预训练时没有见过的,而是应该和预训练模型看到的文本一样,更像一个自然语言。

并且可以把输入构造成,翻译prompt+英语+法语;或问答prompt+文档+问题+答案,可以把前面不同的prompt当做是特殊分割符。

模型Demo

GPT2的文本生成能力很强大,有兴趣可以通过这个工具来体验一下

AllenAI GPT-2 Explorer(https://gpt2.apps.allenai.org/?text=Joel%20is)


GPT-3

简单总结一下:

paper
:Language Models are Unsupervised Multitask Learners

问题背景

1.每个子任务需要用相关的数据集做微调,因此相关数据集需要标注,否则很难取得不错的效果,而标注数据的成本又是很高的。

2.作者认为虽然fine tuning效果很好,但是还是需要很多标签数据,而且会导致模型学到一些虚假的特征,造成过拟合,使模型泛化性能变差。

解决方法

与GPT-1,GPT-2不同,GPT3在应用时不进行梯度更新或者微调,仅使用任务说明和个别示例与模型进行文本交互,并且使用更大的模型,大力出奇迹。

模型主要架构

明确地定义了用于评估 GPT-3 的不同设定,包括 zero-shot、one-shot 和 few-shot。

GPT提出了一种in-context learning的方法,就是给出任务的描述和一些参考案例的情况下,模型能根据当前任务描述、参数案例明白到当前的语境,即使在下游任务和预训练的数据分布不一致情况下,模型也能表现很好。注意的是,GPT并没有利用实例进行Fine-tune,而是让案例作为一种输入的指导,帮助模型更好的完成任务。

模型主要和GPT-2相同,区别在于 GPT-3 在 transformer 的各层上都使用了交替密集和局部带状稀疏的注意力模式,类似于 Sparse Transformer。

few-shot

在inference time,只给模型某个特定任务的说明和一些示例,但不进行权重更新

one-shot

在inference time,只给模型某个特定任务的说明和一个示例,不进行权重更新

zero-shot

在inference time,只给模型某个特定任务的说明,不给示例,不进行权重更新

最后,GPT系列的局限性也是前面提到的,只能往前看,不能双向学习。

Related:

GPT系列模型详解

笔记:李沐老师GPT系列讲解

沐神学习笔记:GPT,GPT-2,GPT-3

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

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

相关文章

服务器数据恢复—SAN环境下LUN被重复映射导致写操作不互斥的数据恢复案例

服务器存储数据恢复环境: 一台存储中有一组由6块硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器存储故障: 由于业务变化需要增加一台服务器,在存储在线的状态下将该存储中的某个LUN映…

打造沉浸式展厅空间,哪些高科技手段必不可少?

在人生的旅途中,我们或许会踏遍千山万水,将大地的壮丽景色尽收眼底。然而,总有一些地方,如同深邃的海底两万里,或是浩瀚无垠的宇宙银河,遥不可及,这时我们便可以在展厅的沉浸式空间中&#xff0…

Postman请求问题 connect ECONNREFUSED 127.0.0.1:80解决方法

问题描述: 解决方法: (1)点击file-settings (2)点击Proxy,并将右边的Use the system proxy 取消选中 (3)勾选use custom proxy configuration 这个8080是默认的&#xf…

MySQL学习(17):SQL编程:存储过程

1.什么是存储过程 存储过程是事先经过编译并存储在数据库中的一段 SQL语句的集合。 存储过程的特点: (1)封装,复用 (2)可以接收参数,可以返回数据 2.存储过程语法 2.1创建 create procedu…

查看Keepalived 的 VIP 有效、高可用、单播和组播

VIP(虚拟 IP) VRRP(Virtual Router Redundancy Protocol) 验证 VIP 是否有效 1、没有部署之前,PING要设置的VIP地址,不通 ping 10.119.108.602、部署之后,所有节点进行PING要设置的VIP地址&a…

代码实现yolov3主干网络,可以直接运行

1. 主干网head版本1 import torch from torch import nn import torch.nn.functional as F class ConvBnLeakRelu(nn.Module):def __init__(self,in_ch,out_ch,k3,s1):super().__init__()self.layernn.Sequential(nn.Conv2d(in_ch, out_ch, kernel_sizek, paddingk // 2,stride…

H264记录和翻译

官方中文文档: 📎H.264_ITU官方中文版.pdf 官方下载地址: https://www.itu.int/rec/T-REC-H.264/en JM源码: https://iphome.hhi.de/suehring/tml/download/ 博客参考学习:H.264官方软件JM源代码简单分析-解码器ld…

真免费!10 款必备的语言类 AI 大模型

好多小伙伴反映,买了好多AI工具,但并不好用,今天我给你推荐10个好用且免费的语言类AI大模型。 以后就别去花冤枉钱了。 排名不分先后。 各有所长,大家收藏自行去测试甄选适合自己的AI工具。 — 1 — 文心一言 文心一言是百度…

Android12 显示框架之getSurface

目录:Android显示终极宝典 在上篇文章中,我们讲到了应用通过createSurface()在surfaceflinger内生成了一个Layer,并且获取到了该Layer的Handle且将其和其他信息保存到了SurfaceControl。应用拿到了这个SurfaceControl,那么接下来…

uniapp APP端使用web-view,跳转回APP指定页面

URL Scheme 首先我一开始想到的是UrlSchemes,发现UrlSchemes不好实现就转为下面的方法 URL Scheme 是一种用于在移动应用程序中打开另一个应用程序或执行特定操作的机制。通过使用 URL Scheme,应用程序可以将用户重定向到其他应用程序或执行特定的任务…

大模型在自动驾驶领域是怎么应用的?最新综述一览

写在前面 大语言模型(LLMs)是在海量文本语料库上训练的人工智能模型,具备卓越的语言理解和生成能力,正在改变自动驾驶(AD)领域。随着自动驾驶系统从基于规则和优化的方法向基于学习的技术(如深…

关于企微群聊天工具功能的开发---PHP+JS+CSS+layui (手把手教学)

文章目录 前言准备工作PHP代码示例前端代码示例 主要是js踩的小坑&笔记最终达成的效果总结 前言 公司要求开发企微群聊天工具。首先一个客户一个群,其余群成员都是公司销售、设计师、工长、售后等人员。要求开发一个群聊天工具,工长点击进来以后就可…

selenium自动化代码报错“NoSuchElementException”——解决方案详解

假设自动化代码报错“NoSuchElementException”: 第一步:在报错的代码前,添加Thread.sleep(秒),设置的时间长一点。 第二步: 执行自动化,在自动化打开的页面里,打开前端开发者工具&#xff0c…

二百五十三、OceanBase——Linux上安装OceanBase数据库(三):OBD页面上部署OceanBase数据库

一、目的 安装OceanBase后,启动obd web,需要在OBD页面上部署OceanBase数据库 二、参考文档 http://t.csdnimg.cn/Qeedq 三、实施步骤 1 在obadmin用户下,启动obd服务,登录页面访问 [obadminhurys23 oceanbase]$ obd web 2 登…

AIGC重塑设施农业:让农事操作更智能,生产效率更高

设施农业是现代农业的重要组成部分,随着人工智能等前沿技术的快速发展,这个领域迎来了新的变革机遇。尤其是大语言模型(Large Language Model,LLM)技术的崛起,其强大的语言理解和知识汇聚能力,为设施农业智能化发展带来了新的想象空间。本文将深入探讨大模型技术在设施农业生产…

寝室恶性负载识别模块原理和功能

石家庄光大远通电气有限公司寝室恶性负载识别智能模块导轨式安装,采用局域网或者4G集中控制,在宿舍多回路中可以单独设置控制参数达到精细化管理。 原理:‌ 电压电流检测法:‌通过检测电路中的电压和电流,‌计算电路中…

网段划分(为什么+分类划分,CIDR),ip地址组成,路由器介绍,广播地址,DHCP,NAT技术,ipv6,如何申请网络

目录 网段划分 引入 ip地址的组成 同一网段内 不同的网段 路由器 ip地址的分配 DHCP技术 分类划分法 分组 弊端 CIDR(无类域间路由) 变长子网掩码 数据包转发 子网地址范围计算 两个特殊的ip地址 网络号 广播地址 作用 其他解决方…

学习Java的日子 Day62 Filter过滤器

Day62 Filter过滤器 简介 Filter:过滤器,通过Filter可以拦截访问web资源的请求与响应操作。 Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器。他可以拦…

数据结构——二叉树_堆

目录 一、堆的概念 二、堆的结构 三、性质 (1)堆的性质 (2)二叉树的性质 四、堆的实现 (1)头文件——Heap.h (2)源文件——Heap.c 1.堆的初始化 2.堆的销毁 3.向上调整算法 4.堆的插入 4.判断堆…