【读书笔记】这就是 ChatGPT

2024/3/1 LLMChatGPT读书笔记半月读

# 第三章 导读序 奇事·奇人·奇书

  • 当年11月中旬,本来一直在研发GPT-4的OpenAI员工收到管理层的指令:所有工作暂停,全力推出一款聊天工具,原因是有竞争。两周后,ChatGPT诞生。

  • 业界推测,OpenAI管理层应该是得知了Anthropic Claude的进展,意识到这一产品的巨大潜力,决定先下手为强。

# 第四章 奇人

  • 1991年,沃尔弗拉姆又返回研究状态,开始“昼伏夜出”,每天深夜埋头做实验、写作长达十年,出版了1000多页的巨著《一种新科学》(A New Kind of Science)。书中的主要观点是:万事皆计算,宇宙中的各种复杂现象,不论是人产生的还是自然中自发的,都可以用一些规则简单地计算和模拟。

  • 从以ChatGPT为代表的神经网络的角度来看沃尔弗拉姆的理论,就会发现一种暗合关系:GPT底层的自回归架构,与很多机器学习模型不同,的确可以归类为“规则简单的计算”,而且其能力也是通过量变的累积涌现出来的。

# 第五章 奇书

  • 人类可贵的,是有内在驱动力和内在体验,能够内在地定义目标或者意义,从而最终定义未来。

  • 最高效的方式是发掘新的可能性,定义对自己有价值的东西。

  • 从现在的回答问题转向学会如何提出问题,以及如何确定哪些问题值得提出。也就是从知识执行转向知识战略。

  • 知识广度和思维清晰度将很重要。

  • 直接学习所有详细的知识已经变得不必要了:我们可以在更高的层次上学习和工作,抽象掉许多具体的细节。“整合”,而不是专业化。尽可能广泛、深入地思考,尽可能多地调用知识和范式。

  • 学会使用工具来做事。过去我们更倚重逻辑和数学,以后要特别注意利用计算范式,并运用与计算直接相关的思维方式。

# 第七章 ChatGPT在做什么?它为何能做到这些?

  • ChatGPT从根本上始终要做的是,针对它得到的任何文本产生“合理的延续”。这里所说的“合理”是指,“人们在看到诸如数十亿个网页上的内容后,可能期待别人会这样写”。

  • 更准确地说,它是每次都添加一个“标记”(token),而标记可能只是词的一部分。这就是它有时可以“造词”的原因。

  • 符合玄学思想的是,有一个所谓的“温度”参数来确定低排名词的使用频率。

# 第八章 概率从何而来

  • 最佳思路是建立一个模型,让我们能够估计序列出现的概率—即使我们从未在已有的文本语料库中明确看到过这些序列。

# 第九章 什么是模型

  • 运用理论科学的本质:建立一个模型,用它提供某种计算答案的程序,而不仅仅是在每种情况下测量和记录。

  • 从来没有“无模型的模型”。你使用的任何模型都有某种特定的基本结构,以及用于拟合数据的一定数量的“旋钮”(也就是可以设置的参数)。

  • ChatGPT的基本结构—“仅仅”用这么少的参数—足以生成一个能“足够好”地计算下一个词的概率的模型,从而生成合理的文章。

# 第一十二章 机器学习和神经网络的训练

  • 神经网络之所以很有用(人脑中的神经网络大概也如此),原因不仅在于它可以执行各种任务,还在于它可以通过逐步“根据样例训练”来学习执行这些任务。

# 第一十三章 神经网络训练的实践和学问

  • 神经网络的一个重要特征是,它们说到底只是在处理数据—和计算机一样。目前的神经网络及其训练方法具体处理的是由数组成的数组,但在处理过程中,这些数组可以完全重新排列和重塑。

  • 类人任务的难度通常很难估计。是的,可能有一种系统化的方法可以通过计算机来非常“机械”地完成任务,但是很难知道是否有一些技巧或捷径有助于更轻松地以“类人水平”完成任务。可能需要枚举一棵巨大的对策树才能“机械”地玩某个游戏,但也可能有一种更简单的(“启发式”)方法来实现“类人的游戏水平”。

  • 使用“迁移学习”可以将已经在另一个神经网络中学习到的重要特征列表“迁移过来”,从而显著降低对数据规模的要求。但是,神经网络通常需要“看到很多样例”才能训练好。

  • 神经网络学问的一个特点是,这些“数据增强”的变化并不一定要很复杂才有用。只需使用基本的图像处理方法稍微修改图像,即可使其在神经网络训练中基本上“像新的一样好”。

  • ChatGPT的基本任务是弄清楚如何续写一段给定的文本。因此,要获得“训练样例”,要做的就是取一段文本,并将结尾遮盖起来,然后将其用作“训练的输入”,而“输出”则是未被遮盖的完整文本。

  • 神经网络的实际学习过程是怎样的呢?归根结底,核心在于确定哪些权重能够最好地捕捉给定的训练样例。

  • 神经网络的基本思想是利用大量简单(本质上相同)的组件来创建一个灵活的“计算结构”,并使其能够逐步通过学习样例得到改进。

  • 神经网络(或许有点像大脑)被设置为具有一个基本固定的神经元网络,能改进的是它们之间连接的强度(“权重”)。(或许在年轻的大脑中,还可以产生大量全新的连接。)

