基于多层感知器的无线传感器网络分布式协同训练方法研究
2019-09-10饶绪黎陈志德林晶林峰
饶绪黎 陈志德 林晶 林峰
摘要:为了提高分散在无线传感器网络各个节点上的数据训练的准确度和时效性,采用多层感知器分类算法训练数据,并将分类算法部署在TensorFlow分布式集群上,以实现协同训练。结果表明本算法与传统算法相比,准确率能控制在95%以上,训练时间缩短了65.8%,具有实际应用价值。
关键词:无线传感器网络;多层感知器;TensorFlow;分布式协同训练;分类
中图分类号:TP312文献标志码:A文章编号:1008-4657(2019)02-0005-08
0引言
随着科技的发展以及无线设备的广泛使用,无线传感器网络(WSN)技术已经成功出现在军事、农业、工业以及人类其他日常生活等诸多领域中,具有重要的应用价值和意义[1]。对无线传感器监测到的数据进行分类是一项基础并且常见的任务。同时,很多经典机器学习算法也被广泛应用于无线传感器网络领域中用于解决数据分类问题[2]。对WSN数据进行分类训练,可以对单个传感器节点进行单独训练,也可以将所有分散在各个传感器节点上的数据进行融合,然后进行集中训练,但集中训练需要耗费大量的节点能量和占用大量的带宽。因此,研究如何对无线传感器网络数据进行分布式协同训练,具有十分重要的意义。
目前,越来越多的研究学者在关于无线传感器网络数据分类问题上研究通过使用机器学习算法解决问题[3]。文献[4]针对无线传感器网络,提出了一种采用分布式K均值聚类的方法,自适应加权分配的网络数据融合处理机制。支持向量机SVM具有很强的理论基础和广泛的应用,但运行时和内存消耗方面,底层优化技术要求很高[5]。文献[6]通过引入一种基于顺序梯度提升的算法并修改偏差公式,训练过程在领域之间进行信息交换通信,实现分布式并行执行。文献[7]利用乘法器的交替方向法,在不交换节点间训练数据的情况下,实现分布式的训练算法。文献[8]在基于支持向量机的分布式学习系统中结合了压缩感知技术,能够抵抗带宽和能量有限的无线传感器网络。文献[9]通过研究网络中相邻节点之间的协作方式,提出了基于平均一致性的分布式支持向量机训练方法。这些传统的分布式训练方法都是通过迭代求解权参数的方法,虽然能够在一定程度上减少数据通信消耗,但对于数据训练的准确度和时效性仍有待提高。
本文提出了一种基于多层感知器的分布式协同训练方法,采用多层感知器方法进行分类训练,并将多层感知器训练算法搭建在TensorFlow分布式集群上,通过集群传感器节点之间并行训练的方式,使分类准确率得到提高,并大幅缩减训练时间。
1多层传感器网络
多层感知器(Multi-layer Perceptron,MLP)属于一种前向反馈人工神经网络模型,目前已在模式识别、图像处理等领域被广泛应用。多层感知器网络由隐藏层、输入层和输出层组成,其中隐藏层的层数可以一个或多个。多层感知器神经网络模型如图1所示。
其中隐藏层有两个,除了输入层以外,网络中的每个节点称为神经元。同层内的神经元之间没有连接,相邻两层之间的神经元两两相连,也就是网络的层间是全连接的,任意一个神经元与下一层的所有节点都连接。信号从输入层进入多层感知器神经网络,从左到右依次顺序传播,前一层神经元的输出作为下一层神经元的输入数据,直到输出层神经元输出最终结果。
假设神经网络中有一个神经元j,整个多层感知器神经网络的训练集,包含N个训练样本,那么当第k个训练样本经过神经元j时的信号图如图2所示。
2算法模型
由于在现实环境下,单机训练大型神经网络的速度非常缓慢,这就需要能够将算法分布在多台传感器节点上,并行训练。TensorFlow是Google推出的第二代分布式机器学习系统,是目前较为流行的深度学习框架,是用于大规模分布式数值计算的开源框架,目前已经被广泛应用于图像识别、语音识别、自热语言处理等领域。本文提出的无线传感器网络分布式协同训练方法是基于此平台来实现的。
TensorFlow平台分布式支持通过单台计算机实现与多台计算机设备实现,如图3所示。
工作架构由客户端,服务端组成,服务端包括主节点,工作节点组成。客户端会话联系主节点,实际工作由工作节点实现,每个工作节点占一台传感器节点。Tensorflow是基于图的计算框架,图的节点由事先预定义的运算组成,而图中节点到其它节点之间的连接则为边,那么在边中流动传输的数据是张量。在图的框架中,每一个节点允许有多个输入以及有多个输出,并且每一个节点呈现对应于一种运算操作,也就是说节点可以认为是运算操作的一种实例化。图的运算过程,就是张量在节点与相邻节点之间从前到后的流动传输过程,只要处于输入端的所有张量准备好,节点就会被分配到各种计算传感器节点完成异步并行地执行运算,也就是实现分布式运算。计算过程如图4所示。
分布式训练过程可以总结分为两步:(1)构建计算图。在搭建多层感知器神经网络时,组织各个层及层之间关系的过程就是图的构建,然后通过不断反复地执行图中的训练运算来逐渐优化参数。(2)执行会话,执行计算图。TensorFlow的单机分布式实现是通过在一台计算机设备(1个主控节点)上,建立一个计算子节点,多个CPU或GPU共同完成一項任务。而多机分布式与单机分布式原理相同,但不同的是基于多个计算子节点共同执行运算,完成一项任务。从无线传感器网络的数据特点来看,本文采用多机多节点的分布式方式训练数据更加合适。另一方面,本文实验采用图间复制、异步更新的方式实现数据并行。图间复制是指每一个工作节点创建一个完整的子图,训练参数保存在参数服务器中,数据不分发,各个工作节点独立计算,计算完成将要更新的参数告诉参数服务器,参数服务器更新参数。异步更新是指分布式集群中的每个工作节点在运算前,分别独立地从参数服务器设备中读取实时参数,当工作节点完成计算后,不需要等待其他工作节点是否已完成计算,可直接将自身设备参数提交给参数服务器,以实现参数的实时更新操作。这种模式的优点是在运算过程中不需要先对训练数据进行分发的处理,尤其当要处理的数据量达到TB级时,能够节省大量的预处理时间。
本文提出了一种基于多层感知器的无线传感器网络分布式协同训练方法,首先搭建TensorFlow分布式集群环境,然后将多层感知器分类算法部署在集群环境中,接下来进行异步训练。分布式算法工作流程如图5所示。
单个计算节点算法流程如下:
步骤1:创建TensorFlow分布式集群。建立3个终端,配置IP和端口信息,其中一個作为参数服务器(ps),两个作为计算节点(worker),用于实现分布式训练。
步骤2:为每个角色创建任务的实例。根据执行的命令参数不同,决定了该是哪一种任务。若任务名字是ps,则程序就加入到该任务中,作为参数更新的服务,等待其他worker节点提交参数更新的数据。若任务名字是worker,则继续执行后续的计算任务。
步骤3:标注模型中的分布式设备,读取无线传感器网络数据,定义多层感知器算法进行训练,其中,本文实验中的多层感知器网络包含2个隐藏层,每个隐含层包含256个神经元,隐含层的数据通过Relu激活函数得到,并且将交叉熵的平均值作为损失函数,AdamOptimizer作为优化器,优化器中的学习率设置为0.001,使算法得到收敛。最后,算法训练次数为10。
步骤4:模型参数初始化,开始执行分布式运算。开始执行会话,每个工作节点执行计算图,更新参数。
步骤5:迭代训练。
3实验分析
本实验数据集采用KDD99数据集,该数据集来源于一个模拟美国空军局域网的网络环境,对9个星期的无线传感器网络连接数据进行采集,并按照攻击类型将数据进行分类,将其分类为无标签的测试数据和带有标签的训练数据。数据标签中一共有23种标签,其中包含22种异常标识(训练攻击类型)和1种正常标识类型,如表1所示。
为了验证本文算法提出的采用TensorFlow集群分布式训练方法的有效性,实验选择TCP、UDP网络协议数据,一共50万条数据量,训练周期设置为10,分别将传统的未采用TensorFlow集群分布的单机模式多层传感器算法训练、采用TensorFlow集群分布的多层传感器算法多机多节点训练(3台机器3个节点)进行对比,图6~8分别为未采用TensorFlow集群分布的多层传感器算法的时间消耗情况、CPU消耗情况、训练结果图,图9~11分别为采用TensorFlow集群分布的时间消耗情况、CPU消耗情况、训练结果图。
由图6~8可知,采用传统的单机模式多层感知器网络进行训练,在算法执行期间,资源的CPU的占用率持续达到了84%,每个周期算法平均耗费22.2s的训练时间,10个周期后准确率达到99.80%。虽然该传统训练算法已具备很高的分类准确率,但对于越来越多的传感器设备,无线传感器网络数据量的不断增加,若仍采用传统的单机模式进行训练数据,将非常耗费设备资源和时间。
由图9~11可知,节点A与节点B在第5个训练周期时,训练时间就缩减到了6s-7s。同时,计算节点A与节点B分别在24个周期与25个周期内算法的准确率达到96.50%和96.45%虽然该分布式算法的准确率与单机模式下的多层传感器算法相比有很小幅度的下降,但是训练时间缩短了65.8%,可以看出本文提出的基于多层感知器的分布式协同训练算法的有效性。
使用4台、8台计算节点验证算法的有效性,比较不同数量计算节点的训练结果,如表2所示。
由表2可知节点数量增加时,每个节点的计算耗时明显减少,由于各个节点是并发运行的,所以算法的总耗时减少的幅度更加明显。8台计算节点下的分布式算法耗时大大减少,并且准确率能控制在95%以上。随着无线传感器的日益广泛使用,收集到的大量数据能够及时地得到分类、识别应用变得尤为重要。因此,本文提出的分布式训练算法在确保准确率的同时大幅度缩减训练时长,提升训练效率,在无线传感器网络(WSN)数据监测和数据处理中具有实际意义。
4结语
本文针对中大规模的无线传感器网络(WSN)数据监测和数据处理提出了一种基于多层感知器的无线传感器网络分布式协同训练方法,通过采用多层感知器网络训练数据提高分类的准确率,然后将多层感知器部署在TensorFlow分布式集群上,实现并行训练,大大缩短数据的训练时间。实验结果表明,本文算法能够有效实现分布式协同训练的目的,在确保高准确率的前提下,同时能够大幅度提高训练的效率,缩短训练时长,很好地解决了无线传感网数据训练准确度和时效性的问题。
参考文献:
[1] Yick J,Mukherjee B,Ghosal D.Wireless Sensor Network Survey[J].Computer Networks,2008,52(12):2 292-2 330.
[2] 邱立达,刘天键,林南,等.基于深度学习模型的无线传感器网络数据融合算法[J].传感技术学报,2014(12):1 704-1 709.
[3] Advantage S,Rajamani R.Portable Roadside Sensors for Vehicle Counting,Classification,and Speed Measurement[J].IEEE Transactions on Intelligent Transportation Systems,2014,15(1):73-83
[4] Zou P,Liu Y.A Data-aggregation Scheme for WSN based on Optimal Weight Allocation[J].Journal of Networks,2014,9(1) : 100.
[5] Stolpe M,Bhaduri K,Das K.Distributed Support Vector Machines: An Overview[M]// Solving Large Scale Learning Tasks.Challenges and Algorithms.Berlin: Springer International Publishing,2016.
[6] Wang D,Zheng J,Zhou Y,et al.A Scalable Support Vector Machine for Distributed Classification in Ad Hoc Sensor Networks[J].Neurocomputing,2010,74(1-3):394-400.
[7] Forero P A,Cano A,Giannakis G B.Consensus-based Distributed Support Vector Machines[J].2010,11(5):1 663-1 707.
[8] Wang D,Zhou Y.Distributed Support Vector Machines: An overview[C]// Taiyuan Institute of Electrical and Electronics Engineers (IEEE).Taiyuan: 2012 24th Chinese Control and Decision Conference (CCDC),2012: 3 897-3 901.
[9] 及歆荣,侯翠琴,侯义斌.无线传感器网络下线性支持向量机分布式协同训练方法研究[J].电子与信息学报,2015,37(3):708-714.
[责任编辑:许立群]