〇、
断断续续把Stephen Wolfram的《ChatGPT 在做什么… 以及它为何发挥作用?》读完了,非常系统地介绍了ChatGPT的技术原理,不是泛泛而谈,结合了很多模型输入和输出案例进行介绍,配有大量图表。读的有些吃力,只能说直觉层面理解了七七八八。
文章也不只是讲原理,背后涉及很多人工智能理论和工程思想,对人工智能感兴趣的,非常值得一读。
翻译的质量不是特别好,可以结合英文原文看。
- 英文原文:What Is ChatGPT Doing … and Why Does It Work?—Stephen Wolfram Writings
- 作者的Youtube视频讲解What is ChatGPT doing…and why does it work? – YouTube
以下大致总结文章要点(理解和表述未必精准)以及一些联想到的内容。
一、
ChatGPT的训练目标就是续写文本:输入一段文本,它输出接下来可能输出的词列表(语言的基本单位词/字是有限的)及对应的概率。从输入到输出看,其工作方式与其它算法模型没什么区别。
有两个细节值得留意:
- 第一个输出如何决定的?——由人的问题引导输出的;
- 它是如何判断结束的?——结束也可以作为一个输出符号,给定概率。
二、
ChatGPT续写时,并不每次选择概率最高的输出,而是按一定概率输出概率低的续写词(技术上对应一个称为「温度」的参数)。如果始终以最高概率输出,最后的续写文本可能没有意义,这是实践发现,符合直觉,但并没有理论依据(后面会发现,LLM模型中大量设计都是基于实践经验的,暂无理论解释)。
三、
选择低概率的设计,很容易联想到生物进化,一个局部的随机「错误」让整个系统表现的更好。
四、
概率的来源是通过大量文本的学习,这部分很关键,作者从浅到深举了几个例子,非常友好。
- 先考虑一个字母后,下一个字母(共26个)的概率,可以容易的遍历所有单词统计到,比如q后面只会跟着u,其它字母的概率全是0;
- 同理,可以遍历所有文章,看一个单词后下一个单词(共5W候选)的概率。
- 进一步,当然也可以看一段文本后,仅接着其它单词的概率。
第二节提到,始终以最高概率单词输出,会得到无意义的内容。在这部分可以得到直觉上的理解:以单个字母预测为便,它的输出很可能变成「ininininininin」,单词输出也一样,可能变成「cat is animail is ……」。
五、
通俗的来看神经网络模型,其工作原理与人脑神经元非常类似:
- 神经网络由大量神经元构成
- 每个神经元都是一个函数(带有可变的参数),输入端和输出端分别连接着大量其它神经元
- 一个神经元拿到其它神经元的输入数据,经过计算转化为输出,给其它神经元
- ChatGPT从最初的输入(一段文本),到最后的输出(5W个词对应的概率),要经过1750亿个这样的神经元(网状联结)计算
下图非常有代表性,每个数字表示这个神经元的输出,而输出是由上游神经元输入+自身运算得出的。
一个补充知识:人脑有1000亿神经元,以及可能100亿个神经元连接。
一个真实的神经网络模型示意
六、
模型输入是文本,输出是文本及对应概率。但神经元函数处理的只是数值计算,所以此处涉及文本到数值(向量)的转换,即embending。能理解这个过程的作用,但文中也有不少技术实现细节介绍,没太看懂。
七、
关于模型的训练。
ChatGPT模型的预训练样本非常容易获取,即网络上大量的内容,遮住部分内容让模型预测,再与实际内容对比即可。
模型训练过程,就是不断调整每个神经元的参数,使得模型的输出与遮住的部分一致。这里又涉及一个技术逻辑,即「损失函数」,它用来评估模型输出与遮住内容的相似性。所以,对模型来讲,即调整参数使得损失函数足够小。只是,多达1750亿个参数,按什么方式向哪个方向调整,有些复杂。
大模型之所以需要大量计算资源,就是因为神经元太多,每次输入输出、每个神经元都需要计算一次。对ChatGPT,可以简单认为,一个500字的答案,背后有500*1750亿次计算。
八、
人工智能最近一次理论范式的突破是2017年Google发表的《Attention is All You Need》论文中提出的Transformer结构,ChatGPT也使用了这个结构。非常学术,通俗理解可以参考代码家这篇分享,下图便来自他的分享。
Transformer架构让模型学会找到图片和文字中的重点,比如人像照片中,人是重点,背景不重要,一句话中,主谓宾可能是重要的部分,其它修饰成份不重要。
来源:代码家的分享
九、
模型预训练后,所有参数在预训练数据上达到最优。但预训练数据往往有噪声或是分布上的不均匀,需要对模型进行fine tune(微调),根据fine tune的目标,需要特定领域、质量更高,但规模不用像预训练样本那么大的数据集。
比如
- 用孔子作品,fine tune一个孔子机器人。
- 用大量文学作品,fine tune一个写作机器人。具体点,用金庸作品,fine tune一个写金庸武侠的机器人。
- 使用Github上的代码,训练一个编程机器人。
这种利用特定人物、特定领域的数据fine fune一个专门机器人,是现在ChatGPT主流应用方向之一。
十、
神经网络模型结构非常简单:
- 基础组件只是神经元函数,它仅仅根据上游(多个)输入计算出结果并传递给下游的神经元(多个),并无特别复杂的逻辑。
- 大量神经元之间,也没有控制逻辑,只是数据的单向流动,每流经一个神经元,被计算一次。
如此简单的结构,经常样本训练后却表现出如此惊人的能力,神经网络内部(黑盒子)到底发生了什么,那1750亿个参数及神经元之间的连接关系,到底意味着什么?就是人的智能吗?
对这个黑盒子的理论解释,是AI领域重点且热门研究方向。
现在的人工智能领域,实践走在了理论前面。ChatGPT中很多设计,是试验出来的,无法解释。比如:
- 为什么温度参数0.8表现最佳
- 为什么1750亿参数的GPT-3.5表现出了惊人的对话能力,而15亿的GPT-2不行,多大参数是合理的,如何估计?
十一、
简单的结构,获得了类似人的语言能力以及语言背后反映出来的类似人的思维能力,是否意味着:
- 在像 ChatGPT 这样的神经网络中,有可能捕捉到人类大脑在生成语言方面的本质。
- 通过解密黑盒子,是否可以期待发现人类语言和思维的根本法则。并且,这种法则像神经网络结构一样,没有想象中的复杂。
关于ChatGPT对语言根本法则的获得有个佐证,如下图,ChatGPT的训练语料中,中文占比不到0.1%,但ChatGPT对中文理解同样强大,是否可以认为,不同语种之间某种共性的东西,被ChatGPT获得了。比如:
- 名词、动词等基本的词性
- 主语、谓语等基本的语法单位
- 猫=cat,不同语言之间的翻译
- 「猫是一种动物」这种纯知识性的内容
- ……
ChatGPT训练语料分布(来源网络)
十二、
使用ChatGPT的过程中会发现,在处理纯逻辑计算问题时,它的回答更容易出错,比如数学问题。
从它的工作原理看,对这些问题的回答同样只是语言生成,至少在模型结构上并没有为它设计逻辑推理的能力,至于1750亿个神经元的网络是否「涌现」出了一定的逻辑推理能力,也无法确切的得知。从使用上会发现,多数时候它的回答是有逻辑性的,看起来具有推理能力,但在一些高精度的问题上,也容易出错。
其实,这非常类似于人的「直觉思维」,它多数时候是有效的,但特定场景下也会犯错。
关于大语言模型是否有推理能力,非常推荐木遥的两篇微博:
涉及两个重要概念:
- CoT:chain of thought,思维链接
- Emergence:自发性结构涌现
总体而言,这些研究在工程实践上有一些进展,比如:许多人都观察到似乎让模型多读一些代码语料有助于培养 CoT。
但为什么会这样,并不清楚。Google Brain 的 Peter Liu 猜测说这是因为读代码能逼着语言模型把相隔很远的词联系起来思考(这是代码的特点)。
十三、
最后,想提一下《What Is ChatGPT Doing … and Why Does It Work?》的作者Stephen Wolfram,他是数学软件Mathematica的创始人,今年已经64岁,看起来仍然在一线搞研究创作,关于这篇文章的内容,它在Youtube上讲解了3个小时,佩服。