观潮 · 模式预报与气象 AI 观察
体感温度算错 2.78 °C:一个神经网络把全球通用的 UTCI 近似误差压到 0.36 °C
> 极端温度是全球气候相关死亡的首要原因,每年约 500 万超额死亡。UTCI(通用热气候指数)是目前最成熟、应用最广的体感温度指标之一,但它在业务中实际使用的从来不是完整生理模型,而是 2012 年 Bröde 等人给出的一个六阶多项式近似(本文称 Polynomial-UTCI)。这个近似在极端条件下泛化很差:作者给出的数字是相对完整模型的 RMSE 从 2.78 °C 降到 0.36 °C(改善 87%),热应激等级误分类率从 5.3% 降到 1.7%。落到实际影响上,2003 年欧洲热浪期间罗马的「很强热应激日」从 15 天变成 35 天。这不是精度洁癖,而是因为很多研究把近似式当成了 UTCI 本身。
缺的是哪一块
作者先指出一个术语混用的根源。UTCI 是一个过程模型:用 Fiala 多节点生理模型耦合一个服装模型(作者合称 Fiala-UTCI),输入四个气象量——气温、湿度、风速、平均辐射温度,输出等效热应激响应。Fiala 模型计算量大,而且是 Ergonsim 公司的付费专有软件,完整模型不公开。所以业务里 UTCI 一律用那个六阶多项式近似来算。
问题在于,RayMan、BioKlima 2.6、pythermalcomfort、thermofeel、官方 UTCI FORTRAN 计算器,内部用的都是多项式版而不是完整模型。作者说科学和预报文献普遍把「近似式」和「Fiala-UTCI 本身」混为一谈,而这个区别是有后果的。
已有文献承认的误差只有一个区间:风速超过 17 m/s 时指标被视为超出适用域,因为此时多项式版对完整模型的 RMSE 是 9.0 °C。作者说其余输入范围内的误差很少被承认——文献普遍假定 UTCI 预报的技巧只由预报系统决定,忽略近似式带来的不可忽略误差。而实际报导是:即便在远低于 17 m/s 的中等风速和凉爽温度下,也有环境与健康研究 find UTCI 预测人体热响应很差,只是文献把这归因于个体差异偏差(bias towards individuals)。这一句是本文要推翻的归因方向。
还有一层时序问题。机器学习已被用来改进 UTCI 的降尺度、后处理、局地提前预警,但这些研究都仍然用多项式版做初始计算,有的模型甚至直接训练在 ERA5-HEAT 上(即多项式版的全球产品)。
方法怎么搭的
作者的训练数据只能是 Bröde 等人随多项式版一起发布的那批 Fiala-UTCI 模拟结果,并明确写成一条限定:这是唯一可用的参考数据集,无法生成新的 Fiala-UTCI 数据,因为模型是专有的。
项 · 说明
训练数据 · ESM4「Grid data」,104,643 次 Fiala-UTCI 模拟,按输入域增量采样
测试数据 · ECHAM4 独立数据集,1,000 个随机气象条件,取自 ECHAM4 模式 1971–1980 控制试验
实况对比 · ERA5 小时单层数据,0.25° 分辨率,用 ERA5-HEAT 的平均辐射温度做输入
参照 · ERA5-HEAT 的 UTCI 即在同源 ERA5 输入上评估多项式版
输出 · 开源 Python 包,CPU 成本与多项式版相当,GPU 上批量计算快 33 倍
UTCI 的计算是相对 2 米气温的一个偏移量,四个输入为平均辐射温度(°C)、10 米风速(m/s)、相对湿度(%)。参考条件是风速 0.5 m/s、相对湿度 50%、平均辐射温度等于气温,假定步行速度 4 km/h、代谢产热 135。生理响应按 17 项生理指标判定,生理响应与参考条件相当的环境条件被赋予对应的等效气温,等效性用主成分分析确定。热应激等级按生理症状出现划分。
结果数字
指标 · Polynomial-UTCI · Neural-UTCI
相对完整模型的 RMSE · 2.78 °C(IQR 2.53–2.99) · **0.36 °C**(IQR 0.35–0.38)
热应激等级误分类率 · 5.3% · **1.7%**
误差落在 ±2 °C 内的比例 · 84%(即 16% 超出) · **全部**
误差落在 ±0.5 °C 内的比例 · 38% · **90%**
高风速(17 m/s)下 RMSE · 9.03 °C(IQR 8.82–9.26),单例超 20 °C · **0.89 °C**(IQR 0.86–0.91)
GPU 批量计算 · 基线 · 快 33 倍(取决于批量大小和 GPU 规格)
作者对误差结构做了一句关键判断:近似误差是多项式版总误差的主导来源,但对 Neural-UTCI 不是。相对于 Fiala-UTCI 自身 1.04 °C 的 RMSE,Neural-UTCI 的 0.36 °C 只占总业务误差的 19%,而多项式版让预期总误差增加 132%。
这一句把「换掉近似式」这件事的收益上限说清了。完整模型自己就有 1.04 °C 的相对误差(这里指的是 Fiala-UTCI 相对更完整生理参考的偏差),神经网络近似再准,也只能在 1.04 °C 的地基上省下有限的一部分。所以这篇的贡献是拆掉了一个本不该存在的那一层误差,而不是把体感温度算得更准——后者取决于生理模型本身。
业务影响那一层,作者指出多项式版在 2024 年全球 UTCI 估计上引入了系统性的、有空间结构的误差,从而改变了全球热应激暴露的估计;具体落到罗马的例子是 2003 年热浪的很强热应激日 15 天变 35 天。
作者还提出 Neural-UTCI 能可靠地分类极端冷应激,因此可以连续地做全球应用——这是多项式版做不到的。
按热应激等级看:改进集中在最关键的区间
整体 RMSE 只是一半结论,另一半要看改进落在哪里。作者按 Fiala-UTCI 的热应激等级分类统计了近似误差。

