大语言模型(LLM)到底是什么?
如果我们想知道“忽左忽右”是什么样的播客节目?想知道“某个歌手的作曲风格”是什么类型?或许是想听定制的笑话。在几年前我们会去谷歌这样的问题来得到答案,但是如今我们会去问AI。其实现在的AI就是大语言模型(large language model)。我相信我们在初次使用它时心中会非常好奇:为什么它可以理解我说话,且回答的有模有样?它会为什么可以模仿名人写诗作赋?我相信接下来的段落可以解答我们的好奇。
我的观点是认为大语言模型在现阶段本质上是一个互联网文本压缩机,由其训练流程可以看出它的本质。它的训练阶段分为:预训练和监督微调两个阶段。在预训练阶段,训练人员通过爬虫的方法将互联网上优质网站整理成一个巨大的文本文件。这是一个爬取互联网数据的网站,里面介绍了方法等信息,该网站所爬取的互联网数据量为44TB。大家可能好奇44TB为多大,一般文本数据来说,1GB可存储约500万页纯文本,44TB可存储约2200亿页文本,相当于数亿本书。其中预训练的重点是在于如何“压缩”和如何衡量“压缩”的效果。关于如何“压缩”的算法是一种名为“反向传播”的算法,本文中不解释这个。我们集中于后者:如何很衡量模型”压缩“互联网文本的效果。
为了具体理解大模型如何衡量压缩庞大的互联网文本数据的效果,我们引入熵(Entropy)的概念。“熵”有两种含义,一种是物理学上的定义,另一种是信息论中的定义。“熵”在信息论中衡量一个系统的平均信息量。信息量是对一个事件不确定性的度量,与事件发生的概率成反比,也就是说如果一个系统的平均信息量越高,那么不确定性越高。香农定义信息量为:,单位为比特(因为使用以2为底的对数,1比特表示一个二元选择)。例如: “明天日出”的概率接近1,信息量很小。 “夏天下雪”的概率很低,信息量很大。 熵是系统中所有可能事件信息量的加权平均(期望值),公式为:。熵反映了系统的平均不确定性。例如,在一场比赛中,A队获胜的概率为50%,B队获胜的概率为50%。根据信息量公式:
比赛的熵为:。这表明比赛的不确定性为1比特,意味着结果完全不可预测。
神经网络的学习是构造初始态的概率模型使其对要模拟的概率模型进行近似。具体细节参考。大语言模型其实也是一种庞大的神经网络模型。它本身是一种概率模型,我们的目的是模拟人脑的概率模型,由于人脑的概率模型我们是不知道的,所以我们就用互联网数据代表人脑的概率模型,将数据喂给大语言模型使其微调建模,最后成功模拟人脑模型。人们采用了很多种衡量模拟效果的方法:
- 最小二乘法
- 极大似然估计法
- 最小交叉熵法
第三种是最常见和最广泛使用的方法。我们以上提到了“熵”,我们衡量两个系统的不确定性其实用到了相对熵(KL散度),它是衡量两个系统的概率分布差异的指标。
经过一番推导之后我们可以得到交叉熵的公式:。其含义是在以P系统为基准下,Q系统与P系统有多相似。运用到大语言模型的学习上的情况是:词汇表有五个词 [I love to eat .],我们输入一个序列 “I love to”,让模型预测下一个词的概率,它会给自己的词汇表中的五个词分配概率,“I”:0.1 “love”:0.1 “to”:0.1 “.”:0.1 “eat”:0.6,而且真实的概率分布是用one-hot编码的(简单理解为,正确的词为1,错误的词为0):q("I") = 0 q("love") = 0 q("to") = 0 q("eat") = 1 q("
Prompt:[请列举世界上的八大奇迹] Answer:"1.金字塔 2.长城...等等”
这个连接包含了很多类似的对话训练集。模型在一遍遍这样的训练下,开始学了读懂人类的指令,也就是GPT-3的问世。
另外证据也显示压缩会线性代表智力高低。它压缩效果越好,意味着它越聪明,当然压缩也是有极限的。
资源:
- [Karpathy关于大语言模型本质的介绍]