笔记参考链接:Task2:抽丝剥茧——降水预测baseline详解 - 飞书云文档 (feishu.cn)
精读baseline——如何针对降水预测问题搭建模型
我们可以大致将搭建模型并解决问题分为以下几个步骤:
- 定义数据集, 建立起训练数据和标签之间的关系;定义数据加载器(DataLoader), 方便取数据进行训练
- 定义模型, 利用PyTorch搭建网络,根据输入输出数据维度实例化模型
- 定义损失函数, 优化器, 训练周期, 训练模型并保存模型参数
- 模型加载及推理(模型预测),输入测试数据输出要提交的文件
baseline的整个流程就跑完了, 主要是包含数据集准备和处理、模型定义、模型训练、模型推理四个大部分
Part2 伏羲大模型初探
在前面的探索中,我们了解到输入数据源是伏羲气象大模型的输入。伏羲大模型是由复旦大学主力研发,并得到Shanghai AI Lab(上海人工智能实验室)创新孵化研究院的助力推出。该模型采用独特的级联架构,能够提供长达15天的全球预报,拥有6小时的时间分辨率和0.25°的空间分辨率。值得一提的是,这一成果已得到认可,被Nature杂志收录。 接下来,让我们简短地概述一下FuXi模型的输入与输出: FuXi模型作为一个自回归模型,它采用前两个时间步的天气参数(𝑋𝑡−1,𝑋𝑡)作为输入,进而预测下一个时间步(𝑋𝑡+1)的天气参数。 这里的t、t−1和t+1分别代表当前时间步、前一个时间步以及即将到来的时间步。该模型设定的时间步长为6小时。通过将模型的输出再次作为输入,系统能够生成具有不同预见期的预报。
为了使用单个FuXi模型生成15天的预报,需要进行60次迭代运行。与基于物理原理的数值天气预报(NWP)模型不同,纯数据驱动的机器学习(ML)模型缺乏物理限制,这可能会导致长期预报的误差显著增加,甚至产生不切实际的预测结果。然而,通过采用自回归多步损失函数,可以有效减少长期预报过程中的累积误差。
在进行预报迭代的过程中,随着预报提前期的延长,误差的累积是难以避免的现象。此外,已有的研究指出,单一的模型无法在所有提前期内都达到最佳表现。为了提升短期和长期预报的性能,提出了一个使用预训练FuXi模型的级联模型架构,该架构针对特定的5天预报时间窗口进行精细调整,以实现最优性能。
这些时间窗口被划分为FuXi-Short(0-5天)、FuXi-Medium(5-10天)和FuXi-Long(10-15天) 。FuXi-Short和FuXi-Medium的输出在第20步和第40步时,分别被用作FuXi-Medium和FuXi-Long的输入。与Pangu-Weather采用的贪婪分层时间聚合策略——后者通过使用4个模型,其预报提前期分别为1小时、3小时、6小时和24小时,以减少步骤数量——不同,级联的FuXi模型避免了时间不一致性的问题。
Part3 时间序列分析入门
降水预测、风速预测、海浪预测等等, 这些气象预测任务都与着时间序列分析有密不可分的关系。在传统的气象预测任务例如降水预测中, 科学家们总会根据云层反射率的变化, 进行严谨的数学建模,输出预报的结果. 然而现如今深度学习强大的数据拟合能力能帮助科学家们更为快速和精准的找到最佳拟合的模型, AI+气象预测领域就越发受到气象专家们的关注.
时间序列分析问题, 一般数据序列中前后有顺序上或周期上的关联。
- 统计方法中, 常用自回归(AR)模型、移动平均(MA)模型, 或者自回归滑动平均模型(ARMA)模型, 但是这些模型的使用有个前提, 当前处的值是序列中前几个点误差项的线性组合. 后来科学家们又针对这个前提的缺点, 又提出了自回归积分滑动平均(ARIMA) 模型,在传统的时间序列分析中, 这些方法总是比较实用的, 不过对于大数据量长时间的任务, 预测的精度总是有些不尽人意.
- 后来深度学习爆发式增长, 循环神经网络(RNN) 也开始登上了时间序列分析的舞台, 凭借着它能捕捉输入特征前后时间的逻辑, 同时还具备神经网络强大的拟合能力, 也收获了一众信徒. 然而, RNN难以训练, 同时层数也不能加太深, 且非常容易过出现梯度消失或梯度爆炸的问题, 为了解决这个问题, 长短记忆网络(LSTM)在RNN的基础上, 又引入了记忆单元和输入门、遗忘门、和输出门来控制信息在序列中的传递,避免过远的时间节点对当前时间节点产生的不恰当的影响.
- 如今, transformer模型由于其独特的注意力机制可以在全局建模时间序列中某个时间节点和其他时间节点的关系和它的强大的拟合能力和良好的可并行计算的特性, 在当今数据量爆炸的时代也越来越受当今学术圈的追捧,如informer, autoformer等等.
上分指引
-
尝试使用更多的数据,但是也要注意数据内的噪声也对分数有着负影响
-
使用更深的网络,或其他更适合解决此类问题的网络
-
模型训练要保证模型训练到收敛, loss逐渐稳定时, 同时也要注意在训练数据上过拟合会对预测数据有负影响
来个小总结
在本次学习中, 我们主要对baseline做了逐行精讲, 了解了如何使用torch和深度学习搭建一个全流程的预测任务, 学习到了时间序列预测任务的基础知识, 同时也对伏羲大模型如何在气象预报中起作用有了简单的理解, 学有余力的同学, 可以参考进阶版的baseline文件,加上自己的想法来做提升,加油!