您的位置:首页 > 理论基础 > 计算机网络

人工神经网络概述及其在分类中的应…

2016-03-18 14:10 781 查看
人工神经网络概述及其在分类中的应用举例
人工神经网络(ARTIFICIAL NEURAL
NETWORK,简称ANN)是目前国际上一门发展迅速的前沿交叉学科。为了模拟大脑的基本特性,在现代神经科学研究的基础上,人们提出来人工神经网络的模型。人工神经网络是在对人脑组织结构和运行机智的认识理解基础之上模拟其结构和智能行为的一种工程系统。

神经网络在2个方面与人脑相似:

(1)
人工神经网络获取的知识是从外界环境中学习得来的。

(2)
互连神经元的连接强度,即突触权值,用于存储获取的信息。他既是高度非线性动力学系统,又是自适应组织系统,可用来描述认知、决策及控制的智能行为。神经网络理论是巨量信息并行处理和大规模并行计算的基础。

 

 

一 人工神经网络的基本特征

 

1、
并行分布处理:人工神经网络具有高度的并行结构和并行处理能力。这特别适于实时控制和动态控制。各组成部分同时参与运算,单个神经元的运算速度不高,但总体的处理速度极快。

2、
非线性映射:人工神经网络具有固有的非线性特性,这源于其近似任意非线性映射(变换)能力。只有当神经元对所有输入信号的综合处理结果超过某一门限值后才输出一个信号。因此人工神经网络是一种具有高度非线性的超大规模连续时间动力学系统。

3、
信息处理和信息存储合的集成:在神经网络中,知识与信息都等势分布贮存于网络内的各神经元,他分散地表示和存储于整个网络内的各神经元及其连线上,表现为神经元之间分布式的物理联系。作为神经元间连接键的突触,既是信号转换站,又是信息存储器。每个神经元及其连线只表示一部分信息,而不是一个完整具体概念。信息处理的结果反映在突触连接强度的变化上,神经网络只要求部分条件,甚至有节点断裂也不影响信息的完整性,具有鲁棒性和容错性。

4、
具有联想存储功能:人的大脑是具有联想功能的。比如有人和你提起内蒙古,你就会联想起蓝天、白云和大草原。用人工神经网络的反馈网络就可以实现这种联想。神经网络能接受和处理模拟的、混沌的、模糊的和随机的信息。在处理自然语言理解、图像模式识别、景物理解、不完整信息的处理、智能机器人控制等方面具有优势。

5、
具有自组织自学习能力:人工神经网络可以根据外界环境输入信息,改变突触连接强度,重新安排神经元的相互关系,从而达到自适应于环境变化的目的。

6、
软件硬件的实现:人工神经网络不仅能够通过软件而且可借助软件实现并行处理。近年来,一些超大规模集成电路的硬件实现已经问世,而且可从市场上购到,这使得神经网络具有快速和大规模处理能力的实现网络。许多软件都有提供了人工神经网络的工具箱(或软件包)如Matlab、Scilab、R、SAS等。

 

 

二 人工神经网络的基本数学模型

 

神经元是神经网络操作的基本信息处理单位(图1)。神经元模型的三要素为:

(1) 突触或联接,一般用

,表尔神经元和神经元之间的联接强度,常称之为权值。

(2)
反映生物神经元时空整合功能的输入信号累加器。

 



图1 一个人工神经元(感知器)和一个生物神经元示意图

 

(3)
一个激活函数用于限制神经元输出(图2),可以是阶梯函数、线性或者是指数形式的函数(Sigmoid函数)等。

 





图2 激活函数:(a)阀值单元 (b)线性单元 (c)(d)非线性单元:Sigmoid函数

 

图3是神经元的基本模型,图4是多层人工神经网络模型的示意图,其中

为输入信号,对应于生物神经元的树突输入,其他神经元的轴突输出;

为神经元的内部状态;

为阀值;

为神经元

和神经元

的连接权值,其正负分别表示兴奋和抑制;

为激活函数,也称变换函数或传递函数;

为输出。这个模型可以描述为:



 



图3 神经元的基本模型



 

图4 多层人工神经网络示意图

 

三 几种典型的人工神经网络模型

 

反向传播(BP)神经网络

BP网络是一种有监督的前馈运行的人工神经网络! 它由输入层/隐含层/输出层以及各层之间的节点的连接权所组成,这个学习过程的算法由信息的正向传播和误差的反向传播构成。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层,每一层神经元只影响下一层神经元的输出。如果不能在输出层得到期望的输出,则转入反向传播, 运用链数求导法则将连接权关于误差函数的导数沿原来的连接通路返回, 通过修改各层的权值使得误差函数减小。

Hopfield神经网络

