阶段四 · 连接与溯源 · 模块 7 · 第 18 课 / 共 28 课

溯源原理与模型:正问题、逆问题与头模型

头皮上测到的只是"投影"。这一课先把溯源大厦的地基打牢:正问题为什么 有唯一解、逆问题为什么病态,以及头模型与源模型这两块积木怎么搭。

🕐 60 分钟🎯 难度:高阶✅ 前置:模块 5

🎯 本节学习目标

  • 说清"头皮电位不等于脑内活动"的两层原因:采样稀疏与容积导体模糊化
  • 区分正问题与逆问题:为什么一个有唯一解、一个本质病态
  • 记住正向模型三要素:源模型(偶极子/网格)、头模型(同心球 vs BEM)、前置场
  • 理解个体 MRI 在溯源中的角色:提供头的几何,不提供功能
  • 看懂 FieldTrip 溯源流水线:ft_read_headmodelft_prepare_leadfieldft_sourceanalysis 的位置关系
  • 会用"分辨率矩阵"的直觉评估溯源结果的可信度(点扩散与泄露)

一、为什么需要溯源:头皮电位的"先天近视"

到模块 6 为止,我们所有的分析——ERP、时频、连接——都发生在头皮电极层面。 但你大概早就察觉:头皮地形图上一片"发亮"的区域,并不等于它正下方的脑区在活动。原因有两个:

  • 采样稀疏:64 或 128 个电极,只是头顶上几十个离散的空间采样点;
  • 容积导体的模糊化:脑内的电流要穿过脑脊液、颅骨、头皮这些电导率相差很大的组织,才能变成电极上的电位。颅骨的电导率大约只有脑组织的 1/40——它像一层"毛玻璃",把原本尖锐的局部活动抹成一片模糊。

一个贯穿整个模块的类比:隔墙听声。你站在走廊里听到隔壁有人说话(电极记录到电位), 能大致判断"声音从那边来"(地形图上的模糊峰值),但说不清"是坐在桌子左边还是右边的人在说"。 源定位分析(source localization)要做的,就是把"听到的声音"反推回"说话的人在哪、说了多大声"—— 把头皮电位反推回脑内的电流活动

📌 出发前先立好预期

溯源不是显微镜:它给出的是在一系列物理假设下的最优推断,而不是"看见了"脑活动。头模型越准、约束越合理,推断越可信——但逆问题本身的病态性(下一节)永远绕不过去。把预期立在前面,后面每一步的"较真"才有意义。

二、正问题与逆问题:一对不对称的兄弟

源定位的全部数学就是两个方向相反的问题,先摆在一起看:

正问题(forward)逆问题(inverse)
问什么已知脑内源的位置与强度,头皮上会测到什么电位?已知头皮电位,脑内的源在哪里、多强?
解的性质唯一解——由物理定律完全确定没有唯一解——不同的脑内源组合可以产生一模一样的头皮分布
听声类比已知每个人站位,算你耳朵听到的混音听到混音,反推每个人站位
困难类型只是计算量问题原则上就欠定:病态(ill-posed)
📖 概念:病态问题(ill-posed)

数学上一个问题"适定"要同时满足三条:解存在、解唯一、解随数据连续变化。逆问题三条全犯——很多解都能解释数据(不唯一),而且噪声稍大解就剧烈跳动(不稳定)。所以逆问题没有"算出来"的解,只有"在约束下选出来"的解。

一句话记住模块 7 的总纲:MNE、Beamformer、sLORETA 的区别,本质上不是"谁算得准", 而是"用什么假设把无穷多解砍到只剩一个"。这句话是理解后面三节课的钥匙。

三、正向模型三要素:源模型、头模型与前置场

1. 源模型:把"脑内活动"翻译成数学对象

  • 等效电流偶极子(dipole):一小片同步放电的锥体神经元,被简化成一个有位置、朝向、强度三个属性的"电流发生器"。这是源的基本单元;
  • 分布式源模型(网格):在脑内铺一张固定网格(例如 1cm 间隔、几千个格子),每格放一个偶极子,让数据决定哪些格子亮。本模块的 FieldTrip 实战用的都是它。