论文图 1:两个近似模型在 Fiala-UTCI 测试数据集上的表现。(a-b) 多项式模型与神经网络模型相对 Fiala-UTCI 的逼近误差(近似器减 Fiala-UTCI,带黑边的标记表示风速超过 17 m/s)。(c) 模型均方根误差与 (d) 平均误差(定义见补充方法 S1)在风速小于 17 m/s、大于 17 m/s 和全风速范围三种情况下的对比。(e) 两个近似器的累积误差分布。竖直虚线及标注给出绝对误差低于 0.5、1.0 和 2.0 °C 的数据集百分比。

论文图 2:按热应激等级的 UTCI 逼近误差。(a) 在风速低于 17 m/s 时神经网络相对多项式模型的逼近改进,改进定义为绝对误差的减少量;紫线是 LOESS 拟合(span = 0.4),点按 Fiala-UTCI 热应激等级着色(分类定义见补充方法 S1)。(b) 使用神经网络和多项式两个近似器时的热应激误分类率。浅红扇区表示热应激类别,浅蓝扇区表示冷应激类别;扇区标注包含每个类别中的观测数 n,点到中心的距离表示该类别的误分类率,点的大小表示被误分类样本的平均绝对逼近误差(°C)。
这张图回答了一个关键问题:多项式式的误差不是均匀分布的,而是系统性地压在最需要准确的那几个等级上。 图 (a) 显示神经网络相对多项式的改进量随热应激等级变化,不同等级的改进幅度差别很大——这意味着整体 RMSE 从 2.78 降到 0.36 °C 这件事,在等级判别上的意义比数字本身更大。图 (b) 的误分类率按等级给出,同时用点大小编码了被误分类样本的平均绝对误差,让"误分类有多严重"和"错了多少"两件事同时可见。

论文图 3:用 SHAP(Shapley Additive ExPlanations)分析得到的多项式与神经网络 UTCI 近似模型中学到的预测—响应关系。(a-b) 全局特征重要性与作用方向,每个预测因子的重要性排序排列,横向位置表示边际贡献。图中给出 UTCI 偏移(°C)与气温(°C)、风速(m/s)、平均辐射温度(°C)和相对湿度(%)之间的关系。SHAP 值为正表示增大该变量对预测有正向作用,反之为负。这里只显示 SHAP 值的符号(两个模型之间的幅值不可比较)。(c-d) 相对湿度对 UTCCI 输出的 SHAP 依赖图。(e-f) 与 (c-d) 相同,但对应风速。(g-h) 与 (c-d) 相同,但对应平均辐射温度减气温。
SHAP 分析是这个工作里最实用的一部分,因为它把"神经网络学到了什么"变成可以检查的东西。论文同时给出两个模型的全局特征重要性和作用方向,让"神经网络是否学到了物理上合理的敏感性"变成一个可核对的问题——而不是只能看 RMSE 数字。

