优质博文:IT-BLOG-CN
ChatGPT 是2022 年 11 月发布的,到现在已经一年多了,相信大家对ChatGPT都有很多了解,对于ChatGPT的使用,也已经得心应手了。ChatGPT出来的时候,我就很好奇它是怎么做到的,又是怎么突然出现的,所以我搜集了一些资料,在这里跟大家交流一下,因为我也不是专业的,所以也没法讲得很深入,当然可能也有错误的地方,希望大家可以指出。
ChatGPT只是一次添加一个词
首先要解释的是,ChatGPT实际上做的是:为人为输入的任何文本生成一个"合理的延续",什么是合理呢?就是假如你看了数十亿网页上的内容后,发现大家都这么写,那你也这么写,就是合理的。ChatGPT就是这样,所以就能解释,为什么ChatGPT给出的答案让人觉得是“友好”并且“人性化”的。
现在假设我们输入如下内容“The best thing about AI is its ability to”。想象一下当你浏览了数十亿页的文字后(比如在网上的文章和数字化书籍),然后看看接下来应该出现的是什么词,以及这些词的概率是多少。
最终结果是它会生成一个可能跟在后面的单词的排名列表,以及概率:
然后我们把生成的词加到原来的文本中,反复让语言模型生成下一个词的概率,就会得到一个“合理”的文本
我们可能想着每次找概率最高的词填入就行了。但是这里有点玄学的意思在里面,如果你每次都填写概率最高的词(temperature=0),使用ChatGPT2模型,可能得到的是这样的文本:
可以看到文本就开始陷入重复了。
如果你设定temperature=0.8时,会得到如下文本
比前面那个例子好一点,但还是有点奇怪。如果用ChatGPT3就会通顺许多。ChatGPT默认temperature就是0.8,至于为啥0.8效果最好,没有任何“理论”,其实就是在实践中发现有效的的一个参数。
下一个词的概率怎么算出来的?
如果只有一个词的概率好统计,我们就统计一下所有词出现的次数就行了。但是长文本的概率统计只凭简单的计算是无法胜任的。这时就需要建立一个模型来进行概率预测,ChatGPT就是所谓的大语言模型。
模型可以理解为一个函数f,你输入“The best thing about AI is its ability to” => f => 下一个词的概率
怎么训练出这么一个语言模型呢?
总的来说,GPT模型训练分为四个训练步骤,这四个训练步骤是有先后依赖关系的,他们分别是:
预训练(Pretraining)
监督微调训练(Supervised Finetuning,SFT)
奖励模型训练(Reward Molel,RM)
强化学习训练(Reinforcement Learning,RL)
预训练(Pretraining)
预训练就是不断输入例子,来调试模型的参数。比如下面这个例子子,我们怎么确定出合适的函数来表示这些值呢?
我们用ax+bx+cx^2实现,发现效果最好。
再进一步,我们可以调整a/b/c的值,可以更加接近这些数据。这些值可以叫做权重,也就是参数,ChatGPT3 实际上有1750 亿个参数。而ChatGPT3.5/4没有公开数据,但是可以想到只会更多。ChatGPT这个所谓的函数其实就是一个神经网络
可以想象一下1750亿个参数是怎么样的,这个有一个ChatGPT2和3的参数可视化图
每个token的生成其实都要经过1750亿个参数参与计算,不过它是存在并行计算优化,所以也不至于很慢。
更具体一点的话,GTP的全称是Generative Pre-Trained Transformer,其实就是用Transformer模型做的预训练。
Transformer是谷歌在2017年发表的一篇论文,它的出现为自然语言处理(NLP)提供了一种全新的范式,尤其是其核心自注意力机制,提供了一种更加高效、更加强大的方法来处理序列数据。
在Transformer之前呢,这个任务通常是由RNN模型来实现的,RNN有个缺点:计算是顺序进行的,如果我们要得到最后一个单词的处理结果,就必须要先计算前面9个单词的处理结果,这样就存在信息的衰减,很难处理相隔比较远的两个单词之间的信息。
今天天气很好,我的心情也很__
今天天气很差,我的心情也很__
如果只看后半句,其实都一样,决定下一次词的关键,是前面的上下文。如果上下文很长,通常会丢失重点。所以引入了自注意力机制,简单理解就是会抓住关键词,它会计算出下一个词跟前面哪个词比较有关系。
所以说预训练的过程,就是在调整这个Transformer模型的参数,让它越来越清楚词与词之间的相关性,让它生成的概率越来越准确。
具体的过程就是把从网络上收集的文本,输入到模型当中,让模型根据前文和后面跟着的词,来调整参数。为了给出准确的预测,神经网络每次都需要调整其上百亿个参数。以 LLaMA 的训练数据集为例,共 1.4T tokens
这是《纽约时报》用莎士比亚作品训练的一个小型 GPT。这里给出了莎士比亚作品中的一小段以及在其上训练 GPT 的情况。
刚开始时,参数是随机生成的,所以它的结果也是随机的。随着时间推移,训练时间越来越长,GPT 不断迭代,模型给出的结果样本也就越来越连贯通顺了。
在所有阶段中,预训练阶段所需的计算量是最大的,可以说 99% 的训练计算时间和浮点运算量都集中在这个阶段。因为这一阶段需要处理超大规模的互联网数据集,可能需要数千 GPU 构成的超级计算机工作几个月时间。像GPT3就需要几千张V100 GPU训练了数月份,花费几百万美元。
预训练完的模型我们称之为Base Model。但是,Base Model并不是一个可以直接回答你问题的“助手”,如果你向它问问题,它大概率会拒绝回答,或者不理解你的问题,再或者用更多的问题来回答你的问题。
简单说这个模型只会把你的要求看做一个文章,然后试图续写它。
或者可能是这种画风:
// 下面代码的输出结果是?
public void main(String[] args) {
Integer num1 = 200;
Integer num2 = 200;
if (num1 != num2) {
System.out.print(1);
} else {
System.out.print(2);
}
if (!num1.equals(num2)) {
System.out.print(3);
} else {
System.out.print(4);
}
}
它的回答可能是
A、13
B、24
C、14
D、23
可以看到这个模型好像有点笨,有点像人工智障,但是绝对不要小看了这个模型,这个模型就可以理解为读了世界上所有的文本,掌握了所有语言的内在规律,但是还不知道人类的喜好,只知道续写文本,就像小说里面天赋异禀的主角,突然得到了深厚的内力,却不知道招式,不知道如何使用内力。
下一步就是教这个基本模型一些招式了。官网上给的博客就是下面一张图。
监督微调训练(Supervised Finetuning,SFT)
奖励模型训练(Reward Molel,RM)
强化学习训练(Reinforcement Learning,RL)
监督微调训练(Supervised Finetuning,SFT)
这一步就是让人类老师来指导它一下。
OpenAI 的方法是以人工方式写的少量但是高质量的prompt、response数据,数量大约1w~10w条。然后,继续在这些数据上训练语言建模。算法不变,只是换了训练数据集:从大量低质量的互联网文档换成了少量高质量的问答式「prompt - response」数据。
问题的形式是各种各样的,包含问题、总结、分类、解释等等。
前面这种方式,需要人工提供答案,或者人工写答案,可以想到是比较难实现的,所以也就只能写1w左右了。一直写下去也不现实,需要找到一个更好的方式,不然就全是人工,没有智能了。
这时候就需要引出下面两个部分
奖励模型(Reward Molel,RM)和强化学习(Reinforcement Learning,RL)
我们可以建立一个奖励模型,然后让这个奖励模型去持续地训练语言模型,让语言模型的输出更符合人类的习惯。
在建立奖励模型这一阶段,需要将数据收集转变成比较的形式。这里给出了一个示例,对于同样的 prompt,即要求写一个能检查给定字符串是否为回文的函数。再使用已经训练好的 SFT 模型生成多个结果,这里给出了三个。然后再让人类给这些结果排名。
这一步的工作量其实也不小,因为有时候几个版本差别不大,需要认真读才能给出正确的排名。有了人类排名的数据后,使用这个排序结果数据来训练奖励模型。对多个排序结果,两两组合,形成多个训练数据对。RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。
这样,训练好的奖励模型这时候就是熟知人心了,知道人类喜欢的东西是什么。
然后就是强化学习的部分,还是提出问题,让SFT模型生成多个答案,不同是的是,之前是人类来排名,现在交给奖励模型打分,如果对一个答案分数比较高,则这个答案的所有token都会强化,就是概率会增加,而如果分数比较低,则所有的token出现的概率会降低。在这样训练许多遍之后,所有的答案都能得到很高的分数,也就是说,它每次输出的不同答案,都是能让人类满意的。
这样,语言模型给的答案都是会符合人类习惯的,可以说是一个成品了,ChatGPT也就诞生了。
这样一个模型越来越符合人类的喜好,但是同时也失去了更多可能性,也就是失去了更多创造性
所以如果你想要执行更多创造性的事情,可以使用基础模型,比如你要给宝可梦起名字。在前面输入7个现有的宝可梦名字,会输出其他宝可梦的名字,这些宝可梦的名字都是现在不存在的,所以在这方面,gpt是有创造性的,因为宝可梦本来就是不存在的东西。
真正让ChatGPT发挥作用的是什么呢?
我们目前知道的语言的规则,首先想到的就是语法。在英语中,名词前面有形容词、后面可以有动词,两个名词不能挨在一起。
只有语法肯定是不够的,因为“快乐的鱼想吃理论”这句话在语法上是正确的,但是不符合人类的语义。怎么判断一句话是否有意义呢?其实现在没有一个具体的“理论、规则”
让我们从另一个角度来看看:
在gpt中,任何一个文本都可以表示成一个向量,可以视为某个“语言特征空间”中的坐标,如果把这个空间投影到二维平面,单个词的可能的布局方式:
可以看到相同特征的词,位置比较靠近。这其实是在二维平面上的展示,而实际这个特征空间是下面这样的,这样的高维空间(在chatGpt2中长度是768,在ChatGPT3中长度是12288),能存储的信息就太多了,所以还有很多我们不能看到的信息。
ChatGPT并不明确了解语言规则,但是在训练过程中,它隐含地发现了这些规律,并且很擅长这些规律。
所以说真正让ChatGPT发挥作用的是什么呢?可能的答案是,语言在根本上可能比它看起来更简单。ChatGPT 的成功隐含地揭示了一个重要的 “科学” 事实:有意义的人类语言实际上比我们所知道的更加结构化、更加简单,最终可能可以用相当简单的规则来描述语言的规律。如果我们能通过某种方式,弄清ChatGPT里面隐含的法则,我们可能就可以更高效地做出ChatGPT所做的事情。
大模型的顿悟时刻
其实ChatGPT在算法层面上面其实没有特别颠覆性的创新,其实底层也还是用之前的transformer模型,ChatGPT主要是在数据量上面达到了一个新的层面,所谓大力出奇迹,量变引起质变。据说openAPI内部的人,对于ChatGPT涌现的能力也感到震惊。
下图是各个主流的语言模型在不同量级的参数下面,对8个不同任务的表现。可以看到,在10biliion的时候才有一个质变
疑问:ChatGPT怎么学会中文的?
监督微调训练的时候,肯定都是用英文写的,为什么可以学会中文?
在104中语言上做预训练,人类只用英语来指导它,也能完成中文的回答,表现和用中文指导差不多。所以可以推测,这个大预言模型,在用104种语言预训练后,其实就已经懂得不同语言间的翻译了。
为什么能写代码?
ChatGPT是一个用于处理文本的语言模型,自然也包含代码,对于ChatGPT来说,代码,分隔符等也只是一个个token。
相比之下,其实代码没有那么复杂,代码有固定的格式,在学习了github和StackOverflow和维基百科上面的代码,ChatGPT能做到这一点也不足为奇了。
相信大家都用过,ChatGPT生成的代码还是有很多不足之处的,最主要的是不能保证正确率,甚至生成的代码也有可能编译不通过。听了前面的内容, 也已经知道了它实际上也只是预测文本而已,所以比较适合的是生成简单代码,或者让它读代码,比如又臭又长的代码,可以让ChatGPT让你解读一下,理一下思路。
最后分享一个看到的有意思的观点:有人说ChatGPT的写作能力比人类好,其实应该换个说法:从现在起没有人类的作文写得比ChatGPT差。ChatGPT的出现将提升人类全体水平。
参考资料微软 BUILD2023 演讲:State of GPT演讲人:Andrej Karpathy (现在OpenAI任职),之前是特斯拉视觉研发负责人,斯坦福深度学习入门课程 CS231N 讲师
英文原版
中文字幕版
ChatGPT在做什么……为什么它有效?作者斯蒂芬·沃尔弗拉姆(Stephen Wolfram),软件公司Wolfram Research的创始人兼首席执行官,被称为“在世的最聪明的人”
英文文章
中文译版书籍:这就是ChatGPT
openAI对ChatGPT介绍的博客
优质博文:IT-BLOG-CN
ChatGPT 是2022 年 11 月发布的,到现在已经一年多了,相信大家对ChatGPT都有很多了解,对于ChatGPT的使用,也已经得心应手了。ChatGPT出来的时候,我就很好奇它是怎么做到的,又是怎么突然出现的,所以我搜集了一些资料,在这里跟大家交流一下,因为我也不是专业的,所以也没法讲得很深入,当然可能也有错误的地方,希望大家可以指出。
ChatGPT只是一次添加一个词
首先要解释的是,ChatGPT实际上做的是:为人为输入的任何文本生成一个"合理的延续",什么是合理呢?就是假如你看了数十亿网页上的内容后,发现大家都这么写,那你也这么写,就是合理的。ChatGPT就是这样,所以就能解释,为什么ChatGPT给出的答案让人觉得是“友好”并且“人性化”的。
现在假设我们输入如下内容“The best thing about AI is its ability to”。想象一下当你浏览了数十亿页的文字后(比如在网上的文章和数字化书籍),然后看看接下来应该出现的是什么词,以及这些词的概率是多少。
最终结果是它会生成一个可能跟在后面的单词的排名列表,以及概率:
然后我们把生成的词加到原来的文本中,反复让语言模型生成下一个词的概率,就会得到一个“合理”的文本
我们可能想着每次找概率最高的词填入就行了。但是这里有点玄学的意思在里面,如果你每次都填写概率最高的词(temperature=0),使用ChatGPT2模型,可能得到的是这样的文本:
可以看到文本就开始陷入重复了。
如果你设定temperature=0.8时,会得到如下文本
比前面那个例子好一点,但还是有点奇怪。如果用ChatGPT3就会通顺许多。ChatGPT默认temperature就是0.8,至于为啥0.8效果最好,没有任何“理论”,其实就是在实践中发现有效的的一个参数。
下一个词的概率怎么算出来的?
如果只有一个词的概率好统计,我们就统计一下所有词出现的次数就行了。但是长文本的概率统计只凭简单的计算是无法胜任的。这时就需要建立一个模型来进行概率预测,ChatGPT就是所谓的大语言模型。
模型可以理解为一个函数f,你输入“The best thing about AI is its ability to” => f => 下一个词的概率
怎么训练出这么一个语言模型呢?
总的来说,GPT模型训练分为四个训练步骤,这四个训练步骤是有先后依赖关系的,他们分别是:
预训练(Pretraining)
监督微调训练(Supervised Finetuning,SFT)
奖励模型训练(Reward Molel,RM)
强化学习训练(Reinforcement Learning,RL)
预训练(Pretraining)
预训练就是不断输入例子,来调试模型的参数。比如下面这个例子子,我们怎么确定出合适的函数来表示这些值呢?
我们用ax+bx+cx^2实现,发现效果最好。
再进一步,我们可以调整a/b/c的值,可以更加接近这些数据。这些值可以叫做权重,也就是参数,ChatGPT3 实际上有1750 亿个参数。而ChatGPT3.5/4没有公开数据,但是可以想到只会更多。ChatGPT这个所谓的函数其实就是一个神经网络
可以想象一下1750亿个参数是怎么样的,这个有一个ChatGPT2和3的参数可视化图
每个token的生成其实都要经过1750亿个参数参与计算,不过它是存在并行计算优化,所以也不至于很慢。
更具体一点的话,GTP的全称是Generative Pre-Trained Transformer,其实就是用Transformer模型做的预训练。
Transformer是谷歌在2017年发表的一篇论文,它的出现为自然语言处理(NLP)提供了一种全新的范式,尤其是其核心自注意力机制,提供了一种更加高效、更加强大的方法来处理序列数据。
在Transformer之前呢,这个任务通常是由RNN模型来实现的,RNN有个缺点:计算是顺序进行的,如果我们要得到最后一个单词的处理结果,就必须要先计算前面9个单词的处理结果,这样就存在信息的衰减,很难处理相隔比较远的两个单词之间的信息。
今天天气很好,我的心情也很__
今天天气很差,我的心情也很__
如果只看后半句,其实都一样,决定下一次词的关键,是前面的上下文。如果上下文很长,通常会丢失重点。所以引入了自注意力机制,简单理解就是会抓住关键词,它会计算出下一个词跟前面哪个词比较有关系。
所以说预训练的过程,就是在调整这个Transformer模型的参数,让它越来越清楚词与词之间的相关性,让它生成的概率越来越准确。
具体的过程就是把从网络上收集的文本,输入到模型当中,让模型根据前文和后面跟着的词,来调整参数。为了给出准确的预测,神经网络每次都需要调整其上百亿个参数。以 LLaMA 的训练数据集为例,共 1.4T tokens
这是《纽约时报》用莎士比亚作品训练的一个小型 GPT。这里给出了莎士比亚作品中的一小段以及在其上训练 GPT 的情况。
刚开始时,参数是随机生成的,所以它的结果也是随机的。随着时间推移,训练时间越来越长,GPT 不断迭代,模型给出的结果样本也就越来越连贯通顺了。
在所有阶段中,预训练阶段所需的计算量是最大的,可以说 99% 的训练计算时间和浮点运算量都集中在这个阶段。因为这一阶段需要处理超大规模的互联网数据集,可能需要数千 GPU 构成的超级计算机工作几个月时间。像GPT3就需要几千张V100 GPU训练了数月份,花费几百万美元。
预训练完的模型我们称之为Base Model。但是,Base Model并不是一个可以直接回答你问题的“助手”,如果你向它问问题,它大概率会拒绝回答,或者不理解你的问题,再或者用更多的问题来回答你的问题。
简单说这个模型只会把你的要求看做一个文章,然后试图续写它。
或者可能是这种画风:
// 下面代码的输出结果是?
public void main(String[] args) {
Integer num1 = 200;
Integer num2 = 200;
if (num1 != num2) {
System.out.print(1);
} else {
System.out.print(2);
}
if (!num1.equals(num2)) {
System.out.print(3);
} else {
System.out.print(4);
}
}
它的回答可能是
A、13
B、24
C、14
D、23
可以看到这个模型好像有点笨,有点像人工智障,但是绝对不要小看了这个模型,这个模型就可以理解为读了世界上所有的文本,掌握了所有语言的内在规律,但是还不知道人类的喜好,只知道续写文本,就像小说里面天赋异禀的主角,突然得到了深厚的内力,却不知道招式,不知道如何使用内力。
下一步就是教这个基本模型一些招式了。官网上给的博客就是下面一张图。
监督微调训练(Supervised Finetuning,SFT)
奖励模型训练(Reward Molel,RM)
强化学习训练(Reinforcement Learning,RL)
监督微调训练(Supervised Finetuning,SFT)
这一步就是让人类老师来指导它一下。
OpenAI 的方法是以人工方式写的少量但是高质量的prompt、response数据,数量大约1w~10w条。然后,继续在这些数据上训练语言建模。算法不变,只是换了训练数据集:从大量低质量的互联网文档换成了少量高质量的问答式「prompt - response」数据。
问题的形式是各种各样的,包含问题、总结、分类、解释等等。
前面这种方式,需要人工提供答案,或者人工写答案,可以想到是比较难实现的,所以也就只能写1w左右了。一直写下去也不现实,需要找到一个更好的方式,不然就全是人工,没有智能了。
这时候就需要引出下面两个部分
奖励模型(Reward Molel,RM)和强化学习(Reinforcement Learning,RL)
我们可以建立一个奖励模型,然后让这个奖励模型去持续地训练语言模型,让语言模型的输出更符合人类的习惯。
在建立奖励模型这一阶段,需要将数据收集转变成比较的形式。这里给出了一个示例,对于同样的 prompt,即要求写一个能检查给定字符串是否为回文的函数。再使用已经训练好的 SFT 模型生成多个结果,这里给出了三个。然后再让人类给这些结果排名。
这一步的工作量其实也不小,因为有时候几个版本差别不大,需要认真读才能给出正确的排名。有了人类排名的数据后,使用这个排序结果数据来训练奖励模型。对多个排序结果,两两组合,形成多个训练数据对。RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。
这样,训练好的奖励模型这时候就是熟知人心了,知道人类喜欢的东西是什么。
然后就是强化学习的部分,还是提出问题,让SFT模型生成多个答案,不同是的是,之前是人类来排名,现在交给奖励模型打分,如果对一个答案分数比较高,则这个答案的所有token都会强化,就是概率会增加,而如果分数比较低,则所有的token出现的概率会降低。在这样训练许多遍之后,所有的答案都能得到很高的分数,也就是说,它每次输出的不同答案,都是能让人类满意的。
这样,语言模型给的答案都是会符合人类习惯的,可以说是一个成品了,ChatGPT也就诞生了。
这样一个模型越来越符合人类的喜好,但是同时也失去了更多可能性,也就是失去了更多创造性
所以如果你想要执行更多创造性的事情,可以使用基础模型,比如你要给宝可梦起名字。在前面输入7个现有的宝可梦名字,会输出其他宝可梦的名字,这些宝可梦的名字都是现在不存在的,所以在这方面,gpt是有创造性的,因为宝可梦本来就是不存在的东西。
真正让ChatGPT发挥作用的是什么呢?
我们目前知道的语言的规则,首先想到的就是语法。在英语中,名词前面有形容词、后面可以有动词,两个名词不能挨在一起。
只有语法肯定是不够的,因为“快乐的鱼想吃理论”这句话在语法上是正确的,但是不符合人类的语义。怎么判断一句话是否有意义呢?其实现在没有一个具体的“理论、规则”
让我们从另一个角度来看看:
在gpt中,任何一个文本都可以表示成一个向量,可以视为某个“语言特征空间”中的坐标,如果把这个空间投影到二维平面,单个词的可能的布局方式:
可以看到相同特征的词,位置比较靠近。这其实是在二维平面上的展示,而实际这个特征空间是下面这样的,这样的高维空间(在chatGpt2中长度是768,在ChatGPT3中长度是12288),能存储的信息就太多了,所以还有很多我们不能看到的信息。
ChatGPT并不明确了解语言规则,但是在训练过程中,它隐含地发现了这些规律,并且很擅长这些规律。
所以说真正让ChatGPT发挥作用的是什么呢?可能的答案是,语言在根本上可能比它看起来更简单。ChatGPT 的成功隐含地揭示了一个重要的 “科学” 事实:有意义的人类语言实际上比我们所知道的更加结构化、更加简单,最终可能可以用相当简单的规则来描述语言的规律。如果我们能通过某种方式,弄清ChatGPT里面隐含的法则,我们可能就可以更高效地做出ChatGPT所做的事情。
大模型的顿悟时刻
其实ChatGPT在算法层面上面其实没有特别颠覆性的创新,其实底层也还是用之前的transformer模型,ChatGPT主要是在数据量上面达到了一个新的层面,所谓大力出奇迹,量变引起质变。据说openAPI内部的人,对于ChatGPT涌现的能力也感到震惊。
下图是各个主流的语言模型在不同量级的参数下面,对8个不同任务的表现。可以看到,在10biliion的时候才有一个质变
疑问:ChatGPT怎么学会中文的?
监督微调训练的时候,肯定都是用英文写的,为什么可以学会中文?
在104中语言上做预训练,人类只用英语来指导它,也能完成中文的回答,表现和用中文指导差不多。所以可以推测,这个大预言模型,在用104种语言预训练后,其实就已经懂得不同语言间的翻译了。
为什么能写代码?
ChatGPT是一个用于处理文本的语言模型,自然也包含代码,对于ChatGPT来说,代码,分隔符等也只是一个个token。
相比之下,其实代码没有那么复杂,代码有固定的格式,在学习了github和StackOverflow和维基百科上面的代码,ChatGPT能做到这一点也不足为奇了。
相信大家都用过,ChatGPT生成的代码还是有很多不足之处的,最主要的是不能保证正确率,甚至生成的代码也有可能编译不通过。听了前面的内容, 也已经知道了它实际上也只是预测文本而已,所以比较适合的是生成简单代码,或者让它读代码,比如又臭又长的代码,可以让ChatGPT让你解读一下,理一下思路。
最后分享一个看到的有意思的观点:有人说ChatGPT的写作能力比人类好,其实应该换个说法:从现在起没有人类的作文写得比ChatGPT差。ChatGPT的出现将提升人类全体水平。
参考资料微软 BUILD2023 演讲:State of GPT演讲人:Andrej Karpathy (现在OpenAI任职),之前是特斯拉视觉研发负责人,斯坦福深度学习入门课程 CS231N 讲师
英文原版
中文字幕版
ChatGPT在做什么……为什么它有效?作者斯蒂芬·沃尔弗拉姆(Stephen Wolfram),软件公司Wolfram Research的创始人兼首席执行官,被称为“在世的最聪明的人”
英文文章
中文译版书籍:这就是ChatGPT
openAI对ChatGPT介绍的博客