在该模型中,每个神经元的基本性质相同,但具体形式不同。因此,每个神经元的激活函数被设计成可变形式,也就是说,激活函数的基本性质保持不变,但具体的形式应该可以通过调整函数的参数来改变,任一神经元i的激活函数可设计成:
3 抗体自体库的建立
随机获取一组输入向量抗原X,按照式(1)产生与X最匹配的中心序列k,把k添加到抗体群中。由于计算机病毒入侵检测中在某段时间出现相同的入侵行为的概率较高,可根据网络使用情况,进行最快速度的匹配运算,而不需要进行学习功能。
抗体自体库主要由选择抗体集、交叉抗体集和变异抗体集组成。
1)选择抗体集的设计:是保证免疫算法种群优胜劣汰的重要抗体集,且有较多的实现。
2)交叉抗体集的设计:交叉就是把2个父个体的部分结构加替换重组而生成新个体的操作,其目的是能在下一代产生新的优化抗体集。
3)变异抗体集的设计:因免疫算法中变异抗体集以辅助手段出现,故采用本位变异的方法即可。
4 仿真实验
其训练方法如图4。
4.1 仿真训练初始数据的收集
目前世界上很多研究机构和研究人员致力于计算机病毒入侵检测方面的研究和系统开发,提供了一些测试资料集合,包括网络资料、基于主机的审计资料和系统调用序列。
网络传输协议/网络协议(TCP/IP)对需要组织传输的资料包进行打包。TCP层在包中加入了头信息如:源埠、目的埠、序列号、ACK确认号、偏移量、SYN、FIN、窗口和紧急指针等。含有TCP头信息的包被送到IP层,加IP资料包头如:包头长度、服务类型、资料包长度、分段偏移量、生存期、协议类型、源地址和目标地址等。而正常和异常的数据包都在网上传输,其特征是有差别的。
为测试改进后的网络在病毒入侵检测应用中的效果,采用了具有30万条数据记录的测试数据集,每条数据包括了网络数据包的包头信息、网络连接信息和数据信息等,每条数据包含96位的二进制代码。其中前32位二进制为源IP地址,32-64位二进制为目标IP地址,64-96位二进制表示了一些数据信息,每个数据被标记为异常或者正常。该数据源由MATLAB利用random()函数产生一组随机的小数,因为考虑到是二进制运算,规定:
这样随机产生的二进制串96个为一组,模拟的IP数据包,一共产生96万个二进制串组合。
4.2 抗体自体库仿真训练(自体库的建立)
使用这1万条数据进行自体库的建立和神经网络的学习。在不断调整抗体自体库的同时,使自体库的解空间在最大程度上得到提高,最后趋近与一个稳定的自体库接集合。利用建立好的抗体检测库检测未知的29万条数据纪录。仿真试验算法如下:
4.3 病毒入侵检测算法的仿真训练
建立起自体库后,进行病毒入侵检测算法的仿真试验,步骤如下:
首先,引入新的一组数据向量,与自体库也就是所谓的记忆细胞匹配,如果在一定的阈值范围内匹配度很高,则认为该向量为入侵行为,并把匹配度提升1;相反,如果匹配度不高,则找出记忆细胞里与之亲和力较大的进行权值的调整,达到两者之间的最优匹配度,然后把新的向量作为抗体集合加入到记忆细胞,重复操作,完成后统计结果。
检测算法仿真程序如下: