我的创作纪念日兼GPT模型简单介绍

news2024/12/28 5:09:22

目录

一、引言

二、收获与开端

2.1 问题:在创作的过程中都有哪些收获?

2.2 模型开端

三、日常与深入

3.1 问题:当前创作和你的学习是什么样的关系?

3.2 模型深入介绍

3.2.1 无监督预训练

3.2.2 有监督下游任务精调

四、憧憬与应用

4.1 问题:你的创作规划和终极目标是什么?

4.2 适配不同的下游任务


一、引言

今天的文章比较特别,原因在于我想在其中尝试融入两个不同元素。一方面介绍自然语言处理中有关GPT模型的知识,另一方面简单谈谈自己的创作历程。下面的每一大节都将由这两方面组成。

二、收获与开端

2.1 问题:在创作的过程中都有哪些收获?

在培根的《谈读书》一文中有三句最为经典的话:“Reading maketh a full man; conference a ready man; and writing an exact man.”  我喜欢把他们翻译为:“读书使人丰富,辩论使人机敏,写作使人严谨。” 

细细品味,发现其中已经将创作的意义说得十分清楚,所以这里不在继续下去。

2.2 模型开端

OpenAI 公司在2018年提出了一种生成式预训练(Generative Pre Training,GPT)模型用来提升自然语言理解任务的效果,正式将自然语言处理带入“预训练”时代。
 
“预训练”时代意味着利用更大规模的文本数据以及更深层的神经网络模型学习更丰富的文本语义表示。同时,GPT的出现打破了自然语言处理各个任务之间的壁垒,使得搭建一个面向特定任务的自然语言处理模型不再需要了解非常多的任务背景,只需要根据任务的输入输出形式应用这些预训练语言模型,就能够达到一个不错的效果。因此,GPT提出了“生成式预训练+判别式任务精调”的自然语言处理新范式,使得自然语言处理模型的搭建变得不再复杂。
 
(1)生成式预训练:在大规模文本数据上训练一个高容量的语言模型,从而学习更加丰富的上下文信息;
(2)判别式任务精调:将预训练好的模型适配到下游任务中,并使用有标注数据学习判别式任务。
 
接下来将从两个部分介绍GPT模型。首先介绍GPT模型的基本结构及其预训练方法,然后介绍GPT模型在不同下游任务中的应用。

三、日常与深入

3.1 问题:当前创作和你的学习是什么样的关系?

创作与学习更多的应该是一种互补的关系。通过创作我们总结学习的内容,以便加深对知识的理解和技能的掌握;而学习是滋生创作的土壤,创作的灵感来源于学习,不断的学习使我们有能力可以继续创作。

3.2 模型深入介绍

3.2.1 无监督预训练

GPT的整体结构是一个基于Transformer的单向语言模型,即从左至右对输入文本建模,如下图所示:

GPT利用常规语言建模的方法优化给定文本序列 X=X_{1}\cdots X_{n}  的最大似然估计L^{PT}

式中,k表示语言模型的窗口大小,即基于k个历史词X_{i-k}\cdots X_{i-1}预测当前时刻的词X_{i} θ 表示神经网络模型的参数,可使用随机梯度下降法优化该似然函数。
 
具体地,GPT使用了多层Transformer作为模型的基本结构。对于长度为k的窗口词序列{X}'=X_{-k}\cdots X_{-1},通过以下方式计算建模概率 P:

