3198 字
16 分钟
Bayes公式-两种模型和两种优化目标
2026-05-14
无标签

贝叶斯定理 (Bayes’ Theorem)#

设事件 BB 已经发生,需要评估哪个 事件 AiA_i 最有可能导致 BB 的发生。贝叶斯定理提供了一个计算后验概率的公式:

P(AiB)=P(AB)P(B)=P(BAi)P(Ai)P(B)=P(BAi)P(Ai)jP(BAj)P(Aj)P(A_i | B) =\frac{P(AB)}{P(B)} = \frac{P(B | A_i) P(A_i)}{P(B)}=\frac{P(B | A_i) P(A_i)}{\sum_j P(B | A_j) P(A_j)}
  • 先验概率:P(Ai)P(A_i),表示在观察到事件 BB 之前对事件 AiA_i 的信念。
  • 似然函数:P(BAi)P(B | A_i),表示在事件 AiA_i 发生的条件下事件 BB 发生的概率。
  • 后验概率:P(AiB)P(A_i | B),表示在观察到事件 BB 之后对事件 AiA_i 的信念。

后验 \propto 似然 ×\times 先验。后验概率与先验概率成正比,比例系数由似然函数决定。

有两种优化函数:

  • 最大后验概率 (MAP):A^=argmaxAiP(AiB)=argmaxAiP(BAi)P(Ai)\hat{A} = \arg\max_{A_i} P(A_i | B)=\arg\max_{A_i}{P(B | A_i) P(A_i)}
  • 最大似然估计 (MLE):A^=argmaxAiP(BAi)\hat{A} = \arg\max_{A_i} P(B | A_i)

后验概率考虑了先验知识,而最大似然估计只关注数据本身的似然性。选择哪种方法取决于具体问题和可用的信息。

生成式模型和判别式模型#

生成式模型:建模 联合概率分布 P(x,ω)P(\mathbf{x}, \mathbf{\omega}),可以通过 P(ωx)=P(xω)P(ω)P(x)P(\mathbf{\omega} | \mathbf{x}) = \frac{P(\mathbf{x} | \mathbf{\omega}) P(\mathbf{\omega})}{P(\mathbf{x})} 来进行分类。

判别式模型:直接建模 条件概率分布 P(ωx)P(\mathbf{\omega} | \mathbf{x}),不关心特征的分布。

NOTE

生成式模型可以导出判别式模型,但判别式模型不能导出生成式模型。

判别式模型通常转化为:

  • 最大似然
  • 交叉熵最小化
  • 本质是一个优化问题

从邮件分类的实际例子来看:

用生成式模型(朴素贝叶斯)来分类邮件#

统计:

  • 先验:P(垃圾邮件)P(\text{垃圾邮件})P(正常邮件)P(\text{正常邮件}),可以通过历史数据中垃圾邮件和正常邮件的比例来估计。
  • 似然:P(邮件内容垃圾邮件)P(\text{邮件内容} | \text{垃圾邮件})P(邮件内容正常邮件)P(\text{邮件内容} | \text{正常邮件}),可以通过分析邮件内容中出现的词汇来估计。

计算:

  • 后验:P(垃圾邮件邮件内容)P(\text{垃圾邮件} | \text{邮件内容})P(正常邮件邮件内容)P(\text{正常邮件} | \text{邮件内容}),通过贝叶斯定理计算,选择概率较大的类别作为分类结果。

能解释这个被分类成垃圾邮件的邮件为什么被分类成垃圾邮件

用判别式模型(逻辑回归)来分类邮件#

直接假设:存在一个函数,可以把特征 x (邮件内容)映射到类别概率。一个比较常见的模型是逻辑回归。后文会讲到

生成式模型-贝叶斯分类器#

数据 → 概率建模 → 后验推断 → 判别函数 → 决策规则 → 决策边界

特征向量 x=(x1,x2,...,xn)\mathbf{x} = (x_1, x_2, ..., x_n),类别 ω=ω1,ω2,...,ωc\mathbf{\omega}={\mathbf{\omega}_1, \mathbf{\omega}_2, ..., \mathbf{\omega}_c},我们想要计算 P(ωx)P(\mathbf{\omega} | \mathbf{x}),即在给定特征 x\mathbf{x} 的条件下类别 ω\mathbf{\omega} 的概率。

