大模型原理
通过前面的分析,我们知道AI产生智能的三要素分别是:算法、数据、算力。本质来说,AI的智能还是基于各种数学计算产生的。
那么问题来了:现在的AI是如何通过训练理解人类语言的呢?语言是如何计算和训练的呢?
模型的训练
前面我们说过,AI的神经网络模型就是在模仿人类的神经元:

你给它输入一些参数,最终它经过计算返回一个结果。因此从某种意义上,你可以把模型看做是一个函数。

这就类似:y = ax + b,这个函数有两个参数a和b,当a和b确定时,这个函数就能表示一条直线。输入一个x,一定能得到一个结果y
当然,模型这个“函数”要复杂的多,其参数不是两个,而是可能达到千亿规模:

因此它表示的不是一条直线,而是表示人类复杂的语言系统。
模型训练的过程,就是求模型参数的过程,类似于求解函数参数。已知直线上两个点的坐标,就能求出这条直线对应的a和b的值。

不过,大模型这个“函数”要复杂的多,其参数规模高达数千亿,模拟的也不是一条直线,它需要的“点”也是天文数字,因此根本就不可能精确计算出每一个参数的值。
所以,模型的训练更像是在猜答案:
- 先给模型参数设定为随机值
- 然后输入一个参数,再把模型计算的结果与预期的正确结果做对比
- 如果不对就调整参数,直到正确为止
这里的输入参数和预期结果就是所谓的训练数据(平面上的“点”)。不断的给模型提供新的训练数据,根据计算结果不断调整模型的参数,直到模型的计算能够与大多数的训练数据吻合,那么模型的训练就完成了。
大语言模型的训练就是拿海量的人类语言文字作为训练数据,不断调整模型参数,使其与人类的语言文字系统拟合。
但问题来了,人类的语言文字是如何参与数学运算的呢?
大语言模型
在2003年,图灵奖得主约书亚·本吉奥(Yoshua Bengio)的一篇名为《A neural probabilistic language model》的论文开创了神经网络语言模型(Neural Network Language Model,NNLM)的先河。
这篇文章中首次提到了词向量(Word Embedding)的概念雏形,这为神经网络训练学习自然语言打下了坚实的基础。
- 每个词语都可以经过模型运算转化为一个多维向量(也就是一个浮点数数组,GPT3采用12288维向量)
- 通过训练使模型计算出的多维向量与文字语义产生关联,使多维空间中的不同方向表示不同语义
例如,在经过训练后的向量空间中,有两个向量:中国、美国:

此时,我们用E(美国) - E(中国) 得到的新向量,就可以表示为美国与中国的差异。
假如此时我询问LLM在中国有什么食物与美国的汉堡类似,我们就可以这么做:

- 先找到表示汉堡的向量:E(汉堡)
- 然后加上表示两个国家差异的向量:E(美国) - E(中国)
- 从而计算出一个新向量:E(汉堡) + E(美国) - E(中国)
- 最后,将得到的向量反向量化(unembedding),大概率就是我们要的结果
当然,真实情况会比这个复杂的多,受到语句上下文的影响,和多义词的影响,运算可能得到不止一个结果,并且会根据可能性形成每一个结果的概率分布,然后通过某种函数算法选择一个最终结果。
综上,大语言模型,就是把人类语言转为可以计算的多维向量坐标,然后根据上文向量计算,来推测下文。就像这样:

更神奇的是,人类一开始训练语言模型只是为了让它理解人类语言,起到翻译作用。但当模型和数据规模足够大时,它不仅能够理解和生成自然语言,还能理解、推理、分析人类生活中的大部分问题,成为了可应用于各个领域的通用人工智能(AGI)!
这种因为数据和模型规模扩大而涌现出各种能力的现象,我们称之为泛化。
而这样的大规模语言模型我们就称为大语言模型(Large Language Model),简称LLM.
如果大家想要进一步搞清楚大模型原理,可以参考以下两个视频:
