睡眠通过捕捉大脑、心脏、肌肉和呼吸系统的协调活动,为我们提供了一个了解健康状况的夜间窗口。我们推出了 SleepFM-2,这是一个基于 26 个队列共 282,511 份多导睡眠图 (PSG) 记录(其中 235,865 份用于预训练)开发和评估的睡眠基础模型。这些数据涵盖了超过两百万小时的多模态生理数据。与 SleepFM 相比,SleepFM-2 改进了疾病预测和睡眠评分,支持觉醒、肢体运动和呼吸事件的检测,并且可以迁移到可穿戴传感设备和主观睡眠表型。将 PSG 数据与年龄、性别和 BMI 相结合的模型,在两个预留队列(包括一个在预训练期间未接触过的医疗系统)中,对随后记录的 215 种电子健康记录 (EHR) 表型达到了预先设定的区分度和显著性标准。对于其中 155 种表型,PSG 数据在人口统计学信息之外提供了可重复的信息。SleepFM-2 的性能也优于基于相同记录数据构建的包含 480 个特征的基线模型。其疾病评分揭示了一个可重复的主成分,该主成分与 sigma 频带空间耦合降低和睡眠密度熵增加相关。冻结编码器在睡眠事件专家评分者的观察范围内表现良好,并可迁移至清醒状态下的脑电图 (EEG)、头带式和耳内式脑电图 (EEG)、腕部光电容积脉搏波描记法 (PPG) 以及腕部加速度计数据。它改善了六个加速度计队列的睡眠分期,并在英国生物银行 (UK Biobank) 中实现了与直接在加速度计数据上预训练的模型相似的疾病预测性能。最后,SleepFM-2 捕捉到了传统多导睡眠图 (PSG) 总结无法恢复的主观睡眠特征,特别是对记录当晚睡眠情况的描述。这些结果表明,多模态睡眠生理学可以提供跨疾病、临床任务、传感器和主观体验的、可迁移的人类健康表征。

论文:Learning transferable human physiology from two million hours of sleep with SleepFM-2

单位:Stanford(James Zou、Emmanuel Mignot 组)联合 DTU、BrainCapture、BioSerenity 等

发布日期:2026年

Code:https://github.com/zou-group/sleepfm-v2-public
下载论文https://arxiv.org/abs/2609.06849

https://t.zsxq.com/JjFz1

请索引第127篇论文

SleepFM-2:一夜睡眠,AI 把你全身的病都"预览"了一遍

先说一句可能让你今晚睡不踏实的话:你睡着之后,身体其实在开一场"全员大会"。大脑、心脏、肌肉、呼吸系统、血氧,几百个通道同时发言,而你一无所知地躺在那里。

临床上,这场大会的记录——多导睡眠图(PSG)——长期以来被压缩成几个干巴巴的数字:睡了多久、呼吸暂停多少次、醒了几次。像一个情报部门,把一整夜的窃听记录浓缩成一句"一切正常"。

SleepFM-2 想问的问题很朴素,也很野心:一夜睡眠里,究竟有多少生理信息,是那几个常规指标根本没有抓住的?

答案是:多得有点离谱。斯坦福团队用 26 个队列、282,511 个夜晚、超过 200 万小时的多导睡眠记录预训练了新一代睡眠基础模型。然后他们做了一件很有说服力的验证:把编码器彻底冻住,只接一层薄薄的任务头,去预测 939 种疾病的未来发病、去给睡眠事件打标、去读可穿戴设备、甚至去猜"你自己觉得昨晚睡得怎么样"。

作为一名在 AI 与生物医学交叉地带混迹多年的人,我读完的第一感受是:这不只是"睡眠领域的 SOTA",它更像一份关于"如何为科学领域构建基础模型"的范本答案。数据怎么组织、消融怎么做、基线怎么设、迁移怎么验证、黑箱怎么打开,几乎每一节都能拎出来给研究生当方法论教材。

01 两百万小时是怎么攒出来的

做任何基础模型,第一件事不是选架构,是问"数据从哪来"。这篇论文在数据这一项上,几乎把能拿到的 PSG 资源全薅了一遍。

26 个 PSG 队列、282,511 个夜晚,其中 235,865 条记录进入预训练。两个关键队列刻意留在外面:Human Sleep Project 的哈佛子集(HSP)和 Sleep Heart Health Study(SHHS);UK Biobank 的腕表加速度计子研究也只用于下游评估。

这个设计值得单独说一句。医学 AI 最容易翻车的地方,是模型学到了"某某医院的特有风格"——导联习惯、设备型号、转诊人群结构——然后在一个漂亮的测试集上拿高分,换个地方就散架。作者把 HSP 完全隔离在预训练之外,等于给自己出了道最难的题:在一个从未见过的医疗系统里,你的表征还灵不灵?后面你会看到,故事最精彩的部分恰恰发生在这个"没见过"的队列上。

