5D Library › 沙盘、宿命与主动推理 · English

第三章 马尔可夫毯与个体的边界

一个统计学概念

「马尔可夫毯」最早是一个纯粹的统计学概念。珀尔(Judea Pearl)在关于贝叶斯网络的著作中定义:一个变量的马尔可夫毯,是这样一组变量,一旦知道了它们,网络中其余的变量就不再为该变量提供任何额外信息 (Pearl 1988)。在有向图中,它由该变量的父节点、子节点以及子节点的其他父节点组成。用式子写,若 bb 是内部状态 μ\mu 的马尔可夫毯,η\eta 是其余的外部状态,则

p(μ∣b,η)=p(μ∣b).p(\mu \mid b, \eta) = p(\mu \mid b).

弗里斯顿把这个概念用于生命系统:一个细胞、一个有机体乃至一个人,都可以描述为被一层马尔可夫毯与环境隔开的内部状态 (Friston 2013)。这层毯由两类状态组成:感官状态(环境影响它们,它们影响内部)和主动状态(内部影响它们,它们影响环境)。内部状态与外部状态不直接相连,只通过毯相互作用。基尔霍夫等人进一步讨论了这种边界与生物自主性的关系 (Kirchhoff et al. 2018)。

一个可以检验的玩具模型

下面的程序构造一个线性高斯回路:外部状态 η\eta 产生感官状态 ss,内部状态 μ\mu 由 ss 和自身的过去决定,主动状态 aa 由 μ\mu 决定,再反过来推动 η\eta。如果马尔可夫毯的说法在这里成立,那么在控制了毯之后,μ\mu 与 η\eta 的相关应当消失。

推导

用回归残差计算偏相关,检验条件独立。

# A Markov blanket in a linear-Gaussian loop (a toy model). External state eta, sensory state s,
# internal state mu, active state a:
#   s_t = eta_t + e1;   mu_t = 0.9 mu_{t-1} + 0.3 s_t + e2;   a_t = mu_t + e3;
#   eta_{t+1} = 0.95 eta_t - 0.5 a_t + e4   (action pushes back on the world)
# Test: is mu_t independent of eta_t once the blanket (s_t and mu's own past) is known?
import random, math
rng = random.Random(7)
T = 60000
eta, mu = 0.0, 0.0
rows = []
for t in range(T):
    s = eta + rng.gauss(0, 0.5)
    mu_prev = mu
    mu = 0.9 * mu + 0.3 * s + rng.gauss(0, 0.5)
    a = mu + rng.gauss(0, 0.5)
    eta_next = 0.95 * eta - 0.5 * a + rng.gauss(0, 0.5)
    rows.append((eta, s, mu_prev, mu, a, eta_next))
    eta = eta_next
rows = rows[1000:]
col = {k: [r[i] for r in rows] for i, k in enumerate(("eta", "s", "mu_prev", "mu", "a", "eta_next"))}

def residual(y, xs):
    """Ordinary least squares of y on xs (with intercept); returns the residuals."""
    X = [[1.0] + [x[i] for x in xs] for i in range(len(y))]
    p = len(X[0])
    XtX = [[sum(r[i] * r[j] for r in X) for j in range(p)] for i in range(p)]
    Xty = [sum(r[i] * yy for r, yy in zip(X, y)) for i in range(p)]
    for i in range(p):                                   # Gauss-Jordan elimination
        piv = XtX[i][i]
        XtX[i] = [v / piv for v in XtX[i]]; Xty[i] /= piv
        for j in range(p):
            if j != i:
                f = XtX[j][i]
                XtX[j] = [vj - f * vi for vj, vi in zip(XtX[j], XtX[i])]; Xty[j] -= f * Xty[i]
    return [yy - sum(b * v for b, v in zip(Xty, r)) for r, yy in zip(X, y)]

def corr(x, y):
    mx, my = sum(x) / len(x), sum(y) / len(y)
    sxy = sum((a - mx) * (b - my) for a, b in zip(x, y))
    return sxy / math.sqrt(sum((a - mx) ** 2 for a in x) * sum((b - my) ** 2 for b in y))

def pcorr(x, y, given):
    g = [col[k] for k in given]
    return corr(residual(col[x], g), residual(col[y], g)) if g else corr(col[x], col[y])

print(f"samples: {len(rows)}")
for x, y, given in (("mu", "eta", []), ("mu", "eta", ["s"]), ("mu", "eta", ["s", "mu_prev"]),
                    ("mu", "eta_next", []), ("mu", "eta_next", ["a", "eta"])):
    label = f"corr({x}, {y}" + (f" | {', '.join(given)})" if given else ")")
    print(f"{label:34s} = {pcorr(x, y, given):+.3f}")
# samples: 59000
# corr(mu, eta)                      = +0.228
# corr(mu, eta | s)                  = -0.045
# corr(mu, eta | s, mu_prev)         = -0.001
# corr(mu, eta_next)                 = -0.174
# corr(mu, eta_next | a, eta)        = -0.002

内部状态与外部状态原本有 0.228 的相关:内部「知道」外部的一些事情。只控制当前的感官状态还不够(偏相关 −0.045-0.045),因为内部状态的过去携带着过去外部状态的信息;把内部状态自身的过去也算进毯里,偏相关降到 −0.001-0.001。另一侧也一样:内部状态与下一时刻的外部状态相关 −0.174-0.174(行动在推回世界),控制了行动和当前外部状态之后几乎为零。这说明两件事:在这个模型里,毯确实把内外隔开;而在动态系统中,「毯」必须包括时间,不能只看某一瞬间的感官输入。

