一种卷积输入式的嵌套递归神经网络的设计方法与流程

文档序号:22679136发布日期:2020-10-28 12:38阅读:152来源:国知局
一种卷积输入式的嵌套递归神经网络的设计方法与流程

本发明属于数据处理技术领域,涉及一种递归神经网络单元设计方法,具体涉及一种卷积输入式的嵌套递归神经网络的设计方法。



背景技术:

随着物联网时代网络技术和硬件的发展,用户与互联设备数量呈爆炸式增长。2017年,物联网设备数量首次超越全球人口总数75亿,而到2020年,这个数量预计将会增长到300亿以上。然而物联网设备的应用仍然处于初级阶段,由于设备的大规模数量和自身结构的简单特性,依旧面临着许多的安全隐患。其中最为重要的是来自互联网的恶意入侵的安全问题。

递归神经网络被广泛应用于时间序列的预测;对于来自网络的入侵攻击而言,攻击都具有一定的时效性,尤其ddos攻击可能持续高达几分钟,这就为攻击数据使用递归神经网络建模提供了事实依据。事实上,基于lstm(长短期记忆网络)及其变种的优秀鲁棒性和拟合能力,其已经广泛应用于时间序列预测任务中并取得了远远优于传统机器学习的效果。

随着递归神经网络(rnn)经典结构长短期记忆网络(longshorttermmemory,lstm)的提出,rnn结构的鲁棒性得到提高,更易于训练。自2012年后深度学习的兴起和硬件计算能力的飞速提高,rnn再次成为研究的热门领域,在入侵检测领域,基于深度学习的rnn也取得了更多成就。

门机制是最早最经典的研究。相较于基本的的rnn单元,长短期记忆网络(lstm),增强了传统rnn对于长时间步信息的记忆能力,缓和了梯度消失的问题,奠定了rnn大规模应用的基础。之后简化的gatedrecurrentunit(gru),将长短期记忆网络的4个门简化为2个门,大量减少了参数个数,精度几乎没有下降,这也为rnn的硬件部署提供了可能。nestedlstms构思了一种嵌套式的lstm结构,将原记忆存储单元ct替换为另一个完整的lstm单元,大大增强了长期记忆的能力。convolutionallstm将原lstm结构中的输入及门的矩阵运算替换为二维卷积,提高了传统lstm对于时空信息的记忆能力,较少了参数个数。gridlstm对使用较多的stackedlstm结构提出了改进,构思了一种可以定义维度的lstm结构,可以用于高维度复杂模型的建模。

相关研究人员在rnn时间展开的序列上也做了许多改进。cw-rnn把rnn中每个时间步都连接的隐层改为多组不同递归周期的隐层,使得较远的依赖通过少数几次较长周期隐层递归得到,减小了长依赖信息的学习能力。dilatedrnn提出了一种跳跃连接,能够自由地和不同的rnn单元结合,减少网络参数,提高训练效率。

