多层感知机模型

之前说单层的感知机模型不能处理线性不可分问题,多层感知机却可以成功胜任。下面再从异或入手解决问题。




人工神经网络数学建模 人工神经网络设计_神经网络



如上图两层的感知机就能完成对XOR问题的正确划分。第一层的上侧是函数:2*p1+2*p2-1,下侧是函数-2*p1-2*p2+3,第二层是函数And就是与操作。可以得出它们对问题的划分如下:



人工神经网络数学建模 人工神经网络设计_多层感知机_02

    

人工神经网络数学建模 人工神经网络设计_感知机_03

人工神经网络数学建模 人工神经网络设计_感知机_04



即多层感知机把不能一次线性区分的问题分几次来解决,先解决分开解决各个部分再统一解决各个部分。有了这样的思路之后,关于神经网络的研究又开始如火如荼了。


BP神经网络


sigmoid函数


BP(Back Propagation)神经网络也是用的多层感知机模型,训练方法是误差逆传播,就是从输出层计算误差,反向向前传播,逐层修改连接权重的权值。
神经网络用的函数f是sigmoid函数(之前有说过)。




人工神经网络数学建模 人工神经网络设计_神经网络_05


人工神经网络数学建模 人工神经网络设计_感知机_06



人工神经网络数学建模 人工神经网络设计_神经网络_07


BP算法


一个普通的三层BP网络如下所示



人工神经网络数学建模 人工神经网络设计_ANN_08


我们定义误差函数



人工神经网络数学建模 人工神经网络设计_ANN_09


人工神经网络数学建模 人工神经网络设计_ANN_10


人工神经网络数学建模 人工神经网络设计_神经网络_11

其中 E d 是训练样本中第 d 个观测的误差,通过对输出层所有单元的求和得到:


人工神经网络数学建模 人工神经网络设计_感知机_12




下面我们就要求梯度了(要分层求解,输出层,隐藏层),梯度向量中的各元素求解如下:


人工神经网络数学建模 人工神经网络设计_神经网络_13

1 )当单元 j 是一个输出单元时:


人工神经网络数学建模 人工神经网络设计_神经网络_14


人工神经网络数学建模 人工神经网络设计_多层感知机_15

于是得到:


人工神经网络数学建模 人工神经网络设计_多层感知机_16

2 )当单元 j 是一个隐藏层单元时,有如下推导:


人工神经网络数学建模 人工神经网络设计_感知机_17

实现



人工神经网络数学建模 人工神经网络设计_神经网络_18


可以看到迭代到第932291代收敛了,可以区分异或问题了。第一次写net,写得不是很好,可以再改进改进