2. 头模型(体积导体):电在头里怎么传播

头模型描述组织的几何形状 + 电导率,是那层"毛玻璃"的数学化身:

头模型思路精度需要什么适用场景
同心球模型把头简化成嵌套的几个球(脑/脑脊液/颅骨/头皮),有解析解低(忽略头的真实形状)只要电极位置快速探索、教学演示
边界元 BEM从 MRI 分割出脑/颅骨/头皮三层界面,按界面计算电位传播中到高个体或模板 MRI 结构像正式研究的标准选择
有限元 FEM把头划分成几十万个小单元逐个求解最高(可建模各向异性白质)高质量 MRI + 大计算量高精度需求(如癫痫术前定位)

MRI 的角色:它在这里登场,不是用来看功能,而是用来提供头的几何—— 分割出三层界面(BEM 用)、对齐电极位置、把结果映射到标准脑。模块 7 所有"个体解剖精度"都来自它。

Matlab
% 头模型的两种来路(对应上表的前两行):
% 来路一:同心球——快,只用电极位置拟合(适合探索/教学)
cfg = [];
cfg.method = 'concentricspheres';              % 最多 4 层同心球
headmodel = ft_prepare_headmodel(cfg, elec);   % elec 为电极结构(位置已在 2.2 配准)

% 来路二:真实头模型——读入基于 MRI 分割的边界元(BEM)
headmodel = ft_read_headmodel('standard_bem.mat');  % FieldTrip 自带的标准脑 BEM 模板
% 个体 BEM 则由个体 MRI 经 ft_volumesegment(分割)+ ft_prepare_mesh(建面)
% + ft_prepare_headmodel(cfg.method = 'openmeeg')生成,详见官方教程

3. 前置场(lead field):把前两者连起来的"传播字典"

📖 概念:前置场(lead field)

对每个源位置 i 与每个电极 j,前置场存了一个数:位置 i 的单位偶极子会在电极 j 上产生多大电位。几千个源位置 × 几十个电极,构成一张"传播字典"。有了它,正问题就是查字典加权求和,逆问题则是"从查表结果反查"。

四、逆问题为什么必须加约束

用一个能心算的小例子感受"欠定":头皮上 2 个电极测到 [3, 3],脑内 3 个候选位置的单位活动在两个电极上都各产生 1。那么源强度 [3,0,0][0,3,0][1,1,1]……全都能完美解释数据。数据本身无法在它们之间做选择。

所以必须从外部引入偏好(先验假设):

  • 最小范数:在所有解里挑"总能量最小"的那个(7.2 的 MNE);
  • 空域滤波:不求全局最优解,逐个位置单独问"这里像不像真源"(7.3 的 Beamformer);
  • 统计标准化:把解除以它自身的期望方差,让深浅可比(7.4 的 sLORETA)。
💡 奥卡姆剃刀式的直觉

"加约束"并不玄妙——就是如无必要,勿增实体。最小范数假设"大脑不爱浪费能量",因此天然偏爱"许多小源分摊"而不是"一个巨大源独撑"。假设是否合理,由你的科学问题决定,也要在论文里明说。

五、FieldTrip 溯源流水线总览

FieldTrip 把溯源拆成清晰的三段式。先把这张地图记牢,7.2 和 7.3 再进入每一段的细节:

① 数据准备        ft_preprocessing → ft_timelockanalysis(ERP)/ ft_freqanalysis(时频)
② 头模型          ft_read_headmodel(读入现成 BEM)/ ft_prepare_headmodel(球模型或自建)
③ 源模型网格      ft_prepare_sourcemodel(或用 cfg.resolution = 1 自动生成 1cm 网格)
④ 前置场          ft_prepare_leadfield(头模型 × 网格 × 电极 → "传播字典")
⑤ 溯源求解        ft_sourceanalysis(cfg.method = 'mne' / 'lcmv' / 'sloreta' ...)
⑥ 可视化与统计    ft_sourceinterpolate + ft_sourceplot / ft_sourcestatistics

