想象你在海边小镇开了一家民宿,客人问你:“老板,十天后能出海吗?”你没法抬头看天就回答。小镇气象站没有水晶球,却有一位特别的气象邮差——他不在出发时写下一封“十天后的信”,而是每 6 小时往相邻村庄传一次口信:温度、风、气压、湿度,一棒接一棒。40 棒之后,口信就变成了第十天的天气草图。这位邮差就是 GraphCast。它不看星象、不背物理公式,而是靠学习过去 50 年全球天气“复盘档案”,学会如何把此刻的天气接力下去。这篇文章会陪你拆开邮差的背包:他如何认识地球这张大棋盘、如何与邻居交换消息、如何一棒一棒跑完 10 天,以及他跑得快、跑得准,却也有不敢说“我不确定”的时候。

岗位关联

掌握 GraphCast 的 10 天预测原理,等于把深度学习时代最前沿的“AI for Science”解码器装进工具箱,能帮你在气象、能源、防灾等场景中更早、更稳地做出决策。

目录
  1. 可视化演示
  2. 气象预测为何难
  3. 球面图建模
  4. 消息传递机制
  5. 编码解码架构
  6. 自回归推演
  7. 精度与性能
  8. 优化与局限
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示预测精度衰减、自回归误差累积及变量级评估的三模态交互动画。

本节配有交互动效(进入视口后自动加载,约 3KB)。

预测精度衰减 GraphCast IFS ACC=f(day) 十天预测精度随时间递减GraphCast在90%变量上优于传统IFS模式

气象预测为何难

十天后能否出海,难在哪儿?大气不是一个房间里的温度计,而是覆盖全球、横跨几十公里高空、由无数气团组成的复杂流体。任何一次观测都只是给地球拍了一张不完整的快照。更要命的是,初始状态差一点点,几天后的天气轨迹就可能差出十万八千里,这就像气象邮差在分岔路口接到的口信稍微模糊一点,后面每个村子听到的版本都不一样。

从数学上看,天气预报可以理解为从“当前全球天气状态”到“未来某时刻天气状态”的一个映射。天气状态不是单个数字,而是一个巨大的高维张量:经纬度网格数、垂直层数、气象变量数三者相乘,才构成完整的天气全貌。传统数值模式用物理方程把这个映射一步一步算出来,而 GraphCast 想用神经网络直接学出这个映射。

x^t+h=f(xt)\displaystyle \hat{\mathbf{x}}_{t + h} = f(\mathbf{x}_{t})

xt∈RV×L×P,x^t+h=f(xt,xt−Δt;θ)\displaystyle \mathbf{x}_{t} \in \mathbb{R}^{V \times L \times P}, \qquad\hat{\mathbf{x}}_{t + h} = f(\mathbf{x}_{t}, \mathbf{x}_{t - \Delta t}; \theta)
这条式子是说:此刻的世界天气预报状态由一个超高维向量描述,预测未来时刻,需要拿“当前状态”和“上一时刻的状态”一起送入一个带参数 $\theta$ 的模型。
  1. 全局天气状态$\mathbf{x}_{t}$ 表示 $t$ 时刻的全球天气状态,它是所有网格点、所有高度层、所有气象变量的总装。
    xt\displaystyle \mathbf{x}_{t}
  2. 维度乘积$V \times L \times P$ 分别代表网格点数、大气垂直层数、气象变量数,三者相乘得到状态向量的总维度。
    RV×L×P\displaystyle \mathbb{R}^{V \times L \times P}
  3. 预测映射$\hat{\mathbf{x}}_{t + h}$ 是模型对 $t+h$ 时刻天气的估计,$f$ 是学出来的预测函数。

球面图建模

\displaystyle G = (\mathcal{V}, \mathcal{E}), \qquad

\mathbf{A}_{ij} = \begin{cases} 1, & v_j \in \mathcal{N}(v_i) \\ 0, & \text{otherwise} \end{cases}

