深度学习:GPT1、GPT2、GPT-3

深度学习:GPT1、GPT2、GPT3的原理与模型代码解读

  • GPT-1
    • Introduction
    • Framework
      • 自监督学习
      • 微调
    • Experiment
  • GPT-2
    • Introduction
    • Approach
    • Conclusion
  • GPT-3

请添加图片描述

GPT-1

Introduction

GPT-1(Generative Pre-training Transformer-1)是由OpenAI于2018年发布的第一个基于Transformer模型的预训练语言模型。GPT-1主要针对的是生成型NLP任务,如文本生成、机器翻译、对话系统等。

在当时nlp领域没有一个像ImageNet那样的很大的数据集,而且一句字所含有的语义信息远不如一张图像的语音信息丰富,制作一个在nlp领域与imagenet 语义相当的数据集就需要很大的代价。

所以作者的想法是能不能通过 un-labeled的数据数据集 pre-train好一个通用的模型然后在各个细分领域进行微调。在这期间,作者发现两个问题:

  1. 训练通用的模型不知道选择什么优化目标。
  2. 不知道以哪种形式的output来适配所有的下游任务。

GPT的模型作者主要采用Transformer的decoder架构,由于它相较于rnn可以一次性读取更长的句子,容纳更多的语义信息。

Framework

自监督学习

首先介绍LOSS,在自监督训练期间训练标准语言模型,通过最大化最大化下面的likelyhood,其中 u为token的集合,条件概率P采用模型参数为 theta的模型建模。
在这里插入图片描述
在前向传播的过程中,首先通过词嵌入与位置嵌入获得h0,其中we为token嵌入矩阵,wp为位置嵌入矩阵,然后通过12层transformer块,输入输出保持一致,然后通过softmax获得logits。
在这里插入图片描述

微调

保存之前阶段训练的参数,在上述结构的基础上,去掉softmax层,然后加上一层全连接层与特定任务的softmax,然后用有标签的数据集训练,在这期间,半监督学习的参数可以选择处于冻结状态,然后只更新新的全连接层参数。 Loss function 采用 半监督阶段与微调阶段的加权和。

下面是作者给定的各个任务微调的模版:

在这里插入图片描述

Experiment

在这里插入图片描述

GPT-2

Introduction

GPT-2在初代的模型架构上变得更大了,参数量达到了1.5B,数据集改为百万级别的WebText,Bert当时最大的参数数量为0.34B,但是作者发现模型架构与数据集都扩大的情况下,与同时期的Bert的优势并不大。

作者提到在当时主流的方法就是在特定的任务上使用特定的数据集,模型跨任务之间的任务泛化性不是特别好,于是作者着重讲了Zero-Shot这个概念。
Zero-shot是指 GPT-2在训练语言模型时与GPT-1的方法一致(文字接龙),只是在模型结构上做了略微的调整,层数与维度做了更大了。在做下游任务时,不再进行微调,最后作者通过实验发现,只进行简单的Zero-Shot,就能与同时期微调后的模型性能相差不大。

Approach

GPT2是在预训练时就考虑各种不同的任务(就是在训练样本中加入了下游任务的相关描述)
在这里插入图片描述
,即从:

在这里插入图片描述

在模型结构上,调整了每个block Layer Normalization的位置:
在这里插入图片描述

Conclusion

GPT-2的最大贡献是验证了通过海量数据和大量参数训练出来的词向量模型有迁移到其它类别任务中而不需要额外的训练。但是很多实验也表明,GPT-2的无监督学习的能力还有很大的提升空间,甚至在有些任务上的表现不比随机的好。尽管在有些zero-shot的任务上的表现不错,但是我们仍不清楚GPT-2的这种策略究竟能做成什么样子。GPT-2表明随着模型容量和数据量的增大,其潜能还有进一步开发的空间,基于这个思想,诞生了我们下面要介绍的GPT-3。

GPT-3

GPT3 可以理解为 GPT2 的升级版,使用了 45TB 的训练数据,拥有 175B 的参数量,真正诠释了什么叫暴力出奇迹。

GPT3 主要提出了两个概念:

情景(in-context)学习:就是对模型进行引导,教会它应当输出什么内容,比如翻译任务可以采用输入:请把以下英文翻译为中文:Today is a good day。这样模型就能够基于这一场景做出回答了,其实跟 GPT2 中不同任务的 token 有异曲同工之妙,只是表达更加完善、更加丰富了。

Zero-shot, one-shot and few-shot:GPT3 打出的口号就是“告别微调的 GPT3”,它可以通过不使用一条样例的 Zero-shot、仅使用一条样例的 One-shot 和使用少量样例的 Few-shot 来完成推理任务。下面是对比微调模型和 GPT3 三种不同的样本推理形式图。
在这里插入图片描述

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

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

相关文章

从0到1深度学习环境搭建

目录第一步:安装anaconda第二步:创建一个虚拟环境试一下第三步:确定cuda算力,配置cudapytorch官网找版本pycharm配置pycharm进行设置setting 能够打开conda的shell终端如何给下载的项目设置合适的环境如果必须要低版本的pytorch才…

智驾芯片“性价比之王”凭何抢滩增量市场?

未来几年,智能驾驶功能将进入跨越式升级的阶段,同时L2将快速普及,L2进入集中放量的阶段。 包括自动泊车 (APA)、家庭区域记忆泊车 (HAVP)、交通拥堵辅助 (TJA)、高速辅助驾驶 (HWA)、自动辅助导航驾驶 (NOA) 等在内的功能已为普通车主耳熟能…