# 第一十四章 “足够大的神经网络当然无所不能!”

  • 可学习性和计算不可约性之间存在根本的矛盾。学习实际上涉及通过利用规律来压缩数据,但计算不可约性意味着最终对可能存在的规律有一个限制。

  • 能力和可训练性之间存在着一个终极权衡:你越想让一个系统“真正利用”其计算能力,它就越会表现出计算不可约性,从而越不容易被训练;而它在本质上越易于训练,就越不能进行复杂的计算。

  • 现代技术世界是建立在工程学的基础上的,而工程学利用了数学计算,并且越来越多地利用了更一般的计算。

  • 如果我们想解决数学或计算科学领域的问题,神经网络将无法完成任务,除非它能有效地使用一个“普通”的计算系统作为“工具”。

  • 计算不可约过程仍然是计算不可约的,对于计算机来说仍然很困难,即使计算机可以轻松计算其中的每一步。

  • 人类可以做到但认为计算机无法做到的任务,在某种意义上计算起来实际上比我们想象的更容易。

  • 神经网络能够在写文章的任务中获得成功的原因是,写文章实际上是一个“计算深度较浅”的问题,比我们想象的简单。从某种意义上讲,这使我们距离对于人类如何处理类似于写文章的事情(处理语言)“拥有一种理论”更近了一步。

# 第一十五章 “嵌入”的概念

  • 神经网络,至少以目前的设置来说,基本上是基于数的。因此,如果要用它来处理像文本这样的东西,我们需要一种用数表示文本的方法。

  • 可以将嵌入视为一种尝试通过数的数组来表示某些东西“本质”的方法,其特性是“相近的事物”由相近的数表示。

  • 可以将词嵌入视为试图在一种“意义空间”中布局词,其中“在意义上相近”的词会出现在相近的位置。实际使用的嵌入(例如在ChatGPT中)往往涉及大量数字列表。但如果将其投影到二维平面上,则可以展示嵌入对词的布局方式。

  • 为了找到嵌入,我们再次在神经网络“得到结论”之前“拦截”它的“内部”进程,然后获取此时的数字列表,可以认为这是“每个词的表征”。

  • 在过去10年里,已经出现了一系列不同的系统(word2vec、GloVe、BERT、GPT……),每个系统都基于一种不同的神经网络方法。但最终,所有这些系统都是通过有几百到几千个数的列表对词进行表征的。

  • 比起用一系列数对词进行表征,我们还可以做得更好—可以对词序列甚至整个文本块进行这样的表征。ChatGPT内部就是这样进行处理的。它会获取到目前为止的所有文本,并生成一个嵌入向量来表示它。然后,它的目标就是找到下一个可能出现的各个词的概率。

  • 严格来说,ChatGPT并不处理词,而是处理“标记”(token)—这是一种方便的语言单位,既可以是整个词,也可以只是像pre、ing或ized这样的片段。使用标记使ChatGPT更容易处理罕见词、复合词和非英语词,并且会发明新单词(不论结果好坏)。

