其中,Transformer和BERT来自Google,GPT系列【GPT、GPT-1、GPT-2、GPT-3、ChatGPT、GPT-4】来自OpenAI。

GPT

Paper名为Improving Language Understanding by Generative Pre-Training,通过生成式预训练模型来提高语言理解。

  • GPT,将Transformer的Decoder拿出来,在大量没有标注的文本数据上进行训练,得到一个大的预训练的语言模型。然后再用它在不同子任务上进行微调,最后得到每一个任务所要的分类器。
  • BERT虽然大家更为熟知,但其实发布晚于GPT,是将Transformer的Encoder拿出来,收集了一个更大的数据集做训练,取得了比GPT好很多的效果。BERT给了BERT-Base和BERT-Large两个模型,BERT-Base的模型大小与GPT相当,效果更好,BERT-large模型更大数据效果也更好,下图是BERT论文[1]中给出的一组对比数据。

我们知道,BERT中使用(1)扣取某个单词,学习完形填空(2)判断是否为下一句来学习句子的相关性,两个任务来使用海量数据进行训练。

在GPT中,训练分为无监督的预训练和有监督的微调,无监督的预训练使用标准语言模型,给定前i-1个单词,预测第i个单词;有监督的微调使用标准交叉熵损失函数。

针对不同的任务,只需要按照下列方式将其输入格式进行转换,转换为一个或多个token序列,然后送入Transformer模型,后接一个任务相关的线性层即可。

GPT-2

之前,大家倾向于为每个任务收集单独的数据集(single task training on single domain datasets),OpenAI在这篇文章中使用了zero-shot的设定来解决下游任务。

We demonstrate language models can perform down-stream tasks in a zero-shot setting -- without any parameters or architecture modification.

GPT的时候,针对不同的任务构造不同的输入序列进行微调,这里直接使用自然语言的方式训练网络并可以使用到不同的任务上去。

例如,对于一个机器翻译任务的训练样本【translation training example】为:

translate to french, english text, french text

对于阅读理解训练样本【reading comprehension training example】:

answer the question, document, question, answer

这种方法并不是作者首提的,但是作者将其用到了GPT的模型上,并取得了一个相对的效果【如果没有GPT-3的惊艳效果,估计它也就是一个不怎么被人所知的工作了】。

从GPT-2开始不再在子任务上做微调,直接使用预训练模型进行预测,这个是很牛掰的。

GPT-3

GPT-3基于GPT-2继续做,GPT-2有1.5Billion【15亿】的参数量,GPT-3做到了175Billion【1750亿】的参数量。

Specififically, we train GPT-3, an autoregressive language model with 175 billion parameters, 10x more than any previous non-sparse language model, and test its performance in the few-shot setting. For all tasks, GPT-3 is applied without any gradient updates or fine-tuning, with tasks and few-shot demonstrations specifified purely via text interaction with the model.

摘要中这里详述了,GPT-3参数量翻了10倍,同时推理的时候使用了few-shot。对于所有的子任务,都不进行梯度更新,而是纯使用few-shot的形式改变输入。

Finally, we find that GPT-3 can generate samples of news articles which human evaluators have diffificulty distinguishing from articles written by humans.

GPT-3取得了非常经验的效果,已经能够写出人类无法分辨真假的假新闻。

这里详述一下zero-shot、one-shot、few-shot:

  • zero-shot:推理时,输入包含:任务描述 + 英文单词 + prompt[=>]
  • one-shot:推理时,输入包含:任务描述 + 一个例子 + 英文单词 + prompt[=>]
  • few-shot:推理时,输入包含:任务描述 + 多个例子 + 英文单词 + prompt[=>]

Reference

[1] Devlin, Chang, Lee, and Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In ACL, 2019.

[2] Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. 2018. Improving language under standing with unsupervised learning. Technical report, OpenAI. [GPT]

[3] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. Language models are unsupervised multitask learners, 2019. [GPT-2]

[4] Brown, Tom B. et al. “Language Models are Few-Shot Learners.” ArXiv abs/2005.14165 (2020): n. pag. [GPT-3]

