贝叶斯理论基础
先验(prior), 后验(posterior), 似然(likelihood), 证据(evidence) 这些词是不是很耳熟?
我们将介绍这些概念并通过他们的应用增进对贝叶斯观点的理解。
先验、似然、后验
贝叶斯公式如下, 我们在接触贝叶斯理论之前就知道他们是正确的, 但是曾经我们仅仅将 $A, B$ 当作任意的两个事件。
而贝叶斯理论将 $A, B$ 分别解读为 belief, data
- $P(\text{belief})$: prior(先验), 就是在没有任何数据证据之前
- $P(\text{data} | \text{belief})$: likelihood
- $P(\text{belief} | \text{data})$: posterior
我们从贝叶斯理论的角度对这个公式给出解读:
belief 就是我们对于某件事情的猜测 (比如硬币正面朝上的概率), data 就是我们对实际事件的观察 (比如抛 n 次硬币的实验结果)。
- 先验 (prior): $P(\text{belief})$ 也就是在没有观察到任何数据的时候,我们对事情的认识
- 似然 (likelihood): $P(\text{data} | \text{belief})$,即在我们的认识下,出现观察到的这些数据的概率。换句话说, likelihood 反应的是数据对先验的支持程度。
- 后验 (posterior): $P(\text{belief} | \text{data})$ 根据我们观察到的数据,我们的认识成立(为真)的概率
这样去看,很多问题都能解释清楚,比如:
先验知识: 往往就是指在训练之前,模型已经拥有的有些倾向。例如对于卷积神经网络来说,它的卷积计算方式假设了图像存在局部性,这就是它的 prior (先验)
最大似然 (maximum likelihood): 包括深度学习在内的很多优化算法是在对于观察到的数据求最大似然。也就是根据我们观察到的 data 去调整 belief,当我们能找到一个 belief 使得出现当前数据分布的可能性最大时,可以认为我们找到了一个正确的 belief,优化可以停止了。
后验信息: 是我们得到的反馈,当已经观察到了 data 时,我们可以去评估自己的 belief 有多大可能是对的。
参考资料: The Prior, Likelihood, and Posterior of Bayers’ Theorem
极大似然法 (Maximum Likelihood Estimation)
已经知道似然函数的表达是 $P(\text{data}|\text{belief})$, 其中 $\text{data}$ 的内容是固定的。那么我们最大化似然函数的方法也就是调整 $\text{belief}$ 来符合我们的观察。
这是很容易理解的, 但你有没有想过另一个问题。 优化模型的时候为什么选择最大化似然函数呢, 其实最大化后验函数也很有道理呀。 我们重新看贝叶斯公式。
将数据标记为 $x$, 模型标记为 $\theta$, 那么 Maximum Likelihood Estimation (MLE) 和 Maximum Posterior Estimation (MAP) 的区别是什么呢
- MLE: $\arg\max_{\theta} P(x|\theta)$
- MAP: $\arg\max_{\theta} P(\theta | x)$
其中 $P(x)$ 是我们观察到的数据, 与 $\theta$ 无关, 因此 MAP 与 MLE 的区别在于, 他考虑了 $P(\theta)$ 也就是先验分布。
举例来说, 假设我们在进行抛硬币的实验, 来估计硬币正面向上的概率 $P(\theta)$。
假设我们做了 10 次实验, 其中 6 次正面朝上, 4 次反面朝上, 那么
根据 MLE
对于后验来说, 由于该时间是我们已经观察到的, 所以 $P(X) = 1$。 而 $P(X|\theta)$ 就是似然, 是已经算出来的。
$P(\theta)$ 是我们对硬币本身的假设, 如果我们认为 $\theta$ 在 $[0, 1]$ 之间的分布应该是均匀的, 那么 MAP 等价于 MLE。
但是通常我们不会假设 $P(\theta)$ 是均匀分布的, 比如对于抛硬币来说, 我们不会认为正面向上的概率是 $[0, 1]$ 之间的一个均匀分布。 硬币大概率是两面均匀的, 所以我们可能会假定 $P(\theta)$ 是一个均值为 0.5 的正态分布。
从而 MAP
通过一系列基本的数学求出极值点, 得到 $\theta_1 \approx 3.65, \theta_2 \approx -2.74, \theta_3 \approx 0.59$, 其中 $\theta = 0.59$ 应该是一个合理的解。
对比 MLE($\theta = 0.6$), MAP($\theta = 0.59$) 得到的结果, 我们看到了先验是如何影响结果的。由于我们加入了 $\theta$ 的分布更可能在 $0.5$ 附近的先验, 使得最终得到的 $\theta$ 距离 $0.5$ 更近了。
这里的 $P(\theta)$ 算是一个比较容易计算的分布, 但是如果对于复杂的深度学习问题, 这里的 $\theta$ 可能是非常高维的, 进行这样的积分计算会很棘手。 大家发明了 Variational Inference 等方法。
参考资料
交叉熵损失
Cross Entropy 在数学上其实只描述了两个分布之间的差异。
对于分布 $p, q$ 来说
- Entropy: $H(P) = -\sum_i p_i \log (p_i)$
- Cross Entropy: $H(P, Q) = -\sum_i p_i \log (q_i)$
其中 $p$ 为真实分布, $q$ 为模型的预测分布。
我们把 Entropy 和 Cross Entropy 放到概率问题下进行理解:
熵表示的其实是用来表达某个分布所需要的最小信息量, 在最理想的情况下我们知道 $P(x)$ 也就是事件的真实分布。 然而大多数时候我们只能通过采样观察到有限的 $P(x)$, 更依赖预测结果 $Q(x)$。
因此交叉熵中, 事件的真实分布已知, 但是仍然根据模型的预测 $Q(x)$ 来决定事件的每个状态用什么方式编码。 $H(P, Q)$ 就是该条件下需要的编码长度。
我们已经知道, $H(P)$ 所表达的实际上是最小编码长度, 而对于 $H(P, Q)$ 仅当 $P = Q$ 的时候等号成立。
所以对交叉熵的优化可以看作是对模型的优化, 使得预测结果 $Q$ 与真实分布 $P$ 尽量接近。
这是一个基于直觉的认识, 从更数学的角度看, Cross Entropy Loss 可以通过 Maximum Likelihood Estimation 进行推导。
假设对于 $X \sim P(x)$ 进行 $N$ 次独立同分布实验, 对每个可能的结果 $X = x$ 出现的次数记录为 $N(x)$。
那么 Likelihood 为 $\prod_x Q(x)^{N(x)}$, 其中 $Q(x)$ 是模型预测的分布。
其中 $\frac{N(x)}{N} = P(x)$ 就是我们在实验中真正观察到每种情况的概率也就是 Ground Truth。
参考资料:
- 为什么交叉熵(cross-entropy)可以用于计算代价? - 灵剑的回答 - 知乎
- 一文搞懂熵(Entropy),交叉熵(Cross-Entropy) - 将为帅的文章 - 知乎
- CE Explained with Entropy and KL Divergence