图 1(26 个队列的记录分配):上方为预训练语料 235,865 条,下方为仅用于评估的 HSP、SHHS、UK Biobank。BioSerenity 一家贡献 188,853 条预训练记录、200,853 条独立记录。

这张表里还藏着一个容易被忽略的细节:划分是按受试者而不是按记录做的。同一个人贡献的多个夜晚全部落在同一 split,因此没有任何测试受试者的记录泄漏进预训练。多夜数据里这一点极其关键,很多工作栽在这里而不自知。

还有个"诚实的尴尬":BioSerenity 一家占了预训练语料的八成,而它是不可共享的专有临床数据,同时也是主观睡眠分析的全部来源。作者在 limitations 里坦白了这一点。这种坦率值得点赞,也提醒我们:医学基础模型的真正瓶颈,往往不是算力,而是数据可及性

02 从 5 秒到 1 秒:SleepFM-2 到底改了什么

SleepFM-2 相对前代有四处改动,每一处都打着明确的临床痛点。

第一,token 从 5 秒缩到 1 秒。皮层觉醒、肢体运动、呼吸事件的持续时间往往短于 5 秒,用 5 秒 token 标注它们,等于用米尺量头发丝。1 秒 token 让模型第一次能同时胜任"分期 + 觉醒 + 肢体运动 + 呼吸事件"四项常规判读——SleepFM-1 只能做分期。

第二,编码器保留每个(通道,patch)的 token,不再立刻跨通道池化,于是得到三种分辨率的表征:每(通道,秒)一个 token、跨通道池化后每秒一个向量、每模态流一个汇总向量。粗活细活都能干。

第三,预训练目标从单一 leave-one-out 对比学习,扩展为"对比 + 掩码自编码(MAE)"双目标。

第四,数据量大约翻了 5 倍,架构换成 LLaMA 风格 transformer 块(RMSNorm + SwiGLU + RoPE)。

图 2(总览与预训练架构):四个模态流(脑/眼、心脏、肌肉、呼吸)各切 1 秒 patch,共享 1D CNN tokenizer,加 28 路通道-区域嵌入,55% token 被掩码,transformer 在通道×时间二维网格上联合注意力,对比通路与重建通路各占一半权重。

这里有个我认为全文最具工程美感的设计:tokenizer 跨通道共享,通道身份通过一份可加的"通道-区域嵌入"注入,而不是写死在输入层里。

为什么重要?因为它带来了"通道热插拔"能力。下游来了只有两个额区通道的头带脑电,或者手腕上的 PPG,你不需要改任何输入层权重,只要把通道映射到词汇表对应位置、其余填 PAD 掩码。这正是后面能把 PSG 表征迁移到可穿戴设备的物理基础。

顺带说个"傻瓜式"的诚实实验:在 v1 架构里加通道嵌入是没用的——因为 v1 在编码器之前就把通道池化掉了,编码器根本看不到单个通道的身份,这份嵌入只能沦为没人调用的参数,还把年龄估计 R² 拖低 0.05。只有当编码器开始跨通道联合注意力时,它才真正"活"过来。这提醒做架构设计的人:模块不是加上去就有效,它必须有能消费它的结构

图 3(超参配置):采样率统一 128 Hz,上下文 300 秒,patch 1 秒,通道词汇表 28 路;编码器宽度 128,Stage 1 两层、Stage 2 四层,8 头,编码器仅 2.57M 参数;MAE 解码器 0.96M 仅预训练用、推理时丢弃;掩码率 0.55(时间块 0.25/通道块 0.15/随机 0.15);单张 H100 训练。

整个模型只有 257 万参数——比很多图像分类 baseline 还小,却要吃下 200 万小时的多模态生理信号。这个体量本身传递了一个信号:在科学基础模型里,数据质量与归纳偏置的收益,可能远大于参数量

03 消融链:一篇教科书级的"我到底靠什么赢"

很多人发论文做消融,是"换个模块、跑个数字、写一行结论"。这篇论文的消融链值得单独拎出来讲:它把"从 v1 到 v2"拆成六个可累加台阶,每级只改一件事,且语料和 token 长度全程固定(48,093 条记录、5 秒 token),只有模型在变。

图 4(架构消融链及下游结果):(a) 原版 SleepFM-1;(b) 只换 AdamW;(c) 加通道区域嵌入;(d) 换 LLaMA 块 + 对比目标;(e) 只保留 MAE;(f) SleepFM-2 = MAE + CL。

