GPT 浅析

GPT 浅析

文章目录

  • GPT 浅析
    • GPT 1
      • 无监督预训练
      • 有监督微调
      • 任务相关的输入变换
    • GPT2
    • GPT3

GPT 1

在模型架构上,GPT-1基于Transformer构造,这是因为与其他卷积神经网 络或者循环神经网络相比,Transformer提供了效率更高的方法来处理文本 中的长期依赖关系。

预训练技术:GPT-1使用了一种称为“生成式预训练”(Generative Pre-Training,GPT)的技术。预训练分为两个阶段:预训练和微调(fine-tuning)。

在预训练阶段,GPT-1使用了大量的无标注文本数据集,例如维基百科和网页文本等。通过最大化预训练数据集上的对数极大似然概率来训练模型参数。在微调阶段,GPT-1将预训练模型的参数用于特定的自然语言处理任务,如文本分类和问答系统等。

多层模型:GPT-1模型由多个堆叠的Transformer编码器组成,每个编码器包含多个注意力头和前向神经网络。这使得模型可以从多个抽象层次对文本进行建模,从而更好地捕捉文本的语义信息。

无监督预训练

给定一个无监督的语料数据集 U = { u 1 , u 2 , . . . , u n } \mathbf{U}=\{\boldsymbol{u}_1,\boldsymbol{u}_2,...,\boldsymbol{u}_n\} U={u1,u2,...,un}, GPT-1使用标准的语言模型进行训练,也就是最大化如下似然估计:

L 1 ( U ) = ∑ i l o g P ( u i ∣ u i − k , . . . , u i − 1 ; θ ) L_1(\mathbf{U})=\sum_ilogP(\boldsymbol{u}_i|\boldsymbol{u}_{i-k},...,\boldsymbol{u}_{i-1};\boldsymbol{\theta}) L1(U)=ilogP(uiuik,...,ui1;θ)
其中, k k k 表示上下文窗口的大小,P表示条件概率, θ \theta θ是网络的参数,采用梯度下降法进行训练。

GPT-1使用一个多层Transformer解码器进行语言建模,该模型对输入上 下文使用多头自注意力机制,然后使用前馈神经网络预测目标单词的概 率分布,建模过程如下:
h 0 = U W e + W p h l = t r a n s f o r m e r _ b l o c k ( h l − 1 ) P ( U ) = s o f t m a x ( h n W e T ) \begin{aligned} \boldsymbol{h}_0&=\boldsymbol{UW}_e+\boldsymbol{W}_p\\ \boldsymbol{h}_l&=transformer\_block(\boldsymbol{h}_{l-1})\\ P(\boldsymbol{U})&=softmax(\boldsymbol{h}_n\boldsymbol{W}_e^T) \end{aligned} h0hlP(U)=UWe+Wp=transformer_block(hl1)=softmax(hnWeT)
其中, W e W_e We是一个单词向量矩阵, W p W_p Wp是位置向量矩阵, U U U 表示输入文本的上下文向量, n n n​是网络层数。

有监督微调

在使用上述方法进行预训练之后,GPT-1采用有监督微调方法将参数调整到更适合下游任务的状态

假设现在有某个有标记的样本集 C C C,其中每个样本由一系列的输入单词 { x 1 , x 2 , . . . , x m } \{x^1,x^2,...,x^m\} {x1,x2,...,xm}和一个标签 y y y组成,那么输入单词序列首先被送入在前一个阶段预训练好的模型中得到一个状态向量 h l m h_l^m hlm,接着被送入一个线性层进行结果预测:
P ( y ∣ x 1 , x 2 , . . . , x m ) = s o f t m a x ( h l m W y ) P(y|x^1,x^2,...,x^m)=softmax(h_l^mW_y) P(yx1,x2,...,xm)=softmax(hlmWy)
基于此,有监督微调阶段的目标函数就是:
L 2 ( C ) = ∑ ( x , y ) l o g P ( y ∣ x 1 , x 2 , . . . , x m ) L_2(\mathbf{C})=\sum_{(x,y)}logP(\mathbf{y}|\mathbf{x}^1,\mathbf{x}^2,...,\mathbf{x}^m) L2(C)=(x,y)logP(yx1,x2,...,xm)
与此同时,GPT-1的设计人员发现,在有监督微调阶段将语言模型作为微调的辅助目标能够进一步提升模型的泛化能力,并且可以加速收敛帮助学习。最终,在有监督微调阶段,模型的训练目标变为:
L 3 ( C ) = L 2 ( C ) + λ × L 1 ( C ) \begin{aligned}L_3(\mathbf{C})=L_2(\mathbf{C})+\lambda\times L_1(\mathbf{C})\end{aligned} L3(C)=L2(C)+λ×L1(C)
其中 λ \lambda λ是权重系数。

任务相关的输入变换

对于像文本分类一样的任务,可以按照上述有监督微调阶段所提到的方法进行微调,但是像问答、文本蕴含等自然语言理解任务,则需要在输 入阶段进行相应的设计和修改,才可以将GPT模型进行应用。

