当前位置:   article > 正文

神经网络与反向传播算法_在神经网络图像识别技术中,( )和反向传播神经网络相互结合的神经网咯图像识别

在神经网络图像识别技术中,( )和反向传播神经网络相互结合的神经网咯图像识别

1、前言

先简单的说下神经网络吧。

简单来说就是模拟大脑的神经元。

前端会有一大批数据输入,例如,前端输入了一张图像的所有像素点。

中间层会有成千上万个网络数据节点,我们可以称之为神经元。

一系列的神经元经过各种复杂运算。

输出端 输出预算结果

 

 

 

举个例子,

前端输入了一张图像的所有像素点数据(数据来源可以通过摄像头获取),中间层

经过层层运算,最后输出 这张照片上面的是两只天鹅。

 

这就是神经网络宏观上面的解释。上面的例子就是图像识别上面的应用了。

 

那么我们来看下这背后的算法原理吧。

 

2、原理

 

学习

我们来看下一个简单的神经网络模型吧:

 

假设输入是3个数据,最后输出是两个数据,中间有4个神经元。

那么问题来了,我们中间的运算是如何展开的?怎么样才能确定我们的

运算公式是合理的呢?

这个时候,我们可以一开始随便设置我们的运算参数,然后输入数据,

看下输出结果如何?如果输出结果不满意?我们再改变一下运算的参数。

反复对比,总之,我们进过几万次运算,

修改了几万次参数。最终得到一个合理的参数。

这就是一个学习的过程了。

google 的 阿尔法狗,也正是基于深度学习的设计思想,设计出来了的。一开始的阿尔法狗参数

不太合理,但是经过学习,慢慢的完善,最终击败了所有棋手。

 

运算公式

好了,下面是需要一定的数学基础的人才能看懂的了,非作战人员请默默地关注下本公众号,然后可以关闭页面了。。。

作战人员请继续。。。

首先,我们看上面的三层结构的网络,输入层,中间层,输出层。

假设 

为第 l  层的数据,注意,这里是向量形式的,也就是说

 

那么,

就是 l +1 层的数据了。对于

 和 

,我们定义运算规则为:

 

 

为sigmod函数。也就是说:

 

其中

就是改层的运算参数了~~~~~~~~我们前面说什么来的?我们要找到合适的参数。

是的,神经网络整个过程中最终就是要求得

为何值时,神经网络的输出最为合理。

那么,我们就要问了,什么是合理?

我们不是最终有输出层吗?

假设我们手头上有一万张照片,我当做输入,最终会有一万个计算结果。

我们就拿这1万个计算结果和实际结果做对比,只要计算结果和实际结果相差越来越小,错误率越来越低,我们不就可以认为

是合理的了吗?

 

我们假设

 

是输入, 是实际结果。是计算结果,那么C为损失函数,于是我们有:

 

 

其中,

表示输入的样本,

表示实际的分类,

表示预测的输出,

表示神经网络的最大层数。

对于上面的表达式,不熟悉的,请回顾下线性回归。

 

 

反向传播算法

这就是我们最核心的地方了,怎么求解出

呢?

我们需要用到一个反向传播算法。

下面是它的公式推导:

首先,将第

层第个神经元中产生的错误(即实际值与预测值之间的误差)定义为:

 

其中,z在上面定义了。

公式1(计算最后一层神经网络产生的错误):

 

其中,

表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算。

我们有必要来看下

到底是个什么东西:

事实上他就是C对a的偏导。

公式1的推导过程如下,运用链式法则。

公式2(由后往前,计算每一层神经网络产生的错误):

推导过程:

既然我都以及知道了

的值了,通过公式1可以算出来了,

然后我们又知道了公式2,那不就可以把所有的

求解出来了吗?那么我们就运用到下面的公式3和公式4了

公式3(计算权重的梯度):

        推导过程:

 

 

 

公式4(计算偏置的梯度):

        推导过程:

4. 反向传播算法伪代码

 

· 输入训练集

 

· 对于训练集中的每个样本x,设置输入层(Input layer)对应的激活值

· 前向传播:

, 

 

· 

· 计算输出层产生的错误:

· 

· 反向传播错误:

 

· 使用梯度下降(gradient descent),训练参数:

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/144882
推荐阅读
相关标签
  

闽ICP备14008679号