> 图结构用邻接矩阵记录每个节点的邻居关系。第 $i$ 个村庄和第 $j$ 个村庄相邻,矩阵对应位置就记为 1,否则记为 0。1. 图的定义:$G = (\mathcal{V}, \mathcal{E})$ 表示一张图由节点集合 $\mathcal{V}$ 和边集合 $\mathcal{E}$ 组成。$$\displaystyle G = (\mathcal{V}, \mathcal{E})$$2. 节点集合:$\mathcal{V}$ 中的每个节点代表一个网格社区,携带当地温度、气压、风速等信息。$$\displaystyle \mathcal{V} = \{v_1, v_2, \dots, v_N\}$$3. 边集合:$\mathcal{E}$ 中的每条边代表两个节点之间可以传递消息,近似模拟空气在空间的连续相互作用。$$\displaystyle \mathcal{E} = \{(v_i, v_j)\}$$4. 邻接矩阵:$\mathbf{A}_{ij}$ 用 0/1 标记 $v_j$ 是否为 $v_i$ 的邻居,是多尺度图被计算机读懂的“通讯录”。$$\displaystyle \mathbf{A}_{ij} = \begin{cases} 1, & v_j \in \mathcal{N}(v_i) \\ 0, & \text{otherwise} \end{cases}$$有了这张全球村际通讯录,GraphCast 才开始真正工作。但邮差不能只是机械地传话,它还需要判断哪些口信重要、哪些扰动该忽略,这就是图神经网络中消息传递要做的事。

消息传递机制

想象一个小村庄收到四邻传来的口信:东边送来一阵暖风,西边报来一片阴云,南边提醒气压下降,北边说湿度升高。村民不会直接把四条口信原封不动再传给下一个村子,而是先在心里汇总,再结合自己的状态,生成一条新口信。图神经网络的消息传递,就是把这个过程数学化。

每个节点先让邻居生成“消息”,再把所有邻居的消息聚合起来,最后更新自己的隐藏状态。这个过程可以重复很多层。一层消息传递只传到邻居,两层就能传到“邻居的邻居”。几十层之后,某个遥远大洋上的天气扰动,就能绕着地球传到你的海边小镇。

消息传递让 GraphCast 不用等着全球数据一次到位,而是像水波一样一圈一圈扩散信息。可要让不同村庄能交换消息,GraphCast 还必须先把五花八门的天气观测统一成“标准信封”。

hu(l+1)=ϕ(hu(l),⨁v∈N(u)ψ(hu(l),hv(l),euv))\displaystyle \mathbf{h}_u^{(l+1)} = \phi\left( \mathbf{h}_u^{(l)}, \bigoplus_{v \in \mathcal{N}(u)} \psi\left( \mathbf{h}_u^{(l)}, \mathbf{h}_v^{(l)}, \mathbf{e}_{uv} \right) \right)
这条式子描述一个节点如何从上一层状态变成下一层状态:先让邻居生成消息,再聚合,最后更新自己。
  1. 隐藏状态$\mathbf{h}_u^{(l)}$ 是节点 $u$ 在第 $l$ 层消息传递后携带的信息状态,相当于村民手中的“当前口信”。
    hu(l)\displaystyle \mathbf{h}_u^{(l)}
  2. 邻居集合$\mathcal{N}(u)$ 是与节点 $u$ 相邻的节点集合,只允许本村和邻村直接通信。
    v∈N(u)\displaystyle v \in \mathcal{N}(u)
  3. 消息函数$\psi$ 根据中心节点 $u$、邻居 $v$、边特征 $\mathbf{e}_{uv}$ 生成一条消息,决定“这段口信该怎么包装”。
    ψ(hu(l),hv(l),euv)\displaystyle \psi\left( \mathbf{h}_u^{(l)}, \mathbf{h}_v^{(l)}, \mathbf{e}_{uv} \right)
  4. 聚合运算$\bigoplus$ 把所有邻居的消息汇成一个总体信号,常见做法是求和或取平均。
    ⨁v∈N(u)ψ(⋅)\displaystyle \bigoplus_{v \in \mathcal{N}(u)} \psi(\cdot)
  5. 更新函数$\phi$ 把聚合结果与节点自身状态融合,得到新一轮隐藏状态 $\mathbf{h}_u^{(l+1)}$。
    hu(l+1)=ϕ(⋅)\displaystyle \mathbf{h}_u^{(l+1)} = \phi(\cdot)

编码解码架构

