之前写过《写给门外汉的大语言模型原理》,回头看,这个标题展示出来的雄心显然超过了我驾驭它的能力,真正的门外汉,看完大概率还是云里雾里。其实这篇文章更准确的标题应该是《一个门外汉理解的大语言模型原理》,这是我一系列学习笔记的一篇。
以教促学,这种方法也叫费曼学习法,是由著名物理学家、诺贝尔物理学奖得主理查德·费曼提出的。其核心就是:通过简短的语言,向别人清楚地解说一件事,来检验自己是否真的弄懂了这件事。今天是这系列文章的另外一篇,展开讲一下前一篇文章着墨不多的:现在的人工智能系统,背后基本都是一个网络状的计算结构,我们把它称之为(人工)神经网络。这种网络状计算结构(大概率)是从脑科学那边借鉴过来的,为什么设计成这样并没有一种很好的“理论解释”,可以说人工智能的方法从第一天开始就包含了一种“试试看”的心态,它只是被构建出来,然后发现确实有效。在不假思索的表达方式中,有时有人会把网络中的计算节点称为“神经元”,这跟我此前把这种计算结构比喻成函数一样,本质上没有错,但未必能降低理解的门槛。Youtube上有一个很有名的数学博主,叫“3Blue1Brown”,我从他那里找来两张图帮助大家直观地理解这个网络状计算结构大概长什么样子。
上面两张图是一个小型神经网络工作时的样子,它的功能是识别手写的数字。它有四层,第一层是输入层,有784个节点,最后一层是输出层,有10个节点,其他的统一称为中间层。大语言模型的层数、每一层的节点数远比上面这个多,但结构是类似的。通常你会听到一个大语言模型有多少亿参数,比如OpenAI的GPT4有1.76万亿个参数,这个数字指的是什么呢?需要重点指出的是,这些连接线不是物理意义上存在的连线。每个节点是一个数值,每条连线也是一个数值,当两个节点通过连线连接在一起,它的意思是:前序节点(表示的)数值与连线(表示的)数值运算之后流向后序节点。
所以,从左往右看,当你给定输入层节点的数值,在已知所有连接线数值的前提下,就可以依次算出每一层后序节点的数值(不同层的运算方法可能不同,但都是定义好的),直到算出最后一层节点的数值, 这个过程叫推理,或者传播。以机器翻译为例,训练的过程基本上是这样,最开始的时候,我们给这些连接线随便分配一个数值,然后我们要准备很多已经翻译好的例子,比如:The rain today is even heavier than the day Yi Ping went to her father's house to borrow money.
前面我们提过,神经网络内部都是数值的表示,所以我们需要某种方法把这两句话分别表示为一种数值表示,通常是一个数组,当然,这两个数组就不是随便选的了,它需要能体现出对应句子的本质特征。有了这两个数组,我们把中文数组作为输入,经过层层运算,会得到一个新的预测数组,然后我们再计算预测数组和英文数组的误差,由于连接线数值一开始是随便分配的,你可以预期,刚开始误差应该很大。接下来的工作就是调整连接线数值,让误差尽可能的缩小,然后用更多的数据,一直不停的循环这个过程,不停的调整连接线的数值。所以呢,模型训练本质上是没有结束这个说法的,如果有钱有闲有数据的话,你可以一直不停的循环这个过程,所谓的模型训练结束,就是把某个时间点所有连接线当时的数值存储起来,留待模型工作阶段使用而已。
这里需要提出一点,大模型的开源与传统软件的开源有很大的不同。
目前的大模型开源,很多就是公开这些连接线的数值,让你加载这些数值以后能够直接用,但是并不会告诉你这些数值是通过什么数据,什么方式得来的,也不会把当时训练的数据共享给你,所以大语言模型的开源有点类似免费软件而不是开源软件。
如果你能跟上本文到目前为止的思路,大幕就要拉开了。
这个时候我刚好可以做一个简短的免责声明:小弟也是刚学。
你大概会想:那这种东西能搞出通用人工智能?
老实讲,我也不太相信。
只是我上面给你演示的神经网络只有约200万个参数(784*16*16*10),而现在的大语言模型都是千亿万亿起步,在这种尺度的复杂度下,是否会出现所谓的“智能涌现”?
人类语言,及其生成所涉及的思维过程,一直被视为复杂性的巅峰。
但Mathematica 之父Wolfram说:
我强烈怀疑ChatGPT的成功暗示了一个重要的“科学”事实:有意义的人类语言实际上比我们所知道的更加结构化、更加简单,最终可能以相当简单的规则来描述如何组织这样的语言。
意思就是说,不是说这些模型有多厉害,是语言本身就没有我们原先理解的那样复杂。
在文章的开头,我提到这种网络状的计算结构是从脑科学那边借鉴过来的,如果你从哲学上问,为什么这样的计算结构有效,大概率没有人能回答,因为这差不多等于在问:为什么人脑是进化成现在这样子?
其实还有一点我们也是从脑科学中借鉴过来的。
新的这一波人工智能热潮的起点就是Google的研究人员发表的论文《Attention Is All You Need》,attention中文可以翻译为"注意力",它指的是什么意思呢?
研表究明,汉字的序顺并不定一能影阅响读,比如当你完看这句话后,才发这现里的字全是都乱的。
如果你熟悉英文的话,就会发现阅读英文也是如此,我们在阅读的时候,不是给每个词分配相同的注意力的,按照计算机的表达方式来说:
在时序数据中,每个元素的权重是不一样的。
这就是attention代表的意思。