人工神经网络发展史
20世纪40年代初,神经生物学家、心理学家W.S.Mcculloch与青年数理逻辑学家W.Pitts合作,从人脑信息处理观点出发,采用数理模型的方法,研究了脑细胞的动作和结构及其生物神经元的一些基本生理特性,他们提出了第一个神经计算模型,即神经元的阈值元件模型,简称MP模型,他们认识到模拟大脑可用于逻辑运行的网络,由一些节点,及节点与节点之间相互联系,构成一个简单的神经网络模型。
数学家Kleene在此基础上抽象成一种有限自动机理论。
1948年,控制论的创始人之一Wiener出版了著名专著《Cybernetics》,探讨了动物和机器的控制和通信问题,他在1961年增补了两章内容,主要讨论学习和自生殖问题,他选择机器学习下棋问题作为研究对象,对脑电波与自组织系统进行了探索。
MP模型是促使Neumann电子计算机诞生的重要因素之一,Neumann研究了自我繁衍自动机,而且证明了至少存在一种确实能够自我繁衍的分子自动机模型,1966年他提出了元胞自动机,可用来模拟生命系统所具有的自我复制功能,还可以用来模拟其他的自然现象。但有很多元胞自动机也不一定对某个连续系统的离散化描述得好。于是,Neumann又设想了一种新的基于自动机理、自然和人工智能知识的计算机。
此外,数学家Turing建立了通用计算机的抽象模型,他和Post都证明了一个重要定理:原则上存在着一种“万能自动机”,它能识别任何自动机能够识别的符号串。Turing机理论,为带有存储程序的计算机的形式程序语言的发明提供了理论框架,使人们对于大脑和计算机之间的类似性的信念进一步加强了。
1949年神经生物学家Hebb的论著《The Organization of behavior》,对大脑神经细胞、学习与条件反射作了大胆的假设,被称为Hebb学习规则。
20世纪50年代初,神经网络理论具备了初步模拟实验的条件。Rochester,Holland与IBM公司的研究人员合作,通过网络吸取经验来调节强度,以这种方式模拟Hebb的学习规则,在IBM701计算机上运行,取得了成功,终于出现了许多突现现象,几乎有大脑的处理风格。最大规模的神经网络也只有1000各神经元,而每个神经元又只有16个结合点。再往下做试验,便受到计算机的限制。
Hebb的学习规则理论还影响了正在IBM公司实习的研究生McCarthy,他参加了IBM公司的一个小组,探讨有关游戏的智能程序,后来他成为人工智能的主要创始人之一。
1952年英国生物学家Hodgkin和Huxley从生物膜上电离子的迁移阐明神经兴奋传导的机理,它们建立的模型属于二阶偏微分方程,称为H-H方程。该研究成果具有重大理论及应用价值,获得了诺贝尔生理医学奖。
1954年生理学家Eccles提出了真实突触的分流模型,并通过突触的电生理实验得到证实。其重要意义在于,为神经网络模拟突触的功能提供了原型和生理学的证据。
1956年Uttlety发明了一种由处理单元组成的推理机,他称这种处理单元为信息子(Informon),用推理机模拟行为及条件反射现象。
1958年计算机科学家Rosenblatt基于MP模型,增加了学习机制,推广了MP模型。他证明了两层感知器能够将输入分为两类,假如这两种类型是线性并可分的,也就是一个超平面能够将输入空间分割,其感知器收敛定理:输入和输出层之间的权重的调节正比于计算输出值与期望输出值之差。他提出的感知器模型,首次把神经网络理论付诸于工程实现。
神经网络是一种计算模型,由大量的节点(神经元)和节点之间相互连接构成。每个节点代表一种特定的输出函数,称为激励函数(Activation Function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称为权重(Weight),这相当于人工神经网络的记忆。网络的输出则依赖于网络的连接方式、权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
多层结构的前馈网络(Multilayer Feedforward Network)由3部分组成:
输入层(Input Layer)
输出层(Output Layer)
隐含层(Hidden Layer):可以有多层,习惯上用一层。隐含层的节点数目前不定,数目越多神经网络的非线性越显著,鲁棒性越显著。
特点:
(1) 并行分布式处理
(2) 非线性处理
(3) 自学习功能
(4) 联想存储功能、
(5) 高速寻找优化解的能力
人工神经元模型
一个人工神经元网络是由一个多层神经元结构组成的,每一层神经元有输入和输出,每一层L(i)由Ni个网络神经元组成,每个Ni上的网格神经元把对应在Ni-1上的神经元输出作为它的输入,我们把神经元和与之对应的神经元之间的连线叫做神经轴突的突触。在数学模型中每个突触有一个加权数值,称作权重,势能,激励函数。
典型的激活函数有线性函数、非线性斜面函数、阈值函数、s型函数4种。
S型函数之所以应用广泛:
非线性、
处处连续可导
对信号有一个较好的增益控制,防止网络饱和
神经网络的分类
1、 单层前向网络:拥有的计算节点是单层的
2、 多层前向网络:含有一个或更多的隐含层,其中计算节点被相应地称为隐含神经元或隐含单元。
3、 反馈网络:在网络中至少含有一个反馈回路的神经网络。反馈网络可以包含一个单层神经元,其中每个神经元将自身的输出信号反馈给其他所有神经元的输入。
4、 随机神经网络:对神经网络引入随机机制,认为神经元是按照概率的原理进行工作的。即每个神经元的兴奋或抑制具有随机性,其概率取决于神经元的输入。
5、 竞争神经网络:它的输出神经元相互竞争以确定胜者,胜者指出哪一种模式最能代表输入模式。
第3章 Matlab神经网络工具箱中的网络对象及其属性
1网络对象
Matlab中把定义的神经网络看做一个对象,对象还包括一些子对象:输入向量、输出向量、目标向量、权值向量和阈值向量。对象和子对象共同确定了神经网络对象的特性。网络属性除了只读属性外,均可按照约定的格式和属性的类型进行设置、修改、引用。引用格式为:
网络名.[子对象].属性
如net.inputs{1}.range=[0 1;0 1] net.layers{1}.size=3; net.layers{1}.transferFCn=’hardlim’
创建一个神经网络
感知器网络用 newp函数 Create a perceptron.
BP网络用 newff函数 Create a feed-forward backpropagation network. 创建一个前馈BP网络
2网络对象属性 net.xxx
(1) 结构属性
该属性决定网络子对象的数目及它们之间的连接关系。结构属性值一旦发生变化,网络就会自动重新定义,与之相关的其他属性值也会自动更新。
1) numInputs属性:定义网络的输入源的数目,设置为零或正整数。不等于网络输入层神经元的个数
2) numLayers :网络的层数
3) biasConnect :定义各个网络层是否具有阈值向量,其值为Nx1布尔型向量,N为网络层数(net.numLayers)
4) inputConnect 定义各网络层是否具有来自各个输入向量的连接权,其值为NxR布尔型向量,R为网络输入向量维数(net.layers{1}.size)
5) layerConnect 定义一个网络层是否具有来自另外一个网络层的连接权,NxN.
6) targetConnect :net.targetConnect定义各网络层是否和目标向量有关,1xN
7) outputConnect :定义各网络层是否作为输出层
8) targetConnect :定义神经网络的目标层,即网络哪些层的输出具有目标矢量。
9) numOutput :定义神经网络输出矢量的个数,属性值为只读变量,其数值为网络中输出层总数(sum(net.outputConnect))
10) numTargets :目标矢量的个数
11) numInputDelays :定义了神经网络的输入延迟,属性值为只读变量,其数值为网络各输入层输入延迟拍数(net.inputWeights{i,j}.delays)中的最大值
12) numLayerDelays :网络的层输出延迟,……为各层的神经元之间连接延迟拍数(net.LayerWeights{i,j}.delays)中的最大值
(2) 函数属性
定义了一个网络在进行权值/阈值调整、初始化、误差性能计算或训练时采用的算法。
1) adaptFcn属性
2) performFcn
3) trainFcn
4) initFcn
(3) 参数属性
- adaptParam属性
- initParam
- performParam
- trainParam 定义了网络当前训练函数的各参数,其属性值为各参数构成的结构体
(4) 权值和阈值属性
- IW属性
- LW属性
- b属性
- 其他属性
3网络子对象属性
(1) 输入向量 net.input{i}.xxx 有 size属性、range、userdata
(2) 网络层 net.layers{i}.xxx :dimensions、distanceFcn、distance属性只读、initFcn、netInputFcn、positions、size
(3) 输出向量 :size、userdata
(4) 目标向量net.targets{i}.xxx :size、userdata
(5) 阈值向量 net.biases{i}子对象定义了网络的每一个阈值向量:initFcn、learn、learnFcn、learnParam、size、userdata
第4章 神经网络工具箱函数
工具箱以神经网络理论为基础,利用Matlab脚本语言构造出典型神经网络的激活函数,如线性、竞争性和饱和性等激活函数,使设计者对所选定网络输出的计算变成对激活函数的调用。另外,用户根据各种典型的修正网络权值的规则,再加上网络的训练过程,利用Matlab可编写出各种网络设计和训练的子程序。用户还可以根据自己的需要去调用工具箱中有关的设计和训练程序,将自己从烦琐的编程中解脱出来,以集中精力解决其他问题,进而提高工作效率。
工具箱包括感知器模型、线性神经网络、BP神经网络模型、自组织网络模型等
1工具箱中的通用函数
(1) 神经网络仿真函数
sim函数:主要用于对神经网络进行仿真
simulate dynamic system
This MATLAB function causes Simulink software to simulate the block diagram,
model, using parameter name-value pairs ParameterName1, Value1 and
ParameterName2, Value2.
simOut = sim('model', 'ParameterName1',Value1,'ParameterName2', Value2...);
simOut = sim('model', ParameterStruct);
simOut = sim('model', ConfigSet);
(2) 神经网络训练及学习函数
1) train函数 [net,tr,Y,E,Pf,Af]=train(net,P,T,Pi,Ai) 该函数通过调用网络训练函数net.trainFcn并根据训练函数net.trainParam对网络进行训练。在函数的输入变量中,net为神经网络对象;P为网络输入;T为目标矢量;Pi为输入延迟的初始状态;Ai为层延迟的初始状态。返回值中,net为新的网络;tr为训练记录;Y为网络输出;E为输出和目标矢量之间的误差;Pf为训练终止时的输入延时状态;Af为训练终止时的层延时状态
2) learnp 用于对神经网络权值和阈值的学习
3) learnpn 用于神经网络归一化权值和阈值的学习
(3) 神经网络初始化函数
1) init函数 对神经网络的参数进行初始化
2) initlay函数 对层-层结构神经网络的参数进行初始化
3) initnw 对一个层进行初始化
4) initwb 对一个层进行初始化
5) revert 将神经网络中的权值和阈值恢复为初始值
(4) 神经网络输入函数
1)netsum函数 :对输入求和
2)netprod 对输入数据求和
(5) 神经网络传递函数
- hardlim函数 硬限幅传递函数
2)hardlims 对称硬限幅传递函数
3 感知器神经网络工具箱函数
(1) 感知器神经网络创建函数
newp函数 创建感知器网络 net=newp(PR,S,TF,LF)
(2) 感知器神经网络显示函数
- plotpc函数 在感知器向量中绘制分界线 plotpc(W,B) W为加权矩阵,B为阈值向量;H为最后画线的控制权
- plotpv函数 绘制输入向量和目标向量 plotpv(P,T) P为输入向量,T为双目标向量,V为控制图形的最大范围
(3) 感知器神经网络性能函数
Mae函数 用于计算输出量和目标量之间的平均绝对误差
4 BP神经网络工具箱函数
(1) BP神经网络创建函数
1) newff函数 用于创建一个前馈BP网络
2) newcf 创建一个多层前馈BP网络
3) newfftd 创建一个前馈输入延迟BP网络
(2) BP神经网络传递函数
1)purelin 线性传递函数
2)tansig 线性传递函数
3)logsig 对数型传递函数
(3) BP神经网络学习函数
1) learngd 梯度下降学习函数 通过神经元的输入和误差、权值和阈值的学习速率来计算权值或阈值的变化率
2) learngdm 梯度下降动量学习函数,通过神经元。。。
(4) BP神经网络训练函数
1) trainbfg 准牛顿BP算法函数
2) traingd 梯度下降的BP算法训练函数
3) traingdm 梯度下降动量的BP算法训练函数
(5) BP神经网络性能函数
1) mse 计算均方误差,用来计算输出量和目标量之间的均方误差。
2) msereg 加权均方根误差函数,通过两个因子加权来评价网络的性能,这两个因子分别是均方误差、均方权值和阈值
(6) BP神经网络显示函数
1) plotperf 函数 用于绘制网络性能,还可以绘制性能目标、确认性能和检验性能
2) plotes 绘制单独神经元的误差曲面
3) plotep 绘制权值和阈值在误差曲面上的位置
4) errsurf 用于计算单个神经元的误差曲面
5 线性神经网络工具箱函数
(1) 线性神经网络创建函数和设计函数
1) newlin 创建一个线性层。线性层通常用做信号处理和预测中的自适应滤波器
2) newlind 用于设计一个线性层
(2) 学习函数
1) learnwh Widrow-Hoff的学习函数,实现输出误差的平方和最小功能
2) maxlinlr 计算线性层的最大学习速率
6 自组织竞争神经网络工具箱函数
7 径向基神经网络工具箱函数
8 反馈神经网络工具箱函数
(1) Hopfield网络的工具箱函数
- newhop 用于设计一个Hopfield反馈网络 net=newhop net=newhop(T)
- satlins 用于Hopfield网络的饱和线性传递函数
(2) Elman 网络的工具箱函数
1) newelm函数 设计一个Elman反馈网络
第5章 感知器
1 感知器神经网络原理及模型
感知器是一种模仿生物感知器机制、用于模式识别的简单神经网络。由美国学者F.Rosenblatt于1956年提出 单层感知器的传递函数为强限幅传递函数hardlim
重要定理
对于单层感知器,如果输入的两类模式是线性可分集合,那么学习算法一定收敛,感知器一定可以成功地将两类模式进行正确的分类。也就是说,如果输入的两类模式并非线性可分时,感知器就不能进行有效的分类。
单层感知器的缺点是只能解决线性可分的分类模式问题,采用多层网络结构可以增强网络的分类能力,即在输入层与输出层之间增加一个隐含层,从而构成多层感知器(Multilayer Perceptrons,MLP)。由输入层、隐含层(可以是一层或多层)和输出层构成的神经网络称为多层前向神经网络。MLP的每个神经元为单个非线性并联计算单元。
第6章 线性神经网络
线性网络采用最小均方误差(Least Mean Square,LMS)算法学习规则,并且其传输函数为一线性函数。虽然它同感知器一样,只能解决线性可分问题,但比感知器要强大得多。感知器规则能保证将训练模式收敛到一个可正确分类的解上,但得到的网络对噪声敏感;而LMS算法使均方误差最小化,从而使网络的判定边界尽量远离训练模式。
网友评论