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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode hot100_day20

4/14/2024 128.最长连续序列 自己的 这是前两天做一半的题目了。这题给我的教训就是用哈希表的时候一定一定要考虑重复元素的问题!!!! 这题让我想到了最长递增子序列,只是名字有点像。子序列和子数组还不一样一个连续…

【HCIP学习】OSPF协议基础

一、OSPF基础 1、技术背景(RIP中存在的问题) RIP中存在最大跳数为15的限制,不能适应大规模组网 周期性发送全部路由信息,占用大量的带宽资源 路由收敛速度慢 以跳数作为度量值 存在路由环路可能性 每隔30秒更新 2、OSPF协议…

错误分析 (Machine Learning研习十九)

错误分析 您将探索数据准备选项,尝试多个模型,筛选出最佳模型,使用 Grid SearchCV微调其超参数,并尽可能实现自动化。在此,我们假设您已经找到了一个有前途的模型,并希望找到改进它的方法。其中一种方法就…

第九届少儿模特明星盛典 全球赛推广大使『武家翔』精彩回顾

2024年1月30日-2月1日,魔都上海迎来了龙年第一场“少儿形体行业美育春晚”!由IPA模特委员会主办的第九届少儿模特明星盛典全球总决赛圆满收官!近2000名少儿模特选手从五湖四海而来,决战寒假这场高水准,高人气&#xff…

uni-app学习

目录 一、安装HBuilderX 二、创第一个uni-app 三、项目目录和文件作用 四、全局配置文件(pages.json) 4.1 globalStyle(全局样式) 导航栏:背景颜色、标题颜色、标题文本 导航栏:开启下拉刷新、下拉背…

Axure实现导航栏的展开与收缩

Axure实现导航栏的展开与收缩 一、概要介绍二、设计思路三、Axure制作导航栏四、技术细节五、小结 一、概要介绍 使用场景一般是B端后台系统需要以导航栏的展开与收缩实现原型的动态交互,主要使用区域是左边或者顶部的导航栏展开与收缩,同一级导航下的小…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务。 JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MOM 是 MessageOriented Middleware 的英文缩写&am…

Servlet测试1

通过按钮提交get,post请求,并且后端响应数据,显示到前端 当点击get按钮时 是发起Get请求 后端接收到Get请求后,把数据写入到body内 当点击pst按钮时 是发起Post请求 后端接收到Post请求后,把数据写入到body内 之后前端就从bod…

Python 物联网入门指南(七)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第二十四章:基本开关 到目前为止一定是一段史诗般的旅程!回想一下你开始阅读这本书的时候,你是否曾想象…

HarmonyOS开发实战:【亲子拼图游戏】

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式益智拼图游戏,可以两台设备同时开启一局拼图游戏,每次点击九宫格内的图片,都会同步更新两台设备的图片位置。效果图如下: 说明: 本示例涉及使…

项目管理利器 Git

一、序言 今天聊聊 Git。 二、开发的问题 在开发项目时,我们的代码都是直接放在本地的机器上的。如果本地机器出现了问题,怎么办?在企业中,开发项目都是团队协作,一个团队共同维护一个项目该如何处理?团…

C++11(下篇)

文章目录 C111. 模版的可变参数1.1 模版参数包的使用 2. lambda表达式2.1 Lambda表达式语法捕获列表说明 2.2 lambda的底层 3. 包装器3.1 function包装器3.2 bind 4. 线程库4.1 thread类4.2 mutex类4.3 atomic类4.4 condition_variable类 C11 1. 模版的可变参数 C11支持模版的…

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列,该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

自定义类似微信效果Preference

1. 为自定义Preference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

vue:如何通过两个点的经纬度进行距离的计算(很简单)

首先假设从api获取到了自己的纬经度和别人的纬经度 首先有一个概念需要说一下 地球半径 由于地球不是一个完美的球体&#xff0c;所以并不能用一个特别准确的值来表示地球的实际半径&#xff0c;不过由于地球的形状很接近球体&#xff0c;用[6357km] 到 [6378km]的范围值可以…

Python-VBA函数之旅-eval函数

目录 一、eval函数的常见应用场景&#xff1a; 二、eval函数安全使用注意事项&#xff1a; 三、eval函数与exec函数对比分析&#xff1a; 1、eval函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;ht…

RAG (Retrieval Augmented Generation) 结合 LlamaIndex、Elasticsearch 和 Mistral

作者&#xff1a;Srikanth Manvi 在这篇文章中&#xff0c;我们将讨论如何使用 RAG 技术&#xff08;检索增强生成&#xff09;和 Elasticsearch 作为向量数据库来实现问答体验。我们将使用 LlamaIndex 和本地运行的 Mistral LLM。 在开始之前&#xff0c;我们将先了解一些术…

文献学习-37-动态场景中任意形状针的单目 3D 位姿估计:一种高效的视觉学习和几何建模方法

On the Monocular 3D Pose Estimation for Arbitrary Shaped Needle in Dynamic Scenes: An Efficient Visual Learning and Geometry Modeling Approach Authors: Bin Li,† , Student Member, IEEE, Bo Lu,† , Member, IEEE, Hongbin Lin, Yaxiang Wang, Fangxun Zhong, Me…

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…

Golang | Leetcode Golang题解之第27题移除元素

题目&#xff1a; 题解&#xff1a; func removeElement(nums []int, val int) int {left, right : 0, len(nums)for left < right {if nums[left] val {nums[left] nums[right-1]right--} else {left}}return left }