通读【基于深度学习的网络异常流量检测研究与系统实现】
基于深度学习的网络异常流量检测研究与系统实现
- 摘要
- 绪论
- 研究现状
- 研究内容
- 相关技术与理论
- 异常流量
- 网络攻击
- 循环神经网络
- 长短时记忆网络
- 门控循环单元
- 注意力机制
- 自编码器
- 基于时空融合的网络异常流量检测模型
- 模型总体架构
- 数据预处理模块
- 流量特征学习模块
- 检测分类模块
- 实验与分析
- 数据集介绍
- 实验结果分析
- 基于注意力机制和自编码器的改进网络异常流量检测模型
- 基于CBAM和AE的改进网络异常流量检测模型
- CBAM模块
- AE模块
- 融合CBAM和AE的改进模型架构
- 实验结果分析
论文索引:高嘉.基于深度学习的网络异常流量检测研究与系统实现[D].石河子大学,2023.DOI:10.27332/d.cnki.gshzu.2023.001160.
摘要
所作贡献:
1.提出了一种基于CNN和GRU网络的时空融合网络异常流量检测模型。该模型能够利用CNN网络提取流量数据包的空间特征,GRU网络提取流量数据包的时序特征,同时结合时空两种特征以增强流量数据的表达能力。
2.提出了一种基于自注意力机制和自编码器的改进网络异常流量检测模型。注意力机制负责提升模型对于重要信息的关注程度,而自编码器则通过在不同的维度上进行特征压缩来进一步挖掘数据中的潜在信息。
绪论
研究现状
目前主流的几种网络异常流量检测方法,以技术手段为划分依据:
优点及问题:
1.基于数理统计的方法的优点是其不需要相关的先验知识,因此可以检测出未知的异常类型。但是,这种方法的弊端也是显而易见的,攻击者可能会通过训练模型来模拟正常流量,使得恶意攻击流量与正常流量难以区分,进而导致系统很难发现它们之间的差异。与此同时,阈值也很难确定,就需要对误报率和准确率进行取舍。
2.基于数据挖掘的异常流量检测方法同样可以实现对于未知异常流量的检测,并且自动化程度更高,性能更好。但是其也存在诸如标记缺乏、数据高维、算法效率低、误报率高等不足,都需要进一步进行解决。
3.传统的机器学习模型的性能对于人工提取的特征具有较大的依赖性,但是当前实际场景中网络流量的特征维度较大,通常包含了大量的噪声,因此,在数据预处理阶段需要我们根据经验去进行合适的特征选择,而这个过程往往需要消耗大量的人力和时间成本。
4.将深度学习方法应用到网络异常流量检测领域取得了十分显著的效果,而这也将成为未来的主要研究方向。
研究内容
相关技术与理论
异常流量
异常流量,即非正常流量,指的是偏离了正常的流量模式,从而可引起怀疑的网络数据流。
异常流量可以根据其表现形式划分为三类:点异常、集合异常和上下文异常。
1.点异常是指在数据集中出现了单独的点或数据点对,其特征值显著偏离了其他数据点的分布范围。
2.集合异常是指在数据集中,出现了一组相似数据,其特征表现与其余数据构成的集合具有较大的差异性。当一个集合存在异常时,单独的实例样本可能看起来没有问题,但如果它们组成了整个集合,就会被认为是异常的。
3.上下文异常是指在一个特定的上下文环境中,某些事件或行为的发生是不正常的或者与正常的预期情况不符。
网络攻击
网络攻击是导致异常数据产生的主要原因,而根据其攻击方式的不同,通常可以将其分为以下四种:
1.探测攻击(Probe):攻击者使用特定的扫描工具扫描整个网络或特定的主机,以发现存在的漏洞或系统中的弱点,从而进一步入侵系统并造成严重的损害,其往往也是渗透测试的第一步。
2.拒绝服务攻击(DoS):主要是通过发送大量的垃圾数据请求或数据包来消耗系统的带宽、计算资源、内存等,从而使得系统瘫痪,不能正常服务。
3.用户提权攻击(U2R):黑客利用用户账号的特权在系统中执行恶意操作,从而获得系统管理员(Root)的权限,它是一种危害性极高的网络攻击形式。
4.远程本地用户攻击(R2L):攻击者利用被攻击的计算机系统的用户身份在本地计算机系统上进行的攻击,这种攻击的目的通常是在被攻击的本地计算机系统上进行数据收集、数据删除、恶意软件安装等,因此其危害可能比其他攻击方式更为严重。
根据上述对于异常和攻击的描述和分析,我们将四种网络攻击与三种异常对应起来,由于DoS攻击会发送一系列连续的垃圾数据,因此将其划分为集合异常,Probe攻击是为了收集特定信息进而达到某种目的,因此将其划分为上下文异常,而U2R和R2L则被划分为点异常:
循环神经网络
循环神经网络(Recurrent Neural Network,RNN)是一类常用于序列数据处理的特殊神经网络,其结构类似于前馈神经网络,但它的特殊之处在于,其内部多了一个反馈回路机制。RNN中的神经元不仅与前一层的神经元有连接,与同一层的神经元也有连接,这样就形成了一个循环结构,RNN在每一次处理序列数据时,都会通过不断地循环传递来记忆历史信息,进而得到更加精确的结果。以下是RNN的展开结构图。
上图中的
x
、
S
x、S
x、S和
O
O
O分别表示输入层、隐藏层和输出层的值,
U
U
U为输入层到隐藏层的权重矩阵,
V
V
V为隐藏层到输出层的权重矩阵,
W
W
W为隐藏层自循环的权重矩阵。具体计算公式如下所示:
O
t
=
g
(
V
S
t
)
O_t=g(VS_t)
Ot=g(VSt)
S
t
=
h
(
U
x
t
+
W
S
t
−
1
)
S_t=h(Ux_t+WS_{t-1})
St=h(Uxt+WSt−1)
其中
g
g
g和
h
h
h是激活函数,由上式中可以看出,RNN中当前时间步的隐状态
S
t
S_t
St是由上一时间步的隐状态
S
t
−
1
S_{t-1}
St−1和当前时间步的输入信息
x
t
x_t
xt共同计算得到的,因此具有了对序列信息处理和预测的能力。
尽管RNN在对时序数据的处理上已经表现出了其优越性,但是其也存在很多问题。例如,由于RNN是一种复杂的循环结构,所以在进行训练时,难以并行训练,训练难度高,而且还存在梯度爆炸或消失等问题。
长短时记忆网络
长短时记忆网络(Long-Short Term Memory,LSTM)是为了解决传统RNN在处理长期依赖关系时的问题而提出的。它引入了一种“门”的机制,来控制信息的流动,从而有效的改善了梯度消失的问题。
LSTM基本结构是由一个或多个LSTM单元组成,其单元结构如下所示,每个LSTM单元包含三个门:输入门、遗忘门和输出门。输入门
i
t
i_t
it负责决定当前时间步的输入信息被记录到记忆细胞中的程度,遗忘门
f
t
f_t
ft负责决定前一时间步的记忆细胞中的信息是否需要被遗忘以及遗忘的程度,输出门
o
t
o_t
ot负责决定当前时间步的记忆细胞是否需要通过输出层输出。
门控循环单元
门控循环单元(Gated Recurrent Unit,GRU)是在LSTM基础上做出的进一步改进,它简化了LSTM的结构,只有两个门:更新门
z
t
z_t
zt和重置门
r
t
r_t
rt。更新门是遗忘门和输入门的结合体,决定丢弃哪些旧信息,添加哪些新信息,重置门决定写入多少上一时刻的网络状态,用来捕捉短期记忆,结构更简洁,计算更高效,效果又与LSTM不相上下,因此正在广泛应用在各个领域。
x
t
x_t
xt代表GRU网络输入数据中的样本,
h
t
h_t
ht为时刻
t
t
t的输出值,
h
~
t
\widetilde{h}_t
h
t为候选记忆,表示时刻
t
t
t的状态。
重置门
r
t
r_t
rt负责短期记忆,它通过Sigmoid激活函数计算出一个重置门的权重值(0到1之间),用于控制上一时刻的状态该有多少被写入当前时刻的状态。
h
~
t
\widetilde{h}_t
h
t和
r
t
r_t
rt的具体公式如下:
{
r
t
=
σ
(
W
r
⋅
[
h
t
−
1
,
x
t
]
)
h
~
t
=
t
a
n
h
(
W
h
~
⋅
[
r
t
⋅
h
t
−
1
,
x
t
]
)
\begin{cases} r_t=\sigma(W_r\cdot [h_{t-1},x_t]) \\ \widetilde{h}_t=tanh(W_{\widetilde{h}}\cdot [r_t\cdot h_{t-1},x_t]) \end{cases}
{rt=σ(Wr⋅[ht−1,xt])h
t=tanh(Wh
⋅[rt⋅ht−1,xt])
其中
σ
\sigma
σ为Sigmoid激活函数,
W
r
W_r
Wr为重置门的权重矩阵。
更新门
z
t
z_t
zt负责长期记忆,用于决定要保留多少新信息,并且添加多少新信息到当前时刻的隐藏状态中,它的值与上一时间节点的输出信息
h
t
−
1
h_{t-1}
ht−1和当前时间节点的输入信息
x
t
x_t
xt有关,其公式与重置门类似,不同之处在于权重和门的使用。输出信息
h
t
h_t
ht和更新门
z
t
z_t
zt公式如下:
{
z
t
=
σ
(
W
z
⋅
[
h
t
−
1
,
x
t
]
)
h
t
=
(
1
−
z
t
)
⋅
h
t
−
1
+
z
t
⋅
h
~
t
\begin{cases} z_t=\sigma(W_z\cdot [h_{t-1},x_t]) \\ h_t=(1-z_t)\cdot h_{t-1}+z_t\cdot \widetilde{h}_t \end{cases}
{zt=σ(Wz⋅[ht−1,xt])ht=(1−zt)⋅ht−1+zt⋅h
t
其中,
W
t
W_t
Wt为更新门的权重矩阵,更新门
z
t
z_t
zt的范围为0到1之间,
z
t
z_t
zt越接近于1,代表其“记忆”下来的数据越多。
注意力机制
注意力机制(Attention Mechanism)是一种人工智能技术,它在神经网络中模拟了人类的注意力分配机制,通过对输入数据的加权关注,使得神经网络更加聚焦于重要信息,从而提升了模型的性能和可解释性。注意力机制通常实现为神经网络中的一层,它根据当前的输入和模型状态计算出每个位置的注意力权重,并用权重加权输入序列,得到一个加权后的向量,作为下一个隐藏层的输入。
注意力机制通常可以抽象为三个阶段,其具体计算过程如下:
阶段1:根据输入的Query和Key去计算二者的相似性或相关性,在计算相似性的过程中可以使用向量点积、Cosine相似性等方法,公式如下,其中
F
d
p
F_{dp}
Fdp表示点积相似计算函数,
F
c
o
s
F_{cos}
Fcos表示Cosine相似计算函数。
F
d
p
(
Q
u
e
r
y
,
K
e
y
i
)
=
Q
u
e
r
y
⋅
K
e
y
i
F_{dp}(Query,Key_i)=Query\cdot Key_i
Fdp(Query,Keyi)=Query⋅Keyi
F
c
o
s
(
Q
u
e
r
y
,
K
e
y
i
)
=
Q
u
e
r
y
⋅
K
e
y
i
∣
∣
Q
u
e
r
y
∣
∣
⋅
∣
∣
K
e
y
i
∣
∣
F_{cos}(Query,Key_i)=\frac{Query\cdot Key_i}{||Query||\cdot ||Key_i||}
Fcos(Query,Keyi)=∣∣Query∣∣⋅∣∣Keyi∣∣Query⋅Keyi
阶段2:在获取到Q与每个Key之间的相似度得分之后,需要将这些得分映射到
[
0
,
1
]
[0,1]
[0,1]的概率空间中,以便更好地体现重要元素的权重,计算方法如下,其中
a
i
a_i
ai为权重系数,
S
i
S_i
Si为注意力得分。
a
i
=
S
o
f
t
m
a
x
(
S
i
)
=
e
x
p
(
S
i
)
∑
j
=
1
e
x
p
(
S
j
)
a_i=Softmax(S_i)=\frac{exp(S_i)}{\sum_{j=1}^{}exp(S_j)}
ai=Softmax(Si)=∑j=1exp(Sj)exp(Si)
阶段3:根据权重系数
a
i
a_i
ai对Value进行加权求和,从而计算出Attention Value,公式如下:
A
t
t
e
n
t
i
o
n
(
Q
u
e
r
y
,
S
i
)
=
∑
i
=
1
a
i
⋅
V
a
l
u
e
i
=
∑
j
=
1
e
x
p
(
S
i
)
∑
j
=
1
e
x
p
(
S
j
)
Attention(Query,S_i)=\sum_{i=1}^{}a_i\cdot Value_i=\sum_{j=1}^{}\frac{exp(S_i)}{\sum_{j=1}^{}exp(S_j)}
Attention(Query,Si)=i=1∑ai⋅Valuei=j=1∑∑j=1exp(Sj)exp(Si)
注意力机制的优点主要体现在两个方面:首先,它可以避免因输入数据长度不同而产生的问题;其次,因为它只需要关注序列中最重要的元素,而不是整个序列中的每一项元素,所以它可以使模型更加的高效。
自编码器
自编码器(Autoencoder,AE)是一种无监督学习的网络模型,它的主要目标是将输入数据进行压缩编码,并将其解码回原始数据。其核心思想是通过学习数据的低维表示来发现数据中的隐藏结构。下图为自编码器结构图。
自编码器主要由两个部分组成:编码器和解码器。编码器负责将输入数据转换为低维度的表示,而解码器则负责将这些表示转换为更高维度的信息。自编码器旨在通过训练,使解码器的输出尽可能接近原始数据,同时保留低维度表示的丰富信息。在自编码器的训练过程中,为了最大限度地减少重构误差,模型会采用均方误差(MSE)或交叉熵(Cross-Entropy)来计算,以便更好地学习编码器和解码器的参数。此外,为了避免过拟合,自编码器还会采用一些正则化技术,如L1或L2正则化,或者采用 Dropout 等方法来进行优化。
基于时空融合的网络异常流量检测模型
模型总体架构
在网络中,用户产生的流量包在传输过程中是分段的,每个流量包的IP字段反映了网络数据流的空间特征,考虑到流量数据的空间特征,在模型的特征学习模块的第一层采用CNN神经网络提取网络流量的高级特征。同时,结合了门控循环单元(GRU)对时序特征的处理优势,以CNN神经网络抽取到的网络流量高级特征为GRU网络的输入参数,实现长序列预测,有效的解决了GRU网络难以获取输入特征这一问题。
文章设计出一种基于CNN-GRU的时空融合网络异常流量检测模型,该模型主要由三个部分组成:数据预处理模块、流量特征学习模块以及检测分类模块。
数据预处理模块
采用原始流量包用作异常流量检测的分析,通过Wireshark可以发现(文章描述的数据集是以.pcap格式存在的,但是我下载得到的数据集却是.csv格式的,这可能会对数据格式转化造成影响,这个部分存疑),原始流量包是一系列16进制编码的数据。数据预处理提取流量特征的过程如下所示。
可以看到数据预处理过程主要核心步骤是数据流切分和数据流提取。
1.数据流切分:原始的pcap流量文件由一系列数据包组成,假定数据包的数量为
n
n
n,那么可以将其表示为
P
=
p
1
,
p
2
,
.
.
.
,
p
n
P={p_1,p_2,...,p_n}
P=p1,p2,...,pn。对于每一个数据包
p
i
p_i
pi,可以给出其定义。
p
i
=
(
q
i
,
t
i
,
s
i
)
p_i=(q_i,t_i,s_i)
pi=(qi,ti,si)
其中,
q
i
q_i
qi表示数据包的五元组信息:源IP(srcip)、目的IP(dstip)、源端口号(srcport)、目的端口号(dstport)和传输层所用的网络协议(protocol)。
t
i
t_i
ti表示数据包
p
i
p_i
pi的开始时间,
s
i
s_i
si表示数据包的大小。流(
P
f
l
o
w
P_{flow}
Pflow)可以定义为一组拥有相同五元组属性的数据包的集合,其公式如下所示。
P
f
l
o
w
=
{
p
1
=
(
q
1
,
t
1
,
s
1
)
,
p
2
=
(
q
2
,
t
2
,
s
2
)
,
.
.
.
,
p
n
=
(
q
n
,
t
n
,
s
n
)
}
P_{flow}=\{p_1=(q_1,t_1,s_1),p_2=(q_2,t_2,s_2),...,p_n=(q_n,t_n,s_n)\}
Pflow={p1=(q1,t1,s1),p2=(q2,t2,s2),...,pn=(qn,tn,sn)}
上述公式中,流中数据包的五元组属性相同,于是有
q
1
=
q
2
=
.
.
.
=
q
n
q_1=q_2=...=q_n
q1=q2=...=qn,且数据包的开始时间满足
t
1
<
t
2
<
.
.
.
<
t
n
t_1<t_2<...<t_n
t1<t2<...<tn。文章使用SplitCap工具根据流的维度对原始pcap流量文件进行切割,在切割后获得的流中发现,在某一特定时间范围内流中的数据包数量不一,并存在较大差异。因此,文章不考虑使用整个流中的所有数据包。
2.数据流提取:网络中的一些字段通常不用于作为特征进行研究,如:以太网层的MAC源地址、MAC目的地址、协议版本(protocol version)以及网络层中的版本和差异化服务(Differentiated Services),这些字段对于模型的性能提升作用甚微。同时,在实验中发现大多数流中的数据包数小于10个,仅有少数超过10个,每个数据包中的有效载荷大小也不相同。为了确保输入到模型中的数据具有相同的维度,对于每个流文本只截取前10个数据包,每个数据包只截取160字节(160字节就是1280位,这个部分有点疑问,一个数据包转换为十六进制的txt后会有这么多位数吗?)。因此,文章从每个流中提取了1600维原始数据进行实验。
详细的流数据提取算法主要包含两个步骤,输入数据是原始流量pcap数据包,输出数据为含有标签的流flow数据。
步骤1:将pcap文件转换成txt文件
对于每一个流量包首先根据五元组信息获取流,然后对于每一个流利用tshark工具将其转换成txt文件,从而得到流的原始16进制数据。
步骤2:从txt文件中提取原始流特性
首先截取txt流文件的前10个数据包用于后续处理,对于不足10个数据包的流文件,则用0来进行填充。对于每个数据包,再截取其前160个字节,对于长度超过160个字节的数据包只保留前160个字节,对于不足160个字节的数据包,则用0来进行填充。
流提取伪代码如下:
流量特征学习模块
文章提出的CNN-GRU模型中,第一层使用CNN卷积神经网络进行流量数据空间特征的提取,CNN卷积神经网络具体参数如下:
为了避免过拟合问题,在全连接层之后使用dropout操作,将部分神经元随机灭活,其灭活比例设置为0.5。
GRU的网络设计不再赘述。
检测分类模块
使用Softmax分类器进行分类,可以计算预测网络流量是否异常的概率。其中函数
ς
\varsigma
ς的输入是的输出向量
z
z
z,其维度为2维。函数
ς
\varsigma
ς的输出也是一个2维的向量
y
i
y_i
yi,其值在0到1之间,表示分类结果为正常和异常的概率。公式如下:
KaTeX parse error: Expected group after '_' at position 25: …igma(z)_i=\frac_̲{e^{z_t}}{\sum_…
实验与分析
数据集介绍
CICIDS-2017数据集是一个常用于网络安全评估的数据集,由加拿大网络安全研究所提供。相较于传统的异常流量检测数据集(如KDD99、NSL-KDD等),该数据集涵盖了现阶段各种最新的攻击类型,更加符合当今现代化的网络状态。因此文章采用CICIDS-2017数据集进行网络异常流量检测的研究,CIC官方提供了原始的pcap流量数据、包含标记的流文件GeneratedLabelledFlows和进一步处理后专用于机器学习训练的MachineLearningCSV文件,为了充分利用网络流量中隐含的所有特征信息,文章选择对原始的pcap流量文件进行处理后进行实验。
文章通过在原始pcap流量文件中提取正常流量和10种异常攻击流量作为研究模型的训练集和测试集。最终提取的训练和测试数据的标签及其数量如下所示。
经过处理后,原始的pcap流量变成了1600维的数据,从每种特征数据中随机抽取2条记录,将其转化为40*40的灰度图并可视化,各类样本其灰度图形式如下:
从图中可以看出,不同类型的样本之间差异较明显,例如Normal和PortScan,很容易可以看出两种样本之间的纹理特征不同。但是也有一些样本比较相似,差异较小,例如Bonet和Web attack。与此同时,通过对样本特征分布的观察,可以发现同类型的样本之间具有相似的特征分布,不同类型的样本之间往往具有较大的特征差异。因此,文章将特征数据转换成灰度图进行处理,为分类问题的解决提供了极大的便利。
实验结果分析
每种样本的编码标签如下所示,其中0表示正常流量,1表示异常流量。
(1)网络模型参数的确定
鉴于神经网络的参数对于网络模型的性能具有较大的影响,本节在开始部分对于空间特征提取模块(CNN网络)中的一些参数进行了实验性调整和分析。
①通道数
本章通过实验对于卷积的通道数进行了分析,以确定最佳的卷积通道数。具体来说,实验分别设置了第一层卷积的通道数为8、16、32、64和128,在其他参数保持不变的条件下,比较了通道数对模型分类精度的影响。不同通道数下的检测准确率如下所示。
本章模型CNN网络的第一层通道数设置为32个。
②CNN网络层数
因为CNN在网络层数较深时会产生梯度爆炸、梯度消失等现象,于是为了探寻到恰当的CNN网络层数,本章选择卷积层数从1层到4层进行实验,比较准确率,整个实验过程中其余参数保持不变,实验结果如下。
本章选择使用2层卷积网络作为最终方案。
③GRU网络层数
不同的GRU层数对于模型的性能也会产生不同的影响,为了寻找到最优的层数,同样在保持其余参数不变的情况下,分别设置GRU的层数为1层、2层、3层、4层进行实验,实验结果如下。
可见,3层GRU在检测准确率与成本权衡后为最优设置(?不是2层吗)。
(2)分类实验
为了证明本章提出的模型在异常流量监测方面的有效性,本章在CICIDS-2017数据集上分别与经典的机器学习算法RNN、RF等以及单一深度学习模型CNN、GRU进行了对比实验,实验结果如下。
本章提出的模型在准确率、精确率、召回率、F1分数这四个评价指标上的表现均优于传统机器学习算法,体现了深度学习在进行异常流量检测任务时的优越性。此外,相较于单一的深度学习模型,本章提出的时空融合模型的表现也更好,这表明本章提出的模型确实能够学习到数据流更深层次的抽象特征,并且具有更优的性能。
最后,为了更清楚地展示模型对于样本的实际分类情况,绘制了混淆矩阵,如下图所示。从图中可以看出,本章的模型对于绝大多数样本的分类都是正确的,更加直观地表明了本章模型的有效性。
基于注意力机制和自编码器的改进网络异常流量检测模型
注意力机制负责提升模型对于重要信息的关注程度,而自编码器则通过在不同的维度上进行特征压缩来进一步挖掘数据中的潜在信息。
基于CBAM和AE的改进网络异常流量检测模型
CBAM模块
卷积块注意力模块(Convolutional Block Attention Module,CBAM)是一种计算机视觉领域中的注意力机制块,它可以在卷积神经网络中作为一个模块,对特征图上的特征进行动态权重赋值,从而提高模型对于关键信息的注意力,并最终提升模型的检测效果。相较于其它的单一注意力机制块,CBAM模块包含通道注意力模块和空间注意力模块两部分,可以同时对通道和空间两个维度的信息进行动态赋权,能够更好地提高特征表示的表现力。CBAM模块结构如下。
在CBAM模块内,输入特征图首先通过通道注意力模块进行通道注意力加权,然后再通过空间注意力模块进行空间注意力加权,最后得到综合通道注意力和空间注意力加权赋值后的重构特征图,整个过程可以用如下公式表示。
A
′
=
M
c
(
A
)
⊗
A
A^\prime=M_c(A)\otimes A
A′=Mc(A)⊗A
A
′
′
=
M
s
(
A
′
)
⊗
A
′
A''=M_s(A^\prime)\otimes A^\prime
A′′=Ms(A′)⊗A′
其中,
A
A
A表示输入特征图,
M
c
M_c
Mc表示通道注意力加权,
M
s
M_s
Ms表示空间注意力加权,
⊗
\otimes
⊗表示同位元素相乘。
(1)通道注意力模块
通道注意力模块主要用于学习整个输入张量通道之间的依赖关系,并使用这些关系为每个输出位置生成权重,以便再后续处理中可以加权地考虑每个通道,进而选择关注更为重要的通道。通道注意力模块通常使用全局池化和全连接层来计算每个通道的权重,最终通过将权重与每个通道对应的特征图进行点积来获得加权后的结果。通道注意力模块结构如下。
在通道注意力模块中,会首先对输入特征图
A
A
A进行全局平均池化和全局最大池化,以提取到更加丰富的高级特征。然后利用共享多层感知机网络对于两种池化的结果进行相应的处理,处理之后再进行加和以及Sigmoid激活操作,便得到了各个特征通道的权重。最后,将得到的权重值通过乘法操作逐通道加权到原来的输入特征图中,便得到了通道注意力加权后的特征图
A
′
A'
A′。通道注意力权值计算过程如下。
M
c
(
A
)
=
σ
(
M
L
P
(
G
l
o
A
v
g
P
o
o
l
(
A
)
)
+
M
L
P
(
G
l
o
M
a
x
P
o
o
l
(
A
)
)
)
=
σ
(
ω
1
(
ω
0
(
A
a
v
g
c
)
)
+
ω
1
(
ω
0
(
A
m
a
x
c
)
)
)
M_c(A)=\sigma(MLP(GloAvgPool(A))+MLP(GloMaxPool(A)))\\ =\sigma(\omega_1(\omega_0(A^c_{avg}))+\omega_1(\omega_0(A^c_{max})))
Mc(A)=σ(MLP(GloAvgPool(A))+MLP(GloMaxPool(A)))=σ(ω1(ω0(Aavgc))+ω1(ω0(Amaxc)))
其中,
ω
\omega
ω表示Sigmoid激活操作,
A
a
v
g
c
A^c_{avg}
Aavgc表示对于特征图
A
A
A进行全局平均池化操作,
A
m
a
x
c
A^c_{max}
Amaxc表示对于特征图
C
C
C进行全局最大操作,
ω
0
\omega_0
ω0和
ω
1
\omega_1
ω1分别为第一层和第二层的全连接权重值。
(2)空间注意力模块
空间注意力模块的主要作用是提取图像中不同区域对特征的贡献,从而得到图像的空间关注区域。通常再空间注意力模块中,会对特征图的每一个位置的权重进行计算,最终得到的空间权重分布是一个二维的概率分布图。这个概率分布图可以作为加权系数,对特征图进行加权,从而得到空间注意力加权后的特征图。空间注意力模块结构如下所示。
CBAM的空间注意力模块首先会对已加权的特征图
A
′
A'
A′在通道维度上分别进行全局最大池化和平均池化,接着将经过池化的特征图进行堆叠。然后在此基础上使用7*7的大卷积核进行卷积,以提升感受野并降低特征图的通道数。最后,将提取到的特征图通过Sigmoid激活函数得到空间注意力特征图,并将该特征图与输入特征图相乘得到最终特征图。空间注意力权值计算过程如下。
M
s
(
A
′
)
=
σ
(
f
7
×
7
(
[
G
l
o
A
v
g
P
o
o
l
(
A
′
)
;
G
l
o
M
a
x
P
o
o
l
(
A
′
)
]
)
)
=
σ
(
f
7
×
7
(
A
a
v
g
′
s
;
A
m
a
x
′
s
)
)
M_s(A')=\sigma(f^{7×7}([GloAvgPool(A');GloMaxPool(A')]))\\ =\sigma(f^{7×7}(A'^s_{avg};A'^s_{max}))
Ms(A′)=σ(f7×7([GloAvgPool(A′);GloMaxPool(A′)]))=σ(f7×7(Aavg′s;Amax′s))
其中,
σ
\sigma
σ表示Sigmoid激活操作,
A
a
v
g
′
s
A'^s_{avg}
Aavg′s表示对于特征图
A
′
A'
A′进行全局平均池化操作,
A
m
a
x
′
s
A'^s_{max}
Amax′s表示对于特征图
A
′
A'
A′进行全局最大池化操作。
AE模块
自编码器(Autoencoder,AE)是一种常用的数据压缩算法,它由编码器(Encoder)和解码器(Decoder)两个部分组成。自编码器的目的是将输入数据编码成一个更简短的表示,然后再通过解码器解码成与原始数据尽量接近的数据,从而进行特征学习。通常的做法是将输入数据压缩到一个更低维的空间中,再通过解码器还原出原数据。在训练的过程中,通过逐步优化编码器和解码器,以最小化重构误差,使得输入数据在编码器的输出空间中更加紧凑。文章所用的自编码器结构如下。
输入数据
d
d
d经过编码器进行编码以压缩特征,表示如下。
z
=
f
e
n
(
d
)
=
σ
e
n
(
μ
e
n
d
+
b
e
n
)
z=f_{en}(d)=\sigma_{en}(\mu_{en}d+b_{en})
z=fen(d)=σen(μend+ben)
其中,
f
e
n
f_{en}
fen表示对于输入数据
d
d
d进行编码器编码运算,
μ
e
n
\mu_{en}
μen表示编码器中的权重参数,
b
e
n
b_{en}
ben表示编码器洪的偏置参数,
σ
e
n
\sigma_{en}
σen为
R
e
l
u
Relu
Relu激活函数。
输入数据
d
d
d通过编码器编码后,得到了压缩特征
z
z
z。然后将其输入到解码器中进行解码运算,公式表示如下。
d
′
=
f
d
e
(
z
)
=
σ
d
e
(
μ
d
e
z
+
b
d
e
)
d'=f_{de}(z)=\sigma_{de}(\mu_{de}z+b_{de})
d′=fde(z)=σde(μdez+bde)
其中,
f
d
e
f_{de}
fde表示对于压缩特征
z
z
z经过解码器解码运算,
μ
d
e
\mu_{de}
μde表示解码器中的权重参数,
b
d
e
b_{de}
bde表示解码器中的偏置参数,
σ
d
e
\sigma_{de}
σde为
S
i
g
m
o
i
d
Sigmoid
Sigmoid激活函数。
接下来,自编码器将通过反向传播不断优化模型参数,以减低解码器输出
d
′
d'
d′与输入数据
d
d
d之间的误差。这一过程如下所示。
H
(
d
,
d
′
)
=
a
r
g
m
i
n
1
m
∑
i
m
∣
∣
d
i
−
d
i
′
∣
∣
2
H(d,d')=argmin\frac{1}{m}\sum_{i}^{m}||d_i-d'_i||^2
H(d,d′)=argminm1i∑m∣∣di−di′∣∣2
其中,
H
H
H为最小化误差计算函数,
m
m
m为样本数。
本章的编码器和解码器均为两层全连接网络,编码器和解码器的具体参数如下。
1600维的输入数据通过编码层1先被压缩为1200维,再通过编码层2被压缩为800维。之后,再通过解码层1解码成1200维,解码层2解码成1600维。在整个过程中不断优化模型参数以降低输入和输出数据之间的误差,最终实现用800维数据来表征原始的1600维数据,实现了数据降维的目的。
融合CBAM和AE的改进模型架构
基于注意力机制和自编码器的改进网络异常流量检测模型主要由三个部分组成:融合CBAM的改进卷积神经网络模块、AE模块、GRU循环神经网络模块。在改进的卷积神经网络模块中,CBAM模块在每一层最大池化层后添加,以实现通道和空间注意力赋权,从而进一步赋予了模型特征选择的能力。同时,输入数据还通过AE模块进行特征压缩,学习原始数据在不同层次上的隐藏特征。最后,将原始数据通过改进卷积神经网络模块和AE模块获得的高级特征进行融合后,输入到GRU循环神经网络模块中进行进一步特征提取,最终通过Softmax分类器输出分类结果。融合CBAM和AE的改进模型架构如下。
相比于基于CNN-GRU的时空融合网络异常流量检测模型,在算法层面,本章引入了空间和通道注意力机制,以进一步提升模型对于输入数据中重要的空间和通道特征的关注。在数据层面,本章引入了自编码器AE模块,以提取出抽象的高维特征,同时融合改进CNN网络提取出的空间特征,输入到GRU网络中进行时序特征提取,进一步提升了模型的分类精度和鲁棒性。
接下来将详细介绍主要的三个部分。
(1)融合CBAM的改进卷积神经网络模块
该模块主要是在卷积神经网络每一层最大池化层后引入了通道注意力机制和空间注意力机制,添加了CBAM模块进行通道注意力和空间注意力赋权,使模型关注更加重要的通道和空间特征。改进卷积神经网络结构如下。
原始数据首先被处理成40*40的灰度图,接着通过一层包含32个卷积核的卷积层以及一层最大池化层进行特征提取。然后,将提取出的特征图输入到第一个CBAM模块中,进行通道和空间注意力加权,得到第一次加权后的特征图。接着,将加权后的特征图通过一层包含64个卷积核的卷积层和一层最大池化层进行特征提取,再将提取出的特征图输入到第二个CBAM模块中进行注意力加权,得到了二次注意力加权后的特征图。之后,将特征图平坦化并通过一个包含800个神经元的全连接层进行输出,保证与AE模块融合后的特征维度为1600维。最后,为防止过拟合,执行Dropout操作随机灭活部分神经元,灭活比例设置为0.5。
(2)AE模块
为了充分利用数据的内部结构,进一步挖掘原始数据中所隐藏的抽象特征,本章在卷积神经网络提取空间特征的同时,引入了自编码器(AE)模块对于原始数据同步进行特征提取。之后,将卷积神经网络和AE模块提取的特征进行融合后得到综合特征,为了确保综合特征的维度为1600维,AE模块的输出维度设置为800维。
(3)GRU循环神经网络模块
将通过改进卷积神经网络模块和AE模块后得到的综合特征输入到GRU门控循环单元中,可以进一步提取数据中的时序特征,从而进一步提升了模型的识别准确率。
实验结果分析
实验比较了 CNN-GRU 模型引入注意力机制和自编码器前后的性能,实验结果如下所示。
为了验证引入模块的有效性,本文还进行了相关消融实验,对比了单独引入注意力机制或自编码器进行优化后模型在精确率、准确率、召回率以及 F1 分数四个评价指标上的表现效果,实验结果如下所示。
同时结合注意力机制和自编码器优化的本章模型,在各项指标方面均优于时空融合异常流量检测模型以及单一使用注意力机制或自编码器优化的改进异常流量检测模型。