海边小镇用摄氏度,内陆城市用百帕,高空气流用米每秒。如果邮差不先做翻译,这些数字根本无法放在一起比较。GraphCast 的第一步是编码:把温度、气压、风速、湿度等输入变量转换成统一维度的隐藏向量。这一步通常在“编码器”中完成。

编码之后,所有节点的隐藏向量进入“处理器”,也就是多层图神经网络,在图上反复进行消息传递。处理完成后,“解码器”再把抽象的隐藏向量翻译回人类能读懂的气象变量。GraphCast 在训练时,会拿历史真实天气当标准答案,计算预测结果和标准答案之间的误差,然后反向调整模型参数。

1∣B∣∑i∈B\displaystyle \frac{1}{|\mathcal{B}|}\sum_{i \in \mathcal{B}}

L=1∣B∣∑i∈B∑j=1J(y^i,j−yi,j)2σj2\displaystyle \mathcal{L} = \frac{1}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \sum_{j=1}^{J} \frac{\left(\hat{y}_{i,j} - y_{i,j}\right)^2}{\sigma_j^2}
损失函数相当于邮差训练时收到的“差评单”:预测值和真实值差得越远,扣分越多;不同变量的评分还会按各自自然波动幅度归一化,避免风速因为数字大就主导训练。
  1. 预测误差$\hat{y}_{i,j} - y_{i,j}$ 是第 $i$ 个样本、第 $j$ 个变量的预测值与真实值之差。
    y^i,j−yi,j\displaystyle \hat{y}_{i,j} - y_{i,j}
  2. 平方惩罚$( \cdot )^2$ 对误差取平方,让大误差受到更重的惩罚。
    (y^i,j−yi,j)2\displaystyle \left(\hat{y}_{i,j} - y_{i,j}\right)^2
  3. 方差归一化除以 $\sigma_j^2$ 是为了把不同物理量放到同一把尺子上,单位不同也能公平比较。
    (⋅)σj2\displaystyle \frac{( \cdot )}{\sigma_j^2}
  4. 批量平均$\frac{1}{|\mathcal{B}|}\sum_{i \in \mathcal{B}}$ 表示在一个训练批次中取平均,让模型不是只记住某一天,而是学会普遍规律。

自回归推演

\displaystyle \hat{\mathbf{x}}_{t+6h} = f_\theta(\mathbf{x}_t, \mathbf{x}_{t-6h}), \qquad

\hat{\mathbf{x}}_{t+12h} = f_\theta(\hat{\mathbf{x}}_{t+6h}, \mathbf{x}_t)

> 6 小时预测的模型,用自己上一棒的结果继续预测下一棒,这就是“自回归滚动推演”。每一棒都在地面上跑步,而不是靠火箭直接跳到终点。1. 第一棒输入:$\mathbf{x}_t$ 和 $\mathbf{x}_{t-6h}$ 分别代表当前状态和上一时刻状态,二者一起告诉模型天气正在如何变化。$$\displaystyle \mathbf{x}_t, \quad \mathbf{x}_{t-6h}$$2. 学习到的模型:$f_\theta$ 是带参数 $\theta$ 的 GraphCast 模型,已经学会把两个连续状态映射成下一状态。$$\displaystyle f_\theta(\cdot)$$3. 第一步预测:$\hat{\mathbf{x}}_{t+6h}$ 是模型自己生成的、6 小时后的天气状态。$$\displaystyle \hat{\mathbf{x}}_{t+6h} = f_\theta(\mathbf{x}_t, \mathbf{x}_{t-6h})$$4. 滚动递推:$\hat{\mathbf{x}}_{t+12h}$ 使用的是“自己上一棒预测出的状态”作为新输入,这就是误差也会跟着接力下去的来源。$$\displaystyle \hat{\mathbf{x}}_{t+12h} = f_\theta(\hat{\mathbf{x}}_{t+6h}, \mathbf{x}_t)$$自回归的优势是模型只需要学会短期预测,结构简单;风险也显而易见:每一棒的小误差都会传给下一棒,10 天后误差可能被放大。GraphCast 的训练和推理都考虑了这种滚动过程,力求让误差增长尽量缓慢。

精度与性能

