6.1图像识别之人工神经网络原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/webzhuce/article/details/82724710

一、理论知识

  人工神经网络(Artificial Neural Networks, ANN)也简称为神经网络(NN)是对人脑或生物神经网络若干基本特性的抽象和模拟。它为从样本中学习值为实数、离散值或向量的函数提供了一种健壮性很强的解决方案。
这里写图片描述

二、图说BP网络

神经网络的结构

  神经网络的网络结构由输入层,隐含层,输出层组成。隐含层的个数+输出层的个数=神经网络的层数,也就是说神经网络的层数不包括输入层。下面是一个三层的神经网络,包含了两层隐含层,一个输出层。其中第一层隐含层的节点数为3,第二层的节点数为2,输出层的节点数为1;输入层为样本的两个特征X1,X2.
这里写图片描述
   在神经网络中每一个节点的都与上一层的所有节点相连,称为全连接。神经网络的上一层输出的数据是下一层的输入数据。在图中的神经网络中,原始的输入数据,通过第一层隐含层的计算得出的输出数据,会传到第二层隐含层。而第二层的输出,又会作为输出层的输入数据。
   神经网络中的每一层(除了输入层)都是由神经元组成,也称为节点。每一个神经元都相当于一个感知器。如下图:
这里写图片描述
   在神经网络中,每个节点都将计算出特征矩阵X与权值矩阵的加权和,得到净输入e,然后通过激励函数f(e)得到该节点的输出y。在图1中,每条连线都可以看做是一个权值。
   在神经网络中,可以添加输出层节点的个数来解决多分类问题。有四个类别需要分类则,则输出层的节点个数可以设为4个节点,每一个节点代表一个类别。

BP神经网络的训练过程

神经网络的训练过程分为两个过程:1、向前传播得到预测数据;2、反向传播更新权重。如下图所示:
**这里写图片描述**
第一步、向前传播得到预测数据:向前传播的过程,即数据从输入层输入,经过隐含层,输出层的计算得到预测值,预测值为输出层的输出结果。网络层的输出即,该层中所有节点(神经元)的输出值的集合。我们以图一的神经网络结构为例,分析向前传播过程。
1.得到隐含层的输出y1,y2,y3:
这里写图片描述
2.获取到第二层的隐含层输出y4,y5,输入的数据也就是第一层隐含层的输出数据y1,y2,y3。
这里写图片描述
3、通过输出层,得到最后的预测值y。
这里写图片描述
第二步、反向传播更新权重:根据样本的真实类标,计算模型预测的结果与真实类标的误差。然后将该误差反向传播到各个隐含层。计算出各层的误差,再根据各层的误差,更新权重。
1.计算输出层的误差:其中z为该样本的类标
这里写图片描述
2.计算第二层隐含层的误差
这里写图片描述
3.计算第一次隐含层的误差:
这里写图片描述
4、更新权重:新的权值=原权值+学习速率×该节点的误差×激励函数的导函数的值(f(e)的倒数)×与该节点相连的输入值
4.1更新输入层与第一层隐含层之间的权值:
这里写图片描述
4.2更新第一层隐含层与第二层隐含层之间的权值
这里写图片描述
4.3更新第二层隐含层与输出层之间的权值
这里写图片描述
以上就是反向传播的过程。误差从输出层反向的传到输入层,然后再从输入层向前更新权值。

示例演示

激活函数:采用sigmoid函数:1/1+e-x。推导如下:

这里写图片描述
代码下载:

运行结果:

1、两层隐藏层
这里写图片描述
2、一层隐藏层
这里写图片描述

参考资料:

https://www.cnblogs.com/hesi/p/7218602.html
《数字图像处理与机器视觉》[M]

猜你喜欢

转载自blog.csdn.net/webzhuce/article/details/82724710
今日推荐