基于高斯分布的贝叶斯决策与连续隐状态推断
2025-07-10 07:40:45作者:董斯意
教程概述
本教程是Neuromatch Academy课程"贝叶斯决策"系列的第二部分,重点介绍高斯分布特性及其在连续隐状态贝叶斯推断中的应用。我们将通过寻找Astrocat的趣味案例,深入探讨连续概率分布下的贝叶斯推理方法。
核心概念与技术要点
1. 高斯分布基础
高斯分布(正态分布)是连续概率分布中最重要的分布之一,其概率密度函数为:
其中μ为均值,σ²为方差。高斯分布具有以下优良特性:
- 对称性:关于均值对称
- 集中性:大部分概率质量集中在均值附近
- 可加性:独立高斯随机变量的和仍为高斯分布
def gaussian(x, mu, sigma):
"""计算高斯分布概率密度"""
return np.exp(-0.5*((x-mu)/sigma)**2)/(sigma*np.sqrt(2*np.pi))
2. 连续状态下的贝叶斯推断
与离散状态类似,连续状态的贝叶斯定理表示为:
对于高斯分布,当先验和似然都是高斯时,后验也是高斯分布,且参数有解析解:
def product_gaussian(mu1, mu2, sigma1, sigma2):
"""计算两个高斯分布的乘积分布参数"""
sigma_post = np.sqrt(1/(1/sigma1**2 + 1/sigma2**2))
mu_post = (mu1/sigma1**2 + mu2/sigma2**2)*sigma_post**2
return mu_post, sigma_post
3. 高斯混合模型
复杂先验可以用高斯混合模型表示:
其中πi是混合系数,∑πi=1。混合模型能表示多峰分布,但后验计算会变得复杂。
def gaussian_mixture(mu1, mu2, sigma1, sigma2, factor):
"""绘制高斯混合分布"""
x = np.linspace(-7.0, 7.0, 1000)
y1 = gaussian(x, mu1, sigma1)
y2 = gaussian(x, mu2, sigma2)
mixture = y1*factor + y2*(1.0-factor)
4. 损失函数与决策
在连续状态下,常见的损失函数包括:
- 均方误差(MSE):L(θ,â) = (θ-â)²
- 绝对误差:L(θ,â) = |θ-â|
- 0-1损失:L(θ,â) = I(|θ-â|>ε)
最优决策是使期望损失最小的估计:
def calc_expected_loss(loss_f, posterior, x):
"""计算期望损失"""
if loss_f == "MSE":
loss = (x[:,None] - x[None,:])**2
elif loss_f == "Absolute":
loss = np.abs(x[:,None] - x[None,:])
elif loss_f == "0-1":
loss = (np.abs(x[:,None] - x[None,:]) > 0.02).astype(float)
return np.sum(loss * posterior[None,:], axis=1)
应用案例:寻找Astrocat
我们通过寻找Astrocat的案例演示这些概念:
- 多源信息融合:结合卫星(先验)和太空鼠(似然)的观测确定Astrocat位置
- 复杂先验处理:当先验是多峰分布时,后验计算需要考虑混合成分
- 最优搜索策略:基于不同损失函数制定最优搜索路径
def plot_information(mu1, sigma1, mu2, sigma2):
"""可视化信息融合过程"""
mu_post, sigma_post = product_gaussian(mu1, mu2, sigma1, sigma2)
# 绘制先验、似然和后验分布
关键结论
- 高斯分布为连续状态贝叶斯推断提供了数学便利
- 高斯混合模型能表示更复杂的先验知识
- 不同损失函数会导致不同的最优决策
- 多源信息融合能显著提高估计精度
本教程为后续更复杂的贝叶斯决策问题奠定了基础,特别是多变量和非高斯情况下的处理方法。理解这些基本概念对于构建更复杂的认知模型和决策系统至关重要。