BP神经网络的实现+python

本科生毕业设计想出来一个题目,用CNN来手写体识别。出了题目之后,发现对NN的知识都忘光了,现在重新手写NN来再学一次。

什么是神经网络(Neural Network)

计算机处理数字计算十分简单,然而处理图像数据却十分困难。通过利用生物学的设计构建一个使计算机能处理高维数据的模型,从而产生了神经网络这样的技术。
假设有这样一台机器,接受一个问题进行思考,然后得出答案。对于人类而言就是这样一个过程,对于计算机来说。这样的过程变成了:输入->计算->输出。但是从流程上看起来他们是相似的。
{% asset_img 1.png 预测机 %}
{% asset_img 2.png 神经元 %}
生物大脑的基本单元是神经元,虽然有各种形式,但是他们的本质就是将电信号从一端传递到另一端,从一个神经元传递到另一个神经元。然而,每个神经元的输入信号可能是单个,也可能是多个。有时候单个信号的输入并不能很好的解决某些问题(例如异或情况的分类)。
{% asset_img 3.png 多个信号的输入 %}
{% asset_img 4.png 异或XOR的分类 %}
但是与传统函数的输入输出不同,神经元对于微小的噪声信号直接忽略,只有在输入信号高于**阈值(threshold)才会产生输出。因此多个信号输入之后进行累加求和,当求和总量达到某个阈值后,神经元被激活,产生输出结果。这就是神经元。
{% asset_img 5.png 激活神经元 %}
关于阈值的判断,需要一个名为
激活函数(activtion function)**的模型来对信号进行处理。激活函数的种类十分多,普遍比较多的是Sigmoid函数。
s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1
这个函数相比较于阶跃函数比较平滑。
通过多个神经元之间的连接,构造一种名为神经网络的模型方法,对于计算机识别高维度的数据而言具有良好的适用性。
{% asset_img 6.png 生物神经网络 %}

神经网络的工作原理

{% asset_img 7.png 神经网络模型 %}
传统的神经网络分为三层,输入层(input layer)隐藏层(hidden layer)输出层(output layer)。隐藏层可以有多层网络构建,每层之间依靠连接权值进行连接。

正向传值

现在开始考虑正向传值计算,即从输入->输入层->隐藏层->输出层的过程。从单个神经元开始分析,从输入层开始,当输入值进入输入层时,输入值就只是单纯赋值给输入层节点,即输入值=输入单元,无需进行计算。
从输入层进入隐藏层开始,引入了权值的概念。即输入*权值的过程。
{% asset_img 8.png 隐藏层神经元 %}
再将得到的值经过激活函数进行调节,这样就能得到隐藏层每个节点的输入结果。将得到的结果放入输出层再次进行计算,这样子我们就得到了一个完整的正向传播过程。
为了计算方便,引入矩阵来进行计算。令输入层数据为 I I I,输入层权值矩阵为 W i h W_{ih} Wih。则进入隐藏层的和值为:
X h i d d e n = W i h I X_{hidden}=W_{ih}I Xhidden=WihI
再将这个和值通过对应的激活函数进行激活得到隐藏层的输出,在这里我们使用Sigmoid函数作为激活函数(此时计算出来的 X X X为值向量,长度为隐藏层神经元的个数),输出值为:
O h i d d e n = S i g m o i d ( X h i d d e n ) O_{hidden}=Sigmoid(X_{hidden}) Ohidden=Sigmoid(Xhidden)
然后将隐藏层输出值 O h i d d e n O_{hidden} Ohidden放入到输出层重复以上步骤输出,得到输出矩阵 O o u t p u t O_{output} Ooutput

反向传播

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值