1. 项目概述:从胎心监护信号中“读出”胎儿健康风险

在产科临床,评估胎儿宫内安危一直是核心挑战。传统上,医生依赖超声生物测量来估算胎儿大小和孕周,但这套方法有几个绕不开的痛点:设备昂贵、操作依赖技师经验、难以频繁重复检查,更无法提供实时的、连续的胎儿状态反馈。尤其在医疗资源不均衡的地区,许多孕妇无法获得规律、高质量的产前超声监测,这直接增加了不良妊娠结局的风险。

与此同时,胎心宫缩监护(Cardiotocography, CTG)作为一种已临床应用数十年的技术,却长期被“低估”了其潜力。它通过腹部探头无创地记录胎儿心率和宫缩曲线,成本低、可床边甚至居家操作。然而,过去CTG的分析大多停留在“当下”状态的判读上,比如识别胎儿是否存在急性缺氧或酸中毒。一个核心问题被忽视了:这些持续20-40分钟、看似平凡的胎儿心率波动曲线里,是否隐藏着能预测“未来”风险的密码?能否像通过树木的年轮推断其生长历史和未来活力一样,从CTG信号中解读出胎儿发育的“生物年龄”及其健康轨迹?

这正是“CTGage”这项研究试图回答的问题。我们团队的工作,本质上是将 深度学习 这把“放大镜”和“解码器”对准了海量的CTG时间序列数据。我们不再满足于对信号做简单的“正常/异常”二分法分类,而是训练了一个名为Net1D的神经网络模型,让它直接回归预测一个连续值:胎儿的 生物年龄(Biological Age) 。这个由AI模型预测出的年龄,我们称之为CTGage。它的魔力不在于绝对精度,而在于它与胎儿实际孕周(按末次月经计算)的差值——我们称之为 CTGage-gap

这个gap值,就是我们找到的 数字生物标志物 。你可以把它理解为胎儿发育的“加速度表”。当AI预测的年龄显著大于实际孕周(正gap),可能提示胎儿生长过快;反之,若预测年龄显著偏小(负gap),则可能暗示生长受限。我们的临床验证清晰地表明,这个简单的差值,与早产、低出生体重儿、新生儿窒息等 不良妊娠结局 的发生率存在显著统计学关联。这意味着,通过一次常规的、低成本的CTG检查,我们就有可能筛出那些目前看似“正常”、但未来风险较高的胎儿,为早期干预赢得宝贵时间。

2. 核心思路与技术架构拆解

2.1 为什么是“生物年龄”而非直接分类?

在着手设计模型之前,我们面临一个根本性的方案选择:是让AI直接预测“是否会发生早产”等具体不良结局(分类任务),还是预测一个连续的“生物年龄”(回归任务)?

我们选择了后者,这基于几个关键考量:

  1. 临床意义的普适性 :直接分类模型通常是“一事一议”的。预测早产的模型无法用于评估低出生体重风险,你需要为每一种不良结局训练一个单独的模型。这不仅数据需求量大,且模型结果难以横向比较。而“生物年龄”是一个 基础且通用的发育标尺 。无论最终表现为哪种具体并发症,其根源往往都可追溯到胎儿生长发育轨迹的异常。预测生物年龄,相当于抓住了问题的“上游”和“共性”。
  2. 数据利用的高效性 :回归任务能更充分地利用数据中的连续信息。胎儿的发育是连续过程,孕周每增加一天,其生理状态都在微妙变化。分类任务将这种连续变化强行割裂,损失了大量信息。回归模型则能学习这种连续的映射关系,理论上能捕捉到更细微的发育偏离。
  3. 结果的可解释性 :预测出的CTGage-gap是一个有明确物理意义的数值(天数)。临床医生可以直观理解:“这个胎儿发育比实际孕周快了3周”或“慢了2周”。这种解释远比一个“高风险概率为73%”的黑箱输出更贴近临床思维,也更容易转化为具体的临床决策(如加强监护、营养干预或促胎肺成熟)。