其中 ②③④ 是正问题的全部——它们与数据无关,每个被试只需算一次、可保存复用;⑤ 才是逆问题本体,换方法只换这一格。

Matlab
% 溯源骨架:③④ 可由 ft_prepare_leadfield 一步完成(每被试只算一次)
headmodel = ft_read_headmodel('standard_bem.mat');   % ② 头模型

cfg = [];
cfg.resolution = 1;                                 % ③ 源模型:1cm 网格
cfg.headmodel = headmodel;
cfg.elec = data.elec;
cfg.channel = data.label;
leadfield = ft_prepare_leadfield(cfg);             % ④ 前置场(一并建好网格)

cfg = [];
cfg.method = 'mne';                                 % ⑤ 溯源(7.2 详解)
cfg.sourcemodel = leadfield;                        % 旧教程写作 cfg.grid,二者等价
cfg.headmodel = headmodel;
cfg.elec = data.elec;
source = ft_sourceanalysis(cfg, timelock);          % 输入是 ft_timelockanalysis 的输出
% ⑥ ft_sourceinterpolate + ft_sourceplot 可视化,见 7.2
⚠️ 没有个体 MRI 怎么办

模板头模型(如 standard_bem.mat 这类标准脑 BEM)是完全合法的选择,大量 ERP 研究都这么做。但务必在论文里如实报告,并记住代价:头形不匹配会引入厘米级定位误差;电极与头模型的对齐(配准)误差是溯源误差的头号来源。另外,模板头模型只适合 EEG——MEG 的传感器阵列位置固定,与个体头形耦合更强,不能简单套模板。

六、溯源结果可信吗:分辨率矩阵的直觉

最后一个概念,回答"我怎么知道看到的激活是真的"。分辨率矩阵回答的问题是: 如果脑内位置 A 真的有一个单位强度的源,我的溯源结果会把它显示在哪里? 理想答案是"只在 A";现实是"A 最亮、A 周围一圈也亮、有时远处还有假亮点"。

  • 对每个候选位置都问一遍这个问题,就得到完整的分辨率矩阵——相当于给溯源方法做的"体检报告";
  • 从这张报告能读出两张脸:点扩散函数(真源被抹开多大一片,决定空间分辨率)与泄露(leakage)(A 的活动漏进 B 的读数里——模块 6 提过它对连接分析的威胁);
  • MNE 家族"抹得宽而平",偶极子拟合"敢给尖峰但也敢报错"。不同方法在这份体检报告上的表现不同,这正是 7.2–7.4 三条路线比较的底层逻辑。
📌 本课的地图

三层结构请记牢:头皮电位只是投影(一)→ 逆问题病态、必须选假设(二、四)→ 正向模型是基础设施(三、五)。7.2 选"总能量最小"假设,7.3 选"逐点空域滤波"假设,7.4 在"标准化"上做文章——三条路,回答的是同一个病态问题。

📌 本节小结

  • 头皮电位只是脑内活动的模糊投影:颅骨低电导是天然的"毛玻璃"
  • 正问题有唯一解,逆问题病态——所有溯源方法的区别在于用什么约束把无穷多解砍到一个
  • 头模型三档:同心球(快而糙)→ BEM(标准)→ FEM(高精尖);MRI 的角色是提供头的几何
  • 前置场是"源位置 → 电极"的传播字典,与数据无关,算一次可复用
  • 分辨率矩阵回答"真源会被抹成什么样":点扩散决定分辨率,泄露威胁连接分析

✏️ 课后练习

  1. 画出本课的溯源流水线框图(六步),标注每一步的输入与输出,并写出对应的 FieldTrip 函数名。
  2. 用自己的话(不超过 3 句)向一位不做脑电的同学解释:为什么头皮电位最强的位置不一定在源的正上方。
  3. 查一篇你感兴趣的 EEG 溯源论文,记录它用的头模型类型(同心球/BEM/FEM、个体/模板)与逆问题方法,判断它属于本课讲的哪条路线。