# 第一十六章 ChatGPT的内部原理

  • 从根本上说,ChatGPT是一个庞大的神经网络— GPT-3拥有1750亿个权重。它在许多方面非常像我们讨论过的其他神经网络,只不过是一个特别为处理语言而设置的神经网络。它最显著的特点是一个称为Transformer的神经网络架构。

  • Transformer的思想是,为组成一段文本的标记序列做与此相似的事情。但是,Transformer不是仅仅定义了序列中可以连接的固定区域,而是引入了“注意力”的概念—即更多地“关注”序列的某些部分,而不是其他部分。

  • ChatGPT(或者说它基于的GPT-3网络)到底是在做什么呢?它的总体目标是,根据所接受的训练(查看来自互联网的数十亿页文本,等等),以“合理”的方式续写文本。所以在任意给定时刻,它都有一定量的文本,而目标是为要添加的下一个标记做出适当的选择。

  • 第一阶段,它获取与目前的文本相对应的标记序列,并找到表示这些标记的一个嵌入(即由数组成的数组)。第二阶段,它以“标准的神经网络的方式”对此嵌入进行操作,值“像涟漪一样依次通过”网络中的各层,从而产生一个新的嵌入(即一个新的数组)。第三阶段,它获取此数组的最后一部分,并据此生成包含约50000个值的数组,这些值就成了各个可能的下一个标记的概率。(没错,使用的标记数量恰好与英语常用词的数量相当,尽管其中只有约3000个标记是完整的词,其余的则是片段。)

  • 流水线的每个部分都由一个神经网络实现,其权重是通过对神经网络进行端到端的训练确定的。换句话说,除了整体架构,实际上没有任何细节是有“明确设计”的,一切都是从训练数据中“学习”来的。

  • Transformer中的“注意力”机制所做的是允许“关注”更早的词,因此可能捕捉到(例如)动词可以如何被联系到出现在句子中很多词之前的名词。

  • 实际上,我们正在“打开ChatGPT(或者至少是GPT-2)的大脑”,并发现里面很复杂、难以理解—尽管它最终产生了可识别的人类语言。

  • ChatGPT的核心:神经网络被反复用于生成每个标记。在某种程度上,它非常简单:就是完全相同的人工神经元的一个集合。

# 第一十七章 ChatGPT的训练

  • 那1750亿个神经元的权重是如何确定的呢?基本上,这是基于包含人类所写文本的巨型语料库(来自互联网、书籍等),通过大规模训练得出的结果。

  • ChatGPT内部并没有直接存储来自互联网、书籍等的所有文本。因为ChatGPT内部实际上是一堆数(精度不到10位),它们是所有文本的总体结构的某种分布式编码。