2.2 模型选型:为什么是Net1D?

处理CTG这种一维时间序列信号,卷积神经网络(CNN)是自然的选择。但我们没有使用更复杂的时序模型(如LSTM或Transformer),而是基于ResNet架构定制了一个一维卷积网络(Net1D),主要出于以下原因:

  1. 局部特征与全局特征的平衡 :CTG信号中,既有瞬时的胎心加速/减速(局部特征),也有基线变异、长期趋势(全局特征)。一维CNN通过多层卷积核,能有效提取从毫秒级到分钟级的不同尺度特征。较深的网络结构可以扩大感受野,捕捉长程依赖。
  2. 残差连接(Residual Connection)的稳定性 :我们直接采用了ResNet的核心思想——残差块。对于CTG这种可能长达数千个时间点(对应数十分钟)的长序列,训练深度网络容易遇到梯度消失或爆炸问题。残差连接允许梯度直接跨层传播,极大地稳定了训练过程,使我们能构建更深的网络以提升特征提取能力,而不用担心模型难以优化。
  3. 通道注意力机制(Squeeze-and-Excitation Module)的引入 :这是Net1D的一个关键升级。CTG信号的不同频率成分、不同时间片段对预测“生物年龄”的重要性是不同的。SE模块能自适应地校准特征通道的权重,让网络学会“关注”更重要的特征。例如,模型可能会给代表胎儿心率变异性的特征通道分配更高权重,而降低某些噪声或母体活动伪迹通道的权重。
  4. 效率与泛化 :相比于RNN类模型,CNN在训练和推理上通常更高效。结合数据增强策略(后文详述),CNN也展现出更好的泛化能力,这对于在不同设备、不同采集环境下获得的CTG信号至关重要。

注意 :模型结构并非越复杂越好。在医疗AI中,尤其是在数据量并非无限大的情况下,结构清晰、易于训练和解释的模型往往比追求极致复杂度的模型更具实用价值。Net1D在性能、效率和可解释性之间取得了很好的平衡。

2.3 核心创新:分布对齐的增强回归技术

这是我们工作中的一个技术亮点,旨在解决一个非常实际且棘手的问题: 数据分布不平衡

在真实临床数据中,孕周分布并非均匀的。例如,在孕晚期(34-40周)来做CTG检查的孕妇远多于孕中期。这就导致训练数据中,某些孕周标签(如38周)的样本量极大,而另一些(如28周)的样本量很少。一个朴素的回归模型会倾向于让所有预测值向样本量多的区域(即分布的中部)靠拢,导致对“尾部”(极早或极晚孕周)样本的预测误差很大。

我们提出的“分布对齐的增强回归”是一套组合拳:

  1. 针对稀疏标签的数据增强 :对于样本量少的孕周区间,我们不仅使用常规的滑动窗口截取(从长序列中生成多个短序列样本),还额外施加了随机时间扭曲(拉伸或压缩)和添加随机噪声。这相当于人为地、有针对性地“创造”了更多尾部样本,缓解了数量的绝对不平衡。
  2. 分布损失函数(DistLoss) :这是关键。我们不再仅仅最小化每个样本的预测误差(点损失,Point Loss),还引入了一个分布层面的约束。我们根据训练集所有样本的真实孕周,构建了一个理论上的标签分布(一个截断的正态分布)。在训练时,我们要求模型一个批次(batch)的预测值的 分布形态 ,必须与这个理论分布对齐。这相当于告诉模型:“你可以有预测误差,但整体上,你预测出的不同孕周的比例,应该符合真实的临床情况。”这有效防止了模型将所有样本都预测到样本密集的中间区域。
  3. 单调性正则化(Slope Regularization) :DistLoss有一个潜在风险:为了整体分布匹配,模型可能会“牺牲”少数样本,比如故意将实际孕周大的样本预测得更小。为此,我们增加了一个单调性约束,惩罚预测值与真实值之间回归斜率偏离1的情况。这确保了“孕周越大,预测值也倾向于越大”的基本逻辑不被破坏。