这位气象邮差跑完 40 棒,结果到底准不准?DeepMind 团队用欧洲中期天气预报中心 ECMWF 的 ERA5 再分析数据训练 GraphCast,再把它和 ECMWF 高精度业务模式 HRES 放在同一张考卷上比较。考卷上有 2760 个验证目标,覆盖不同气象变量、不同气压层、不同地区、不同起报时刻和不同预报时效。

结果,GraphCast 在 90.2% 的验证目标上比 HRES 误差更小。同时,它完成一个完整的全球 10 天预报只需不到 1 分钟,而传统数值模式往往需要超级计算机耗费数小时。GraphCast 并不是“所有指标全面碾压”,但在如此多的目标上稳定领先,已经足够说明数据驱动气候预测的潜力。

1[EGC,k<EHRES,k]\displaystyle \mathbb{1}\left[ E_{\mathrm{GC},k} < E_{\mathrm{HRES},k} \right]

邮差跑得快、胜率高,让人激动。但我们也要冷静看看他的行李箱里还缺什么:概率、极端天气、物理守恒,这些都是优化与局限的关键词。

S=12760∑k=127601[EGC,k<EHRES,k]≈0.902\displaystyle S = \frac{1}{2760}\sum_{k=1}^{2760} \mathbb{1}\left[ E_{\mathrm{GC},k} < E_{\mathrm{HRES},k} \right] \approx 0.902
把 GraphCast 和 HRES 在 2760 个目标上一对一比赛,谁误差小谁得 1 分,最后算平均胜率,约等于 90.2%。
  1. 验证目标数$2760$ 代表考卷上的题目总数,包括不同变量、地区、气压层和预报时效。
    2760\displaystyle 2760
  2. 指示函数$\mathbb{1}[\cdot]$ 当方括号内条件成立时取 1,否则取 0,相当于一场“谁更准谁得分”的裁判。
  3. 误差比较$E_{\mathrm{GC},k}$ 和 $E_{\mathrm{HRES},k}$ 分别是 GraphCast 和 HRES 在第 $k$ 个验证目标上的误差,常用 RMSE 或 MAE。
    EGC,k<EHRES,k\displaystyle E_{\mathrm{GC},k} < E_{\mathrm{HRES},k}
  4. 平均胜率$S$ 对所有目标求平均,$0.902$ 表示 GraphCast 赢了约九成考题。
    12760∑k=127601[⋅]≈0.902\displaystyle \frac{1}{2760}\sum_{k=1}^{2760} \mathbb{1}[\cdot] \approx 0.902

优化与局限

GraphCast 的高效,来自它对“稀疏图”的利用。地球网格虽然节点数量大,但真正需要传递消息的边并不像全连接网络那样爆炸。推理时,计算量主要由图中边的数量决定,而不由网格点数的平方决定。这让 GraphCast 可以在单块 TPU 上快速完成 10 天预报。

不过,这位气象邮差也有明显短板。第一,他是个“确定性邮差”:同样输入只会得到同一个答案,不会主动告诉你“我有 70% 的把握明天雨量超过 50 毫米”。在做灾害决策时,概率信息往往比单点数字更有用。第二,极端天气在历史数据中很稀少,模型容易把罕见的台风、热浪“平滑”掉。第三,数据驱动模型并不天然遵守能量守恒、质量守恒等物理定律,需要在训练目标和结果检查上做更多约束,才能真正进入严谨的业务流程。

GraphCast 证明了 AI 可以从数据中学会复杂物理系统的重要规律,但它也提醒我们:模型跑得快不代表理解一切。把确定性预测变成可靠决策,还需要结合概率建模、物理约束和人类经验。