# 第一十八章 在基础训练之外

  • 构建ChatGPT的一个关键思想是,在“被动阅读”来自互联网等的内容之后添加一步:让人类积极地与ChatGPT互动,看看它产生了什么,并且在“如何成为一个好的聊天机器人”方面给予实际反馈。

  • 它确实有些类人:至少在经过所有预训练后,你只需要把东西告诉它一次,它就能“记住”—至少记住足够长的时间来生成一段文本。

  • 像人类一样,如果ChatGPT接收到一些匪夷所思、出乎意料、完全不符合它已有框架的东西,它就似乎无法成功地“整合”这些信息。只有在这些信息基本上以一种相对简单的方式依赖于它已有的框架时,它才能够进行“整合”。

  • 神经网络在捕捉信息方面不可避免地存在“算法限制”。如果告诉它类似于“从这个到那个”等“浅显”的规则,神经网络很可能能够不错地表示和重现这些规则,并且它“已经掌握”的语言知识将为其提供一个立即可用的模式。但是,如果试图给它实际的“深度”计算规则,涉及许多可能计算不可约的步骤,那么它就行不通了。(

  • 神经网络可以学习特定的“不可约”计算的答案。但是,一旦存在可能性的组合数,这种“表查找式”的方法就不起作用了。因此,就像人类一样,神经网络此时需要使用真正的计算工具。(

# 第一十九章 真正让ChatGPT发挥作用的是什么

  • ChatGPT是如何在语言方面获得如此巨大成功的呢?我认为基本答案是,语言在根本上比它看起来更简单。这意味着,即使是具有简单的神经网络结构的ChatGPT,也能够成功地捕捉人类语言的“本质”和背后的思维方式。

  • ChatGPT的成功为一个基础而重要的科学事实向我们提供了证据:它表明我们仍然可以期待能够发现重大的新“语言法则”,实际上是“思维法则”。

  • 语言不仅仅是把一些词随机拼凑在一起。相反,不同类型的词之间有相当明确的语法规则。

  • ChatGPT并不明确地“了解”这些规则。但在训练过程中,它隐含地发现了这些规则,并且似乎擅长遵守它们。

  • 对于人类“一眼就能解决”的问题,神经网络也可以解决。但对于需要执行“更算法式”操作的问题(例如明确计算括号是否闭合),神经网络往往会“计算过浅”,难以可靠地解决。

  • 一个关键的“类自然科学”观察结果是,神经网络的Transformer架构,就像ChatGPT中的这个,好像成功地学会了似乎在所有人类语言中都存在(至少在某种程度上是近似的)的嵌套树状的句法结构。

  • 语法为语言提供了一种约束,但显然还有更多限制。像“Inquisitive electrons eat blue theories for fish”(好奇的电子为了鱼吃蓝色的理论)这样的句子虽然在语法上是正确的,但不是人们通常会说的话。

  • 有没有一种通用的方法来判断一个句子是否有意义呢?这方面没有传统的总体理论。但是可以认为,在用来自互联网等处的数十亿个(应该有意义的)句子对ChatGPT进行训练后,它已经隐含地“发展出”了一个这样的“理论”。

  • 这个理论会是什么样的呢?它的冰山一角基本上已经为人所知了2000多年,那就是逻辑。

# 第二十章 意义空间和语义运动定律

  • 在ChatGPT内部,任何文本都可以被有效地表示为一个由数组成的数组,可以将其视为某种“语言特征空间”中一个点的坐标。因此,ChatGPT续写一段文本,就相当于在语言特征空间中追踪一条轨迹。

  • 目前,我们还没有准备好从它的“内部行为”中“实证解码”ChatGPT已经“发现”的人类语言的“组织”规律。

# 第二十一章 语义语法和计算语言的力量

  • 产生“有意义的人类语言”需要什么?过去,我们可能认为人类大脑必不可少。但现在我们知道,ChatGPT的神经网络也可以做得非常出色。

  • 我强烈怀疑ChatGPT的成功暗示了一个重要的“科学”事实:有意义的人类语言实际上比我们所知道的更加结构化、更加简单,最终可能以相当简单的规则来描述如何组织这样的语言。

  • 句法语法为如何组织人类语言中属于不同词性的词提供了规则。但是为了处理意义,我们需要更进一步。一种方法是不仅考虑语言的句法语法,还要考虑语义语法。

  • 当我们开始谈论“语义语法”时,很快就会问:它的底层是什么?它假设了什么样的“世界模型”?句法语法实际上只是关于由词构建语言的。但是语义语法必然涉及某种“世界模型”—类似于“骨架”,由实际的词构成的语言可以基于它分层。

  • 人类语言是不精确的,这主要是因为它没有与特定的计算实现相“结合”,其意义基本上只由其使用者之间的“社会契约”定义。但是,计算语言在本质上具有一定的精确性,因为它指定的内容最终总是可以“在计算机上毫无歧义地执行”。

  • 在计算语言中,利用普通的人类语言来创造名称通常很方便。但是这些名称在计算语言中的含义必须是精确的,可能涵盖也可能不涵盖典型人类语言用法中的某些特定内涵。

  • 我们可以将计算语言—和语义语法—的构建看作一种在表示事物方面的终极压缩。因为它使我们不必(比如)处理存在于普通人类语言中的所有“措辞”,就能够谈论可能性的本质。

# 第二十二章 那么,ChatGPT到底在做什么?它为什么能做到这些?

  • ChatGPT的基本概念在某种程度上相当简单:首先从互联网、书籍等获取人类创造的海量文本样本,然后训练一个神经网络来生成“与之类似”的文本。特别是,它能够从“提示”开始,继续生成“与其训练数据相似的文本”。

  • ChatGPT的具体工程非常引人注目。但是,(至少在它能够使用外部工具之前)ChatGPT“仅仅”是从其积累的“传统智慧的统计数据”中提取了一些“连贯的文本线索”。

# 第二十五章 ChatGPT和Wolfram|Alpha

  • 几十年来,对AI的思考一直存在着两极分化:ChatGPT使用的“统计方法”,以及实际上是Wolfram|Alpha的起点的“符号方法”。

# 第二十七章 再举几个例子

  • ChatGPT甚至可以为“它得出答案的方式”(尽管并不是它所“做”的真正方式)编造一个非常像样的解释。此外,迷人(和有趣)的是,它给出的解释里存在不理解数学的人类可能会犯的错误。

  • 像ChatGPT这样基于生成语言的AI系统的基本思想并不适用于需要执行结构化计算任务的情况。换句话说,需要“修复”几乎无穷多的“bug”,才能追赶上Wolfram|Alpha以其结构化方式所能实现的几乎无穷小的成就。

最近更新: 4 个月前