最终,总损失函数是点损失、分布损失和单调性正则损失的加权和。这套方法显著提升了模型在全体本,尤其是稀疏样本上的预测稳健性。

3. 数据 pipeline 构建与实操要点

3.1 数据来源与清洗:从原始记录到可用样本

我们的数据全部来源于北京大学人民医院2018年至2022年的临床记录,共包含11,385名孕妇的61,140条CTG记录。每条记录是采样率为2Hz的胎儿心率时间序列,即每分钟有120个数据点。

原始数据清洗流程如下:

  1. 长度筛选 :剔除记录时长少于30分钟(即数据点少于3600个)的片段。过短的记录无法反映胎心率的完整周期和变异模式,信息量不足。
  2. 孕周范围筛选 :只保留孕周在20至42周之间的记录。这是CTG临床应用的常规有效范围,过早或过晚(理论上超过42周为过期妊娠)的数据生理意义不同,且样本量极少,不利于模型学习。
  3. 分割策略 :这是保证评估公正性的核心。我们 没有 简单地将所有数据随机分割。而是先根据孕妇是否发生不良结局(或患有相关母体疾病)进行分层。
    • 开发队列 :全部由“正常”(无任何指定不良结局或疾病)的孕妇记录组成。我们将其按8:1:1划分为训练集、验证集和测试集。这个队列用于训练和优化核心的CTGage预测模型。
    • 临床评估队列 :包含“正常”孕妇的测试集数据 + 所有 “异常”(有不良结局或疾病)的孕妇记录。这个队列 不参与模型训练 ,专门用于评估CTGage-gap与临床结局的关联性。这种分割方式确保了我们在评估模型预测的“生物标志物”的临床价值时,用的是模型从未“见过”的异常样本,评估结果无偏且可靠。

实操心得 :医疗AI项目中,数据分割策略往往比模型选择更重要。必须严防“数据泄露”,即测试集中样本的信息以任何形式在训练阶段被模型“看到”。我们的分层分割法,确保了模型在“正常”数据上学习发育规律,然后将其泛化能力真正在“异常”数据上进行检验,这符合临床转化研究的逻辑。

3.2 特征工程与模型输入处理

对于深度学习模型,尤其是处理原始信号的CNN,我们通常不做复杂的人工特征工程(如计算基线、变异、加速次数等),而是让网络直接从原始信号中学习。但这不意味着数据可以直接丢给模型。

  1. 标准化 :我们将每条CTG时间序列的数值进行z-score标准化,即减去整个训练集信号的均值,除以标准差。这有助于模型收敛,并减少不同设备或个体间基线心率绝对值的差异带来的干扰。
  2. 序列定长 :Net1D需要固定长度的输入。我们统一将每条记录截取或填充至一个固定长度(例如3600点,对应30分钟)。对于超过30分钟的记录,我们采用滑动窗口法,以50%的重叠率切分出多个30分钟的子序列,这同时起到了数据增强的作用。
  3. 标签准备 :模型的监督信号是“实际孕周”,以天为单位。这个孕周基于可靠的末次月经日期或早期超声校正确定,是临床金标准。

3.3 模型训练与调参实录

我们使用PyTorch框架进行实现。训练在一台配备4张NVIDIA RTX 3090显卡的服务器上进行。

关键训练细节:

  • 优化器 :Adam,初始学习率设为1e-3。Adam的自适应学习率特性使其在早期快速收敛。
  • 学习率调度 :采用带热重启的余弦退火(Cosine Annealing Warm Restarts)。这是一种非常有效的策略。训练过程中,学习率按余弦函数从初始值下降到接近0,然后突然“重启”到一个较高的值(非初始值,但高于谷值)。这个过程循环多次。它的作用是让模型周期性地跳出当前的局部最优点,有机会探索到更优的参数空间,对于非凸的深度网络优化尤其有益。
  • 正则化 :除了损失函数中的分布对齐约束,我们还使用了L2权重衰减(系数1e-3)来防止过拟合。
  • 早停法 :我们监控验证集上的平均绝对误差(MAE)。如果连续多个epoch(如20个)验证损失不再下降,则停止训练,并回滚到验证损失最低的模型参数。这避免了模型在训练集上过拟合。