P(ωx)P(\mathbf{\omega} | \mathbf{x}) 应用贝叶斯定理:

P(ωx)=P(xω)P(ω)P(x)P(\mathbf{\omega} | \mathbf{x}) = \frac{P(\mathbf{x} | \mathbf{\omega}) P(\mathbf{\omega})}{P(\mathbf{x})}

这里面符号的语义

  • P(ω)P(\mathbf{\omega}):类别 ω\mathbf{\omega}先验概率。在没有看到任何数据之前,种类 ω\mathbf{\omega} 的概率。

    在数据中体现为:测试集中类别 ω\mathbf{\omega} 的频率。

  • P(xω)P(\mathbf{x} | \mathbf{\omega})似然/类条件概率。如果种类是 ω\mathbf{\omega}, 那么特征向量呈现为 x\mathbf{x} 的概率。 用条件概率形式表示,以强调是同一类别事物的内部特征的概率分布。

    贝叶斯分类器的变体往往基于对 P(xω)P(\mathbf{x} | \mathbf{\omega}) 的不同假设来构建。

  • P(ωx)P(\mathbf{\omega} | \mathbf{x}):在给定特征 x\mathbf{x} 的条件下类别 ω\mathbf{\omega}后验概率

    用贝叶斯定理计算,常常对数化。

  • P(x)P(\mathbf{x}):特征 x\mathbf{x}边缘概率。对所有类别的特征 x\mathbf{x} 的概率进行求和。

    在分类时是常数,可以忽略。

整体流程#

问题建模与数据准备#

  • 定义类别:确定分类任务有 cc 个类别 ω1,ω2,,ωc\omega_1, \omega_2, \dots, \omega_c

  • 特征提取:确定描述样本的特征向量 x\mathbf{x}

  • 划分数据集:获取有标签的训练集 D=(x1,y1),,(xn,yn)D = (\mathbf{x}_1, y_1), \dots, (\mathbf{x}_n, y_n)

概率密度估计方法#

如何获得 p(xωi)p(\mathbf{x}|\omega_i)P(ωi)P(\omega_i) ,重点关注 p(xωi)p(\mathbf{x}|\omega_i)

  • 方法A(参数法):假设已知 p(xωi)p(\mathbf{x}|\omega_i) 的参数形式(如高斯分布、伯努利分布)。唯一未知的是参数 θi\theta_i(如 μ,Σ\mu, \Sigma)。
  • 方法B(非参数法):不假设任何分布形式,直接从数据中“拼凑”出密度函数。

估计类条件概率密度 p(xωi)p(\mathbf{x}|\omega_i)(训练)#

参数估计(如高斯分布) 的假设前提

  1. 假设类条件概率的分布长这样:P(xωi)=P(xωi;θi)P(\mathbf{x}|\omega_i) = P(\mathbf{x}|\omega_i;\theta_i)
  2. 独立同分布:同一类别的样本是独立同分布的随机变量。

最大似然估计 (ML)#

对于某一类 ωi\omega_i 的数据集:Di={xjyj=ωi}D_i = \{\mathbf{x}_j | y_j = \omega_i\}

似然L(θi)=P(Diθi)=j=1NiP(xjωi;θi)L(\theta_i) = P(D_i | \theta_i) = \prod_{j=1}^{N_i} P(\mathbf{x}_j | \omega_i; \theta_i)

  • 对数化 l(θi)=lnP(Diθi)=j=1NilnP(xjωi;θi)l(\theta_i) = \ln P(D_i | \theta_i)= \sum_{j=1}^{N_i} \ln P(\mathbf{x}_j | \omega_i; \theta_i)

  • 目标函数 θi^=argmaxθil(θi)=arg maxθilnP(Diθi)\hat{\theta_i} = \arg\max_{\theta_i} l(\theta_i)=\argmax_{\theta_i} \ln P(D_i | \theta_i)

  • 计算:解方程 θl(θ)=0\frac{\partial}{\partial \theta}l(\theta) = 0