[5] 沐神 GPT,GPT-2,GPT-3 论文精读【论文精读】

三分钟速览GPT系列原理的更多相关文章

  1. js基础进阶--图片上传时实现本地预览功能的原理

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 前言 最近在项目上加一个图片裁剪上传的功能,用的是cropper插件,注意到选择本地图片后就会有预览效果,这里整理一下这种预览效 ...

  2. 4. OpenAI GPT算法原理解析

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  3. faster-rcnn系列原理介绍及概念讲解

    faster-rcnn系列原理介绍及概念讲解 faster-rcnn系列原理介绍及概念讲解2 转:作者:马塔 链接:https://www.zhihu.com/question/42205480/an ...

  4. socket 由浅入深系列------ 原理(一)

    来自:网络整理 个人觉得写一个网络应用程序没有是一件非常easy的事.其实,我们刚開始的时候总觉得的原则: 建立------>连接套接字------->接受一个连接---->发送数据 ...

  5. java并发编程系列原理篇--JDK中的通信工具类Semaphore

    前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类.主要有Semaphore.CountDownLatch.CyclicBarrier.exchanger.Phaser这几个通讯类 ...

  6. Java中map集合系列原理剖析

    看了下JAVA里面有HashMap.Hashtable.HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正 HashMap和Hashtable的区别 HashSet和Hash ...

  7. [目标检测]RCNN系列原理

    1 RCNN 1.1 训练过程 (1) 训练时采用fine-tune方式: 先用Imagenet(1000类)训练,再用PASCAL VOC(21)类来fine-tune.使用这种方式训练能够提高8个 ...

  8. Hive基础语法5分钟速览

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  9. Linux和Shell回炉复习系列文章总目录

    本页内容都是本人回炉Linux时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接右上角叉 ...

  10. 2. Attention Is All You Need(Transformer)算法原理解析

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

随机推荐

  1. Idea 配置 tomacat

    步骤 1.点击settings 2.创建tomcat 并找到tomcat的目录 添加完成 3.创建Idea项目

  2. sonar使用

    代码质量检查工具 sonar 1. 下载,版本sonar 4.5.1 运行bin下的bat文件,浏览器中访问: http://localhost:9000 , 成功. 2. 修改数据库为mysql数据 ...

  3. 项目实训DAY6

    今天主要的工作是把功能界面丰富了一下,查阅了一下论文,将页面中添加了可视化元素:同时决定了最后几天的工作计划.

  4. Django框架搭建web项目(一)

    建议查看官方文档:https://docs.djangoproject.com/zh-hans/4.0/intro/tutorial01/ 1.本地安装python环境(略) 2.本地安装Django ...

  5. Treewidget 节点的遍历

    父节点的遍历 // Treewidget遍历操作 // 只遍历父节点 int nParentNodeCount = ui->treeWidget->topLevelItemCount(); ...

  6. c 理解

    exit() 的含义:提前结束程序 .c 文件 return的含义 :提前结束函数,其所在行以下,整体大函数底花括号以上,2者之间的所有语句都不会被执行到,用它来提前结束程序. break的含义 :提 ...

  7. 2月28日Android开发学习

    界面显示与逻辑处理 Android Studio利用XML标记描绘应用界面,使用java代码书写程序逻辑. 把App界面设计与代码逻辑分开的好处 使用XML文件描述App界面,可以很方便地在Adroi ...

  8. python3GUI--200行代码写一个上课点名程序(附源码)

    @ 目录 一.准备工作 1.Tkinter 2.PIL 二.预览 1.启动 2.开始点名-顺序点名 3.开始点名-随机点名 4.手动加载人名单 5.开始点名-顺序点名-Pyqt5版本 6.人名单格式 ...

  9. MySQL核心知识

    MySQL常用的命令 启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库 ...

  10. PostgreSQL备份与恢复命令

    postgresql备份与恢复相关命令 --备份用户的数据库bct的所有内容pg_dump -U 用户名 -d 库名 -f xxxXXXxxx.sql--删除原有数据库dropdb -U 用户名 -f ...