一种基于改进联邦学习的径流预测方法及预测系统

文档序号:30950745发布日期:2022-07-30 07:26阅读:147来源:国知局
一种基于改进联邦学习的径流预测方法及预测系统

1.本发明涉及人工智能技术领域,具体涉及一种基于改进联邦学习的径流预测方法。


背景技术:

2.准确的径流预测,对于流域水资源调度和合理配置、防汛抗旱工作的开展,指导水资源的合理开发利用,减少极端天气灾害带来的人员伤亡和经济损失,具有非常重要的实际意义。
3.径流预测方法总体上可以分为两类:基于物理过程的水文模型和基于数据驱动的模型。物理过程模型通过考虑径流的复杂形成过程来实现预测,但此类模型通常需要大量水文、气象、地形等各类数据,以及复杂的数学工具和用户专业知识。数据驱动模型主要根据水文现象的统计规律,通过考虑一个水文现象的统计关系来预测未来的水文过程。而其中的基于神经网络的预测方法,可模拟输入输出之间复杂的非线性关系,无需考虑具体的水文物理过程,具有强大的学习拟合能力,作为径流预测方法的有益补充得到了广泛的关注与研究。
4.虽然基于神经网络的方法可以降低建模的难度,但是仍存在着不可忽视的问题,包括:
5.第一,大量涉水信息系统基于本业务或者本部门的需求,存在应用系统、数据存储方式、数据格式上的差异,导致信息与资源分散,异构性严重,并且受工作体制、管理体制及安全性和保密性多方面影响,各个水文部门的水雨情信息无法及时共享,形成信息孤岛,这对于训练实现集中式的径流预测神经网络模型带来了一定程度上的阻碍。
6.第二,目前大部分的研究主要都集中于单站点的时间序列数据预测,或者某一个特定的流域,而神经网络是通过从大量数据集中挖掘复杂特征来提高模型泛化能力,因此目前研究工作形式具有局限性,训练出来的径流预测模型很难移植到其他流域,在利用数据丰富地区的水文信息对少资料或者无资料地区的水文水资源分析提供帮助方面还存在着困难。


技术实现要素:

