all_lessons/数学的逻辑/31第 32 课 / 共 44 课

第九部分 · 概率、统计与信息

从数据估参数:最大似然与最大后验

前两课我们造好了分布这台"随机发生器"——伯努利、高斯、多元高斯,每一台都由几个旋钮(参数)决定。可现实里没人把旋钮的读数告诉你:你手上只有它吐出来的一堆数据。怎么反过来,从数据里读出那几个旋钮的值?这就是统计学的核心一问,也是机器学习"训练"二字的数学本意。

线性回顾
上一课:第 30 课我们把单变量分布升级成多元高斯——用均值向量 μ(读作"谬",分布的中心)和协方差矩阵 Σ(读作"西格玛矩阵",描述各维的波动与关联)刻画一团相关的数据,并看到 Σ 的几何就是一个椭圆,主轴正是它的特征向量。
留下的问题:这些 μΣσp 都是"上帝才知道"的真值。我们手里只有采出来的样本,看不见旋钮本身。怎么从数据反推出分布的参数?
本课新增:似然(把"这组数据出现的概率"看成参数的函数)、最大似然估计 MLE(挑使数据最不意外的那组参数),以及给参数加上先验后的最大后验 MAP——它恰好等于"MLE + 一个正则项",把第 21、28 课的正则化在这里接上了线。
本课路线
(1) 倒过来看分布:固定数据、让参数变,概率就成了似然;(2) 最大似然估计 MLE——挑使似然最大的参数,掷硬币例子算出"频率即估计";(3) 连乘会下溢,改用对数似然,乘法变加法;(4) 高斯的 MLE:均值的估计恰是样本均值;(5) 数据太少时 MLE 会跑偏——引入先验最大后验 MAP;(6) 点破 MAP = MLE + 正则项,与第 20/27 课合龙;(7) 常见误解。

把分布倒过来看:似然是什么

第 29、30 课我们一直是正着用分布:参数已知,问"出现某个数据的概率有多大"。比如一枚正面概率为 p 的硬币,连抛 10 次得到 7 次正面,这件事的概率是个关于 p 的式子。正着用时,p 是已知常数,数据是变量。

统计要做的恰恰相反:数据已经摆在桌上了(7 次正面、3 次反面,板上钉钉),未知的是 p。于是我们把同一个式子倒过来读:固定数据,让 p 在 0 到 1 之间变化,看"这组数据出现的概率"随 p 怎么变。这个"把概率看成参数的函数",就叫似然

L(θ) = P(D | θ)
读作"参数取 θ 时的似然 L(θ),等于在该参数下、这批数据 D 出现的概率 P(D | θ)"。θ(读作"theta")泛指要估的参数(可能是 p,也可能是 μ、σ);D 是已经观测到的全部数据。注意:同一个 P(D|θ),当 θ 已知就叫"概率",当 D 已知、把它看作 θ 的函数就叫"似然"。它不是 θ 的概率——它对 θ 积分通常不等于 1。

这一步转身极其朴素,却是整门统计的支点:无法直接观测的参数,被翻译成了一个能拿数据去打分的函数。剩下的,就是挑分最高的那个参数。

最大似然:挑使数据最不意外的参数

有了似然这把尺,最自然的估计法呼之欲出:哪个参数让我手上这批数据出现得最"理所当然",就赌它是真值。这就是最大似然估计(Maximum Likelihood Estimation,简称 MLE)。

θ̂ = argmax(θ) P(D | θ)
读作"最大似然估计 θ̂(θ 上面一个尖帽,表示'估计值'),等于让似然 P(D|θ) 取到最大值的那个 θ"。argmax 读作"arg max",意思是"取得最大值的自变量"——我们要的不是最大值本身,而是达到最大值时 θ 等于多少

用硬币把它走一遍。抛 n 次,正面 k 次。每次抛是独立的,所以这串结果的概率是各次相乘——正面贡献 p,反面贡献 1−p

L(p) = pᵏ · (1−p)ⁿ⁻ᵏ
读作"似然 L(p) 等于 p 的 k 次方,乘以 (1−p) 的 (n−k) 次方"。k 个正面各乘一个 pn−k 个反面各乘一个 1−p。(前面还有个组合数系数,但它不含 p,不影响"哪个 p 最大",略去。)

对它求最大,结果干净得惊人:

p̂ = k / n
读作"p 的最大似然估计 p̂,等于正面次数 k 除以总次数 n"——也就是样本里的频率。抛 10 次得 7 正,MLE 就赌 p = 0.7。"频率即估计"这个谁都会的直觉,原来是最大似然的严格结论。

这正是第 10 课"大数定律"的呼应:长期频率会收敛到真概率,而 MLE 说的是——既然手上的频率是关于真值最好的线索,那就用它。

连乘会下溢:改用对数似然

真实数据动辄成千上万条,似然是成千上万个小于 1 的数连乘,结果会小到计算机直接归零(数值下溢)。解法是给似然取对数。对数是单调递增的——a 越大 log a 越大——所以使似然最大的 θ,也使对数似然最大,最大值点一个不差。而它把要命的连乘变成了温顺的连加:

log L(θ) = ∑ᵢ log P(xᵢ | θ)
读作"对数似然 log L(θ),等于对每一条数据 xᵢ 的对数概率 log P(xᵢ|θ) 求和(∑ 读作'求和',i 跑遍所有样本)"。连乘 ∏ 取对数后变成连加 ∑,既不下溢,求导也容易。