对于训练中的优化问题,产生了一些权重初始化方法。1.unitary-rnn针对rnn的梯度消失和爆炸问题提出了一种参数矩阵的酉矩阵初始化方法,通过特殊的参数化技巧把权重矩阵表达成一个形式上较复杂但计算上很高效的形式,使得参数更新后新的参数矩阵仍为酉矩阵。2.kanais[preventinggradientexplosionsingatedrecurrentunits[c]//advancesinneuralinformationprocessingsystems.2017:435-444]认为rnn的梯度爆炸是由于非线性系统的分歧点引起的,并在某种情形下找到参数迭代的一个稳定点,控制参数在某个区域内更新从而达到防止梯度爆炸的效果。

rnn在网络入侵检测中也产生了诸多应用。kimj[applyingrecurrentneuralnetworktointrusiondetectionwithhessianfreeoptimization[c]//internationalworkshoponinformationsecurityapplications.springer,cham,2015:357-369.]为解决rnn存在的一些故有问题,提出了hessian树优化方法,避免梯度爆炸和消失对训练造成影响;对kddcup99数据集的数据预处理做了详细的说明,包括符号特征,布尔特征,百分比特征以及数字特征的不同处理方法,舍弃原数据中与攻击无关的特征。kimt-y[webtrafficanomalydetectionusingc-lstmneuralnetworks[j].2018,106(66-76.]提出了一种c-lstm用于网络流量检测的方法,首先利用cnn提取大量数据中的高维特征,然后再将lstm作为分类器进行训练,在yahoos5web数据集上达到98.7%准确率,优于同样的lstm,cnn和gru结构。mcdermottcd[botnetdetectionintheinternetofthingsusingdeeplearningapproaches;proceedingsofthe2018internationaljointconferenceonneuralnetworks(ijcnn),f,2018[c].ieee.]就僵尸网络(botenet)制作了一份数据集,使用词嵌入(wordembedding)的方法进行数据的预处理,再使用blstm结构进行序列建模,结果显示对与单攻击和多攻击向量而言,准确率均达到90%以上。yinc[adeeplearningapproachforintrusiondetectionusingrecurrentneuralnetworks[j].2017,5(21954-61.]将rnn作为入侵检测系统的关键部分,对nsl-kdd数据集做了二分类和多分类的预测,给出了详细实验结果,结果表示优于传统算法。

但是,现有递归神经网络建模网络入侵数据时对长时间序列敏感度差、且测试准确率较低,所以需要一个新的技术方案来解决这个问题。



技术实现要素:

发明目的:为了克服现有技术中存在的现有递归神经网络建模网络入侵数据时对长时间序列敏感度差和测试准确率较低的问题,提供一种卷积输入式的嵌套递归神经网络的设计方法,其在解决了这些问题的基础上,同时一定程度上减少了参数的使用数量,并考虑到了特征之间的局部关联,提高了测试准确率。

技术方案:为实现上述目的,本发明提供一种卷积输入式的嵌套递归神经网络的设计方法,包括如下步骤:

s1:将当前时刻输入数据和上时刻输出数据进行数据组合和卷积操作处理;

s2:对卷积后的结果进行均等拆分,作为原长短期记忆网络单元中的各个门控单元,经过门控计算操作后进入外层单元;处理上时刻保留信息和当前时刻输入,作为内层嵌套单元的输入;

s3:在内层嵌套单元中进行卷积操作作为输入,再进行和长短期记忆网络单元相同的门控计算操作,得出内层嵌套单元的输出;

s4:将内层嵌套单元的输出作为外层单元的记忆单元值,再经由输出门得到整体单元的最终输出值。

进一步的,所述步骤s1具体为:将当前时刻输入数据和上时刻输出数据进行组合,对组合数据中经过数值化处理的每一条数据,选择卷积核进行一维卷积。

进一步的,所述步骤s1和步骤s3中的卷积操作具体为:将每一条数据作为输入,将输出扩增为隐层单元数量的通道数。

进一步的,所述步骤s1和步骤s2中的两个输入部分在原数据的通道数维度下拼接。

进一步的,所述步骤s2中处理好的上时刻保留信息和当前时刻输入信息的组合,等于构成单层长短期记忆网络单元的记忆单元。

进一步的,所述步骤s2和步骤s3中门控计算操作采用激活函数进行计算。

进一步的,所述激活函数包括sigmoid函数和tanh函数。

本发明方法将长短期记忆网络单元中的存储单元替换为一个与外部基本相同的长短期记忆单元,构成一种嵌套结构;将数据输入记忆单元后的矩阵乘法操作改变为一维卷积操作,扩展数据输出维度。对于网络入侵数据而言,递归神经网络已经成为一种重要且行之有效的方法,但是其方法的准确性、参数数量以及计算复杂度一直是其面向场景应用的掣肘。本发明提出了嵌套式的递归神经网络和卷积输入的结合,既提高了模型对拟合长时间关联的数据的性能,又提取了特征关系之间的局部关联,减少了一定的参数量;得较一般的递归神经网络具有更高的准确率和更少的参数。

有益效果:本发明与现有技术相比,将传统的长短期记忆网络单元改进为一种卷积作为输入、内外嵌套传统的长短期记忆网络单元的的新结构,嵌套结构可以使模型拟合长时间序列数据时更加准确,卷积输入可以有效的提取单条特征之间的局部关联,现有递归神经网络建模网络入侵数据时对长时间序列敏感度差和测试准确率较低的问题,与传统的长短期记忆网络单元相比,新的单元结构效果提升明显,能够有效提高测试准确率。

附图说明

图1为卷积输入式嵌套递归神经网络(c-nlstm)内部单元结构图;

图2为第一时间步外层卷积示意图;

图3为其余情况下的卷积示意图;

图4为长短期记忆网络记忆单元示意图;

图5为长短期记忆网络时间展开示意图。

具体实施方式

下面结合附图和具体实施例,进一步阐明本发明。

本发明设计了一种卷积输入式的嵌套递归神经网络(c-nlstm),其设计方法包括如下步骤:

(1)将当前时刻输入数据和上时刻输出数据组合,对数据中经过数值化处理的每一条数据,选择合适的卷积核进行1维卷积;

(2)对卷积后的结果进行均等拆分,作为原长短期记忆网络单元中的各个门控单元,进入外层单元;处理上时刻保留信息和该时刻输入,作为内层嵌套单元的输入。

(3)在内层嵌套单元中进行相似的卷积操作作为输入,再进行和长短期记忆网络单元相同的门控计算操作,得出内层嵌套单元的输出。

(4)将内层嵌套单元的输出作为外层单元的记忆单元值,再经由输出门得到整体单元的最终输出值。

(5)将由步骤(1)-(4)构成的基于卷积输入式的嵌套递归神网络单元进行指定时间步的展开,进行训练和预测。

步骤(1)和(3)中卷积操作具体为:将每一条数据作为输入,将输出扩增为隐层单元数量的通道数。

步骤(1)和(2)中两个输入部分在原数据的通道数维度下拼接。

步骤(2)中处理好的上时刻保留信息和当前时刻输入信息的组合,等于构成单层长短期记忆网络单元的记忆单元。

本实施例中将上述方法进行实际应用,得到如图1所示的卷积输入式嵌套递归神经网络,其具体的设计过程如下:

1、首先数据从外层单元进入,当前输入xt和上一时刻输出ht-1在原数据的通道数维度上进行拼接,形成实际单元输入数据。假设连续t条数据之间相互关联,每条数据具有i个特征,需要进入模型的输入包括:当前外层输入xt和上一时刻输出ht-1。若为初始时间步t=0,则上一时刻输出ht-1不存在,且外层输入xt只有一个通道,输入形状表示为[i,1];其余时间步t=1,2...时,外层输入xt矩阵大小为[i,h],上一时刻输出ht-1矩阵大小为[i,h],所以模型的输入大小为[i,2*h]。

2、进行外层卷积操作,如图2所示,操作过程具体为:对实际单元输入的外层数据进行一维卷积操作,如图2所示,在时间步t=0时,外层一维卷积的计算中,使用一维卷积核[k,1,4*h]对输入数据进行卷积,其中卷积核大小为k,输入卷积通道数为1,输出卷积通道数为4*h。对原输入矩阵进行补零操作,使得卷积后的特征数与卷积之前输入的特征数i相同,卷积输出结果为[i,4*h]。

当进行到时间步t=1及以后时,卷积计算方法如图3所示。此时外层卷积使用一维卷积核[k,2*h,4*h]对输入数据进行卷积,其中卷积核大小为k,输入卷积通道数为2*h,输出卷积通道数为4*h。卷积操作对原输入进行补零操作,使得卷积后的特征数与卷积之前输入的特征数i相同,卷积输出结果为[i,4*h]。

接着将卷积结果在通道数维度上4等分为外层单元的4个门控单元zi,zf,zg,zo,每个单元形状为[i,h]。

zi,zf,zg,zo=[i,h]

长短期记忆网络(lstm)单元的基本原理由公式表示如下:

zf=σ(wfxt+ufht-1+bf)

zi=σ(wixt+uiht-1+bi)

zo=σ(woxt+uoht-1+bo)

ct=zf⊙ct-1+zi⊙tanh(wcxt+ucht-1+bc)

ht=zoθtanh(ct)

ot=f(woht+bo)

依照长短期记忆网络单元的公式对外层输入数据进行处理:

ct=σf(zf)⊙ct-1+σi(zi)⊙σc(zg)

σf,σi和σc为激活函数,这里分别取sigmoid和tanh函数:

经过激活函数sigmoid后,门控单元zf和zi就被缩放为所有值均在[0,1]范围内的矩阵,可以对上一时刻存储值ct-1和当前时刻经过处理的输入σc(zg)进行加权的选取,起到对上时刻存储值的部分遗忘和对当前输入的选通作用。该操作不影响数据形状大小,输出ct大小仍为[i,h]。

然后,取外部存储单元ct的两部分分别作为内层单元的输入如下面公式所示:

这里激活函数σf,σi和σc与前述相同,内层输入大小仍为[i,h]。

进入内层单元后,将在通道数维度上进行拼接,形成内层单元的输入数据,形状大小为[i,2*h]。

3、对于内层输入的数据的一维卷积操作,其与时间步t=1以后的外层一维卷积计算过程相同,如图3所示,使用一维卷积核[k,2*h,4*h]对输入数据进行卷积,其中卷积核大小为k,输入通道数为2*h,输出通道数为4*h。卷积操作对原输入进行补零操作,使得卷积后的特征数与卷积之前输入的特征数i相同,卷积后结果为[i,4*h]。

接着将卷积结果在通道数维度上4等分为内层单元的4的门控单元每个单元形状为[i,h]。

依照长短期记忆网络单元的公式对外层输入数据进行处理:

为激活函数,这里分别取sigmoid和tanh函数:

同样的,经过激活函数sigmoid后,门控单元就被缩放为所有值均在[0,1]范围内的四维矩阵,可以对上一时刻存储值当前时刻经过处理的输入和当前时刻输出进行加权的选取,起到对上时刻存储值的部分遗忘、对当前时刻输入和输出的选通。该操作不影响数据形状大小,输出ct大小仍为[i,h]。

4、得出内层单元的输出将该输出作为原外层单元的存储单元ct,回到外层单元,对该输出按如下公式进行处理:

ot=σo(zo)

ht=otθσh(ct)

其中,σo和σh为激活函数,这里分别取sigmoid和tanh函数:

由于计算不改变原形状大小,故ct和ht大小均为[i,h],这与开头假设外层输出大小为[i,h]相符。

据此得出整个单元的最终输出ht以及内部存储值ct,完成了该完整单元在当前时间步t的前向计算。接着使用得到的ht与t+1时间步的输入xt+1拼接作为t+1时间步的模型输入,进行t+1时间步的前向计算,直到时间步达到最大值后停止前向计算。

本实施例中获得如图4所示的长短期记忆网络记忆单元示意图,输入xt和ht-1,和大小为(特征维度数*隐层单元数)的权重矩阵做矩阵乘法,得到的矩阵;再在隐层单元数维度上均分为四个门控矩阵,用于控制各个内容的选通,依据长短期记忆网络公式得到ct存储单元和最终的输出ot

据此得出整个单元的最终输出ht以及内部存储值ct,完成了该完整单元在当前时间步t的前向计算。接着使用得到的ht与t+1时间步的输入xt+1拼接作为t+1时间步的模型输入,进行t+1时间步的前向计算,直到时间步达到最大值后停止前向计算。

参照图5,将递归神经网络单元按照指定时间步展开。这里的单元是的长短期记忆网络单元的一种统称,也可指代本发明中设计的单元。在t时间步计算过程中,一个单元的输入为当前输入xt与前一时间步输出ht-1的拼接,存储单元及其输入为ct和ct-1,当前时刻的输出为ht。按指定时间步展开后,前一时间步的输出ht-1与xt构成当前时间步的输入;输入经过计算后的值与前一时刻存储单元值ct-1的一定比例相加,得到当前存储单元值ct;对当前存储单元值进行计算得到当前时刻输出ht。在t+1时间步计算过程中,使用xt+1与t时间步输出ht拼接构成单元输入,其余计算与t时间步中相同。

为了验证本发明方法的有效性,使用本方法和经典lstm在做相同情况下的对比试验。

实验使用tensorflow开源框架,其中c-nlstm单元为自身实现,设计了四个输入超参数,分别为嵌套层数、输入形状、隐层单元数和一维卷积核的大小。lstm单元为tensorflow框架中tf.nn.rnn_cell库中的basiclstm单元。

对数据进行one-hot编码(遍历每一列中的所有不同值,并将所有不同值各成一类,属于该类的标1,不属于该类的标0)。将数据输入进c-nlstm或lstm单元,并获取返回张量,最后设置一个全连接层用于最后的二分类。

表1为使用c-nlstm单元和一般lstm单元在kdd99数据集上的对比,为了保证对比的有效性,两种方法使用了相同的超参数和训练轮数,具体设置及结果见表1。

表1

可以看到,在完全相同超参数和软硬件条件下,c-nlstm在kdd99数据集上的准确率达到了98.46%,较lstm的准确率97.33%得到了一定提升。且新单元对于长时间依赖的数据具有更强的拟合能力,可以有效的提取相邻特征之间的关联,适合大数据集的学习。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1