基本的Hopfield神经网络是一个由非线性元件构成的全连接型单层反馈系统。网络中的每一个神经元都将自己的输出通过连接权传送给所有其它神经元,同时又都接收所有其它神经元传递过来的信息。所以Hopfield神经网络是一个反馈型的网络。其状态变化可以用差分方程来表征。反馈型网络的一个重要特点就是它具有稳定状态。当网络达到稳定状态的时

候,也就是它的能量函数达到最小的时候。能量函数表征网络状态的变化趋势,并可以依据Hopfield工作运行规则不断进行状态变化,最终能够达到的某个极小值的目标函数。网络收敛就是指能量函数达到极小值。如果把一个最优化问题的目标函数转换成网络的能量函数,把问题的变量对应于网络的状态,那么Hopfield神经网络就能够用于解决优化组合问题。

Hopfield工作时其各个神经元的连接权值是固定的,更新的只是神经元的输出状态。Hopfield神经网络的运行规则为:首先从网络中随机选取一个神经元

进行加权求和,计算

的第

时刻的输出值。除

以外的所有神经元的输出值保持不变,返回至第一步计算,直至网络进入稳定状态。

Hopfield神经网络的能量函数是朝着梯度减小的方向变化,但它仍然存在一个问题,那就是一旦能量函数陷入到局部极小值,它将不能自动跳出局部极小点而到达全局最小点,因而无法求得网络最优解,这可以通过模拟退火算法或遗传算法得以解决。

3、 随机型的神经网络

为求解全局最优解提供了有效的算法。模拟退火算法(Simulated
Annealing)的思想最早是由Metropolis等人于1953年提出的。但把它用于组合优化和VLSI设计却是在1983年由S.Kirkpatrick等人和V.Cemy分别提出的。模拟退火算法将组合优化问题与统计力学中的热平衡问题类比,开辟了求解组合优化问题的新途径。Boltzmann机(Bohzmann
Ma.chine)模型采用模拟退火算法,使网络能够摆脱能量局部极小的束缚,最终达到期望的能量全局最小状态。但是这需要以花费较长时间的代价来得到。为了改善Boltzmann机求解速度慢的不足,最后出来的Gaussion机模型不但具备HNN模型的快速收敛特性,而且具有Bohzmann的"爬山"能力。Gussion机模型采用模拟退火算法和锐化技术,使之能够有效地求解优化及满足约束问题。

自组织神经网络

神经网络在 接受外界输入时,将会分成不同的区域,不同的区域对不同的模式具有不同的响应特征,即不同的神经元以最佳方式响应不同性质的信号激励,从而形成一种拓 扑意义上的有序图。这种有序图也称之为特征图,它实际上时一种非线性映射关 系,它将信号空间中各模式的拓扑关系几乎不变地反映在这张图上,即各神经元 的输出响应上。由于这种映射是通过无监督的自适应过程完成的,所以也称它为 自组织神经网络。 

自组织神经网络是以神经元自行组织以校正各种具体模式的概念为基础的,能够形成簇与簇之间的连续映射,起到矢量量化器的作用。在这种网络中,输出节点与其邻域其它节点广泛相连,并相互激励。输入节 点和输出节点之间通过强度

相连接。通过某种规则,不断地调整

, 使得在稳定时,每一邻域的所有节点对某种输入具有类似的输出,并且这聚类的 概率分布与输入模式的概率分布相接近。 

 

四 人工神经网络发展方向

 

人工神经网络模型的研究

利用神经生理与认知科学研究人类思维以及智能机理和利用神经基础理论的研究成果,用数理方法探索功能更加完善、性能更加优越的神经网络模型,深入研究网络算法和性能。如:稳定性、收敛性、容错性、鲁棒性等;开发新的网络数理理论,如:神经网络动力学、非线性神经场等。

人工神经计算和进化计算

要把基于链接主义的神经网络理论、基于符号主义的人工智能专家系统理论和基于进化论的人工生命这3大研究领域,自发而有机的结合起来。建立神经计算和进化计算的数学理论基础。"并行分布处理(PDP)"具有自学习、自适应和自组织的特点,这是一种提高计算性能的有效途径,是神经网络迫切需要增强的主要功能,必须加以重视,同时,还应寻找其他有效方法,建立具有计算复杂性、网络容错性和坚韧性的计算理论。进一步研究调节多层感知器的算法,使建立的模型和学习算法成为适应性神经网络的有力工具,构建多层感知器与自组织特征图级联想的复合网络,是增强网络解决实际问题能力的一个有效途径,重视链接的可编程性和通用性问题的研究,从而促进智能科学的发展。

 

神经网络计算机的实现

神经网络结构和神经元芯片的作用将不断扩大。神经网络结构的研究是神经网络的实现以及成功地实现应用的前提,又是优越的物理前提,他体现了算法和结构的统一
是硬件和软件的混合体,未来的研究主要是针对信息处理功能体,将系统、结构、电路、器件和材料等方面的知识有机地结合起来,建构有关的新概念和新技术,在硬件实现上,研究材料的结构和组织,使他具有自然地进行信息处理的能力。

 

