JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

用概率来思考

到目前为止你遇到的大多数模型,都只会自信地给你一个答案。本文换一个视角:把学习看作对不确定性的推理,认识把模型与数据连在一起的「似然」,并理解生成式模型与判别式模型为何把世界一分为二。

为什么非要给模型装上「不确定性」?

在这道阶梯上一路走来,模型大多只是一个函数:吃进一个输入,吐出一个答案——一个类别、一个数字、下一个词元。这套办法好用得惊人,却也藏起了一些东西。让一个分类器去标注一张模糊的照片,它照样会用对待清晰照片时那股神气,宣布「猫,0.97」。那个数字看起来像是信心,可它往往只是一个被归一化的分数,而不是关于答案究竟有多可能的诚实陈述。

概率视角从一个更谦卑的前提出发:世界是嘈杂的,你的数据是残缺的,你所持的任何信念都该附带一份疑虑。它不去预测单一的值,而是预测一个概率分布——一整片可能性的地貌,越可信的地方堆起越多的权重。你要预测的那个量被当作一个随机变量:一个你对其取值心存不确定的东西,而不是一个你恰好还不知道的既定事实。

似然:一个模型把数据解释得有多好?

整个领域就围着这道枢纽转。一个概率模型,把它的旋钮拧到某一组具体的参数上,便可以被问一个简单的问题:在你这套设定下,我实际观测到的数据有多可能?这个数字就是似然。把一枚未知的硬币抛十次,看到七次正面——一个声称这枚硬币正面概率为 70% 的模型,会让这个结果相当可能;而一个声称只有 10% 的模型,则会让它近乎荒谬。数据没有变;变的是每个候选模型把它解释得有多好。

于是一种自然的学习方式,就是去搜寻那组让你观测到的数据尽可能可能的参数。这就是最大似然估计,它悄悄地是一大片机器学习背后的引擎。你在线性回归里最小化的那个著名的均方误差,恰恰就是在高斯噪声假设下的负对数似然;分类器的交叉熵损失,则是真实标签的负对数似然。最小化一个损失与最大化一个似然,一次又一次地,只是同一件事从两个角度看到的样子。

data:        H H T H H T H H H T   (7 heads / 10)

model p=0.7  likelihood  HIGH   <- explains the data well
model p=0.5  likelihood  medium
model p=0.1  likelihood  ~0     <- this data would be a shock

learning = turn the knob p to push likelihood as high as it goes
用最大似然来学习:把数据固定住,去搜寻那让它最不令人意外的参数。

造模型的两条路:生成式与判别式

一旦你开始用分布来思考,一个岔路口便出现了。假设你想根据一张照片把猫和狗区分开。一个判别式模型只学习那条边界——给定图像后标签的条件概率,P(标签 | 图像)。它从不操心去理解猫长什么样;它只是把输入空间划分成一块块区域。逻辑回归和大多数神经网络分类器都住在这里。当你要的只是答案时,它们通常是最锋利的工具。

一个生成式模型则更有野心。它试图学习数据本身是怎么被产生出来的——联合分布 P(图像, 标签),或者等价地,一套生成出像样的猫图像和狗图像的配方。朴素贝叶斯就是经典的小例子:它对每个类别内部特征如何出现建模,再用贝叶斯定理把它反转成一个预测。正因为它学会了生成,它也能凭空造出新样本、标记出一个既不像这类又不像那类的输入,并在标签稀缺时撑住场面。

两者并无简单的孰优孰劣——这是一个真正的权衡,而非一道高下之分。对完整的联合分布建模更难,对你的数据要求也更高,所以当标签充裕时,判别式模型往往在纯粹的准确率上胜出。但生成式的框架,正是近来这一大波系统的动力源:那些从噪声里变出照片的生成对抗网络与扩散图像模型,本质上都是 P(数据) 的模型。而一个大语言模型则是地道的生成式——它学习下一个词元的分布,再从中采样。

从似然到信念:通往贝叶斯的门

最大似然有个盲点:它只听数据,自己不带半点主见。抛三次硬币,三次都是正面,纯粹的最大似然就会宣布这枚硬币正面概率 100%——从这么小的样本里得出的离谱论断,正是你早已学会提防的过拟合的近亲。常识告诉你,你本该一进门就大致相信这硬币是公平的,再让这三次抛掷只把那份信念轻轻拨动一点。

这正是贝叶斯推断要把它形式化的那一步。你从一个先验出发——看到数据之前你所持的信念——把它乘上数据的似然,结果便得到一个后验:你更新过的信念。先验、后验与似然这三件套,是接下来好几篇指南共用的语法。注意,先验所扮演的角色,正与你已经在用的那些模型里的正则化相同:它温和地把极端的结论拉回到某个合理的地方。

而它的回报,恰恰就是我们一开始想要的那份诚实。一个贝叶斯模型不返回一个数字;它返回一整个后验分布,于是它能说的就不只是「大约 0.6」,而是「0.6,但上下浮动很大——我才看了三次抛掷而已」。那个宽度,正是货真价实的不确定性量化:一个自信地犯错的模型,与一个知道自己在猜的模型,二者之别就在于此。

诚实的边界:概率能买到什么、买不到什么

把模型吐出的每一个概率都读作一条经过校准的真理,是很诱人的,但要当心。现代深度网络的 softmax 输出,只是在形状上像个概率分布——这些模型出了名地过度自信,对着它从没见过类似样子的输入也照样欢欢喜喜地打出 0.99。一个接近 1 的数字意味着模型下了很重的注,而不是说它每错一百次里只错一次。只有当一个模型经过了校准的检验,它的概率才值得信赖——这正是评估那一阶梯会回头细谈的话题。

还有第二个更微妙的陷阱。一个概率永远是以模型的假设为条件的,而一个模型只能在它被造出来能够想象的那些方面感到不确定。给它念一句它从未训练过的语言里的话,它不会说「我毫无头绪」——它会自信地产出胡言乱语,因为这个问题落在了它的分布所覆盖的那个世界之外。这正是为什么语言模型里的幻觉不是一个能打补丁修掉的缺陷:一个生成式模型采样的是流畅、看起来很可能的文字,无论那文字是真是假——因为「真」从一开始就不在它所建模的东西之内。