第三十三周学习周报
目录
- 摘要
- Abstract
- 文献阅读
- 1.1 相关知识
- 1.1.1 DWT
- 1.1.2 SVM
- 1.1.3 DA-LSTM
- 1.2 总体架构
- 1.3 实验分析
- 总结
摘要
在本周阅读的文献当中,作者提出了一种名为BC-MODWT-DA-LSTM的混合模型。该模型主要由DA-LSTM和BC-MODWT两个部分组成。由于输入到模型中的数据通常包含大量冗余信息,传统的 LSTM在提取数据特征的过程中存在很大的麻烦。DA-LSTM通过在LSTM 子层之前采用双阶段注意力机制作为信息提取层,以帮助 LSTM 更好地应对长期输入数据从而解决了这一问题。这种基于注意力的 LSTM 可以在有限的计算能力下,将更多的计算资源分配给相关性较高的部分。通过为神经网络的隐藏层单元提供不同的概率权重,LSTM 可以专注于最关键的数据。BC-MODWT可以将输入的时间序列数据进行分解,将其分解为多个子层,每个子层代表不同的频率成分,以此模型能够更好地捕捉输入数据中的多尺度周期性和非线性特征。本周的学习将从模型架构、相关知识以及实验分析三部分进行。
Abstract
In the literature read this week, the author proposed a hybrid model called BC-MODWT-DA-LSTM. This model mainly consists of two parts: DA-LSTM and BC-MODWT. Due to the fact that the data input into the model often contains a large amount of redundant information, traditional LSTM faces significant challenges in extracting data features. DA-LSTM solves this problem by using a two-stage attention mechanism as the information extraction layer before the LSTM sub layer to help LSTM better cope with long-term input data. This attention based LSTM can allocate more computing resources to parts with higher correlation with limited computing power. By providing different probability weights for the hidden layer units of neural networks, LSTM can focus on the most critical data. BC-MODWT can decompose the input time series data into multiple sub layers, each representing different frequency components. This model can better capture the multi-scale periodicity and nonlinear features in the input data. This week’s learning will be divided into three parts: model architecture, related knowledge, and experimental analysis.
文献阅读
本周阅读了一篇名为Predicting ammonia nitrogen in surface water by a new attention-based deep learning hybrid model的论文
论文地址:Predicting ammonia nitrogen in surface water by a new attention-based deep learning hybrid model
在论文中,作者提出了一种新的混合模型BC-MODWT-DA-LSTM,结合了LSTM、Dual-Stage Attention,和边界校正的最大重叠离散小波变换(BC-MODWT)。模型通过引入双阶段注意力机制,能够选择性地关注输入数据中的重要信息,显著提高了预测精度,尤其是在处理长序列数据时表现出色。此外,BC-MODWT 的应用使得模型能够有效去除输入数据中的噪声,并提取出主要的波动和趋势,进一步增强了模型的预测能力。
1.1 相关知识
1.1.1 DWT
离散小波变换是一种近似的小波变换方法,将信号分解成不同尺度的近似系数和细节系数。DWT使用离散的小波函数和离散的时间尺度,通过滤波和下采样操作来实现信号的分解。通常,DWT将信号分解为一组高频和低频子信号。信号低频成分常常蕴含着信号的特征,而高频成分则给出信号的细节或差别。在离散小波变换中,原始信号可以通过两个相互滤波器产生两个信号(高和低),这样便能分析信号的不同频率成分。
DWT变换的基本过程如下:
1)将原始信号进行低通滤波和高通滤波,离散变换用到了两组函数:尺度函数和小波函数,它们分别与低通滤波器和高通滤波器相对应,得到两个子信号,即近似系数和细节系数;
2)对近似系数进行递归分解,得到若干个尺度下的近似系数和细节系数;
3)通过对细节系数进行递归分解,得到若干个尺度下的细节系数;
4)重构原始信号时,将不同尺度的近似系数和细节系数进行合并,得到重构后的信号。
代码实现如下所示:
% 生成信号
Fs = 1000; % 采样频率
t = 0:1/Fs:1-1/Fs; % 时间向量
x = cos(2*pi*50*t) + cos(2*pi*120*t); % 原始信号
% 进行小波变换
wname = 'db4'; % 小波名称
level = 3; % 分解级数
[C,L] = wavedec(x,level,wname); % 小波分解
% 提取近似系数和细节系数
A = cell(1,level);
D = cell(1,level);
for i = 1:level
A{i} = wrcoef('a',C,L,wname,i); % 近似系数
D{i} = wrcoef('d',C,L,wname,i); % 细节系数
end
% 绘制结果
figure;
subplot(level+1,1,1);
plot(t,x);
title('原始信号');
for i = 1:level
subplot(level+1,1,i+1);
plot(t,A{i},t,D{i});
title(['近似系数和细节系数(级别 ' num2str(i) ')']);
legend('近似系数','细节系数')
end
实现效果如下:
1.1.2 SVM
支持向量机(support vector machine,SVM)是一种二类分类模型,他的基本模型是定义在特征空间上的间隔最大的线性分类器。 支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问题,支持向量机的学习算法是求解凸二次规划的最优化算法。
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示, wx+b=0 即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。
以线性支持向量机学习算法为例:
支持向量回归(SVR)是支持向量机(SVM)的一种扩展,用于回归分析,即用于预测连续数值型目标。它的原理与分类任务中的支持向量机类似,SVR 通过最大化回归模型的间隔,同时允许部分样本违反一定的误差范围,以提高模型的鲁棒性。
在SVR中通过引用核函数将数据从原始特征空间映射到高维特征空间,以便在高维空间中更容易找到线性回归超平面。
核函数是对向量内积空间的一个扩展,使得非线性回归的问题,在经过核函数的转换后可以变成一个近似线性回归的问题,其特点有以下几点:
1)无需知道非线性变换函数 φ 的形式和参数
2)避免了“维数灾难”,大大减小了计算量
3)核函数的形式和参数的变化为隐式的改变从输入空间到特征空间的映射,从而对特征空间的性质产生影响。
常用的核函数有以下几个:
1.1.3 DA-LSTM
基于Dual-Stage Attention的LSTM主要是通过结合注意力机制来提升LSTM模型的性能和准确性。其模型结构如下图所示:
其思想是模型通过在输入和输出前分别引入注意力机制以提高模型的性能和准确性。在第一阶段,模型通过输入注意力机制计算每个时间步的注意力权重,从而提取与输出相关的特征。模型会根据输入特征的重要性分配不同的权重,使得LSTM能够更关注那些对预测结果影响较大的特征。在第二阶段,模型通过时间注意力机制选择所有时间步中的相关特征。从而帮助模型在处理长序列数据时,选择性地关注那些对当前预测最重要的历史信息。
第一阶段的注意力机制实现过程如下:
其中ht为encoder在时刻t的hidden state,第一阶段,使用当前时刻的输人xt,以及上一个时刻编码器的hidden state ht-1,来计算当前时刻编码器的hidden state ht。更新公式可写为:ht=f1(ht-1,xt),f1为一个非线性激活函数。
为了自适应地选取相关feature(即给每一个特征赋予一定的权重), 作者在此处引入了注意力机制。即对每个时刻的输入xt为其中的每个影响因子赋予一定的注意力权重αkt,其衡量了时刻t的第k个feature的重要性。αkt由以下计算得到:
首先通过下述公式计算得到ekt:
该式即把第k个特征与前一时刻的ht-1和st-1线性组合后再用tanh激活得到,其中的V,W,U为需要学习的参数。计算得到ekt后再用softmax进行归一化后得到αkt。
第一阶段的attention机制,使得编码器能够关注其中输入特征中重要的特征,而不是对所有特征一视同仁,这也是所有attention的本质作用。
编码阶段的代码实现如下所示:
def _Encode(self, encode_input=None): # encode_input: [-1, time_step, input_dim]
x_k = tf.transpose(encode_input, perm=[0, 2, 1], name='Series_of_length_TIME_STEP')#[-1,input_dim,time_step]
encode_time_step_hidden = []
for t in range(encode_input.get_shape()[1]): # [t < time_step]
e_t = self._attention_layer(_h_t_1 = self.encode_hidden,
_s_t_1 = self.encode_cell,
_x_k = x_k,
_We = self._weights['Input_attention_layer_We'],
_Ue = self._weights['Input_attention_layer_Ue'],
_Ve = self._weights['Input_attention_layer_Ve'], )
a_t = tf.nn.softmax(e_t) # [-1, input_dim]
tmp = tf.reshape(encode_input[:, t, :], shape=[-1, encode_input.get_shape().as_list()[-1]])
x_t = tf.multiply(a_t, tmp)
(self.encode_cell, self.encode_hidden) = self._LSTMCell(h_t_1 = self.encode_hidden,
s_t_1 = self.encode_cell,
x_t = x_t,
name = 'Encode_LSTMCell')
encode_time_step_hidden.append(self.encode_hidden)
return tf.reshape(tf.stack(encode_time_step_hidden), [-1, self.TIME_STEP, self.DECODE_CELL])
第二阶段temporal Attention机制实现过程如下:
第二阶段的解码器注意力机制设计类似于传统的seq2seq中的Attention机制,也就是第二阶段temporal attention的机制其实就是传统Attention的机制。解码阶段的代码实现如下所示:
def _Decode(self, decode_input=None, y_t=None):
for t in range(decode_input.get_shape()[1]-1):
l_t = self._attention_layer(_h_t_1 = self.decode_hidden,
_s_t_1 = self.decode_cell,
_x_k = decode_input,
_We = self._weights['Temporal_attention_layer_Wd'],
_Ue = self._weights['Temporal_attention_layer_Ud'],
_Ve = self._weights['Temporal_attention_layer_Vd'], )
b_t = tf.reshape(tf.nn.softmax(l_t), shape=[-1, decode_input.get_shape().as_list()[1], 1]) # [-1, time_step, 1]
c_t = tf.reduce_sum(tf.multiply(b_t, decode_input), axis=1) # [-1, time_step, 1]*[-1, time_step, cell_dim]
# ---> [-1, time_step, cell_dim]-->[-1, cell_dim]
y_t_ = self._Dense(_input = tf.concat([c_t, tf.reshape(y_t[:, t], [-1, 1])], axis=1),
_weights = self._weights['Decode_layer_yt_weights'],
_bias = self._weights['Decode_layer_yt_bias'],
_activation = None,
_dtype = tf.float32,
_is_bias = True, )
(self.decode_cell, self.decode_hidden) = self._LSTMCell(h_t_1 = self.decode_hidden,
s_t_1 = self.decode_cell,
x_t = y_t_,
name = 'Decode_LSTMCell')
pre_y_ = self._Dense(_input = tf.concat([self.decode_hidden, self.decode_cell], axis=1),
_weights = self._weights['Decode_layer_output_1_weights'],
_bias = self._weights['Decode_layer_output_1_bias'],
_activation = None,
_dtype = tf.float32,
_is_bias = True, )
pre_y = self._Dense(_input = pre_y_,
_weights = self._weights['Decode_layer_output_2_weights'],
_bias = self._weights['Decode_layer_output_2_bias'],
_activation = None,
_dtype = tf.float32,
_is_bias = True, )
return pre_y
1.2 总体架构
论文中提出的BC-MODWT-DA-LSTM混合模型架构如下图所示:
在该模型中,首先通过BC-MODWT 对输入的时间序列数据进行分解,将其分解为多个子层,每个子层代表不同的频率成分。以此使得模型能够更好地捕捉输入数据中的多尺度周期性和非线性特征。与传统的离散小波变换(DWT)相比,BC-MODWT 能够处理任意大小的样本,并且通过边界校正减少了数据失真和预测误差。将分解后的数据输入到双阶段注意力机制中,分别计算输入特征和时间步的注意力权重,将经过注意力机制处理后的数据输入到LSTM中进行预测,再将预测的结果进行反归一化后得到最终的预测输出。
1.3 实验分析
(1)数据集
研究所采用的水质数据来自三岔口水质监测站(北纬 3908 度,东经11711度,海拔 3.3 m AMSL),气象数据来自天津市中心54527 号气象站(北纬3944 度,东经11703 度,海拔3.5 m AMSL)
(2)评估标准
1)RMSE
2)MAE
3)NSE
4)AUC
ROC曲线分别在Y轴和X轴上绘制“敏感性”和“1-特异性”,并通过 ROC曲线下面积(AUC)进行评估。AUC值的范围是0到 1.值越高,模型的性能越好。
(3)实验结果
相关性分析:
使用皮尔逊相关系数分析输入特征与目标变量(NH₃-N)之间的相关性。结果显示,NH₃-N与溶解氧(DO)的相关性最高,其次是pH、风速(WDSP)和化学需氧量(COD)。
为了进一步优化特征选择,使用随机森林递归特征消除(RF-RFE)和交叉验证(CV)方法筛选出最优特征集。最终选择的特征包括NH₃-N、DO、pH和风速(WDSP)。
在实验中,作者首先将LSTM与DA-LSTM预测效果进行对比,下图是LSTM与DA-LSTM模型的泛化能力实验对比:
通过上述实验结果可以发现,通过引入注意力机制,DA-LSTM 增加了关键特征和时刻的隐藏状态的权重,从而提高了预测的准确性。
上图是两种模型的每日绝对误差的箱形图,DA-LSTM 的大误差(异常值)明显小于 LSTM。可以发现DA-LSTM 模型更能适应非典型条件,是一个更稳健的模型。在面对水质波动或污染事件的地表水,DA-LSTM 模型的预测可以提供比传统模型更高的精度,在实际应用中发挥了更大的作用。
上图是BCMODWT-DA-LSTM 混合模型与 SVR、LSTM 和 DA-LSTM 在NH3-N 预测中的性能。
由上述实验结果发现典型的机器学习模型难以处理长期相关性。当预测提前期增加到7天时,BCMODWT-DA-LSTM 模型的结果与观测数据拟合最好,这意味着当 NH3-N 污染较高时,新开发的混合型具有更好的预警功能。
上图显示了不同预测提前期下 NSE 和 RMSE 值的变化。所有模型均显示,随着预测提前期的增加,NSE下降,RMSE升高,这意味着水质预测越远越困难。然而,BCMODWT-DA-LSTM 模型的 NSE值非常稳定。这表明BC-MODWT-DA-LSTM 模型可以更有效地提取输入数据的多尺度周期性和非线性,从而获得优异的预测精度和低偏差。
总结
通过本周的学习,我又了解到了一种与注意力机制相结合的LSTM模型–DA-LSTM,它与注意力机制的结合方式与之前学过的ALGAN中LSTM与注意力机制的结合方式不同。ALGAN中注意力机制直接作用于LSTM的输出,调整隐藏状态以减少信息丢失。而本篇论文中,注意力机制分为两个阶段,分别处理输入特征和时间步,帮助模型更好地捕捉长时间序列中的关键信息。可以考虑,两者一起结合是否有更好的效果呢?