五 人工神经网络应用

 

人工神经网络经过多年的发展,应用研究也取得了突破性进展,范围正在不断扩大,其应用领域几乎包括各个方面。半个世纪以来,这门学科的理论和技术基础已达到了一定规模,就应用的技术领域而言有计算机视觉,语言的识别、理解与合成,优化计算,智能控制及复杂系统分析,模式识别,神经计算机研制,知识推理专家系统与人工智能。涉及的学科有神经生理学、认识科学、数理科学、心理学、信息科学、计算机科学、微电子学、光学、动力学、生物电子学等。美国、日本等国在神经网络计算机软硬件实现的开发方面也取得了显著的成绩,并逐步形成产品。

人工神经网络在数据挖掘中主要应用于数据的分类和预测,在分类方法中,与传统的统计方法相比,神经网络具有很强的学习能力,极大地提高了分类的精度和预测的准测度。人工神经网络与支持向量机、遗传算法、随机森林等其他先进算法的结合,产生更为精确地算法,在R的galgo包(主要应用于生物信息学)中已经体现出来。

 

六 人工神经网络分类器应用举例

 

人工神经网络在数据挖掘中常应用于分类和预测,神经网络方法能够明显的提高分类精度。使用的数据是著名的鸢尾花(iris)数据,在R软件中是自带的数据集,也可以在从加州大学厄文分校(UCI)的机器学习库中下载。

鸢尾花数据集包含150种鸢尾花的信息,每50种取自三个鸢尾花种之一:Setosa、Versicolour和Virginica。每个花的特征用下面5种属性描述:

(1) 萼片长度(Sepal.Length:厘米)。

(2) 萼片宽度(Sepal.Width:厘米)。

(3) 花瓣长度(Petal.Length:厘米)。

(4) 花瓣宽度(Petal.Width:厘米)。

(5) 类(Species:Setosa, Versicolour,
Virginica)。

花的萼片是花的外部结构,保护花的更脆弱的部分(如花瓣)。在许多花中,萼片是绿的,只有花瓣是鲜艳多彩的,然而,对于鸢尾花,萼片也是鲜艳多彩的。

R的nnet包中的nnet函数隐层只含一个感知器,激活函数有多种。在鸢尾花的分类中,激活函数使用的是线性函数,在隐层感知器的人工神经元分别设size=1,2,3,4时,分类结果为:

 

Size=1

类别

1
2
3


1
22
0
3


2
0
25
0


3
3
0
22


分类精度

0.88
1
0.88
0.96
 

Size=2,3,4

 

类别

1
2
3


1
24
0
1


2
0
25
0


3
1
0
24


分类精度

0.96
1
0.96
0.9867
   
 

而基于马氏距离的层次聚类结果的聚类误差矩阵为:

hclus

1
2
3


1
50
0
0


2
0
49
16


3
0
1
34


分类精度

1
0.98
0.68
0.7666667
 

可以看出,使用神经网络分类器所得的结果的精度高达98.67%,而聚类分析的层次聚类方法所得到的结果得精度只有76.67%。证明分层神经网络分类算法可以显著提高分类精度。

 

附:R中神经网络计算程序,人工神经网络的包为nnet。

 

#
ir是只含有Sepal.Length、Sepal.Width、Petal.Length、Petal.Width的数据,用于分类

ir<-iris[,1:4]

# 目标集,010,100,001

targets
<- class.ind( c(rep("s", 50), rep("c", 50), rep("v",
50)) )

# 训练集,75个样例,其余的为测试集

samp
<- c(sample(1:50,25), sample(51:100,25),
sample(101:150,25))

 

ir1
<- nnet(ir[samp,], targets[samp,], size = 1, rang =
0.1,

decay =
5e-4, maxit = 200)

ir2 <- nnet(ir[samp,],
targets[samp,], size = 2, rang = 0.1,

decay = 5e-4,
maxit = 200)

ir3
<- nnet(ir[samp,], targets[samp,], size = 3, rang =
0.1,

decay =
5e-4, maxit = 200)

ir4
<- nnet(ir[samp,], targets[samp,], size = 4, rang =
0.1,

decay =
5e-4, maxit = 200)

 

 

# 分类误差矩阵

test.cl
<- function(true, pred) {

true
<- max.col(true)

cres
<- max.col(pred)

a<-table(true,
cres)

b<-as.matrix(a[])

fre<-array()

for(i in
1:ncol(b))fre[[i]]<-max(b[,i])/sum(b[,i])

print(a)

fre

 

}

test.cl(targets[-samp,],
predict(ir1, ir[-samp,]))

 

# 系统聚类

hclus
<- assignCluster(model.matrix(~-1 + Petal.Length +
Petal.Width + Sepal.Length + Sepal.Width, iris), iris,
cutree(HClus, k = 3))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: