概率与似然的本质区别:从统计建模到贝叶斯推断

发布时间:2026/7/20 10:23:30
概率与似然的本质区别:从统计建模到贝叶斯推断 1. 这不是语义游戏概率与似然的本质分野“Why Probability and Likelihood are not the Same Thing”——这个标题乍看像教科书里的冷知识提醒实则直指统计建模中最常被混淆、却最不该被模糊的底层逻辑。我在带新人做A/B测试、训练分类模型、甚至只是解读一份市场调研报告时几乎每次都会遇到这样的场景有人指着模型输出的“P(Y1|X)”说“这个似然值很高”或者在贝叶斯更新中把先验乘上“likelihood”后直接当成了新概率密度结果后续所有推断都漂移了方向。这不是术语抠字眼而是认知坐标系的错位——就像把地图上的“经度”和“纬度”当成同一种距离单位来加减数值上能算但地理意义全盘崩塌。核心关键词——概率Probability、似然Likelihood、参数估计、条件分布、贝叶斯推断——它们共同锚定在统计推理的基座上。简单说概率描述的是数据在给定模型下的不确定性似然描述的是模型在给定数据下的适配程度。前者是关于“结果”的度量后者是关于“原因”的打分。你手头有一枚硬币抛10次得7次正面——概率问的是“如果这枚硬币公平p0.5出现7正3反的可能性有多大”似然问的则是“观察到7正3反这个结果哪个p值比如p0.7、p0.8最能解释它”前者横轴是数据空间纵轴是可信度后者横轴是参数空间纵轴是拟合强度。二者数学表达式长得一模一样都是二项分布公式但角色、解读、归一化要求、可运算规则全部不同。这篇文章就是为那些在代码里写过scipy.stats.binom.pmf(7, 10, p)却没细想p到底站在哪一边的人写的。无论你是刚学完大数定律的本科生还是每天调参调到凌晨的数据工程师只要还在用最大似然估计MLE、还在写贝叶斯后验、还在看p值做假设检验你就需要把这层窗户纸捅破。它不增加新工具但能让你手里的旧工具真正听你的话。2. 概率与似然从定义到函数本质的彻底解耦2.1 概率的严格定义数据空间上的测度概率本质上是一个满足三条公理的测度measure非负性、规范性全样本空间概率为1、可列可加性。它作用的对象是随机事件而事件是样本空间的子集。以抛硬币为例样本空间Ω {H, T}定义一个概率测度P使得P({H}) pP({T}) 1−p且P(Ω) 1。这里p是一个已知的、固定的常数代表硬币的固有性质。当我们说“抛一次得正面的概率是0.6”这个0.6不是变量它是模型设定的一部分。推广到多次独立抛掷样本空间变为Ω¹⁰ {(ω₁, ω₂, ..., ω₁₀) | ωᵢ ∈ {H, T}}共2¹⁰个元素。定义联合概率质量函数PMF P(X₁x₁, X₂x₂, ..., X₁₀x₁₀ | p) p^{∑xᵢ} (1−p)^{10−∑xᵢ} 其中xᵢ1表示第i次为Hxᵢ0表示T。注意这里的竖线“|”后面是固定参数p整个表达式是关于数据向量(x₁,...,x₁₀)的函数。它的核心属性是对所有可能的数据组合求和或积分必须等于1 ∑_{x₁,...,x₁₀∈{0,1}} P(X₁x₁,...,X₁₀x₁₀ | p) 1 这是概率的根本约束——它必须构成一个合法的分布。你可以把它想象成一张覆盖整个数据宇宙的“地形图”海拔高度代表可能性而整张地图的总“体积”被严格限定为1。这张图一旦画好即p选定每个具体结果如7H3T的高度就确定了它告诉你这个结果在当前世界模型下有多常见。2.2 似然的诞生从“给定模型看数据”到“给定数据评模型”似然Likelihood这个词是R.A. Fisher在1921年正式提出的其初衷就是为了解决“如何从一堆观测数据中找出最能解释它们的那个模型参数”。它不是新造一个数学对象而是对同一个数学表达式——P(data | θ)——进行视角翻转。我们把原来视为固定背景的参数θ现在当作变量把原来视为变量的data现在当作已知常数。于是似然函数L(θ | data)被定义为 L(θ | data) P(data | θ) 注意这里用了等号但绝非同一函数P(data | θ)是θ固定时关于data的概率函数L(θ | data)是data固定时关于θ的似然函数。Fisher强调“似然不是概率它没有概率的性质。”这句话不是修辞而是铁律。回到10次抛硬币得7正的例子。数据d (7H, 3T)已知。我们写出似然函数 L(p | d) C(10,7) × p⁷ × (1−p)³ 现在p是横轴变量取值范围是[0,1]。这个函数的图像是一条钟形曲线在p0.7处达到峰值。但关键来了∫₀¹ L(p | d) dp ≠ 1。计算一下∫₀¹ p⁷(1−p)³ dp 是Beta(8,4)分布的归一化常数的倒数其值约为0.00012远小于1。这意味着L(p | d)不能被解释为p的概率分布——它没有归一化它的绝对数值大小毫无意义只有相对大小比如L(0.7|d)/L(0.5|d) ≈ 2.5才表示p0.7比p0.5对数据的解释力强2.5倍。这就像用同一把尺子去量两座山的高度尺子读数本身不代表海拔但两个读数的比值能告诉你哪座山更高。似然函数只提供一种排序和比较的机制它是一份“模型适配度排行榜”而不是一份“模型存在概率分布图”。2.3 函数形态相同数学命运迥异一场关于“可积性”与“可加性”的审判为什么同一个公式换了个视角性质就天差地别根源在于变量的角色决定了函数的数学空间。概率函数P(data | θ)的自变量data属于离散或连续的样本空间该空间具有天然的测度结构计数测度或勒贝格测度因此可以定义积分/求和并强制其总和为1。而似然函数L(θ | data)的自变量θ属于参数空间它通常是一个欧几里得空间的子集如p∈[0,1]但这个空间本身没有内禀的概率测度。θ不是一个随机变量它是一个我们试图推断的未知常数在频率学派眼中或一个具有先验分布的随机变量在贝叶斯学派眼中。因此对θ积分没有任何概率论意义除非我们人为赋予它一个先验。这种差异直接导致了二者在运算规则上的根本区别归一化P(data | θ)必须归一化L(θ | data)绝不归一化。加法法则P(A∪B | θ) P(A | θ) P(B | θ)若A,B互斥L(θ | A∪B) ≠ L(θ | A) L(θ | B)因为似然不是定义在事件上的。条件概率链式法则P(A,B | θ) P(A | θ)P(B | A, θ)成立但L(θ | A,B) P(A,B | θ) P(A | θ)P(B | A, θ)这看起来一样但右边的P(A | θ)和P(B | A, θ)此时都变成了关于θ的似然成分它们的乘积仍是似然而非概率。最大值的意义argmax_data P(data | θ)给出最可能观测到的数据通常是极端值argmax_θ L(θ | data)给出最能解释已观测数据的参数MLE估计量这是统计推断的基石。我曾在一个风控模型项目中亲眼见过错误工程师将逻辑回归的似然函数log L(w) Σ[y_i log σ(w^T x_i) (1−y_i) log(1−σ(w^T x_i))]直接当作目标函数送入优化器却忘了梯度下降找的是极大值点而他误以为这个极大值点对应着某个“概率最大”的状态。实际上这个极大值点w*只是让模型对训练数据的“打分”最高它本身不产生任何关于w的概率陈述。直到我们引入正则化项相当于隐式先验才开始触及概率分布的边界。这个教训让我明白混淆二者不是写错一行代码的问题而是整个建模哲学的错位。3. 核心应用场景深度拆解从MLE到贝叶斯后验的每一步3.1 最大似然估计MLE似然函数的纯粹应用MLE是似然概念最直接、最广泛的应用。其思想朴素而有力在所有可能的参数值中选择那个能让已观测数据出现可能性最大的参数。形式化为 \hat{θ}_{MLE} argmax_θ L(θ | data) argmax_θ log L(θ | data) 使用对数似然是因为其单调性保持极值点不变且将连乘转化为连加极大改善数值稳定性避免下溢。以正态分布均值估计为例。设数据x₁,...,xₙ ∼ N(μ, σ²)σ²已知。似然函数为 L(μ | x) ∝ exp( −Σ(xᵢ−μ)² / (2σ²) ) 取对数 log L(μ | x) −Σ(xᵢ−μ)² / (2σ²) const 对μ求导并令导数为0 d/dμ [−Σ(xᵢ−μ)²] Σ2(xᵢ−μ) 0 ⇒ μ (1/n)Σxᵢ \bar{x} 于是样本均值\bar{x}就是μ的MLE。这个推导过程干净利落全程只与似然有关。注意我们从未说“μ等于\bar{x}的概率是多少”也从未对μ积分。我们只是在参数空间里沿着似然函数爬坡找到了最高点。这就是MLE的全部——它不回答“μ是什么”只回答“哪个μ最能解释眼前这些数据”。提示MLE估计量\hat{θ}_{MLE}本身是一个随机变量因为它依赖于随机样本data其抽样分布的性质如无偏性、一致性、渐近正态性是理论统计学研究的核心但这与似然函数本身的定义无关。似然只负责给出那个点后续的性质分析是另一套工具。3.2 贝叶斯推断似然作为“数据-先验”之间的桥梁贝叶斯框架是理解概率与似然关系的终极考场。在这里二者不再是对手而是必须协同作战的搭档。贝叶斯定理写作 P(θ | data) P(data | θ) P(θ) / P(data) 左边P(θ | data)是后验概率Posterior是我们最终想要的——关于参数θ在看到数据后的更新信念。右边P(data | θ)正是似然LikelihoodP(θ)是先验概率PriorP(data)是边缘似然Marginal Likelihood或证据Evidence。关键洞察在于似然在这里扮演了“数据对先验进行修正”的乘法因子角色。先验P(θ)表达了我们在看数据前对θ的信念例如我们认为广告点击率p大概率在0.01到0.05之间似然P(data | θ)则量化了“如果θ真是这个值我们观测到当前数据的可能性有多大”。二者相乘就得到了未归一化的后验unnormalized posteriorP(θ | data) ∝ P(data | θ) P(θ)。最后除以P(data)对θ积分得到确保后验是一个合法的概率分布。以Beta-Binomial共轭为例直观展示全过程。设先验P(p) Beta(α, β)数据为n次试验中成功k次则似然P(k | p) C(n,k) pᵏ (1−p)ⁿ⁻ᵏ。未归一化后验为 P(p | k) ∝ pᵏ (1−p)ⁿ⁻ᵏ × p^{α−1} (1−p)^{β−1} p^{kα−1} (1−p)^{n−kβ−1} 这恰好是Beta(kα, n−kβ)的核kernel。因此后验P(p | k) Beta(kα, n−kβ)。整个过程清晰无比似然“拉伸”了先验的形状将成功次数k和失败次数n−k的信息以指数形式“注入”到先验的超参数α和β中。似然不是概率但它像一把精准的刻刀根据数据雕刻出新的概率分布。注意边缘似然P(data) ∫ P(data | θ) P(θ) dθ这个积分在绝大多数实际问题中无法解析求解是贝叶斯计算的主要瓶颈。它之所以重要是因为它既是归一化常数也是模型比较的依据Bayes Factor。但请牢记P(data | θ)在这里依然是似然它被当作一个关于θ的函数参与积分但积分的结果P(data)是一个标量是数据在先验下的“总体惊喜度”。3.3 假设检验中的p值一个常被误解的“概率”幽灵p值p-value是统计实践中另一个重灾区其定义本身就深陷概率与似然的泥潭。标准定义是在原假设H₀为真的前提下观测到当前样本或更极端样本的概率。即 p P(T(X) ≥ t_obs | H₀) 其中T(X)是检验统计量t_obs是其在观测样本中的取值。这里H₀是一个具体的参数值如μ0所以P(· | H₀)是一个条件概率其自变量是数据X符合概率的定义。p值本身是一个概率但它不是H₀为真的概率也不是“备择假设为真的概率”。这是一个根深蒂固的误解。p值小只意味着“如果H₀是真的我们不太可能看到这么极端的数据”从而让我们有理由怀疑H₀但它绝不量化H₀为假的程度。混淆的源头在于人们常常把p值和似然搞混。例如有人会说“H₀的似然很小”这在技术上是正确的因为L(H₀ | data) P(data | H₀)确实很小但随即错误地推断“H₀为真的概率很小”。这是典型的“把似然当后验”的谬误犯了基础的概率论错误忽略了先验和备择假设。在AB测试中一个p0.03的结果绝不意味着“B版本比A好”的概率是97%。要得到这个概率你必须走贝叶斯路线明确指定H₀和H₁的先验并计算后验概率P(H₁ | data)。p值只是一个频率学派的拒绝域指示器它的解读必须严格限定在“假设为真时的数据极端性”这一狭窄范围内。4. 实操陷阱与避坑指南来自十年一线的血泪经验4.1 陷阱一在代码中对似然函数“手动归一化”这是新手最容易踩的坑。在实现一个自定义的似然函数用于优化时为了“看着舒服”有人会尝试def likelihood(theta, data): # ... 计算原始似然值 L(theta | data) ... return L / np.sum(L) # 错误试图归一化或者更隐蔽地在MCMC采样中对似然值取exp后直接当作概率密度传入采样器。这是灾难性的。似然函数的绝对尺度是任意的乘以任何正常数都不改变其argmax。手动归一化不仅毫无必要还会因数值误差尤其是高维、小概率事件导致结果失真。正确做法永远是只传递未归一化的似然或其对数让优化器或采样器自己处理。Scipy的minimize、PyMC的pm.Potential、TensorFlow Probability的tfp.mcmc所有专业库都设计为接受原始似然或log-likelihood。我的经验是只要你的似然函数返回一个正数或log-likelihood返回一个实数就足够了。它的值有多大完全不重要。4.2 陷阱二将似然比Likelihood Ratio误读为后验概率比似然比LR L(θ₁ | data) / L(θ₂ | data)是一个极其有用的量它直接衡量了数据对两个特定参数值的支持力度之比。但在贝叶斯框架下后验概率比是 P(θ₁ | data) / P(θ₂ | data) [L(θ₁ | data) P(θ₁)] / [L(θ₂ | data) P(θ₂)] LR × [P(θ₁)/P(θ₂)] 可见后验比 似然比 × 先验比。如果先验是均匀的P(θ₁)P(θ₂)那么二者数值相等。但现实中先验很少是均匀的尤其在参数有物理意义时如方差σ²0我们通常会给它一个Inverse-Gamma先验。我曾在一个生物信息学项目中看到同事用LR100来宣称“θ₁比θ₂好100倍”而忽略了先验对θ₁的惩罚远大于对θ₂的惩罚导致最终后验比只有3。结论被严重夸大。记住似然比只告诉你数据说了什么后验比才告诉你综合所有信息后你应该信谁。4.3 陷阱三在可视化中混淆坐标轴含义绘图是理解二者的最佳方式也是最容易出错的地方。一个经典错误是画一张图横轴标为“Parameter p”纵轴标为“Probability”然后画出L(p | d)的曲线。这图本身没错但标签“Probability”是彻头彻尾的误导。正确标签应为“Likelihood”或“Unnormalized Likelihood”。更好的做法是同时画出两条线一条是似然L(p | d)另一条是后验P(p | d)如果你有先验并明确标注纵轴为“Density”。这样读者一眼就能看出似然曲线下的面积不为1而后验曲线下的面积必须为1。我在教学时总会让学生亲手用Python画出Beta(2,2)先验下观测到k7,n10后的后验Beta(9,5)并与似然p⁷(1−p)³对比。当他们看到后验峰值9/(95)≈0.64略低于似然峰值0.7且后验曲线更窄方差更小时那种“啊哈”的顿悟感是任何文字解释都无法替代的。4.4 陷阱四在模型诊断中用似然值直接比较不同复杂度的模型AICAkaike Information Criterion和BICBayesian Information Criterion是常用的模型选择准则它们都基于最大似然值 AIC −2 log L(\hat{θ}{MLE} | data) 2k BIC −2 log L(\hat{θ}{MLE} | data) k log n 其中k是参数个数n是样本量。关键点在于它们惩罚的是“最大似然值”而不是似然函数本身。你不能拿一个线性模型的L(θ̂ | data)和一个五次多项式模型的L(θ̂ | data)直接比大小因为后者必然更大更多参数拟合更优。AIC/BIC的精妙之处就在于用2k或k log n这一项对模型复杂度进行定量惩罚从而在“拟合优度”和“简洁性”之间取得平衡。我见过太多人只看log L(\hat{θ}_{MLE})这一项就武断地说“这个模型更好”结果选出了过拟合的怪物。最大似然值本身永远只讲一个故事这个模型在数据上跑得多快。而AIC/BIC才是在问它跑得快是不是因为作弊加了太多参数5. 常见问题速查表与进阶思考问题正确答案我的实操心得Q1: 我能对似然函数求导来找到MLE吗可以且是标准方法。对log-likelihood求导更稳定。导数为零只是必要条件务必检查二阶导数Hessian矩阵是否负定确认是极大值而非极小值或鞍点。在高维参数空间用scipy.optimize.minimize比手写牛顿法更可靠。Q2: 如果我把似然函数当成概率密度强行归一化会怎样你会得到一个叫“likelihood-based posterior”的东西它在某些理论情境下有研究价值但它不是真正的贝叶斯后验因为它忽略了先验。这种做法在“无信息先验”讨论中会出现但实践中风险极高。我建议初学者完全避开老老实实按贝叶斯定理走。Q3: 在深度学习中交叉熵损失和似然有什么关系对于分类任务最小化交叉熵损失等价于最大化对数似然。因为softmax输出可视为P(yx; θ)交叉熵CE −Σ y_true log y_pred正是−log L(θQ4: 似然函数一定是光滑的、单峰的吗不是。它可能有多个局部极大值多峰甚至不连续如离散参数。MLE可能陷入局部最优。在复杂模型如混合模型、神经网络中务必用多种初始值运行优化并用AIC/BIC或交叉验证来评估。不要迷信单次优化结果。Q5: 贝叶斯学派和频率学派对似然的看法有根本冲突吗没有。二者都承认似然函数L(θdata) P(data最后再分享一个小技巧当你再次面对一个统计问题不确定该用概率还是似然时问自己一个问题“我现在想问的是‘如果模型是这样数据会怎样’还是‘数据是这样模型应该怎样’” 前者是概率的疆域后者是似然的领地。这个简单的思维开关能帮你瞬间厘清方向。我在调试一个异常检测模型时曾卡在阈值设定上。反复纠结“这个阈值下误报率概率是多少”却忽略了更本质的问题“在已知的正常数据下什么样的阈值能让模型的似然最大”切换视角后问题迎刃而解。统计学不是一堆待背诵的公式而是一套精密的思维操作系统。而概率与似然的区分就是这个系统里最底层的“进程调度器”。把它调对了后面所有的应用才能真正跑起来。