【翻译】GPT-3是如何工作的
前排提示
这是我补充的内容,仅代表个人观点,和作者本人无关。
主要是意译+我的补充,想看原文表达的拖到最底下有链接。
原文翻译
在科技界我们可以看到很多关于GPT-3的新闻。大型语言模型(比如GPT-3)已经展示出让我们惊讶的性能。虽然对于大部分企业来说想让GPT-3落地还是比较困难的,这些功能不完全可靠的模型还是不能摆到用户面前的,但是这些大模型的出现展示出了加速自动化进程和智能计算机系统的前景。接下来让我们扒一扒GPT-3,看一看它神秘光环背后是如何训练和工作的。
用一个训练好的语言模型生成文本。
我们可以选择给模型输入文本,从而影响模型的输出。在训练期间,模型会通过大量文本学习知识,模型的输出是根据其在训练期间“学习”过的这些内容生成的。
比如下图,给训练好的GPT-3输入一个prompt,模型会给我们对应的输出。
训练是将模型暴露于大量文本的过程,当然GPT-3已经训练好了。你现在看到的所有基于GPT-3的实验都是用的已经训练好的GPT-3模型。据估计,GPT-3训练使用的算力为355 GPU年,成本460万美元,使用无监督训练,训练数据集高达3000亿个文本tokens。
举个栗子,下图是使用顶上的这个文本进行生成的三个样例。你可以看到,如何在所有文本上滑动窗口并产生输出。
看下图,作者的意思是,模型在训练时候学习到了训练样例 “Second Law of Robotics: A robot obey the orders given it by human beings.”
现在使用这个模型进行输出,每次都输出下一个单词:
- Example 1 :prompt 为
Second Law of Robotics:
,模型就会根据训练样例学习到的内容,输出下一个单词A
。- Example 2:此时prompt 变为
Second Law of Robotics: A
,模型会扫描所有prompt内容,产生下一个预测单词robot
`。- Example 3 :prompt 为
Second Law of Robotics: A robot
,模型会输出预测must
。
我们给模型输入一个样本。将特征传递给模型,并要求它预测下一个单词。模型的输出应该是错的。我们计算其预测的错误并更新模型,以求下次获得更好的预测。然后我们将这一过程重复无数次。
结合下图,可以看到灰色的GPT-3在这里代表一个没训练好的模型,每次给它输入样本的features,让其进行预测获得prediction,预测错误之后,计算其预测的错误值和正确的标签(labels)之间的误差并更新网络。重复该步骤。最后就会获得一个训练好的GPT-3模型。
现在我们来详细地介绍一下上边提到的这个需要重复的步骤。GPT-3实际上每次只生成一个token(我们现在默认一个token就是一个单词。)
注意:本文是对GPT-3工作原理的描述,重点不是讨论其创新点(巨大的模型结构)。该模型的体系结构是基于这篇文章Generating Wikipedia by Summarizing Long Sequences的Transformer的decoder模型。
GPT-3体力巨大,拥有1750亿个参数编码它在训练过程中学到的东西。这些参数用于计算每次运行时要生成的token。
未经训练的模型参数是随机初始化的,训练过程就是寻找参数值使其产生更好的输出的过程。
这些参数是模型中数百个矩阵的一部分。预测过程就是是大量的矩阵乘法运算。
在我YouTube上的AI简介的视频中,我讲了一个仅有一个参数的简单深度学习模型,这个视频可以作为入门,让你能理解这个1750亿参数的巨大模型。
为了阐明这些参数是如何分布和使用的,我们需要看一下模型的内部结构。
GPT-3接受token的宽度为2048,我们也可以称之为“上下文窗口”。这意味着它有2048个路径,每个token都要沿着这些路径进行处理。
让我们看着下图紫色箭头的轨迹,看一下系统如何处理robot
一词并产生预测A
的:
高级步骤:
- 将单词转换为表示单词的向量
- 计算预测值
- 将预测结果向量再转换回单词
GPT-3的这些计算发生在96个Transformer的decoder层中。
看到这么多层了吗?这大概就是“深度学习”中的“深度”吧。
也就是说GPT-3是由96个Transformer的decoder组成的。GPT-2最大的型号应该是48层decoder。
每个层都有单独的18亿参数,也就是让GPT-3如此强大到玄幻的地方,计算流程如下:
如果想了解decoder的内部构造可以看《图解GPT-2》。
GPT-3的不同之处是交替使用稠密自注意力层和稀疏的自注意力层。
这是给定GPT-3输入并获得输出(Okey human
)的流程。我们可以看到每个token是如何流经整个模型层的。模型并不关心第一个单词的输出是什么。当我们输入的句子都经过模型层之后,开始输出其预测的第一个单词,这时候模型才会关心输出的token是什么,并将这个输出放回到模型输入中。
看一下这个示例:React代码生成。
上边这个代码生成是twitter上的,如果你看不了就直接看我的截图行了。就是这个人说,我让GPT-3生成一个todo list的应用程序,然后它就真的几秒钟之内给我一段功能完整的React写的todo list的代码。
上边这个代码生成的例子中,我认为是先给模型几个description=>code的示例,然后再给一个prompt描述。然后模型会输出像这些粉色的token一样逐个生成出来。
我的假设是,基础提示和描述作为额外输入,使用特定的分隔token符将提示内容和描述(结果)拆分开。然后将其喂给模型。
如过大家感兴趣可以去看一下GPT-3的原文,是支持zero-shot、one-shot、few-shot的。这三个x-shot我在这里不解释了,默认大家都懂。上边这两段话就是作者猜测的GPT-3使用few-shot的过程。
GPT-3已经很令人惊艳了,如果你能等到GPT-3的微调模型,性能可能会更加惊艳。
微调会更新模型的权重,使模型更适配于某一领域。
碎碎念
作者博客:@Jay Alammar
原文链接:How GPT3 Works - Visualizations and Animations
这是我翻译这位大佬的第四篇文章了。之前的工作可以看:
图解transformer | The Illustrated Transformer_LolitaAnn的博客-CSDN博客
图解BERT、ELMo(NLP中的迁移学习)| The Illustrated BERT, ELMo, and co._LolitaAnn的博客-CSDN博客_bert和elmo
图解GPT-2 | The Illustrated GPT-2 (Visualizing Transformer Language Models)_LolitaAnn的博客-CSDN博客
【翻译】GPT-3是如何工作的相关推荐
- AIGPT中文版(人人都能使用的GPT工具)生活工作的好帮手。
AIGPT简介 AIGPT是一款非常强大的人工智能技术的语言处理工具软件,它具有 AI绘画 功能.AI写作.写论文.写代码.哲学探讨.创作等功能,可以说是生活和工作中的好帮手. 我们都知道使用Chat ...
- [翻译] 在 Overleaf 中离线工作
原 文:Working Offline in Overleaf 译 者:Xovee 翻译时间:2020年5月21日 在 Overleaf 中离线工作 Overleaf 提供了许多功能,可以让你首先 ...
- 计算机技术翻译工作,中文翻译成英文- 学习及工作经历2004年4月 中国计算机函授学院计算机专业专科毕业;...
Study and work experience April 2004 Graduated from Computer Specialty of China Computer Corresponde ...
- 福建2013年度翻译专业资格考试工作通知
福建2013年度翻译专业资格考试工作通知 来源:考试在线 2013-01-28 福建省公务员局 省人力资源开发办公室 省人民政府外事办公室关于做好2013年度翻译专业资格(水平)考试工作的通知 各设区 ...
- GPT-2 论文翻译
GPT-2 论文翻译 基本是机器翻译,也进行了基本的人工矫正,凑活看吧 原论文:<Language Models are Unsupervised Multitask Learners> ...
- OpenAI数十亿代码训出Codex:能将英语翻译成代码,给四句话就能写个神经网络...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:大数据文摘本文约2088字,建议阅读4分钟 本文介绍了Open ...
- 没有数据也能翻译?一文读懂「无监督」机器翻译
原文来源:buZZrobot 作者:Harshvardhan Gupta 「雷克世界」编译:KABUDA.嗯~阿童木呀 深度学习正在被广泛地运用于各项日常任务当中,尤其是涉及到一定程度" 人 ...
- 如何用技术搞好英俄翻译?
神经网络翻译模型受限于其可以使用的词表大小,经常会遇到词表无法覆盖源端和目标端单词的情况,特别是当处理形态丰富的语言(例如俄语.西班牙语等)的时候,词表对全部语料的覆盖度往往不够,这就导致很多&quo ...
- 《编译与反编译技术实战》——2.1节编译器、解释器及其工作方式
本节书摘来自华章社区<编译与反编译技术实战>一书中的第2章,第2.1节编译器.解释器及其工作方式,作者刘晓楠 陶红伟 岳 峰 戴超,更多章节内容可以访问云栖社区"华章社区&quo ...
最新文章
- 基于Pyhton的图像隐写术--如何隐藏图像中的数据
- Eclipse 搭建struts2 spring3 hibernate3环境实战 待完善
- 混沌动力学行为研究-分叉图
- 语音通话框架_教资公告还没出,普通话测试又要改革?
- 在Ubuntu中实验环境配置《操作系统原理与实践-李治军》
- 自定义语言的实现——解释器模式
- java lambda 多个参数_Java Lambda行为参数化
- java map reduce 原理_MapReduce实现原理详解
- 学习笔记——作业的知识点与注意事项
- [揭秘]如何通过“人工智能”对直播的内容风险防控
- 简易python爬虫 - 爬取站长论坛信息
- 微波遥感SNAP(四)——检测地表沉降(2)相位解缠与地理编码
- 组态软件哪个好_组态软件推荐
- B站下载视频之you-get的使用
- 数据中心产业深度报告:IDC产业链景气周期及投资框架分析
- Android O/P/Q 版本移植iperf网络性能测试工具
- iOS searchbar实现汉字更具拼音首字母排序
- 国外短链接项目。一万次点击220美刀
- Word2013如何在中间某页重新编排页码,增加分节符。
- 宝鸡计算机软件的工作,宝鸡学计算机软件编程
热门文章
- 容器架构转传统lnmp架构(失败篇)
- 理解 ROC 和 PRC
- 匹配追踪和正交匹配追踪
- 新唐科技|I9160FI|低功耗|音频录制|回放优化|ARM-Cortex-M0 32位芯片:概述及资料
- EAUML日拱一卒-微信小程序实战:位置闹铃 (19)-发布微信小程序
- 2014小学计算机统计表,2014年春小学部考试成绩统计表.xls
- 老李分享:robotium常用API 1
- aerospike备份与还原
- [Transformer]GT U-Net: A U-Net Like Group Transformer Network for Tooth Root Segmentation
- 共享安装 cacti 过程中的一些经历 cacti 中文-linux - sun solaris