💫 Summary
视频深入解析了GPT系列模型的演进,从GPT到GPT-3,探讨了技术细节、模型扩展及性能提升的关键点。
✨ Highlights📊 Transcript
Copy
Chat with video
一篇由AI生成的博客文章在Hacker News上引起广泛关注。
00:00
2020年,一篇博客在Hacker News上获得第一名,表明其受欢迎程度。
博客的标题探讨了工作状态,内容看似正常,但实为AI生成。
该文章还被MIT技术评论报道,揭示其为假冒作品。
博客名为“nothing but words”,包含多篇类似的AI生成文章。
讨论了自然语言处理中的数据标注问题及解决方案。
11:15
许多自然语言理解任务依赖于标注数据,但标注数据相对较少。
作者提出先在无标注数据上训练预训练模型,再在有标注数据上微调模型。
这种方法在计算机视觉领域已成为主流,但在自然语言处理领域尚未普及。
NLP领域缺乏大规模标注数据集,如ImageNet在计算机视觉中的作用。
GPT与BERT的主要区别在于目标函数的选择。
22:30
GPT使用的是预测下一个词的语言模型,难度更高。
BERT采用的是带掩码的语言模型,允许同时查看前后文。
Transformer块的输入输出形状不变,最终通过softmax得到概率分布。
预测未来的任务比完形填空更具挑战性。
GPT-2面临的挑战是如何通过更大的模型和数据集超越前作。
33:44
作者团队有所更换,但技术路线未变,依然坚持使用解码器。
GPT-2使用了新的数据集Web Text,包含百万级别的文本。
通过更大的数据集,GPT-2能够训练出15亿参数的Transformer模型。
如果新模型仍无法超越前作,则面临困境。
在模型性能的比较中,GPT系列模型在摘要和问答任务上表现各异。
44:59
GPT模型在阅读理解任务上表现较好,但在摘要和问答任务上仍有待提升。
随着模型规模的增大,性能有明显提升的趋势。
作者提到,尽管结果有趣,但在一些任务上仍未达到最佳水平。
GPT-3的目标是通过更大的模型和数据集来进一步提升性能。
讨论了Meta-Learning和in-context learning的概念及其在模型训练中的应用。
56:13
Meta-Learning指的是训练一个大模型以提升其泛化能力。
in-context learning允许模型在给定训练样本时不更新权重。
通过图示说明了模型训练过程与Meta-Learning的类比。
每个样本可能教授不同的任务,反映出多样性和灵活性。
GPT-3模型的计算复杂度与宽度和层数的关系讨论。
01:07:26
模型的计算复杂度与宽度呈平方关系,与层数呈线性关系。
GPT-3最大的模型相比前代增大了16倍,但层数与前代相比仅增大8倍。
训练大模型时,使用320万个样本的小批量大小,对内存要求极高。
较大的批量大小可以提高计算性能和降低通讯量,适合分布式训练。
讨论了计算量与损失之间的关系及其影响。
01:18:43
计算量的增加并不一定导致损失的降低,存在一个最佳训练点。
训练到最佳点后,继续增加计算量可能导致过度训练。
在理想情况下,计算量与损失之间呈现幂律分布关系。
提高模型精度通常需要指数级的数据量增长,且计算量也随之增加。
00:00【制作人:奔崩】 2020年的时候
00:01有一篇博客冲到了 Hacker News的第一名
00:05Hacker News 是在技术圈里面
00:06应该是影响力最大的一个新闻汇聚网站
00:10所有人都可以分享自己喜欢的文章
00:12然后观众呢 对这些文章进行点赞或者是评论
00:15Hacker News 根据你点赞的个数和评论来进行排名
00:19这篇文章能排到第一位
00:20意味着大家还是挺喜欢的
00:22然后来看一下标题
00:23标题是说你是不是感觉工作没有状态
00:26也许你就是应该停止想太多
00:29这是一个非常鸡汤的标题
00:30在微信公众号上
00:32你可能会看到许多类似的文章
00:34然后我们点进去这篇文章看一下
00:36他写的还是挺正常的对吧有一个图
00:39这个配图也是正确的
00:40然后里面有些文字
00:41我就不给大家一一讲了
00:43段落有长有短
00:44看上去是怎么回事
00:45然后文章也挺长的
00:47然后这件事情呢又上了另外一个头条
00:50这一次上的头条是在
00:52MIT 的技术评论里面
00:54这是一个老牌的技术评论杂志
00:57他的标题叫做 说
00:58一个大学生做了一个假的
01:01然后由 ai 生成的博客
01:04然后呢糊弄了上万人
01:06事实上我们刚刚看到的那篇文章
01:09是一个叫做 nothing but words 的博客里面的一篇文章
01:12这个博客里面其实还有挺多别的文章
01:14看上去都似模似样
01:15但是整个博客是由模型生成的
01:19这个模型叫做 GPT-3
01:21他文章的第一段话是想说
01:23在某个星期的早一点时候
01:25有一个小哥听到了这个模型
01:27然后呢
01:28他就在这个信息里面用这个模型
01:30生成了这样一个博客
01:32非常的简单
01:33在过去几年里面
01:34整个自然语言处理界
01:36可能最出圈的模型应该就是 GPT-3了
01:39这个模型来自于 open ai 的团队
01:41在这个模型放出来之后啊
01:43整个网络上就把这个模型玩出了花了
01:46如果你去搜一下 GPT-3的应用的话
01:48你可以搜出上百个
01:49比如说我们随便找一篇文章
01:51给大家看一下里面到底有什么东西
01:53这片博客呢是写于2020年的7月22号啊
01:57你现在已经很久了
01:58当然现在有更多的应用出来
02:00我们先看一下
02:01当时候 大家已经有些什么很奇怪的玩法
02:04它里面呢就转载了当时后大家哦
02:07用 GPT-3来玩各种应用的一些例子
02:10比如说这里有个小哥
02:11用 GPT-3来写一个基于 react 的一个
02:16丢色子的一个模块
02:18然后他在方框里面填好说
02:20我需要一个按钮
02:22他能够给我来丢色色子
02:24然后把我的值显现出来
02:26也把它放进去之后
02:28然后 GPT-3来给你生成你的 html 代码
02:32然后你的结果就显示在这个地方
02:34你看按一下这个地方之后
02:36他告诉你说现在的指示3
02:38他又把他的要求改了改
02:40他说我需要一个Button
02:43跟之前一样
02:44然后需要在你输出的时候
02:46把你的值是3改成你现在
02:49丢了一个什么东西值出来
02:51然后用 GPT-3来生成之后
02:54他又给你生成相应的代码
02:57然后来看一下效果
02:58你看这个是 HTML 代码在这个地方
03:00然后他的结果在这里
03:01他真的把你的结果
03:03改成了你要的那个形式
03:05你多按几次啊
03:06每一次他就随机生成一个数字
03:08往下翻呢就是另外一些应用了
03:11图灵测试是说
03:12我在墙的后面放一个电脑或放一个人
03:14你跟他对话
03:15但是你完全分不出来
03:17到底他是人还是电脑
03:19比如说他用来生成的一些
03:21回答的一些例子
03:22比如说这个问题说
03:23你最喜欢的动物是什么
03:25说我最喜欢狗
03:26然后你问说你为什么呢
03:27他说狗啊比较忠诚而且比较友好
03:30下面一个是一个稍微不一样的问题
03:32当然是这个是比较相对来说比较简单的啊
03:35因为他不是很长的对话
03:37长对话更加难
03:38因为你得把前面那些
03:39上下文信息啊都给你记住
03:41然后下面有一个难一点的啊
03:43我填一个人名
03:45让他来模仿这个人说话
03:47来回答你的问题
03:48比如说他填的是 Elon Musk
03:50让你来回答什么是火箭
03:53然后他就模仿Elon Musk
03:55给你回答说火箭是长什么样子的
03:57但这个东西就不好评判
03:58因为我也不知道 Elon Musk
04:00真的来讲会怎么样子啊
04:02下面还有个应用是说
04:03我在一个方框里面讲
04:05说我要设计一个什么样的东西出来
04:07他打了一段非常长的话在里面
04:10然后再点生成
04:12可以看到是说
04:13他可以真的把你这一个东西
04:15生成 成 你差不多想要的形式
04:18在这个地方
04:19最后的例子是说
04:20我给你一段技术性比较强的话
04:22然后你把它改写一下
04:24使得不那么技术的人也能够听懂
04:27这个地方 他是从 GPT-3的论文里面
04:29直接 copy 的一段话进去
04:31然后在这个地方上面把它改
04:34写成相对来说用比较简单的句式
04:37每一句都比较短
04:38然后是因为 所以 因为 所有 这样子的句式
04:40大家可以去看一下
04:41当然这个地方只是列了一些应用
04:43Open AI 呢 他推出了一个GPT-3的一个 API
04:47使得你能调用这个模型开发你任何想用的应用
04:51这里有一个网站叫做 GPT-3 demos
04:54他这个地方列举了目前来说
04:56我们知道 所有基于 GPT-3的做的一些应用
04:59可以看到这里面大概有几百个的样子
05:01各个地方都有啊
05:03我们来看一下
05:04都有哪一些比较流行的类别啊
05:06比如说这个地方用 AI 来辅助你的写作
05:09然后这个是一个聊天机器人呢
05:11然后下面还有一些开发工具
05:13然后所有东西加起来大概有好几百的样子
05:17最近的一个基于GPT-3的应用
05:19大家可能也听说过
05:20这就是 GitHub Copilot
05:22他的意思是说
05:24你可以通过注释来说
05:25我要写一个函数干什么事情
05:27然后把函数签名给定之后
05:29剩下的函数的主体就怎么实现它
05:31可以用代码来自动生成
05:34这个工作引起了巨大的反响
05:35在之后有数个工作对他进行了研究
05:38好这就是对 GPT-3的
05:40目前的一些应用的一个非常快速的一个预览
05:43我们今天的任务就是来讲
05:45GPT-3这篇论文
05:46如果我们要讲 GPT-3这篇文章
05:48我们就不得不提到他前面的两个工作
05:51gpt 2和 gpt
05:53在这个地方
05:53我们把这三篇文章
05:54和我们之前讲过的 transformer BERT 这
05:57两篇文章分别列在这个地方
05:59横着这条线表示的是时间轴
06:01我们可以看到啊
06:02transformer 我们首先发表在2017年的6月
06:06在一年之后 gpt 出来了
06:08我们之前有讲过 gpt 他的核心技术是
06:11把 transformer 的解码器给你拿出来
06:14然后在没有标号的大量的文本数据上
06:16训练一个语言模型
06:18来获得一个预训练模型
06:20然后再用他在子任务上做微调
06:22得到每一个任务所要的分类器
06:25这个跟我们之前 的计算机视觉用的技术很一样了
06:28然后在四个月之后
06:29bert 出来了
06:30我们之前有提过
06:32据小道消息是 bert 的一作
06:34是在一两个月之内把这篇文章做出来的
06:37很有可能是他在
06:39看到了 gpt 这篇文章之后才有的 Idea
06:41BERT的思想是说我跟 gpt 不一样
06:44我是把 Transformer的编码器拿过来
06:46然后我收集了一个更大的数据集
06:49用来做预训练
06:50结果效果比 gpt 好很多
06:52我们回忆下
06:53BERT 里面一共有两个模型
06:55一个叫 BERT Base 一个叫 BERT large
06:57BERT Base 的选择就是跟 GPT 的 模型大小是一样的
07:01BERT large 当然是比 BERT Base 要大一些
07:03结果上来说
07:04BERT base 应该是要比 gpt 要好
07:06而 BERT Large 又甩出了 BERT Base 一条街
07:09然后在另外4个月之后 GPT2 出现了
07:13GPT 2呢
07:14又是原作者这帮人吸取了前面的教训
07:17哪里跌倒就在哪里爬起来
07:20他们收集了一个更大的数据集
07:22训练了一个更大的模型
07:24GPT 2的模型比 BERT Large是要大的
07:27如果你就 简简单单的训练了一个大的模型
07:30那你在新意度上肯定是有问题的
07:32所以他就沿着了自己的技术路线
07:34继续使用 transformer 的解码器
07:36来深入挖掘语言模型的潜力
07:39然后他发现这个非常适合做 zero Shot
07:42但是因为你走的比较远啊
07:44所以导致效果上没有那么的惊艳
07:46于是在一年又3个月之后
07:48也就是2020年的5月份
07:50他们推出了 GPT-3
07:52GPT-3对 GPT2的改进就是
07:54数据和模型都大了100倍
07:57暴力出了奇迹
07:58然后终于把效果做到非常惊艳
08:01也就是我们之前看的这些应用的效果
08:03非常的炸裂
08:04也就是 GPT-3的效果
08:06所以这一期视频的封面就是
08:08暴力出奇迹
08:09然后我们这里画了两个 logo
08:11一个是 open ai
08:12一个是 google
08:14因为 transformer BERT 都来自于 google 的团队
08:17然后 GPT 系列三篇文章
08:18都来自于 open ai 这个团队
08:20有意思的是 open ai 团队虽然投入了很多
08:23做了 GPT 系列
08:24但是他在学术界的影响力似乎是
08:27不如 bert 的
08:28这里我们列决到目前为止他们的引用
08:31BERT 在这篇文章的引用是27,000次
08:33如果你把 gpt GPT 2
08:35GPT-3 3篇文章的用加起来
08:37大概是11,000次的样子
08:39还不到 BERT 的1/2
08:41GPT系列他的引用率稍低
08:43他倒不是因为他的创新度
08:45或者是他的效果不如BERT 系列
08:47恰恰相反 我觉得是因为 OpenAI选择去解决 更大的问题
08:52所以他的技术上实现更难一些
08:54他出效果更难一些
08:56比如说你要出到很炸裂的效果
08:58你得做到 GPT-3
08:59他这个规模
09:00几乎是
09:01没有别的团队能够复现他们结果的
09:04OpenAI 选择这样子的技术问题 去解决
09:06是因为他整个公司
09:07他还是想做强人工智能
09:09他想去解决一个更大的问题
09:11所以他们必须在 选择问题上选择大一点
09:13反过来讲 Transformer BERT 系列
09:15都是来自于 Google
09:17独立的一些研究组
09:18他们一开始想解决的问题
09:20其实都比较小
09:21Transformer我们之前有提过
09:22他其实就想解决机器翻译
09:24这样子的例子啊
09:25从一个序列翻译到另外一个序列
09:27他的上面的效果
09:28BERT呢其实也是挺实在的
09:30他就是想把计算机视觉那个成熟的
09:33先训练一个预训练的模型
09:34然后再做微调出子任务的结果
09:37这一套搬过来在 NLP 上做好
09:39因为他们就是想实实在在提升 技术的效果
09:42所以呢在同样模型大小
09:45比如说是一个亿级别 模型大小时候
09:48bert 的 性能是要好于 gpt 的
09:50就是未来的工作
09:52更多愿意用 BERT 的文章
09:54因为我咬咬牙
09:55还是能找到足够的机器
09:56能把我的模型跑起来
09:58而且效果不错
09:59不然你如果要跟 gpt 系列的文章的话
10:01可能帮你卖了你还是跑不起那个实验
10:03好接下来我们就按顺序从 gpt gpt 2
10:06GPT-3逐一读一下每一篇文章
10:09先看 gpt gpt 文章的标题叫做
10:12使用通用的预训练 来提升语言的理解能力
10:16gpt 跟我们之前说的很多文章一样
10:19他并没有给自己的方法起标题
10:22所以 gpt 的名字来自于后面人给他的
10:25g p t 这三个字母组合在一起
10:28如果大家对自己的硬盘
10:30做过格式化分区的话
10:32你可能也听说过 gpt
10:34所以幸好这个工作有一定的知名度
10:36而且 open ai 的作者在
10:38之后持续对他改进
10:39有 gpt 2 GPT-3
10:41不然的话你现在去搜 gpt 的话
10:43可能就搜不到这篇文章
10:44而是搜到的是硬盘如何分区了
10:47他的作者这里有四个人
10:49一作是 Alee Radford
10:51这个人在 gpt 工作之前
10:53还有挺多有名的工作
10:54比如说这是他 google scholar 的界面
10:56可以看到他其实
10:57引用最高的文章是 DCGAN 这篇文章
11:00就是用卷积神经网络来替换掉
11:03GAN 里面的那个 mlp
11:04另外一个是 ppo
11:05这也是强化学习里面一个很常见的优化算法
11:09还有是他又做了一个GAN的工作
11:11然后后面的三个工作就是 gpt 这三部曲了
11:15最后一名作者 Ilya
11:16相信大家还是记得吧
11:18AlexNet 作者的二作
11:20然后他去了 OpenAI 担任呢 cto
11:22所以 OpenAI 呢
11:23很多工作应该是挂了他的名字
11:24作为最后一个作者了
11:26接下来我们来看一下摘要
11:28摘要写的比较简单
11:29我们先来看一下前面两句话
11:31讲的是我要解决什么问题
11:33他说在自然语言理解里面呢
11:35有很多不一样的任务
11:37然后说虽然我们有很多
11:39大量的没有标号的文本文件
11:42但是呢
11:43标好的数据是相对来说比较少的
11:45这使得我们要去
11:47在这些标号的数据上
11:48训练出分辨模型的话
11:50会比较的难
11:51因为我们的数据相对来说还是太小了
11:54接下来就讲作者怎么解决这个问题
11:56他的解决方法是说
11:58我们先在没有标号的数据上面训练一个
12:03预训练模型
12:04这个预训模型是一个语言模型
12:06接下来呢
12:07在 在有标号的这些子任务上面训练一个
12:10分辨的微调模型
12:12这个在计算机视觉里面
12:14早在8、9年前已经是成为主流的算法
12:17但是在 NLP 领域一直没有流行起来
12:20是因为在 NLP 里面没有
12:22像 ImageNet 那么大规模标好的那种数据
12:25在计算机视觉里面
12:26我们要标好的100万张图片
12:28ImageNet在 NLP 的话并没有那么大数据集
12:32虽然说机器翻译那一块
12:33我们也许能做到100万的量级
12:36但是你一个句子和一个图片不在一个尺度上面
12:39一张图片里面含有的信息
12:41那个像素的信息比一个句子里面
12:44能去抽取的信息来的多很多
12:46所以一张图片可能能换
12:4710个句子的样子
12:48那意味着是说
12:49你至少有1,000万级别的句子级别的
12:52标好的数据集才能够训练比较大的模型
12:55这导致在相当一段时间里面
12:58深度学习在 NLP 的进展
12:59没有那么的顺利
13:01直到 gpt 和后面的 bert 的出现
13:03才打开了局面
13:04注意这里我们还是像计算机视觉那样
13:07先训练好预训练模型再来做微调
13:09但是这个不一样的是说
13:11我们使用的是没有标号的文本
13:14这个就往前走了一大步
13:16然后在 GPT 系列后面的文章在做 Zero Shot
13:19走了另外一大步
13:20如果说深度学习前面五年
13:22主要是计算机视觉在引领整个潮流的话
13:25那么最近几年可以看到这些创新很多
13:28来自于自然语言处理界
13:30而且这些创新也在反馈回计算机视觉里面
13:34比如说之前我们读过的 mae 这篇文章
13:36就是把 bert 用回到计算机视觉上面
13:39我们在上一集介绍了CLIP
13:40也是打通了文本和图像
13:43当然在自然语言处理
13:44用没有标号的文本那也不是第一次了
13:47比如说十几年前就很火的 word to Vector
13:50这个词嵌入模型
13:51就是用的大量的没有标号的文本
13:54但是他在这里说
13:55我们跟之前工作的一个区别是说
13:57他们是在微调的时候
13:59构造跟你任务相关的输入
14:02从而使得我们只要很少的改变我们模型的架构就行了
14:07这是因为文本跟图片不一样
14:09他的任务更加多样性一些
14:11有些任务说我要对词进行判断
14:13有些任务我需要对句子进行判断
14:15有些任务是说
14:16我需要一对句子或者三个句子
14:18还有一些应用是说我要生成一个句子
14:21所以导致每个任务都需要有自己的模型
14:23我们最早的词嵌入只是做一个词上面的一个学习
14:27然后你的后面的模型还得去构造
14:29之前那些工作
14:30需要把你的模型进行一些改变
14:32来适应 各个任务但是这个地方我们只要改变
14:35输入的形式就行了
14:37而不需要改变的模型
14:38当然我们读过 BERT 的话
14:40我们知道这个是怎么做的
14:41但是 GPT 是在 BERT 之前
14:43所以他提出来的时候
14:44在当时来说当然是有新意的
14:47最后是写实验结果可以看到
14:48是说他在12个任务里面
14:50有9个任务能够超过
14:52当前最好的成绩
14:54所以看上去是稍微弱于 bert 之后的结果
14:57他在十几个用上都超越了前面
15:00所以导致是说
15:01bert 为什么出来之后比 gpt
15:04更加有影响力
15:04因为他效果更加好一点
15:06但是从创新度来讲
15:08我觉得 GPT 应该在 bert 之上
15:10因为他毕竟是前面的工作
15:12bert 在很多时候跟他的思路是一样的
15:14接下来我们来看一下导言
15:16导言的第一句话
15:17讲的是我们之前提到的那个问题
15:19就是怎么样更好的利用无监督的文本
15:23作者提到在当时候啊
15:25最成功的模型还是词嵌入模型
15:27然后接下来第二段话是讲用
15:30没有标号文本的时候
15:32使用他遇到的一些困难
15:34他主要讲了两个困难
15:36第一个困难是说
15:37你不知道用什么样的优化目标函数
15:40就是我给你一堆文本
15:41你到底你的损失函数长什么样子呢
15:44当时候有很多选择
15:45比如说你有语言模型啦
15:47你有机器翻译啦
15:48或者是文本的一致性
15:49但是问题说没有发现某一个特别的好
15:52就一个目标函数在一些任务上比较好
15:54另外一个目标函数在
15:55另外一些问题上就比较好说
15:57看你的目标函数跟你
15:58实际要做的子任务
15:59它的相关度有多高了
16:01第二个难点是说
16:02怎么样有效的把你
16:04学到的这些文本的表示啊
16:06传递到你下游的子任务上面
16:08这是因为 NLP 里面的子任务啊
16:10差别还比较大的
16:11没有一个简单的统一的有效的方式
16:13使得一种表示
16:15能够一致的牵引到所有的子任务上面
16:17好 接下来第三段就是说 gpt 这本文章呢
16:20他提出了一个半监督的方法
16:23然后呢在没有标号的文本上面
16:26训练一个比较大的语言模型
16:28然后再在子任务上进行微调
16:30当然我们现在对这一套比较熟悉啊
16:32但是有意思的说你回到当年
16:35作者用的是半监督学习这个词
16:38叫 semi supervised
16:39半监督学习啊
16:40在机器学习界
16:41可能在十年前是非常的火的
16:44他的核心思想是说
16:45我有一些标好的数据
16:46但我还有大量的
16:47相似的但没有标好的数据
16:49我 怎么样把这些没有标号的数据用过来
16:52那就是半监督学习想学的东西
16:54这个地方呢
16:55当然是可以放到半监督学习里面啊
16:58就是说你在没有标好的模型上面
17:00训练好一个模型之后
17:01然后再在有监督的上面做微调
17:04但是呢 半监督学习里面还有很多别的算法
17:06但现在我们把 GPT
17:08这一套方法和 bert 之后
17:10所有的工作也用到的类似方法
17:12不叫做半监督学习
17:14而叫自监督学习
17:16叫做 self supervised Learning
17:18这也是上一期的CLIP那篇文章
17:20作者又说到同一个方法
17:22但是在不同的论文的作者
17:23把它归类成不一样的算法
17:25下一段讲的是他用到的模型
17:28可以看到他主要是有两点
17:30第一点是说他的模型是
17:31基于Transformer 这个架构的
17:33因为这篇文章发表在
17:35transformer 这篇文章出来一年之后
17:37当然 作者在作者工作的时候应该可能更早
17:40可能是 transformer 出来就几个月
17:42所以在是用 transformer 还是用 RNN 的模型的时候
17:45在当时不是那么显而易见的
17:48所以作者解释了一下大概的原因
17:50他说跟 RNN 这种模型相比啊
17:53他发现 transformer 他在迁移学习的时候
17:56他学到的那些Feature更加的稳健一些
17:59作者觉得原因可能是因为
18:01transformer 里面有更结构化的 记忆
18:04使得能够处理更长的这些文本信息
18:07从而能够抽取出更好的
18:09句子层面和段落层面的这些语义信息了
18:12第二个技术要点是说他在做
18:15迁移的时候啊
18:16用的是一个任务相关的输入的一个表示
18:19我们在之后会看到他到底长什么样子
18:22最后一段只讲我的试验结果了
18:23我们就不在这里给大家看了
18:25下面是相关工作
18:26相关工作我们就不给大家仔细讲了
18:29他就讲了一下在
18:30NLP 里面半监督是怎么回事
18:32然后讲的是无监督的运行的模型
18:34还有是说我在训练的时候
18:37需要使用多个目标函数的时候会怎么样
18:40这分别对应的是你的大的
18:42GPT模型怎么样
18:43在没有标号的数据上训练出来
18:45以及说你怎么样在
18:47子任务上运用有标号的数据进行微调
18:50最后的时候你在做微调的时候
18:51他使用了两个训练的目标函数
18:54第三章就是讲这个模型的本身呢
18:56我们来看一下
18:58这节里面有三个小节
18:59分别对应的是
19:00我怎么在没有标号的数据上训练模型
19:03怎么样做微调
19:04以及说
19:04我怎么样对每个子任务表示我的输入
19:07我们先来看3.1
19:08就是在没有标号的数据上面做预训练
19:11假设我们有一个文本
19:13没有标号的文本里面每个词呢
19:15表示成一个 ui
19:17那么他整个文本就表示成 u1 一直到 ui
19:20他是有个序列信息的就
19:21词我们不会交换你的顺序
19:23GPT 使用一个标准的语言模型 的目标函数
19:27来最大化下面这个似然函数
19:31我们来看一下是怎么回事
19:32具体来说
19:33语言模型就是要预测
19:34第i个词出现的概率
19:36那么第二个词即为 ui
19:38他怎么预测呢
19:39他是把 ui 的前面的 k 个词就是 ui 减一
19:44一直到 ui 减 k
19:46k 这个地方是你的窗口大小
19:47或者要做上下文窗口
19:49也就是说每次我们拿 k 个连续的词
19:52然后再预测这
19:54k 个词后面那一个词是谁
19:56具体来说他的预测是用一个模型
19:57这个模型记成 Θ 在这个地方
19:59给定你 k 个词
20:01给定模型
20:02那么预测这 k 个词下一个词它的概率
20:05把每一个这样子的词啊就是 i
20:08他的位置从零一直到最后
20:11把全部加起来就得到我们的目标函数
20:14这个地方即为L1
20:15他不是你的那个范式里面的L1
20:18他就是第一个目标函数
20:20因为他后面还有一个别的目标函数
20:22他为什么是加是因为取了 log 的缘故
20:24如果你做指数放回去的话
20:26那就是所有这些词出现的概率相乘
20:30也就是这个文本
20:31出现的联合概率
20:32就是说我要训练一个模型
20:34使得他能够
20:35最大概率的输出
20:37跟我的文本长得一样的一些文章
20:39所以这个地方
20:40Θ模型是你的参数
20:42k 呢是你的超参数
20:45就是你的窗口的大小
20:46从神经网络角度而言
20:47那你 k 就是你输入序列的长度
20:50你的序列越长的话
20:51你的网络看到的东西就越多
20:53就是他越会倾向于在一个比较长的
20:57文本里面去找里面的关系
20:59k 越短的话
21:00当然你的模型相对说比较简单
21:02只要看比较短的就行了
21:04所以这个地方
21:05如果你想让你的模型很强的话
21:07那么 k 可能要取到几十
21:09几百或者甚至上千了
21:11他在下面又解释了一下
21:13具体这个模型是谁
21:15他用到的模型是 transformer 的解码器
21:18我们回忆一下Transformer有两个东西
21:20一个是编码器一个是解码器
21:23他们最大的不一样在于是说
21:25编码器来一个序列进来
21:27他对第i个元素抽特征的时候
21:30他能够看到整个序列里面所有的元素
21:33但是对解码器来讲因为有掩码的存在
21:36所以他在对第i个元素抽特征的时候
21:39他只会看到
21:40当前元素和他之前的这些元素
21:43他后面那些元素的东西通过一个掩码
21:46使得在计算注意力机制的时候变成0
21:48所以他是不看后面东西的
21:50这个地方 因为我们用的是标准的语言模型
21:53我们只对前预测
21:55我们预测第i个词的时候
21:57不会看到这个词后面的这些词是谁
21:59所以一定是往前的这个地方
22:01所以我们只能使用Transformer的解码器
22:05而不能使用他的编码器
22:06然后下面他给了稍微这个模型的一些解释
22:09当然假设你对Transformer比较了解了
22:11他说如果我要预测
22:13u 这个词它的概率的话
22:15那我们把这个词前面这些词啊
22:16全部拉出来
22:17就 k 个词拉出来记成一个大 u
22:19然后把它做一个投影啊
22:21就词嵌入的投影
22:22再加上一个位置信息的编码
22:24那得到你的第一层的输入
22:26那么接下来我要做 n 层
22:28这样子的Transformer 块
22:30每一层我们把上一次的输出拿进来
22:33然后得到输出
22:34因为我们知道
22:34Transformer块不会改变你的输入输出的形状
22:37所以你一直做完之后
22:39最后拿到你最后一个 transformer块的输出
22:41然后再做一个投影
22:42用 soft max 就会得到它的概率分布了
22:45如果大家忘记了 transformer 块是怎么定义的话
22:48欢迎回到我们之前 Transformer
22:50这篇文章的讲解视频里面有详细的讲解
22:53因为我们已经读过了 BERT 这篇文章
22:55我们稍微来讲一下它跟 BERT 的区别
22:57BERT 我们知道
22:59他用的不是标准的语言模型
23:01他用的是一个带掩码的语言模型
23:03他就是完形填空
23:05所以完形填空是说我给一个句子
23:06我把中间的一个词挖掉
23:08让你预测中间的
23:10就是说你在预测的时候
23:11我既能看见他之前的词
23:13又能看见之后的词
23:15所以他可以对应的使用 transformer 的编码器
23:18因为编码器上看到所有
23:20所以使用编码器和解码器
23:22倒不是他们两个的主要的区别
23:24主要区别在于 你的目标函数的选取
23:27这个地方 gpt 用的是一个更难的
23:30就是给前面一段话预测后面一个词
23:33预测未来当然比完形填空要难
23:36具体来说
23:37我给你股票的信息
23:38到当前的股价之前都知道
23:40我让你预测明天的股价
23:42远远的难于是说我告诉你到今天为止的股价
23:46但是我昨天的股票不告诉你
23:48然后你预测昨天这个股票的价格
23:50你都知道过去和未来
23:52那么中间差值就能得到中间
23:54就是预测一个开放式的结局
23:56比预测中间一个状态要难很多
24:00这也是导致的 gpt 在训练上和效果上
24:03他其实比BERT 要差一些的一个原因之一吧
24:06那么反过来讲
24:07如果你的模型真的能预测未来的话
24:09那么你比BERT 这种通过完形填空训练模型要强大很多
24:14这是为什么作者需要
24:15一直不断的把模型做大
24:17而且一直不断努力
24:18才能最后做出 GPT-3那样子
24:20效果惊艳的模型出来
24:22这也是我们之前讲到的
24:23作者选了一个更难的技术路线
24:26但很有可能他的天花板也就更高了
24:29所以这就是预训练模型
24:30这也是为什么我们说
24:31gpt 就是Transformer的一个解码器
24:33这简单讲就是这么回事对吧
24:35接下来我们来看一下他是怎么样做微调的
24:38在微调任务里面我是有标号的
24:40具体来说每一次我给你一个长为 m的一个词的序列
24:44然后我告诉你
24:45这个序列他对应的标号是 y
24:47那么就是说
24:48我们每一次给这个序列去预测他的 y
24:51具体来讲就
24:52是说我每次给你 x1 一直到 xm
24:54我要预测 y 的概率
24:56他这里的做法是把整个这个序列啊
24:58放进我们之前训练好的 GPT 模型里面
25:01然后拿到
25:03transformer 块的最后一层的输出
25:06他对应的 hm 这个词的这个输出
25:09然后再乘以一个输出层
25:11然后再做一个 soft max
25:12就得到他的概率了
25:14是微调任务里面
25:15所有的带标号的这些序列对
25:17我们把这个序列 x1 到 xm 输入进去之后
25:21计算我们真实的那个标号上面的概率
25:24我们要对他做最大化
25:25这是一个非常标准的一个分类目标函数
25:28然后作者说虽然我们在微调的时候
25:31我们只关心这一个分类的精度
25:33但如果把
25:34之前的这个语言模型同样放进来
25:37效果也不错
25:39意思是说
25:40我们在做微调的时候有两个目标函数
25:43第一个是说给你这些序列
25:45然后预测序列的下一个词
25:47和给你完整的序列
25:48让你预测序列对应的标号
25:51这两个一起训练效果是最佳的
25:53然后他通过一个λ
25:55把这两个目标函数
25:56加起来最后这个东西是可以调的
25:58也是一个超参数了
26:00那我们知道微调长什么样子的情况下
26:02接下来要考虑的是
26:04怎么样把 NLP 里面那些很不一样的子任务
26:07表示成一个我们要的形式
26:09就是说
26:10表示成一个序列和他一个对应的标号
26:13就是第3.3小节要讲的事情了
26:16我们可以直接通过图一
26:17就能给大家讲清楚到底是怎么表示的
26:20这里给了 NLP 里面四大常见的应用
26:23我们下面来看一看他们都是什么
26:25一类是最常见的分类
26:27就说给我一句话或者一段文本
26:29我来判断他对的一个标号
26:32比如说一个用户对一个产品的评价
26:34是正面的还是负面的
26:36他这里的做法是说
26:37我把我要分类的这一段文字呀
26:40在前面放一个初始的词元
26:42在后面加一个抽取的词元
26:45然后就做成一个序列
26:47序列放进 transformer 的解码器里面
26:50然后模型对最后一个词他抽取的特征啊
26:53放进一个线性层里面
26:56线性层的话
26:56就投影到我要的那个标号的空间
26:59就是说如果我要做10类分类的话
27:01那么你的线性层它的输出大小就是10
27:04在训练的时候
27:05就是对每一个文本和标号对
27:08我们把文本变成一个这样子的序列
27:10然后标号呢就放在这个地方参加训练
27:13在预测的时候
27:14当然是说我们只拿到这一个序列信息
27:16然后对他直接做预测就行了
27:18所以这个地方跟之前的
27:20语言模型还是有那么一点区别的
27:22因为这个线性层啊是我新加的
27:24这是在微调的时候
27:25我重新构造了一个新的线性层
27:28里面的全都可能是随机初始化的
27:30然后他的输出大小
27:31跟我的标号的大小是一致的
27:33第二个英文叫做蕴含
27:35就是我给你一段话
27:37然后再问你一个假设
27:38你看一下我前面这段话
27:40有没有蕴含我假设提出来的东西
27:43比如说 a 送给 b 一束玫瑰
27:46假设我的假设是说 a 喜欢 b
27:48那么你就说
27:48我前面这段话是支持你这个假设的
27:51如果我说
27:52a 讨厌 b 那么你可以认为
27:55前面这段话是不支持这个假设的
27:57如果我说 a 和 b 是邻居
27:59那么你可以说前面这个假设既不支持
28:02也不反对我这个假设
28:04所以说白了就是一个三类的问题
28:06我给你两段文本
28:07然后让你做一个三分类的问题
28:09他在表达的时候
28:10就是把这两个文本串成一个长的序列
28:13用一个开始符的地方
28:14啊分隔符和抽取符
28:17当注意到我们这里写的是 star 呀
28:19啊分隔呀和抽取
28:21但是在真实表达上
28:23你不能用这个词放进去的
28:24是因为
28:25这些词你可能在文本里面也要出现
28:28所以这三个词元是一个特殊的记号
28:30必须要跟我的
28:31词典里面那些别的词是不一样才行的
28:34不然的话模型就会混淆了
28:36第三个应用是相似
28:37就是判断两段文字是不是相似
28:40这个应用在 NLP 里面用的也是非常广泛
28:42比如说我一个搜索词
28:44和我一个文档是不是相似的
28:46或者说我两个文档是不是相似
28:48我这样子能来去重
28:50或者说两个问题问的是不是相似来去重
28:52因为相似是一个对称的关系
28:54就说 a 和 b 相似
28:56那么意味着 b 和 a 也是相似的
28:58但是我们在语言模型里面是有个先后的顺序
29:01所以这个地方他做两个序列
29:03第一个序列里面
29:04第一段文字放在第二段文字前面
29:07中间还是一样用分割符分开
29:08前面加一个起始符和一个结束符
29:11第二个序列就是把文字1和文字2交换顺序
29:15第二个序列就是把文字1和文字2交换顺序
29:18这是因为他的对称关系
29:20然后这两段
29:22序列分别进入我的模型之后
29:24得到最后的这个输出
29:26然后在上面做加号
29:28最后进入我的线性层
29:29得到我们要的
29:31是相似还是不是相似的一个二分类的问题
29:34最后是一个多选题
29:35就是我问你一个问题
29:37然后给你几个答案
29:38你在里面选出你觉得正确那个答案
29:42他的做法是如果你有 n 个答案的话
29:44那我们就构造 n 个序列
29:46其中前面的都是你的问题
29:48然后每一个答案作为第二个序列
29:50放在这个地方
29:52每一个序列分别进入你的模型
29:54然后用一个线性投影层
29:55他的输出大小是1
29:57这样得到你这个答案
29:59是我这个问题
30:00问到的正确答案的一个置信度
30:02对每个答案我都算一个这样子的标量
30:04然后最后做一个 soft max
30:06就知道我对于这个问题
30:08我对每个答案
30:09觉得是他 正确答案的置信度是等于多少了
30:12可以看到
30:12虽然这些应用上
30:13他的数据都长得不那么样
30:15但是基本上都可以构造成一个序列
30:17要么就是有一段话要么就是有两段话
30:20但是分隔开来
30:21如果更复杂一点的话
30:22我可以构造出多个序列出来
30:24但是这个地方不管我的输入形式怎么变
30:28我的输出他的构造怎么变
30:30中间这个Transformer模型是不会变的
30:32就是说我预先练好我的Transformer模型之后
30:35我在做下游的任务时候
30:37我都不会对这个模型的结构做改变
30:39这也是 gpt
30:40跟之前工作的一个大的区别
30:42也就是这篇文章卖的一个核心点呐
30:45讲完模型之后我们来看下他的实验
30:47实验我们这里不会仔细给大家讲
30:50大家只要注意到这有两点就是了
30:52第一点是
30:52他是在一个叫做
30:54BooksCorpus 的一个数据集上训练出来的
30:56这个地方有7,000篇没有被发表的书
31:01第二个说他的模型呢
31:02大小是要长成这个样子的
31:04他用了12层的一个
31:07transformer 的解码器
31:08然后每一层的他的维度是768
31:12所以我们关心的是说
31:13你用一个多大的模型
31:14在一个多大的数据集上训练好的
31:17在结果上他当然比了之前那些算法
31:20他说我们这样子的方法呀
31:21比前面的人都要好一点
31:23这个是 gpt 这个算法
31:25然后加黑
31:26是表示我在精度上都比别人高啊
31:28这个是那么几个数据集上面
31:30基本上都是比前人高
31:32然后我们再
31:33回过头来
31:34看一下我们之前讲过的 BERT 这篇文章
31:36注意到这个论文就换成 bert 了
31:38这个地方是 bert
31:39可看到 bert 的Base
31:41他用的是12层
31:43他的维度也是768
31:45所以 BERT base 就是为了跟 GPT 做对比的
31:49虽然 BERT 用的是编码器
31:50gpt 用的是解码器
31:52编码器 在同样的层数啊和维度大小的时候
31:55他比解码器其实那么简单一点点
31:57因为他少一块不带掩码的那个模块
32:00但是基本上你可以认为
32:01他也是差不多等价的
32:02所以 BERT base 作者就是为了跟 gpt 对比
32:05然后你看 BERT 他的层数翻了一倍
32:08然后他的宽度啊翻了1.3倍啊
32:11然后最后你的 BERT Large 是你的
32:13BERT base 的基本上复杂度是
32:15差不多3倍的样子
32:17那为什么你可以做三倍呢
32:18是因为 BERT 用的数据集更大一些
32:21这个地方讲的是 BERT 它用的数据集
32:23它用了 GPT 的那个 BooksCorpus 的数据集
32:26那就是他这个里使用的是词的个数
32:29是用的8亿个词
32:31然后他还用了一个基本上是3倍大
32:33有20亿个词的 Wikipedia 的数据集
32:36所以 对BERT的整个数据大小
32:38基本上是 GPT 用的数据集的大概4倍的样子
32:41所以他在这个数据集上
32:43训练了一个比 gpt 大三倍的模型
32:45那也是可以理解的
32:46然后再回过头来看一下BERT的实验
32:49这个地方比较了是 gpt
32:51然后 BERT base
32:52虽然跟你 GPT 的模型是差不多
32:54但实际上在整个的平均的精度上
32:57还是要比他好一点
32:58你看他是75.1
32:59那 BERT 做到了79
33:01然后如果你把模型做更大的话
33:03他还能从79.6提升到82.1
33:07这也是对我们之前
33:08讲过的 BERT 一个非常简单的回顾
33:11好接下来我们来看一下 GPT 2
33:13就当你发现你的工作被别人用
33:15更大的模型
33:16更大的数据打败的时候
33:18那么你怎么样去回应 GPT 2这篇文章
33:21它的标题啊叫做语言模型
33:24是无监督的多任务学习器
33:28我们等会来看
33:29多任务学习器是什么意思
33:31但无监督我们理解啊
33:33语言模型我们理解
33:35作者上一作没有变换
33:36最后一个作者也没有变换
33:39之前 gpt 那篇文章中间是有两个作者
33:42现在全部换掉了
33:44换成了四个作者
33:45就是说主力干活的作者还是大老板也没有变
33:49但是队员就换了一波
33:51就在看摘要之前
33:53大家想一想
33:54如果你说我用一个解码器
33:56训练一个很好的模型
33:58效果非常好
33:59觉得自己棒棒的
34:00但是几个月之后被人用一个编码器
34:04用一个更大的数据集
34:05训练一个更大的模型打败了
34:07那你心里怎么想
34:08那你得打回去对吧
34:10首先你不能换你的解码器了
34:12因为你已经站好队了
34:14如果你再换回编码器说编码器真的好
34:16那么你前面的工作就浪费了
34:18所以因为一作没有变
34:20所以这个技术路线是不能变的
34:21我还是要认为解码器好
34:23那么怎么打回去呢
34:24很简单我可以把我的模型做的更大
34:27数据集做的更大
34:29但如果我通过做更大
34:30就能把前面的工作打败的话
34:32那么我写文章也没什么问题
34:34但问题是在于
34:36如果你变大了
34:37但是你还是打不赢
34:39打你的那个工作的话
34:41那么你怎么办呢
34:42这就是 gpt 2 这个工作要面临的情况
34:45我们可以大概看一下
34:46首先他做了一个新的数据集
34:48叫做 web text
34:50然后有百万级别的文本
34:52那么跟之前的 Wikipedia和 BooksCorpus
34:55那么当然这个数据集要更大了
34:57你有了更大的数据级之后你能干嘛
34:59那就可以训练一个更大的模型
35:0115亿个参数的Transformer
35:04记得 bert 的那只他最大只是3.4个亿
35:07现在直接跳到了15亿
35:09那就是说你的文本变成了百万级别的文本
35:12那么你的模型变成了十亿级别的模型
35:15但可惜的是说
35:16当你变得那么大的情况下
35:17你发现跟 bert 比可能优势并不大
35:20这时候作者就找了另外一个观点
35:23叫做 Zero-shot 的一个设定
35:25他其实在 gpt 那篇文章的最后一节
35:28有讲他用 Zero shot来做一些实验
35:31主要是去了解整个模型的训练的基石
35:34在 gpt 2这篇文章
35:35就把 Zero shot作为他的一个主要的卖点
35:38拿得出来
35:39我们这篇文章主要看一下
35:40是他怎么去卖
35:42Zero shot这个事情呢
35:44在导言里面
35:45作者说 现在一个主流的途径就是对一个任务
35:49收集一个数据集
35:51然后在上面训练模型做预测
35:53为什么这个东西很流行
35:54是因为现在的模型
35:56他的泛化性是不是很好的
35:59就是说你在一个数据集一个应用上
36:01训练好的模型
36:02很难直接用到下一个模型上面
36:05然后他又提到叫做多任务学习
36:08多任务学习一开始的观点是说
36:10我在训练一个模型的时候
36:12同时看多个数据集
36:14而且可能会通过多一个损失函数
36:16来达到一个模式能够在多个任务上都能用
36:20这个是在90年代末提出来的
36:22在2000年到2010年之间啊
36:25也曾经是比较流行的一个话题啊
36:27作者说虽然这个东西看上去比较好
36:29但是在 NLP 里面其实用的不多
36:32在 NLP 里面
36:33现在主流的算法
36:34也就是之前 gpt1 和 bert 那一类的
36:38就是说在一个比较大的数据上
36:40做一个预训练的模型
36:41然后在对每个任务上
36:43做一个有监督的一个微调
36:45当然这样子还是有两个问题啊
36:47第一个是说对每一个下游的任务
36:50你还是得去重新训练你的模型
36:52第二个是说
36:53你也得收集有标号的数据才行
36:55这样导致你在
36:56拓展到一个新的任务上是
36:57还是有一定的成本的
36:59然后导论的最后一段话就是说
37:01GPT-2 要干什么事情
37:03他说我还是在做我的语言模型
37:05但是呢我在做到下游任务的时候
37:08我会用一个叫做Zero-Shot的设定
37:11Zero-Shot是说
37:12我在做到下游的任务的时候
37:15不需要下游任务的任何标注的信息
37:18那么当然也不要去训练我的模型
37:21这样子的好处说我只要训练一个模型
37:23在任何地方都能用
37:25最后一句话是说
37:26我们得到了还看着挺不错的
37:28而且有一定竞争力的结果
37:30回到我们前面讨论的
37:32如果作者就是在 gpt 1的基础上
37:35用一个更大的数据集训练一个更大的模型
37:37说我比 BERT 好一些
37:40可能也就好那么一点点
37:41不是好那么多的情况下
37:43那么这篇文章有没有意思
37:45大家会觉得没什么意思
37:47工程味特别重
37:48那么现在来了
37:50我换一个角度
37:51我选择一个更难的问题
37:54我说做 zero Shot
37:56就不训练不要下游任务的任何标号
37:59然后跟你得到也还不错差不多的
38:02有时候好一点有时候差一点的结果
38:04虽然这个时候从结果上看没那么厉害
38:08但新意度一下就来了对吧
38:10所以这也给大家做研究有一些提示
38:13你不要一条路走到黑
38:15做工程你可以一条路走到黑
38:17你就把精度往死里做
38:19但是在做研究的时候
38:20你一定要比较灵活一点
38:22尝试从一个新的角度来看问题
38:24接下来我们来看一下方法第二节
38:27因为 gpt 2和 gpt 1在模型上
38:29基本上是长得一样的
38:30所以我们不给大家一段一段读了
38:32而是给大家讲一下
38:34跟之前方法的一些不同的地方
38:35在什么地方
38:36回忆一下我们在之前做 gpt 的时候
38:39我们在预训练语言模型的时候
38:41是在自然的文本上训练的
38:44但是在做下游的任务的时候
38:46我们对他的输入进行了构造
38:49特别的是说我们加入了开始符
38:51结束符和中间的分隔符
38:54这些符号在之前模型是没有看过的
38:58但是因为你有微调的环节
39:00所以模型会去认识这些符号
39:02你给我一些训练样本
39:04我去认识这个符号代表什么意思
39:06但现在你要做 Zero Shot
39:08那你的问题是什么
39:09你在做下游的任务时候
39:12我的模型不能被调整了
39:14但是如果你还
39:15引入一些模型之前没见过的符号的话
39:17模型就会感到很困惑
39:19所以在这个设定下
39:21我们在构造下游任务的输入的时候
39:24就不能引入那些模型没有见过的符号
39:27而是要使得整个下游任务他的输入啊
39:29跟你之前
39:30在预训练模型看到文本长得一样
39:33就是说你的输入的形式
39:35应该更像一个自然的语言
39:37这个地方作者给了两个例子
39:39第一个例子是说做机器翻译
39:41如果你想把英语翻译成法语
39:44你可以表达成这样一个句子首先是
39:47翻译成法语
39:49给你英语的那个文本
39:51然后
39:51接下来是你英语对应的法语的文本
39:54所以前面这三个词啊
39:56你可认为就是做了一个特殊的分割符的意思
39:59在后面的文献里面这个叫做 prompt
40:02也叫做提示
40:04就如果你要做阅读理解的话呢他又说
40:07我可以
40:08设计一个提示叫做回答这个问题
40:12接下来是你读的那个文本
40:13然后是你的问题
40:15最后是你的答案
40:16这个地方
40:17回答这个问题作为一个提示啊
40:19模型知道哦
40:20我现在要去做这个任务
40:22接下来还有大段讨论
40:24你为什么可以这么做
40:25因为这个东西不是作者提出来
40:27是前面的工作
40:28这一篇工作提出来的东西
40:30后面这些话基本上作者都在讨论
40:32是说这个途径到底为什么可以工作
40:35作者觉得如果你的模型足够强大
40:38他能理解你那提示符干的事情
40:40那当然就比较好
40:41另外一个是说
40:42这可能在文本里面
40:43这样子的话也很常见
40:45可能本来就出现在这里面
40:47那么他在下面一节讲数据那一节
40:49稍微对第二点做了一些解释
40:52我们来看一下
40:52他的训练数据长什么样子的
40:54这一节里面
40:55他详细讲了一下他的数据是怎么样出来的
40:58首先第一段话是我前面的人
41:00大家用啊 bert 用的Wikipedia
41:02那么他们自己用的是书
41:04那么接下来
41:04你要构造一个更大的数据集才行
41:07他说一个可行性的办法
41:08需要一个叫做 Common Crawl的一个项目
41:11Common Crawl是一个公开的网页抓取的项目
41:15就有一群人写了一个爬虫
41:16然后不断的去在网上抓取网页
41:19然后把抓取的网页放在 aws 的 s3上面
41:24然后供大家免费的下载
41:26这个项目已经做了很多年
41:27目前来说应该是有 tb 级的数量级
41:30应该是目前能够很方便下到的
41:33最大的一个文本数据集
41:35作者说这个数据集不好用
41:36这是因为他的信噪比比较低
41:38因为抓回来的网页里面很多
41:41可能是没有含有比较有意思信息的
41:43可能就是一些很垃圾的网页
41:46那么你要怎么去清理
41:47他需要花很多很多的时间
41:49就是说虽然我
41:50没有能力现在把你很好的标出来
41:53但是他可以去利用网上大家已经
41:55过滤好的一些网页
41:57具体来说他用的是 reddit
41:59reddit 是一个美国
42:01排名很靠前的一个新闻聚合网页
42:04在国内好像没有类似的一个服务
42:07他的想法是说每个人可以去提交
42:10你感兴趣的一些网页
42:11然后把你分门别类的放在每一个类别下面
42:15接下来 reddit 的用户就是对你投票
42:18说喜欢或者不喜欢
42:20然后给他就进行评论
42:22然后你投票的话
42:23会产生一个叫做karma的一个东西
42:26他最早来源于佛教里面的一个术语啊
42:30当我不是专家
42:31你大概可以理解成一个轮回报应值
42:34在 reddit 上面
42:35karma你可认为是用户对一个
42:37帖子的一个评价
42:38然后他选取了所有
42:40至少有三个 karma 的帖子
42:42reddit 的用户已经帮你读过
42:44而且我觉得里面有一定的价值
42:46然后他去把他所有的爬下来
42:49最后得到了4,500万个链接
42:52然后再把
42:53他里面的文字信息给你抽取出来
42:55就这样子得到了一个数据集
42:57这个数据集最后大概是800万个文本
43:00然后一共是40GBGB的文字
43:03然后在表1
43:03里面他又拎了一些句子出来证明说
43:07其实在我爬下来的数据里面
43:09就是对于英语翻法语这个例子来讲
43:12已经有了很多的这样子的样例
43:14比如说这句话是说有人写了
43:16在法语里面写了一句这样子的话
43:18然后如果翻译成英语来说
43:20那就是长这样子啊
43:22下面都是说
43:23这些东西
43:24都是怎么样对应的英语语句
43:26翻译成法语长什么样子
43:28作者想表达意思是说
43:29如果你在这样子数据上面
43:31训练语言模型的话
43:32很有可能他确实就可以
43:35真的把英语翻译成法语
43:36因为你的文本里面
43:37出现过很多这样子的例子
43:39当你有了更大的数据级的时候
43:41你当然可以把模型做了更大了
43:43作者一共设计了四个模型
43:45第一个模型有12层
43:47每一层他的宽度是768
43:49一共有1亿个可学习的变量
43:52那么就是来自于之前的 gpt 或者 BERT Base
43:55第二个模型就是 BERT large 了
43:58然后他在之上啊
44:00最大的情况下是说他
44:02把层数再翻了一倍就是24
44:05就是24变成了48
44:08然后你的宽度啊也从1024变成了1600
44:11基本上是1.5倍的样子
44:13得到了一共有15亿个可学习元素的模型
44:17就后面这些实验
44:18我们就没打算给大家仔细的去过
44:21因为他的实验啊
44:23主要是跟别的做 Zero Shot的方法比 会长什么样子
44:27比如说在这个地方
44:28你看到了是他的这四个模型
44:32跟当前在不同这些任务上面的 zero shot 的SOTA
44:36他的方法的比较
44:37这些方法
44:38不是我们之前讲过的BERT那一类
44:41而是说专门做Zero shot 那一类什么样
44:44当然是说 gpt 我们比你们都好
44:46因为你用到的模型
44:47复杂度和数据量
44:48确实比人家甩出几条街出来
44:50那在最前面其实有一张表显示呢
44:53是他在几个任务上面的一些体现
44:56比如说这个是你的阅读理解
44:59翻译摘要和问题回答
45:02下面你的轴分别是你的模型大小
45:04因为他这个地方有四个模型
45:06所以他一共有4个点
45:07然后这个地方你看到阅读理解上来说
45:09他似乎跟别人还是不错的
45:12就说这个是比较好的方法
45:13摘要上面就差一点啊
45:15这个是Seq2Seq
45:17加上注意力机制的一个模型
45:19还是差一点
45:20如果你在 QA 上面
45:21那就你跟现在的比较好模型差的远
45:23因为现在比较好模型还在远远的上面
45:25很远的地方了
45:26所以你还早的很
45:27所以就是说在摘要里面
45:30作者说
45:30虽然我们的结果还是比较有意思的
45:33在一线任务上还做不错
45:35另外一些任务上是有那么一点点意思
45:37所以他讲的也是比较委婉了
45:39但是注意到是说随着你的模型的增大
45:43你的性能还是在上升的
45:46也就是说你还是有希望
45:48训练更大的模型
45:49使用更大的数据集使得你的
45:51模型的性能啊能够突破天际
45:53使得跟真正的在有监督上面训练出来
45:56效果是一样
45:57这就是接下来工作 GPT-3要干的事情
46:00这样 我们就快速的过了一下 gpt 2这篇文章
46:03然后接下来我们来看 GPT-3这篇文章
46:05GPT-3这篇文章的标题叫做语言模型
46:09是 few Shot learner
46:11在讲 GPT 的时候
46:12我们有讲过他在文章的最后一段了
46:14其实也做了一些实验
46:16就是在此任务上面
46:17我给你提供一些样本
46:19但是不是在子任务上所有的样本的时候
46:22其实语言模型能够用最少数的样本
46:24能极大的提升性能
46:26GPT 2是在 GPT 上往前走了一大步
46:29是说在子任务上面
46:30我不给你提供任何相关的训练样本
46:33直接使用预训练模型
46:35去对子任务上做预测
46:37作者之所以这么做
46:38很有可能就是为了跟 BERT 的文章
46:41在新意度上能够有所区分
46:43我们有讲过
46:44一篇论文的价值取决于你的新意度
46:47要乘以你的有效性
46:49当然要乘以你问题的大小
46:50但是不管是 gpt 还是 bert
46:52他做的是同样的问题
46:53所以问题的大小是固定的
46:55gpt 2虽然在新意度上拉的特别高
46:58但是有效性比较低
46:59所以导致他论文的价值最后很难
47:02说是一篇特别重要的文章
47:04所以 GPT-3就是尝试去解决 gpt 2的有效性
47:08所以他又回到了 gpt 一开始考虑的
47:11few Shot设置
47:12就是说我不再去追求很极致的
47:15我在一个子任务上不给你任何样例
47:18其实在现实生活中也很少
47:20就算是人类你要学习的时候
47:22你也要通过一些样本来学习
47:24只是说人类在样本
47:26的有效性上做的比较好
47:27就通过一点点样本就行了
47:29但是语言模型需要大量的样本
47:31所以在这里 few shot的意思是说
47:34我还是给你一些样本但不用太多
47:36只要你的样本的个数是在可控的范围里面
47:39所以这个成本还是非常低的
47:41在作者上面
47:43可以看到作者基本上换掉了啊
47:45GPT 和 GPT2的一作已经跑到了最后
47:48前面的这些作者
47:50其实之前基本上是都没有出现过的
47:52如果大家感兴趣的话
47:53可以跳到文章的末尾
47:55他有详细的解释的每个作者是干的什么事情的
47:59我觉得GPT 3这篇文章的一大贡献
48:01真的就是
48:02虽然我挂了很多作者的名字
48:04但是我还真
48:05后面解释了每个作者干的什么事情
48:08也是给大家一个标杆
48:09说你可以写很多名字没关系
48:11但是你至少告诉我说
48:12这些人真的是干能活
48:14哎不是 就是上面挂个名字来赚一个引用了
48:17大家如果去仔细看的话
48:18基本上看到前面这些做的
48:20基本上都是在做实验的上面
48:22GPT 3这篇文章
48:23真的是做了特别特别多的实验
48:25这也是整个 open ai 他做文章的一大特点
48:29就如我们之前讲的 CLIP 文章
48:31他也是做了大量的实验
48:33所以导致有大量的作者
48:35接下来我们来看一下摘要
48:37摘要的前面几句话
48:38没有什么特别好看的
48:40就跟之前没有什么太多区别
48:42具体来看呢
48:43是说我们训练了一个 GPT 3的模型
48:46这也是一个自回归模型
48:48但是他有1,750亿个可学习的参数
48:54比之前所有的那些非稀疏的模型
48:57稀疏的模型 是说你整个权重可以是稀疏的
49:00里面有大量的0
49:02但如果你的模型有很多很多0的话
49:04你把这些0算进去的话
49:05你的模型也算的特别大 所以他作为对比啊
49:08他跟那些非稀疏的
49:10就是不会存在很多0的这些模型相比
49:13他比他要大10倍
49:14就是在可学习的参数上面
49:17然后因为你的模型已经那么大了
49:19那么在做子任务的时候
49:21你如果还要去训练你的模型的话
49:23那么你的成本上是很难的
49:25所在这个地方
49:26GPT-3在作用到指任务上面时候
49:30不做任何的梯度更新或者是微调
49:33就是就算是在 Few shot 的情况下
49:36给你一些样本情况下
49:38GPT-3也不是用微调
49:40因为因为微调需要你总是去算梯度
49:43那么大的模型
49:44算梯度是非常非常难的事情
49:46所以这个地方
49:46他是不做任何的梯度更新的
49:48也是他的一大特点
49:50然后他说我在
49:52所有的这些 NLP 的任务上取得了很好的成绩
49:56这也是跟 GPT 2他能区分开来
49:59GPT 2 他的成绩跟我们想要的还差得很远
50:02然后最后作者说 GPT 3能生成一些
50:05新闻的文章
50:07而且人类读起来是很难区分
50:09看来你到底是模型生成的
50:11还是人类写的
50:12这也是 GPT 3的一大卖点
50:14也就是后面大家能通过他
50:17玩出花样来的一个主要的地方
50:19在这个地方还有这就是摘要
50:21就是说 GPT 3特别大
50:23在做子任务的时候不需要算梯度
50:25这是因为他特别大
50:26而且他的性能特别好
50:28这是他想要表达的东西
50:30接下来是他的目录
50:31这也是我们第一次读到
50:33在论文的第二页放目录的文章了
50:36然后可以看到前面两节是讲他的方法写了10页
50:40然后是他一个长长的结果
50:42他又写了10页
50:43在后面是一个长达20页的一个讨论
50:47在讨论之后还有一个20页的附录
50:50里面讲的是一些细节
50:52所以整个文章有63页
50:54他不是一篇投稿的文章
50:56而是一个技术报告
50:58所谓的技术报告是讲没有发表的文章
51:01因为他没有板面啊和页数的限制
51:03你可以写的特别长
51:05当然长有长的好处啊
51:06他可以把东西写的特别细
51:08所以你在读他的时候
51:09可能没有相关的背景知识
51:11读起来也没问题
51:12但是长的坏处是说
51:14你的阅读门槛又增加了
51:16如果我就想了解一下
51:17你做什么事情我要读63页
51:19那我怎么读
51:20但这个地方我的个人看法是
51:22GPT-3真的没必要写那么长
51:24他写那么长
51:25他并没有把前面的东西
51:27交代的特别详细
51:29也就是为什么我们在讲 GPT-3之前
51:31需要给大家讲一下什么是 gpt 和 GPT 2
51:34因为这两篇文章的内容
51:36在 GPT-3这篇文章里面是没有覆盖的
51:38就是说虽然我写了63页
51:40但我并没有讲前面两个工作什么东西
51:43而且GPT-3是完全基于 gpt 2这个模型的
51:4663页并没有讲这个模型
51:48而是他花了大量的篇幅去想着
51:51结果啊和后面那些讨论
51:53所以导致说在读这个63页的论文之前
51:56我们先得把前面两个论文给读了才行
51:58所以我个人是非常不推荐
52:00大家这种写法啊
52:02你要么就写的短一点
52:03大家读下来很快就知道你的中心思想
52:06要么你就写的长一点
52:07把前面的背景知识
52:09给大家详细的介绍一下
52:11我不需要读前面的文章
52:12从你这篇文章开始
52:13我也能知道你在做什么
52:15像这种你既需要读前面文章
52:18又需要读我很长的文章
52:19只有当你的工作是真的是特别特别好的时候
52:22你才可以那么任性
52:24别人才会来读你的文章了
52:25我们接下来看一下导言
52:28导言的第一段还是说最近一些年来啊
52:30NLP 里面 大家都使用预训练好的语言模型
52:33然后再做微调
52:35第二段话是说这当然是有问题的
52:37他什么问题呢
52:38他说我们对每个子任务
52:40我还是需要一个跟任务相关的数据集
52:43而且呢要跟你任务相关的一个微调
52:47具体来说他列了三个问题
52:49第一个问题是说
52:51你需要一个大的数据集
52:52你得去标号吧
52:53这当然是有问题的
52:55GPT-2也讲到这个事情了
52:56第二个我觉得就相对来说比较虚一点
53:00就是说当你的一个样本
53:02没有出现在你的数据分布里面的时候
53:04你泛化性
53:05不见得就比你那个小模型要好
53:08所以是说
53:08如果你在微调上面的效果很好的话
53:12也不能说明你的预训练的模型
53:15他的泛化性就特别好
53:16他很有可能就是你过拟合你的
53:19预训练的训练数据
53:21而且这个训练数据跟你的微调
53:23所要的那些任务啊
53:24刚好有一定的重合性
53:26导致你在这些微调任务上
53:28是做的比较好的
53:29就跟之前用书来做预训练
53:31用Wikipedia做预训练
53:33或者是在往上爬的网页做预训练
53:35这些文字里面
53:36刚好包括你所有下游任务
53:39他要的那些文字
53:40他们都是
53:41类似的一些文字
53:42所以导致你的微调效果比较好
53:44但是如果你换到一个别的语种啊
53:47或者换到一个更专业性的文本上面
53:49你的表现力可能就不那么的好了
53:51所以作者在这里的意思是说
53:53假设我不允许你做微调
53:55不允许你改变你预训练模型的参数的话
53:58那么你就是真的就是拼的
53:59预训练模型的泛化性
54:01假设我允许你微调的话
54:03那么预训练模型可能好一点坏一点
54:05他都差别不那么大了
54:07第三个是说人类啊
54:08大家都会说到人类
54:09人类不需要一个
54:11很大的数据集来做一个任务啊
54:13就是说你有一定的语文功底的话
54:15我让你做一个别的事情
54:16你可能给你两个例子
54:18告诉你怎么做就行了
54:19你不需要再采集成件上万
54:22就你不要做个几本习题题
54:23才会掌握一个小应用了
54:25然后作者提出这个问题之后
54:27要讲他的解决方案
54:29他的解决方案也跟之前讲过
54:30他其实也就是做
54:32few Shot或Zero Shot的学习了
54:34在这个地方呢作者呢
54:36他又换了一个名词来了
54:38他说一个解决这个问题的办法
54:41叫做Meta -Learning
54:44叫做元学习
54:45我觉得作者在取名字这个事情上
54:48也不见得是那么的精确
54:51就是跟 gpt 2用的是 multi task 多任务学习
54:55但是他其实跟
54:56之前的 Multi Task learning
54:58还是有那么一点点区别的
55:00然后在这个地方
55:01他又试图去重新定义
55:03什么叫做Meta-Learning
55:06他有一个注释啊
55:07有个长长的注释讲的说啊
55:08他我们跟之前大家
55:10叫的Meta-Learning当然是有一点的不一样了
55:12所以这个地方我们有我们自己的定义
55:14但我觉得
55:15你如果想重载前面大家都知道的一些名字的话
55:21除非有特别多的必要啊不然没意义
55:24因为你会给大家造成误解
55:26而且 大家现在讲到 GPT 3这边文章的时候
55:29也不会去提 他是用的是Meta-Learning
55:32或者是他是用的是 Multi Task learning
55:34然后他当然在后面又定了一个名字
55:37叫做 in Contex learning
55:39就是在有上下文之间的学习
55:41虽然用的是 zero Shot、Few Shot
55:44他在这个地方在 摘要 上面已经讲过
55:46我是不更新我的模型了
55:49因为在
55:49计算机视觉里面我们有讲Zero Shot
55:51Zero Shot好理解
55:52那我什么都不干没关系
55:54但是作为 few Shot的话
55:56我给你一些样本的话
55:57我还是可以用这些样本来
55:58对我的模型继续更新
56:00这样子我能够更拟合到这个上面去
56:03他这个地方他强调的是
56:05我不要对我的权重做任何的更新
56:07因为你的模型太大了更新不了
56:10所以呢
56:10他这个地方要需要跟前面做区分开来
56:13所以他尝试的
56:14用了两个名词的这个地方
56:16一个是Meta-Learning一个是in context learning
56:19但是大家理解一下他想什么就行了
56:21所谓的Meta-Learning
56:22就是我真的训练一个很大的模型
56:24里面的泛化性还不错
56:26in coneax learning 是说我在后面的时候
56:29即使告诉我一些训练样本
56:31我也不更新我的权重
56:32他在前面有画一个图啊
56:34就是图1上面有讲了一下
56:35Meta-Learning的大概一个想法
56:37他这个地方
56:38画的是有一点点的奇怪的啊
56:40他看上去好像是讲
56:41我的模型是怎么训练的
56:43就是说我有一个通过 sgd
56:45来做预训练的过程
56:47然后呢在每一步里面
56:49好像要做一个什么样的事情
56:51他其实他不是真正的讲
56:52GPT 3这个模型怎么训练出来的
56:55而是说这个语言模型呢
56:57你可以怎么样类比成一个Meta-Learning呢
57:00他是说如果你这一个是一个样本
57:02这也是一个样本
57:03而且每个样本来最不同的文章的时候
57:07可能他要干的事情不一样
57:09比如说这一个样本有这一段话
57:11告诉你的是各种加法怎么做
57:14下面的话告诉你是一个错别字
57:17怎么样改成一个正确的
57:18然后再后面就是英语翻成法语
57:21所以说在每一个段落或者每一个文章
57:24如果来自很不一样的地方的时候
57:26他可能教你不一样的东西
57:28如果你在大量的这种
57:30很多样性的文章上做训练的时候
57:32你的模型
57:33多多少少有在做一个元学习的过程
57:36就是他学习的大量的任务
57:38而且每一个段落
57:39你可以认为是一个叫上下文的学习
57:41因为他们之间是相关的
57:44然后你要从上下文来得到一些信息
57:46但是他们之间呢他就没有太多关系了
57:48就是多个任务之间了
57:50所以这个东西放在这里啊
57:51其实放不放
57:52我觉得他都不影响到他的模型的啊
57:55但是放在这里我们就讲一下
57:56但是大家如果一开始读的时候
57:58读的有点奇怪啊
58:00可以忽略不要紧
58:02然后再讲了他的设定之后
58:03他又说最近些年啊
58:05大家的模型的大小变得越来越大
58:07但是其实我觉得也就是 open ai
58:10把整个军备竞赛给大家搞了起来
58:12像 gpt3 一出来大家都觉得哇
58:15你可以做那么大
58:15然后别的公司也纷纷的跟进
58:18不管是美国的还是国内的公司
58:20大家也愿意去参加这样子的比赛
58:23然后在后面也是说
58:24GPT-3是一个1750亿个可学习参数的模型
58:29然后他的模型
58:30他的评估是用了这三个办法
58:32一个叫做 FewShot Learning
58:34也就是说对每个子任务啊
58:36我给你提供大概10-100个的训练样本
58:40那么他的一个特殊的情况
58:41叫做One Shot的案例
58:43就是每一个任务我只给你一个样本
58:45就是说英文翻法语的时候
58:47我就告诉你一个
58:48英文 hello word 怎么翻成法语的那一个词
58:51然后让你接下来给我继续翻下去
58:53那么接下来是 zero Shot
58:54就是说我一个样本都不告诉你
58:56我就让你英语翻法语
58:58然后他在一开始啊给大家的一张图
59:00给大家展示了一下
59:02在三个设定下他的模型的一个区别
59:06他的 x 轴在这个地方
59:07是整个语言模型课学习参数的大小
59:11啊这1.3 B基本上就是 GPT 2的模型
59:15然后你的 y 轴是你的 accuracy
59:17当然你在很多
59:19子任务上面他做了一个平均
59:20就是这些虚线是每一个子任务上的
59:23然后他做平均就变成了三个实线
59:26然后这里有三条线颜色不一样的线
59:28黄色表示的是 few shot
59:30绿色表示的是 one shot
59:32蓝色表示的是 zero shot
59:34之前我们讲过的 GPT 2这篇文章
59:36你可以认为就是1.3 b 这个模型
59:38然后用 Zero Shot
59:39那么精度可以认为是
59:40平均下来是30%左右的样子
59:42然后你把1.3 b 变成了175 b 的时候啊
59:46就这个点的时候
59:47而且使用了 Few shot 就允许给你
59:5010-100个的样本的时候
59:52那么基本上看到他的精度接近了60%啊
59:56就是基本上你的精度翻了一倍了
59:58所以可以看到效果还是非常明显的
01:00:01好这就是他的导言
01:00:02接下来我们来看一下第二章
01:00:04也就是他的模型的部分
01:00:06在模型的部分呢
01:00:07他先给大家又重新讲了一下
01:00:09什么叫做Fine tuning
01:00:10然后他的 few Shot learning
01:00:12和他 one Shot
01:00:14以及他的 Zero Shot他到底是什么区别
01:00:16但其实你在这个地方
01:00:17你可以通过下面这个图啊
01:00:19是看的比较清楚的
01:00:21首先右边讲的是微调是怎么做的
01:00:24在微调的时候
01:00:24我们训练好预训的模型之后
01:00:27在每一个任务上面
01:00:28我们提供一些训练样本
01:00:30然后这个地方
01:00:30假设我使用批量大小为1来训练的话
01:00:33就每次给你一个样本
01:00:35这个是英语翻法语的样本
01:00:37因为我有标号所以我能计算损失
01:00:39然后我就可以去对他的权重进行更新
01:00:43再拿到一个新的样本继续更新
01:00:45就可以当做一个很正常的
01:00:46训练任务来做
01:00:47但是跟之前不一样的是说
01:00:49微调通常对数据量的要求要
01:00:51少于从0开始训练
01:00:53而且在学习率上
01:00:54通常可以做的比较小一点
01:00:56这是因为微调的初始值啊
01:00:59那个模型是用预训练好的模型做的
01:01:01所以他跟你最终的解 已经很近了
01:01:04所以你只要大概稍微调一下就行了
01:01:06但是在 gpt 3模型的设置里面
01:01:08他追求的是不做梯度更新
01:01:10当不做模型更新
01:01:11他肯定是有他的新意度的
01:01:13反过来讲
01:01:14那么大一个模型
01:01:15假设换了一个新任务上
01:01:17还得再做更新的话
01:01:19那么他的使用门槛是比较高
01:01:21所以也不可能使得像现在那样
01:01:23大家可以在 GPT-3上面玩出花来
01:01:26他这里使用的是英语翻法语这个例子
01:01:29他想干的事情是说把英语的Cheese
01:01:32翻成法语的 对应的单词
01:01:34假设在Zero Shot里面怎么办
01:01:36他就在前面加一句说把英语翻成法语 然后冒号
01:01:40这是你这个任务的描述
01:01:42当然 他希望你预训练好的 GPT-3模型
01:01:45有理解这句话是想干什么事情
01:01:46然后是把我要翻译的词放进来
01:01:49加一个箭头
01:01:51箭头这个东西叫做 prompt 也叫做提示
01:01:53告诉你这个模型说好
01:01:55接下来就是轮到你输出了
01:01:57然后把这句话放进模型
01:01:58模型对下一个词的预测
01:02:00这个词那就应该是Cheese
01:02:02对应的法语的单词
01:02:03如果你对了那就是对了
01:02:05如果错了那就是你模型预测错误
01:02:07如果需要 one shot 怎么做呢
01:02:09就是在你任务描述之后
01:02:11和在你真正的做翻译之前
01:02:14我插一个样本进来
01:02:16就是在定义好这个任务之后
01:02:18我再告诉你一个例子
01:02:20英语单词翻成法语单词
01:02:21应该是这么翻译的
01:02:23就希望你的模型在
01:02:25看到整个句子的时候
01:02:26能够从这条里面提取出
01:02:28有用的信息来帮助你做后面的翻译
01:02:31注意到这一点是说
01:02:33这是一个样本放进去的
01:02:35他只是做预测
01:02:36他不做训练
01:02:37就说虽然他是一个训练样本
01:02:39但是他放进之后是不会对模型算梯度
01:02:43也不会对模型做更新
01:02:44所以他希望的是你在模型在做
01:02:48前向推理的时候
01:02:50能够通过注意力机制
01:02:52然后去处理比较长的序列信息
01:02:54从而从中间抽取出来有用的信息
01:02:57能够帮助你下面做事情
01:02:59这也是为什么叫做上下文的学习
01:03:01是你的学习只是限于你的上下文
01:03:04那么 few shot 的能力呢
01:03:05就是对One shot 的一个拓展了
01:03:08就之前我是给你一个样本
01:03:09现在我会给你多个样本
01:03:11当你可以做更长
01:03:12但是更长不一定有用
01:03:14因为你这个模型
01:03:15不一定能处理特别特别长的
01:03:18数据 就说如果你的序列很长的话
01:03:21那么模型也不一定有能力把整个
01:03:23句子里面的信息给你抽取出来
01:03:25然后让你帮助到生成做这个事情
01:03:27所以看完这个图之后
01:03:28大家就知道这两种模式之间的区别
01:03:31GPT 3采用了这个系列
01:03:33当然是对新的任务更加友好了
01:03:35就说我 碰到一个完全之前没见过的任务的话
01:03:38我不要去更新我的模型
01:03:40因为做模型的推理和做模型的训练
01:03:43在你的设置上是很不一样的
01:03:46因为在训练的时候
01:03:47我对内存的要求更高
01:03:49而且有超参数要调
01:03:50而且得很好的准备你的训练数据
01:03:53但现在我只要做预测就行了
01:03:55来个新任务给你
01:03:57你把结果返回给我就行了
01:03:59这当然是他的好处
01:04:00也有一点的坏处啊 坏处是说
01:04:02假设我真的有很多训练样本那怎么办
01:04:06比如说我就做英语到法语的翻译
01:04:08大家很容易在网上找到个几百上千个样本来帮助你翻译
01:04:11对吧这个时候你发现
01:04:13你想放进去是很难的一件事情
01:04:15你难道你要构造个样本里面
01:04:17把整个子任务的训练数据放进去吗
01:04:20那么就是特别长你可能模型处理不了
01:04:22第二个问题还是相关的
01:04:24就是说 我假设有一个还不错的训练样本
01:04:27然后你的模型呢
01:04:28在不给你的训练样本时候表现不行
01:04:30我需要给你个训练样本
01:04:31但是每一次我都给你
01:04:33就每一次做一个新的预测的时候
01:04:35我都把你给你
01:04:36因为你这个模型是
01:04:38每一次的时候
01:04:38要从中间去抓取有用的信息
01:04:40就我不能把
01:04:41上一次模型从中间抓取的信息
01:04:44给你存下来
01:04:45存到你这模型里面
01:04:46所以这也导致说
01:04:47虽然 GPT-3
01:04:48在一年半前就把这个效果做的那么好
01:04:51但实际上好像用 FewShot 做这种
01:04:53上下文的学习
01:04:55似乎用的还不那么的多
01:04:572.1节讲的是他的模型和架构
01:05:01他说 GPT 3的模型跟 GPT 2的模型是一样的
01:05:04后面补充了
01:05:05GPT 2模型跟之前 GPT 的区别
01:05:07是你的模型的初始改变了啊
01:05:09把你的Normalization放到了前面呢
01:05:11和可以反转的词元
01:05:13是也做了一点的改动
01:05:15具体来说
01:05:15他就是把 Sparse Transformer 这个工作啊
01:05:18里面的那些改动给你拿了过来
01:05:20然后他设计了8个不同大小的模型
01:05:24具体来说会看在表2.1里面讲了
01:05:27这个表里面每一行表示的是一个模型
01:05:31每个列能表示的是模型的一些参数
01:05:33比如说这个列表示的是
01:05:35你模型里面有多少个可以学习的参数
01:05:37然后你的模型里面有多少层
01:05:39然后你每一层呢
01:05:41你那个词表示成一个多么长的向量
01:05:44以及在多头注意力里面有多少个头
01:05:46就是你每个头的那一个维度的大小
01:05:49他就是等于你这个d model 除以你 n heads
01:05:53Batch size 是说在训练的时候
01:05:55每一个小批量大小多大
01:05:57最后是你在训练的时候
01:05:59用的学习率是多少
01:06:00首先看一下第一个模型啊
01:06:02第一个模型是 GPT 3 Small
01:06:04可以看到他12层
01:06:05每一层大小是768
01:06:07是不是很熟悉
01:06:08他就是 gpt 模型
01:06:10他的参数是这样子的
01:06:11然后他的可学习参数是1.25个亿
01:06:14也是 BERT Base 他的模型的大小
01:06:17GPT-3 medium
01:06:1924层每一层大小是1024
01:06:22然后大家知道
01:06:23这个尺寸是 BERT large 的尺寸
01:06:26然后在后面这个模型呢
01:06:27就是层数没有变
01:06:28但是你每一层的那个宽度有增加
01:06:31然后看到1.3 b 这个模型啊
01:06:33虽然之前我们在讲图2的时候
01:06:35讲到这个结果时候
01:06:36我们说这个结果大概等价于
01:06:38gpt 2的模型
01:06:39gpt 2的大小是1.5 b
01:06:41但实际上他的
01:06:42大小是跟 gpt 2是不一样的
01:06:44gpt 2在这个地方其实他有48层
01:06:47但是他的模型呢宽度是要窄一些
01:06:50所以 GPT-3 xl 跟 gpt 2比他是要浅一些
01:06:55然后要宽一些
01:06:56然后他一直增加
01:06:58增加到最后就是 gpd3 175 b
01:07:01或也简称是 GPT 3这个模型的话
01:07:04他用的是96层
01:07:06然后每一层的大小
01:07:08已经到了一万二千的左右了
01:07:10所以这个已经是非常
01:07:11非常大的一个尺寸了
01:07:13然后大家可能会问
01:07:14这些参数怎么样定出来的
01:07:16我觉得这个可能是作者拍拍脑袋吧
01:07:19但我们知道
01:07:20就是说你把你层数增加的时候呢
01:07:22你的宽度也应该增加
01:07:24我们知道把层数增加的时候
01:07:26你的宽度也要对应的增加
01:07:29因为你的计算复杂度
01:07:30跟你的宽度是平方关系
01:07:31跟层数是线性关系
01:07:33但整体来说
01:07:34GPT-3的模型是比较偏扁一点的
01:07:36比如说 GPT-3最大的模型
01:07:38跟前面比那就是16倍的大小关系
01:07:41但是在96这个层数上呢
01:07:43其实跟前面比
01:07:44也就是最终是8倍的关系了
01:07:46然后看到批量的大小在大小可以看到
01:07:49当你训练很大的模型的
01:07:51他用的是3.2个Million
01:07:53也就是说你一个小批量里面有320万个样本
01:07:57这是一个非常巨大的一个批量大小了
01:08:01这个对你内存的考验是非常大的
01:08:03因为你在计算的时候
01:08:05因为你在计算梯度的时候
01:08:06你中间变量的那一个大小是
01:08:09跟你的批量大小成正比关系的
01:08:12当然在分布式的情况下
01:08:13假设你在机器与机器之间用的是
01:08:16数据并行的话
01:08:17那么你每台机器要计算的批量大小
01:08:19应该就是320万除以你机器数量的大小
01:08:22所以如果你有很多台机器的话
01:08:24你 100或上千台机器的话
01:08:26每台机器也还是能撑住的
01:08:29作者有提到
01:08:29你为什么要用相对来说比较大的批量大小
01:08:32因为你批量大小一大的话
01:08:34你的计算性能会好
01:08:35就每台机器的并行度更高
01:08:37而且你的通讯量也变低
01:08:38所以分布式是比较好的
01:08:40之所以你在小的模型
01:08:41你不用很大的批量大小
01:08:43是因为 对小的模型其实是更容易过拟合一些
01:08:47就是你需要用一个相对来说
01:08:49比较小的批量的大小
01:08:50这样子导致你在采样的时候
01:08:52数据里面噪音是比较多的
01:08:54然后你当你的模型变得很大的时候
01:08:56你相对来说用大的批量大小
01:08:58你降低了批量里面的噪音
01:09:00好像对大的模型来说
01:09:01问题不是那么的大
01:09:03这有一点点反直觉啊
01:09:04这一块其实最近有很多工作去研究
01:09:07为什么这么回事
01:09:08当你的模型变得越来越大的时候
01:09:10似乎你的过拟合没有那么的严重
01:09:12大家怀疑有两个原因啊
01:09:14一个原因是说你神经网络他
01:09:15背后这么设计下来
01:09:17大家训练出来能得到比较好结果
01:09:19其实背后有一定的结构
01:09:22使得他不那么容易
01:09:23就像简单的 mlp 一样
01:09:25直接的这么那么过拟合了
01:09:28第二个是说
01:09:28当你的模型变得越来越大的情况下
01:09:31而且在有结构的情况下
01:09:32他能收得了范围更广
01:09:35而且这样就更有可能去概括到一个
01:09:38可能存在的一个比较简单的一个模型架构
01:09:41如果你的模型比较小的话
01:09:42你可能搜索空间都
01:09:43搜不到那一个简单的模型那边去
01:09:46当你模型很大的时候
01:09:47那你的 SGD能够帮助你去找到那一个模型
01:09:50最后导致你的泛化精度比较好
01:09:52当然都都是一些猜想啊
01:09:53大家有在做研究工作
01:09:55我们在这里就不展开给大家讲了
01:09:57最后学习率啊
01:09:58学习率 他就是当你批量大小变大的时候
01:10:01你的学习率他是往下减的
01:10:03这个其实也是跟之前的一些工作
01:10:06他的结论是相悖论的啊
01:10:09之前 facebook 的一个工作是说
01:10:11当你的批量大小往上增的时候
01:10:13你的学习率要线性的往上增
01:10:15但这个地方他其实是一个反过来的
01:10:17他学习的往下降
01:10:18作者在段落中有提到
01:10:20为什么他是要往上增和往下降啊
01:10:23大家可以去看一下他
01:10:24文章里面提到的原始论文里面的解释
01:10:27反过头来看2.1章啊
01:10:29他真的就是比较短小的
01:10:30就是两段话就解决了
01:10:32也就半页的样子
01:10:33就是说在一篇63页的文章里面
01:10:36整个模型的架构就写了不到半页
01:10:39而且这个地方你根本就没写清楚
01:10:41是说我的模型跟 gpt 2是一样的啊
01:10:44那么你得去看一下 gpt 2
01:10:45然后说我在上面又做了一些改进呀
01:10:48用了一个叫 sparse transformer 的结构
01:10:50你得也去看这篇文章
01:10:51然后这个地方还提了一句
01:10:53说 GPT2其实跟 GPT1是改了这些东西
01:10:56就导致说你作为一个读者的话
01:10:58你想搞清楚 GPT-3
01:10:59整个模型长什么样的话
01:11:01你得去读一系列的参考文献
01:11:03当你这篇文章已经有63页的情况下
01:11:06我觉得这么做是没有那么的必要性的
01:11:09你在这个地方就给大家讲一下 gpt 2
01:11:11模型长什么样子
01:11:12甚至是 gpt 模型长什么样子
01:11:14以及说你这个 spaster transformers
01:11:16长什么样子
01:11:17你就算是放在一个相关工作里面
01:11:20或者放在后面都是可以的
01:11:22因为这样的话
01:11:23会给没有读过之前那些文章的
01:11:25读者带来很大的便利
01:11:27这是因为你去读前面工作的话
01:11:29你还得把他的完整的故事读一遍对吧
01:11:31他的记号用的是什么
01:11:33他的这些表达是什么样子
01:11:35然后我们已经读到这个地方了
01:11:37用所有的标号啊
01:11:38整个写作风格我们已经读下来
01:11:40是比较熟悉了
01:11:42如果你在这个地方写清楚
01:11:43或者甚至是你在后面的附录写清楚
01:11:46那我也不需要重新再读一个新的故事
01:11:49而是直接知道这个技术
01:11:50细节长什么样就行了
01:11:52也符合这篇文章要卖的
01:11:53就是上下文的学习
01:11:55当然我们这不是要
01:11:56批评这篇文章写的不好啊
01:11:57只是给大家指出来
01:11:58说读这篇文章上遇到这样子一些障碍
01:12:01大家自己在写作时候
01:12:03可以想办法去避免这样子的事情
01:12:06第2.2节讲的是他的训练的数据
01:12:09当你要做一个很大的模型的时候
01:12:11当你的训练数据就得非常大了
01:12:13这个地方
01:12:13他们的训练数据是基于 common Crawl
01:12:16在 GPT 2这篇文章里面
01:12:18他有提到说我们可以考虑 common Crawl
01:12:20但是他觉得 common Crawl 里面的数据太脏了
01:12:23用起来比较难
01:12:24所以他采用的是另外一个办法
01:12:26在这个地方
01:12:27如果你想训练一个比
01:12:28GPT2要达100倍的模型的话
01:12:30那他得不得不去
01:12:31重新去考虑 common Crawl这个数据了
01:12:34具体来说
01:12:34他做了三个步骤来
01:12:36使的这个数据让他变得更干净
01:12:38首先他们过滤了一个版本
01:12:41然后是基于他的
01:12:43相似性和一个更高的一个数据集
01:12:46具体来说他干了什么事情呢
01:12:48啊大家回忆一下
01:12:48在 GPT 2里面他把 reddit 的上面爬下来
01:12:52然后把 Karmma大于3的那些帖子
01:12:54给你下载下来
01:12:55作为一个高质量的网络数据集
01:12:58那这个地方他干的事情就是说
01:13:00把 common Crawl 下下来
01:13:01然后呢把他的样本作为负例
01:13:04然后之前 gpt 2那个网页数据集啊
01:13:06作为正例
01:13:07那个是高质量的 common Crawl
01:13:09你认为大部分是低质量的
01:13:11然后在上面做了一个很简单的
01:13:12Logistic Regression 做一个二分类
01:13:14正类是 gpt 2的爬下来的数据集
01:13:17负类是 common Crawl 里面的
01:13:19那么接下来做预测
01:13:21对 common Crawl 里面所有的网页拿出来
01:13:23如果分类器认为你是偏正类的话
01:13:26就说你的质量比较高的话
01:13:28那么他就留下来如果是
01:13:29如果是判断出来很负类的话
01:13:31那么就是过滤掉
01:13:33第二个是他做了一个去重的过程
01:13:36就是说如果一篇文章跟另外一篇文章很相似的话
01:13:39那我们就把这篇文章去掉
01:13:41他具体用到的是一个叫做 lsh 的算法
01:13:44他可以很快的判断一个集合
01:13:47一篇文章是一个集合
01:13:48就是一些词的集合
01:13:49和另外一个
01:13:51很大的一个集合之间的相似度
01:13:53这个在Information Retrieval里面
01:13:55是一个非常常用的技术
01:13:56如果大家不熟悉的话可以去看一下
01:13:58这也是在面试中间
01:14:00大家很喜欢问的一类问题
01:14:02第三个是说我们又加了一些
01:14:04已知的高质量的数据集
01:14:05就是把之前的BERT
01:14:07gpt 2啊 gpt 的所有数据都拿 过来也加进来
01:14:10最后就得到一个
01:14:12非常大的一个数据集了
01:14:13可以看一下在放在下面这个地方
01:14:16首先第一行就是 common Crawl
01:14:17就是他们新加进来的数据
01:14:19这里面一共有4万亿个字
01:14:22web text 就是 GPT 2用的数据集
01:14:25它上面一个比下面一个大20倍的样子啊
01:14:28但是它的模型已经大了100倍啊
01:14:30然后接下来是书的数据集和 Wikipedia
01:14:33就虽然 common Crawl 里面给你带来了大量的数据
01:14:36但是作者认为它里面
01:14:37质量还是相对来说比较差的
01:14:39所以在采样的时候
01:14:40他是用了稍微不一样的采样率
01:14:43虽然 common Crawl 你比后面这些
01:14:45加起来还要大那么7、8倍的样子
01:14:48但是在采样的时候
01:14:50也是说一个 批量大小 一个一百万大小的批量里面
01:14:53也就是60%的数据是来自common Crawl
01:14:57有 22%的数据是来自于 Web text 2 的
01:15:01就你可以看到
01:15:01common Crawl 里面的数据也就比下一个多3倍
01:15:04虽然你的大小上来时候多了20倍
01:15:07而且下面这些 Wikipedia
01:15:08虽然他的大小比你上面要小很多很多
01:15:11但是他的权重并不低
01:15:13也就是导致说在采样的时候
01:15:15他大量的采样的 Wikipedia
01:15:17Books1和 web text 2的数据
01:15:19这样子保证你这个小批量里面
01:15:21有大部分的数据
01:15:22他其实的质量还是很高的
01:15:25具体来说这个权重怎么来的
01:15:26好像作者也没有解释的那么清楚了
01:15:292.3是一个非常短小的段落
01:15:32来讲整个模型是怎么训练的啊
01:15:34这个又是这篇文章不那么"厚道"的一个地方
01:15:36GPT-3这个模型是非常难训练的
01:15:39要想他有接近
01:15:402,000亿个可以学习的参数
01:15:41整个模型是非常大的
01:15:44你训练他的话当然需要分布式训练
01:15:46然后你需要做非常好的模型分割
01:15:48和数据分割
01:15:50然后他说他是在一个 v 100的
01:15:53有的带宽很高的集群上训练的
01:15:55这个集群来自于微软
01:15:57那实际上说他用的是DGX-1 的一个集群
01:16:02那里面的带宽是非常非常高的
01:16:04一般的人是买不起
01:16:06所以他就一句话就带过了
01:16:08虽然他说我在
01:16:09附录B里面有讲这些东西
01:16:11实际上他也没讲什么东西
01:16:12就讲了一些超参数是怎么训练的
01:16:14这一块啊
01:16:15如果要真的讲的话
01:16:16其实有很多很多东西可以说
01:16:182.4节是讲模型的评估
01:16:21跟之前不一样
01:16:21因为这个地方他不需要做微调
01:16:23所以他不需要一个额外的章节是说
01:16:25微调是怎么做的
01:16:26而是说我预训练模型好了
01:16:28就 我就直接对他进行评估
01:16:30在评估的时候
01:16:30他用的是上下文的学习啊
01:16:33具体来说他在每个下游的任务里面
01:16:35他的训练集里面
01:16:36采样 k 个样本作为你的条件
01:16:39但 k 可以等于0啊1啊或者10到100
01:16:42然后他的 prompt 用的是 Answer:
01:16:45或者 A:
01:16:46比如说我要做分类的时候
01:16:49比如说那么我就把
01:16:50几个样本采样出来放在前面
01:16:52你在前面加一个我要干什么事情
01:16:54如果你是二分类的话
01:16:56那么你的答案要么是 True 要么是 False
01:16:58而不是说一个0或1
01:17:00因为0或1在训练数据中出现的概率没了
01:17:03True 和 False 那么高
01:17:05接下来 如果你的答案是一个自由的形式的话
01:17:08比如说我在做问答的时候
01:17:10假设你的答案是要
01:17:12真的给我回答
01:17:13一个自己编出来答案的话
01:17:14那么他就采用的是Beam Search
01:17:17就是跟机器翻译一样啊
01:17:18我生成一个序列出来
01:17:20然后用Beam Search就找到一个比较好答案
01:17:22所以到这里
01:17:23他就讲完了他整个模型的部分
01:17:26可以看到 虽然到这个地方已经有实验的样子
01:17:28但实际上他真正的讲模型啊
01:17:30训练那一部分是相当相当的少的
01:17:33他花了很多时间去讲
01:17:34他整个设定长什么样子
01:17:36画一个图告诉大家
01:17:38所以在那么长的论文里面
01:17:39就那么一点点地方讲你真正的干货
01:17:42是一个比较奇怪的做法
01:17:44这也是为什么
01:17:44我们在之前
01:17:45先给大家讲的 GPT 和 gpt 2这篇文章
01:17:48再来讲 gpt 3
01:17:49如果你直接读 gpt 3这篇文章的话
01:17:51你会发现读起来还是不那么容易的
01:17:53接下来是长达20页的结果
01:17:56我们就不给大家一一的详细讲了
01:17:58就给大家过一下比较有意思的一些图吧
01:18:01下面第一个图
01:18:02展现的是不同大小的模型
01:18:04在训练的时候
01:18:05他跟你的计算量的一个关系
01:18:07x 轴表示的是计算量
01:18:10你的Y轴表示的是你的验证的损失
01:18:13他这个地方用验证损失
01:18:15是因为他发现验证损失
01:18:17跟你这些子任务上的精度是有一定关系的
01:18:20所以能够很好的表示你预训练模型的一个好坏
01:18:23就每一根线啊表示的是一个
01:18:27参数的模型
01:18:28当你训练时间变长的话
01:18:29你的计算量会跟着增加
01:18:31这个地方每一根线啊
01:18:32表示的是一个不同设置的模型
01:18:35这个黄色表示的是 GPT-3最大的那个模型
01:18:38当这个线表示的是最小那个模型
01:18:40当你随着你的训练的增加
01:18:43那么你的计算量会增加
01:18:44因为他算的是你到目前为止
01:18:46所有的计算量
01:18:47可以看到这个地方基本上就收敛了
01:18:49虽然你的计算还在往上涨
01:18:51但是你的损失没有再往下降
01:18:53最好的一个权衡其实在这个地方
01:18:56相对于计算量和损失来讲
01:18:58最低的是这个点
01:18:59就是说你训练到这个地方就差不多了
01:19:00你不用往下训练了
01:19:02如果你要往下训练的话
01:19:03你把模型做的更复杂一点说
01:19:05你把所有这些模型
01:19:06他的最好的这个点啊
01:19:08拉成一条线的话
01:19:10你会发现这是一个叫做power law的分布
01:19:13也就是说在你最好的情况下
01:19:15就是说你找到一个合适的模型
01:19:17而且不用训练过度训练的情况下
01:19:20那么你随着你计算量的指数的增加
01:19:24你的损失是线性的往下降
01:19:27这个一直是机器学习的一个痛点啊
01:19:30就是当你想
01:19:30持续线性的提升你的精度的时候
01:19:32你得不断的指数去翻你的数据量
01:19:36数据量当然弄起来是很难的一件事情
01:19:39二个是说你数据量增加之后
01:19:41你的计算量也是跟着指数的增加
01:19:43这个地方讲呢是我的数据固定的时候
01:19:46我如果想线性的降低我的损失
01:19:49我一样的计算量都得指数的往上增加
01:19:52当然跟人类比还是差的太远了
01:19:54人类的大脑啊
01:19:55相当于一个60瓦的一个灯泡的耗能
01:19:58然后人类在学习的时候
01:20:00远远的不需要那么多的样本
01:20:02你想想你学会阅读的时候
01:20:04你就要读多少本书就行呢
01:20:05你可能读小学语文那几本书就行呢
01:20:07但是他这个地方
01:20:08他把整个互联网上东西全部抓了下来
01:20:11才能够学习到
01:20:12可能跟人类相比
01:20:13还是有一点差距的地方
01:20:15所以我们还有很长的路要走啊
01:20:17然后再往下面看很多这样子的图啊
01:20:19他这个地方
01:20:19x 轴还是表示的你模型的参数的大小
01:20:22到后面这个线就是你最大的模型
01:20:24然后你的Y轴是你的精度
01:20:26这个地方是使用 ZeroShot 的最好的模型
01:20:29而人在这个地方
01:20:30然后在这个地方他发现
01:20:31当你增加模型大小的时候
01:20:33他当然是能够超越
01:20:35目前最好的那些Zero Shot的算法
01:20:37而且如果你使用 Few Shot的话
01:20:39跟人类的精度还是有那么接近的地方
01:20:42在这个地方
01:20:43然后当然下面很多这样子的图啊
01:20:45在这个地方他讲的是一个叫做 open domain 的一个QA
01:20:50就是在开放区的一个问答
01:20:52然后他对比的是T5
01:20:54T5 是来自于Google的一个算法
01:20:56你可以认为是编码器解码器全部拿过来
01:20:59BERT 用的是编码器
01:21:01gpt 用的是解码器
01:21:02T5用的是编码器解码器都有
01:21:04然后你如果用 T5 做微调的话
01:21:06gpt 其实你用啊FewShot 的或者是 one Shot的
01:21:10他都比他要好了
01:21:12然后你往下面翻的话
01:21:13这个是另外一个 qa 的一个任务
01:21:15然后这个是使用微调的时候
01:21:17最好的一个精度
01:21:18GPT 3最大的模型
01:21:20已经跟他已经非常接近了
01:21:22然后这个是机器翻译
01:21:24每一根线表示的是一个语言
01:21:26翻译到另外一个语言
01:21:28实线是表示别人翻译到英语
01:21:30那虚线表示英语翻到别人
01:21:32你的Y轴用的是BLEU这个分数啊
01:21:34这是机器翻译最常见的分数
01:21:36然后有意思的是说
01:21:37你看到别人翻到英语
01:21:39通常来说比英语翻到别的语言要好
01:21:43然后你往后面翻很远之后
01:21:44你看到用 gpt 生成的一个新闻稿啊 标题啊
01:21:49灰色部分是给 GPT-3的输入啊
01:21:51后面这些黑的部分就是 gpt 写出来的
01:21:55然后基本上你看一下
01:21:56写的还似模似样的
01:21:58然后这里面有年份
01:21:59有各种数字呀
01:22:00各种百分比啊就讲的似模似样的
01:22:03所以这个地方有一点点可怕
01:22:04GPT-3瞎扯起来真的是脸不红心不跳的
01:22:08似模似样
01:22:09然后后面又是一些样例
01:22:10怎么让 GPT-3来做题 就是说
01:22:12就是我告诉你一个词
01:22:13他大概意义是什么
01:22:15然后用这个词来造句
01:22:16黑色就是 gpt 造出来的句子
01:22:18他基本上 GPT-3给你写写作业是
01:22:20没有问题的啊
01:22:22那我们就很简单的给大家讲了一下实验
01:22:24如果你是做这一块相关的话
01:22:26你可以找到对应的那些数据
01:22:27去仔细了解一下啊
01:22:29如果 只是想知道他大概模型的效果的话
01:22:32我们就这么简单就过去了
01:22:34接下来我们来看一下第五章
01:22:35讲的是这个模型的局限性
01:22:38在这一章里面
01:22:39作者列举了非常多的局限性
01:22:42我们来稍微看一下他到底是什么
01:22:44首先他说虽然我们比GPT2好很多啊
01:22:47但是我在文本生成上面呢
01:22:49还是比较弱的
01:22:51就是如果我让 gpt3生成一个很长的文本的话
01:22:53可能可能给了几段之后
01:22:55他又把上面的东西重新过来写一下
01:22:58所以如果你想让他来帮你写小说的话
01:23:00就是比较难的
01:23:01因为他很难得到一个剧情的人往前推
01:23:04但如果你告诉他说
01:23:05这一段我没有讲什么的话
01:23:07他很有可能能帮你补全的似模似样
01:23:09第二个是说 他说我有一些结构和算法上的局限性
01:23:13他讲的一个主要的局限性是说
01:23:15GPT-3因为用的是语言模式
01:23:17他是往前看的
01:23:19他不能像之前BERT 能够反过方向来看
01:23:21这也是因为 gpt 使用的是 transformer 的
01:23:24解码器的缘故
01:23:26然后他讲的另外一个局限性是说
01:23:27因为你训练是语言模型
01:23:29每一次你要去预测下一个词
01:23:31所以他这个地方是每一个词啊
01:23:34他都是很均匀的去预测下一个词
01:23:37他没有告诉你说哪个词比较重要
01:23:39哪一个词不重要
01:23:41我们知道在语言里面很多词都是一些
01:23:43常见词但是没有太多意义的虚词
01:23:46所以导致整个语言模型花很多时间学习这些虚词
01:23:49还不像你真的要教小孩一样的
01:23:51告诉你这个是划重点
01:23:53这个才是要去记住的东西
01:23:56当然他还有说因为我用的只是文本啊
01:23:58所以我对别的东西没见过
01:24:00比如说没见过 video 长什么样子
01:24:02没见过真实的这些
01:24:04物理的交互长什么样子
01:24:05因为人在学习的时候
01:24:06读书只是整个人的活动种在了一块
01:24:09所以他也就是在这一块做比较好
01:24:12但是别的方面他基本上是没有涉及的
01:24:14他还讲了一个是你的样本有效性不够
01:24:17因为你为了训练这个模型
01:24:18我基本上整把整个网络上的文章
01:24:20都给你下下来了
01:24:22那对人来讲这个真的是太可怕了
01:24:24另外一个问题作者说也可能不叫问题
01:24:27就是不确信是说
01:24:28你在做这种给你多个样本
01:24:31在做上下文的学习的时候
01:24:33他真的是去从头开始学习吗
01:24:36他真的是说
01:24:37我去通过你给我的样本学习
01:24:39这个样本是长这样
01:24:41还是说我就是
01:24:43根据个样本
01:24:43在我之前的文本里面找出相关的
01:24:46然后把它记住就行了
01:24:47就认出了这个任务
01:24:49这两个当然不一样
01:24:50我们当然喜欢说
01:24:51你从头开始学这个途径
01:24:53这样子的话
01:24:54真的碰到一个你的训练样本上
01:24:55没有出现过的任务的话
01:24:57我也能够泛化过去
01:24:59如果就是我
01:25:00根据你的样本从我的训练
01:25:02记忆里面把他相关的东西找出来的话
01:25:05那就真的
01:25:06最后拼的是你的训练数据的大小了
01:25:08另外一个跟之前样本有效性的相关
01:25:11就是说训练起来非常的贵
01:25:14最后一个
01:25:14GPT-3跟很多深度学习模型啊
01:25:17都是无法解释的
01:25:18就是我给你个输入
01:25:20然后你返回
01:25:20给我一个看上去很不错的输出
01:25:22但我并不知道你是
01:25:24怎么样得到你的输入的
01:25:26你里面哪些权重真的起到作用
01:25:28而且你整个决策是怎么做的
01:25:30特别是对 GPT-3那么大的模型来讲
01:25:33去找出里面这些
01:25:34做关键决策这些全都是非常难的
01:25:37所以我们最多能说
01:25:38GPT-3真的就是大力出奇迹了
01:25:41接下来是对 GPT-3可能那些影响的一些讨论
01:25:44因为这个模型以及非常强大的
01:25:46可以直接拿过去用了
01:25:47就是说部署在生产环境里面
01:25:49一旦你的部署到生产环境里面的话
01:25:51那么肯定会对人
01:25:52会对社会产生一些影响
01:25:54最简单是他是不是安全的
01:25:56大家不要觉得一个模型
01:25:58他能够对人造成多大危害
01:26:00如果你真的依赖一个模型
01:26:01做一些很重要的决策的话
01:26:03那当然可能会带来很大的影响
01:26:05open ai 的很多工作有这样子的讨论
01:26:07我觉得是非常好的
01:26:08那表示这个团队是
01:26:10有很大的社会责任感的
01:26:11我们这里简单的给大家过一下
01:26:13他首先说
01:26:14我这个模型可能会被用来做坏事
01:26:17在6.1.1里面讲到说
01:26:19你有可能是散布一些不实的消息
01:26:22生成一些垃圾邮件或者钓鱼邮件啊
01:26:25然后论文造假呀
01:26:26我们之前有看到他
01:26:28生成的那些新闻稿啊
01:26:29真的人是很难看出来区别的
01:26:32我们读篇新闻的话
01:26:33你们对里面的数字啊一些很多事情
01:26:35我们通常不会下意识的去怀疑
01:26:38他觉得你既然记者把他写出来
01:26:40那么一定是你做过调查的
01:26:42如果有人用 GPT-3
01:26:43大量的生成这样子的文章的话
01:26:45可能会有很多读者会去信里面的东西
01:26:48虽然现在很多这样的过滤机制啊
01:26:50比如说你的邮箱里面
01:26:51会判断一封邮件是不是垃圾邮件
01:26:53但如果 gpt 3
01:26:54能够大量的生成这样子的文章的话
01:26:57那么肯定是有一小部分能绕过这些机制
01:26:59从而能够对人产生影响
01:27:02他又讲了一下公平性啊偏见啊
01:27:04比如在性别上
01:27:05因为他下的文章里面
01:27:06很有可能里面男性这种词居多
01:27:09比如说你让 gpt 去回答一个侦探
01:27:11是一个男人还是一个女人
01:27:13那么 gpt 在很大的可能性上认为这是一个男人
01:27:16接下来他 调查了一下 gpt
01:27:18对一些性别的一些偏见
01:27:20作者让 gpt 回答
01:27:22he was very
01:27:23或者 she was very 就是男性的是怎么样的
01:27:26女性会怎么样的
01:27:27然后他去判断一些词出现的概率
01:27:30把那些比较偏见那些词拿出来
01:27:32比如说对男性来说
01:27:33GPT 可能生成他是比较男的
01:27:36对女性来说他
01:27:37很大概率会生成他是非常漂亮的
01:27:40就漂亮这个词不是一个贬义词
01:27:43但是漂亮意味着是说
01:27:45你对女性的外表比较在意
01:27:47这是一个偏见
01:27:48第二个是对种族
01:27:49比如说这一个
01:27:52啊女人非常的什么你可以换成白的黄的黑的
01:27:56然后下面这个图
01:27:57表示的是不同大小模型
01:27:59对不同种族的一些
01:28:01正面还是负面的评价
01:28:03这里0表示的是正常
01:28:04正的是表示的是这这个种族比较正面的反馈
01:28:08负数是表示比较负面的
01:28:11对黑人就是这一根线
01:28:13相对来说比较负面的
01:28:14但是对于 asian 整体来说是比较正面的
01:28:17虽然作为亚洲人
01:28:18看到这个结果可能会比较开心
01:28:20但是当你发现
01:28:21一个模型对于不同种族的区别有那么大的时候
01:28:25你可要注意到说可能换一个模型
01:28:27那个模型可能是仇视亚洲人的
01:28:29还有是可能有宗教啊
01:28:31宗教之间相互歧视也是非常严重的
01:28:33最后一点关于的是能耗
01:28:35因为你训练 gpt 模型啊需要几百台机器
01:28:38训练很多天
01:28:39那么一台机器
01:28:40那么就是几千瓦的能耗的话
01:28:42那么训练下来
01:28:43你的能耗也是相当夸张的
01:28:46最后是他的结论
01:28:47他说我们做了一个
01:28:48有1,750亿参数的语言模型
01:28:51然后在许多的 NLP 的任务上面我们做了
01:28:54Zero Shot、One Shot、Few Shot的学习
01:28:57在很多情况下
01:28:58他能够媲美到使用更多 带标号数据的
01:29:01基于微调的算法
01:29:03然后他的一个卖点是能够生成
01:29:05高质量的一些文本
01:29:07让他们展示了一个
01:29:09不用基于微调的一个可能性
01:29:11然后我们对整个 gpt 啊 gpt 2
01:29:13GPT-3这三个工作做一个评论
01:29:16你可认为 gpt 是起了一个大早
01:29:18他先把
01:29:19transformer 这个模型拿过来做预训练
01:29:22然后证明他在效果上很好
01:29:24但是没想到在选择路线上
01:29:26二选一的时候选了一条路
01:29:28但是没想到另外一条路走的更容易点
01:29:30也就是 bert 和他之后的工作
01:29:33但作者没有气馁啊因为我有钱我有人
01:29:35所以我一条路走到黑
01:29:37第二就是把模型做的更大
01:29:38然后尝试一个更难的问题
01:29:40就是不在下游的任务上做微调
01:29:43如果你发现你还是打不赢的话怎么办
01:29:46那就再摇人吧
01:29:47然后再准备一点钱
01:29:48我做一个更大的100倍更大的模型出来
01:29:51所以最后扳回一句
01:29:52不管怎么样
01:29:53gpt 系列给我们开了眼界啊