结果读起来很有戏剧性:

• 疾病预测(七结局平均 C-index):0.752 → 0.770 → 0.772 → 0.785 → 0.743(只用 MAE 反而崩了) → 0.799

• 年龄估计 R²:0.586 → 0.643 → 0.595 → 0.675 → 0.539(MAE 最差) → 0.796

• 睡眠分期 F1:0.748 → 0.753 → 0.751 → 0.764 → 0.771(MAE 最好) → 0.771

看明白了吗?这是一幅漂亮的"局部 vs 全局"权衡图:MAE 擅长局部——重建每个被掩码的 1 秒信号块,逼模型把细粒度时间结构学扎实,所以分期最强,但对"这个人长期健康如何"最弱;对比学习擅长全局——把整夜压成模态级摘要做跨模态对齐,天然适合疾病预测与年龄估计,但在逐秒判读上吃亏。

两者合起来,不是折中,而是两头都保住:分期 0.771(与纯 MAE 持平)、疾病 0.799(比纯对比高 0.014)、年龄 0.796(比纯对比高 0.121)。

我的读法:这是自监督学习中"多粒度目标互补"的干净例证。如果你的科学问题既有"逐点标注"又有"个体级结局",别指望单一代理任务通吃,考虑设计一组在时间/空间尺度上正交的目标。

还有个容易被漏掉的工程真相:从 (a) 到 (d),编码器参数从 4.83M 掉到 2.56M,性能反而全面上升。原因是 PyTorch 的 nn.TransformerEncoderLayer 把 FFN 隐藏层硬编码为 2048,而 LLaMA 的 SwiGLU FFN 宽度随 d_model 缩放。"参数变少但变强"不是魔法,是前任架构把参数浪费在了错误的地方

04 一晚预测 939 种病:215 个命中,155 个硬过关

设计严格对齐 PheWAS 范式。两个队列——SSC 与从未参与预训练的 HSP——各有随访电子病历。表型用 PheCode v1.2 定义,筛选后得到 939 个共享表型。每个受试者的一夜 PSG 只过一次冻结编码器,切成 5 分钟块取模态级摘要;任务头用 LSTMHead,同时吃进年龄、性别、BMI。

判定标准:C-index ≥ 0.75 且 Bonferroni 校正后 P < 0.01,且在两个队列同时成立——命中 215 个表型。更严格的第二关(以年龄/性别/BMI 为零模型的 Cox 似然比检验)后剩 155 个

图 5(表型组级疾病预测):a,HSP 中按 15 个类别的逐病 C-index;b,与各类可解释基线的平均 C-index;c,逐病与"480 特征 + 人口学"的差值分布;d,三者两队列均值;e,五类分期 macro F1;f,三类事件检测与人类技师对比。

具体数字读起来有点"细思极恐":帕金森病 0.918 / 0.886、射血分数保留型心衰 0.898 / 0.865、高血压性心脏病 0.873 / 0.860、慢性肾病 III 期 0.860 / 0.808、房室传导阻滞 0.836 / 0.833、心肌梗死 0.821 / 0.818、2 型糖尿病伴神经病变 0.824 / 0.787、糖尿病视网膜病变 0.791 / 0.778、房颤 0.800 / 0.816、慢性气道阻塞 0.756 / 0.786(均为 SSC / HSP)。

图 6(155 个双队列显著 PheCode):按"相对人口学模型的平均增益"降序。表首是"激素及合成替代物治疗不良反应",随后是肾透析、心脏骤停/室颤、酸中毒、感染性休克、呼吸机依赖——高度指向失代偿、衰弱、多器官功能下降的临床状态。

看这张表请注意:增益最大的往往不是"病本身",而是"病带来的系统性生理扰动"。作者也极克制地强调:预测出随后的诊断不等于因果,不等于生物学发病起点,它可能反映共同风险因素、治疗效应,甚至未被识别的前驱期疾病。这句话值得每个做"疾病预测"的人贴在显示器上。

图 7(分疾病类别的 SleepFM-2 vs SleepFM-1 增益):15 个类别里 HSP 的增益全部大于 SSC;循环系统差距最大——HSP 中 107 个病有 83% 显著改善,SSC 仅 4%。

这个"未见过的地方赢更多"的模式,是全文最重要的经验发现之一:手工特征在拟合一个站点,而表征在拟合生理本身

05 与 480 个可解释特征的正面硬刚:赢得不多,但赢得很关键

接下来是我最欣赏的一场对照实验。作者没有拿人口学变量当稻草人,而是搭了一堵很厚的基线墙:

• 第一层:年龄、性别、BMI

• 第二层:12 个常规临床睡眠指标(TST、睡眠效率、入睡潜伏期、REM 潜伏期、WASO、觉醒指数、AHI、各期占比)

