观潮 · 模式预报与气象 AI 观察

体感温度算错 2.78 °C:一个神经网络把全球通用的 UTCI 近似误差压到 0.36 °C

2026-10-04

> 极端温度是全球气候相关死亡的首要原因,每年约 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 的热应激等级分类统计了近似误差。

Neural-UTCI 与 Polynomial-UTCI 的对比
Neural-UTCI 与 Polynomial-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) 的误分类率按等级给出,同时用点大小编码了被误分类样本的平均绝对误差,让"误分类有多严重"和"错了多少"两件事同时可见。

SHAP 分析学到的预测—响应关系
SHAP 分析学到的预测—响应关系

论文图 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 数字。

2003 年欧洲热浪与 2012 年欧洲寒潮中两个 UTCI 的差异
2003 年欧洲热浪与 2012 年欧洲寒潮中两个 UTCI 的差异

论文图 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 的逐点误差散点上是高值区代表(强降水、边界条件复杂的温带城市),华沙代表另一个气候区。用两个差异明显的站点做对照,比给一个全欧洲平均更能把问题说清。

2024 年两者的差异分布
2024 年两者的差异分布

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

训练数据(蓝,Grid Data)与测试数据(红,ECHAM4 Data)的输入分布对比:风速、相对湿度、水汽压上蓝线是一根根离散尖峰、红线是连续分布
训练数据(蓝,Grid Data)与测试数据(红,ECHAM4 Data)的输入分布对比:风速、相对湿度、水汽压上蓝线是一根根离散尖峰、红线是连续分布

补充图 1:网格数据与 ECHAM4 数据集的分布。网格数据(蓝)用于模型训练和验证,ECHAM4 数据(红)用于测试。子图分别展示 (a) 气温(°C)、(b) 风速(m/s)、(c) 相对湿度(%)、(d) 平均辐射温度(°C)、(e) 水汽压(kPa)以及由此得到的 Fiala-UTCI 值(°C)。纵轴为给定横轴值的密度。

这张补充图暴露了一个作者自己承认的弱点:训练数据(蓝)在风速、相对湿度、水汽压上是一根根离散尖峰,测试数据(红)是连续分布。也就是说模型是在一个比真实大气规整得多的输入分布上训练的,测试时遇到了训练时没见过的连续取值。作者在限制一节里点明了这一点。

作者给的缓解办法是把输入参数截断到训练范围(两个近似器都这么做)。这条办法能防住外推失控,但它同时也承认了一件事:模型在训练域边缘的行为是被裁剪定义的,不是学出来的。所以论文里 0.36 °C 这个 RMSE 只在训练分布覆盖的输入范围内成立,超出即失效。

作者承认的限制

一句话判断

这篇的实际贡献是把一个被整个领域当作「UTCI 本身」的六阶多项式近似,拆开、量化、并换掉:2.78 °C → 0.36 °C 的 RMSE,5.3% → 1.7% 的等级误分类,以及一个更硬的结论——用完整模式算出的 UTCI 自身 RMSE 就有 1.04 °C,所以改进近似式只能吃掉总误差的一部分,剩下的是生理模型的科学问题。

同一篇里作者写明的边界同样确定:训练数据不含输入协变、测试集无极端热应激个例、底层生理模式的个体假设与高风险人群不符、滞后效应抓不到。这些决定了它是一份精确度更高的工具,不是一份更真实的体感温度理论。

在观潮中打开(含配图与交互)→