5D Library › 心理物理学、韦伯-费希纳定律与多感官贝叶斯整合的数学模型 · English
第四章 因果推断与麦格克效应
该不该合在一起
上一章的最优整合有一个前提:两个信号来自同一个来源。现实中这并不总是成立。电视里的人在说话,同时窗外有车驶过;我们不会把车声当成主持人的声音。闪光与短声在空间上离得很近、时间上几乎同时,大脑倾向于把它们当作一件事;离得远了,就分开处理。腹语术效应在两者相距很远时就消失了。
所以大脑面对的是两个问题:这两个信号是不是同一个来源(因果结构)?如果是,来源在哪里(参数估计)?科丁等人 2007 年把这写成一个层次贝叶斯模型 (Körding et al. 2007)。设 表示一个共同来源, 表示两个独立来源,先验概率 。来源的位置有一个先验分布 ;视觉与听觉的测量 、 分别带有标准差 、 的噪声。由贝叶斯定理,
在 时,两个测量来自同一个位置,似然随两者之差 迅速下降;在 时,两个测量各自独立。两个信号离得越远,「同一来源」的后验概率越低。对声音位置的最终估计是两种情形下估计的加权平均: 时按上一章的方式与视觉合成, 时只用听觉(加上先验),权重就是各自的后验概率。
证据
科丁等人 2007。 20 名受试者参加(1 人的数据被排除,分析 19 人),在 5 个水平位置(左 10° 至右 10°,间隔 5°)上同时呈现 35 毫秒的视觉刺激(加博尔小波)与白噪声短声,二者的位置有 25 种组合,受试者分别报告看到与听到的位置。用全体数据拟合,得到视觉噪声 ,听觉噪声 ,位置先验 ,共同来源的先验概率 。因果推断模型解释了 97% 的方差,强制融合模型只有 56%;用一半数据拟合、另一半检验,解释的方差为 96%。声音被拉向光斑的程度随两者距离增大而下降;在受试者认为两者来自不同来源的试次中,偏差甚至变成负的。作者把后者解释为一种选择效应:只有那些碰巧离光斑较远的听觉测量才会被判为「不同来源」(Körding et al. 2007)。
下面的程序用这四个拟合值计算:声音固定在先验的中心(0°),光斑在 ;每个距离模拟 2 万个试次,报告「同一来源」后验概率的平均值,以及听到的声音位置平均被光斑拉过去的比例。作为对照,同时计算强制融合()、完全分离(),以及一个假设的、更倾向于融合的观察者()。
推导
# Bayesian causal inference for a flash and a beep (Koerding et al. 2007). C = 1: one
# source; C = 2: two. Group-fitted values from the paper: sd_V 2.14, sd_A 9.2 deg, prior
# on position N(0, 12.3^2), p_common 0.28. Beep at 0 (prior centre), flash at +D. Bias of
# the heard position = mean estimate / D, in % of the way to the flash.
import math, random
SV, SA, SP, PC = 2.14, 9.2, 12.3, 0.28
def post_common(xv, xa, sv=SV, sa=SA, sp=SP, pc=PC):
v1, va, vp = sv * sv, sa * sa, sp * sp
k = v1 * va + v1 * vp + va * vp
l1 = math.exp(-((xv - xa) ** 2 * vp + xv ** 2 * va + xa ** 2 * v1) / (2 * k)) \
/ (2 * math.pi * math.sqrt(k))
l2 = math.exp(-xv ** 2 / (2 * (v1 + vp)) - xa ** 2 / (2 * (va + vp))) \
/ (2 * math.pi * math.sqrt((v1 + vp) * (va + vp)))
return pc * l1 / (pc * l1 + (1 - pc) * l2)
def heard(xv, xa, pc=PC):
p1 = post_common(xv, xa, pc=pc)
fused = (xv / SV ** 2 + xa / SA ** 2) / (1 / SV ** 2 + 1 / SA ** 2 + 1 / SP ** 2)
alone = (xa / SA ** 2) / (1 / SA ** 2 + 1 / SP ** 2)
return p1 * fused + (1 - p1) * alone, p1
if __name__ == "__main__":
rng = random.Random(2007)
print("D (deg) P(one source) bias of heard beep: causal forced none"
" causal, p_c 0.8")
for d in (0, 5, 10, 15, 20, 30, 40):
res = [(rng.gauss(d, SV), rng.gauss(0.0, SA)) for _ in range(20000)]
p1 = sum(post_common(xv, xa) for xv, xa in res) / len(res)
if d == 0:
print(f"{d:6.0f} {p1:12.2f} (no conflict)")
continue
b = [round(100 * sum(heard(xv, xa, pc)[0] for xv, xa in res) / len(res) / d)
for pc in (PC, 1.0, 0.0, 0.8)]
print(f"{d:6.0f} {p1:12.2f} {b[0]:23d}% {b[1]:7d}% {b[2]:5d}% {b[3]:11d}%")
# D (deg) P(one source) bias of heard beep: causal forced none causal, p_c 0.8
# 0 0.32 (no conflict)
# 5 0.31 20% 93% 1% 62%
# 10 0.26 17% 92% 0% 55%
# 15 0.20 12% 92% 0% 44%
# 20 0.14 9% 92% 0% 33%
# 30 0.05 3% 92% 0% 13%
# 40 0.01 1% 92% 0% 3%按拟合参数,声音被拉向光斑的比例在 时为 20%,10° 时 17%,20° 时 9%,40° 时只剩 1%。强制融合模型在任何距离都把声音拉过去 92% 至 93%(不到 100% 是因为位置先验把估计稍微拉回中心),完全分离则几乎为零。这就是框架所说的「从融合到分离的转折」:它不是一个开关,而是随距离逐渐下降的曲线(图三右)。
值得注意的是,在这组参数下,即使光斑与声音完全重合,「同一来源」的平均后验概率也只有 0.32。原因是听觉的定位噪声很大(9.2°),两个测量「碰巧接近」并不是很强的证据,而先验又只有 0.28。假设的观察者若先验为 0.8,转折更加明显:5° 时拉过去 62%,20° 时 33%,40° 时 3%。拟合值是全体受试者的平均,个人之间的先验与噪声可能差别很大。
注
两种「因果推断」不要混淆。 这里的「因果」是知觉系统对信号来源结构的推断,不是科学研究中关于干预效果的因果推断。模型描述的是一个理想观察者在给定假设下应当怎样判断;它与数据相符,并不说明大脑中有某个区域在逐项计算这些公式。
麦格克效应
证据
麦格克与麦克唐纳 1976。 把一段说 /ba-ba/ 的录音配到一段说 /ga-ga/ 的嘴部视频上,受试者常常报告听到 /da-da/:一个既不是听到的、也不是看到的「融合」音。在原始报告中,54 名成人(18 至 40 岁)中报告融合音的比例为 98%;两组儿童(3 至 4 岁 21 人、7 至 8 岁 28 人)的比例在 64% 到 81% 之间,低于成人 (McGurk and MacDonald 1976)。
麦格克效应常被当作「视觉改变听觉」的典型例子。用本章的语言说,当视听两个信号被当作同一个来源时,知觉系统在两个不同的音位之间找到一个兼容二者的解释。马格诺蒂与比彻姆 2017 年把因果推断模型用于言语,提出:只有当大脑推断两个音节来自同一个说话者时,融合才会发生;同一个模型也能解释其他不一致视听言语的知觉 (Magnotti and Beauchamp 2017)。
但「常感知为 /da/」需要限定。后来的研究发现,这个效应的强弱在人与人之间、刺激与刺激之间差别都非常大。
证据
个体与刺激的差异。 巴苏·马利克、马格诺蒂与比彻姆 2015 年用 12 段不同的麦格克刺激测试了 165 名成人:不同刺激引起融合的比例从 17% 到 58% 不等;在受试者之间,有人从不融合(0%),也有人每次都融合(100%);其中 40 人一年后重测,融合率的重测相关为 0.91 (Basu Mallick et al. 2015)。
这种差异对研究设计有直接的后果。下面的程序用一个简单的测量模型说明:每个人有自己的「易感性」,每段刺激有自己的「强度」,融合概率由二者之和决定;人的易感性在两次测试之间还有少量波动。12 段刺激的总体融合率按上述 17% 至 58% 的范围设定,个人的分布是假设的。
推导
# How much of "the" McGurk effect is the person and how much the clip? Illustrative
# measurement model: P(fusion) = logistic(person + day + clip). Person ~ N(0, 2.5) and
# day-to-day wobble ~ N(0, 0.7) on the logit scale (both ASSUMED); 12 clips tuned so the
# population fusion rate runs from 17 % to 58 %, the range reported by Basu Mallick et
# al. (2015). 10 trials per clip per session.
import math, random
from statistics import correlation
logistic = lambda z: 1 / (1 + math.exp(-z))
def tune(target, people):
lo, hi = -10.0, 10.0
for _ in range(60):
mid = (lo + hi) / 2
rate = sum(logistic(p + mid) for p in people) / len(people)
lo, hi = (mid, hi) if rate < target else (lo, mid)
return hi
if __name__ == "__main__":
rng = random.Random(1976)
people = [rng.gauss(0, 2.5) for _ in range(2000)]
clips = [tune(0.17 + (0.58 - 0.17) * j / 11, people) for j in range(12)]
def session():
out = []
for p in people:
q = p + rng.gauss(0, 0.7)
out.append([sum(rng.random() < logistic(q + c) for _ in range(10)) / 10
for c in clips])
return out
s1, s2 = session(), session()
each = [sum(r) / 12 for r in s1]
rates = [sum(r[j] for r in s1) / len(s1) for j in range(12)]
print("clip fusion rates (population):", " ".join(f"{x:.0%}" for x in rates))
print(f"people, all 12 clips: {sum(e < 0.1 for e in each) / len(each):.0%} fuse on"
f" <10 % of trials, {sum(e > 0.9 for e in each) / len(each):.0%} on >90 %,"
f" range {min(each):.0%} to {max(each):.0%}")
for name, j in (("weakest clip", 0), ("strongest clip", 11)):
share = sum(r[j] >= 0.5 for r in s1) / len(s1)
print(f"'has the McGurk effect' (>= 5 of 10 fusions) on the {name}: {share:.0%}")
r = correlation(each, [sum(x) / 12 for x in s2])
r1 = correlation([x[0] for x in s1], [x[0] for x in s2])
print(f"test-retest r: mean over 12 clips {r:.2f}; one weak clip alone {r1:.2f}")
# clip fusion rates (population): 18% 21% 25% 29% 32% 36% 40% 43% 47% 51% 55% 58%
# people, all 12 clips: 27% fuse on <10 % of trials, 7% on >90 %, range 0% to 100%
# 'has the McGurk effect' (>= 5 of 10 fusions) on the weakest clip: 16%
# 'has the McGurk effect' (>= 5 of 10 fusions) on the strongest clip: 62%
# test-retest r: mean over 12 clips 0.91; one weak clip alone 0.78在这个模型中,把 12 段刺激平均,27% 的人融合率低于 10%,7% 的人高于 90%,范围从 0 到 100%。如果一项研究只用最弱的那段刺激,以「10 次中至少 5 次融合」为标准,只有 16% 的人「有麦格克效应」;只用最强的那段,则是 62%。同一批人,结论可以相差近四倍。用 12 段刺激的平均值,两次测试之间的相关为 0.91;只用一段弱刺激,降到 0.78。所以「多少人会产生麦格克效应」这个问题本身没有单一答案;研究应当使用多段刺激,报告分布,而不是一个比例。
时间上的「同一来源」
空间不是唯一的线索。声音与画面在时间上错开太多,也会被当作两件事。
证据
视听言语的时间整合窗口。 范·瓦森霍弗、格兰特与珀佩尔 2007 年在两个实验中测试了 43 名听力正常的受试者:在声音比画面提前约 30 毫秒到延后约 170 毫秒的范围内,融合反应都很普遍,声音延后时更稳健;同时性判断给出的时间窗口与融合的窗口相近,宽约 200 毫秒且不对称 (Wassenhove et al. 2007)。
窗口不对称有一个物理上的理由:光速远快于声速,自然界中声音总是晚于画面到达(10 米外约晚 30 毫秒),而几乎从不提前。第八章的核查表会用到这个不对称。
假说 · 尚未验证
尚未确立:时间窗口越窄的人,在声音明显延后时越少产生麦格克融合,而在同步时不受影响。 如果个人的视听同时性判断窗口反映了他在时间维度上的「同一来源」先验,那么窗口窄的人在声音延后约 150 毫秒时融合率应当明显下降,在同步呈现时则与他人相近。如果在预先登记的研究中,个人窗口宽度与延后条件下融合率的下降之间没有关系(置信区间排除中等大小的相关),这个假说就是错的。
本章小结
因果推断模型把「是否合在一起」也当作推断的对象:两个信号离得越远,同一来源的后验概率越低,整合也越弱。用科丁等人的拟合值,声音被光斑拉过去的比例从 5° 时的 20% 逐渐降到 40° 时的 1%,强制融合模型做不到这一点。麦格克效应可以用同样的思路理解,但它的强弱因人、因刺激差异极大:不同刺激的融合率从 17% 到 58%,个人从 0 到 100%,只用一段刺激的研究可能得出相差数倍的结论。视听言语在声音提前约 30 毫秒到延后约 170 毫秒的窗口内整合,窗口不对称。下一章从行为转向神经元。
参考文献
Fan, Y. (2026). Psychophysics, the Weber-Fechner Law and Optimal Bayesian Multisensory Integration: From Stevens's Power Law and the McGurk Effect to Sensory Substitution, Read Beside Classical Chinese Thought on the Six Senses [心理物理学、韦伯-费希纳定律与多感官贝叶斯整合的数学模型] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23788548 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).