对于服从高斯分布的类条件概率,参数 θi\theta_i 包括均值 μi\mu_i 和协方差矩阵 Σi\Sigma_i,MLE 的解为:

μ^ML=1Nij=1Nixj,Σ^ML=1Nij=1Ni(xjμ^ML)(xjμ^ML)T\hat{\mu}_{\text{ML}} = \frac{1}{N_i} \sum_{j=1}^{N_i} \mathbf{x}_j, \quad \hat{\Sigma}_{\text{ML}} = \frac{1}{N_i} \sum_{j=1}^{N_i} (\mathbf{x}_j - \hat{\mu}_{\text{ML}})(\mathbf{x}_j - \hat{\mu}_{\text{ML}})^T

最大后验估计 (MAP)#

已知参数的先验 p(θi)p(\theta_i)。MAP只是比ML多了这一个先验项

似然 L(θi)=P(θiDi)=P(Diθi)P(θi)/P(Di)L(\theta_i) = P(\theta_i | D_i)= P(D_i | \theta_i) P(\theta_i) / P(D_i)。其中 P(Di)P(D_i) 是常数,可以忽略。

  • 对数化 l(θi)=lnP(θiDi)=lnP(Diθi)+lnP(θi)l(\theta_i) = \ln P(\theta_i | D_i)= \ln P(D_i | \theta_i) + \ln P(\theta_i)
  • 目标函数 θi^=argmaxθil(θi)=arg maxθi[lnP(Diθi)+lnP(θi)]\hat{\theta_i} = \arg\max_{\theta_i} l(\theta_i)=\argmax_{\theta_i} [ \ln P(D_i | \theta_i) + \ln P(\theta_i) ]

例如,假设 θi\theta_i 的先验是一个高斯分布 N(μ0,σ02)\mathcal{N}(\mu_0, \sigma_0^2),类条件概率也是高斯分布 N(μi,σ2)\mathcal{N}(\mu_i, \sigma^2),则MAP的解为:

μ^MAP=σ2μ0+Niσ02μ^MLσ2+Niσ02,Σ^MAP=Σ^ML\hat{\mu}_{\text{MAP}} = \frac{\sigma^2 \mu_0 + N_i \sigma_0^2 \hat{\mu}_{\text{ML}}}{\sigma^2 + N_i \sigma_0^2}, \quad \hat{\Sigma}_{\text{MAP}} = \hat{\Sigma}_{\text{ML}}

完全贝叶斯估计#

已知参数的先验 p(θi)p(\theta_i),求在已有训练样本集D的条件下,类条件概率密度函数 p(xD)=p(xθi)p(θiD)dθip(\mathbf{x}|D) = \int p(\mathbf{x}|\theta_i) p(\theta_i|D) d\theta_i

不求单一 θi\theta_i,而是对 θi\theta_i 积分得到预测分布 p(xD)=p(xθi)p(θiD)dθip(\mathbf{x}|D) = \int p(\mathbf{x}|\theta_i) p(\theta_i|D) d\theta_i。这会得到高斯过程贝叶斯线性回归

走非参数路径(真实分布未知)

  • Parzen窗/核密度估计:选择一个窗宽 hh,构造概率密度 pn(x)=1ni=1n1Vnϕ(xxih)p_n(\mathbf{x}) = \frac{1}{n} \sum_{i=1}^n \frac{1}{V_n} \phi(\frac{\mathbf{x}-\mathbf{x}_i}{h})。这个模型直接由训练样本“记住”了分布。
  • k-近邻法:根据样本数 nn 动态调整搜索半径,直到包含 kk 个最近邻。

估计先验概率 P(ωi)P(\omega_i)#

这一步最简单。在没有特殊知识的情况下:

  • 频率计数法P(ωi)NiNP(\omega_i) \approx \frac{N_i}{N},即训练集中第 ii 类样本占比。
  • 均匀先验:假设所有类发生概率相等,P(ωi)=1cP(\omega_i) = \frac{1}{c}

确定决策准则,设定阈值θ\theta#