• 第三层:480 个可解释特征——频谱脑电 129、脑电微结构 84、跨信号耦合 138、心脏与自主神经 56、hypnodensity 40、呼吸 22,外加宏观指标

• 第四层:480 特征 + 人口学(Combined + demo)

所有基线都用同样的非线性头训练,避免"线性模型打不过深度模型"的不公平比较。这一点必须给满分。

结果:SleepFM-2 0.723 / 0.711;480 特征 + 人口学 0.715 / 0.689;最好单域频谱脑电 0.671 / 0.647;最差单域宏观睡眠 0.615 / 0.582。

坦白讲,在 SSC 上差距小到几乎可忽略(+0.007)。但在从未参与预训练的 HSP,差距是 +0.022,约 SSC 的三倍。原因很直白:手工特征库跨队列掉 0.026(0.715→0.689),而表征只掉 0.012(0.723→0.711)。

这就是"泛化能力"最真实的度量方式:不是看你在熟悉的地方多强,而是看你换个地方掉了多少。

说句公道话,SleepFM-2 相对 480 特征是"险胜"而非"碾压"。这恰恰是论文的诚实之处,也是最健康的状态:在睡眠生理领域,几十年领域知识被工程师提炼成的 480 个特征,已经非常接近数据驱动表征的上限。基础模型的价值更多体现在"省掉特征工程"和"跨站点不掉链子",而不是在单一队列上刷出惊人数字。

方法学启示很硬:如果你的论文只和一个弱基线比,审稿人有理由怀疑你。真正有说服力的基线,是请领域专家把他们最好的工具箱摆出来,然后你用同样的建模能力去打。

06 判读事件:AI 打分员进入"专家区间"

SleepFM-2 补齐了 PSG 判读四大任务。评估方式很讲究:不是拿模型跟"金标准"比(PSG 判读没有真正金标准),而是留一法的技师共识——每次留出一名技师,用其余技师多数投票作参考,模型与该技师在完全相同的参照系上被衡量。

• 皮层觉醒:模型 F1 0.601,九名技师平均 0.546;显著优于 3 人、劣于 1 人

• 肢体运动:模型 0.604,技师平均 0.530;显著优于 5 人、不劣于任何人

• 呼吸事件:模型 0.462,五名评分者平均 0.404;显著优于 3 人、劣于 1 人

结论是克制的:模型落在专家表现的区间内,而不是"超越人类专家"。

图 8(各队列分期表现):SleepFM-1 → SleepFM-2:SSC 0.679→0.716,MESA 0.783→0.811,MrOS 0.752→0.782,SHHS 0.775→0.803,四个队列 95% CI 两两不重叠;另有 CFS 0.818、WSC 0.813、HSP 0.772(仅评估 SleepFM-2)。

分期提升是实打实的且每个队列统计显著;SHHS 完全没参与预训练仍拿到 0.803。临床上真正的痛点,其实不是"模型能不能替代技师",而是"技师太贵、太慢、彼此不一致"。论文引用了一个关键事实:uncertainty-guided review 可在只人工复核少数 epoch 的情况下达到高一致性。这才是 SleepFM-2 在判读上最现实的落点:不是自动驾驶,是高级辅助驾驶。

07 一条"通用风险轴":所有病的预测共享一个维度

这是我认为全文学术价值最高、也最容易被误解的一节。作者问:SleepFM-2 对 939 种病各自的风险分数,彼此共享同一个信号吗?

做法:把"受试者 × 疾病"风险矩阵按年龄、性别、BMI 逐列残差化(先把人口学贡献剥掉),标准化后做 PCA。

图 9(共享生理风险轴):a,逐主成分方差解释;b,在"人口学 + 风险轴"之上再加该病自身风险分的增益;c,风险轴与六个可解释特征的偏 Spearman 相关。

结果:第一主成分解释 SSC 57.3%、HSP 58.2% 的方差,前三成分合计 81.7% / 85.4%;几乎每种病都是正载荷(98.1% / 99.1%),且该成分的受试者得分几乎等于其在全部 939 种病上标准化风险的平均值(r = 0.998 / 0.999)。模型说你风险高,往往不是"你容易得某一类病",而是"你在所有病上都高了一点"。这就是 general-risk axis(通用风险轴)。

接下来是一串我认为值得做表征研究的人抄作业的"排除性验证":

可复现:两队列逐病载荷向量相关 ρ = 0.63(95% CI 0.58–0.68)。

