三分钟速览gpt系列原理(代码片段)

iSherryZhang iSherryZhang     2023-03-28     721

关键词:

其中,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 论文精读【论文精读】

五分钟,让你明白mysql是怎么选择索引《死磕mysql系列六》(代码片段)

一网打尽MySQL的各种锁系列文章一、如何选择索引影响优化器的几大因素扫描行数从何而来?为什么优化器选择了扫描行数多的索引?二、索引选择异常如何处理三、总结系列文章二、一生挚友redolog、binlog《死磕MySQL系列... 查看详情

扒源码系列:gpt/gpt-2中proj的作用(代码片段)

事情是这样的。前两天翻译了一篇文章图解GPT-2。在翻译的过程中为了防止自己出错,所以参考了一下其他人对于GPT的一些理解,然后就出错了,为了解决这个错误,导致我最后重新扒了一遍GPT-2的源码,在这里跟大家分享一下... 查看详情

linux固件开发|几分钟看透gpt分区(代码片段)

一、GPT分区结构图二、保护MBR保护MBR包含一个DOS分区表(LBA0),只包含一个类型值为0xEE的分区项,在小于2TB的磁盘上,大小为整个磁盘;在更大的磁盘上,它的大小固定为2TB。它的作用是阻止不能识别GPT分区的... 查看详情

编译原理系列实验三自下而上语法分析(代码片段)

系列第三弹!目录实验三自下而上语法分析实验目的题目源程序实验结果实验三自下而上语法分析实验目的给出PL/0文法规范,要求编写PL/0语言的语法分析程序。通过设计、编制、调试一个典型的自下而上语法分析程序,实现对... 查看详情

图学习初探paddlegraphlearning构建属于自己的图系列三(代码片段)

...图学习温故以及初探PaddleGraphLearning(PGL)构建属于你的图【系列三】相关项目参考:图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习 查看详情

androidjetpacklifecycle组件原理剖析(代码片段)

Jetpack源码分析系列:AndroidJetpack(一)Lifecycle组件原理剖析AndroidJetpack(二)ViewModel组件原理剖析AndroidJetpack(三)LiveData组件原理剖析Jetpack介绍Jetpack是一系列组件的集合,用于帮助开发者更加 查看详情

unity多平台原生sdk接入速览:qq互联(代码片段)

ZeroyiQ:Unity多平台原生SDK接入速览(一):微信开放平台ZeroyiQ:Unity多平台原生SDK接入速览(三):FacebookZeroyiQ:Unity多平台原生SDK接入速览(四):TwitterZeroyiQ:Unity多平台原生SDK接入速览(五):微博一、前言QQ互联,当前(2... 查看详情

stm32f103五分钟入门系列(十四)窗口看门狗wwdg(代码片段)

学习板:STM32F103ZET6参考:STM32F103五分钟入门系列(十三)独立看门狗IWDG窗口看门狗一、窗口看门狗(WWDG)简介1、什么是窗口看门狗2、窗口看门狗原理3、窗口看门狗与独立看门狗区别4、窗口看门狗应用... 查看详情

一款能“干掉”chatgpt的应用「github热点速览」(代码片段)

据说有了它,ChatGPT就可以靠边站了。因为Auto-GPT能更加主动地完成你给他的指定任务,不用做更多的人为干涉,它的推理能力比ChatGPT更强,有人用它解放双手做了个React网站。当然除了升级的Auto-GPT之外,还有DeepSpeed,它能极大... 查看详情

玩转gpt--在线文本生成项目[可入坑~科普系列](代码片段)

文章目录前言效果页面说明文字个数top_KTop_Ptemperature聊天上下文关联记忆项目部署获取项目获取模型运行彩蛋总结前言没办法,最近ChatGPT杀疯了,没忍住,还是想look,look。没办法,哪个帅小伙能够忍受的了... 查看详情

arm裸机开发:gpt定时器(代码片段)

...目录ARM裸机开发:GPT定时器一、硬件平台:二、原理分析2.1GPT定时器简介2.2GPT有关寄存器2.2.1GPT配置寄存器2.2.2GPT分频寄存器2.2.3GPT状态寄存器2.2.4GPT计数寄存器2.3GPT使用步骤三、程序编写四、实验现象ARM裸机开发:GPT... 查看详情

三分钟创建一个小程序-每天三分钟玩转小程序1(代码片段)

点击上方“编程三分钟”,马上关注,每周1、3、5定时更新。好险,还有几分钟,差点没有赶上周五的尾巴。这次带来的是1.小程序开发前的准备,非常的简单,让我们花三分钟创建一个小程序!1.注册账号访问微信公众平台网... 查看详情

chatgpt/instructgpt论文(代码片段)

文章目录一.GPT系列1.in-contextlearning(情景学习)二.ChatGPT背景介绍(Instruct?Align?社会化?)三.InstructGPT的方法四.InstructGPT工作的主要结论五.总结六.参考链接一.GPT系列基于文本预训练的GPT-1,GPT-2,GPT-3三代模... 查看详情

速览常见类型(代码片段)

🚀【TypeScript入门手册】记录了出场率较高的Ts概念,旨在帮助大家了解并熟悉Ts🎉本系列会持续更新并更正,重点关照大家感兴趣的点,欢迎同学留言交流,在进阶之路上,共勉!🙏star本项目... 查看详情

速览常见类型(代码片段)

🚀【TypeScript入门手册】记录了出场率较高的Ts概念,旨在帮助大家了解并熟悉Ts🎉本系列会持续更新并更正,重点关照大家感兴趣的点,欢迎同学留言交流,在进阶之路上,共勉!🙏star本项目... 查看详情

stm32f103五分钟入门系列(十三)独立看门狗iwdg(代码片段)

学习板:STM32F103ZET6独立看门狗一、独立看门狗(IWDG)简介1、什么是看门狗2、独立看门狗应用场合二、独立看门狗时钟三、独立看门狗的相关寄存器(1)键寄存器(IWDG_KR)(2)预分频寄存器(IWDG_PR)(... 查看详情

大数据入门-五分钟读懂hive(代码片段)

目录大数据入门系列文章一、概念二、架构三、表分类四、Hive常用语句1.Hive建表语句2.Hive新增列3.Hive删除列4.Hive修改列5.Hive清空表6.Hive加载数据7.HDFS删除文件操作五、存储格式1.Textfile2.RCFile3.ORCFile4.Parquet六、大白话七、其他大... 查看详情

5分钟入门javascript队列(queue)数据结构javascript数据结构与算法系列(代码片段)

本文目录一、什么是JavaScript队列数据结构二、创建一个JavaScript队列数据结构三、封装队列方法①向队列添加元素②检查队列是否为空③获取队列的长度④从队列移除元素⑤查看队列头元素⑥清空队列⑦创建toString方法四、使用Qu... 查看详情