感知机与BP神经网络
感知机与BP神经网络
一、感知机原理
感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是+1和-1,属于判别模型。
假设训练数据集是线性可分的,感知机学习的目标是求得一个能够将训练数据集正实例点和负实例点完全正确分开的分离超平面。如果是非线性可分的数据,则最后无法获得超平面
二、感知机的几何解释
可以把感知机看成n维实例空间的决策超平面:W*X=0.这个超平面将空间中的点分为正负两类。如果给定的杨莉集线性可分,则可以将每个样例准确地分为两类,称为分类超平面。而其中(w1,w2,…,wn)为这个超平面的法向量,w0称为截距。
2.1点到线的距离
直线方程为Ax+By+C=0Ax+By+C=0,
点P的坐标为(x0,y0)(x0,y0)。
d=Ax0+By0+C / √A2+B2
2.2样本到超平面距离
我们假设超平面是h=w⋅x+b ,其中w=(w0,w1,…wm) ,x=(x0,x1,…xm),样本点x′到超平面的距离如下:
d=w⋅x′+b / ||w||
2.3超平面(Hyperplanes)
超平面是在空间R^d
中的一个子空间R^d−1。
在2维空间中的超平面是一条线,在3维空间中的超平面是一个平面。
三、感知机模型
感知机从输入空间到输出空间的模型如下:
f(x)=sign(w⋅x+b)
sign(x)= −1 x<0 ,1 x≥0
四、BP神经网络简介
BP神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。
优点具有任意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或或者一些其他的问题。从结构上讲,BP神经网络具有输入层、隐含层和输出层;从本质上讲,BP算法就是以网络误差平方目标函数、采用梯度下降法来计算目标函数的最小值。基本BP算法包括信号的前向传播和误差的反向传播两个过程。
缺点①学习速度慢,即使是一个简单的过程,也需要几百次甚至上千次的学习才能收敛。②容易陷入局部极小值。③网络层数、神经元个数的选择没有相应的理论指导。④网络推广能力有限。
应用①函数逼近。②模式识别。③分类。④数据压缩。
4.1结构
BP网络是在输入层与输出层之间增加若干层(一层或多层)神经元,这些神经元称为隐单元,它们与外界没有直接的联系,但其状态的改变,则能影响输入与输出之间的关系,每一层可以有若干个节点。
4.2计算过程
BP神经网络的计算过程由正向计算过程和反向计算过程组成。正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过修改各神经元的权值,使得误差信号最小。
1.网络状态初始化
2.前向计算过程
五、感知机与BP神经网络的简单应用
5.1代码功能分析:
1.生成网络——newp
调用格式:net=newp(pr,s,tf,lf)
功能描述:用于生成可以解决线性可分问题的感知机
参数说明:pr:给出r个输入变量的最大值及最小值的r*2的矩阵
s:神经元的数目 tf:传递函数,可以为‘hardlim’或‘hardlims’,默认为’hardlim’ lf:学习函数,可以为’learnp’或‘learnpn’,默认为‘learnp’
net:生成的感知机
2.网络初始化——init
调用格式:net=init(net)
功能描述:将神经网络的权值和阈值复原回初始值或将网络的权值和阈值赋予随机数
3.神经网络仿真——sim
调用格式:Y=sim(net,P);
功能描述:神经网络仿真工具,用于验证网络的训练效果
参数说明:net-已经生成的神经网络 P-网络输入 Y-网络输出
4.学习规则——learnp
设输入向量为p,相应的期望输出为t,对应的网络输出为a。期望值与实际输出值的差值称为学习e=t-a误差,感知器的权值和阈值修正公式为△w(i,j)=[t(i)-a(i)]*p(j)=e(i)*p(j),△b(i)=e(i) 其中i=1,2,3,…,S, j=1,2,3,…,R 新的权值和阈值为 w(i,j)=w(i,j)+△w(i,j),b(i)=b(i)+△b(i)
learnp dW=learnp(W,P,Z,N,A,T,E,D,gW,gA,LP,LS)
dW:权值或阈值的增量矩阵
W:权值矩阵或阈值向量
P:输入向量
T:目标向量
E:误差向量 其他可以忽略,可记为[]
5.网络训练——train
通过反复使用sim()和learn()函数调整感知器的权值和阈值,使网络输出满足误差上的要求,最终找最优的权值和阈值,这一过程称为网络训练。完成网络训练的函数称为train()。
调用格式:[net,tr,Y,E]=train(net,p,t)
功能描述:用于训练网络,以获得最优的权值和阈值
参数说明:输入参数
net-已经生成的神经网络 p-神经网络的输入向量 t-神经网络的期望输出
5.2运行结果