经过192个epoch的训练,模型在独立测试集上达到了平均绝对误差(MAE)为10.91天的性能。这意味着,模型预测的胎儿生物年龄,平均而言与真实孕周相差约11天。考虑到胎儿发育本身存在个体差异,且CTG信号受胎动、睡眠周期、母体状态等多种因素瞬时影响,这个精度在临床上是具有参考价值的。

4. 从预测值到生物标志物:CTGage-gap的临床解读

模型训练好之后,其核心产出不是一个孤立的“预测孕周”,而是由此计算出的 CTGage-gap

计算方式 :CTGage-gap = AI预测的CTGage (天) - 实际孕周 (天)

4.1 风险分层的阈值设定

如何解读这个gap值?我们基于临床经验和数据分布,设定了四个阈值(-21天, -7天, +7天, +21天),将孕妇分为五组:

CTGage-gap分组 临床含义 风险等级
< -21天 严重低估组 :AI预测年龄比实际孕周小3周以上 高风险组
-21天 ~ -7天 轻度低估组 中风险组(灰区)
-7天 ~ +7天 正常组 :预测年龄与实际孕周差异在1周内 低风险/参考组
+7天 ~ +21天 轻度高估组 中风险组(灰区)
> +21天 严重高估组 :AI预测年龄比实际孕周大3周以上 高风险组

为什么是±7天和±21天?

  • ±7天 :约1周的差异在胎儿发育中属于正常的生理波动范围。胎儿生长并非绝对匀速,短暂加速或放缓是常见的。
  • ±21天 :约3周的差异则明显超出了正常变异范围。在产科临床,3周的生长发育差异通常具有明确的病理学意义,提示需要临床医生高度重视并寻找潜在原因(如母体疾病、胎盘功能等)。

因此,我们将“严重低估组”和“严重高估组”合并定义为 “高风险组” ,作为临床筛查和干预的重点关注对象。

4.2 临床关联性分析结果

在临床评估队列中,我们严格统计了不同CTGage-gap分组中,各种不良妊娠结局的发生率,并进行统计学检验(T检验和Kruskal-Wallis H检验)。部分关键发现如下:

  1. 与胎儿不良结局的关联

    • 早产儿 :在CTGage-gap > 21天(严重高估组)的孕妇中,早产发生率为 5.33% ,显著高于正常组(-7~7天)的 1.42% 。这表明,当AI模型认为胎儿“比实际孕周老成”超过3周时,其提前分娩的风险显著增加。
    • 低出生体重儿 :在CTGage-gap < -21天(严重低估组)的孕妇中,低出生体重儿发生率为 0.17% ,虽然绝对值不高,但与正常组(0.15%)相比仍有统计学差异。这表明,发育显著偏慢的胎儿,出生体重不足的风险更高。
    • 新生儿窒息、胎儿窘迫、胎儿畸形 :这些结局也呈现出与CTGage-gap绝对值的正相关趋势,即gap的绝对值越大(无论正负),风险有升高的倾向。
  2. 与母体疾病的关联

    • 妊娠期糖尿病(GDM) :在严重高估组(gap > 21天)中,GDM的患病率高达 31.93% ,远高于正常组的20.86%。这很好理解:GDM导致母体高血糖环境,胎儿通过胎盘获取过多营养,容易生长过快、体重过大,表现为“生物年龄”超过实际孕周。
    • 贫血 :在严重低估组(gap < -21天)中,孕妇贫血患病率为 37.51% ,高于正常组的34.74%。母体贫血可能导致输送给胎儿的氧气和营养物质不足,从而限制胎儿生长,表现为“生物年龄”落后于实际孕周。

