在现代机器学习应用中,我们经常需要从已知输入变量预测未知的目标变量。本篇博客将深入探讨当数据模型完全已知时的理想 推断(Inference) 场景,介绍贝叶斯推断(Bayesian Inference)、损失函数(Loss Function)、 交叉熵(Cross-Entropy) 等核心概念,以及如何从概率模型推导出最优预测器(Predictor)。通过理论推导和实际例子,我们将展示 硬预测(Hard Prediction) 与 软预测(Soft Prediction) 的区别与联系,以及如何在不同问题中选择合适的预测策略。
推断
推断的定义与分类
推断(Inference) 问题涉及两种类型的变量:输入变量 $x$ 和输出/目标变量 $t$。推断的目标是基于这两个变量之间关系的概率模型,得到给定输入 $x$ 时目标 $t$ 的预测器。
根据目标变量的类型,推断问题可分为:
- 检测问题(Detection Problem):目标 $t$ 取值为离散有限集合(如预测天气晴雨、文本中的下一个词)
- 估计问题(Estimation Problem):目标 $t$ 是连续变量(如预测温度、视频的下一帧)
硬预测与软预测
预测器(Predictor)分为两种基本类型:
- 硬预测(Hard Prediction)或点预测(Point Prediction):为每个输入 $x$ 指定单个预测值 $\hat{t}$。
- 表示为函数映射:$f: \mathcal{X} \rightarrow \mathcal{T}$,其中 $\hat{t} = f(x)$
- 软预测(Soft Prediction):为每个可能的 $t$ 值给定输入 $x$ 分配一个分数。
- 表示为函数:$q(t|x)$
软预测提供了更多信息,可以通过选择得分最高的值轻松转换为硬预测:$\hat{t}(x) = \arg\max_{t} q(t|x)$。软预测的分数 $q(t|x)$ 量化了与任何预测相关的不确定性。
最优软预测(贝叶斯推断)
软预测的自然选择是使用后验分布(Posterior Distribution) $p(t|x)$ 作为预测分布 $q(t|x)$。这意味着为每个 $t$ 值分配的分数是其给定 $x = x$ 的后验概率。
后验分布可以通过联合分布 $p(x, t)$ 计算得到: $$ p(t|x) = \frac{p(x, t)}{p(x)} = \frac{p(x, t)}{\sum_{t’} p(x, t’)} $$
示例:天气预测中的贝叶斯推断
考虑一个简单的天气预测模型,今天和明天的天气都只有两种状态:雨天($0$)或晴天($1$)。已知的联合分布 $p(x, t)$ 为:
$x$ | $t$ | $p(x,t)$ |
---|---|---|
0 | 0 | 0.45 |
0 | 1 | 0.05 |
1 | 0 | 0.10 |
1 | 1 | 0.40 |
计算后验分布 $p(t|x)$:
-
当 $x = 0$(今天下雨)时:
- $p(t=0|x=0) = 0.45/(0.45+0.05) = 0.9$
- $p(t=1|x=0) = 0.05/(0.45+0.05) = 0.1$
-
当 $x = 1$(今天晴天)时:
- $p(t=0|x=1) = 0.10/(0.10+0.40) = 0.2$
- $p(t=1|x=1) = 0.40/(0.10+0.40) = 0.8$
因此,最优软预测为:
- $q(t|0) = p(t|0) = \text{Bern}(t|0.1)$ (伯努利分布)
- $q(t|1) = p(t|1) = \text{Bern}(t|0.8)$
这可以用于提供硬预测:
- 如果 $x=0$,预测 $f(0)=0$,错误概率为 $0.1$
- 如果 $x=1$,预测 $f(1)=1$,错误概率为 $0.2$
损失函数与最优硬预测
为了评估硬预测器 $f$ 的质量,我们引入损失函数(Loss Function) $\ell(t, \hat{t})$,它衡量当真值为 $t$ 时预测 $\hat{t}$ (或 $\hat{t}(x)$) 的代价。
常用的损失函数包括:
-
对于估计问题:$\ell_k$ 损失($k$ 为整数) $$ \ell_{k}(t, \hat{t}) = |t - \hat{t}|^{k} $$ 其中 $k=2$ 时得到二次误差/平方损失(Quadratic / Squared Error Loss)(最常用)
-
对于检测问题:0-1 损失(0-1 Loss)(检测误差损失)
$$\ell_{0-1}(t, \hat{t}) = \mathbb{1}(t \neq \hat{t}) = \begin{cases} 0 & \text{if } t = \hat{t} \ 1 & \text{if } t \neq \hat{t} \end{cases}$$
其中 $\mathbb{1}(\cdot)$ 是指示函数 损失函数可以根据实际问题需要进行调整,例如为不同类型的错误分配不同的权重。
人口损失与最优预测器
硬预测器 $f(\cdot)$ 的质量可以通过 人口损失(Population Loss) 来衡量,即模型上的平均损失:
$$L_{p}(f(\cdot)) = \mathbb{E}_{(x,t) \sim p(x,t)}\left[\ell(t, \hat{t}(x))\right]$$
对于 0-1 损失,人口损失简化为预测器出错的概率:
$$L_{p}(f(\cdot)) = \Pr\left[\hat{t}(x) \neq t\right]$$
最优硬预测器(Optimal Hard Predictor) 是最小化人口损失的预测器:
$$f^{*} = \arg\min_{f} L_{p}(f(\cdot))$$
特定损失函数下的最优预测器
对于某些损失函数,最优预测器有已知的解析解:
- 检测误差损失(0-1损失): $$ f^{*}(x) = \arg\max_{t} p(t|x) $$ 这称为最大后验(Maximum A Posteriori - MAP)预测器
- 二次损失($\ell_2$损失): $$ f^{*}(x) = \mathbb{E}[t|x] $$ 这是后验分布的均值(Mean)
示例:不同损失函数下的最优预测
使用之前的天气预测模型和后验分布:
- $p(t=0|x=0) = 0.9$, $p(t=1|x=0) = 0.1$
- $p(t=0|x=1) = 0.2$, $p(t=1|x=1) = 0.8$
在检测误差损失下(MAP预测器):
- 对于 $x=0$:$\arg\max_{t} p(t|0) = 0$
- 对于 $x=1$:$\arg\max_{t} p(t|1) = 1$
在二次损失下(后验均值):
- 对于 $x=0$:$\mathbb{E}[t|0] = 0 \times 0.9 + 1 \times 0.1 = 0.1$
- 对于 $x=1$:$\mathbb{E}[t|1] = 0 \times 0.2 + 1 \times 0.8 = 0.8$
注意在不同损失函数下,最优预测器是不同的。
交叉熵损失与最优软预测
为了评估软预测器 $q(t|x)$ 的质量,我们使用 对数损失(Log Loss) 或交叉熵损失(Cross-Entropy Loss):
$$\ell(t, q(\cdot|x)) = -\log q(t|x)$$
交叉熵损失衡量的是预测器在看到真实值 $t$ 时的"惊讶"程度——当正确输出的预测概率较低时,惊讶度(损失)较高。
人口对数损失定义为:
$$L_{p}(q(\cdot|\cdot)) = \mathbb{E}_{(x,t) \sim p(x,t)}\left[-\log q(t|x)\right]$$
最优软预测器(Optimal Soft Predictor) 是最小化人口对数损失的预测器:
$$q^{*}(\cdot|\cdot) = \arg\min_{q(\cdot|\cdot)} L_{p}(q(\cdot|\cdot))$$
可以证明,最优软预测器再次由后验分布给出:
$$q^{*}(t|x) = p(t|x)$$
举例与应用
示例一:天气预测问题
考虑相同的天气预测联合分布:
$x$ | $t$ | $p(x,t)$ |
---|---|---|
0 | 0 | 0.45 |
0 | 1 | 0.05 |
1 | 0 | 0.10 |
1 | 1 | 0.40 |
计算以下硬预测器的人口损失(0-1损失):
- $f_1$: $f_1(0)=0, f_1(1)=0$
- $f_2$: $f_2(0)=0, f_2(1)=1$
- $f_3$: $f_3(0)=1, f_3(1)=0$
- $f_4$: $f_4(0)=1, f_4(1)=1$
解题思路:
- 人口损失是预测错误概率:$L_p(f) = \Pr[\hat{t}(x) \neq t]$
- 通过求和所有 $\hat{t}(x) \neq t$ 的 $p(x,t)$ 计算
对于 $f_1(0)=0, f_1(1)=0$:
- 当 $(x=0,t=0)$: $f_1(0)=0$ ✓
- 当 $(x=0,t=1)$: $f_1(0)=0 \neq 1$ ✗ → $p(0,1)=0.05$
- 当 $(x=1,t=0)$: $f_1(1)=0$ ✓
- 当 $(x=1,t=1)$: $f_1(1)=0 \neq 1$ ✗ → $p(1,1)=0.40$
- $Lp(f_1) = 0.05 + 0.40 = 0.45$
对于 $f_2(0)=0, f_2(1)=1$:
- 当 $(x=0,t=0)$: $f_2(0)=0$ ✓
- 当 $(x=0,t=1)$: $f_2(0)=0 \neq 1$ ✗ → $p(0,1)=0.05$
- 当 $(x=1,t=0)$: $f_2(1)=1 \neq 0$ ✗ → $p(1,0)=0.10$
- 当 $(x=1,t=1)$: $f_2(1)=1$ ✓
- $Lp(f_2) = 0.05 + 0.10 = 0.15$
对于 $f_3(0)=1, f_3(1)=0$:
- 当 $(x=0,t=0)$: $f_3(0)=1 \neq 0$ ✗ → $p(0,0)=0.45$
- 当 $(x=0,t=1)$: $f_3(0)=1$ ✓
- 当 $(x=1,t=0)$: $f_3(1)=0$ ✓
- 当 $(x=1,t=1)$: $f_3(1)=0 \neq 1$ ✗ → $p(1,1)=0.40$
- $Lp(f_3) = 0.45 + 0.40 = 0.85$
对于 $f_4(0)=1, f_4(1)=1$:
- 当 $(x=0,t=0)$: $f_4(0)=1 \neq 0$ ✗ → $p(0,0)=0.45$
- 当 $(x=0,t=1)$: $f_4(0)=1$ ✓
- 当 $(x=1,t=0)$: $f_4(1)=1 \neq 0$ ✗ → $p(1,0)=0.10$
- 当 $(x=1,t=1)$: $f_4(1)=1$ ✓
- $Lp(f_4) = 0.45 + 0.10 = 0.55$
结论:$f_2$ 是具有最小人口损失($0.15$)的最优预测器。
示例二:比特序列预测
考虑一个比特序列模型,其中:
- $x_1$ 是均匀分布的:$x_1 \sim \text{Bern}(0.5)$
- $x_i$ 依赖于前一个比特:$x_i \sim p(x_i|x_{i-1})$
转移概率如下:
$x_{i-1}$ | $x_i$ | $p(x_i \mid x_{i-1})$ |
---|---|---|
0 | 0 | 0.9 |
0 | 1 | 0.1 |
1 | 0 | 0.1 |
1 | 1 | 0.9 |
问题一:计算序列 $x_1=1, x_2=1, x_3=1, x_4=0$ 的概率 $p(1,1,1,0)$
解题思路:
- 使用概率链式法则:$p(x_1,x_2,x_3,x_4) = p(x_1)p(x_2|x_1)p(x_3|x_2)p(x_4|x_3)$
- 代入数值:
- $p(x_1=1) = 0.5$
- $p(x_2=1|x_1=1) = 0.9$
- $p(x_3=1|x_2=1) = 0.9$
- $p(x_4=0|x_3=1) = 0.1$
- 总概率:$0.5 \times 0.9 \times 0.9 \times 0.1 = 0.0405$
问题二:给定 $x_5=0$,在检测误差损失下预测 $x_6$
解题思路:
- 需要计算 $p(x_6=0|x_5=0)$ 和 $p(x_6=1|x_5=0)$
- 根据转移概率:$p(x_6=0|x_5=0)=0.9$, $p(x_6=1|x_5=0)=0.1$
- MAP预测:$\arg\max_{x_6} p(x_6|x_5=0) = 0$
- 最小化检测误差的最优预测是 $x_6=0$
示例三:分类问题中的损失函数设计
在天气预测问题中,假设我们希望对不同类型的错误分配不同的权重:
实际 $t$ | 预测 $\hat{t}$ | 损失 $\ell(t,\hat{t})$ |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 0.1 |
1 | 1 | 0 |
这表示当实际是晴天($t=1$)时,我们不太关心预测为雨天($\hat{t}=0$),反之则更关心($\ell=1$表示严重后果)。
问题:对于给定的后验分布 $p(t|0)=(0.9, 0.1)$,计算最优硬预测 $\hat{t}^*$
解题思路:
- 需要最小化条件风险(Conditional Risk):$\mathbb{E}[\ell(t, \hat{t})|x]$
- 对于 $\hat{t}=0$:条件风险 = $\ell(0,0) \times p(0|x) + \ell(1,0) \times p(1|x) = 0 \times 0.9 + 0.1 \times 0.1 = 0.01$
- 对于 $\hat{t}=1$:条件风险 = $\ell(0,1) \times p(0|x) + \ell(1,1) \times p(1|x) = 1 \times 0.9 + 0 \times 0.1 = 0.9$
- 最小条件风险为 $0.01$,对应 $\hat{t}=0$
- 最优预测为 $\hat{t}^*=0$
Last modified on 2025-08-18