欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神经网络专题 (一) 感知器

程序员文章站 2024-03-14 11:37:34
...

人工神经网络,简称神经网络,它是一种算法,来源是模拟人的生物神经元工作机制。其实不需要去详细了解生物神经网络的细节原理,大概知道些关键名词即可,对以后神经网络的理解没什么影响。神经网络算法的主要功能是预测、分类、识别。神经网络有:感知器、线性神经网络、BP神经网络、RBF神经网络、Hopfield神经网络、RNN卷积神经网络等。感知器是最简单的神经网络,线性神经网络在线性处理上很有用,BP神经网络是应用最广泛的网络,Hopfield神经网络是反馈型神经网络,RNN卷积神经网络在人工智能研究领域新兴起来的网络。

感知器一般指单层感知器,它是指只含有输入层和输出层的神经网络,模型如下:

神经网络专题 (一) 感知器

输入层为p1、p2、... 、pn个神经元输入和对应的权值w1、w2、... 、wn。输入层用向量表示为:神经网络专题 (一) 感知器,神经网络专题 (一) 感知器。输出层包含一个求和操作和函数f映射,其中y为感知器的输出(多输入,单输出),a为输入加权求和的结果,b为偏置,f为一种对a的传递函数,对于感知器来说,f一般为符号函数,即输出结果只有-1和1(每次输入,对应一个单值的输出;多次输入,得到输出向量),输出层可以表示为:

             神经网络专题 (一) 感知器     

             神经网络专题 (一) 感知器

了解了神经网络的基本结构和计算流程之后,再对其工作原理进行分析。

首先是感知器的学习规则(梯度下降法):对于输入为P,输出为y,目标输出为T的感知器,误差为e=T-y。则感知器的权值和偏置的修正公式为:

            神经网络专题 (一) 感知器

            神经网络专题 (一) 感知器

公式说明:P为多次输入的向量,y为多次输入对应的输出向量,T为期望结果(目标向量),e为网络误差。i表示输出向量的维数(i=1,2,...,D),j为神经元的个数(j=1,2,...,n)。

 更新之后的权值:

             神经网络专题 (一) 感知器

              神经网络专题 (一) 感知器

接下来就是利用感知器的学习规则进行训练:

      step1:  初始化网络,计算实际输出和目标输出之间的误差,利用学习规则修正权值和偏置。

      step2:计算在新的权值和偏置下的误差,继续修正权值和偏置。

      step3:当达到一定的误差要求或者满足最大迭代次数时,训练结束,得到感知器模型。

下面介绍matlab神经网络工具箱中的关于感知器的相关函数:

     newp:  创建一个感知器

     sim: 仿真函数

     train:训练函数

     plotpc: 在感知器向量中绘制分界线

     plotpv:  绘制感知器的输入向量和目标向量

     mae:计算平均绝对误差

下面简单举例说明各种函数的用法:

   例1:利用单层感知器实现与门电路的逻辑功能

P=[0 0 1 1;0 1 0 1];
T=[0 0 0 1];
figure(1)
plotpv(P,T)
net=newp(minmax(P),1);
y=sim(net,P);
net.trainParam.epochs=50;
net=train(net,P,T);
Y=sim(net,P);
perf=mae(Y-T);
plotpc(net.IW{1,1},net.b{1})

输出Y=[0 0 0 1]

输入向量P为4个输入向量:[0 0],[0 1],[1 0],[1 1],目标输出:[0]、[0]、[0]、[1]

newp函数:net=newp(pr,ps,tf,lf),pr为输入向量每行的最大最小值组成的多行两列的矩阵,ps为感知器的层数,tf为传递函数,默认是hardlim还有hardlims,lf为学习函数,默认是learnp还有learnpn。

minmax函数:求矩阵每行的最大最小值,返回一个多行两列的矩阵。

sim函数:对模型进行仿真。

train函数:根据网络、输入、目标输出,训练网络得到输出。


感知器主要是实现简单的线性可分的分类问题,在实际应用中应当根据面对的问题,转化为感知器能够处理的情况。

另外,多层感知器在机器学习、人工智能方面有着非常重要的作用,感知器的研究在人工智能领域具有很多的研究意义。