Tinfer=O(∑ℓ=1L∣E(ℓ)∣)\displaystyle T_{\text{infer}} = O\left( \sum_{\ell=1}^{L} |\mathcal{E}^{(\ell)}| \right)
推理时间近似与所有消息传递层中的边数总和成正比。边越少,邮差要跑的敲门次数就越少,计算也就越快。
  1. 层数$L$ 表示图神经网络中消息传递的总层数,每一层都让信息多扩散一圈。
    ℓ=1,2,…,L\displaystyle \ell = 1, 2, \dots, L
  2. 每层边数$|\mathcal{E}^{(\ell)}|$ 是第 $\ell$ 层图中的边的数量,代表这一层要传递多少条消息。
    ∣E(ℓ)∣\displaystyle |\mathcal{E}^{(\ell)}|
  3. 求和$\sum_{\ell=1}^{L}$ 把所有层的边数加起来,总计算量大致与这个总和同阶。
    ∑ℓ=1L∣E(ℓ)∣\displaystyle \sum_{\ell=1}^{L} |\mathcal{E}^{(\ell)}|
  4. 复杂度记号$O(\cdot)$ 表示数量级,帮助我们忽略常数,只看规模增长趋势。
    O(⋅)\displaystyle O(\cdot)

AI 应用场景

风电场发电功率预估

阶段:模型推理与下游预测

解决的问题:传统风电场只能依赖未来 1-3 天的数值天气预报,遇到突发天气调整容易措手不及。GraphCast 能快速提供 10 天全球天气推演,把它接入风电功率曲线模型,就能提前规划设备检修和电网调度。

具体案例:某海上风电场运维团队每天早上拉取 GraphCast 10 天风场预测,结合风机功率曲线估算每个时段的发电量。当预测到第 7 天有一次强风过程时,系统会自动提醒停机保护,减少叶片过载风险。

航空长航线改道

阶段:决策支持与路径优化

解决的问题:洲际飞行需要提前了解高空急流位置,顺风飞能省油,逆风飞则要多带燃油。传统气象产品的更新频率和时滞可能让长航线错过最佳路径。GraphCast 的快速全球预测可以作为航路规划层的气象底座。

具体案例:一家航空公司利用 GraphCast 预测未来 3-7 天的 250hPa 高空风场,在起飞前 24 小时自动生成多条候选航线,再结合燃油成本和空域限制选出最优路径,单次跨洋航班平均节省约 2% 燃油。

防灾应急资源预置

阶段:风险预警与人机协同

解决的问题:灾害应急部门往往只有逐日更新的官方预报,对中长期趋势掌握不足。GraphCast 提供的 10 天温度、降水趋势可以帮助应急团队提前把物资调到高风险区域,而不是等预警发布后再仓促运输。

具体案例:某沿海城市应急管理局在台风季期间,每天查看 GraphCast 的 10 天累积降水预测图。当模型指出某流域未来 8 天可能持续强降水时,应急系统自动生成沙袋、抽水泵、救援艇的预置清单,并推送给乡镇负责人。

Python 演示

python54 行
import numpy as np  def build_grid_graph(rows, cols):    src = []    dst = []    def idx(r, c):        return r * cols + c    for r in range(rows):        for c in range(cols):            u = idx(r, c)            for dr, dc in ((-1, 0), (1, 0), (0, -1), (0, 1)):                nr, nc = r + dr, c + dc                if 0 <= nr < rows and 0 <= nc < cols:                    src.append(u)                    dst.append(idx(nr, nc))    return np.array(src), np.array(dst)  def message_passing(x, src, dst, theta=0.35, hops=2):    out = x.copy()    for _ in range(hops):        agg = np.zeros_like(out)        for s, d in zip(src, dst):            agg[d] += out[s]        deg = np.bincount(dst, minlength=out.size)        mean_neighbor = agg / np.maximum(deg, 1)        out = (1 - theta) * out + theta * mean_neighbor    return out  def autoregressive_daily(x, src, dst, days=10):    snapshots = [x.copy()]    for _ in range(days):        x = message_passing(x, src, dst)        right = x[:, 1:].copy()        x[:, :-1] += 0.02 * right        snapshots.append(x.copy())    return np.stack(snapshots)  def main():    np.random.seed(7)    rows, cols = 5, 7    x0 = 0.2 + 0.8 * np.random.rand(rows, cols)    src, dst = build_grid_graph(rows, cols)    hist = autoregressive_daily(x0, src, dst, days=10)    for day in (1, 5, 10):        print("day %d: mean=%.3f max=%.3f" % (day, hist[day].mean(), hist[day].max()))    print("10天滚动预测完成")  if __name__ == "__main__":    main()
目的:用纯 NumPy 实现一个极简 GraphCast 式滚动预测,把网格看成图,通过消息传递让天气场一天接一天地演化,演示“自回归 10 天预测”的核心结构。
  1. def build_grid_graph(rows, cols):构建二维网格图,把每个网格点变成图节点。
  2. src.append(u); dst.append(idx(nr, nc))记录一条由当前节点指向邻居节点的有向边。
  3. agg[d] += out[s]节点 d 累加所有邻居节点 s 传来的信息,这是消息聚合的核心。
  4. mean_neighbor = agg / np.maximum(deg, 1)把累加结果除以入度,得到邻居平均值。
  5. out = (1 - theta) * out + theta * mean_neighbor按比例融合自身状态和邻居信息,完成一次节点更新。
  6. right = x[:, 1:].copy()取右侧网格的天气值,模拟天气系统向右传播的简单强迫项。
  7. hist = autoregressive_daily(x0, src, dst, days=10)用前一天的预测结果作为下一天输入,完成 10 天滚动推演。