论文图 4:Neural-UTCI 与 Polynomial-UTCI 预测的 UTCI 差异,分别针对 2003 年欧洲热浪和 2012 年欧洲寒潮。(a-b) 2003 年 6 月 1 日至 9 月 1 日和 2012 年 1 月 1 日至 3 月 1 日两个近似之间逐格点的逐小时 UTCI 平均差异。星号标出意大利罗马和波兰华沙。(c-d) 同一时期的平均每日热应激暴露时数差异,按白天 UTCI > 32 °C(热应激)与 < −13 °C(冷应激)计算。(e-f) 罗马与华沙的逐日最大 (e) 与最小 (f) UTCI,来自 Neural-UTCI(红)与 Polynomial-UTCI(蓝)。水平虚线标出'中等'、'强'和'很强'热应激类别的 UTCI 阈值——热应激按升序(e 面板),冷应激按降序(f 面板)。
这张图把前面所有误差统计翻译成了决策层面的后果。罗马在 2003 年热浪期间,"很强热应激日"从 15 天变成 35 天——这不是一次误差统计,而是同一份观测数据下,两个近似式给出的公共卫生预警天数差了一倍多。面板 (c)(d) 用暴露时数呈现同样的问题,面板 (e)(f) 加上类别阈值线,让"这个差异会不会改变类别判定"可以直接读出来。
图里还标出了罗马与华沙两个具体位置,这个选择有讲究:罗马在图 1 的逐点误差散点上是高值区代表(强降水、边界条件复杂的温带城市),华沙代表另一个气候区。用两个差异明显的站点做对照,比给一个全欧洲平均更能把问题说清。

论文图 5:2024 年 Neural-UTCI 与 Polynomial-UTCI 预测 UTCI 的差异。(a) 差异的平均值与 (b) 标准差,使用 2024 年逐小时 ERA5 数据。差异图的 (c) 低于很强冷应激阈值的小时数与 (d) 高于很强热应激阈值的小时数,逐格点统计。密度图 (e) 极端寒冷与 (f) 极端高温下小时数百分差异的分布,直方图密度表示具有给定百分应力小时差异的格点数量,竖直点线表示中位差异。

补充图 1:网格数据与 ECHAM4 数据集的分布。网格数据(蓝)用于模型训练和验证,ECHAM4 数据(红)用于测试。子图分别展示 (a) 气温(°C)、(b) 风速(m/s)、(c) 相对湿度(%)、(d) 平均辐射温度(°C)、(e) 水汽压(kPa)以及由此得到的 Fiala-UTCI 值(°C)。纵轴为给定横轴值的密度。
这张补充图暴露了一个作者自己承认的弱点:训练数据(蓝)在风速、相对湿度、水汽压上是一根根离散尖峰,测试数据(红)是连续分布。也就是说模型是在一个比真实大气规整得多的输入分布上训练的,测试时遇到了训练时没见过的连续取值。作者在限制一节里点明了这一点。
作者给的缓解办法是把输入参数截断到训练范围(两个近似器都这么做)。这条办法能防住外推失控,但它同时也承认了一件事:模型在训练域边缘的行为是被裁剪定义的,不是学出来的。所以论文里 0.36 °C 这个 RMSE 只在训练分布覆盖的输入范围内成立,超出即失效。
作者承认的限制
- 精度上限由底层模式决定。原文:Neural-UTCI 只能和底层模式本身一样准。修正近似式并不修正 Fiala-UTCI 的科学假设。
- 训练数据不包含输入之间的典型相关性。作者明确指出 Bröde 等人 2012 年发布的训练数据没有捕捉实际环境中常见的输入条件协变关系,这会影响两个近似器的建模统计关系。换句话说,Neural-UTCI 学的是一个比真实大气更规整的输入分布。
- 测试数据里没有极端热应激个例,因为它取自 1971–1980 年的地球系统模式控制试验。也就是说,论文最关心的极端场景恰恰不在测试集里。
- Fiala-UTCI 本身有已知缺陷。它不考虑健康状况、年龄、体重、活动水平、适应状态这些个体特征,也不管文化差异导致的穿衣习惯和人群对本地气候的适应(所以才有人提出对 UTCI 做局地订正)。模型算的是「平均个体」,假定体重 73.4 kg、体脂 14%——作者说这很可能与热害高风险人群的生理状况相当不同。
- 不考虑热条件的滞后效应。作者引用的证据是:在巴西两个城市中,解释模型预测与问卷观测之间热感觉差异比例最高的因子,是前三天的历史天气信息。UTCI 用的是瞬时场,结构上就抓不到这个。
- 超出输入范围时两个近似器都不准,而这与 Neural-UTCI 的训练范围相同。缓解办法是把输入参数截断到训练范围(两个近似器都这么做)。作者指出两者在高风速和高湿度处表现最差,原因是训练网格在这些区间采样更稀疏。
一句话判断
这篇的实际贡献是把一个被整个领域当作「UTCI 本身」的六阶多项式近似,拆开、量化、并换掉:2.78 °C → 0.36 °C 的 RMSE,5.3% → 1.7% 的等级误分类,以及一个更硬的结论——用完整模式算出的 UTCI 自身 RMSE 就有 1.04 °C,所以改进近似式只能吃掉总误差的一部分,剩下的是生理模型的科学问题。
同一篇里作者写明的边界同样确定:训练数据不含输入协变、测试集无极端热应激个例、底层生理模式的个体假设与高风险人群不符、滞后效应抓不到。这些决定了它是一份精确度更高的工具,不是一份更真实的体感温度理论。