假设我们有一个关于X的先验(例如 X ~ Gaussian)和一个前向算子y = f(x)。进一步假设我们通过一个实验观察了y,并且这个实验可以无限重复。假设输出Y为高斯 (Y ~ Gaussian) 或无噪声 (Y ~ Delta(observation))。
给定观察结果,如何持续更新我们对X的主观知识程度?我用 PyMC 尝试了以下模型,但似乎我遗漏了一些东西:
from pymc import *
xtrue = 2 # this value is unknown in the real application
x = rnormal(0, 0.01, size=10000) # initial guess
for i in range(5):
X = Normal('X', x.mean(), 1./x.var())
Y = X*X # f(x) = x*x
OBS = Normal('OBS', Y, 0.1, value=xtrue*xtrue+rnormal(0,1), observed=True)
model = Model([X,Y,OBS])
mcmc = MCMC(model)
mcmc.sample(10000)
x = mcmc.trace('X')[:] # posterior samples
后验没有收敛到xtrue。