常见误区

误区我以为是 GraphCast 把大气物理方程写进了神经网络,所以才能超越传统数值模式。它计算每一步时应该在解纳维-斯托克斯方程吧?

正解GraphCast 在推理时并不显式求解物理方程。它是数据驱动模型,从 ECMWF 的 ERA5 再分析数据中学习“天气状态如何演化”。真正用物理方程做积分的是 ECMWF 的高分辨率业务模式 HRES。

为何常见:天气预报自古以来依赖物理模型,大家很容易默认 AI 模型只是“给物理方程加速”,忽略了它完全可以端到端地从数据中学习。

误区输入今天的天气,输出直接就是第十天的天气图,像生成一张未来照片一样。

正解GraphCast 采用自回归滚动预测。它先预测 6 小时后的状态,再把预测结果作为输入预测下一个 6 小时,这样反复 40 次才得到 10 天预报。

为何常见:“10 天预测”听起来像直接拍一张 10 天后的快照,而自回归这种“自己给自己递接力棒”的结构对新读者不够直观。

误区GraphCast 赢了 ECMWF 90.2% 的比赛,说明地球上 90.2% 的地方它都预测得更准。

正解90.2% 是论文里 2760 个验证目标中 GraphCast 胜出的比例。这些目标是不同变量、不同气压层、不同地区、不同预报时效的组合,不代表每个网格点、每个时刻都全面领先。

为何常见:论文摘要中的单个百分比容易被简化成“地区覆盖率”,但气象验证体系远比一个数字复杂。

误区GraphCast 要想更准,只要把 0.25° 网格继续加密到 0.1°,性能自然提高。

正解更高分辨率会带来更多节点和边,也会带来更大计算量,但不一定意味着更好。GraphCast 的精度来自数据质量、多尺度图结构和训练策略,分辨率只是其中一个因素。

为何常见:普通用户习惯用“像素越高照片越清晰”类比天气模型,却忽略了气象预报的误差还来自初始观测、物理参数化和训练数据,不止是网格密度。

误区既然 GraphCast 能预测 10 天天气,它应该也能告诉我“明天下雨的概率是 70%”。

正解GraphCast 本质上是确定性模型,给定同样输入会输出同一个点预测,它没有天然的概率表达能力。要获得概率预报,需要额外做集合扰动或接入其他不确定性估计算法。

为何常见:如今很多机器学习模型都输出置信度,公众很容易把“预测值”和“概率分布”混为一谈,尤其当产品界面展示置信区间时。

面试题

Q1. GraphCast 在 10 天预报中,推进一个时间步代表多长?

单选题 · easy

  • A.每 3 小时推进一步
  • B.每 6 小时推进一步← 正确答案
  • C.每 12 小时推进一步
  • D.每天直接推进一步

答案:B。GraphCast 把天气演化切成 6 小时一棒,10 天共 40 棒。它是一棒接一棒地自回归滚动,而不是一步跨过 10 天,因此 A/C/D 都不对。

Q2. GraphCast 的训练数据主要来自下列哪一项?

单选题 · single

  • A.地面气象观测站实时数据
  • B.ECMWF 的 ERA5 再分析数据← 正确答案
  • C.全球气象卫星云图的即时拼图
  • D.传统数值模式输出的降尺度结果

