㈠ 人工神经网络的主要研究成果
1 人工神经网络产生的背景
自古以来,关于人类智能本源的奥秘,一直吸引着无数哲学家和自然科学家的研究热情。生物学家、神经学家经过长期不懈的努力,通过对人脑的观察和认识,认为人脑的智能活动离不开脑的物质基础,包括它的实体结构和其中所发生的各种生物、化学、电学作用,并因此建立了神经元网络理论和神经系统结构理论,而神经元理论又是此后神经传导理论和大脑功能学说的基础。在这些理论基础之上,科学家们认为,可以从仿制人脑神经系统的结构和功能出发,研究人类智能活动和认识现象。另一方面,19世纪之前,无论是以欧氏几何和微积分为代表的经典数学,还是以牛顿力学为代表的经典物理学,从总体上说,这些经典科学都是线性科学。然而,客观世界是如此的纷繁复杂,非线性情况随处可见,人脑神经系统更是如此。复杂性和非线性是连接在一起的,因此,对非线性科学的研究也是我们认识复杂系统的关键。为了更好地认识客观世界,我们必须对非线性科学进行研究。人工神经网络作为一种非线性的、与大脑智能相似的网络模型,就这样应运而生了。所以,人工神经网络的创立不是偶然的,而是20世纪初科学技术充分发展的产物。
2 人工神经网络的发展
人工神经网络的研究始于40年代初。半个世纪以来,经历了兴起、高潮与萧条、高潮及稳步发展的远为曲折的道路。
1943年,心理学家W.S.Mcculloch和数理逻辑学家W.Pitts 提出了M—P模型,这是第一个用数理语言描述脑的信息处理过程的模型, 虽然神经元的功能比较弱,但它为以后的研究工作提供了依据。1949年,心理学家D.O.Hebb提出突触联系可变的假设,根据这一假设提出的学习规律为神经网络的学习算法奠定了基础。 1957 年, 计算机科学家Rosenblatt提出了着名的感知机模型,它的模型包含了现代计算机的一些原理,是第一个完整的人工神经网络,第一次把神经网络研究付诸工程实现。由于可应用于模式识别,联想记忆等方面,当时有上百家实验室投入此项研究,美国军方甚至认为神经网络工程应当比“原子弹工程”更重要而给予巨额资助,并在声纳信号识别等领域取得一定成绩。1960年,B.Windrow和E.Hoff提出了自适应线性单元, 它可用于自适应滤波、预测和模式识别。至此,人工神经网络的研究工作进入了第一个高潮。
1969年,美国着名人工智能学者M.Minsky和S.Papert编写了影响很大的Perceptron一书,从理论上证明单层感知机的能力有限,诸如不能解决异或问题,而且他们推测多层网络的感知机能力也不过如此,他们的分析恰似一瓢冷水,很多学者感到前途渺茫而纷纷改行,原先参与研究的实验室纷纷退出,在这之后近10年,神经网络研究进入了一个缓慢发展的萧条期。这期间,芬兰学者T.Kohonen 提出了自组织映射理论,反映了大脑神经细胞的自组织特性、记忆方式以及神经细胞兴奋刺激的规律;美国学者S.A.Grossberg的自适应共振理论(ART );日本学者K.Fukushima提出了认知机模型;ShunIchimari则致力于神经网络有关数学理论的研究等,这些研究成果对以后的神经网络的发展产生了重要影响。
美国生物物理学家J.J.Hopfield于1982年、1984年在美国科学院院刊发表的两篇文章,有力地推动了神经网络的研究,引起了研究神经网络的又一次热潮。 1982 年, 他提出了一个新的神经网络模型——hopfield网络模型。他在这种网络模型的研究中,首次引入了网络能量函数的概念,并给出了网络稳定性的判定依据。1984年,他又提出了网络模型实现的电子电路,为神经网络的工程实现指明了方向,他的研究成果开拓了神经网络用于联想记忆的优化计算的新途径,并为神经计算机研究奠定了基础。1984年Hinton等人将模拟退火算法引入到神经网络中,提出了Boltzmann机网络模型,BM 网络算法为神经网络优化计算提供了一个有效的方法。1986年,D.E.Rumelhart和J.LMcclelland提出了误差反向传播算法,成为至今为止影响很大的一种网络学习方法。1987年美国神经计算机专家R.Hecht—Nielsen提出了对向传播神经网络,该网络具有分类灵活,算法简练的优点,可用于模式分类、函数逼近、统计分析和数据压缩等领域。1988年L.Ochua 等人提出了细胞神经网络模型,它在视觉初级加工上得到了广泛应用。
为适应人工神经网络的发展,1987年成立了国际神经网络学会,并决定定期召开国际神经网络学术会议。1988年1月Neural Network 创刊。1990年3月IEEE Transaction on Neural Network问世。 我国于1990年12月在北京召开了首届神经网络学术大会,并决定以后每年召开一次。1991 年在南京成立了中国神经网络学会。 IEEE 与INNS 联合召开的IJCNN92已在北京召开。 这些为神经网络的研究和发展起了推波助澜的作用,人工神经网络步入了稳步发展的时期。
90年代初,诺贝尔奖获得者Edelman提出了Darwinism模型,建立了神经网络系统理论。同年,Aihara等在前人推导和实验的基础上,给出了一个混沌神经元模型,该模型已成为一种经典的混沌神经网络模型,该模型可用于联想记忆。 Wunsch 在90OSA 年会上提出了一种AnnualMeeting,用光电执行ART,学习过程有自适应滤波和推理功能,具有快速和稳定的学习特点。1991年,Hertz探讨了神经计算理论, 对神经网络的计算复杂性分析具有重要意义;Inoue 等提出用耦合的混沌振荡子作为某个神经元,构造混沌神经网络模型,为它的广泛应用前景指明了道路。1992年,Holland用模拟生物进化的方式提出了遗传算法, 用来求解复杂优化问题。1993年方建安等采用遗传算法学习,研究神经网络控制器获得了一些结果。1994年Angeline等在前人进化策略理论的基础上,提出一种进化算法来建立反馈神经网络,成功地应用到模式识别,自动控制等方面;廖晓昕对细胞神经网络建立了新的数学理论和方法,得到了一系列结果。HayashlY根据动物大脑中出现的振荡现象,提出了振荡神经网络。1995年Mitra把人工神经网络与模糊逻辑理论、 生物细胞学说以及概率论相结合提出了模糊神经网络,使得神经网络的研究取得了突破性进展。Jenkins等人研究光学神经网络, 建立了光学二维并行互连与电子学混合的光学神经网络,它能避免网络陷入局部最小值,并最后可达到或接近最理想的解;SoleRV等提出流体神经网络,用来研究昆虫社会,机器人集体免疫系统,启发人们用混沌理论分析社会大系统。1996年,ShuaiJW’等模拟人脑的自发展行为, 在讨论混沌神经网络的基础上提出了自发展神经网络。1997、1998年董聪等创立和完善了广义遗传算法,解决了多层前向网络的最简拓朴构造问题和全局最优逼近问题。
随着理论工作的发展,神经网络的应用研究也取得了突破性进展,涉及面非常广泛,就应用的技术领域而言有计算机视觉,语言的识别、理解与合成,优化计算,智能控制及复杂系统分析,模式识别,神经计算机研制,知识推理专家系统与人工智能。涉及的学科有神经生理学、认识科学、数理科学、心理学、信息科学、计算机科学、微电子学、光学、动力学、生物电子学等。美国、日本等国在神经网络计算机软硬件实现的开发方面也取得了显着的成绩,并逐步形成产品。在美国,神经计算机产业已获得军方的强有力支持,国防部高级研究计划局认为“神经网络是解决机器智能的唯一希望”,仅一项8 年神经计算机计划就投资4亿美元。在欧洲共同体的ESPRIT计划中, 就有一项特别项目:“神经网络在欧洲工业中的应用”,单是生产神经网络专用芯片这一项就投资2200万美元。据美国资料声称,日本在神经网络研究上的投资大约是美国的4倍。我国也不甘落后,自从1990 年批准了南开大学的光学神经计算机等3项课题以来, 国家自然科学基金与国防预研基金也都为神经网络的研究提供资助。另外,许多国际着名公司也纷纷卷入对神经网络的研究,如Intel、IBM、Siemens、HNC。神经计算机产品开始走向商用阶段,被国防、企业和科研部门选用。在举世瞩目的海湾战争中,美国空军采用了神经网络来进行决策与控制。在这种刺激和需求下,人工神经网络定会取得新的突破,迎来又一个高潮。自1958年第一个神经网络诞生以来,其理论与应用成果不胜枚举。人工神经网络是一个快速发展着的一门新兴学科,新的模型、新的理论、新的应用成果正在层出不穷地涌现出来。
3 人工神经网络的发展前景
针对神经网络存在的问题和社会需求,今后发展的主要方向可分为理论研究和应用研究两个方面。
(1)利用神经生理与认识科学研究大脑思维及智能的机理、 计算理论,带着问题研究理论。
人工神经网络提供了一种揭示智能和了解人脑工作方式的合理途径,但是由于人类起初对神经系统了解非常有限,对于自身脑结构及其活动机理的认识还十分肤浅,并且带有某种“先验”。例如, Boltzmann机引入随机扰动来避免局部极小,有其卓越之处,然而缺乏必要的脑生理学基础,毫无疑问,人工神经网络的完善与发展要结合神经科学的研究。而且,神经科学,心理学和认识科学等方面提出的一些重大问题,是向神经网络理论研究提出的新挑战,这些问题的解决有助于完善和发展神经网络理论。因此利用神经生理和认识科学研究大脑思维及智能的机理,如有新的突破,将会改变智能和机器关系的认识。
利用神经科学基础理论的研究成果,用数理方法探索智能水平更高的人工神经网络模型,深入研究网络的算法和性能,如神经计算、进化计算、稳定性、收敛性、计算复杂性、容错性、鲁棒性等,开发新的网络数理理论。由于神经网络的非线性,因此非线性问题的研究是神经网络理论发展的一个最大动力。特别是人们发现,脑中存在着混沌现象以来,用混沌动力学启发神经网络的研究或用神经网络产生混沌成为摆在人们面前的一个新课题,因为从生理本质角度出发是研究神经网络的根本手段。
(2)神经网络软件模拟, 硬件实现的研究以及神经网络在各个科学技术领域应用的研究。
由于人工神经网络可以用传统计算机模拟,也可以用集成电路芯片组成神经计算机,甚至还可以用光学的、生物芯片的方式实现,因此研制纯软件模拟,虚拟模拟和全硬件实现的电子神经网络计算机潜力巨大。如何使神经网络计算机与传统的计算机和人工智能技术相结合也是前沿课题;如何使神经网络计算机的功能向智能化发展,研制与人脑功能相似的智能计算机,如光学神经计算机,分子神经计算机,将具有十分诱人的前景。
4 哲理
(1)人工神经网络打开了认识论的新领域
认识与脑的问题,长期以来一直受到人们的关注,因为它不仅是有关人的心理、意识的心理学问题,也是有关人的思维活动机制的脑科学与思维科学问题,而且直接关系到对物质与意识的哲学基本问题的回答。人工神经网络的发展使我们能够更进一步地既唯物又辩证地理解认识与脑的关系,打开认识论的新领域。人脑是一个复杂的并行系统,它具有“认知、意识、情感”等高级脑功能,用人工进行模拟,有利于加深对思维及智能的认识,已对认知和智力的本质的研究产生了极大的推动作用。在研究大脑的整体功能和复杂性方面,人工神经网络给人们带来了新的启迪。由于人脑中存在混沌现象,混沌可用来理解脑中某些不规则的活动,从而混沌动力学模型能用作人对外部世界建模的工具,可用来描述人脑的信息处理过程。混沌和智能是有关的,神经网络中引入混沌学思想有助于提示人类形象思维等方面的奥秘。人工神经网络之所以再度兴起,关键在于它反映了事物的非线性,抓住了客观世界的本质,而且它在一定程度上正面回答了智能系统如何从环境中自主学习这一最关键的问题,从认知的角度讲,所谓学习,就是对未知现象或规律的发现和归纳。由于神经网络具有高度的并行性,高度的非线性全局作用,良好的容错性与联想记忆功能以及十分强的自适应、自学习功能,而使得它成为揭示智能和了解人脑工作方式的合理途径。但是,由于认知问题的复杂性,目前,我们对于脑神经网的运行和神经细胞的内部处理机制,如信息在人脑是如何传输、存贮、加工的?记忆、联想、判断是如何形成的?大脑是否存在一个操作系统?还没有太多的认识,因此要制造人工神经网络来模仿人脑各方面的功能,还有待于人们对大脑信息处理机理认识的深化。
(2)人工神经网络发展的推动力来源于实践、 理论和问题的相互作用
随着人们社会实践范围的不断扩大,社会实践层次的不断深入,人们所接触到的自然现象也越来越丰富多彩、纷繁复杂,这就促使人们用不同的原因加以解释不同种类的自然现象,当不同种类的自然现象可以用同样的原因加以解释,这样就出现了不同学科的相互交叉、综合,人工神经网络就这样产生了。在开始阶段,由于这些理论化的网络模型比较简单,还存在许多问题,而且这些模型几乎没有得到实践的检验,因而神经网络的发展比较缓慢。随着理论研究的深入,问题逐渐地解决特别是工程上得到实现以后,如声纳识别成功,才迎来了神经网络的第一个发展高潮。可Minisky认为感知器不能解决异或问题, 多层感知器也不过如此,神经网络的研究进入了低谷,这主要是因为非线性问题没得到解决。随着理论的不断丰富,实践的不断深入, 现在已证明Minisky的悲观论调是错误的。今天,高度发达的科学技术逐渐揭示了非线性问题是客观世界的本质。问题、理论、实践的相互作用又迎来了人工神经网络的第二次高潮。目前人工神经网络的问题是智能水平不高,还有其它理论和实现方面的问题,这就迫使人们不断地进行理论研究,不断实践,促使神经网络不断向前发展。总之,先前的原因遇到了解释不同的新现象,促使人们提出更加普遍和精确的原因来解释。理论是基础,实践是动力,但单纯的理论和实践的作用还不能推动人工神经网络的发展,还必须有问题提出,才能吸引科学家进入研究的特定范围,引导科学家从事相关研究,从而逼近科学发现,而后实践又提出新问题,新问题又引发新的思考,促使科学家不断思考,不断完善理论。人工神经网络的发展无不体现着问题、理论和实践的辩证统一关系。
(3 )人工神经网络发展的另一推动力来源于相关学科的贡献及不同学科专家的竞争与协同
人工神经网络本身就是一门边缘学科,它的发展有更广阔的科学背景,亦即是众多科研成果的综合产物,控制论创始人Wiener在其巨着《控制论》中就进行了人脑神经元的研究;计算机科学家Turing就提出过B网络的设想;Prigogine提出非平衡系统的自组织理论,获得诺贝尔奖;Haken研究大量元件联合行动而产生宏观效果, 非线性系统“混沌”态的提出及其研究等,都是研究如何通过元件间的相互作用建立复杂系统,类似于生物系统的自组织行为。脑科学与神经科学的进展迅速反映到人工神经网络的研究中,例如生物神经网络理论,视觉中发现的侧抑制原理,感受野概念等,为神经网络的发展起了重要的推动作用。从已提出的上百种人工神经网络模型中,涉及学科之多,令人目不暇接,其应用领域之广,令人叹为观止。不同学科专家为了在这一领域取得领先水平,存在着不同程度的竞争,所有这些有力地推动了人工神经网络的发展。人脑是一个功能十分强大、结构异常复杂的信息系统,随着信息论、控制论、生命科学,计算机科学的发展,人们越来越惊异于大脑的奇妙,至少到目前为止,人类大脑信号处理机制对人类自身来说,仍是一个黑盒子,要揭示人脑的奥秘需要神经学家、心理学家、计算机科学家、微电子学家、数学家等专家的共同努力,对人类智能行为不断深入研究,为人工神经网络发展提供丰富的理论源泉。另外,还要有哲学家的参与,通过哲学思想和自然科学多种学科的深层结合,逐步孕育出探索人类思维本质和规律的新方法,使思维科学从朦胧走向理性。而且,不同领域专家的竞争与协调同有利于问题清晰化和寻求最好的解决途径。纵观神经网络的发展历史,没有相关学科的贡献,不同学科专家的竞争与协同,神经网络就不会有今天。当然,人工神经网络在各个学科领域应用的研究反过来又推动其它学科的发展,推动自身的完善和发展。
㈡ 什么是BP神经网络
BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成;正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,使误差减小。经反复学习,最终使误差减小到可接受的范围。具体步骤如下:
1、从训练集中取出某一样本,把信息输入网络中。
2、通过各节点间的连接情况正向逐层处理后,得到神经网络的实际输出。
3、计算网络实际输出与期望输出的误差。
4、将误差逐层反向回传至之前各层,并按一定原则将误差信号加载到连接权值上,使整个神经网络的连接权值向误差减小的方向转化。
5、対训练集中每一个输入—输出样本对重复以上步骤,直到整个训练样本集的误差减小到符合要求为止。
㈢ 异常检测有哪些主要的分析方法
1. 概率统计方法
在基于异常检测技术的IDS中应用最早也是最多的一种方法。
首先要对系统或用户的行为按照一定的时间间隔进行采样,样本的内容包括每个会话的登录、退出情况,CPU和内存的占用情况,硬盘等存储介质的使用情况等。
将每次采集到的样本进行计算,得出一系列的参数变量对这些行为进行描述,从而产生行为轮廓,将每次采样后得到的行为轮廓与已有轮廓进行合并,最终得到系统和用户的正常行为轮廓。IDS通过将当前采集到的行为轮廓与正常行为轮廓相比较,来检测是否存在网络入侵行为。
2. 预测模式生成法
假设条件是事件序列不是随机的而是遵循可辨别的模式。这种检测方法的特点是考虑了事件的序列及其相互联系,利用时间规则识别用户行为正常模式的特征。通过归纳学习产生这些规则集,并能动态地修改系统中的这些规则,使之具有较高的预测性、准确性。如果规则在大部分时间是正确的,并能够成功地运用预测所观察到的数据,那么规则就具有高可信度。
3. 神经网络方法
基本思想是用一系列信息单元(命令)训练神经单元,这样在给定一组输入后、就可能预测出输出。与统计理论相比,神经网络更好地表达了变量间的非线性关系,并且能自动学习并更新。实验表明UNIX系统管理员的行为几乎全是可以预测的,对于一般用户,不可预测的行为也只占了很少的一部分。
㈣ 入侵检测技术基础的异常检测技术
●概率统计异常检测
原理:每一个轮廓保存记录主体当前行为,并定时将当前轮廓与历史轮廓合并形成统计轮廓(更新),通过比较当前轮廓与统计轮廓来判定异常行为。
优点:可应用成熟的概率统计理论
缺点:①由于用户行为的复杂性,要想准确地匹配一个用户的历史行为非常困难,容易造成系统误报和漏报;
②定义入侵阈值比较困难,阈值高则误报率提高,阈值低则漏报率增高。
●神经网络异常检测
原理:对下一事件的预测错误率在一定程度上反映了用户行为的异常程度。
优点:①更好地表达了变量间的非线性关系,能更好地处理原始数据的随机特征,即不需要对这些数据做任何统计假设,并且能自动学习和更新;②有较好的抗干扰能力
缺点:网络拓扑结构以及各元素的权重很难确定
㈤ BP神经网络的原理的BP什么意思
原文链接:http://tecdat.cn/?p=19936
在本教程中,您将学习如何在R语言中创建神经网络模型。
神经网络(或人工神经网络)具有通过样本进行学习的能力。人工神经网络是一种受生物神经元系统启发的信息处理模型。它由大量高度互连的处理元件(称为神经元)组成,以解决问题。它遵循非线性路径,并在整个节点中并行处理信息。神经网络是一个复杂的自适应系统。自适应意味着它可以通过调整输入权重来更改其内部结构。
该神经网络旨在解决人类容易遇到的问题和机器难以解决的问题,例如识别猫和狗的图片,识别编号的图片。这些问题通常称为模式识别。它的应用范围从光学字符识别到目标检测。
本教程将涵盖以下主题:
神经网络概论
正向传播和反向传播
激活函数
R中神经网络的实现
案例
利弊
结论
神经网络概论
神经网络是受人脑启发执行特定任务的算法。它是一组连接的输入/输出单元,其中每个连接都具有与之关联的权重。在学习阶段,网络通过调整权重进行学习,来预测给定输入的正确类别标签。
人脑由数十亿个处理信息的神经细胞组成。每个神经细胞都认为是一个简单的处理系统。被称为生物神经网络的神经元通过电信号传输信息。这种并行的交互系统使大脑能够思考和处理信息。一个神经元的树突接收来自另一个神经元的输入信号,并根据这些输入将输出响应到某个其他神经元的轴突。
创建测试数据集
创建测试数据集:专业知识得分和沟通技能得分
预测测试集的结果
使用计算函数预测测试数据的概率得分。
现在,将概率转换为二进制类。
预测结果为1,0和1。
利弊
神经网络更灵活,可以用于回归和分类问题。神经网络非常适合具有大量输入(例如图像)的非线性数据集,可以使用任意数量的输入和层,可以并行执行工作。
还有更多可供选择的算法,例如SVM,决策树和回归算法,这些算法简单,快速,易于训练并提供更好的性能。神经网络更多的是黑盒子,需要更多的开发时间和更多的计算能力。与其他机器学习算法相比,神经网络需要更多的数据。NN仅可用于数字输入和非缺失值数据集。一位着名的神经网络研究人员说:“神经网络是解决任何问题的第二好的方法。最好的方法是真正理解问题。”
神经网络的用途
神经网络的特性提供了许多应用方面,例如:
模式识别:神经网络非常适合模式识别问题,例如面部识别,物体检测,指纹识别等。
异常检测:神经网络擅长异常检测,它们可以轻松检测出不适合常规模式的异常模式。
时间序列预测:神经网络可用于预测时间序列问题,例如股票价格,天气预报。
自然语言处理:神经网络在自然语言处理任务中提供了广泛的应用,例如文本分类,命名实体识别(NER),词性标记,语音识别和拼写检查。
最受欢迎的见解
1.r语言用神经网络改进nelson-siegel模型拟合收益率曲线分析
2.r语言实现拟合神经网络预测和结果可视化
3.python用遗传算法-神经网络-模糊逻辑控制算法对乐透分析
4.用于nlp的python:使用keras的多标签文本lstm神经网络分类
5.用r语言实现神经网络预测股票实例
6.R语言基于Keras的小数据集深度学习图像分类
7.用于NLP的seq2seq模型实例用Keras实现神经机器翻译
8.python中基于网格搜索算法优化的深度学习模型分析糖
9.matlab使用贝叶斯优化的深度学习
㈥ 神经网络异常检测方法和机器学习异常检测方法对于入侵检测的应用
神经网络异常检测方法神经网络入侵检测方法是通过训练神经网络连续的信息单元来进行异常检测,信息单元指的是命令。网络的输入为用户当前输入的命令和已执行过的W个命令;用户执行过的命令被神经网络用来预测用户输入的下一个命令,如下图。若神经网络被训练成预测用户输入命令的序列集合,则神经网络就构成用户的轮郭框架。当用这个神经网络预测不出某用户正确的后继命令,即在某种程度上表明了用户行为与其轮廓框架的偏离,这时表明有异常事件发生,以此就能作异常入侵检测。
上面式子用来分类识别,检测异常序列。实验结果表明这种方法检测迅速,而且误警率底。然而,此方法对于用户动态行为变化以及单独异常检测还有待改善。复杂的相似度量和先验知识加入到检测中可能会提高系统的准确性,但需要做进一步工作。
㈦ 人工神经网络概念梳理与实例演示
人工神经网络概念梳理与实例演示
神经网络是一种模仿生物神经元的机器学习模型,数据从输入层进入并流经激活阈值的多个节点。
递归性神经网络一种能够对之前输入数据进行内部存储记忆的神经网络,所以他们能够学习到数据流中的时间依赖结构。
如今机器学习已经被应用到很多的产品中去了,例如,siri、Google Now等智能助手,推荐引擎——亚马逊网站用于推荐商品的推荐引擎,Google和Facebook使用的广告排名系统。最近,深度学习的一些进步将机器学习带入公众视野:AlphaGo 打败围棋大师李世石事件以及一些图片识别和机器翻译等新产品的出现。
在这部分中,我们将介绍一些强大并被普遍使用的机器学习技术。这当然包括一些深度学习以及一些满足现代业务需求传统方法。读完这一系列的文章之后,你就掌握了必要的知识,便可以将具体的机器学习实验应用到你所在的领域当中。
随着深层神经网络的精度的提高,语音和图像识别技术的应用吸引了大众的注意力,关于AI和深度学习的研究也变得更加普遍了。但是怎么能够让它进一步扩大影响力,更受欢迎仍然是一个问题。这篇文章的主要内容是:简述前馈神经网络和递归神经网络、怎样搭建一个递归神经网络对时间系列数据进行异常检测。为了让我们的讨论更加具体化,我们将演示一下怎么用Deeplearning4j搭建神经网络。
一、什么是神经网络?
人工神经网络算法的最初构思是模仿生物神经元。但是这个类比很不可靠。人工神经网络的每一个特征都是对生物神经元的一种折射:每一个节点与激活阈值、触发的连接。
连接人工神经元系统建立起来之后,我们就能够对这些系统进行训练,从而让他们学习到数据中的一些模式,学到之后就能执行回归、分类、聚类、预测等功能。
人工神经网络可以看作是计算节点的集合。数据通过这些节点进入神经网络的输入层,再通过神经网络的隐藏层直到关于数据的一个结论或者结果出现,这个过程才会停止。神经网络产出的结果会跟预期的结果进行比较,神经网络得出的结果与正确结果的不同点会被用来更正神经网络节点的激活阈值。随着这个过程的不断重复,神经网络的输出结果就会无限靠近预期结果。
二、训练过程
在搭建一个神经网络系统之前,你必须先了解训练的过程以及网络输出结果是怎么产生的。然而我们并不想过度深入的了解这些方程式,下面是一个简短的介绍。
网络的输入节点收到一个数值数组(或许是叫做张量多维度数组)就代表输入数据。例如, 图像中的每个像素可以表示为一个标量,然后将像素传递给一个节点。输入数据将会与神经网络的参数相乘,这个输入数据被扩大还是减小取决于它的重要性,换句话说,取决于这个像素就不会影响神经网络关于整个输入数据的结论。
起初这些参数都是随机的,也就是说神经网络在建立初期根本就不了解数据的结构。每个节点的激活函数决定了每个输入节点的输出结果。所以每个节点是否能够被激活取决于它是否接受到足够的刺激强度,即是否输入数据和参数的结果超出了激活阈值的界限。
在所谓的密集或完全连接层中,每个节点的输出值都会传递给后续层的节点,在通过所有隐藏层后最终到达输出层,也就是产生输入结果的地方。在输出层, 神经网络得到的最终结论将会跟预期结论进行比较(例如,图片中的这些像素代表一只猫还是狗?)。神经网络猜测的结果与正确结果的计算误差都会被纳入到一个测试集中,神经网络又会利用这些计算误差来不断更新参数,以此来改变图片中不同像素的重要程度。整个过程的目的就是降低输出结果与预期结果的误差,正确地标注出这个图像到底是不是一条狗。
深度学习是一个复杂的过程,由于大量的矩阵系数需要被修改所以它就涉及到矩阵代数、衍生品、概率和密集的硬件使用问题,但是用户不需要全部了解这些复杂性。
但是,你也应该知道一些基本参数,这将帮助你理解神经网络函数。这其中包括激活函数、优化算法和目标函数(也称为损失、成本或误差函数)。
激活函数决定了信号是否以及在多大程度上应该被发送到连接节点。阶梯函数是最常用的激活函数, 如果其输入小于某个阈值就是0,如果其输入大于阈值就是1。节点都会通过阶梯激活函数向连接节点发送一个0或1。优化算法决定了神经网络怎么样学习,以及测试完误差后,权重怎么样被更准确地调整。最常见的优化算法是随机梯度下降法。最后, 成本函数常用来衡量误差,通过对比一个给定训练样本中得出的结果与预期结果的不同来评定神经网络的执行效果。
Keras、Deeplearning4j 等开源框架让创建神经网络变得简单。创建神经网络结构时,需要考虑的是怎样将你的数据类型匹配到一个已知的被解决的问题,并且根据你的实际需求来修改现有结构。
三、神经网络的类型以及应用
神经网络已经被了解和应用了数十年了,但是最近的一些技术趋势才使得深度神经网络变得更加高效。
GPUs使得矩阵操作速度更快;分布式计算结构让计算能力大大增强;多个超参数的组合也让迭代的速度提升。所有这些都让训练的速度大大加快,迅速找到适合的结构。
随着更大数据集的产生,类似于ImageNet 的大型高质量的标签数据集应运而生。机器学习算法训练的数据越大,那么它的准确性就会越高。
最后,随着我们理解能力以及神经网络算法的不断提升,神经网络的准确性在语音识别、机器翻译以及一些机器感知和面向目标的一些任务等方面不断刷新记录。
尽管神经网络架构非常的大,但是主要用到的神经网络种类也就是下面的几种。
3.1前馈神经网络
前馈神经网络包括一个输入层、一个输出层以及一个或多个的隐藏层。前馈神经网络可以做出很好的通用逼近器,并且能够被用来创建通用模型。
这种类型的神经网络可用于分类和回归。例如,当使用前馈网络进行分类时,输出层神经元的个数等于类的数量。从概念上讲, 激活了的输出神经元决定了神经网络所预测的类。更准确地说, 每个输出神经元返回一个记录与分类相匹配的概率数,其中概率最高的分类将被选为模型的输出分类。
前馈神经网络的优势是简单易用,与其他类型的神经网络相比更简单,并且有一大堆的应用实例。
3.2卷积神经网络
卷积神经网络和前馈神经网络是非常相似的,至少是数据的传输方式类似。他们结构大致上是模仿了视觉皮层。卷积神经网络通过许多的过滤器。这些过滤器主要集中在一个图像子集、补丁、图块的特征识别上。每一个过滤器都在寻找不同模式的视觉数据,例如,有的可能是找水平线,有的是找对角线,有的是找垂直的。这些线条都被看作是特征,当过滤器经过图像时,他们就会构造出特征图谱来定位各类线是出现在图像的哪些地方。图像中的不同物体,像猫、747s、榨汁机等都会有不同的图像特征,这些图像特征就能使图像完成分类。卷积神经网络在图像识别和语音识别方面是非常的有效的。
卷积神经网络与前馈神经网络在图像识别方面的异同比较。虽然这两种网络类型都能够进行图像识别,但是方式却不同。卷积神经网络是通过识别图像的重叠部分,然后学习识别不同部分的特征进行训练;然而,前馈神经网络是在整张图片上进行训练。前馈神经网络总是在图片的某一特殊部分或者方向进行训练,所以当图片的特征出现在其他地方时就不会被识别到,然而卷积神经网络却能够很好的避免这一点。
卷积神经网络主要是用于图像、视频、语音、声音识别以及无人驾驶的任务。尽管这篇文章主要是讨论递归神经网络的,但是卷积神经网络在图像识别方面也是非常有效的,所以很有必要了解。
3.3递归神经网络
与前馈神经网络不同的是,递归神经网络的隐藏层的节点里有内部记忆存储功能,随着输入数据的改变而内部记忆内容不断被更新。递归神经网络的结论都是基于当前的输入和之前存储的数据而得出的。递归神经网络能够充分利用这种内部记忆存储状态处理任意序列的数据,例如时间序列。
递归神经网络经常用于手写识别、语音识别、日志分析、欺诈检测和网络安全。
递归神经网络是处理时间维度数据集的最好方法,它可以处理以下数据:网络日志和服务器活动、硬件或者是医疗设备的传感器数据、金融交易、电话记录。想要追踪数据在不同阶段的依赖和关联关系需要你了解当前和之前的一些数据状态。尽管我们通过前馈神经网络也可以获取事件,随着时间的推移移动到另外一个事件,这将使我们限制在对事件的依赖中,所以这种方式很不灵活。
追踪在时间维度上有长期依赖的数据的更好方法是用内存来储存重要事件,以使近期事件能够被理解和分类。递归神经网络最好的一点就是在它的隐藏层里面有“内存”可以学习到时间依赖特征的重要性。
接下来我们将讨论递归神经网络在字符生成器和网络异常检测中的应用。递归神经网络可以检测出不同时间段的依赖特征的能力使得它可以进行时间序列数据的异常检测。
递归神经网络的应用
网络上有很多使用RNNs生成文本的例子,递归神经网络经过语料库的训练之后,只要输入一个字符,就可以预测下一个字符。下面让我们通过一些实用例子发现更多RNNs的特征。
应用一、RNNs用于字符生成
递归神经网络经过训练之后可以把英文字符当做成一系列的时间依赖事件。经过训练后它会学习到一个字符经常跟着另外一个字符(“e”经常跟在“h”后面,像在“the、he、she”中)。由于它能预测下一个字符是什么,所以它能有效地减少文本的输入错误。
Java是个很有趣的例子,因为它的结构包括很多嵌套结构,有一个开的圆括号必然后面就会有一个闭的,花括号也是同理。他们之间的依赖关系并不会在位置上表现的很明显,因为多个事件之间的关系不是靠所在位置的距离确定的。但是就算是不明确告诉递归神经网络Java中各个事件的依赖关系,它也能自己学习了解到。
在异常检测当中,我们要求神经网络能够检测出数据中相似、隐藏的或许是并不明显的模式。就像是一个字符生成器在充分地了解数据的结构后就会生成一个数据的拟像,递归神经网络的异常检测就是在其充分了解数据结构后来判断输入的数据是不是正常。
字符生成的例子表明递归神经网络有在不同时间范围内学习到时间依赖关系的能力,它的这种能力还可以用来检测网络活动日志的异常。
异常检测能够使文本中的语法错误浮出水面,这是因为我们所写的东西是由语法结构所决定的。同理,网络行为也是有结构的,它也有一个能够被学习的可预测模式。经过在正常网络活动中训练的递归神经网络可以监测到入侵行为,因为这些入侵行为的出现就像是一个句子没有标点符号一样异常。
应用二、一个网络异常检测项目的示例
假设我们想要了解的网络异常检测就是能够得到硬件故障、应用程序失败、以及入侵的一些信息。
模型将会向我们展示什么呢?
随着大量的网络活动日志被输入到递归神经网络中去,神经网络就能学习到正常的网络活动应该是什么样子的。当这个被训练的网络被输入新的数据时,它就能偶判断出哪些是正常的活动,哪些是被期待的,哪些是异常的。
训练一个神经网络来识别预期行为是有好处的,因为异常数据不多,或者是不能够准确的将异常行为进行分类。我们在正常的数据里进行训练,它就能够在未来的某个时间点提醒我们非正常活动的出现。
说句题外话,训练的神经网络并不一定非得识别到特定事情发生的特定时间点(例如,它不知道那个特殊的日子就是周日),但是它一定会发现一些值得我们注意的一些更明显的时间模式和一些可能并不明显的事件之间的联系。
我们将概述一下怎么用 Deeplearning4j(一个在JVM上被广泛应用的深度学习开源数据库)来解决这个问题。Deeplearning4j在模型开发过程中提供了很多有用的工具:DataVec是一款为ETL(提取-转化-加载)任务准备模型训练数据的集成工具。正如Sqoop为Hadoop加载数据,DataVec将数据进行清洗、预处理、规范化与标准化之后将数据加载到神经网络。这跟Trifacta’s Wrangler也相似,只不过它更关注二进制数据。
开始阶段
第一阶段包括典型的大数据任务和ETL:我们需要收集、移动、储存、准备、规范化、矢量话日志。时间跨度的长短是必须被规定好的。数据的转化需要花费一些功夫,这是由于JSON日志、文本日志、还有一些非连续标注模式都必须被识别并且转化为数值数组。DataVec能够帮助进行转化和规范化数据。在开发机器学习训练模型时,数据需要分为训练集和测试集。
训练神经网络
神经网络的初始训练需要在训练数据集中进行。
在第一次训练的时候,你需要调整一些超参数以使模型能够实现在数据中学习。这个过程需要控制在合理的时间内。关于超参数我们将在之后进行讨论。在模型训练的过程中,你应该以降低错误为目标。
但是这可能会出现神经网络模型过度拟合的风险。有过度拟合现象出现的模型往往会在训练集中的很高的分数,但是在遇到新的数据时就会得出错误结论。用机器学习的语言来说就是它不够通用化。Deeplearning4J提供正则化的工具和“过早停止”来避免训练过程中的过度拟合。
神经网络的训练是最花费时间和耗费硬件的一步。在GPUs上训练能够有效的减少训练时间,尤其是做图像识别的时候。但是额外的硬件设施就带来多余的花销,所以你的深度学习的框架必须能够有效的利用硬件设施。Azure和亚马逊等云服务提供了基于GPU的实例,神经网络还可以在异构集群上进行训练。
创建模型
Deeplearning4J提供ModelSerializer来保存训练模型。训练模型可以被保存或者是在之后的训练中被使用或更新。
在执行异常检测的过程中,日志文件的格式需要与训练模型一致,基于神经网络的输出结果,你将会得到是否当前的活动符合正常网络行为预期的结论。
代码示例
递归神经网络的结构应该是这样子的:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder(
.seed(123)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
.weightInit(WeightInit.XAVIER)
.updater(Updater.NESTEROVS).momentum(0.9)
.learningRate(0.005)
.gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)
.(0.5)
.list()
.layer(0, new GravesLSTM.Builder().activation("tanh").nIn(1).nOut(10).build())
.layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)
.activation("softmax").nIn(10).nOut(numLabelClasses).build())
.pretrain(false).backprop(true).build();
MultiLayerNetwork net = new MultiLayerNetwork(conf);
net.init();
下面解释一下几行重要的代码:
.seed(123)
随机设置一个种子值对神经网络的权值进行初始化,以此获得一个有复验性的结果。系数通常都是被随机的初始化的,以使我们在调整其他超参数时仍获得一致的结果。我们需要设定一个种子值,让我们在调整和测试的时候能够用这个随机的权值。
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
决定使用哪个最优算法(在这个例子中是随机梯度下降法)来调整权值以提高误差分数。你可能不需要对这个进行修改。
.learningRate(0.005)
当我们使用随机梯度下降法的时候,误差梯度就被计算出来了。在我们试图将误差值减到最小的过程中,权值也随之变化。SGD给我们一个让误差更小的方向,这个学习效率就决定了我们该在这个方向上迈多大的梯度。如果学习效率太高,你可能是超过了误差最小值;如果太低,你的训练可能将会永远进行。这是一个你需要调整的超参数。