这一步决定了怎么利用估计出的概率来决策。

  • 最小错误率准则ω^=argmaxiP(ωix)\hat{\omega} = \arg\max_i P(\omega_i | \mathbf{x})
  • 最小风险准则:引入损失函数 λij\lambda_{ij}ω^=argminjiλijP(ωix)\hat{\omega} = \arg\min_j \sum_i \lambda_{ij} P(\omega_i | \mathbf{x})(例如,将癌症误判为健康的风险要远大于反过来)。
  • 聂曼-皮尔逊准则:固定一类错误率,最小化另一类错误率

构建判别函数g(x),决策边界x#

判别函数: g(x)g(\mathbf{x}),例如 lnP(xω1)P(xω2)\ln \frac{P(\mathbf{x}|\mathbf{\omega}_1)}{P(\mathbf{x}|\mathbf{\omega}_2)}

应用决策准则(应用阈值 θ\theta ):g(x)θ,xassign toω1ω2g(x)\gtrless\theta, x\quad \text{assign to}\quad {\omega_1 \atop \omega_2}

决策边界:g(x^)=θg(\mathbf{\hat{x}}) = \theta 产生一个边界 x^\mathbf{\hat{x}},将特征空间划分为不同的决策区域。

  • 对于最小错误率准则,等价于比较 p(xω1)p(xω2)>P(ω2)P(ω1)\frac{p(\mathbf{x}|\omega_1)}{p(\mathbf{x}|\omega_2)} > \frac{P(\omega_2)}{P(\omega_1)}
  • 化简后,边界是一个超平面(LDA)或者二次曲面(QDA),或者是一个由样本点刻画的复杂非线性区域(k-NN / Parzen)。

模型评估(计算总错误率)#

在测试集上评估。

  • 错误率公式:正如我们之前详细讨论的,真实总体错误率必须是联合概率的积分: P(error)=R2p(xω1)P(ω1)dx+R1p(xω2)P(ω2)dxP(\text{error}) = \int_{R_2} p(\mathbf{x}|\omega_1)P(\omega_1) d\mathbf{x} + \int_{R_1} p(\mathbf{x}|\omega_2)P(\omega_2) d\mathbf{x}

输出部署#

对一个新的无标签样本 xnew\mathbf{x}_{\text{new}},调用构建的判别函数,直接输出 ω^\hat{\omega}


  • LDA = (参数法 ML) + (协方差相等假设) + (最小错误率准则)。
  • 朴素贝叶斯 = (参数法 ML) + (特征独立性假设) + (最小错误率准则)。
  • 高斯过程 = (完全贝叶斯估计) + (最小错误率准则)。
  • k-NN = (非参数估计 k近邻) + (最小错误率准则)(无需显式建模密度函数)。
  • Parzen窗分类器 = (非参数估计 Parzen窗) + (最小错误率准则)。
  • 图像复原 = (参数法 MAP) + (拉普拉斯先验) + (最小化均方误差/风险)。

朴素贝叶斯:多项式MNB#

  • MNB的特征向量:x=(x1,x2,...,xn)\mathbf{x} = (x_1, x_2, ..., x_n),如文本分类中,xix_i 是一个文档样本里,词表 V 中第 ii 个词的词频。
P(viω)=Niω+αNω+αDP(v_i | \mathbf{\omega}) = \frac{N_{i\omega} + \alpha}{N_\omega + \alpha D}

其中 NiωN_{i\omega} 是在类别 ω\mathbf{\omega} 下特征 xix_i 出现的次数,NωN_\omega 是在类别 ω\mathbf{\omega} 下所有特征出现的总次数,α=1\alpha=1 是拉普拉斯平滑参数,DD 是特征空间的维度(特征数量或词表大小)。

决策时,xix_i 在右上角作为幂指数。

文档ID文档中的词类别
1apple banana水果
2apple apple水果
3apple orange水果
4cucumber cabbage Apple非水果
5apple apple apple cucumber cabbage

定义词表:apple,banana,orange,cucumber,cabbageapple, banana, orange, cucumber, cabbage,特征空间维度 D=5D=5

特征向量(id作为下标)