答案:B。GraphCast 从 ERA5 再分析中学习历史天气演变,ERA5 是一份经过重建和同化的全球气象档案,给邮差提供一致的标准答案。实时观测、云图拼图和降尺度输出都不是主训练集。

Q3. 论文中“90.2%”通常表示什么?

单选题 · easy

  • A.全球 90.2% 地区都比 HRES 更好
  • B.2760 个验证指标中胜出的比例← 正确答案
  • C.训练集上达到的像素准确率
  • D.10 天预报里第 9 天的技能得分

答案:B。90.2% 是 GraphCast 在 2760 个验证目标上的胜率,覆盖变量、气压层、地区和预报时效。它不直接等于“地区覆盖率”,也不是图像分类中的准确率。

Q4. GraphCast 的预测方式包含哪些特点?

多选题 · mid

  • A.数据驱动天气预测← 正确答案
  • B.图神经网络滚动预测← 正确答案
  • C.纯物理方程积分预测
  • D.自回归生成十天目标← 正确答案

答案:ABD。GraphCast 是数据驱动模型,用图神经网络逐 6 小时自回归生成 10 天目标。C 是传统数值模式的思路,GraphCast 在推理时不显式积分物理方程,因此不选。

Q5. 消息传递机制通常包含下列哪些环节?

多选题 · mid

  • A.邻居消息生成← 正确答案
  • B.邻居消息聚合← 正确答案
  • C.中心节点更新← 正确答案
  • D.全局排序剪枝

答案:ABC。每个节点先生成消息,再把邻居发来的消息聚合,最后更新自身隐藏状态。全局排序剪枝不是消息传递的标准环节,因此 D 不选。

Q6. GraphCast 的一次 6 小时预测,通常使用什么作为输入?

单选题 · hard

  • A.当前和上一时刻两个天气态← 正确答案
  • B.最近 7 天逐小时观测序列
  • C.未来 10 天的气候平均态
  • D.地面观测与卫星云图两张图

答案:A。GraphCast 把“上一棒”和“当前棒”两个连续天气态作为输入,预测下一棒。直接把未来平均态或两张静态图送入模型,会破坏它学习到的天气演化节奏。

Q7. 自回归滚动预测最需要警惕的问题是什么?

单选题 · mid

  • A.预测误差会随步骤累积← 正确答案
  • B.模型推理速度越来越慢
  • C.输入数据量不断减少
  • D.图结构自动发生改变

答案:A。每一步预测都会把上一步误差带进下一步,40 棒后误差可能被放大。固定模型的推理速度、输入数据量和图结构不会因为滚动而自动改变,因此 B/C/D 都不成立。

Q8. GraphCast 使用多尺度网格的主要好处是什么?

多选题 · hard

  • A.捕捉大尺度天气系统← 正确答案
  • B.保留局部地形细节← 正确答案
  • C.减少所有物理方程求解
  • D.提升消息传递效率← 正确答案

答案:ABD。多尺度网格把粗细网格连成一张图,既能传播大尺度系统,也能保留局部细节,同时用稀疏边降低计算量。减少物理方程不是模型目标,模型本来就不显式求解方程,因此 C 不选。

Q9. GraphCast 面对极端天气时的一个已知短板是什么?

单选题 · easy

  • A.没有显式的不确定性估计← 正确答案
  • B.无法输出任何温度数值
  • C.只能做春夏季预报
  • D.必须人工输入台风中心

答案:A。GraphCast 输出的是确定性点预测,对“预报到底有多没底”没有直接答案。它仍能输出温度,也不限于特定季节或依赖人工台风输入,因此 B/C/D 错误。

Q10. 为什么 GraphCast 推理复杂度常用“边数”而非“节点数”衡量?

单选题 · extreme

  • A.稀疏消息只遍历邻边← 正确答案
  • B.节点数必须等于网格数
  • C.边数总小于节点数
  • D.图网络不包含激活函数

答案:A。GraphCast 的图很稀疏,消息传递真正消耗计算的是遍历所有边。节点数可以接近网格点数,但复杂度仍需看边的规模和层数;C 和 D 不是复杂度衡量的原因。