这些关联性结果强有力地证明, CTGage-gap并非一个数学游戏的结果,而是真实反映了母胎病理生理状态对胎儿发育进程的影响 。它作为一个综合性的数字生物标志物,将母体疾病(如GDM、贫血)与胎儿不良结局(如早产、低体重)通过“胎儿发育速度”这一核心桥梁联系了起来。

5. 模型可解释性:让AI的“注意力”可视化

深度学习模型常被诟病为“黑箱”。为了让临床医生信任并理解模型的决策,我们引入了基于梯度的可视化方法,来呈现模型在分析CTG信号时的“注意力”焦点。

技术原理简述 :我们计算输入CTG序列的每个时间点对最终预测输出(CTGage)的梯度。梯度绝对值的大小,反映了该时间点的数据变化对预测结果的影响程度。我们将这些梯度值进行对数压缩(增强对比度)、高斯平滑(去除噪声)和归一化,最后映射到颜色条上,覆盖在原始的CTG信号曲线上。

红色越深,代表模型在该时间段“看”得越重,认为该处的信号特征对判断胎儿“生物年龄”越关键。

5.1 可视化案例解读

我们通过几个具体病例的可视化图,来展示其临床洞察力:

  1. 新生儿窒息病例 :如图5所示(在原文中),两名最终发生新生儿窒息的孕妇,其CTGage-gap分别为-34.30和-44.75天,均属于严重低估组。在它们的CTG信号可视化中,可以观察到模型将高注意力(红色区域)集中在几次明显的胎心率减速(Deceleration)事件上。这表明,模型可能将反复出现的、不典型的减速模式,解读为胎儿储备功能下降、应激能力不足的迹象,从而给出了偏低的生物年龄预测。

  2. 早产儿病例 :如图6所示,两名早产孕妇的CTGage-gap为+31.58和+38.27天,属于严重高估组。其信号可视化显示,模型的注意力广泛分布在胎心率基线变异增高和频繁加速的区域。这可能对应着一种“高代谢”或“不稳定”的胎儿状态,模型将其解读为一种“过熟”或“耗竭”趋势,从而预测了更高的生物年龄。

  3. 动态追踪病例 :最具说服力的是图8展示的一名孕妇的连续四次CTG监测。该孕妇患有甲状腺功能减退。

    • 第一次检查(实际孕周251天):CTGage-gap为-2.22天,属正常范围。信号平稳,注意力权重均匀。
    • 后续三次检查(实际孕周268、278、282天):CTGage-gap持续恶化(-25.69, -29.19, -31.98天)。可视化清晰显示,随着孕周增加,信号中出现越来越多的减速事件和基线波动加剧的区域,模型的注意力(红色)也愈发集中和突出在这些异常片段上。
    • 最终,该孕妇因胎儿畸形选择了终止妊娠。

这个案例生动展示了CTGage-gap如何作为一个 动态风险指标 ,随着胎儿状况的恶化而同步变化。可视化则提供了“为什么”的线索,指向了具体的异常信号模式,辅助临床医生进行判读。

实操心得 :可解释性不是“锦上添花”,而是医疗AI产品能否被临床接受的“生死线”。我们的梯度可视化方法,成功地将模型的“黑箱决策”部分“白盒化”,让医生能看到AI关注的信号特征,这与他们基于经验的判读逻辑(如关注减速、变异)是吻合的,极大地增强了结果的可信度和临床可用性。

6. 项目复现与部署的考量

6.1 代码与数据获取

本研究的所有模型代码已在GitHub开源(仓库地址: PKUDigitalHealth/CTGage Gss0217/CTGage )。数据因涉及患者隐私,需向作者提出合理申请并经伦理审查后方可获得。

复现环境搭建建议:

  • 基础环境 :Python 3.8+, PyTorch 2.0+。
  • 硬件 :训练需要较强的GPU支持(如RTX 3090或A100),因为涉及大量时间序列数据和深度网络。推理阶段对算力要求较低,普通GPU甚至CPU均可。
  • 依赖库 :除PyTorch外,主要需要 numpy , pandas , scikit-learn , matplotlib 等用于数据处理和可视化的标准库。