证据

马尔可夫毯在自由能原理中的用法存在实质性争论。布勒伊内贝格等人指出,文献中混用了两种概念:一种是珀尔意义上的、属于某个统计模型的「推断工具」,另一种是被当作物理系统真实边界的「形而上学」概念;从前者并不能直接推出后者,而且许多真实系统的动力学并不满足所需的条件独立结构 (Bruineberg et al. 2022)。这篇文章附有数十篇同行评论与作者回应,争论至今没有结束。

注

所以本章的用法是谨慎的:马尔可夫毯在这里是一个建模工具,用来清楚地说出「内部状态只能通过哪些通道了解和影响世界」。它不证明人的心灵有一道物理意义上的边界,更不证明「自我」可以被归结为一组统计量。

改变输入的通道

如果内部状态只能通过感官状态了解世界,那么改变感官状态的来源,就会改变内部状态。下面的程序在同一个回路里,把一部分感官输入换成一个低质量的来源:它有偏(均值 −1-1),噪声大,而且与真实世界无关。

推导

感官输入中来自低质量来源的比例从 0 增加到 80%。

# Same loop as before, but part of the sensory channel now comes from a low-quality source n
# (biased and noisy: mean -1, sd 1.5) instead of the world: s_t = (1 - w) eta_t + w n_t + e1.
# The internal state's long-run distribution depends on what crosses the blanket (a toy model).
import random, math, statistics as st

def run(w, T=40000, seed=11):
    rng = random.Random(seed)
    eta = mu = 0.0
    mus, etas = [], []
    for t in range(T):
        n = rng.gauss(-1.0, 1.5)
        s = (1 - w) * eta + w * n + rng.gauss(0, 0.5)
        mu = 0.9 * mu + 0.3 * s + rng.gauss(0, 0.5)
        a = mu + rng.gauss(0, 0.5)
        if t > 1000:
            mus.append(mu); etas.append(eta)
        eta = 0.95 * eta - 0.5 * a + rng.gauss(0, 0.5)
    return st.fmean(mus), st.pstdev(mus), st.correlation(mus, etas), st.fmean(etas)

print("share of input from the low-quality source | internal mean  sd  corr(internal, world) | world mean")
for w in (0.0, 0.2, 0.4, 0.6, 0.8):
    m, sd, r, me = run(w)
    print(f"{w:42.0%} | {m:+13.2f} {sd:4.2f} {r:+21.2f} | {me:+10.2f}")
# share of input from the low-quality source | internal mean  sd  corr(internal, world) | world mean
#                                         0% |         +0.01 1.31                 +0.22 |      +0.00
#                                        20% |         -0.01 1.27                 +0.18 |      +0.24
#                                        40% |         -0.05 1.24                 +0.13 |      +0.63
#                                        60% |         -0.13 1.24                 +0.04 |      +1.39
#                                        80% |         -0.33 1.27                 -0.09 |      +3.43

结果有两个方面,第二个比第一个更重要。第一,随着低质量输入的比例增加,内部状态与真实世界的相关从 0.22 降到零以下:内部模型逐渐与世界脱钩。第二,内部状态的均值只移动了一点(从 0.01 到 −0.33-0.33),因为这个系统在用行动维持内部状态的稳定;代价是世界本身被推开了:外部状态的均值从 0 漂到 +3.43+3.43。在一个闭合的回路里,有偏的输入不只是造成错误的看法,还会通过依据错误看法而采取的行动,系统性地改变环境。

这是一个简化的类比,但它指向一个实际的问题:一个人每天接收的信息中,有多少来自与他所处的真实环境有关的来源?第八章的审计表把它列为第三步。

假说 · 尚未验证

尚未确立。 在接收大量低信息量、高情绪性信息流(如评论区和推荐短视频)的人中,对自身直接环境的预期(例如对同事、邻居的信任程度)与该环境的客观指标之间的一致性较低;减少这类输入两周后,一致性提高。该假说预测:随机分配到「减少信息流」组的受试者,其预期与客观指标(如同事实际的合作行为记录)之间的相关,比对照组提高至少 0.15。如果两组没有差别,假说就被推翻。

边界的两个用途

把这一章与上一章合起来,可以看到改变一个自我维持的循环有两类入口。一类在毯的外侧:改变环境,例如换一个不再强化旧模式的环境。另一类在毯本身:改变进入的信息(感官状态),或改变向外的行动(主动状态)。第二章的模型里,「沙盘中坚持敞开」是对主动状态的干预;本章的模型里,「更换信息来源」是对感官状态的干预。两者都不直接改写内部信念,而是改变信念赖以更新的证据。

参考文献

Bruineberg, Jelle, Krzysztof Dolega, Joe Dewhurst, and Manuel Baltieri. 2022. “The Emperor’s New Markov Blankets.” Behavioral and Brain Sciences 45: e183.
Friston, Karl. 2013. “Life as We Know It.” Journal of the Royal Society Interface 10 (86): 20130475.
Kirchhoff, Michael, Thomas Parr, Ensor Palacios, Karl Friston, and Julian Kiverstein. 2018. “The Markov Blankets of Life: Autonomy, Active Inference and the Free Energy Principle.” Journal of the Royal Society Interface 15 (138): 20170792.
Pearl, Judea. 1988. Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference. Morgan Kaufmann.

Fan, Y. (2026). The Sandbox, Determinism and Active Inference: Markov Blankets, Variational Free-Energy Minimisation, Exploration-Exploitation Trade-offs and East Asian Causality in Computational Neuroscience [沙盘、宿命与主动推理] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23738794 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).