美颜sdk的动态面具、3D面具实现流程

在美颜sdk的实现中,面具是很重要的一个部分,不管是动态面具还是3D面具都需要实现的,我们在开发中常用的是动态面具和3D面具。但是两种面具有很多不同之处,比如制作材料、制作方式等等。在这里我们先来了解一下动态面具和3D面具是如…

8个不能错过的程序员必备网站,惊艳到我了!!!

程序员是一个需要不断学习的职业,不少朋友每天来逛CSDN、掘金等网站,但一直都抱着“收藏从未停止,学习从未开始”的态度,别骗自己了兄弟。在编程体系中,有很多不错的小工具,可以极大得提升我们的开发效率。…

电容在微分、积分电路中的本质以及应用

很多朋友觉得PID是遥不可及,很神秘,很高大上的一种控制,对其控制原理也很模糊,只知晓概念性的层面,知其然不知其所以然,那么本期从另类视角来探究微分、积分电路的本质,意在帮助理解PID的控制原…

第十四届蓝桥杯三月真题刷题训练——第 21 天

目录 第 1 题:灭鼠先锋 问题描述 运行限制 代码: 思路: 第 2 题:小蓝与钥匙 问题描述 答案提交 运行限制 代码: 思路 : 第 3 题:李白打酒加强版 第 4 题:机房 第 1 题&#xff1…

存储专题扩容,HA、LB分布式存储

一、架构与存储的关系一个新的硬盘在linux系统里使用一般来说就三步:(分区,格式化)-挂载-使用blocklvs:四层负载均衡,nginx、haproxy四层和七层都有redis、memcache缓存中间件是缓存后端数据库读的信息。高端的容器技术,一旦系统出现可以可以直接重装系统…

【springboot】读写分离:

文章目录一、mysql主从复制(从库可以有多个):【1】提前准备好两台服务器,分别安装Mysql并启动成功【2】配置---主库Master【3】配置---从库Slave【4】克隆的虚拟机导致mysql主从UUID一致怎么修改:【5】测试二、读写分离…

springboot学生综合测评系统

031-springboot学生综合测评系统演示录像2022开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件&…

uniapp封装各个时间方法

难点:在项目中我们经常会用到时间转换或时间比对加减问题为了方便很多页面去调用时间方法,我把时间方法封装成了公共方法1.首先在根目录创建文件夹与pages平级,我这里创建了plugins文件夹2.其次在plugins文件夹下面创建index.js文件&#xff…

LeetCode题解 20(17,79) 电话号码的字母组合,单词搜索<回溯>

文章目录电话号码的字母组合(17)代码解答单词搜索(79)代码解答电话号码的字母组合(17) 思路: 根据题意我们必须根据数字获取对应的字符数组,因此我们先定义1个字符数组表示这个电话表 private String[] letters {"","","abc","…

C语言例程:学生成绩管理程序

学生成绩管理程序 实例说明 编制一个统计存储在文件中的学生考试分数的管理程序。设学生成绩以一个学生一条记录的 形式存储在文件中,每个学生记录包含的信息有姓名、学号和各门功课的成绩。要求编制具有以 下几项功能的程序:求出各门课程的总分&#…

Redis单线程还是多线程?IO多路复用原理

目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的?1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清…

cron表达式 详解

corn表达式是:由若干数字、空格、符号按一定的规则,组成的一组字符串,从而表达时间的信息。 好像和正则表达式有点类似哈,都是一个字符串表示一些信息。Cron 表达式生成器: https://www.smart-tools.cn/cron简介Cron 表…

部署私有npm 库

使用verdacciohttps://verdaccio.org/安装verdaccio使用npm全局安装npm install -g verdaccio安装完成以后,输入verdaccio -h出现如下相关提示,说明verdaccio安装成功。运行verdaccio直接执行verdaccio出现如下相关提示,说明verdaccio启动成功…

【OJ比赛日历】快周末了,不来一场比赛吗? #03.25-03.31 #12场

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注!更多比赛信息见 CompHub主页 或 点击文末阅读原文以下信息仅供参考,以比赛官网为准目录2023-03-25&…

React 入门(超详细)

目录前言:一、React 简介1. 什么是 React2. React 的特点3. React 高效的原因4. React 官网5. React的主要原理6. Facebook为什么要建造React?二、React 的基本使用1. 基础代码2. 效果3. 相关 js 库4. 创建虚拟DOM的两种方式5. 虚拟DOM与真实DOM6. 虚拟DOM与真实DO…

Linux命令运行原理shell和bash

目录前言什么是shell,什么是bash?ls -l 执行过程前言 学习操作系统的过程中我们经常在自己的shell中执行一些Linux命令,那么当我们输入一个类似于 ls -a 这样的命令式,发生了什么? 换句话说,从我们在shell中输入ls -a 按下回车…

基于深度学习的瓶盖检测系统(Python+YOLOv5深度学习模型+清新界面)

摘要:基于深度学习的瓶盖检测系统用于传送带或日常场景中瓶盖检测识别,提供实时瓶盖检测定位和计数,辅助瓶盖生产加工过程的自动化识别。本文详细介绍基于深度学习的瓶盖检测系统,在介绍算法原理的同时,给出Python的实…

E - 积木画(状态压缩DP)

E - 积木画(状态压缩DP) 1、问题 E - 积木画 2、分析 这道题很明显是一道DP题,而且是一个简化版的状态压缩DP。 (1)状态表示 f[i][j]f[i][j]f[i][j]表示前面i−1i-1i−1已经摆好,并且第iii列的状态是j…