不完全等于共病负担:用 PSG 时点既往诊断矩阵做同样 PCA,其 PC1 与风险轴只相关 r = 0.28 / 0.44;疾病共现 PC1 只能解释风险矩阵 4.9% / 12.3% 方差,而风险轴自己的 PC1 解释 57% / 58%。所以它不是"病人本来就病得多"的同义反复

有生理对应物(调整年龄、性别、BMI、AHI,且要求两队列方向一致):一是 sigma 频段空间耦合下降(额-枕 −0.40 / −0.38,各睡眠期一致),二是睡眠"更模糊"但"不更碎"——hypnodensity 熵上升(+0.36 / +0.59),而每小时分期转换次数下降(−0.23 / −0.28)。传统"碎片化"图景是熵与转换都升高,这里看到的却是阶段边界变钝、却没有更多来回切换。作者点出:这种区分只有软分期后验才看得见,硬分期图无法表达 epoch 内的不确定性。

这些生理量能从表征里读出来:frozen embedding 上做 out-of-fold ridge 探针预测这些特征,R² 0.50–0.88;人口学探针仅 0.01–0.14;480 个特征的中位 R² 是 0.44。风险轴不是悬空的抽象量,它锚定在可独立测量的生理事实上。

疾病特异信息依然存在:在"人口学 + 风险轴"之上再加该病自己的风险分,71% / 75% 的疾病 C-index 还能再涨(+0.013 / +0.012)。表征里装的是两个互补信号——共享轴(相对人口学 +0.026 / +0.025)加上疾病特异部分。

怎么理解这条轴?作者的谨慎建议是:它可能对应"生理性衰老"或"衰弱"的潜在维度,与"睡眠年龄/生物年龄"文献相接,但明确拒绝把它等同于任何具体构念。

我的补充:这条轴其实是所有"从单一数据源预测全表型组"的模型都会遇到的结构性现象——因为预测目标本身就高度共享风险因子。不主动识别并剥离它,你以为在做"939 个独立预测",实际可能只是在做"一件事的 939 种表述"。先做 PCA,看看你的预测矩阵到底有几维,应该是这类工作的标准动作

08 模态消融:多模态不是加法,是"联合编码"

每个单模态实验都是单独一次前向传播,只放一个通道;多模态对比把每个模态各取一个通道放进同一次前向传播。所有结果都表示为"相对人口学基线的增益"。

• 没有任何单通道超过多模态联合:多模态 +0.0240(SSC)/ +0.0423(HSP),每个单模态都显著更差

• 最强单模态随站点而变:SSC 是心电(+0.0166,占 69%),HSP 是胸腹呼吸努力(+0.0241,57%),两队列排序相关性仅 Spearman ρ = 0.25

• PPG 是亮点:SSC 中 +0.0152,达多模态增益的 64%,超过所有脑电导联、仅次于心电。而 PPG 恰是极少数"PSG 里有、手表上也有"的通道

图 10(按输入模态的疾病预测):a、b 为逐模态增益;c 为融合策略对比——单次联合编码 vs 单模态风险分简单平均 vs ridge-Cox 后融合。

图 11(按疾病类别拆分的逐模态增益):领先单模态在不同类别、不同队列之间来回换,没有任何单一通道能在所有类别上稳定超过多模态编码器。

补充图 2c 有个特别有启发的结果:后期融合救不回早期融合。单模态风险分无加权平均只恢复联合编码增益的 63%(SSC)/ 38%(HSP);ridge-Cox 学这些分数组合只有 27% / 35%。

这个数字在说:多模态的价值不在"结果层投票",而在"表征层互相借力"。当心率和呼吸努力在编码器内部就被允许互相 attend,它们产生的信息不是两个独立预测器能事后拼出来的。early fusion 优于 late fusion,且差距可以量化到"你只恢复了三分之一"

09 走出睡眠实验室:清醒脑电、头带、耳电极、PPG、加速度计

设定非常严格:编码器冻结,只训练任务头;设备通道按解剖位置映射到编码器既有词汇表,无对应位置填 PAD;对照组是同架构随机初始化、端到端全量训练,两组唯一区别就是"编码器有没有被预训练过"。

图 12(迁移到可穿戴与非睡眠脑电):a,23 个非睡眠脑电数据集窗口级 AUROC;b,头带/耳脑电与腕式 PPG 分期 F1;c,六队列腕式加速度计分期 AUROC;d,UK Biobank 388 个结局平均 C-index;e,212 个 PheCode 逐病 C-index。

清醒脑电与 BCI:23 个数据集全部超过端到端点估计,平均 AUROC 增益 0.163。临床与病理检测增益最大(12 个数据集 +0.205),CHB-MIT 0.978、BrainCapture 0.945、TUH-Events 0.914,最大单数据集提升为 vEpiSet(+0.352)、BrainCapture(+0.292);认知/情感任务次之(7 个 +0.148);运动想象 BCI 最小(4 个 +0.062,作者诚实指出该组端到端基线本就强)。一个只在"睡眠中的临床 PSG"上预训练的编码器,在清醒、单模态、低通道、完全不同任务的脑电上普遍优于从零训练