从此 ML 里几乎所有"损失函数"都长成"对数概率之和"的样子——这不是巧合,第 33 课的交叉熵损失,正是负对数似然换了身衣裳。顺带说一句:最大化 log L 等价于最小化 −log L,所以"最大似然"和"最小化负对数似然损失"是同一件事的两种说法。

高斯的 MLE:均值估计就是样本均值

换个连续的例子,也是 ML 里最常见的:假设数据 x₁,…,xₙ 来自一个均值 μ、方差固定的高斯。把高斯密度代入对数似然,对 μ 求导令其为零,会得到一个再熟悉不过的答案:

μ̂ = (x₁ + x₂ + … + xₙ) / n
读作"均值的最大似然估计 μ̂,等于所有样本相加再除以样本数 n"——就是样本平均

背后的几何很美:高斯的对数似然里,μ 只通过 ∑(xᵢ − μ)² 这一项起作用(误差平方和),最大化似然 = 最小化平方误差。这就把"最大似然"和第 20 课的"最小二乘"焊在了一起——在高斯噪声假设下,最小二乘就是最大似然。这条暗线会在第 35 课线性回归里正式合体。下面的小实验,就是把这条对数似然曲线画给你看:拖动 μ,看似然在样本均值处冲到顶。

对数似然曲线:拖动 μ,看它在样本均值处达到最大
下面散布着几个一维数据点(红)。假设它们来自一个均值为 μ、方差固定的高斯。上方蓝线是对数似然 log L(μ):你把猜测的 μ(蓝竖线)拖到哪,就读出"这批数据有多像出自均值 μ 的高斯"。它的最高点恰好落在样本均值处——MLE = 样本均值。点"重新采样"换一批点试试。
你猜的 μ
0.00
对数似然 log L(μ)
样本均值(= MLE)

数据太少,MLE 会跑偏:请出先验

MLE 有个天生的脆弱处:它完全只听数据的。抛硬币只抛了 2 次、碰巧都是正面,MLE 会斩钉截铁地说 p̂ = 2/2 = 1——"这硬币永远出正面"。这显然荒唐:两次而已,凭什么排除反面?数据稀少时,纯听数据等于把噪声当成了真理。

可我们其实预先就有信念:硬币多半接近公平,p 大概在 0.5 附近。把这种"看数据之前的信念"写成一个分布,就叫先验,记作 P(θ)(读作"θ 的先验概率")。接下来用第 10 课的贝叶斯定理,把先验和数据糅到一起:

P(θ | D) ∝ P(D | θ) · P(θ)
读作"看过数据后参数的概率 P(θ|D)(叫后验),正比于 似然 P(D|θ) 乘以 先验 P(θ)"。 读作"正比于"——我们略去了不含 θ 的归一化常数,因为它不影响"哪个 θ 最大"。一句话:后验 ∝ 似然 × 先验,数据和先验各出一份力。

挑使后验最大的参数,就叫最大后验估计(Maximum A Posteriori,简称 MAP)。它和 MLE 只差一个先验因子:

θ̂_MAP = argmax(θ) [ P(D | θ) · P(θ) ]
读作"最大后验估计,等于让 似然×先验 取最大的那个 θ"。先验像一只温柔的手,把估计往"事先觉得合理"的地方拉一把——数据多了,似然占绝对主导,这只手就几乎不起作用;数据少时,它救场。

点破真相:MAP = MLE + 正则项

现在把上式取对数(还是因为单调、还是为了把乘变加):

θ̂_MAP = argmax(θ) [ log P(D | θ) + log P(θ) ]
读作"最大后验 = 让 (对数似然 + 对数先验) 最大的 θ"。第一项就是 MLE 要最大化的对数似然;第二项 log P(θ) 是先验贴上去的一个附加项。

这第二项,正是第 21 课、第 28 课里反复出现的正则项的真身。举个最常用的例子:给参数一个"以 0 为中心的高斯先验"——也就是"我事先相信参数应该小、应该简单"。它的对数恰好是 −λ‖θ‖²(参数的平方和,前面带个负号和系数 λ)。于是:

θ̂_MAP = argmax(θ) [ log P(D | θ) − λ · ‖θ‖² ]
读作"最大后验 = 让 (对数似然 减去 λ 倍的参数平方和) 最大的 θ"。‖θ‖² 读作"θ 的范数平方",就是参数各分量的平方和;λ(读作"lambda")控制先验有多强。这正是 L2 正则化(权重衰减)
合龙
第 21 课我们因"亏秩、欠定,解不唯一"而想要正则化;第 28 课我们用它把问题压成漂亮的凸碗。当时它像是工程师为了稳定硬加的"惩罚项"。现在真相大白:正则化不是补丁,它就是一个先验——是你在看数据之前,对"参数该长什么样"的信念。MLE 是"只信数据"的极端(无先验);MAP 是"数据 + 信念"的折中。这条线,从线性代数一路连到了贝叶斯。

常见误解

一句话带走
看不见的参数,被"似然"翻译成一个可以用数据打分的函数:MLE 挑使数据最不意外的参数(取对数后就是"最小化负对数似然",硬币得频率、高斯得样本均值);MAP 在似然上乘一个先验,等价于"MLE + 正则项"——正则化的真身,原来是一个先验信念。
下一步
MLE 和 MAP 都只交出一个"最佳点":p̂ = 0.7,然后呢?可抛 10 次得 7 正,和抛 1000 次得 700 正,给出的 同样是 0.7,但我们对前者的把握显然小得多——这份"把握",一个点估计根本表达不出来。要把参数本身的不确定性也算进来,就不能停在"挑最高点",而要保留整条后验分布:用每一份证据,把先验一步步更新成后验。→ 第 32 课《贝叶斯推断:用证据更新信念》。