神经网络通过感知器算法我们可知:感知器模型存在着根本缺陷,即它只能完成线性可分的模式分类。我们很容易的想到:串联多个神经元是否能完成非线性模式分类呢?有一个人站出来回答了这个问题:不能。这个人就是:明斯基神经网络马文·明斯基(MarvinLeeMinsky,1927年8月9日-)生于纽约市,1944年-1945年服役于美国海军。1954年于普林斯顿大学获得数学博士学位。在数学系做研究生时,明斯基与同学构建了第一台基于模拟突出增强原理的随机连线网络学习机器(SNARC),被称为第一台神经网络计算机。2.自己是第一台神经网络计算机的制造者,却险些葬送了神经网络的前途。1.由于搞的太偏门,险些无法毕业。趣事:神经网络原文如下:尽管它有严重的局限性,感知器展示了它自身的研究价值。它有很多吸引人的优点:它的线性,迷人的学习法则,作为一类并行计算范例的清晰的简单性。没有任何理由认为这些优点能带到多层感知器中去。依据我们的直觉判断,即使推广到多层系统也不会有好的结果。但是,我们认为证明(或否定)这一点是一个很重要的需要研究的问题。1969年,他和佩波特的名著《感知机》证明了Rosenblatt感知机解决非线性问题能力薄弱,连XOR逻辑分类都做不到,只能作线性划分。更重要的是,他将关于单层感知器局限性的结论推广到了多层感知器。神经网络神经网络研究进入低谷期,一直持续了将近20年。神经网络的反击:1988年,赛本柯(Cybenko)等证明:具有两个隐层的BP网络可以实现任何有界连续函数。1989年又证明:单隐层BP网络可以实现任何有界连续函数。明斯基对多层感知器的“判决”被彻底推翻我想说两点:1.不要随便预言科学的未来。好像就从来没准过。2.不要太迷信大师。多层前馈神经网络结构输入层隐含层输出层W1W2x2x1xny2y1ym……………说明1.信号只能向前传播--前馈2.含有一个输入层和输出层,含有多个隐含层3.每层之间的连接都有权值4.每层节点数目可以不同多层前馈神经网络具有单个隐含层的网络已经具备非线性分类能力,因此,常见的神经网络为3层:输入层、隐含层、输出层输入矢量:x1,x2,…,xix2x1xi……wijwjkijk3ky2jy1iy…θjθk输入层节点数目为i输入层第i个节点输出为隐含层节点数目为j隐层第j个节点输出为输出层节点数目为k输出层第k个节点输出为1iy2jy3ky隐含层阈值为θj,输出层为θk输入层到隐层权值为wij,隐层到输出层权值为wjk多层前馈神经网络工作过程:iixy1)(12ijiijjywfy)(23jkjjkkywfyx2x1xi……wijwjkijk3ky2jy1iy…θjθkf为激励函数(转移函数)激励函数神经网络常用的激励函数:(1)Sigmoid函数:xef(x)1110.5xy0(0f(x)1)Sigmoid函数为一单调递增连续函数,且处处可导,其导数为:2)1()('xxeexf)1(11)1(1xxxeee))1(11()1(1xxee2)1(11xxee))(1)((xfxf激励函数(2)双曲正切函数:xxeexxf11)tanh()((-1f(x)1)1-1xy0导数为:))(1))((1(21)('xfxfxfSigmoid函数通过下式能够映射到(-1,1)范围:112)(xexf误差函数用期望输出与实际输出的方差作为相应的误差测度NkkkytE12)(21tk为第k个样本的期望输出,yk为第k个样本通过神经网络计算的实际输出。N为参与训练的样本总数如果输出向量的维数为m,则:NkmiikikNkkkytytE112,,12)(21)(21tk,i为第k个样本第i维的期望输出,yk,i为第k个样本通过神经网络计算出的第i维实际输出。神经网络的训练通过感知器的学习我们知道,如果需要感知器对问题进行分类,必须首先需要训练感知器。同样,我们也可以想到:作为感知器的扩展,神经网络也需要训练才能对问题进行分类。感知器的训练算法:Delta学习神经网络训练算法:误差逆向传播算法(BP算法)感知器调整的参数:权值w和阈值θ神经网络调整的参数:所有神经元的权值w和阈值θBP算法BP算法主要分为两个阶段:1.向前计算阶段2.向后计算阶段(逆向误差修正计算阶段)输入信号通过输入层经隐层逐层处理并计算出每个节点的实际输出值。逐层计算实际输出和期望输出之间的误差,并以此误差来修正权值。由于BP算法是多层前馈神经网络最常用的训练算法,因此,多层前馈神经网络也被称为BP神经网络。BP算法-向前计算阶段x2x1xi……wijwjkijk3ky2jy1iy…θjθk(1)输入一个学习样本(XK,TK),k表示样本集中的第k个样本。(2)计算隐层节点输出)(12ijiijjywfyiixy1(3)计算输出层节点输出)(23jkjjkkywfyBP算法-向后计算阶段(1)隐含层到输出层权值调整单个神经元可视为感知器,根据感知器学习算法:3kkkyt由于神经网网络神经元有sigmoid激励函数,所以误差δk修正为:)1()(333kkkkkyyyt2jkjkyw且所以:2jkjkyw2333)1()(jkkkkyyyytjkwjk3ky2jyθkδkBP算法-向后计算阶段隐含层到输出层权值调整公式为:jkjkjk'jkkkw'2jkjkywkk(2)输入层到隐含层权值调整由于隐层节点j有k个输出,且每个输出的误差为δk,所以:kkjkjw输入层到隐含层同样有激励函数,误差调整为:kkjkjjjwyy22)1(wjkjk…1iywj1wi2i2jyθjδ1δ2δkδjBP算法-向后计算阶段1ijijyw122)1(ikkjkjjywyy权值修正量:输入层到隐含层权值调整公式为:ijijij'ijjjw'1ijijywjjwjkjk…1iywj1wi2i2jyθjδ1δ2δkδj学习结束取一学习样本做为输入信号中间层节点输出的计算输出层节点输出的计算输出层节点误差的计算中间层节点误差的计算中间层和输出层间权值的更新,输出层节点阈值更新输入层和中间层间权值的更新,中间层节点阈值更新全部学习样本取完?误差E小于误差上限?YYYNNW和的初始化开始向前计算阶段向后计算阶段学习次数达到?NW和的初始化对每个学习样本计算误差修正值缓存区更新权值和阈值的更新全部学习样本取完?NY一括修正部分程序流程举例例1:下图给出了一个多层前馈神经网络。设学习率为0.9,该网络的初始权值和阈值如下表所示,第一个样本为X={1,0,1},通过BP算法学习样本。x1x2x3w14w15w24w25w34w35w46w56θ4θ5θ61010.2-0.30.40.1-0.50.2-0.3-0.2-0.40.20.1(1)向前计算:逐层计算节点输出x1x2x3w14w15w24w25w34w35w46w56θ4θ5θ61010.2-0.30.40.1-0.50.2-0.3-0.2-0.40.20.1节点4:7.04.05.002.04net332.0)7.0(4fy节点5:1.02.02.003.05net525.0)1.0(5fy节点6:105.01.0)2.0(525.0)3.0(332.06net474.0)105.0(6fy(2)向后计算:逐层计算误差x1x2x3w14w15w24w25w34w35w46w56θ4θ5θ61010.2-0.30.40.1-0.50.2-0.3-0.2-0.40.20.1节点6:)474.01(474.0)474.01(6节点4:)332.01(332.0)3.0(1311.040087.01311.0节点5:)525.01(525.0)3.0(1311.050065.0(2)向后计算:修正权值、阈值x1x2x3w14w15w24w25w34w35w46w56θ4θ5θ61010.2-0.30.40.1-0.50.2-0.3-0.2-0.40.20.1261.0)332.0)(1311.0)(9.0(3.046w138.0)525.0)(1311.0)(9.0(2.056w218.0)1311.0)(9.0(1.06192.0)1)(0087.0)(9.0(2.014w4.0)0)(0087.0)(9.0(4.024w408.0)0087.0)(9.0(4.04508.0)1)(0087.0)(9.0(5.034w节点6权值、阈值:节点4权值、阈值:(2)向后计算:修正权值、阈值x1x2x3w14w15w24w25w34w35w46w56θ4θ5θ61010.2-0.30.40.1-0.50.2-0.3-0.2-0.40.20.1306.0)1)(0065.0)(9.0(3.015w1.0)0)(0065.0)(9.0(1.025w194.0)0065.0)(9.0(2.05194.0)1)(0065.0)(9.0(2.035w节点5权值、阈值:XOR问题XOR逻辑x1x2x1XORx2000011101110x1x2x1XORx2output0000.0082810110.9934461010.9931121100.006403测试训练后的网络:x2x135y23y11yθ3θ5wijwjkθ412y14y网络模型注:训练误差上限为0.00010.5为两类分界线class0110几个问题的讨论网络瘫痪问题在训练中,权可能变得很大,这会使神经元的网络输出变得很大,从而又使得其激活函数的导函数在此点上的取值很小。根据相应式子,此时的训练步长会变得非常小,进而将导致训练速度降得非常低,最终导致网络停止收敛。收敛速度问题局部极小问题逃离统计方法;[Wasserman,1986]将Cauchy训练与BP算法结合起来,可以在保证训练速度不被降低的情况下,找到全局极小点。几个问题的讨论步长问题所谓步长,指的就是权值调整量Δw步长太小,收敛就非常慢步长太大,可能会导致网络的瘫痪自适应步长,使得权修改量能随着网络的训练而不断变化。