可穿戴 EEG 与 PPG(macro F1):BOAS 头带 0.514→0.721;Wearanize+ 头带 0.463→0.645;EESM19 耳脑电 0.239→0.746;Wearanize+ 腕式 PPG 0.175→0.531。耳脑电那一行最戏剧——信号越差、数据越少,预训练红利越大。

腕式加速度计:最狠的一次迁移。它与 PSG 无任何共享通道,SleepFM-2 从未见过加速度信号。作者没用学生模型、也没用跨模态对齐,而是搭了一座"工程桥":0.1–0.6 Hz 带通 + 60 秒窗内相关性组合得到呼吸代理;3.5–14 Hz 带通取三轴 L2 范数、再 0.5–3.5 Hz 重滤波得到心震图代理;分别路由到 PSG 的呼吸通道与心电话道,UK Biobank 里再把三个原始轴塞进"体位"通道。

结果:六队列分期 AUROC 从 0.590–0.690 提升到 0.708–0.852,每队列高出 0.106–0.221(补充表 12)。UK Biobank 疾病预测完全照搬 Dige 等人的加速度计基础模型设定:SleepFM-2 0.687,加速度计基础模型 0.688,配对差 −0.0015(95% CI −0.0067 到 0.0033);两者等权平均后升到 0.6913(+0.0028,95% CI +0.0003 到 +0.0053)——不冗余,但增益很小

一个只在临床睡眠实验室数据上训练的模型,在腕表加速度计任务上,和"直接在 10 万人腕表数据上自监督预训练"的模型打平。作者的解释很到位:模型学到的可能不是某个通道的样子,而是跨生理系统的协变结构。加速度计测的是运动,但运动里嵌着呼吸与心跳。

迁移阶梯一览:

目标域 与 PSG 的距离 增益

清醒临床脑电 状态不同、通道同类 +0.205(病理检测)

头带/耳脑电 通道少、位置变 F1 +0.21 ~ +0.51

腕式 PPG 通道同类、场景变 F1 +0.36

腕式加速度计 无共享通道 分期 AUROC +0.106 ~ 0.221;UKB 疾病预测与领域内基础模型打平

预训练域越"富",迁移半径越大。临床 PSG 是最贵的观测点,却因此成了最好的预训练场;可穿戴设备便宜、可规模化,因此只需做"轻量读出端"。

10 你觉得自己睡得好不好,AI 也知道一点

这一节是我个人最喜欢的设计,因为它问了个非常"人"的问题。失眠与不宁腿综合征定义上就依赖主观报告,而客观 PSG 与主观感受经常对不上——这种差异本身就有临床意义(睡眠状态误感知、矛盾性失眠)。那么一个只读原始信号的模型,能不能读出"你自己觉得睡得怎样"?

数据来自 BioSerenity(74,616 名受试者:66,704 训练 / 1,295 验证 / 6,617 测试)。三类参照方法:人口学(9 特征)、常规 PSG 宏观报告(54 特征)、YASA 微结构(78 特征),及三者拼接的 Combined(141 特征)。25 个终点分六类。

图 13(25 个终点逐项 AUROC 热力表):25 个终点中 16 个达 p<0.05,12 个在 BH 校正后仍显著。注意"Objective poor sleep"行的 Combined 列只用了人口学 + 微结构——因为宏观报告对该终点构成定义泄漏。

结果呈现一个非常干净的边界:

关于"被记录的那一晚",模型明显更强。六个"昨晚问卷"条目全部第一,AUROC +0.011 到 +0.034(0.750 vs 0.725),四项校正后仍显著;复合 "Last-night poor sleep" 显著(0.774 vs 0.745,p = 0.001)。

关于"习惯性睡眠",模型基本没有额外信息。六个习惯性条目里五个最高但只有两项显著;复合 "Habitual poor sleep" 与基线几乎无差别(0.680 vs 0.677,Δ = +0.002,p = 0.82)。

这个对比太重要了:一夜 PSG 刻画的是"那一夜",而患者口中的"我平时睡不好"是长期构念,受多夜模式、心理状态、共病、环境影响;对失眠而言"慢性"本身就是诊断定义的一部分。所以 SleepFM-2 不能替代纵向睡眠记录和临床问卷——这句自我限定,是所有做"AI 预测主观状态"的人都该照抄的。

