观潮 · 模式预报与气象 AI 观察
GraphCast 中间层解码:编解码器不是恒等映射,16 个处理块把预报由粗修到细
> AI 天气模型的潜空间是高维向量,单个维度不对应任何物理量,于是「它到底怎么算出这个预报」一直说不清。这篇的办法是把中间层的潜状态解码回气象场:借用模型自己的解码器,再为每个处理块训练一个仿射变换(translator)把中间态对齐到解码器期望的输入基。作者把它用在三个架构完全不同的模型上——GraphCast(图神经网络,16 个处理块)、Aurora(Transformer,48 个)、ArchesWeather(32 个)。结论有四条,而且三个模型一致:预报技巧随处理块逐块提升,但不同物理量收敛快慢差别很大(水汽最慢);跳过全部处理块、只用编码器—解码器,也能给出大尺度、物理上有意义的增量,说明编解码器不是一对互逆操作,本身就是第一版预报;增量随深度从大尺度推向小尺度,500 hPa 位势高度的增量幅度从约 300 降到约 40 平方毫秒每二次方秒;大尺度在整个处理过程中都满足地转平衡,中尺度要到后期层才平衡。作者也明确交代了方法的软肋:协方差对齐只是表征稳定性的旁证,可能被少数高方差方向主导。
缺的是哪一块
数据驱动的 AI 天气模型在中长期基准上已经能跟、甚至超过传统数值预报,但仍有已知短板:会出现非物理行为,预报过于平滑。这些短板怎么来的、怎么改,大多不清楚。
原因在于架构:Transformer 和图神经网络都不是从物理定律推出来的,内部状态是一个高维潜向量,与可观测物理量没有明显对应。于是模型被当成黑箱,这既影响信任,也阻碍开发。
对「模型究竟学到什么」有三种猜想:悲观的一种是它只是在训练数据见过的情况之间做统计插值;另一种是它隐式地解了已知的物理方程;更有意思的一种是它编码了一套新的物理表示,一旦读懂,可能反过来给出对大气过程的新认识。
现有的可解释性研究走两条路:一条是造本身可解释的简化模型,但简化模型缺复杂度、缺真实性;另一条是对复杂模型做事后分析(扰动法、博弈论、梯度法),但它们主要回答「哪个输入变量或区域重要」,很少直接研究潜空间、更没有做到大语言模型里那种逐神经元的机制可解释性。用稀疏自编码器在 GraphCast 里找潜特征的工作是第一步,但离「整体理解预报怎么形成」还远。
还有一个更具体的技术障碍:把中间层直接喂给解码器(大语言模型里的 logit lens 做法)未必可行。原因有两个——残差流会累积前面所有块的更新,不是零中心的,带着不断增长的偏置;而且潜空间里没有「特权基」,中间层的坐标方向与解码器期望的方向可能根本不同,某些层做的线性变换(比如旋转)要到后面才被抵消掉。信息没丢,但解码出来的东西读不懂。
方法怎么搭的
核心操作。每个处理块做的事是给潜状态加一个增量:第 i 块的输出等于第 i−1 块的状态加上这一块学到的增量。把第 i 块之后的状态取出来,经 translator 映射到解码器的输入空间,再解码,就得到「只用前 i 个块时模型能给出的最好预报」。作者把这个过程叫中间解码。
translator 是什么。一个作用在潜状态上的仿射变换,用均方误差训练,目标是逼近最终潜状态。矩阵初始化为单位阵,学习率 5×10⁻⁴,Adam,批大小 2(每批是完整的全球场)。
为什么不能简单地砍掉后面的块直接解码。除了上面说的偏置与基的问题,作者还发现:如果学一个「直接从当前状态映射到最终状态」的 translator,效果反而更差——因为这样会忽略跳连接携带的高分辨率信息。所以他们的做法是保留上采样、下采样块和跳连接,只在维度不变的阶段内做翻译。
三个模型的结构差异,决定了 translator 的设计要分开处理:
模型 · 架构 · 处理块数 · 参数量 · 训练算力 · 输入输出分辨率 · 潜状态结构
GraphCast · 图神经网络,二十面体网格 · 16 · 36.7M · 896 TPU-day · 0.25°(std/op),1°(small) · 单垂直层,网格节点 × 通道
Aurora · Transformer(3D Perceiver 编码) · 48 · 1.3B · 600 A100-day · 0.25° · 4 个垂直层,通道 512→1024
ArchesWeather-M · Transformer(卷积编码) · 32 · 89M · 5 A100-day · 1.5° · 8 个垂直层,通道 192→384
GraphCast 全程保持同一分辨率与通道维度,中间态可以直接翻译。Aurora 和 ArchesWeather 是 U-Net 式的多阶段结构,阶段之间有下采样和上采样,通道维度会变。对分辨率与最终态相同的中层,翻译是逐通道映射;对下采样过的中间态,要串两个 translator:先把状态映射到模型原生上采样块之前,过上采样块,再映射到最终潜空间。
translator 的训练数据。2020 年整年的前向推理:GraphCast 用 6 小时预报滚全年得 1462 个样本(1170 训练 / 292 验证);Aurora 同样方式得 1464 个(1172 / 292);ArchesWeather 用 24 小时预报,得 1165 个(291 验证)。所有模型都初始化为预报有效时刻落在 00、06、12、18 UTC。
先验证翻译是否有效。做法是比较不同深度的潜状态协方差矩阵,用 Frobenius 余弦相似度。不翻译时,相似度随深度间距逐渐下降,跨阶段几乎为零(下采样块会混通道)——说明相邻状态的特征表达接近,但整体基在漂。
结果
① 翻译确实能消除大部分「漂移」。加上 translator 后,协方差矩阵在深度上明显对齐。作者由此判断:不翻译时看到的大部分漂移是换基,不是特征本身变了。对齐并不完美,剩下的部分被归因于非线性变化——也就是模型在处理块里逐步把预报「造」出来。GraphCast 与 Aurora 翻译后的对齐程度接近,ArchesWeather 明显更弱,这可能与跳连接的类型和位置有关,也可能来自其他架构差异,论文没有定论。
② 预报技巧逐块提升,但各变量收敛速度差很大。翻译后的模型损失随处理块增加近似线性下降;不翻译的曲线则在高位停留一段时间后突然下落。逐变量看,水汽收敛最慢,海平面气压最快——GraphCast 到第 16 个潜状态时,水汽的相对 MSE 还在 0.2 附近,而多数其他变量已经接近零。
③ 编码器—解码器本身就是第一版预报。跳过全部处理块,只用编码器加解码器,就已经能给出大尺度、物理上有意义的增量。这一条颠覆了「编解码器只是一对互逆的压缩/解压操作」的默认假设。作者给的解释是:两个输入时次提供了时间梯度,编码解码过程中聚合的局部空间上下文提供了空间梯度,再加上所有模型都有某种空间与时间编码,节点知道自己在哪、现在是什么时刻——这些足以预测罗斯贝波、半日潮、地表温度的日循环这类重复型模态。又因为编解码器是与处理块联合训练的,它们直接参与预报,而不是只替后续阶段准备输入。
④ 由粗到细,而且幅度递减。把相邻两次中间解码相减,就得到单个处理块的贡献(增量)。GraphCast 第 1、2 块给出平滑的大尺度修正,第 14、15 块加的是细碎调整。幅度同时大幅下降:
量 · 早期处理块 · 后期处理块
500 hPa 位势高度增量 · 约 300 m² s⁻² · 约 40 m² s⁻²
10 米纬向风增量 · 约 4.7 m s⁻¹ · 约 1.3 m s⁻¹
谱分析给出同样结论:增量功率谱的重心随处理块序号单调向高波数移动。0.25° 输出的谱截断在波数 639(对齐 ERA5 的谱分辨率),1.5° 输出截断在 120。谱与谱重心都是 48 次评估运行(2020 年每月 10 日的 4 个时次)的平均。
⑤ 物理平衡也是分尺度到位的。天气尺度的地转平衡在整个处理过程中都成立;中尺度则要等到靠后的层才逐渐进入平衡。这条与「由粗到细」互为印证:大尺度先定下来,也就先把平衡关系定住了。
⑥ 模型相关的行为,能追到具体架构细节。下采样/上采样边界处表征会发生突变,这些边界同时也改变了预报收敛到最终值的速率;跳连接会影响收敛速度;Aurora 的增量场里能看到 token 尺度的细棋盘格,ArchesWeather 里是更大的块状纹理,作者推测与注意力窗口尺寸有关。
原文图

每个模型取一个代表性潜通道,上排为原始、下排为翻译后,横轴是潜状态序号(GraphCast 0→16、Aurora 0→48、ArchesWeather 0→32)。原始状态下,通道的空间型在深度上会突然换样子,说明同一个通道在不同深度对应不同特征;翻译后突变消失,图案平滑地逐层叠加细节,且从第一个潜状态起就与最终状态形态一致。

上排是模型损失随潜状态的变化:虚线为不翻译、实线为翻译后。翻译后的损失随时处理块近似线性下降;ArchesWeather 最后 4 个块(高低分辨率流拼接处)出现一次特别陡的下降。下排是各变量相对持续性预报的 MSE:水汽(绿线)收敛最慢,海平面气压最快,GraphCast 到最后一个状态时水汽仍在 0.2 附近。

2020 年 3 月 10 日 12 UTC 那次预报,GraphCast 第 1、2、14、15 个处理块的增量(相邻两次中间解码之差),范围为欧洲与北大西洋。上排 500 hPa 位势高度、下排 10 米纬向风,注意两行与四列各自的色标不同:早期块给出平滑的大尺度修正、幅度大;后期块是细碎调整、幅度小一个量级。

增量的功率谱 ℓ·P(ℓ),横轴为增量序号、纵轴为总波数(对数),上排 500 hPa 位势高度、下排 10 米纬向风。黑线是每个增量的谱重心:三条曲线都随处理块序号向高波数爬升,即从大尺度转向小尺度。ArchesWeather 的谱在 ℓ=120 处截断,对应其 1.5° 分辨率。
作者承认的限制
- 协方差对齐不能证明表征稳定。作者写得很克制:协方差对齐不是表征稳定性的确证,它可能被少数高方差方向主导,而对物理上重要但幅度不显著的 feature 不敏感。
- 方法可能有一个根本性上限。如果相隔较远的潜状态之间的相似度下降,反映的是模型在不同阶段确实表示了不同特征、且这些特征无法用仿射变换互相映射,那么中间解码这个方法就失效了。作者原话是这会是「我们方法的根本限制」,实际观察到的较高一致性只能算是个好消息,不是证明。
- 只解到物理量,不触及参数。中间解码把潜状态翻译成物理变量,但不把模型状态的演化与学到的参数联系起来——换句话说,它解释的是「什么时候给出了什么」,不是「哪组权重为什么这么算」。
- 作者自评为早期一步。原文结论段落直接写:本工作只是提升 AI 天气预报可解释性与可信度的「早期一步」。
- 部分结论依赖单一配置。GraphCast 展示了 std、op、small 三个版本,但第 3 节全部结果只用了 std;op 与 small 仅在需要多次平均的结果上跑了单日。Aurora 和 ArchesWeather 各只有一个配置。
一句话判断
这篇把「黑箱里发生了什么」拆成了一条可比较的时间线:三个架构完全不同的模型都在做同一件事——编解码器先铺大尺度、处理块逐层往小尺度修;而且编解码器本身就参与了预报,这个发现对「AI 天气模型只是统计插值」的悲观解读是一个反例;但方法本身建立在一个未被证明的前提上(中间态能用仿射变换对齐到同一套基),作者自己也没回避这一点。