极限学习机应用于入侵检测(一)
引言
最近读了一篇2014年CCS的论文,Using Extreme Learning Machine for Intrusion Detection in a Big Data Environment,并对其内容进行了总结和扩展。
基本知识
极限学习机(extreme learning machine)ELM是一种简单易用、有效的单隐层前馈神经网络SLFNs学习算法。2004年由南洋理工大学黄广斌副教授提出。传统的神经网络学习算法(如BP算法)需要人为设置大量的网络训练参数,并且很容易产生局部最优解。极限学习机只需要设置网络的隐层节点个数,在算法执行过程中不需要调整网络的输入权值以及隐元的偏置,并且产生唯一的最优解,因此具有学习速度快且泛化性能好的优点,目标是解决回归、二分类以及多分类问题。ELM是有监督的机器学习算法,单隐层前馈神经网络(single hidden layer feed-forward neural networks),意味着SLFN只有一个隐藏层,整个SLFN包括输入层、隐藏层、输出层。输入权重是输入层和隐藏层之间的权重,偏置是隐藏层神经元的阈值,输出权重是隐藏层和输出层之间的权重。
神经网络的训练过程实质上就是求解中间层即隐藏层的参数信息,比如隐藏层层数、节点数、权重等。对于SLFN单隐层前反馈神经网络,训练阶段需要确定输入权重矩阵、隐藏层偏置矩阵和输出权重矩阵三个元素,对于ELM,隐藏层的输入权重矩阵和隐藏神经元偏置矩阵是随机生成的,服从任意连续概率分布,所以只需要求解输出权重矩阵,而不需要重复迭代地调整输入权值和隐藏层偏置,因此计算量和时间复杂度都会小很多,训练速度也会快很多,这就是ELM优于其他传统神经网络和机器学习算法的关键所在。若在线上系统的实际应用中,也会因为训练时间短而有一定优势,有关增量学习的内容还没有看到。
ELM参数定义
β的计算方法
如果N=L,训练误差是0,令tj=oj,那么公式4变成公式6,那么可以写成T = Hβ,其中H是H(W, b),N*L阶矩阵,H矩阵叫做神经网络的隐藏层输出矩阵,第i列表示第i个隐藏层神经元输出,第i行代表第i个样本对应的隐藏层的输出向量。H矩阵是已知的,T矩阵也是已知的,所以就是求解β矩阵,即输出权值矩阵。我们可以利用W和b矩阵得到输出权值矩阵。大多数情况下,L<<N,T!=Hβ,这种情况下,就需要求W,b,β矩阵使得T和Hβ的差距最小。为了解决这个问题,通常使用基于梯度降低的学习算法。对FFNN来说,常用的梯度降低方法是BP算法,但BP存在一些问题:
1) 时间开销:基于梯度降低的算法在大多数应用中是时间连续的,因为参数需要迭代调整
2) 过训练:BP算法可能会过度训练,并且为了找到最优参数值需要验证
3) 参数敏感度:BP算法对于用户指定的参数很敏感,比如学习速率。太小和太大的学习速率都会带来不合适的结果。
正因为传统的FFNN学习算法需要调整输入权值和隐藏神经元偏置,因此会出现上述问题,但是我们如果我们固定了输入权值和隐藏层偏置,就只需要求β矩阵,那么就有公式10。
为了提供一个更稳定的解决方案,以解决公式10的最小化问题,将标准化项1/C添加到HTH的对角线上,输出权值矩阵β计算公式如公式11所示。参数C主要用作不确定线性问题中的标准化项,并且因为样本数据量巨大,因此将C设置成较大值,使得HTH是满秩矩阵。因为是对HTH矩阵的对角线进行修正,因此需要加上一个单位矩阵和1/C的乘积,即I/C。
综上,如果N=L,那么β矩阵求解方法对应公式7,如果L<<N,那么β矩阵求解方法对应公式11。一般情况是L<<N,所以对于矩阵β的求解使用公式11。
ELM的训练算法
训练算法的三个输入:隐藏层神经元个数N、参数C,训练集(预处理)。
ELM训练算法有三个步骤:
1) 随机生成输入权重W和偏置b矩阵
可以从任何连续概率分布的任意区间中采样
2) 根据公式8计算隐藏层输出矩阵H
3) 根据公式11计算输出权值β矩阵
入侵检测的单机实现(LE)
训练阶段需要三个输入:训练集、隐藏神经元个数、参数C(用来修正HTH矩阵使其为满秩矩阵)。从训练数据集中提取特征矩阵,随机生成输入权重矩阵W和偏置矩阵b,基于训练集特征矩阵、输入权重矩阵、偏置矩阵和激励函数计算隐藏层输出矩阵H,然后计算隐藏层输出矩阵H的Moore-Penrose广义逆矩阵,最后得到输出权重矩阵β。
测试阶段,从测试数据集中提取特征矩阵和期望的标签,然后获取隐藏层输出矩阵Ht,最后计算目标结果,并和期望的标签进行比较来计算整体的准确率。
入侵检测的分布式实现(MR_ELM)
使用Hadoop的机器学习通常包括下面4个步骤:
1) 使用Hadoop存储数据
2) 为了矢量化输入数据,进行数据预处理(使用过滤器或者特征提取方式)
3) 开始训练阶段,每个输入向量至少学习一个模型(只在训练阶段使用)
4) 运行模型,模型可以将输入的向量分类成威胁或者不是,最终的判决不一定是二分类
本论文中分布式实现称为MR_ELM,主要思想就是将样本数据集分到多个map任务中,然后并发处理这些任务,得到中间结果,在reduce阶段合并处理中间数据。
整个训练测试过程分为三步:
1) 随机生成输入权重和偏置
训练数据集并求解输出权重
2) 进行模型测试,计算准确率
单机环境和分布式实现的算法相同,只是在效率上有很大差别,单机环境不适用于大数据环境,而分布式可以在多节点集群中实现并行计算,以提高数据处理速度,更适用于大数据环境。
训练阶段
训练步骤
1) 随机生成输入权重矩阵W和隐藏层偏置b,W是L*n维矩阵,L是隐藏层神经元个数,n是输入层的节点数,即输入向量维度,L和n都很小,所以第一步不需要分布式计算。输入权重和和随机偏置矩阵b很容易生成。
2) 在公式8中,L<<N,可以使用分布式方法求解H矩阵。Hadoop使用HDFS存储训练集,通过物理的方式将数据集分成若干块,将每一块存到不同节点中。因此在MR_ELM输入训练集的时候,数据集首先会被逻辑分成若干分片,然后复制每个分片到不同节点上进行计算。每个节点只需要计算一小部分训练集对应的H矩阵的子矩阵,通过并行计算来加速运算。分片的数量受限于blockSize,goalSize和minSize,可以在Hadoop配置文件进行配置,splitSize=max(minSize , min(blockSize,goalSize))。
3) 最后一步还是计算输出权重矩阵β。
训练阶段的主要任务就是计算HTH和HTT,有两种计算方式
1) H是N*L矩阵,HTH是L*L矩阵,因此可以在一个节点上进行计算。
2) 根据公式7和[15]中的思想,矩阵HTH的元素本质上是每个rk向量和ck向量乘积之和,rk是H的第k行,ck是HT的第k列。因此在map阶段,可以使用并行计算的方式才处理,通过将每个rk和ck的乘积运算分配到不同节点上,每个节点只需要处理一部分乘积运算,然后在reduce阶段进行求和运算。为了提高处理速度,使用两层reduce处理,第一层的reduce对map阶段产生的部分乘积进行加和,第二层的reduce对第一层reduce的结果进行求和。
整个训练阶段有两次用到了分布式处理
1) 求解隐藏层输出矩阵
由于H是N*L维矩阵,L<<N,因此可以分布求解H。Hadoop将输入的训练集分成若干分片存储到HDFS中,每个节点负责处理一部分训练集,即求解一部分H矩阵,因为是并行计算,所以效率很高。
2) 求解HTH
HTH是L*L维矩阵,其实就是HT的每一行和H的每一列对应相乘再相加的过程,对于HTH每个元素值,都是N个数值的相乘再相加得来的,所以计算量很大,可以使用分布式运算。在map阶段,将H的部分一维行向量rk和HT的部分一维列向量ck的乘积运算分配到不同的节点上,并行运算,计算对应乘积,然后第一层reduce对部分乘积进行加和运算,第二层reduce对第一层reduce的结果进行求和运算。
ELM的训练过程本质是获得β矩阵,和其它机器学习算法类似,训练过程是获得一种分类器,以矩阵的形式进行存储。对于ELM的训练和测试过程,可以转化成矩阵运算,借助于matlab等工具可以较方便地进行求解。
测试阶段
测试步骤
1) 基于测试集计算隐藏层输出矩阵Ht
Ht是Nt*L维矩阵,L<<Nt,因此也要使用分布式并行计算,将测试集分成若干分片到不同节点,每个节点计算一小部分测试集的数据,提高整体计算速度
2) 计算目标分数矩阵,即输出神经元
在求解Htβ的时候,可以分配一个节点计算Ht的每一行,然后在map阶段,在不同节点上和β相乘。Ht的每一行其实可以看成是每个样本实例的隐藏神经元输出向量,实际上就是把样本实例的隐藏神经元输出向量的计算量分布到不同节点上,以实现分布式运算。
3) 计算测试集的准确度
第三步可以得到每个实例的目标分数(分数是double类型,需要进行整数化变换论文并没有提到如何取整,我们在做验证的时候直接四舍五入),将分数转化成对应的标签。使用了分布式运算,在reduce阶段,根据目标分数计算标签,比较实际结果和期望结果计算得到准确度。使用两层reduce处理,第一层reduce中,每个reduce任务计算部分测试集的准确度,第二个reduce任务计算整体的准确度。
整个测试阶段用到了三次分布式处理
1) 求解隐藏层输出矩阵
2) 求解输出层
3) 计算检测准确度
数据预处理
采用KDDcup99数据集,对数据集进行预处理,每个样本实例有41个特征,有一部分是数值型变量,有一部分是符号型变量,不能直接处理,因此需要将其变成数值型变量。
实验环境
Local ELM:32GB RAM,2 CPU,4*2.5 GHz
MR_ELM:在linux计算机节点集群中执行,每个节点都是32GB RAM,2CPU,4*2.53GHz,所以每个节点有8核,设置map tasks的最大值是7,意味着每个节点可以并发执行的最大map数量是7。MapReduce框架用在Hadoop-1.2.1和java-1.7.0_51。
评估标准
1)性能
主要考查准确率。LocalELM在单节点上进行实验,MR_ELM在10个节点组成的集群上进行实验。但是二者都是在不同的训练集上进行训练,然后用同一个测试集进行准确度计算。从KDDcup99的10%训练集中随机产生4个不同大小的训练集,分别是100k,200k,300k,490k,其中490k是10%训练集。测试集使用KDDcup99(校正)评估数据集,将其中的不属于训练集中22个特定类型的攻击类型给去除了。在每个实验中,记录了TP、TN、FP、FN,并且为了得到平均值,在每个实验中都重复了4遍,根据这四个值计算整体的准确率、检测率、误报率。
2)效率和可扩展性
效率表示单节点和m个节点处理的时间之比,用speedup表示。
在真实的分布式计算环境中,数据集被分成若干份,每一份在不同的集群节点上存储和执行,在本论文的实验中,测试了从KDDcup99中提取的1000k到3000k的数据集,以1000k为步长。并在15到30个节点上运行,以5个节点为步长。sizeup代表MR_ELM在有限的CPU时间内处理增长数据集的能力。为了做对比,实验中的隐藏神经元个数分别设为50和200,参数C=1024=210。在具有大量样本的情况下,神经元的数量可以被设置为高值而没有过度拟合的风险。C参数主要用作不确定线性问题的标准化项,因为样本数量很大,所以设置成较大值,使得HTH是满秩矩阵。
实验结果
1)性能分析
单机和MR_ELM的整体准确率基本都是93%以上,并且依赖于训练集大小。如果将隐藏层神经元数量从50增加到200,可以看到整体准确率只有很微小的提升。在几乎所有的训练数据集实验中,MR_ELM具有比单机ELM更高的检测率。对于较大的训练数据集,检测率提高了一点。在所有训练数据集实验中,误报率非常低,在0.89%至1.72%之间。
2)效率和扩展性分析
隐藏层神经元个数50。利用大小为1000k,2000k,3000k的三个测试集,在单个机器上以及节点数目分别为15,20,25,30的集群上进行测试,过程重复了4次,以便得到平均执行时间。和LE相比,MR_ELM可以大幅度减少运行时间。对于3000k的数据量,local ELM并不能执行,也就是说,MR_ELM可以处理大数据,但是local ELM并不能处理大数据。并且可以看到,节点数量从15到25的增加过程中,执行时间逐渐减少。当节点数量从25增加到30时,因为节点间的通信开销,导致运行时间有所增加。MapReduce框架的一个缺点是map / reduce任务的磁盘读/写操作所需的开销,如果硬盘的响应时间依赖于处理节点上的工作负载,这种开销可能会严重延长执行时间。
理想的speedup和sizeup曲线都应该是线性的,即处理速度随着节点的增多而线性增加,处理时间会随着数据集大小的增加而线性增加,但是实际环境中很难实现,比如speedup曲线,当节点数量到达一定值时,就会因为节点间的通信开销使得处理速度降低。
二分类的整体准确率比多分类的要高一些,因为在二分类中,如果把攻击类型A1预测成了A2,那么按照检测正确处理,但是在多分类中,把A1预测成了A2就是错误的,因此二分类的整体准确率比多分类要高。
结论
ELM是一种既可以获得较高的整体准确率,又能大大降低训练时间(因为固定了输入权重矩阵和隐藏层偏置,不需要迭代调整参数)的算法。本论文提到了大规模并行算法ELM和MR_ELM,来解决大数据问题。通过实验可证明使用MapReduce的ELM可以有效处理整个KDDcup99数据集,但是单个机器无法处理。性能优于local ELM,没有损失任何的整体精度、检测率和误报率。同时MR_ELM有更好的效率和扩展性,随着节点数增加,在节点数量的一定范围内效率会提高,当节点数量过多时,也会带来一些时间开销,随着测试集数量增加,处理时间线性增长,性能很稳定,适用于大数据环境。未来研究中,分布式算法将用于更大的网络架构。另外,可以在其它入侵检测数据集中测试该算法,来度量MR_ELM在现代网络环境中的扩展性。通过使用更完整的数据集,可以避免抽样时忽略数据中重要特征的问题。
ELM在IDS领域中仍然比较新,从其实际效果看,更适用于大数据环境,因为β矩阵的相关运算可以拆分成若干子运算,这样就可以使用MapReduce实现分布式并行计算,以便提高运算效率。相比于传统的机器学习算法,这是ELM的优势所在。
参考
Junlong Xiang,Magnus Westerlund,Dusan Sovilj,Göran Pulkkis:Using extreme learning machine for intrusion detection in a big data environment.
https://dl.acm.org/citation.cfm?doid=2666652.2666664
https://baike.baidu.com/item/Elm/10596154?fr=aladdin
极限学习机应用于入侵检测(一)相关推荐
- 研究型论文_具有 ExtraTrees 特征选择、极限学习机集成和 softmax 聚合的多层入侵检测系统(英文论文)
文章目录 Multi-layer intrusion detection system with ExtraTrees feature selection, extreme learning mach ...
- 【预测模型-ELM预测】基于麻雀算法优化极限学习机预测附matlab代码
1 内容介绍 一种基于麻雀搜索算法优化极限学习机的风电功率预测方法,具体包括如下步骤:步骤1,确定影响风电功率的主导影响因子:步骤2,构建麻雀搜索算法优化核极限学习机预测模型,通过该模型对风电功率进行 ...
- 网络安全-防火墙与入侵检测系统
防火墙效率 吞吐量:指防火墙在不丢失数据包的情况下能达到的最大的转发数据报的速率. 时延:能够衡量出防火墙处理数据的快慢. 丢包率:在特定负载下,指应由网络设备传输,但由资源耗尽而丢弃帧的百分比. 背 ...
- 极限学习机和支持向量机_极限学习机I
极限学习机和支持向量机 Around 2005, A novel machine learning approach was introduced by Guang-Bin Huang and a t ...
- 极限学习机︱R语言快速深度学习进行回归预测
本文转载于张聪的博客,链接:https://ask.hellobi.com/blog/zason/4543. 深度学习在过去几年,由于卷积神经网络的特征提取能力让这个算法又火了一下,其实在很多年以前早 ...
- 网络安全学习--入侵检测和紧急响应
入侵检测系统介绍 入侵检测系统IDS:能及时发现攻击或入侵,并能够向安全管理者提供有价值的安全警报的系统. 入侵检测框架CIDF: 事件产生器.事件分析器.响应单元.事件数据库. 事件产生器:从整个计 ...
- 基于机器学习的入侵检测系统
导 语 在过去十年中,机器学习技术取得了快速进步,实现了以前从未想象过的自动化和预测能力.随着这一技术的发展促使研究人员和工程师为这些美妙的技术构思新的应用.不久,机器学习技术被用于加强网络安全系统. ...
- 网络入侵检测规避工具fragrouter
网络入侵检测规避工具fragrouter 网络入侵检测系统可以通过拦截数据包,获取内容进而判断是否为恶意数据包.对于传输较大的数据包,通常会采用分片的方式,将大数据包拆分为小数据包进行传输.如果入侵检 ...
- linux 入侵检测
最近遇到了很多服务器被入侵的例子,为了方便日后入侵检测以及排查取证,我查询了一些linux服务器入侵取证的相关资料,并在此总结分享,以便日后查询. 一般服务器被入侵的迹象,包括但不局限于:由内向外发送 ...
最新文章
- 深度丨2018年AI依然要面临解决的的5大技术难题
- Android BOOTCLASSPATH详解
- (王道408考研数据结构)第五章树-第三节4:树与二叉树的转换
- CMU机器学习学院院长Tom Mitchell:计算机模拟人脑才刚刚起步
- Spring JDBC开发
- docker国内镜像链接
- java解析XML Node与Element的区别
- UE3 预计算可见性
- html5 retina 1像素,走向视网膜(Retina)的Web时代
- 多密钥ssh-key生成与管理
- WebStorm 9“神器”变“霸器”
- [vb] Set 语句
- \Process(sqlservr)\% Processor Time 计数器飙高
- delphi 如何解决假死
- Qt上位机 实现串口助手和网络助手
- 精美教师说课试讲教学通用PPT模板
- Win10下连接树莓派ZeroW(附win10虚拟网卡驱动下载)
- 台信M18金属感应开关传感器三线NPN常开
- 自学PHP 环境搭建
- Pycharm一键选中多个东西(数据、函数等)进行修改、删除、替换等
热门文章
- 段码液晶屏应用于大片中的呼叫机——手咪
- 易语言不能创建临时文件
- 计算机网络培训PPT
- PyQt5学习—1介绍
- 真人秀制作网站_电竞真人秀不是比赛直播,最重要的还是人和故事
- 科学上最舒服的十种颜色
- Lifelong SLAM 论文解读合集(2):针对长时间重复运行SLAM地图更新问题
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之八 || API项目整体搭建 6.3 异步泛型仓储+依赖注入初探...
- 流利阅读笔记【日更】
- 计算机无法验证驱动程序需要,win7系统提示Windows无法验证此设备所需驱动程序数字签名的详细处理技巧...