主观-客观差异本身也有信号但很弱:ΔTST AUROC 仅 0.646, ΔSOL 为 0.748;相对基线显著更好(|ΔSOL| 相对 YASA 微结构 +0.103),但绝对水平远不够独立诊断。作者定性为"表型信号存在的证据",不是"替代患者自述的工具"

两个设计细节很见功力:一是主动排除定义泄漏("Objective poor sleep"由九项 PSG 标准聚合而成,作者在这一行主动把宏观报告从基线里拿掉);二是所有基线都用非线性头——基线不是因为模型弱才输,而是输入信息本身就少了东西。

11 把黑箱撬开:概念探针、睡眠几何、SAE 与纠缠

前面十节证明"模型有用",这一节问"模型里装了什么"。这也是对 AI 研究者最有技术含量的部分。(注意:SSC 属预训练语料,所以这些分析描述表征里"有什么",而不是迁移能力。)

图 14(概念随深度涌现):五个读出深度上线性探针的编码强度。五类分期 AUROC 0.94,皮层觉醒 0.92,纺锤波、慢波、眼动 0.90–0.92,呼吸暂停较弱(0.70→0.80);所有概念都随深度更可解码。前提是:预训练从未见过这些标签。

图 15(表征组织得像睡眠生物学):五个睡眠期沿一条连续 Wake→N3 "深度轴"排列,REM 作为独立一簇偏移在外;事件落在临床预期位置——纺锤波与慢波覆盖 N2/N3,眼动落在 REM,觉醒落在较浅过渡区。连续结构与离散类别同时存在,而它完全从无标签数据里长出来。

图 16:Top-k SAE 在 E∈{1,2,4,8,16,32,64} × 七深度上训练,按五概念域归因;左三列统计覆盖率、活跃但未对齐、死亡特征;右两列区分单义与纠缠特征。

图 17:同组概念比跨组更纠缠(平均余弦 0.20 vs 0.04);睡眠内部出现预期配对(慢波与 N3 对齐 +0.90,N2 与 Wake 反对齐 −0.70);七个疾病标签彼此同向,平均余弦 0.55(房颤-心衰 +0.82,卒中-高血压 +0.79)。

最后一点与第七节呼应:疾病标签在编码器内部就已彼此高度同向——"通用风险轴"不只是下游 Cox 头拟合出的统计假象,它在表征空间里就存在。这是从编码器层面到预测层面的双重验证。作者也提醒:这里的疾病标签记录"患病与否"而非"新发",数量远少于正文 phecode,是更粗糙的一瞥。

12 把模型塞进医生的工作流:SleepFM-Interface

基础模型落地最难的一公里,往往不是模型,是界面。作者做了带 LLM 后端的交互网页:上传 PSG → 通道映射 → 冻结编码器出嵌入 → 任务头出结果 → 四标签页(summary / details / recording / report),医生可随时查看、覆盖、要求解释、生成报告草稿。

图 18:a,宏观睡眠总结、参考范围对照、逐病风险分、主观体验预测,全部来自同一个冻结嵌入;b,整夜睡眠图叠加模型推断的觉醒、肢体运动与呼吸事件,医生可筛选核查。

图 19:把摘要背后的每一项测量全部暴露——睡眠连续性、结构、呼吸、血氧、心脏指标,右侧助手可解释、重查或导出。

图 20:助手起草研究报告,按临床文档排版,印象与建议完全可编辑,医生修改后签字才出界面。

两个细节值得注意:一是刻意设计的"人在回路"——不追求自动签发报告,而把可核查、可覆盖、可编辑作为一等公民,这与睡眠医学界"AI 应增强而非取代临床监督"的共识一致;二是明确的边界声明——截图用公开去标识的 CAP Sleep Database 样本,工具定性为 research software,未做临床验证,也没有做过读者研究、可用性研究或工作流研究。很多医疗 AI 论文会悄悄把演示界面暗示成临床产品,这里没有。

还有个我很欣赏的细节:摘要页把每病分数渲染成百分比,但方法里明确说这些是未校准的相对分,不是校准后的绝对风险。连自己界面上的数字都不放过,这种严谨是我愿意把这篇论文推荐给学生的原因之一。

13 批判性阅读:这篇论文没说的、做不到的

第一,215 个疾病预测不等于 215 个可用临床预测器。C-index ≥ 0.75 是区分度,不是校准度,更不是临床效用。在做到前瞻性研究、校准、绝对风险、决策曲线分析、与既有风险工具对比之前,"一夜睡眠预测帕金森病 C=0.918"是一个科学发现,不是产品指标

第二,人群偏倚未系统评估。SSC 与 HSP 都是因疑似睡眠障碍被转诊做实验室 PSG 的人群;论文承认没有全面评估人口学与社会经济亚组差异。当这套表征通过可穿戴设备走向普通人群,这个缺口会变得关键。

第三,"通用风险轴"的含义仍然开放。它可被解读为生理衰老、衰弱或多病前驱态,但也可能部分反映医疗接触频率、编码行为、治疗效应等非生理因素。两队列复现(ρ = 0.63)是强证据,但两队列都是转诊人群,共享的选择偏倚不会被这个相关性排除。

第四,可穿戴迁移的证据强度不均衡。清醒脑电 23 个数据集只跑了单个随机种子(作者明说是点估计而非种子层面检验);加速度计疾病预测只用了 UK Biobank 一个队列;可穿戴 EEG/PPG 是研究级部署而非消费级设备。这些都在 limitations 里写清楚了,但传播中很容易被读成"手表已经能预测疾病了"。

第五,数据可及性存在结构性限制。预训练语料八成不可共享,主观睡眠分析也全部来自它。方法开源、数据部分开放是常态,但也意味着独立复现这篇论文的"完全版本"是不可能的

第六,一个方法学小提醒。Cox 似然比检验用的 PSG-only 头与报告的 with-demographics 头是两个不同的头;minibatch 内偏似然只是拟合头的近似(论文报告的量都在完整数据上重算)。处理合理且透明,但复现时别照着"默认配置"想当然。

14 给 AI+交叉学科研究者的八条方法学启发

第一,把"泛化"设计进实验,而不是事后补救。留出整个医疗系统、整个传感器家族、整个状态作为评估域,是这篇论文最有说服力的设计。你的课题里那个"从未见过的 X"是什么?找不到,你的结论适用范围就可疑。

第二,基线要做到"让领域专家挑不出刺"。480 个可解释特征、非线性头、同样划分、超参在 pilot 上选一次全程固定——这些细节决定了"险胜"是否可信。靠弱基线取胜不是胜利,是幻觉。

第三,用消融链而不是消融表。每级只改一件事、语料与 token 固定、参数量也报出来;更妙的是报告"某模块在错误位置上会失效"。负面结果同样是知识。

第四,警惕"多目标不是折中而是互补"。MAE 管局部、对比管全局。设计自监督目标时问自己:我的几个目标在"尺度"上互补吗?在同一尺度上竞争的目标加起来多半只是平均。

第五,早期融合与后期融合的差距可以量化。这里的答案是"后期融合只能恢复 38%–63%"。如果你的多模态工作只有 late fusion 基线,你并没有真正证明多模态的价值。

第六,先查你的预测矩阵有几维。做全表型组预测前先做残差化 + PCA。若第一主成分吃掉一半以上方差,你的"N 个预测"可能是"一个预测"。识别它、报告它,再看超出它之外的增量

第七,机械可解释性可以进科学领域,而且应该在。"概念探针 → 几何结构 → SAE 分类 → 方向纠缠"这四步几乎可原样搬到任何科学基础模型上。它不会立刻给你答案,但会把"表征里有什么"从玄学变成可测量的量。

第八,把"做不到"写进论文。一夜 PSG 能读当晚主观体验,读不出习惯性失眠;风险轴存在但含义开放;界面很酷但没做过可用性研究。这些自我限定不削弱论文,反而构成可信度。在 AI+科学这个信任稀缺的领域,克制的表达是一种增值资产。

14 结语:一夜睡眠,是一个人的"全身快照"

长期以来,睡眠医学把一夜记录压缩成几个指标,是因为人类只能处理几个指标。SleepFM-2 做的事,本质上是把被压缩掉的信息重新展开

它的答案包括:能预测 215 种疾病的发病;能像技师一样标注觉醒、肢体运动和呼吸事件;能在从未见过的医疗系统里不掉链子;能迁移到头带、耳电极、PPG,甚至一个与 PSG 毫无共同通道的腕式加速度计;能读出"你觉得自己睡得好不好"的一部分;以及——最让我印象深刻的——它的表征空间里,五个睡眠期排成一条从 Wake 到 N3 的连续轴,REM 偏在一旁,而纺锤波、慢波、眼动、觉醒各自落在教科书告诉我们的位置上。

一个从未见过任何睡眠标签的模型,自己画出了睡眠医学的教科书插图。

这大概就是"科学基础模型"最迷人的地方:它不是在替我们回答已有的问题,而是在用一种我们没设计过的方式,重新组织我们对世界的描述。至于这种组织方式能不能变成临床获益——那还需要前瞻性研究、校准、决策曲线,以及一批愿意把模型放进真实工作流的医生。

道路还长。但这一夜,确实睡得有价值。


微信群

内容中包含的图片若涉及版权问题,请及时与我们联系删除