本文接着【为文字建立数学模型】一文继续聊。
ChatGPT 虽然复杂,但是它的内部原理其实和我们在【为文字建立数学模型】一文中所讨论的概率模型是一致的。
我们也来简单梳理下。
ChatGPT 的文字建模公式是语言模型基础理论的高阶扩展,它的核心公式是这样:
这里涉及到几个参数:
小伙伴们可以看到,这个公式和我们在【为文字建立数学模型】一文中所讨论的公式基本上一致。如果有小伙伴看过初代 GPT 论文,就会发现这个公式和论文中的公式基本上是一致的:

这里涉及到一个点,最大似然估计,我们来简单说一下。
统计学家(尤其是费歇尔爵士)观察到,很多时候我们不仅观测到现象(数据),我们还想知道背后的原因(模型参数)。既然数据已经发生了,那么最有可能的那个原因,应该就是那个能让该数据发生可能性最大的原因。这是一种基于观测进行反向推断的非常强大且直观的原理。
“似然”不是“概率”: 这点很重要,但容易混淆。
举个简单的例子:
假设你是一个侦探,房间里发生了一起“饼干失窃案”。现场留下了关键的线索:地上撒落了一些碎屑(这就是我们看到的“数据”或“结果”)。
你面前有三个嫌疑人(这代表不同的可能原因或模型):
你作为侦探的任务是:根据现场发现的碎屑(数据),推断哪个嫌疑人(模型/参数值) 最有可能是“作案者”,也就是导致这个“碎屑现场”的原因。
最大似然估计(Maximum Likelihood Estimation, MLE)是怎么思考的?
MLE 就像一个聪明的侦探助手,它会问这样一个问题:“假设是某个嫌疑人偷吃了饼干(模型成立),那么我们看到地上有这些碎屑(观测到的数据)这件事,发生的可能性有多大?”
然后,它对每一个嫌疑人都问一遍这个问题:
MLE 助手比较完所有嫌疑人(所有模型参数)的似然值(每个模型生成所观察数据的可能性)后发现:
张三(60%)对应的似然值是最大的!
于是,MLE 助手报告:在目前看到这些饼干碎屑(数据)的情况下,“张三最有可能是偷吃饼干的人”。换句话说,参数值 60% 是这个模型(吃饼干掉碎屑的概率模型)最有可能产生我们所观察到的碎屑数据的值。
这就是最大似然估计。
回到我们一开始的 ChatGPT 公式。
我们说 U 就相当于整个训练语料库,理论上 U 应该是全人类所有文字语料的合集,但实际上 ChatGPT 在训练时并不能也不可能收集到全人类的所有文字语料。ChatGPT 在训练时采用的语料主要有 Common Crawl、WebText2、书籍语料、维基百科、GitHub 等等,这些语料无法代表全人类的所有文本语料。但是在训练模型时,我们需要假设这些数据约等于全人类所有的文字语料。
ChatGPT 学习了这些语料之后,要学会预测,比如:“今天天气真___” 后面最可能跟什么?“好”?“不错”?“热”?还是“大象”?显然“好”、“不错”、“热”比“大象”可能性大得多。
ChatGPT 里有很多可以调整的参数。这些参数代表了语言的规律,比如哪些词经常一起出现(“天气”和“好”),语法结构,词的含义关联等。MLE 的核心要求是通过调整参数,使得在真实句子中实际出现的下一个词(比如“好”)的可能性,尽可能地大!它希望自己预测“好”的概率很高。这样就把一个比较复杂的语言问题转变为一个数学问题(最大似然估计),工程师们则通过梯度下降算法让计算机去逼近这个目标。
ChatGPT 用最大似然估计 (MLE),就像在玩一个超大型的“猜下一个词”游戏。它通过疯狂阅读人类写的所有文字,不断调整自己的“大脑”,目标只有一个:让它读到的所有真实句子,看起来都是“最顺理成章”、“最不奇怪”的。它学会的,就是人类语言中“最可能”出现的说话模式。所以它能像人一样聊天,但也可能像人一样犯错或说些“正确的废话”。