在微调阶段,所有任务的输入都增加了特殊的Token作为输入的开始 [start]和结束[extract]。

  • 对于文本分类任务,将起始和终止token加入到原始序列两端,输入transformer中得到特征向量,最后经过一个全连接得到预测的概率分布

  • 对于文本蕴含任务,设计者将前提和假设进行拼接,然后在二者之间增 加了一个特殊标记“Delim” 。

  • 对于文本相似度计算任务,由于被计算相似度的两个句子之间没有前后顺序关系,所以对同一对数据进行了不同顺序的拼接,最后使用线性化得到相似度得分。特别地,输入时两个句子之间增加了特殊标记 “Delim” ,用来区分前后两个句子。

  • 对于多项选择的问答任务,将每个候选答案与问题和原文片段进行拼接, 得到相应的向量表示,最后使用Softmax函数在候选答案范围中进行结 果概率预测。

image-20240415235312343

在模型实现细节上,GPT-1很大程度上遵循了原始的Transformer工作模式, 训练了一个具有掩码自注意力机制的12层仅包含解码器的Transformer。对 于前馈神经网络,使用了3072维的内部状态,使用最大学习率为2.5×10-4 的Adam优化方案。

GPT2

GPT-2提供了一种更为灵活和通用的形式来指定任务、输入和输出,避免了算法级别的任务定制。如在机器翻译任务中,模型的输入可以被设定为 “请翻译为法语、英语原文内容、对应法语内容”;在机器阅读理解任务 中,训练样本可以被写成“问题的答案、问题、原文、答案” 。

GPT-2的思想本质上就是早期的指令微调(Prompt Finetuning)方法,这种做法可以使得模型学习在遇到类似的提示语之后,应该输出什么样的内 容。

在模型实现上,GPT-2仍然使用Transformer作为主干模型,与GPT-1的整体架构类似,只进行了少量修改,包括层归一化被移到每个块的输入部分, 起到类似预激活的作用,在最终的自注意力块之后又增加了额外的层归一化,同时Transformer的Decoder层数从GPT-1的12层增加到了24层、36 层和48层。

GPT3

GPT-3的主要目标是使用更少的领域数据,且不经过微调去解决问题。它沿用GPT-2的模型和训练方法,将模型参数大小从GPT-2的15亿个升级到1750亿。

在几十个自然语言处理数据集上对GPT-3进行了评估,包括三种设置:

  1. 零样本学习(Zero-shot Learning):不允许展示具体的任务样本,只告知模型自然语言表示的指令;
  2. 单样本学习(One-shot Learning): 只允许向模型展示一个样本;
  3. 小样本学习(Few-shot Learning): 允许尽可能多的向模型展示样本(大概在10-100个之间)。

在开发GPT-3的过程中,研究人员发现,模型增大之后,引入一些质量较差的数据带来的负面影响变小了,因此与GPT-1和GPT-2相比,GPT-3开始使用Common Crawl数据集进行训练。

image-20240416090215933

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#使用PaddleOCR进行图片文字识别✨

PaddlePaddle介绍✨ PaddlePaddle(飞桨)是百度开发的深度学习平台,旨在为开发者提供全面、灵活的工具集,用于构建、训练和部署各种深度学习模型。它具有开放源代码、高度灵活性、可扩展性和分布式训练等特点。PaddlePaddle支持端…

大世界基尼斯见证辉煌,云仓酒庄首届酒类培训新高度诞生

近日,一场规模盛大的酒类培训盛会,在云仓酒庄的精心组织下圆满落幕。此次培训活动以其卓着的成果和盛大的规模,创下了大世界基尼斯纪录,为酒类培训领域树立了新的标杆。这一成就的取得,背后是云仓酒庄团队无数的心血与…

【JAVA进阶篇教学】第一篇:JDK8介绍

博主打算从0-1讲解下java进阶篇教学,今天教学第一篇:JDK8介绍。 Java 8 引入了许多令人兴奋的新特性,其中包括 Lambda 表达式、Stream API、函数式接口、方法引用、默认方法等。下面我将为您详细介绍这些新特性,并提供相应的代码…

代码随想录刷题随记22-回溯2