x1=(1,1,0,0,0),x2=(2,0,0,0,0),x3=(1,0,1,0,0),x4=(1,0,0,1,1),x5=(3,0,0,1,1)x_1 = (1, 1, 0, 0, 0), x_2 = (2, 0, 0, 0, 0), x_3 = (1, 0, 1, 0, 0), \\ x_4 = (1, 0, 0, 1, 1), x_5 = (3, 0, 0, 1, 1)

取前四个文档作为训练集,计算先验概率和类条件概率:

先验概率:P(水果)=34,P(非水果)=14P(\text{水果}) = \frac{3}{4}, P(\text{非水果}) = \frac{1}{4}

类条件概率:alt textalt text

朴素贝叶斯:伯努利BNB#

条件概率 P(xiω)P(x_i | \mathbf{\omega}) 是一个伯努利分布:

P(xiω)={P(xi=1ω)if xi=11P(xi=1ω)if xi=0P(x_i | \mathbf{\omega}) = \begin{cases} P(x_i = 1 | \mathbf{\omega}) & \text{if } x_i = 1 \\ 1 - P(x_i = 1 | \mathbf{\omega}) & \text{if } x_i = 0 \end{cases}P(xi=1ω)=Niω+αNω+2αP(x_i = 1 | \mathbf{\omega}) = \frac{N_{i\omega} + \alpha}{N_\omega + 2\alpha}

这里 NiωN_{i\omega} 是在类别 ω\mathbf{\omega} 下特征 xix_i 出现的 文档数量NωN_\omega 是在类别 ω\mathbf{\omega} 下的 文档总数α=1\alpha=1 是拉普拉斯平滑参数。

  • 在伯努利贝叶斯分类器中, 只关注是否出现,不关注频率

朴素贝叶斯:高斯GNB#

假设每个单独的特征 xixx_i\in \mathbf{x} 的条件概率 P(xiω)P(x_i | \mathbf{\omega}) 是一个高斯分布 N(μiω,σiω2)\mathcal{N}(\mu_{i\omega}, \sigma^2_{i\omega})

P(xiω)=12πσiωexp((xiμiω)22σiω2)P(x_i | \mathbf{\omega}) = \frac{1}{\sqrt{2\pi}\sigma_{i\omega}} \exp\left(-\frac{(x_i - \mu_{i\omega})^2}{2\sigma_{i\omega}^2}\right)

其中 μiω\mu_{i\omega}σiω\sigma_{i\omega} 是在类别 ω\mathbf{\omega} 下特征 xix_i 的均值和方差。需要估计。

补充:图模型#

朴素贝叶斯分类器本质上就是一个非常简单的概率图模型(贝叶斯网络)

结构如下:

node: 特征 xix_i 和类别 ω\mathbf{\omega} 都是节点。

edge: ωxi\mathbf{\omega} \rightarrow x_i,表示类别 ω\mathbf{\omega} 影响特征 xix_i 的生成。特征之间没有边,表示条件独立。

w
/ | \
x1 x2 ... xn

此时,联合概率分布可以表示为:

P(ω,x1,x2,...,xn)=P(ω)i=1nP(xiω)=P(ω)P(Xω)P(\mathbf{\omega}, x_1, x_2, ..., x_n) = P(\mathbf{\omega}) \prod_{i=1}^n P(x_i | \mathbf{\omega})=P(\mathbf{\omega}) P(X | \mathbf{\omega})

判别式模型-二项逻辑回归-MLE#

判别式模型直接建模条件概率 P(YX)P(Y | X),不关心特征的分布。对于二分类问题,常用的模型是逻辑回归。

例如,XRnX\in \mathbb{R}^n 作为输入,Y0,1Y \in 0, 1 作为输出,我们可以使用逻辑函数(sigmoid函数)将线性组合映射到概率空间:

P(Y=1X)=σ(wTX+b)=11+e(wTX+b)P(Y=0X)=1P(Y=1X)=1σ(wTX+b)\begin{aligned} P(Y=1 | X) &= \sigma(w^T X + b) \\ &= \frac{1}{1 + e^{-(w^T X + b)}}\\ P(Y=0 | X) &= 1 - P(Y=1 | X) \\ &= 1 - \sigma(w^T X + b) \end{aligned}
TIP

这里sigmoid的指数显示的指出了 w,bw,b,但是也可以用增广的输入 X=[X;1]X' = [X; 1] 和权重 θ=[w;b]\theta = [w; b] 来表示,这样就不需要单独处理偏置项了。

这种表示下的 θTX\theta^T X' 和后文的 wTX+bw^T X + b 是等价的。

对于输入数据,格式为 {X(n),Y(n)}n=1N\{X^{(n)},Y^{(n)}\}_{n=1}^N ,右上角的 (n)(n) 表示第 nn 个样本。其中的 XRnX\in \mathbb{R}^n 是特征组成的向量,Y={0,1}Y = \{0, 1\} 是标签。我们可以通过最大化似然函数来训练模型:

L(w,b)=n=1NP(Y(n)X(n))=n=1Nσ(wTX(n)+b)Y(n)(1σ(wTX(n)+b))1Y(n)\begin{aligned} \mathcal{L}(w, b) &= \prod_{n=1}^N P(Y^{(n)} | X^{(n)}) \\ &= \prod_{n=1}^N \sigma(w^T X^{(n)} + b)^{Y^{(n)}} (1 - \sigma(w^T X^{(n)} + b))^{1 - Y^{(n)}} \end{aligned}

这里 Y(n)Y^{(n)} 在幂指数的位置, P(Y(n)X(n))P(Y^{(n)} | X^{(n)}) 是根据 Y(n)Y^{(n)} 的取值来选择 σ(wTX(n)+b),(Y(n)=1)\sigma(w^T X^{(n)} + b),(Y^{(n)}=1)1σ(wTX(n)+b),(Y(n)=0)1 - \sigma(w^T X^{(n)} + b),(Y^{(n)}=0),这样可以统一表示两种情况。

但是这依托是乘积不好优化,不妨转化为对数似然:

logL(w,b)=n=1N[Y(n)logσ(wTX(n)+b)+(1Y(n))log(1σ(wTX(n)+b))]\begin{aligned} \log \mathcal{L}(w, b) &= \sum_{n=1}^N \left[ Y^{(n)} \log \sigma(w^T X^{(n)} + b) + (1 - Y^{(n)}) \log (1 - \sigma(w^T X^{(n)} + b)) \right] \end{aligned}

乘以 (1N)(-\frac{1}{N}) ,转化为最小化问题(这其实就是交叉熵损失函数)

minw,bl(w,b)=minw,b1Nn=1N[Y(n)logσ(wTX(n)+b)+(1Y(n))log(1σ(wTX(n)+b))]\begin{aligned} \min_{w, b} \mathcal{l}(w, b) &= \min_{w, b} -\frac{1}{N} \sum_{n=1}^N \left[ Y^{(n)} \log \sigma(w^T X^{(n)} + b) + (1 - Y^{(n)}) \log (1 - \sigma(w^T X^{(n)} + b)) \right] \end{aligned}

问题来了,怎么解?

梯度下降:

关于梯度的计算:

TIP

sigmoid函数的导数 σ(z)=σ(z)(1σ(z))\sigma'(z) = \sigma(z)(1 - \sigma(z)),这是一个重要的性质,在计算梯度时会用到。

外面套一个log,求导 (logσ(z))=σ(z)σ(z)=1σ(z)(\log \sigma(z))' = \frac{\sigma'(z)}{\sigma(z)} = 1 - \sigma(z)

lw=1Nn=1N(σ(wTX(n)+b)Y(n))X(n)lb=1Nn=1N(σ(wTX(n)+b)Y(n))\begin{aligned}\frac{\partial \mathcal{l}}{\partial w} &= \frac{1}{N}\sum_{n=1}^N ( \sigma(w^T X^{(n)} + b)- Y^{(n)}) X^{(n)} \\[1em] \frac{\partial \mathcal{l}}{\partial b} &= \frac{1}{N} \sum_{n=1}^N ( \sigma(w^T X^{(n)} + b)- Y^{(n)}) \end{aligned}
Bayes公式-两种模型和两种优化目标
https://biscuit0613.github.io/posts/aimath/bayes/
作者
Biscuit
发布于
2026-05-14
许可协议
CC BY-NC-SA 4.0
检测准则
IP