文章目录
week51 WDN GGNN
摘要
本周阅读了题为Gated graph neural networks for identifying contamination sources in water distribution systems的论文。该研究针对 WDN 中的 CSI 开发了 GGNN 模型。它考虑WDN的拓扑来表示有效CSI的水质数据的时空分布特征。利用水流方向构建邻接矩阵来探索节点间的信息传递,并将传感器站采集的时间序列水质数据作为节点属性输入到GGNN模型中。基于 GGNN 的 CSI 方法的有效性在真实的 WDN 中进行了测试
Abstract
This week’s weekly newspaper decodes the paper entitled Gated graph neural networks for identifying contamination sources in water distribution systems. This study develops a GGNN model for CSI in a WDN. It considers the topology of a WDN to represent the spatiotemporal distribution characteristics of water quality data for effective CSI. Hyraulic flow directions are used to build the adjacent matrix to explore the information transmission between nodes, and time series water quality data collected by sensor stations are used as node attributes input to the GGNN model. The effectiveness of the GGNN-based CSI method is tested in a real WDN and the main conclusions derived are summarised below.
一、文献阅读
1. 题目
标题:Gated graph neural networks for identifying contamination sources in water distribution systems
作者:Zilin Li, Haixing Liu, Chi Zhang, Guangtao Fu
期刊名:Journal of Environmental Management
链接:https://doi.org/10.1016/j.jenvman.2023.119806
2. abstract
该研究提出了一种用于 WDN(配水管网) CSI(污染源识别) 的门控图神经网络 (GGNN),结合了时空水质数据和网络节点之间的流向。通过对各种污染场景进行评估,GGNN 即使在传感器覆盖范围有限的情况下也表现出很高的预测精度。定向连接显着提高了 GGNN CSI 准确性,强调了网络拓扑和流动态在基于 ML(机器学习) 的 WDN CSI 方法中的重要性。具体来说,该方法仅使用 2 小时的传感器数据即可将污染源缩小到 5 个点,准确率达到 92.27%。 GGNN 展示了模型和测量不确定性下的弹性,重申了其在实践中实时实施的潜力。
This study proposes a gated graph neural network (GGNN) for CSI in the WDN, incorporating both spatiotemporal water quality data and flow directionality between network nodes. Evaluated across various contamination scenarios, the GGNN demonstrates high prediction accuracy even with limited sensor coverage. Notably, directional connections significantly enhance the GGNN CSI accuracy, underscoring the importance of network topology and flow dynamics in ML-based WDN CSI approaches. Specifically, the method achieves a 92.27% accuracy in narrowing the contamination source to 5 points using just 2 h of sensor data. The GGNN showcases resilience under model and measurement uncertainties, reaffirming its potential for real-time implementation in practice.
3. 网络架构
3.1 问题提出
假设WDN中的 N s N_s Ns个站点部署了水质传感器,对于一次污染事件,WDN中的水质数据样本可以表示为 X ∈ R N s × N c X ∈ \mathbb {R}^{N_s\times N_c} X∈RNs×Nc,其中 N c N_c Nc表示特定时间周期 T c T_c Tc内获取的样本数量。将 CSI 表述为一个分类问题。更具体地说,给定第 i 个污染事件的数据样本矩阵 X i X_i Xi,CSI 问题是确定几个潜在网络节点处的污染源,即 y ^ i = f ( X i ) \hat y_i = f(X_i) y^i=f(Xi),其中 f 是具体的污染源分类模型。如果 y ^ i = y i \hat y_i = y_i y^i=yi,则污染源被正确识别,其中 y i y_i yi 表示对应的真实污染源节点。
3.2 GNN
GNN 通过消息传递计算每个节点的状态向量,从而能够处理此类图结构数据。这些状态向量捕获有关图的本地和全局信息,对于分类、回归和聚类等各种下游任务很有价值。
在原始的 GNN 模型中,传播被限制在收敛到一个固定点之前进行操作,这限制了其灵活性,特别是对于节点分类等任务。为了克服这个限制,引入了 GGNN。 GGNN 释放了收敛到固定点的要求,并结合了一定数量的时间步长的门控循环单元 (GRU)。每个节点的状态更新考虑其先前的表示 h v ( k − 1 ) h_v^{(k−1)} hv(k−1) 及其相邻节点状态 a v ( k ) a_v^{(k)} av(k) 的聚合。
首先,节点 v 根据邻接矩阵聚合来自其邻接节点的消息:
其中 x v x_v xv是包含节点v的输入属性的列向量。为了增加GGNN的表达能力,在用作初始隐藏状态之前通常会放大节点属性的大小。
然后,GGNN 使用类似 GRU 的传播步骤来更新节点的状态,可以描述为:
然后,GGNN 使用类似 GRU 的传播步骤来更新节点的状态,可以描述为: 其中 r 和 z 是重置门和更新门; W r , W z , W & U r , U z , U W_r,W_z,W \& U_r, U_z,U Wr,Wz,W&Ur,Uz,U是每层的权重和偏差; σ ( ⋅ ) σ(·) σ(⋅) 是 sigmoid 激活函数; ⊙ \odot ⊙ 是逐元素乘法。
3.3 CSI GGNN
针对 CSI 问题提出的 GGNN 模型如下所示。
节点 v x v x_v xv 的节点属性通过 ReLU 激活的标准线性组合被映射为原始隐藏状态 h v ( 0 ) h_v^{(0)} hv(0) 从原始空间 R N c \mathbb R^{N_c} RNc 到新空间 R M \mathbb R^M RM。 M 是隐藏状态的大小。大的 M 值会增加模型的容量,但这可能会导致过拟合问题,并且当 M 太大时使训练变得更加困难。
然后将扩展邻接矩阵 ̂A = [A, AΤ] 和映射节点属性 h(0) 输入到 GGNN,并在固定的 K 步上递归计算,并输出状态矩阵 h(K) ∈ Rn×M。 K是GGNN的传播步数。对于每个节点,GGNN 执行 K 个传播步骤后即可获知 K 个最远邻居的信息。具体来说,当K = 1时,每个节点只能向其直接邻居节点学习。 K值决定了模型的学习能力和效率。较高的 K 值会使模型变慢并增加内存需求,较低的 K 值会减少每个节点可以学习的依赖项数量。
最后,GGNN h ( K ) h^{(K)} h(K) 的输出被展平为向量,并使用线性层和 softmax 层归一化为概率分布 Y ^ \hat Y Y^。 Y ^ \hat Y Y^是概率向量,表示每个节点是污染源的概率。
4. 文献解读
4.1 Introduction
由于以下实际原因,开发快速准确的方法来识别 WDN 中的污染事件源是一项挑战:
- 首先,由于经济限制,WDN 中部署的传感器数量通常有限,这意味着只能收集空间稀疏的水质数据。
- 其次,城市用水需求的固有变化增加了污染源识别的不确定性。
- 第三,由于污染物可能通过管道快速扩散,及时定位污染物对于开发有效算法至关重要
机器学习算法必须解决训练过程中的数据不平衡问题,这主要是由于现实世界 WDN 中缺乏污染事件记录造成的。在现实场景中,污染数据可能会受到传感器测量精度和用户用水需求变化等因素的影响。因此,在实施模型时考虑不确定性的影响至关重要。
4.2 创新点
研究提出了一种用于 CSI 的门控图神经网络(GGNN),它可以通过将多个水质传感器站的数据与 WDN 的拓扑相结合,有效捕获节点的空间相关性。具体贡献如下:
- 所提出的基于 GGNN 的 CSI 方法使用模拟工具 EPANET 从不同污染源下的传感器站生成数据,同时考虑需水量和传感器测量的不确定性。
- 该方法利用WDN的图结构,结合网络拓扑和水流方向,实现节点和管道之间有效的编队聚合和消息传递。
- 使用安装了多个水质传感器的真实 WDN 评估所提出的基于 GGNN 的 CSI 方法的性能,并进行消融研究以估计网络拓扑和水流方向对检测精度的影响。
- 还进行了比较评估,将基于 GGNN 的 CSI 方法与广泛采用的随机森林 (RF) 算法进行了基准测试。
4.3 实验过程
4.3.1 数据获取
盐田水网如下
该管网有两个水源(S1 和 S2)、952 个需求节点和 1175 个管道。网络中部署了33个水质传感器站。 S1依靠重力供水,平均需水量为36,000 m3 d−1。 S2有两个出水口,在重力和压力的作用下供水。总平均需求量为 42,000 m3 d−1。该网络具有24小时的需求模式,需求间隔为5分钟。
在研究中,所有污染事件均基于EPANET进行模拟。然后,生成的污染事件样本被分为训练数据集(80%)和测试数据集(20%)。根据污染源、开始时间、持续时间和浓度随机设置污染事件。实际上,WDN 中的每个节点都被假定为潜在的污染源。然而,某些节点中的污染事件可能无法被所有传感器站检测到,并且那些不触发任何水质传感器警报的污染事件将被排除在训练和评估基于GGNN的CSI方法之外。在研究中,每个传感器站的警报阈值Cthre设置为 1 m g L − 1 1 mg L^{−1} 1mgL−1。对于每个节点,可以在一天中的每个小时注入污染物,持续6小时,离开源节点的污染物浓度在 50 − 100 m g L − 1 50-100 mg L^{−1} 50−100mgL−1之间随机设置。每个节点每24h产生Nm个污染事件(默认 N m = 5 N_m=5 Nm=5,即每个节点采样120个污染事件)。当任何传感器站触发警报时,就会收集传感器数据。节点属性Nc的大小受传感器采样间隔t1和传感器数据采集时间Tc的影响。默认采样间隔和数据收集时间分别为 5 分钟和 2 小时。本研究采用不同的 N m ( 1 ∼ 5 ) 、 t 1 ( 5 m i n 、 15 m i n ) 、 T c ( ( ∼ 5 h ) N_m(1\sim 5)、t_1(5min、15min)、T_c((\sim 5h) Nm(1∼5)、t1(5min、15min)、Tc((∼5h)取值来改变数据样本大小和节点属性,观察不同数据采样对识别的影响基于 GGNN 的 CSI 方法的性能。
研究中的水力模型是根据不同节点的不同昼夜需求模式进行校准的。然而,WDN的实际运行过程中还存在很多不确定性。在仿真过程中考虑了每个节点的需求模式和传感器测量的不确定性,以评估基于GGNN的CSI方法的鲁棒性。使用正态分布 N ( 0 , σ 2 ) N(0, σ2) N(0,σ2) 和均匀分布 U ( − α , + α ) U(−α, +α) U(−α,+α) 来模拟 WDN 中每个节点的需求模式和传感器测量中可能存在的噪声,如下所示:
其中 d ( i , j ) , d ′ ( i , j ) d(i, j),d^′(i, j) d(i,j),d′(i,j) 是默认和新需求模式下节点 i 在时间步 j 的需水量,c(s, j) 和 c′(s, j) 是传感器节点模拟和监测的浓度值s 在时间步 j。本研究中,σ设置为0、5%、10%、15%和20%,α设置为0、2%、5%、8%和10%。特别地,当默认需求模式和传感器测量准确时,σ和α被设置为0。
4.3.2 参数设置
GGNN模型超参如上,GGNN模型的输出是每个节点作为污染源的概率。以下负对数似然函数用于训练 GGNN 模型:
研究中,单个污染事件只有一个污染源,因此 Y 中真实污染源的概率值为 1,其他元素均为 0。 y ^ v \hat y_v y^v 和 y v y_v yv 是 Y ^ \hat Y Y^ 和 Y Y Y 中表示预测的元素以及节点 v 作为污染源的真实概率
基于 GGNN 的 CSI 方法的训练时间根据所使用的数据集而变化。污染源识别过程的执行是瞬时的,因此CSI方法的检测时间主要取决于传感器数据采集时间Tc。所有实验均在 Google Colab Pro 上进行,这是一项可用于深度学习研究的云服务。
T O P c TOP_c TOPc 用于评估训练过程后的模型精度,计算公式:
在研究中,使用四个不同的 c 值(c = 1、3、5 和 10)来评估模型的准确性。
RF是一种用于识别 WDN 污染源的常用机器学习技术,被选为比较基准。所提出的基于 GGNN 的 CSI 方法针对 RF 进行了评估,以评估其在 WDN 内污染源识别方面的性能。
4.3.3 实验结果
关于模型效果的实验
使用默认参数生成的大量污染事件来测试所提出的基于 GGNN 的 CSI 方法的性能。训练过程中的损失函数图如下所示。
下图显示了测试过程中基于 GGNN 的 CSI 方法在不同训练 epoch 数下的性能。
上述实验表明,梯度在训练过程中和训练过程中持续存在。基于GGNN的CSI方法具有很高的稳定性。研究中使用的默认训练周期为 50,以保持基于 GGNN 的 CSI 方法在所有实验中的稳定性。实际中,当训练损失稳定时,可以终止训练过程以减少训练时间。
下表展示了 GGNN 和 RF 在不同评估指标(TOP1、TOP3、TOP5;TOP10)上的预测精度比较。
GGNN在所有预测精度方面均优于 RF。在 TOP1 分类(最可能的污染源)中,GGNN 达到了 51.23% 的准确率,超过 RF 11.84%。
这些结果凸显了 GGNN 模型在定位 WDN 内污染源方面的有效性。此外,这种优异的性能强调了 GNN 相对于 RF 等传统机器学习方法在准确识别污染源方面的潜力。
上图展示了模型对污染事件的预测示例。红十字代表真实的污染源,不透明的灰色圆圈代表预测的污染源。这证明了基于 GGNN 的 CSI 方法在识别 WDN 中可能的污染源方面的有效性。
上图显示了触发警报识别真实污染源的累积准确度曲线,其中给出了在不同数量的传感器警报下正确识别真实污染源的测试样本的累积百分比。基于GGNN的CSI方法仅需要1次警报就可以识别大约一半的污染事件,并且在3次或更少的警报下累积准确率可以占所有识别的污染源样本的80%,这意味着基于GGNN的CSI方法具有良好的性能即使触发的警报较少
网络拓扑和水力流向的影响(消融实验)
使用了三种模型进行比较:有向图、无向图和全连接图,其中每个节点都链接到所有其他节点。所有模型均使用相同的数据集(Nm = 1、t1 = 5min、Tc = 2h、α = 0 和 σ = 0)进行训练和测试。
上表展示了GGNN方法在使用有向、无向和全连接图网络的测试过程中的预测精度。结果表明,在有向图上训练的模型在测试集上达到了最高的准确率,优于在无向图和全连接图上训练的模型。在无向图上训练的模型准确率略低于有向图,而在全连接图上训练的模型在测试集上表现较差(TOP1、TOP3、TOP5、TOP10的预测准确率)小于10%)。
有向图使模型能够捕获液压流方向和节点之间的相互作用,这对于准确的系统识别至关重要。相比之下,全连接图引入了大量不必要的连接。
不同数据采样方法的影响
如上图所示,基于GGNN的5分钟采样间隔输入的CSI方法比15分钟采样间隔输入的方法获得了更高的精度(TOP1,TOP3,TOP5;TOP10)。提高采样频率可以提高基于GGNN的CSI方法的识别性能。
基于GGNN的CSI方法的预测精度可以通过增加一定时间范围内的数据收集时间来提高。
随着更多的样本进行训练,预测精度预计会得到提高,但上图的结果表明,虽然确实出现了增加,但增加的速度很快就趋于平稳。
当Nm = 1时,TOP1、TOP3、TOP5和TOP10分别为40.92%、73.24%、86.00%和95.96%,并随着Nm = 2而增加。然而,当Nm > 2时,改进可以忽略不计。随着污染源定位范围从1个节点扩大到10个节点,预测精度对数据量的敏感度降低,表现为数据量的精度变异性较小。
需求和测量不确定性对识别性能的影响
上表显示了考虑需求和测量不确定性后测试样本的预测精度。基于指标的不同评估,给出了 25 组实验的预测精度的平均值和标准偏差。 TOP1、TOP3、TOP5、TOP10的平均值分别为41.29%、75.08%、87.01%、96.59%。 TOP1 的标准差最大(2.31%),TOP10 的标准差最小(0.30%)
结果表明,不同实验对预测精度影响不大,最大标准差为2.31%,表明CSI的稳健性。而且,随着污染源定位范围的扩大,标准差逐渐变小,表明随着范围的增加,预测精度受需求模式和测量精度的影响较小。
上图显示了 25 组实验中每一组的预测精度,这些实验是为了测试需求和测量不确定性对基于 GGNN 的 CSI 方法的识别性能的影响。
热图表明,传感器测量的精度与模型精度呈负相关,而需求不确定性影响很小,也没有明显的相关性。因此,为了在实践中获得更高的预测精度,更重要的是优先考虑传感器精度而不是需求精度。
5. 结论
得出的主要结论总结如下:
- 所提出的 GGNN 方法在多个预测精度方面优于常用的 RF 算法,并且在识别污染源方面表现出强大的性能,即使在检测污染的传感器数量有限的情况下也能证明其有效性。这意味着该模型可以在污染事件的早期阶段有效识别污染源,使水务公司能够及时采取补救措施以减少影响。
- 节点之间连接的方向性显着影响基于GGNN的CSI方法的有效性。有向图模型优于无向图和全连接图模型,强调了构建基于 GGNN 的 CSI 方法时网络拓扑和节点之间的水力流动方向的重要性。
- 所提出的基于GGNN的预测精度可以随着采样频率的增加而提高。然而,准确性并不总是随着数据收集时间的延长而提高,并且对训练数据的大小不太敏感。在实际应用中,可以采用采样频率较高的水质传感器来提高预测精度,缩短识别时间。
- 所提出的基于 GGNN 的 CSI 方法展示了针对变化的需求和测量不确定性的弹性。与水力模型的不确定性(例如WDN中每个节点的需求模式)相比,水质传感器的测量不确定性对识别精度的影响更大。当污染源位于越来越多的节点位置时,需求和测量不确定性对识别性能的影响就会减弱。
GGNN 模型被提出来识别 WDN 中的污染源,但是,它仅在单个污染源的污染事件上进行了测试。
未来的工作可以探索基于 GGNN 的 CSI 方法在涉及两个或多个污染源的污染事件中的性能。
二、GGNN
来源论文
Gated Graph Sequence Neural Networks,ICLR 2016
链接:https://arxiv.org/abs/1511.05493
官方实现(Lua):https://github.com/yujiali/ggnn
第三方实现(pytorch):https://github.com/calebmah/ggnn.pytorch
1. 代码解释
@JamesChuanggg的pytorch实现ggnn.pytorch,这个实现的代码相比于官方版本来说,容易读很多
- annotation
annotation = np.zeros([n_nodes, n_annotation_dim])
annotation[target[1]-1][0] = 1
- 各时间步实现
class Propogator(nn.Module):
"""
Gated Propogator for GGNN
Using LSTM gating mechanism
"""
def __init__(self, state_dim, n_node, n_edge_types):
## 初始化参照源代码
def forward(self, state_in, state_out, state_cur, A):
# 入边向量和出边向量
A_in = A[:, :, :self.n_node*self.n_edge_types]
A_out = A[:, :, self.n_node*self.n_edge_types:]
# 入边向量和出边向量分别和图做计算
a_in = torch.bmm(A_in, state_in)
a_out = torch.bmm(A_out, state_out)
a = torch.cat((a_in, a_out, state_cur), 2)
# 类GRU部分
r = self.reset_gate(a)
z = self.update_gate(a)
joined_input = torch.cat((a_in, a_out, r * state_cur), 2)
h_hat = self.tansform(joined_input)
output = (1 - z) * state_cur + z * h_hat
return output
- 网络结构
class GGNN(nn.Module):
"""
Gated Graph Sequence Neural Networks (GGNN)
Mode: SelectNode
Implementation based on https://arxiv.org/abs/1511.05493
"""
def __init__(self, opt):
# 初始化参考源代码
def forward(self, prop_state, annotation, A):
# prop_state:论文中的h
# annotation:节点标注
# A:图
for i_step in range(self.n_steps):
# 对于每一个时间步循环
in_states = []
out_states = []
for i in range(self.n_edge_types):
# 对输入特征做两个分支的全连接,得到入边特征,和出边特征
# 每一种边都要计算一次
in_states.append(self.in_fcs[i](prop_state))
out_states.append(self.out_fcs[i](prop_state))
# 将所有种类的边得到的特征连接起来
in_states = torch.stack(in_states).transpose(0, 1).contiguous()
in_states = in_states.view(-1, self.n_node*self.n_edge_types, self.state_dim)
out_states = torch.stack(out_states).transpose(0, 1).contiguous()
out_states = out_states.view(-1, self.n_node*self.n_edge_types, self.state_dim)
# 用门控图模块更新h
prop_state = self.propogator(in_states, out_states, prop_state, A)
join_state = torch.cat((prop_state, annotation), 2)
output = self.out(join_state)
output = output.sum(2)
return output
2. 网络结构
基本概念
GGNN是一种基于GRU的经典的空间域message passing的模型
问题描述
一个图 G = (V, E), 节点v ∈ V中存储D维向量,边e ∈ E中存储D × D维矩阵, 目的是构建网络GGNN。
实现每一次参数更新时,每个节点既接受相邻节点的信息,又向相邻节点发送信息。
小结
研究提出了一种用于 CSI 的门控图神经网络(GGNN),它可以通过将多个水质传感器站的数据与 WDN 的拓扑相结合,有效捕获节点的空间相关性。所提出的基于 GGNN 的 CSI 方法使用模拟工具 EPANET 从不同污染源下的传感器站生成数据,同时考虑需水量和传感器测量的不确定性。该方法利用WDN的图结构,结合网络拓扑和水流方向,实现节点和管道之间有效的编队聚合和消息传递。使用安装了多个水质传感器的真实 WDN 评估所提出的基于 GGNN 的 CSI 方法的性能,并进行消融研究以估计网络拓扑和水流方向对检测精度的影响。还进行了比较评估,将基于 GGNN 的 CSI 方法与广泛采用的随机森林 (RF) 算法进行了基准测试。
参考文献
[1] Zilin Li, Haixing Liu, Chi Zhang, Guangtao Fu, “Gated graph neural networks for identifying contamination sources in water distribution systems” [J], Journal of Environmental Management https://doi.org/10.1016/j.jenvman.2023.119806