代码随想录刷题随记22-回溯2 216.组合总和III leetcode链接 注意与之前的题目不同的是需要求和。从左到右的范围尝试模型。 class Solution { public:void backtrace(vector<vector<int>> &ret,int k,int n,int index,vector<int>& path,int &…

【XR806开发板试用】软件模拟IIC驱动OLED显示图片自己遇到的坑

前言 首先&#xff0c;非常感谢极术社区和全志举办此次开发板申请试用活动。由于自己水平太低&#xff0c;拿到板子后不知道要干点啥&#xff0c;偶然看见一个大佬写的I2C外设使用及控制OLED屏显示&#xff0c;文章中使用了硬件IIC控制OLED&#xff0c;正好我手里也有一块OLED…

【ElasticSearch】安装

1.官网寻找合适版本下载 这里我选择的是8.11.1 2.解压并启动 然后在浏览器输入http://localhost:9200/&#xff0c;判断是否启动成功 如下所示&#xff0c;则表示启动成功 安装过程中遇到过几个bug&#xff0c;记录在这篇文章中 【ElasticSearch】安装&#xff08;bug篇&am…

MySQL——基础

SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。 SQL 通用语法 SQL语句可以单行或多行书写&#xff0c;以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库…

mysql使用逗号分隔的一行数据转多行数据

文章目录 学习链接准备建表插入数据 方法MySQL逗号拼接的列拆分为多行&#xff08;不使用mysql.help_topic&#xff09;遇到字段以逗号分隔符分号分隔符存放多个值&#xff0c;需要一行转化多行&#xff0c;以用来关联&#xff08;使用mysql.help_topic&#xff09;改为LEFT JO…

git 上传代码到 github

准备工作 git Git LFS&#xff08;大文件>100Mb&#xff09; git 参考手册 github 建立仓库&#xff1a;New repository git 指令 git add . 用于将当前目录下的所有文件添加到 Git 仓库的暂存区中。 git add . 命令会将当前目录下的所有文件添加到 Git 仓库的暂存区中…

五、流程控制之循环

目录 5.1 步进循环语句for 5.1.1 带列表的for循环语句 5.1.2 不带列表的for循环语句 5.1.3 类C风格的for循环语句 5.2 while循环语句 5.2.1 while循环读取文件 5.2.2 while循环语句示例 5.3 until循环语句 5.4 select循环语句 5.5 嵌套循环 5.1 步进循环语句for for…

如何使用ArcGIS Pro进行路径分析

路径分析是一种空间分析技术&#xff0c;用于确定两个或多个地点之间最佳路径或最短路径&#xff0c;这里为大家介绍一下在ArcGIS Pro中如何进行路径分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的道路数据&#xff0c;除了道路数据&a…

大厂面试:获取字符串的全排列

一、概念 现有一个字符串&#xff0c;要打印出该字符串中字符的全排列。例如输入字符串abc&#xff0c;则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 可以基于回溯法来解决这个问题。 二、代码 public class Permutation {//输出字符串str的全…

【自媒体创作利器】AI白日梦+ChatGPT 三分钟生成爆款短视频

AI白日梦https://brmgo.com/signup?codey5no6idev 引言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI在各个领域都展现出了强大的应用潜力。其中&#xff0c;自然语言处理技术的进步使得智能对话系统得以实现&#xff0c;而ChatGPT作为其中的代表之一…

【Linux】磁盘阵列RAID技术

目录 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 1.2 为什么要使用RAID技术&#xff1f; 二、RAID级别 2.1 常见的RAID级别 2.2 常见RAID介绍 三、RAID特性对比 一、RAID介绍 1.1 什么是RAID技术&#xff1f; 把多块独立的物理磁盘按不同的方式组合起来形成一个硬盘…

人工智能讲师大模型培训老师叶梓:基于大型语言模型的自主智能体:架构设计与应用前景

在人工智能的快速发展中&#xff0c;大型语言模型&#xff08;LLM&#xff09;已成为推动技术进步的关键力量。LLM的出现不仅改变了我们与机器的交互方式&#xff0c;也为构建具有高级认知能力的自主智能体&#xff08;AI Agent&#xff09;提供了新的可能性。本文旨在探讨基于…

(非技术) 基因遗传相关知识学习笔记

目录 一、基因遗传名词解释 二、什么叫显性遗传和隐性遗传&#xff1f; 三、如何确定遗传性质呢&#xff1f;是显性还是隐性&#xff1f; 四、常规例子1&#xff1a; 五、常规例子2&#xff1a; 六、实际案例&#xff1a; 七、思考题&#xff1a; 八、参考&#xff1a; …

云计算: OVN 集群 部署分布式交换机

目录 一、实验 1.环境 2.OVN 集群 部署云主机 3.中心端添加DVS分布式大二层交换机 二、问题 1.南向控制器查看主机名只显示localhost 2.中心端如何添加DVR分布式⼤三层路由器 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件主要服务IP备注ovn_central中心端 ovn…

【Linux】基础I/O>文件系统软硬链接动静态库详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.C语言文件接口 1.1 hello.c写文件 1.2 hello.c读文件 1.3 输出信息到显示器 1.4 stdin & stdout & stderr 1.5 总结打…

Android Framework学习笔记(3)----Binder

什么是Binder&#xff1f; Binder是linux IPC机制的其中一种。它贯穿于应用层&#xff0c;framework层&#xff0c;以及linux Core层。 什么是IPC? 跨进程通信&#xff0c; InterProcess Communication. IPC机制都有哪些&#xff1f; 通道信号量消息队列BinderSocket共享内…

从IPv4到IPv6:解密网络通信的新时代

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 从IPv4到IPv6&#xff1a;解密网络通信的新时代 前言ipv4介绍ipv6介绍IPv4与IPv6的区别IPv4地址枯竭问题和IPv6的解决方案 ipv6的优势IPv6在新兴技术领域的应用 ipv4向ipv6的过渡挑战解决方案IPv6部署…