1694 字
8 分钟
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,Y)P(X, Y),可以通过 P(YX)=P(XY)P(Y)P(X)P(Y | X) = \frac{P(X | Y) P(Y)}{P(X)} 来进行分类。

判别式模型:直接建模 条件概率分布 P(YX)P(Y | 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 (邮件内容)映射到类别概率。一个比较常见的模型是逻辑回归。后文会讲到

生成式模型-朴素贝叶斯分类-MAP#

TIP

贝叶斯分类器通过最大化后验概率 P(CX)P(C|X),利用贝叶斯公式将其转化为先验概率 P(C)P(C) 与似然概率 P(XC)P(X|C) 的乘积;其中先验反映类别分布,似然反映类别条件下特征分布,在朴素贝叶斯中进一步假设特征条件独立,将联合概率分解为各特征概率的乘积。

给定属性(特征)X=(x1,x2,...,xn)X = (x_1, x_2, ..., x_n),类别 C=c1,c2,...,ckC={c_1, c_2, ..., c_k},我们想要计算 P(CX)P(C | X),即在给定特征 XX 的条件下类别 CC 的概率。

朴素:假设特征之间条件独立,即 P(XC)=i=1nP(xiC)P(X | C) = \prod_{i=1}^n P(x_i | C)

P(CX)P(C | X) 应用贝叶斯定理:

P(CX)=P(XC)P(C)P(X)=P(XC)P(C)cP(Xc)P(c)P(C | X) = \frac{P(X | C) P(C)}{P(X)} = \frac{P(X | C) P(C)}{\sum_{c'} P(X | c') P(c')}

在分类时,我们希望越准越好,也就是最大化 P(CX)P(C | X),由于 P(X)P(X) 对所有类别都是常数,我们可以简化为:

C^=argmaxCP(XC)P(C)\hat{C} = \arg\max_{C} P(X | C) P(C)

这里面符号的语义

  • P(C)P(C):类别 CC 的先验概率。在没有看到任何数据之前,种类C的概率。

    在数据中体现为类别 CC 的频率。

  • P(XC)P(X | C):在类别 CC 下特征 XX 的似然。

    如果种类是 CC, 那么特征 XX 出现的概率。

  • P(CX)P(C | X):在给定特征 XX 的条件下类别 CC 的后验概率。需要求解的目标。

  • P(X)P(X):特征 XX 的边缘概率。对所有类别的特征 XX 的概率进行求和。

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

补充:图模型#

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

结构如下:

node: 特征 xix_i 和类别 CC 都是节点。

edge: CxiC \rightarrow x_i,表示类别 CC 影响特征 xix_i 的生成。特征之间没有边,表示条件独立。

C
/ | \
x1 x2 ... xn

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

P(C,x1,x2,...,xn)=P(C)i=1nP(xiC)=P(C)P(XC)P(C, x_1, x_2, ..., x_n) = P(C) \prod_{i=1}^n P(x_i | C)=P(C) P(X | C)

因此,后验概率 P(CX)P(C | X) 可以通过贝叶斯定理计算为:

P(CX)=P(C)i=1nP(xiC)cP(c)i=1nP(xic)P(C | X) = \frac{P(C) \prod_{i=1}^n P(x_i | C)}{\sum_{c'} P(c') \prod_{i=1}^n P(x_i | c')}

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

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

例如,XRnX\in \mathbb{R}^n 作为输入,Y{0,1}Y \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