人工神经网络的设计与实现(三) BP神经网络
来源:互联网 发布:手机批量修图软件 编辑:程序博客网 时间:2024/06/05 12:49
多层感知机模型
之前说单层的感知机模型不能处理线性不可分问题,多层感知机却可以成功胜任。下面再从异或入手解决问题。图片来源(自己动手写神经网络)。
如上图两层的感知机就能完成对XOR问题的正确划分。第一层的上侧是函数:2*p1+2*p2-1,下侧是函数-2*p1-2*p2+3,第二层是函数And就是与操作。可以得出它们对问题的划分如下:
即多层感知机把不能一次线性区分的问题分几次来解决,先解决分开解决各个部分再统一解决各个部分。有了这样的思路之后,关于神经网络的研究又开始如火如荼了。
BP神经网络
sigmoid函数
BP(Back Propagation)神经网络也是用的多层感知机模型,训练方法是误差逆传播,就是从输出层计算误差,反向向前传播,逐层修改连接权重的权值。
神经网络用的函数f是sigmoid函数(之前有说过)。
神经网络用的函数f是sigmoid函数(之前有说过)。
sigmoid函数把映射到了(0,1),而且有个有意思的性质,所以它的导数很容易求。我们为什么要把这个激励函数从普通的加权和换成sigmoid函数呢?因为BP算法要求导,sigmoid函数更加胜任。
BP算法
一个普通的三层BP网络如下所示
我们定义误差函数
其中outputs是网络中输出层单元的集合,是目标输出,是训练样本中第d个观测值在第k个输出单元的输出值。
我们BP的目的就是使误差函数E最小,理所当然地想到之前的梯度下降法,推导之前约定描述如下:
:单元j的第i个输入。
:与输入相关联的权值
:单元j的净输入(输入的加权和,未经过激励函数)。
:sigmoid函数。
:单元j的实际输出
outputs:输出层单元的集合。
Downstream(j):上一层单元包含j的集合。
增量梯度下降算法中,对于每个训练样本中第 d 个观测的一个输入权重 w ij 的增量如下表示:
其中 E d 是训练样本中第 d 个观测的误差,通过对输出层所有单元的求和得到:
下面我们就要求梯度了(要分层求解,输出层,隐藏层),梯度向量中的各元素求解如下:
1 )当单元 j 是一个输出单元时:
于是得到:
2 )当单元 j 是一个隐藏层单元时,有如下推导:
实现
可以看到迭代到第932291代收敛了,可以区分异或问题了。第一次写net,写得不是很好,可以再改进改进,忘了wx+b的b了,加上估计会好点。
代码
本人一边学,一边写,算给自己动力吧~~
1 0
- 人工神经网络的设计与实现(三) BP神经网络
- BP人工神经网络的介绍与实现
- BP人工神经网络的介绍与实现
- BP人工神经网络的介绍与实现
- BP人工神经网络的C++实现
- BP人工神经网络的C++实现
- 人工神经网络的设计与实现(一) 原理
- 人工神经网络的设计与实现(二) 感知机
- bp人工神经网络算法
- BP人工神经网络
- 模式识别:三层BP神经网络的设计与实现
- 模式识别八--三层BP神经网络的设计与实现
- BP人工神经网络C代码(转)
- 人工神经网络(ANN)及BP算法
- BP神经网络设计的matlab简单实现
- BP神经网络的实现
- BP神经网络的实现
- 为什么说BP神经网络就是人工神经网络的一种?
- iOS开发系列--让你的应用“动”起来
- 高薪行业2016年调薪预估率出炉
- 第三方库
- Mysql分库分表方案
- set character_set_database=utf8;set character_set_server=utf8;
- 人工神经网络的设计与实现(三) BP神经网络
- android contentprovider详解
- 网卡 eth0,eth1,eth2,lo分别代表是什么 意思
- 不患寡而患不均
- 关于大型网站技术演进的思考(六):存储的瓶颈(6)
- 给文字添加下划线
- 关于大型网站技术演进的思考(七):存储的瓶颈(7)
- HDOJ_2035 人见人爱A^B –二分加速
- ES6学习——新加API:String