这本书昨天用了一上午天就一口气读完了,通篇读完后,这本书主要是介绍了ChatGPT怎么能做到生成内容的一些背后的原理逻辑,总结一下这本书是ChatGPT通过大量的数据(这些数据来自网络、书籍等等类似于数据库的东西)分析,这里的分析包括神经网络、嵌入、机器学习来推测下一步输出的内容是什么,通过这一连串的操作可以尽量达到“类人”的效果。
ChatGPT在做什么?它为何能做到这些?
- 首先需要解释,ChatGPT从根本上始终要做的是,针对它得到的任何文本产生“合理的延续”。这里所说的“合理”是指,“人们在看到诸如数十亿个网页上的内容后,可能期待别人会这样写”。
- 最终的结果是,它会列出随后可能出现的词及其出现的“概率”(按“概率”从高到低排列)。
- 写一篇文章时,它实质上只是在一遍又一遍地询问“根据目前的文本,下一个词应该是什么”。
- 这里存在随机性意味着,如果我们多次使用相同的提示(prompt),每次都有可能得到不同的文章。
概率从何而来
- Chatgtp会通过对大量的数据进行分析,在这个分析的基础之上预测下一个词出现的频率,接着再通过这些概率来输出接下来的文本。
原文:最佳思路是建立一个模型,让我们能够估计序列出现的概率—即使我们从未在已有的文本语料库中明确看到过这些序列。
- 最佳思路是建立一个模型,让我们能够估计序列出现的概率—即使我们从未在已有的文本语料库中明确看到过这些序列。
什么是模型
- 从来没有“无模型的模型”。你使用的任何模型都有某种特定的基本结构,以及用于拟合数据的一定数量的“旋钮”(也就是可以设置的参数)。ChatGPT使用了许多这样的“旋钮”—实际上有1750亿个。
- 假设你想(像16世纪末的伽利略一样)知道从比萨斜塔各层掉落的炮弹分别需要多长时间才能落地。当然,你可以在每种情况下进行测量并将结果制作成表格。不过,你还可以运用理论科学的本质:建立一个模型,用它提供某种计算答案的程序,而不仅仅是在每种情况下测量和记录。
- 模型是指有某种特定的基本结构,以及用于拟合数据的一定数量的“旋钮”(也就是可以设置的参数)。
- 对于ChatGPT,我们需要为人脑产生的人类语言文本建立模型。
- 如果函数给出的结果总是与人类的意见相符,那么我们就有了一个“好模型”。
- LLM 容易产生所谓的 “幻觉”,即生成看似合理但实际并非真实的输出,这是因为 LLM 在训练时是基于训练数据中的模式预测下一个最可能的词,而非真正理解信息。
神经网络
- 正如上面所说的,这并不是我们可以“根据第一性原则推导”出来的事实。这只是一些经验性的发现,至少在某些领域是正确的。但这是神经网络有用的一个关键原因:它们以某种方式捕捉了“类似人类”的做事方式。
- 我们可以说神经网络正在“挑选出某些特征”(也许尖尖的耳朵是其中之一),并使用这些特征来确定图像的内容。
- 神经网络识别就是chatgpt在模仿人类的思考方式或者类似于经验的东西来对所识别的内容“找出某种特征”,从而根据这些“特征”来确定所识别的内容。
- 神经网络可以被视为根据其输入和权重计算的一个数学函数。可以执行各种任务,还可以通过逐步“根据样例训练”来学习执行这些任务
- 神经网络的基本思想是利用大量简单(本质上相同)的组件来创建一个灵活的“计算结构”,并使其能够逐步通过学习样例得到改进。
- 神经网络的一个重要特征是说到底和计算机一样只是在处理数据。
原文:假设我们想得到神经网络中的“猫”。
机器学习和神经网络的训练
- 基本思想是提供大量的“输入→输出”样例以供“学习”,然后尝试找到能够复现这些样例的权重。
- 应该如何调整权重呢?基本思想是,在每个阶段看一下我们离想要的函数“有多远”,然后朝更接近该函数的方向更新权重。
- 最后需要解释的关键是,如何调整权重以减小损失函数。正如我们所说的,损失函数给出了我们得到的值和真实值之间的“距离”。但是“我们得到的值”在每个阶段是由神经网络的当前版本和其中的权重确定的。
神经网络训练的实践和学问
- 这更多地反映了我们通常试图让神经网络去完成的任务是“类人”任务,而神经网络可以捕捉相当普遍的“类人过程”。
- 但是后来发现,(至少对于“类人任务”)最好的方法通常是尝试训练神经网络来“解决端到端的问题”,让它自己“发现”必要的中间特征、编码等。
- 神经网络的一个重要特征是,它们说到底只是在处理数据—和计算机一样
- 神经网络的实际学习过程是怎样的呢?归根结底,核心在于确定哪些权重能够最好地捕捉给定的训练样例。有各种各样的详细选择和“超参数设置”(之所以这么叫,是因为权重也称为“参数”),可以用来调整如何进行学习。有不同的损失函数可以选择,如平方和、绝对值和,等等。有不同的损失最小化方法,如每一步在权重空间中移动多长的距离,等等。然后还有一些问题,比如“批量”(batch)展示多少个样例来获得要最小化的损失的连续估计。是的,我们可以(像在Wolfram语言中所做的一样)应用机器学习来自动化机器学习,并自动设置超参数等。
“足够大的神经网络当然无所不能!”
- 能力和可训练性之间存在着一个终极权衡:你越想让一个系统“真正利用”其计算能力,它就越会表现出计算不可约性,从而越不容易被训练;而它在本质上越易于训练,就越不能进行复杂的计算。
“嵌入”的概念
- 不尝试在“特征”上对比,而是在“黑盒”中自己考虑怎么输出接近度更高的内容。
原文:这里的关键概念是,我们不直接尝试表征“哪个图像接近哪个图像”,而是考虑一个定义良好、可以获取明确的训练数据的任务(这里是数字识别),然后利用如下事实:在完成这个任务时,神经网络隐含地必须做出相当于“接近度决策”的决策。因此,我们不需要明确地谈论“图像的接近度”,而是只谈论图像代表什么数字的具体问题,然后“让神经网络”隐含地确定这对于“图像的接近度”意味着什么。
- 我们对常见物体的识别为“锚点”创建一个图像嵌入,然后根据神经网络的行为“围绕它进行泛化”。关键是,这种行为只要与我们人类感知和解读图像的方式一致,就将最终成为一种“我们认为正确”且在实践中对执行“类人判断”的任务有用的嵌入。
- 神经网络以目前的设置来说,基本上是基于数的。因此,如果要用它来处理像文本这样的东西,我们需要一种用数表示文本的方法。
- 可以将嵌入视为一种尝试通过数的数组来表示某些东西“本质”的方法,其特性是“相近的事物”由相近的数表示,这就是“嵌入”(embedding)的思想。我们可以将词嵌入视为试图在一种“意义空间”中布局词,其中“在意义上相近”的词会出现在相近的位置。如果测量这些向量之间的距离,就可以找到词之间的“相似度”。
- 如何才能构建这样的嵌入呢?大致的想法是查看大量的文本(这里查看了来自互联网的50亿个词),然后看看各个词出现的“环境”有多“相似”。例如,alligator(短吻鳄)和crocodile(鳄鱼)在相似的句子中经常几乎可以互换,这意味着它们将在嵌入中被放在相近的位置。但是,turnip(芜菁)和eagle(鹰)一般不会出现在相似的句子中,因此将在嵌入中相距很远。
ChatGPT的内部原理
- 从根本上说,ChatGPT是一个庞大的神经网络— GPT-3拥有1750亿个权重。
- ChatGPT(或者说它基于的GPT-3网络)到底是在做什么呢?它的总体目标是,根据所接受的训练(查看来自互联网的数十亿页文本,等等),以“合理”的方式续写文本。所以在任意给定时刻,它都有一定量的文本,而目标是为要添加的下一个标记做出适当的选择。
- 它的操作分为三个基本阶段。
- 它获取与目前的文本相对应的标记序列,并找到表示这些标记的一个嵌入(即由数组成的数组)。
- 它以“标准的神经网络的方式”对此嵌入进行操作,值“像涟漪一样依次通过”网络中的各层,从而产生一个新的嵌入(即一个新的数组)。
- 它获取此数组的最后一部分,并据此生成包含约50000个值的数组,这些值就成了各个可能的下一个标记的概率。
- 关键是,这条流水线的每个部分都由一个神经网络实现,其权重是通过对神经网络进行端到端的训练确定的。换句话说,除了整体架构,实际上没有任何细节是有“明确设计”的,一切都是从训练数据中“学习”来的。
- 注意力头是做什么的呢?它们基本上是一种在标记序列(即目前已经生成的文本)中进行“回顾”的方式,能以一种有用的形式“打包过去的内容”,以便找到下一个标记。
- ChatGPT每生成一个新的标记,都必须进行一次包括所有这些权重在内的计算。
ChatGPT的训练
- 先提供一批样例,然后调整网络中的权重,以最小化网络在这些样例上的误差(“损失”)。在
- 基础训练之外输入给chatgpt的指令很重要
基本上只需要把东西告诉ChatGPT一次—作为提示的一部分—它就可以成功用其生成文本。
真正让ChatGPT发挥作用的是什么?
- 即使是具有简单的神经网络结构的ChatGPT,也能够成功地捕捉人类语言的“本质”和背后的思维方式。此外,在训练过程中,ChatGPT已经通过某种方式“隐含地发现”了使这一切成为可能的语言(和思维)规律。
- 它表明我们仍然可以期待能够发现重大的新“语言法则”,实际上是“思维法则”
- ChatGPT并不明确地“了解”这些规则。但在训练过程中,它隐含地发现了这些规则,并且似乎擅长遵守它们。
语义语法和计算语言的力量
- 人类语言是不精确的,这主要是因为它没有与特定的计算实现相“结合”,其意义基本上只由其使用者之间的“社会契约”定义。但是,计算语言在本质上具有一定的精确性,因为它指定的内容最终总是可以“在计算机上毫无歧义地执行”。人类语言有一定的模糊性通常无伤大雅。
那么,ChatGPT到底在做什么?它为什么能做到这些?
- ChatGPT的基本概念在某种程度上相当简单:首先从互联网、书籍等获取人类创造的海量文本样本,然后训练一个神经网络来生成“与之类似”的文本。特别是,它能够从“提示”开始,继续生成“与其训练数据相似的文本”。
- ChatGPT不仅能产生连贯的人类语言,而且能根据“阅读”过的内容来“循着提示说一些话”。
利用Wolfarm|Alpha为ChatGPT赋予计算知识超能力
- ChatGPT使用的“统计方法”,以及实际上是Wolfarm|Alpha的起点的“符号方法”。
- 现在由于有了ChatGPT的成功以及我们在使Wolfarm|Alpha理解自然语言方面所做的所有工作,终于有机会将二者结合起来,发挥出比单独使用任何一种方法都更强大的力量。
- ChatGPT接受自然语言,Wolfarm|Alpha是精确的计算语言。
- “计算链”越复杂,越需要调用Wolfarm|Alpha来正确处理。
- ChatGPT可以直接学习Wolfarm语言。