7.发明目的:为解决水文大数据中水文信息孤岛问题,以及为少资料或无资料地区生成径流预测模型提供解决思路,本发明提出了一种基于改进联邦学习的径流预测方法及预测系统,利用联邦学习的方法训练的模型初始参数学习器学习来自多个流域的水文数据特征,应用到特定流域时使用少量样本即可快速得到局部模型,更容易移植到少资料或无资料地区,同时解决了使用传统联邦学习方法存在的模型异构性问题,进一步提高模型性能。
8.技术方案:一种基于改进联邦学习的径流预测方法,包括以下步骤:
9.步骤1:参数服务器将模型初始参数学习器的第t轮值下发给随机选取的参
与本轮联邦训练的k个本地计算节点;t∈(0,s),其中,s为指定通信轮次;k=rn,r∈(0,1),n为参与的流域总数,n个流域对应n个本地计算节点;
10.步骤2:在每个接收到模型初始参数学习器的第t轮值的本地计算节点上并行执行以下训练步骤:
11.将模型初始参数学习器的第t轮值作为本地计算节点的本地径流预测模型的初始模型参数,记为wi,表示第i个本地计算节点的本地径流预测模型的第t轮的初始模型参数;
12.基于初始模型参数wi和从支撑集中随机抽取的ns个样本组成的支撑子集对本地计算节点的本地径流预测模型进行训练优化,得到优化后的初始模型参数
13.基于优化后的初始模型参数和从查询集中随机抽取的nq个样本组成的查询子集计算测试损失,并根据测试损失计算对应的梯度gi;
14.步骤3:参数服务器聚合所有参与本轮联邦训练的k个本地计算节点的梯度,得到梯度集合{g1;g2;...;gk};基于梯度集合{g1;g2;...;gk}对模型初始参数学习器的第t轮值采用梯度下降算法进行更新,得到第t+1轮值
15.步骤4:判断模型是否收敛或者迭代次数是否达到指定通信轮次,若满足某一条件,则执行步骤5,否则继续执行步骤1至步骤4;
16.步骤5:将模型初始参数学习器的第t轮值作为值下发给所有n个本地计算节点;
17.步骤6:对于每个本地计算节点,基于值再进一步执行微调,包括以下步骤:
18.将值作为本地径流预测模型的初始模型参数,并采用本地计算节点上的支撑集对该本地径流预测模型进行训练,并利用查询集进行测试,最终得到适应本地数据分布的模型参数;
19.基于该模型参数,对本地径流进行预测,得到预测结果。
20.进一步的,所述的支撑集查询集和支撑集查询集均通过以下步骤构建得到:
21.选取降雨、短波向下辐射、日最高温度、日最低温度、大气压强作为数据特征,以流域的日径流量作为标签;
22.对数据特征及标签转换为无量纲的纯数值;
23.基于时间步长t,将转换后的数值转换为适应监督学习问题形式的数据,以此构建得到数据集;
24.将数据集划分为训练集和测试集,以及将训练集细分为支撑集和查询集将测试集亦细分为支撑集和查询集
25.进一步的,步骤2中,所述的基于初始模型参数wi和从支撑集中抽样得到的支撑子集对本地计算节点的本地径流预测模型f(wi)进行训练优化,得到优化后的初始
模型参数具体计算公式为:
[0026][0027][0028]
其中,表示所抽样支撑子集的样本数量,li(wi)为损失值,x和y分别表示支撑集中单个样本的特征和对应标签,表示模型输出结果f(wi;x)与真实值y之间的损失,α表示本地径流预测模型设置的学习率,表示li(wi)对于wi的梯度。
[0029]
进一步的,步骤2中,所述的基于优化后的初始模型参数和从抽样得到的查询子集计算测试损失,并根据测试损失计算对应的梯度gi,具体过程为:
[0030]
得到更新的后,基于训练集中的查询子集执行前向传播计算过程,得到测试损失并根据测试损失计算对应的梯度gi:
[0031][0032][0033]
其中,表示所抽样的查询子集样本数量,和分别表示查询集中单个样本的特征和对应标签,表示模型输出结果与真实值之间的损失,表示梯度计算,gi表示对于wi的梯度,本质上为二阶导数。
[0034]
进一步的,步骤3中,所述的基于梯度集合{g1;g2;...;gk}对模型初始参数学习器的第t轮值采用梯度下降算法进行更新,得到第t+1轮值具体计算公式为:
[0035][0036]
其中,β表示模型初始参数学习器设置的学习率,k表示参与本轮联邦训练的流域个数。
[0037]
本发明还公开了一种基于改进联邦学习的径流预测系统,包括:
[0038]
n个本地计算节点,分别部署在对应的流域内,内置本地径流预测模型,用于执行以下联邦学习步骤和本地径流预测模型调整步骤;
[0039]
其中,联邦学习步骤包括:
[0040]
将参数服务器下发的模型初始参数学习器的第t轮值作为本地计算节点的本地径流预测模型的初始模型参数,记为wi,表示第i个本地计算节点的本地径流预测模型的第t轮的初始模型参数;
[0041]
基于初始模型参数wi和从支撑集中抽样得到的支撑子集对本地计算节点的本地径流预测模型进行训练优化,得到优化后的初始模型参数
[0042]
基于优化后的初始模型参数和从查询集中抽样得到的查询子集计
算测试损失,并根据测试损失计算对应的梯度gi;
[0043]
将梯度gi上传至参数服务器;
[0044]
其中,本地径流预测模型调整步骤包括:
[0045]
将参数服务器下发的值作为本地径流预测模型的初始模型参数;
[0046]
采用本地计算节点上的支撑集对该本地径流预测模型进行训练,得到适应本地数据分布的模型参数;
[0047]
基于该模型参数,对本地径流进行预测;
[0048]
参数服务器,内置模型初始参数学习器用于执行以下步骤:
[0049]
将模型初始参数学习器的值下发给随机选取的k个本地计算节点;
[0050]
对参与本轮联邦训练的k个本地计算节点的梯度进行聚合,得到梯度集合{g1;g2;...;gk};
[0051]
基于梯度集合{g1;g2;...;gk}对模型初始参数学习器的第t轮值采用梯度下降算法进行更新,得到第t+1轮值
[0052]
判断联邦学习步骤中模型是否收敛或者迭代次数是否达到指定通信轮次,若满足某一条件,则将模型初始参数学习器的第t轮值作为值下发给所有n个本地计算节点;若都不满足则继续执行上述联邦学习步骤。
[0053]
进一步的,所述的基于初始模型参数wi和从查询集中所抽样得到的支撑子集对本地计算节点的本地径流预测模型f(wi)进行训练优化,得到优化后的初始模型参数具体计算公式为:
[0054][0055][0056]
其中,表示所抽样支撑子集的样本数量,li(wi)为训练损失值,,x和y分别表示支撑集中单个样本的特征和对应标签,表示模型输出结果f(wi;x)与真实值y之间的损失,α表示本地径流预测模型设置的学习率,表示li(wi)对于wi的梯度。
[0057]
进一步的,所述的基于优化后的初始模型参数和从查询集中所抽样得到的查询子集计算测试损失,并根据测试损失计算对应的梯度gi,具体过程为:
[0058]
得到更新的后,基于抽样查询子集执行前向传播计算过程,得到测试损失并根据测试损失计算对应的梯度gi:
[0059][0060]
[0061]
其中,表示所抽样查询子集样本数量,和分别表示查询集中单个样本的特征和对应标签,表示模型输出结果与真实值之间的损失,表示梯度计算,gi表示对于wi的梯度,本质上为二阶导数。
[0062]
进一步的,所述的基于梯度集合{g1;g2;...;gk}对模型初始参数学习器的第t轮值采用梯度下降算法进行更新,得到第t+1轮值具体计算公式为:
[0063][0064]
其中,β表示模型初始参数学习器设置的学习率,k为参与本轮联邦训练的流域个数。
[0065]
有益效果:本发明与现有技术相比,具有以下优点:
[0066]
(1)本发明利用联邦学习方法联合多个流域数据进行训练径流预测模型,在训练过程中只共享模型参数无需共享数据,有效解决了水文大数据中水文信息孤岛问题;
[0067]
(2)本发明针对传统联邦学习方法有较大改进,主要体现在:第一,通过共享一个参数化模型初始参数学习器,而不是一个全局模型,改进传统方法中全局模型精度较低的问题;第二,在特定流域基于全局训练得到的模型初始参数学习器利用少量样本进行快速适应,生成特定流域的局部径流预测模型,从而更容易移植到少资料或无资料地区。
附图说明
[0068]
图1为本发明的原理示意图;
[0069]
图2为本发明的过程示意图。
具体实施方式
[0070]
本发明的一种基于改进联邦学习的径流预测方法,通过对传统联邦学习的训练过程进行改进,利用部署在多个流域内具有计算和数据存储能力的计算节点,使得多个流域对应的计算节点联合训练一个全局模型初始参数学习器,即联合多个流域的数据一起训练,且在训练过程中只共享模型参数而无需共享数据,这在一定程度上可以解决水文信息孤岛问题;本发明初期训练的学习器为全局模型初始参数学习器,并非直接应用到本地的全局模型;联合训练之后该学习器掌握了其他流域的共有的基础特征表示,从而可以在特定流域上快速适应,即当该学习器应用到特定流域时,再使用少部分样本即可快速训练出较优的局部径流预测模型,即得到适用于特定流域的局部径流预测模型,这在一定程度上克服了传统联邦学习方法的模型异构性问题,提高模型预测精度,并且为少资料无资料地区提供了水文水资源分析的手段。
[0071]
现结合附图1和图2进一步阐述本发明的技术方案。假设要对n个流域联合训练径流预测模型,则本发明主要涉及一个参数服务器ps、n个流域对应的n个本地计算节点。本地径流预测模型f(wi)所用神经网络为长短期记忆网络lstm,n个流域对应的n个本地计算节点拥有本流域内的历史日时间尺度的径流数据和气象数据。主要包括以下步骤:
[0072]
步骤1:本步骤主要是为每个计算节点准备径流数据集,具体过程为:
[0073]
s110:假设参与训练的n个流域对应的本地计算节点记为bi,i=1,2,...,n,参数服务器为ps。选取本地计算节点bi对应流域的历史径流数据和气象数据,选择降雨、短波向下辐射、日最高温度、日最低温度、大气压强等5个属性作为数据特征,当前流域的日径流量作为标签,得到形状为(samples,5)的数据集,对应标签形状为(samples,1),其中samples表示样本数量;
[0074]
为了防止由于不同属性值的量级差异降低训练效率,对数据特征及标签执行z-score规范化操作,去除数据的单位限制,转换为无量纲的纯数值,具体计算公式为:x=(x-mean)/std,其中mean表示数据x的均值,std表示数据x的标准差。
[0075]
s120:对数据执行规范化后,确定时间步长t,基于时间步长t将s110得到的数据集转换为适应监督学习问题形式的数据,转换后形状为(samples,t,5),对应标签形状为(samples,1),其中时间步长t表示基于前t天的气象和径流数据预测当前时间的日径流量q;
[0076]
s130:将s120得到的数据集按照8:2的比例划分为用于联邦训练阶段的训练集和用于模型调整阶段的测试集,并按照比例p,其中p∈(0,1),将训练集细分为支撑集和查询集将测试集亦细分为支撑集和查询集通常p=0.8;
[0077]
步骤2:参数服务器ps对模型初始参数学习器执行初始化,得到初始值模型初始参数为模型可训练权重参数,其中t∈(0,s),s为参数服务器ps和本地计算节点之间的通信总轮次。
[0078]
步骤3:随机选取k个本地计算节点,其中k=rn,r∈(0,1),并将模型初始参数学习器的值下发给参与本轮联邦训练的k个本地计算节点。
[0079]
步骤4:本步骤目的为模型初始参数学习器在节点bi上学习适合节点bi数据分布的模型初始参数;具体过程包括:
[0080]
s410:本轮参与联邦训练的本地计算节点bi获取参数服务器ps下发的模型初始参数学习器的值后,将赋值为本地计算节点bi的本地径流预测模型f(wi)的模型参数初始值wi,即
[0081]
s420:本地计算节点bi基于模型参数初始值wi在本地训练集上的支撑子集进行本地径流预测模型f(wi)训练,该子集从支撑集中抽样得到,并采用梯度下降优化器,如adam优化器,执行梯度优化操作,得到模型初始参数学习器基于节点bi的数据分布学习到的模型初始参数具体计算公式如下:
[0082][0083][0084]
其中,表示所抽样支撑子集样本数量,x和y分别表示支撑集中单个样本的特征和对应标签,f(wi;x)为模型输出结果,α表示本地径流预测模型设置的学习率,不同的节点可以设置不同的学习率,表示梯度。为损失函数,具体为均方损失函数:
[0085][0086]
其中表示所抽样支撑子集的样本数量,yj表示标签值,y
pred
表示模型预测值。以上过程执行num个本地训练轮次,可选地,num=1,5,训练完指定本地轮次后,得到更新后的本地径流预测模型的模型初始参数可以理解为模型初始参数学习器基于节点bi的数据分布学习到的本地径流预测模型的模型初始参数。
[0087]
步骤5:本步骤的目的为利用查询集评估模型初始参数学习器在节点bi上学习到的模型初始参数的效果,具体包括:
[0088]
s510:得到更新的后,本地计算节点bi基于从训练集中的查询集抽样得到的查询子集执行前向传播计算,得到测试损失并根据测试损失计算对应的梯度gi,具体计算公式如下:
[0089][0090][0091]
其中,表示损失函数,所使用损失函数同样为mse,和分别表示查询集中单个样本的特征和对应标签,为模型输出结果,为真实径流值,表示梯度计算,gi表示对于的梯度,本质上为对wi的二阶导数,该梯度用于优化模型初始参数学习器
[0092]
s520:本地计算节点bi将计算得到的梯度gi发送给参数服务器ps。
[0093]
参与本轮联邦训练的本地计算节点均处于并行训练状态,以提高训练速度。
[0094]
步骤6:本步骤的目的为参数服务器ps基于本地计算节点上传的梯度优化模型初始参数学习器,具体过程为:
[0095]
s610:参数服务器ps基于同步训练的方式,聚合所有参与本轮联邦训练的k个本地计算节点上传的梯度,以捕获不同计算节点对应的不同流域之间径流流量、气象特征的内在联系,得到梯度集合{g1;g2;...;gk},该梯度用于优化模型初始参数学习器
[0096]
s620:参数服务器ps,基于接收到的梯度集合{g1;g2;...;gk}对模型初始参数学习器第t轮的值采用梯度下降算法进行更新,得到第t+1轮次的值具体计算公式为:
[0097][0098]
其中,β表示学习率,不同于本地模型训练时的学习率α,k表示参与本轮联邦训练的流域个数。
[0099]
步骤7:若模型收敛或者联邦训练的次数达到指定通信轮次,则结束训练,训练结束之后每个本地计算节点将会得到一个相同的模型初始参数学习器的值否则重
复执行步骤3到步骤7。
[0100]
上述步骤3~7为联邦训练阶段。
[0101]
步骤8:联邦训练完成后,开始执行模型调整阶段,具体过程如下:
[0102]
每一个本地计算节点bi,基于模型初始参数学习器的值该值可以看作是本地计算节点bi所训练的本地径流预测模型f(wi)的初始模型参数wi,即首先在从测试集上的支撑集中抽样得到的支撑子集上训练,执行num步梯度下降算法,可选地:num=1,5,10,从而快速得到适应于本地数据分布的模型参数以及得到适应于本地计算节点数据分布的本地径流预测模型使用本地径流预测模型在测试集上的查询集进行径流预测,评估本地径流预测模型的预测效果,可利用纳什效率系数(nse):一种水文领域中常用于验证水文模型模拟结果的指标,以及均方根误差(rmse)来评估预测值和真实值之间的偏差:
[0103][0104][0105]
其中,表示测试集中用于评估模型效果的查询集,表示该查询集样本数量,xj和yj分别表示查询集中单个样本的特征和对应标签,表示模型预测值,yj表示真实径流值,表示查询集中径流量均值,nse∈(-∞,1),nse越接近1表示训练出来的径流预测模型效果越好。rmse值越小表示预测精度越高。
[0106]
综上所述,本发明通过联邦学习的方法将包含径流和气象数据的多个流域一起联合训练,从而可以捕获到多个流域的水文信息特征,并通过改进传统联邦学习的学习过程,一定程度上解决了水文信息孤岛问题,提高了预测精度,并且为少资料或者无资料地区实现水文水资源信息分析提供了参考。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1