式中, e_{​{X}'}\in \mathbb{R}^{k\times |V|}表示 x′ 的独热向量表示; W^{e}\in {R}^{|V|\times d}表示词向量矩阵;W^{p}\in {R}^{n\times d}表示位置向量矩阵(此处只截取窗口 x′ 对应的位置向量);L表示Transformer的总层数。

3.2.2 有监督下游任务精调

在预训练阶段,GPT利用大规模数据训练出基于深层Transformer的语言模型,已经掌握了文本的通用语义表示。精调(Fine-tuning)的目的是在通用语义表示的基础上,根据下游任务(Downstream task)的特性进行领域适配,使之与下游任务的形式更加契合,以获得更好的下游任务应用效果。接下来,将介绍如何将预训练好的GPT应用在实际的下游任务中。
 
下游任务精调通常是由有标注数据进行训练和优化的。假设下游任务的标注数据为C,其中每个样例的输入是X=X_{1}\cdots X_{n}构成的长度为n的文本序列,与之对应的标签为y。首先将文本序列输入预训练的GPT中,获取最后一层的最后一个词对应的隐含层输出 h_{n}^{[L]},如下面的式子所示。紧接着,将该隐含层输出通过一层全连接层变换,预测最终的标签。

式中,W^{y}\in {R}^{d\times k}表示全连接层权重,k表示标签个数。
 
最终,通过优化以下损失函数精调下游任务。
 

另外,为了进一步提升精调后模型的通用性以及收敛速度,可以在下游任务精调时加入一定权重的预训练任务损失。这样做是为了缓解在下游任务精调的过程中出现 灾难性遗忘 (Catastrophic Forgetting)问题。因为在下游任务精调过程中,GPT的训练目标是优化下游任务数据上的效果,更强调特殊性。因此,势必会对预训练阶段学习的通用知识产生部分的覆盖或擦除,丢失一定的通用性。通过结合下游任务精调损失和预训练任务损失,可以有效地缓解灾难性遗忘问题,在优化下游任务效果的同时保留一定的通用性。在实际应用中,可通过下式精调下游任务。

式中, L^{FT}表示精调任务损失; L^{PT}表示预训练任务损失;λ表示权重,通常λ的取值介于[0,1]。特别地,当λ=0时, L^{PT}一项无效,表示只使用精调任务损失L^{FT}优化下游任务。而当λ=1时,L^{PT}L^{FT}具有相同的权重。在实际应用中,通常设置λ=0.5,因为在精调下游任务的过程中,主要目的还是要优化有标注数据集的效果,即优化 。
 
L^{PT}的引入主要是为了提升精调模型的通用性,其重要程度不及L^{FT},因此设置 λ=0.5是一个较为合理的值(不同任务之间可能有一定的区别)。

四、憧憬与应用

4.1 问题:你的创作规划和终极目标是什么?

我是一个比较惫懒的人,没有什么明确的创作规划。具体来说,当某一个时间端突然对一个领域感兴趣时,我会根据自己的学习情况创作文章。文章可能是自己的心得体会、对某一种技术的看法或者笔记等等。至于终极目标,对一个懒散的人来说,先写满100篇文章吧。

4.2 适配不同的下游任务

由于不同任务之间的输入形式各不相同,应如何根据不同任务适配GPT的输入形式成为一个问题。本节介绍自然语言处理中几种典型的任务在GPT中的输入输出形式,其中包括:单句文本分类、文本蕴含、相似度计算和选择型阅读理解,如下图所示。

 

(1)单句文本分类。单句文本分类是最常见的自然语言处理任务之一,其输入由单个文本构成,输出由对应的分类标签构成。假设输入为X=X_{1}\cdots X_{n},单句文本分类的样例将通过如下形式输入GPT中。

式中,<s>表示开始标记;<e>表示结束标记。
 
(2)文本蕴含。文本蕴含的输入由两段文本构成,输出由分类标签构成,用于判断两段文本之间的蕴含关系。需要注意的是,文本蕴含中的前提(Premise)和假设(Hypothesis)是有序的,即在所有样例中需要使用统一格式,两者顺序必须固定(前提在前或者假设在前)。
 
假设文本蕴含的样例分别为X^{(1)}=X_{1}^{(1)}\cdots X_{n}^{(1)}X^{(2)}=X_{1}^{(2)}\cdots X_{m}^{(2)},其将通过如下形式输入GPT中。

 

式中,$表示分隔标记,用于分隔两段文本;n和m分别表示X^{(1)}X^{(2)}的长度。
 
(3)相似度计算。相似度计算任务也由两段文本构成。但与文本蕴含任务不同的是,参与相似度计算的两段文本之间不存在顺序关系。假设相似度计算的样例分别为X^{(1)}=X_{1}^{(1)}\cdots X_{n}^{(1)}X^{(2)}=X_{1}^{(2)}\cdots X_{m}^{(2)},其将通过如下形式输入GPT中,得到两个相应的隐含层表示。最终将这两个隐含层表示相加,并通过一个全连接层预测相似度。

(4)选择型阅读理解。选择型阅读理解任务是让机器阅读一篇文章,并且需要从多个选项中选择出问题对应的正确选项,即需要将〈篇章,问题,选项〉作为输入,以正确选项编号作为标签。
 
根据上述任务形式,假设篇章为p=p_{1}\cdots p_{n},问题为q=q_{1}\cdots q_{m},第i个选项为c^{(i)}=c_{1}^{(i)}\cdots c_{k}^{(i)},并假设N为选项个数,其将通过如下形式输入GPT中。

将〈篇章,问题,选项〉作为输入,通过GPT建模得到对应的隐含层表示,并通过全连接层得到每个选项的得分。最终,将N个选项的得分拼接,通过Softmax函数得到归一化的概率(单选题),并通过交叉熵损失函数学习。
想深入学习相关知识的读者,可以参考作者的其他文章。
 

reference:

GPT-3模型简单介绍_gpt3模型_云隐雾匿的博客-CSDN博客

 

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

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

相关文章

自动驾驶产业链躁动,四维图新能否做好新时代“Tier 1”?

自动驾驶行业的“劲风”又来了。 6月21日,工信部副部长辛国斌在国务院政策例行吹风会上表示,将启动智能网联汽车准入和上路通行试点,他强调,“这里面讲的是L3级,及更高级别的自动驾驶功能商业化应用”。此前工信部曾透…

C#实现低耦合读卡

我们经常要给用户实现读卡查询。有很多种读卡器,每个厂商的接口也不同。归纳为两类,一类是感应式读卡,卡片接触上去就读出数据。一种是触发式的,程序调用读卡方法,硬件再进入读卡轮询。对应触发式的只能加按钮触发了&a…

技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别

Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能…

不要再纠结了!看完这篇,你就能秒懂webpack、vite、rollup三者间差异!

前端打包工具webpack、vite、rollup的区别及使用 webpack、vite、rollup的区别webpack、vite的区别为什么vite比webpack打包快?为什么有人会说vite慢?首屏问题懒加载问题解决方案注意点 webpackwebpack打包过程webpack打包原理第一次冷启动慢的原因热更新…

在yolov5源码中添加注意力机制

yolov5源码中添加注意力机制 1 项目环境配置1.1 yolov5 源码下载1.2 创建虚拟环境1.3 安装依赖 2 常用的注意力机制2.1 SE 注意力机制2.2 CBAM 注意力机制2.3 ECA 注意力机制2.4 CA 注意力机制 3 添加方式3.1 修改 common.py 文件3.2 修改 yolo.py 文件3.3 修改 yolov5s.yaml 文…

易查分如何导入数据?这个最关键的要点别忽略

我们在使用易查分制作查询系统时,偶尔会遇到Excel文件没有办法正常上传的情况。这个问题困扰着许多老师,他们不知道该如何解决。今天我想和大家讨论一下,易查分导入数据时最常出现错误的原因,其中这个要点最关键,但很多…

谷歌Bard入门指南

文章目录 谷歌Bard入门指南一、简介二、使用指南三、中文化3.1 中文提问3.2 中文回答 四、Hello Game五、亮点 谷歌Bard入门指南 一、简介 Bard 是一个大型语言模型,也称为对话式 AI 或聊天机器人,经过训练,内容丰富且全面。Bard 接受过大量…

Mysql——》哈希索引

推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

接口测试-postman,JMeter与LoadRunner比较

目录 JMeter与LoadRunner比较 JMeter缺点 一.创建测试用例集、子集 二.创建测试用例 三.设置变量 四.添加响应处理 五.批量执行测试用例 总结: postman是一个谷歌出的轻量级的专门测试接口的小工具~(PS:postman包括两种:C…

PostgreSQL如何根据执行计划进行性能调优?

EXPLAIN命令 PG中EXPLAIN命令语法格式如下: EXPLAIN [(option[,...])] statement EXPLAIN [ANALYZE] [VERBOSE] statement该命令的options如下: ANALYZE [boolean]VERBOSE [boolean]COSTS [boolean]BUFFERS [boolean]FORMAT {TEXT | XML | JSON | YAM…

【UnityDOTS 十】DynamicBufferComponent介绍

DynamicBufferComponent 前言 DynamicBufferComponent 作为一种特殊的组件存在,可以作为一种非托管内存下可动态调整带下的数组容器组件。 一、DynamicBufferComponent是什么? DynamicBufferComponent也是组件的一种。 需要关注的是内部指针&#xf…

spring使用01

① 导入 Spring 开发的基本包坐标 ② 编写 Dao 接口和实现类 ③ 创建 Spring 核心配置文件 ④ 在 Spring 配置文件中配置 UserDaoImpl ⑤ 使用 Spring 的 API 获得 Bean 实例 第一步&#xff1a;创建maven的web骨架 然后&#xff0c;导入 Spring 开发的基本包坐标 <depe…

工资10K,副业20K,这届程序员搞副业真野

最近刚完成了一个远程外包项目工作&#xff0c;钱刚到账&#xff0c;小金库又添了一笔&#xff1a; 从一开始的15K死工资&#xff0c;到现在的主业副业一共25K收入&#xff0c;最近的经济压力小了很多&#xff0c;终于也有闲钱和老婆去旅旅游&#xff0c;升级一下外设&#xff…

平板电脑的触控笔有必要买吗?平价电容笔排行榜

伴随着ipad的流行&#xff0c;部分学习党开始从传统的纸笔教学向无纸化教学转变。于是&#xff0c;原本属于苹果专利的电容笔&#xff0c;一下子就火了起来&#xff0c;不少人都对这个价格接近一千块钱的电容笔产生了浓厚的兴趣。我想&#xff0c;苹果电容笔特有的的“重力压感…

MySQL数据库基础(二):DDL,DML,DQL

六、DDL数据库操作 1、MySQL的组成结构 注&#xff1a;我们平常说的MySQL&#xff0c;其实主要指的是MySQL数据库管理软件。 一个MySQL DBMS可以同时存放多个数据库&#xff0c;理论上一个项目就对应一个数据库。如博客项目blzhujianog数据库、商城项目shop数据库、微信项目wec…

OpenCV创建一张类型为CV_8UC3的3通道彩色图像

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp>int

[MySQL]MySQL库的操作

[MySQL]MySQL库的操作 文章目录 [MySQL]MySQL库的操作1. 创建数据库2. 字符集和校验规则2.1. 基本概念2.2. 查看系统默认字符集以及校验规则2.3. 查看数据库支持的字符集2.4 查看数据库支持的校验规则2.5 指明字符集和校验规则创建数据库2.6 校验规则对数据库的影响 3. 删除数据…

经典轻量级神经网络(1)MobileNet V1及其在Fashion-MNIST数据集上的应用

经典轻量级神经网络(1)MobileNet V1及其在Fashion-MNIST数据集上的应用 1 MobileNet V1的简述 自从2017年由谷歌公司提出&#xff0c;MobileNet可谓是轻量级网络中的Inception&#xff0c;经历了一代又一代的更新。 MobileNet 应用了Depthwise 深度可分离卷积来代替常规卷积…

【hadoop】Google的基本思想

Google的基本思想 三架马车GFS分布式文件系统的核心架构和原理机架感知 MapReduce计算模型PageRank问题MapReduce BigTable 三架马车 Google的基本思想主要有三个&#xff0c;称之为三架马车&#xff0c;分别是GFS&#xff08;Google File System&#xff09;、MapReduce计算模…

gitlab/gerrit

gitlab/gerrit 1. gitlab2. gerrit2.1 环境准备2.2 下载软件2.3 创建启动账户2.4 安装gerrit2.5 创建登录账户2.6 启动服务2.7 修改配置文件2.8 配置反向代理(nginx)2.9 gerrit主页 3. gitlabgerrit3.1 配置gerrit replication功能&#xff08;用于复制具体项目&#xff09;3.2…