6.2 常见问题与排查思路

  1. 问题:训练时损失不下降或波动巨大。
    • 排查 :首先检查数据标准化是否正确。确保是用训练集的均值和标准差去标准化验证集和测试集,而不是各自独立标准化。其次,检查学习率是否过高,可尝试降低学习率或使用学习率预热(Warm-up)。最后,检查数据中是否存在大量无效或异常值(如信号断点、极端值)。
  2. 问题:模型在验证集上表现良好,但在自己的新数据上预测误差很大。
    • 排查 :这是典型的 域偏移 问题。最大的可能是新数据的采集设备、参数设置(如滤波方式)、甚至孕妇人群特征(如地域、种族)与训练数据存在差异。解决方案包括:a) 收集少量新数据对模型进行微调;b) 在输入模型前,对新数据施加与训练数据完全一致的预处理流程(特别是滤波和标准化);c) 考虑使用领域自适应技术。
  3. 问题:CTGage-gap的计算结果与临床印象不符。
    • 排查 :首先确认输入的“实际孕周”是否准确可靠(最好是早期超声校正的孕周)。其次,检查CTG信号质量:是否包含足够时长(建议≥30分钟)、信号脱落是否严重、母体活动伪迹是否过多。低质量的信号会导致预测不可靠。最后,理解CTGage-gap是一个 风险提示指标 ,而非诊断金标准。应结合超声、母体情况等多方面信息综合判断。
  4. 问题:可视化注意力图一片模糊或没有重点。
    • 排查 :梯度可视化方法对输入数据的微小变化很敏感。确保在计算梯度时,模型处于 eval() 模式,并且输入数据的 requires_grad 属性已打开。另外,尝试调整高斯平滑的核大小和归一化的范围,以获得更清晰的对比度。

6.3 未来方向与局限性思考

局限性:

  1. 数据单一中心 :所有数据均来自一家顶级医院,可能存在选择偏倚。模型在不同地区、不同级别医院、不同人种中的泛化能力有待验证。
  2. 结局定义有限 :本研究涵盖的不良结局类型虽常见,但未包含更严重的围产期结局(如死胎)。CTGage-gap与这些极端结局的关联需要进一步研究。
  3. 阈值有待优化 :±21天的阈值是基于临床经验的划分,最优的截断值(cut-off point)需要通过更大规模的前瞻性队列研究来确定,以平衡敏感性和特异性。
  4. 解释性仍需深化 :当前的梯度可视化指出了“哪里重要”,但还未完全解释“为什么这个模式对应年龄偏大/偏小”。未来需要结合更多生理学知识,进行特征归因分析。

未来工作方向:

  1. 多中心验证 :与国内外多家医院合作,收集多源异构数据,验证模型的普适性,并可能开发针对不同人群的校准版本。
  2. 动态风险预测 :不仅做单次评估,而是将孕妇多次的CTG检查序列化输入,预测CTGage-gap的动态变化轨迹,实现真正的“风险趋势预警”。
  3. 轻量化与嵌入式部署 :开发精简版的模型,尝试集成到便携式或家用CTG设备中,实现实时计算和风险提示,推动居家监护。
  4. 多模态融合 :将CTG信号与超声生物测量参数、母体血清学标志物等多模态数据融合,构建更全面、更精准的胎儿健康评估模型,并深入探究CTGage-gap异常的生物学基础。

这项工作迈出了将常规CTG监测从“状态描述”推向“风险预测”的关键一步。它展示了一个清晰的路径:利用广泛存在的、低成本的临床数据,通过前沿的AI算法,挖掘出前所未有的高价值信息。CTGage-gap作为一个新型数字生物标志物,其价值在于提供了一个量化、客观且易于获取的“发育偏离度”指标,有望成为现有产前检查体系的有力补充,特别是在资源有限的场景下,为更早识别高危妊娠开辟了一条新路。

更多推荐