1绪论1.1研究背景与研究目的意义中国互联网络信息中心(CNNIC,2018)发布了截至2018年12月的第43次中国互联网发展统计报告。根据该报告,截至2018年12月,中国互联网用户数量为8.29亿,并且每年保持在5000多万增量。而且这种趋势将在未来几年继续保持。5G时代的来临将会加快促进互联网与其他产业融合,网络规模必然会进一步增大。传统的网络管理系统以分布式网络应用系统为基础,采用软件和硬件相结合的方式。SNMP协议是目前网络管理领域运用最为广泛的网络管理协议,它将从各类网络设备中获取数据方式进行了统一化,几乎所有的网络设备生产厂商都支持此协议。然而传统的基于SNMP的网络管理软件大多基于C/S架构,存在着扩展性和灵活性差,升级维护困难等缺点,对网为网络的管理带来了一定程度的不便。因此,基于三层的网管系统己经成为发展趋势,随着Web技术迅猛发展,诞生了以Web浏览器和服务器为核心,基于B/S ( Browser/Server)架构的“Web分布式网络管理系统”,它具有不依赖特定的客户端应用程序,跨平台,方便易用,支持分布式管理,并且可动态扩展和更新等优点。本文将重点研究基于BP故障诊断模型,实现了一种以接口故障为研究对象的智能网络管理系统模型,并以此为基础,设计与实现基于web的智能网络管理系统,不仅可以通过对网络数据实时监控,而且基于BP网络故障诊断模型可以诊断通信网中的接口故障,在一定程度上实现网络故障管理的自动化。该系统在保证网络设备提供稳定可靠的网络服务同时,也可以降低企业在维护网络设备上的成本。1.2国内外研究现状网络设备管理是指对各种网络设备(如核心层、汇接层、接入层路由与交换设备、服务器和计算机)进行各种操作和相关配置,管理服务器(Manager)用来处理网络信息,配合管理服务器对网络信息处理并管理的实体被称为代理服务器(Agent),被管对象是指用于提供网络服务或使用网络服务等设备的全部资源信息,各种不同的被管对象构成了管理信息库。在实际的网络管理过程当中,管理服务器和代理服务器以及代理服务器和被管对象三种实体之间都是通过规范的网络管理协议来进行信息的交互(王鹤 2015)。相比国外的网络管理系统及产品,国内相应的网络管理系统和产品起步比较晚,但是随着互联网技术的发展网络管理软件发展势头迅猛,诞生了很多优秀的网络管理软件,这些软件已经广泛运用在我国网络管理领域。1.2.1国外研究现状目前国外大型网络服务商都有与其产品相对应的网络管理系统。从最初步的C/S架构逐步过渡到现在的B/S架构。比较著名的:Cabletron系统公司的SPECTRUM,Cisco公司的CiscoWorks,HP公司的OpenView,Tivoli系统公司的TH NetView。这些网络管理产品均与自家产品相结合,实现了网络管理的全部功能,但是相对专业化的系统依旧采用C/S架构。NetView这款管理软件在网络管理领域最为流行。NetView可以通过分布式的方式实时监控网络运行数据,自动获取网络拓扑中的变化生成网络拓扑。另外,该系统具有强大的历史数据备份功能,方便管理员对历史数据统计管理。OpenView具有良好的兼容性,该软件集成了各个网络管理软件的优势,支持更多协议标准,异种网络管理能力十分强大。CiscoWorks是Cisco产品。该软件支持远程控制网络设备,管理员通过远程控制终端管理网络设备,提供了自动发现、网络数据可视化、远程配置设备和故障管理等功能。使用同一家产品可以更好的服务,因此CiscoWorks结合Cisco平台其他产品针对Cisco设备可以提供更加细致的服务。Cabletron的SPECTRUM是一个具有灵活性和扩展性的网络管理平台,它采用面向对象和人工智能的方法,可以管理多种对象实体,利用归纳模型检查不同的网络对象和事件,找到它们的共同点并归纳本质。同时,它也支持自动发现设备,并能分布式管理网络和设备数据。1.2.2国内研究现状随着国内计算机发展迅猛,网络设备规模不断扩大,拓扑结构复杂性也随之日益增加,为应对这些问题,一大批优秀的网络管理软件应运而生。像南京联创OSS综合网络管理系统、迈普公司Masterplan等多个网络管理系统。华为公司的iManager U2000网络管理系统,北京智和通信自主研发的SugarNMS开源网络管理平台,均得到较为广泛应用。Masterplan主要特点是能够对网络应用实现良好的故障诊断和性能管理,适用于网络内服务器、网络设备以及设备上关键应用的监测管理。SugarNMS具有一键自动发现、可视化拓扑管理、网络资源管理、故障管理、日志管理、支付交付等功能,并提供C/S和B/S两种使用方式。iManager U2000定位于电信网络的网元管理层和网络管理层,采用开放、标准、统一的北向集成,很大程度上缩短OSS集成时间,系统运行以业务为中心,缩短故障处理时间,从而减少企业故障处理成本。近些年来,随着人工智能技术的崛起,越来越多的企业开始将人工智能技术应用在网络管理上面,替代传统的集中式网络管理方式。为了减小企业维护网络的成本,提高网管人员工作效率,智能化、自动化的网络管理系统成为许多学者研究的热点。1.3神经网络在网络管理中的适用性分析网络管理的功能就是对网络资源进行管控、监测通信网络的运行状态以及排查网络故障。管控网络资源,本质上就是管理员为了满足业务需求下发相关设备配置命令改变网络设备状态,以保证稳定的服务;监测网络运行状态一般是指周期的或者实时的获取设备运行状态进行可视化,以方便管理员进行分析当前设备是否正常运行。排查网络故障是管理员通过分析网络设备运行数据与以往数据进行比较或者根据自身经验进行分析,确定故障源头、故障类别、产生原因、解决方法。故障排除是针对前一阶段发现的网络故障进行特征分析,按照诊断流程得出结果,执行特定的指令动作来恢复网络设备正常运行(洪国栋,2016)。神经网络具有并行性和分布式存储、自学习和自适应能力、非线性映射等基本特点。当下最为流行的神经网络模型就是BP(Back-Propagation)神经网络,是一种按照误差逆向传播算法训练多层前馈神经网络,属于监督式学习神经网络的一种。该模型分为输入层、隐含层以及输出层,网络模型在外界输入样本的刺激不断改变连接权值,将输出误差以某种形式通过隐含层向输入层逐层反转,使得网络输出不断逼近期望输出,其本质就是连接权值的动态调整。BP神经网络拥有突出的泛化能力,善于处理分类问题。BP网络是目前常用的误差处理方式,在众多领域得到了广泛的应用,它的处理单元具有数据量大、结构简单等特点,并且神经网络以对大脑的生理研究成果为基础,模拟大脑某些机制与机理组成十分繁杂的非线性动力学系统,其在处理网络设备运行中的数据时以及在比较模糊信号问题的时候,能够自主学习并得出需要的结果。能够将模型中输入输出矢量进行分类、连接、来适应复杂的传输存储处理。因此,本文会基于现有网络管理技术结合BP神经网络去解决网络故障问题。1.4本文主要研究目标1.4.1本文研究目标针对传统网络管理中故障方案的问题与不足,本文探究基于BP神经网络的方法来构建基于通信网接口故障诊断模型。通过构建的通信网接口故障诊断模型可以有效的诊断接口故障并判别出故障类型。推动现有网络管理系统更趋近于智能化。以此为基础,分析、设计、实现基于三层架构的智能网络管理系统1.4.2技术路线智能网络研究首先要确定该系统的开发技术路线,课题研究的主要过程首先是在查阅相关科研资料的基础上,搭建实验环境。在保证网络正常通信的前提下采集各个端口的流入流出流量,记录设备的运行状态并对设备进信息进行管理。同时布置实验环境相应故障,包括:改变端口状态、更改端口ip地址、子网掩码,采集通讯网络接口故障发生时网络拓扑中产生的异常数据。查阅BP神经网络在故障在诊断方面的相关论文,基于网络通讯设备接口的常见故障以及相关故障文档构建BP神经网络故障模型,并判断故障模型的有效性。逐步地实现系统的全部功能。最后进行系统测试,得出结论,应用于实际。1.5本文组织结构本文主要由六个章节构成,各章节主要内容如下:第一章绪论。本章首先简要介绍了网络管理系统当前的发展及应用现状从而进一步分析出建立智能网络管理系统的重要意义。阐述了网络管理系统国内外研究现状。最后论述了本文研究目的与组织结构。第二章相关概念及相关技术。本章对SNMP的相关技术进行详细介绍,SNMP组织模型 、SNMP管理模型、SNMP信息模型、SNMP通讯模型。然后对前端框架Vue和绘图插件Echarts技术进行介绍,其次介绍了常见的故障分析技术,专家系统、神经网络等,最后对神经网络基本概念和分类进行简要描述。第三章基于BP神经网络故障推理模型。介绍了BP神经网络的基本概念、网络结构、设计步骤、训练过程,以接口故障为例详细介绍了BP神经网络故障模型的构建过程。第四章智能网络管理系统分析与系统设计。首先进行了需求分析,其次对体系结构设计、系统总体模块结构设计进行说明,对系统各个功能模块分析设计结合活动图进行详细说明,最后对数据库设计进行简要说明。第五章智能网络管理系统的实现。对整体开发流程进行了说明,对用户管理模块、配置管理模块、设备监控模块、故障诊断模块实现流程进行描述并展示实现结果。第六章系统测试与结论。并对系统的部分功能和性能进行了测试,并加以分析。第七章总结与展望。总结本文取得的研究成果和存在的问题,并提出下一步改进系统的设想与对未来的展望。2相关概念及相关技术2.1网络管理概述网络管理就是通过合适手段和方法,确保通信网络可以根据设计目标稳定,高效运行。不仅需要准确定位网络故障,还需要通过分析数据来预先预测故障,并通过优化设置来降低故障的发生率。网络管理系统的五大基本功能,分别为:配置管理、性能管理、故障管理、计费管理和安全管理:1)配置管理:配置管理是最重要和最基础的部分。它可以设置网络通讯设备的相关参数,从而管理被管设备,依据需求周期的或实时的获取设备信息和运行状态,检查和维护设备状态列表,生成数据表格,为管理员提供参考和接口以更改设备配置。2)性能管理:性能管理是评估系统网络的运行状态和稳定性,主要工作内容包括从被管理对象获取与网络性能相关数据,对这些数据进行统计和分析,建立模型以预测变化趋势、评估故障风险,通过配置管理模块修改网络参数,以确保网络性能最优利用网络资源保证通信网络平稳运行。3)故障管理:故障管理的主要功能就是及时辨别出网络中出现的故障,找出故障原因,分析并处理故障。故障管理一般分为四个部分:(1)探测故障。通过被管设备主动向管理站发送故障信息或者管理站主动轮询被管设备两种方式发现故障源。(2)发出告警。管理站发现故障信息之后,会以短信、信号灯等方式提示管理员。(3)解决故障。对故障信息进行分析,明确其故障原因和类型,找到对应方法得以解决。(4)保存历史故障数据。对历史故障数据进行维护备份,为以后的故障提供一定依据,使得处理网络故障更为高效。4)计费管理:计费管理主要功能是为客户提供一个合理的收费依据,通过将客户的网络资源的使用情况进行统计,例如将客户消费流量计算成本从而向客户计费。5)安全管理:目的就是保证网络能够平稳安全的运行,可以避免或者抵御来自外界的恶意入侵,防止重要数据泄露,例如用户的个人隐私泄露问题等。根据网络管理系统的体系结构和ISO定义的基本功能,基于Web的网络管理系统基本模型如图基于Web的网络管理系统基本模型所示,整个模型包括六个组成部分:Web浏览器,Web服务器,管理服务集,管理信息库,网络管理协议,被管资源。 2.2 SNMP协议简单网络管理协议SNMP(Simple Network Management Protocol),既可以作为一种协议,也可以作为一套标准。事实上SNMP己经成为网络管理领域的工业标准,从提出至今共有八个版本,在实践中得到广泛应用的有三个版本,分别是SNMPv1, SNMPv2c和SNMPv3(唐明兵2017)。最初的SNMPv1主要是为了满足基于TCP/IP的网络管理而设计的,但是随着网络管理行业的迅猛发展,第一版本的SNMP协议已经不适应网络行业的发展,身份验证、批量数据传输问题等暴露导致SNMPv1难以支持日益庞大的网络设备。第二版本就演变成了一个运行于多种网络协议之上的网络管理协议,较第一版本有了长足的进步,不仅提供了更多操作类型,支持更多的数据类型而且提供了更加丰富的错误代码,能够更加细致的区分错误,另外支持的分布式管理在一定程度上大大减轻了服务器的压力。但是SNMPv2c依旧是明文传输密钥,其安全性有待提高。直到1998年正式推出SNMPv3,SNMPv3的进步主要体现在安全性能上,他引入USM和VACM技术,USM添加了用户名和组的概念,可以设置认证和加密功能,对NMS和Agent之间传输的报文进行加密,提升其安全性防止窃听。VACM确定用户是否允许特定的访问MIB对象以及访问方式。2.2.1 SNMP管理模型与信息模型SNMP系统包括网络管理系统NMS(Network Management System)、代理进程Agent、被管对象Management object和管理信息库MIB(Management Informoation Base)四部分组成.管理模型图如图所示:1)NMS称为网络管理系统,作为网络管理过程当中的核心,NMS通过SNMP协议向网络设备发送报文,并由Agent去接收NMS发来的管理报文从而对设备进行统一管控。NMS可以主动向被管对象发送管理请求,也可以被动接受被管对象主动发出的Trap报文。2)Agent相当于网络管理过程中的中间件,是一种软件,用于处理被管理设备的运行数据并响应来自NMS的请求,并把结果返回给NMS。Agent接收到NMS请求后,通过查询MIB库完成对应操作,并把数据结果返回给NMS。Agent也可以作为网络管理过程中的中间件不仅可以使得信息从NMS响应到具体硬件设备上,当设备发生故障时,通过配置Trap开启相应端口,被管设备也可以通过Agent主动将事件发送到NMS,使得NMS及时发现故障。3)Management object指被管理对象。一个设备可能处在多个被管理对象之中,设备中的某个硬件以及硬件、软件上配置的参数集合都可以作为被管理对象。4)MIB是一个概念性数据库,可以理解为Agent维护的管理对象数据库,里面存放了被管设备的相关变量信息。MIB库定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。通过读取MIB变量的值, Agent可以查询到被管设备的当前运行状态以及硬件信息等,进而达到监控网络设备的目的。Agent可以利用修改对应设备MIB中的变量值,设置被管设备状态参数来完成设备配置。SNMP的管理信息库是树形结构,其结构类型与DNS相似,具有根节点且不具有名字。在MIB功能中,每个设备都是作为一个oid树的某分支末端被管理。每个OID(object identifier,对象标识符)对应于oid树中的一个管理对象且具有唯一性。有了树形结构的特性,可以高效迅速地读取其中MIB中存储的管理信息及遍历树中节点,读取顺序从上至下。目前运用最为广泛的管理信息库是MIB-Ⅱ,它在MIB-Ⅰ的基础上做了扩充和改进。MIB-Ⅱ结构示意图如2.3图如所示:(1)system组:作为MIB中的基本组,可以通过它来获取设备基本信息和设备系统信息等。(2)interfac组:定了有关接口的信息,例如接口状态、错误数据包等,在故障管理和性能管理当中时常用到。(3)address translation组:用于地址映射。(4)ip组:包含了有关ip的信息,例如网络编号,ip数据包数量等信息。(5)icmp组:包含了和icmp协议有关信息,例如icmp消息总数、icmp差错报文输入和输出数量。(6)tcp组:包含于tcp协议相关信息,例如tcp报文数量、重传时间、拥塞设置等。应用于网络拥塞和流量控制。(7)udp组:与udp协议相关,可以查询到udp报文数量,同时也保存了udp用户ip地址。(8)egp组:包含EGP协议相关信息,例如EGP协议下邻居表信息、自治系统数。(9)cmot组:为CMOT协议保留(10)transmission组:为传输信息保留(11)snmp组:存储了SNMP运行与实现的信息,例如收发SNMP消息数据量。2.2.2 SNMP通讯模型SNMP规定了5种协议基本数据单元PDU,用于管理进程与代理进程之间交换。(1)get-request操作:管理进程请求数据。(2)get-next-request操作:在当前操作MIB变量的基础上从代理进程处读取下一个参数的值。(3)set-request操作:用于对网络设备进行设置操作。(4)get-response操作:在上面三种操作成功返回后,对管理进程进行数据返回。这个操作是由代理进程返回给管理进程。(5)trap操作:SNMP代理以异步的方式主动向SNMP管理站发送Trap数据包。一般用于故障告警和特定事件发生。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。根据TCP/IP模型SNMP是基于UDP的应用层协议,而UDP又是基于IP协议的。因此可以得到完整的SNMP报文示意图如下:(1)版本号表示SNMP版本,其中版本字段的大小是版本号减1,如果SNMPv2则显示的字段值是1。(2)团体名(community)本质上是一个字符串,作为明文密钥在管理进程和代理进程之间用于加密传输的消息,一般默认设置成“public”。 (3)请求标识符(request ID)用于消息识别。由管理进程发送消息时自带一个整数值,当代理进程返回消息时带上该标识符。管理进程可以通过该标识符识别出是哪一个代理进程返回的数据从而找到对应请求的报文。(4)差错状态(error status)表示出现错误时由代理进程返回时填入差错状态符0~5中的某一数字,数字对应相关错误信息。差错状态描述符如下表:(5)差错索引(error index)表示在通信过程当中出现上表2.2的差错时,代理进程在应答请求时设置一个整数,整数大小对应差错变量在变量列表中偏移大小。(6)变量名-值对以key-value的方式存储变量名称和对应值。(7)trap报文是代理进程主动向管理进程发送的报文,不必等待管理进程下一次轮询。SNMPv2的trap报文格式较SNMPv1的trap报文格式更趋近于普通的SNMP响应报文,更加统一化。以SNMPv2为例的trap报文格式如下:trap类型已定义的特定trap共有7种,后面的则是由供养商自己定制。Trap类型如下表所示:2.2.3 SNMP组织模型SNMP代理组织分成分散式和集中式模型。在分散模型中,每一个服务器对应一个SNMP代理,可以理解为一一对应的关系,管理站分别与每个被管服务器上的代理进行通信。集中模型当中,在管理服务器上只创建一个SNMP代理。管理站只与管理管理服务器上的SNMP代理进行通信, SNMP代理接收来自某一固定区域的所有数据。如图2.6所示:2.3 Vue为实现前后端分离开发的理念,Vue应运而生。作为构建用户界面框架的Vue.js简单易上手使得前端开发人员不必再编写复杂的DOM操作通过this来回寻找相关节点,很大程度上提高了开发的效率。通过MVVM框架,可以自动完成视图同步数据更新,在对实例new Vue(data:data)进行声明后data中数据将与之相应的视图绑定,一旦data中的数据发生变更,视图中对应数据也会发生相应改变。Vue.js基于MVVM框架实现了视图与数据一致性,MVVM框架可以分为三个部分:Model、ViewModel、View。MVVM框架模式:Vue.js的理念是“一切皆为组件”,可以说组件是Vue.js的最强大功能。组件可以扩展HTML元素,将HTML、CSS、JavaScript封装成可重用的代码组件,可以应用在不同的场景,大大提高效率。它与传统的JavaScript相比,采用虚拟DOM渲染页面。当有数据发生变更时,生成虚拟DOM结构与实际页面结构对比,重新渲染差离部分,进一步提供了页面性能。2.4 EchartsEcharts(Enterprise Charts),它是由百度公司研发的纯JavaScript图表库,可以流畅的运行在PC和移动设备上。ECharts兼容当前主流浏览器,底层依赖轻量级Canvas库ZRender,Echarts提供直观、生动、交互性强、高度自定义化的可视化图标。ECharts包含了以下特性:1)丰富的可视化类型:既有柱状图、折线图、饼图等常规图,也有可用于地理数据可视化的热力图、线图等,还有多维数据可视化的平行坐标。2)支持多种数据格式共存:在4.0+版本中内置的dataset属性支持直接传入包括二维表中。3)多维数据的支持:可以传入多维度数据。4)移动端优化:特别针对移动端可视化进行了一定程度优化,可以使用手指在坐标系中进行缩放、平移。5)动态类型切换:支持不同类型图形随意切换,既可以用柱形图也可以用折线图展示统一数据,可以从不同角度展现数据。6)时间轴:对数据进行可视化的同时,可以分为周期或者定时进行展示,所有利用时间轴可以很好的动态观察数据的变化。2.5目前常见的故障诊断方法2.5.1基于专家系统的故障诊断方法专家系统是目前最常使用的诊断方法。通俗来讲,专家系统就是模拟人类专家去解决现实中某一特定领域的复杂问题。专家系统接收用户界面数据,将数据传递到推理引擎进行推理,做出决策并执行。专家系统作为人工智能的前身,从上世纪60年代开始到现在专家系统的应用已经产生了巨大的经济效益和社会效益,灵活可靠、极高的专业水平和良好的有效机制使得专家系统已经成为最受欢迎、最活跃的领域之一。2.5.2基于模糊理论的故障诊断方法在实际的工业生产过程当中,设备的“故障”状态与“正常”状态之间并没有严格的界限,它们之间存在一定的模糊过渡状态,并且在特征获取、故障判定过程中都中存在一定的模糊性。 因此,该方法不需要建立精确的数学分析模型,本质上是一个模式识别问题。 根据建议的症状参数,得出系统状态。 通常选择“择近原则”和“最大隶属原则”作为基本诊断原理(尤海鑫,2012)。2.5.3基于免疫算法的故障诊断方法通过模拟自然生物免疫系统的功能,即快速识别外来生物和外来生物,最后通过自我排斥将异物排出体外。生物免疫系统还建立了一套算法来测试各种条件,主要是在线检测,通过不合格的自我和外部组织消除系统来实现故障识别的能力。免疫算法的故障诊断方法属于并行处理能力,可以进行很多复杂的操作和处理。同时可以与遗传算法等其他智能优化算法结合使用,以增强自适应能力和自学习能力。从公开的文献中,学者们并不热衷于这种原理的方法。一般来说,在故障诊断领域,目前人工免疫理论的研究尚处于萌芽阶段。2.5.4基于神经网络的故障诊断方法神经网络是由大量简单的神经节点组成的复杂网络,以网络拓扑分布的方式存储信息,利用网络拓扑分布和权重实现对实际问题的非线性映射调整,并运用使用全局并行处理的方式,实现从输入空间到输出空间的非线性映射。该方法属于典型的模型诊断模式,不需要了解内部诊断过程,而是使用隐式方法完全表达知识。在获取知识时,它将自动生成由已知知识和连接节点的权重构成的网络的拓扑结构,并将这些问题完全连接到互连的网络中,有利于知识的自动发现和获取。并行关联推理和验证提供了便利的途径;神经网络通过神经元之间的交互来实现推理机制。
一、BP模型概述
误差逆传播(Error Back-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型。
Pall Werbas博士于1974年在他的博士论文中提出了误差逆传播学习算法。完整提出并被广泛接受误差逆传播学习算法的是以Rumelhart和McCelland为首的科学家小组。他们在1986年出版“Parallel Distributed Processing,Explorations in the Microstructure of Cognition”(《并行分布信息处理》)一书中,对误差逆传播学习算法进行了详尽的分析与介绍,并对这一算法的潜在能力进行了深入探讨。
BP网络是一种具有3层或3层以上的阶层型神经网络。上、下层之间各神经元实现全连接,即下层的每一个神经元与上层的每一个神经元都实现权连接,而每一层各神经元之间无连接。网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,神经元的激活值从输入层经各隐含层向输出层传播,在输出层的各神经元获得网络的输入响应。在这之后,按减小期望输出与实际输出的误差的方向,从输入层经各隐含层逐层修正各连接权,最后回到输入层,故得名“误差逆传播学习算法”。随着这种误差逆传播修正的不断进行,网络对输入模式响应的正确率也不断提高。
BP网络主要应用于以下几个方面:
1)函数逼近:用输入模式与相应的期望输出模式学习一个网络逼近一个函数;
2)模式识别:用一个特定的期望输出模式将它与输入模式联系起来;
3)分类:把输入模式以所定义的合适方式进行分类;
4)数据压缩:减少输出矢量的维数以便于传输或存储。
在人工神经网络的实际应用中,80%~90%的人工神经网络模型采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。
二、BP模型原理
下面以三层BP网络为例,说明学习和应用的原理。
1.数据定义
P对学习模式(xp,dp),p=1,2,…,P;
输入模式矩阵X[N][P]=(x1,x2,…,xP);
目标模式矩阵d[M][P]=(d1,d2,…,dP)。
三层BP网络结构
输入层神经元节点数S0=N,i=1,2,…,S0;
隐含层神经元节点数S1,j=1,2,…,S1;
神经元激活函数f1[S1];
权值矩阵W1[S1][S0];
偏差向量b1[S1]。
输出层神经元节点数S2=M,k=1,2,…,S2;
神经元激活函数f2[S2];
权值矩阵W2[S2][S1];
偏差向量b2[S2]。
学习参数
目标误差ϵ;
初始权更新值Δ0;
最大权更新值Δmax;
权更新值增大倍数η+;
权更新值减小倍数η-。
2.误差函数定义
对第p个输入模式的误差的计算公式为
中国矿产资源评价新技术与评价新模型
y2kp为BP网的计算输出。
3.BP网络学习公式推导
BP网络学习公式推导的指导思想是,对网络的权值W、偏差b修正,使误差函数沿负梯度方向下降,直到网络输出误差精度达到目标精度要求,学习结束。
各层输出计算公式
输入层
y0i=xi,i=1,2,…,S0;
隐含层
中国矿产资源评价新技术与评价新模型
y1j=f1(z1j),
j=1,2,…,S1;
输出层
中国矿产资源评价新技术与评价新模型
y2k=f2(z2k),
k=1,2,…,S2。
输出节点的误差公式
中国矿产资源评价新技术与评价新模型
对输出层节点的梯度公式推导
中国矿产资源评价新技术与评价新模型
E是多个y2m的函数,但只有一个y2k与wkj有关,各y2m间相互独立。
其中
中国矿产资源评价新技术与评价新模型
则
中国矿产资源评价新技术与评价新模型
设输出层节点误差为
δ2k=(dk-y2k)·f2′(z2k),
则
中国矿产资源评价新技术与评价新模型
同理可得
中国矿产资源评价新技术与评价新模型
对隐含层节点的梯度公式推导
中国矿产资源评价新技术与评价新模型
E是多个y2k的函数,针对某一个w1ji,对应一个y1j,它与所有的y2k有关。因此,上式只存在对k的求和,其中
中国矿产资源评价新技术与评价新模型
则
中国矿产资源评价新技术与评价新模型
设隐含层节点误差为
中国矿产资源评价新技术与评价新模型
则
中国矿产资源评价新技术与评价新模型
同理可得
中国矿产资源评价新技术与评价新模型
4.采用弹性BP算法(RPROP)计算权值W、偏差b的修正值ΔW,Δb
1993年德国 Martin Riedmiller和Heinrich Braun 在他们的论文“A Direct Adaptive Method for Faster Backpropagation Learning:The RPROP Algorithm”中,提出Resilient Backpropagation算法——弹性BP算法(RPROP)。这种方法试图消除梯度的大小对权步的有害影响,因此,只有梯度的符号被认为表示权更新的方向。
权改变的大小仅仅由权专门的“更新值” 确定
中国矿产资源评价新技术与评价新模型
其中 表示在模式集的所有模式(批学习)上求和的梯度信息,(t)表示t时刻或第t次学习。
权更新遵循规则:如果导数是正(增加误差),这个权由它的更新值减少。如果导数是负,更新值增加。
中国矿产资源评价新技术与评价新模型
RPROP算法是根据局部梯度信息实现权步的直接修改。对于每个权,我们引入它的
各自的更新值 ,它独自确定权更新值的大小。这是基于符号相关的自适应过程,它基
于在误差函数E上的局部梯度信息,按照以下的学习规则更新
中国矿产资源评价新技术与评价新模型
其中0<η-<1<η+。
在每个时刻,如果目标函数的梯度改变它的符号,它表示最后的更新太大,更新值 应由权更新值减小倍数因子η-得到减少;如果目标函数的梯度保持它的符号,更新值应由权更新值增大倍数因子η+得到增大。
为了减少自由地可调参数的数目,增大倍数因子η+和减小倍数因子η–被设置到固定值
η+=1.2,
η-=0.5,
这两个值在大量的实践中得到了很好的效果。
RPROP算法采用了两个参数:初始权更新值Δ0和最大权更新值Δmax
当学习开始时,所有的更新值被设置为初始值Δ0,因为它直接确定了前面权步的大小,它应该按照权自身的初值进行选择,例如,Δ0=0.1(默认设置)。
为了使权不至于变得太大,设置最大权更新值限制Δmax,默认上界设置为
Δmax=50.0。
在很多实验中,发现通过设置最大权更新值Δmax到相当小的值,例如
Δmax=1.0。
我们可能达到误差减小的平滑性能。
5.计算修正权值W、偏差b
第t次学习,权值W、偏差b的的修正公式
W(t)=W(t-1)+ΔW(t),
b(t)=b(t-1)+Δb(t),
其中,t为学习次数。
6.BP网络学习成功结束条件每次学习累积误差平方和
中国矿产资源评价新技术与评价新模型
每次学习平均误差
中国矿产资源评价新技术与评价新模型
当平均误差MSE<ε,BP网络学习成功结束。
7.BP网络应用预测
在应用BP网络时,提供网络输入给输入层,应用给定的BP网络及BP网络学习得到的权值W、偏差b,网络输入经过从输入层经各隐含层向输出层的“顺传播”过程,计算出BP网的预测输出。
8.神经元激活函数f
线性函数
f(x)=x,
f′(x)=1,
f(x)的输入范围(-∞,+∞),输出范围(-∞,+∞)。
一般用于输出层,可使网络输出任何值。
S型函数S(x)
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围(0,1)。
f′(x)=f(x)[1-f(x)],
f′(x)的输入范围(-∞,+∞),输出范围(0, ]。
一般用于隐含层,可使范围(-∞,+∞)的输入,变成(0,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。
在用于模式识别时,可用于输出层,产生逼近于0或1的二值输出。
双曲正切S型函数
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围(-1,1)。
f′(x)=1-f(x)·f(x),
f′(x)的输入范围(-∞,+∞),输出范围(0,1]。
一般用于隐含层,可使范围(-∞,+∞)的输入,变成(-1,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。
阶梯函数
类型1
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围{0,1}。
f′(x)=0。
类型2
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围{-1,1}。
f′(x)=0。
斜坡函数
类型1
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围[0,1]。
中国矿产资源评价新技术与评价新模型
f′(x)的输入范围(-∞,+∞),输出范围{0,1}。
类型2
中国矿产资源评价新技术与评价新模型
f(x)的输入范围(-∞,+∞),输出范围[-1,1]。
中国矿产资源评价新技术与评价新模型
f′(x)的输入范围(-∞,+∞),输出范围{0,1}。
三、总体算法
1.三层BP网络(含输入层,隐含层,输出层)权值W、偏差b初始化总体算法
(1)输入参数X[N][P],S0,S1,f1[S1],S2,f2[S2];
(2)计算输入模式X[N][P]各个变量的最大值,最小值矩阵 Xmax[N],Xmin[N];
(3)隐含层的权值W1,偏差b1初始化。
情形1:隐含层激活函数f( )都是双曲正切S型函数
1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];
2)计算输入模式X的每个变量的范围均值向量Xmid[N];
3)计算W,b的幅度因子Wmag;
4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];
5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];
6)计算W[S1][S0],b[S1];
7)计算隐含层的初始化权值W1[S1][S0];
8)计算隐含层的初始化偏差b1[S1];
9))输出W1[S1][S0],b1[S1]。
情形2:隐含层激活函数f( )都是S型函数
1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];
2)计算输入模式X的每个变量的范围均值向量Xmid[N];
3)计算W,b的幅度因子Wmag;
4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];
5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];
6)计算W[S1][S0],b[S1];
7)计算隐含层的初始化权值W1[S1][S0];
8)计算隐含层的初始化偏差b1[S1];
9)输出W1[S1][S0],b1[S1]。
情形3:隐含层激活函数f( )为其他函数的情形
1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];
2)计算输入模式X的每个变量的范围均值向量Xmid[N];
3)计算W,b的幅度因子Wmag;
4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];
5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];
6)计算W[S1][S0],b[S1];
7)计算隐含层的初始化权值W1[S1][S0];
8)计算隐含层的初始化偏差b1[S1];
9)输出W1[S1][S0],b1[S1]。
(4)输出层的权值W2,偏差b2初始化
1)产生[-1,1]之间均匀分布的S2×S1维随机数矩阵W2[S2][S1];
2)产生[-1,1]之间均匀分布的S2×1维随机数矩阵b2[S2];
3)输出W2[S2][S1],b2[S2]。
2.应用弹性BP算法(RPROP)学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b总体算法
函数:Train3BP_RPROP(S0,X,P,S1,W1,b1,f1,S2,W2,b2,f2,d,TP)
(1)输入参数
P对模式(xp,dp),p=1,2,…,P;
三层BP网络结构;
学习参数。
(2)学习初始化
1) ;
2)各层W,b的梯度值 , 初始化为零矩阵。
(3)由输入模式X求第一次学习各层输出y0,y1,y2及第一次学习平均误差MSE
(4)进入学习循环
epoch=1
(5)判断每次学习误差是否达到目标误差要求
如果MSE<ϵ,
则,跳出epoch循环,
转到(12)。
(6)保存第epoch-1次学习产生的各层W,b的梯度值 ,
(7)求第epoch次学习各层W,b的梯度值 ,
1)求各层误差反向传播值δ;
2)求第p次各层W,b的梯度值 , ;
3)求p=1,2,…,P次模式产生的W,b的梯度值 , 的累加。
(8)如果epoch=1,则将第epoch-1次学习的各层W,b的梯度值 , 设为第epoch次学习产生的各层W,b的梯度值 , 。
(9)求各层W,b的更新
1)求权更新值Δij更新;
2)求W,b的权更新值 , ;
3)求第epoch次学习修正后的各层W,b。
(10)用修正后各层W、b,由X求第epoch次学习各层输出y0,y1,y2及第epoch次学习误差MSE
(11)epoch=epoch+1,
如果epoch≤MAX_EPOCH,转到(5);
否则,转到(12)。
(12)输出处理
1)如果MSE<ε,
则学习达到目标误差要求,输出W1,b1,W2,b2。
2)如果MSE≥ε,
则学习没有达到目标误差要求,再次学习。
(13)结束
3.三层BP网络(含输入层,隐含层,输出层)预测总体算法
首先应用Train3lBP_RPROP( )学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b,然后应用三层BP网络(含输入层,隐含层,输出层)预测。
函数:Simu3lBP( )。
1)输入参数:
P个需预测的输入数据向量xp,p=1,2,…,P;
三层BP网络结构;
学习得到的各层权值W、偏差b。
2)计算P个需预测的输入数据向量xp(p=1,2,…,P)的网络输出 y2[S2][P],输出预测结果y2[S2][P]。
四、总体算法流程图
BP网络总体算法流程图见附图2。
五、数据流图
BP网数据流图见附图1。
六、实例
实例一 全国铜矿化探异常数据BP 模型分类
1.全国铜矿化探异常数据准备
在全国铜矿化探数据上用稳健统计学方法选取铜异常下限值33.1,生成全国铜矿化探异常数据。
2.模型数据准备
根据全国铜矿化探异常数据,选取7类33个矿点的化探数据作为模型数据。这7类分别是岩浆岩型铜矿、斑岩型铜矿、矽卡岩型、海相火山型铜矿、陆相火山型铜矿、受变质型铜矿、海相沉积型铜矿,另添加了一类没有铜异常的模型(表8-1)。
3.测试数据准备
全国化探数据作为测试数据集。
4.BP网络结构
隐层数2,输入层到输出层向量维数分别为14,9、5、1。学习率设置为0.9,系统误差1e-5。没有动量项。
表8-1 模型数据表
续表
5.计算结果图
如图8-2、图8-3。
图8-2
图8-3 全国铜矿矿床类型BP模型分类示意图
实例二 全国金矿矿石量品位数据BP 模型分类
1.模型数据准备
根据全国金矿储量品位数据,选取4类34个矿床数据作为模型数据,这4类分别是绿岩型金矿、与中酸性浸入岩有关的热液型金矿、微细浸染型型金矿、火山热液型金矿(表8-2)。
2.测试数据准备
模型样本点和部分金矿点金属量、矿石量、品位数据作为测试数据集。
3.BP网络结构
输入层为三维,隐层1层,隐层为三维,输出层为四维,学习率设置为0.8,系统误差1e-4,迭代次数5000。
表8-2 模型数据
4.计算结果
结果见表8-3、8-4。
表8-3 训练学习结果
表8-4 预测结果(部分)
续表
对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义。 1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1] 1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2] 1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时最好成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1] 真正打破明斯基冰封魔咒的是,David Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次高潮。[1,2] 因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次高潮具有决定性意义。 这一点是说BP算法在神经网络领域中的地位和意义。 BP算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括最近炙手可热的深度学习概念下的卷积神经网络(CNNs)。 BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。 BP算法全称叫作误差反向传播(error Back Propagation,或者也叫作误差逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。 BP算法中核心的数学工具就是微积分的 链式求导法则 。BP算法的缺点,首当其冲就是局部极小值问题。 BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。[1]、《BP算法的哲学思考》,成素梅、郝中华著 [2]、《机器学习》,周志华著 [3]、 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 2016-05-13 第一次发布 2016-06-04 较大幅度修改,完善推导过程,修改文章名2016-07-23 修改了公式推导中的一个错误,修改了一个表述错误
157 浏览 4 回答
275 浏览 5 回答
176 浏览 2 回答
339 浏览 2 回答
269 浏览 6 回答
279 浏览 5 回答
177 浏览 3 回答
145 浏览 3 回答
158 浏览 2 回答
313 浏览 6 回答
245 浏览 2 回答
210 浏览 3 回答
346 浏览 4 回答
154 浏览 2 回答
144 浏览 4 回答