神经网络后馈算法剖析

摘要:
在coursera中Ng的机器学习课程中,他介绍了神经网络中的前向传播算法以及后馈算法,但是对于后馈算法中,为什么要那么做,只用了一句需要使用复杂的数学来证明。这是神经网络的前馈过程。

在coursera中Ng的机器学习课程中,他介绍了神经网络中的前向传播算法以及后馈算法,但是对于后馈算法中,为什么要那么做,只用了一句需要使用复杂的数学来证明。我查阅了相关的资料,对这一部分的原理进行了学习,现将这部分知识记录下来,以供共同学习。

1、简单的线性模型中误差分析

使用一个大小为N的训练集对一个预测(分类)模型进行训练时,总误差为:

神经网络后馈算法剖析第1张        ————(1)

而在一个线性模型中,第k个输出yk是输入xi的线性组合:

神经网络后馈算法剖析第2张      ————(2)

其中,wki是第i个输入到第k个输出的边权。对于某个输入数据(另外一种讲法叫模式n,它的误差函数被定义为:

神经网络后馈算法剖析第3张      ————(3)

其中,ynk为:

神经网络后馈算法剖析第4张  ————(4)

tnk是输入数据n是先所打上的标签,即真实结果。

由(3)和(4)可求得:

神经网络后馈算法剖析第5张       ————(5)

我们可以看到,误差对某个边权wji的偏导,等于这个边所连输出端的误差信号ynj-tnj)与这个边所连输入端的变量的乘积。

2、神经网络的后馈算法

2.1 前馈过程

一个简单的神经网络模型如下图所示:

神经网络后馈算法剖析第6张

这个神经网络有1个输入层,2个隐层以及1个输出层;对于某个unit(神经元),它的输入等于各个前一层神经元的加权和:

神经网络后馈算法剖析第7张      ————(6)

其中,带括号的上标表示层数,(6)也可以写成向量的形式:

神经网络后馈算法剖析第8张      ————(7)

经过每个神经元activation函数h()的处理后,第l层第j个神经元的输出为:

神经网络后馈算法剖析第9张      ————(8)

需要注意的是,我们可以在每一层中,加入一个修正神经元,它的activation输出始终是+1。神经网络不断地重复(6)、(8),直到输出层产生相应的输出,神经网络的输出层神经元直接将输入加权作为结果输出,而不经过h()的处理。这是神经网络的前馈过程。

2.2 后馈过程

现在我们考虑后馈的过程,Enwji的偏导只通过输入ai传导到神经元j,应用偏导的链式法则有:

神经网络后馈算法剖析第10张      ————(9)

我们定义:

神经网络后馈算法剖析第11张      ————(10)

它表示(l+1)层神经元j误差。而:

神经网络后馈算法剖析第12张      ————(11)

将(10)、(11)代入(9),可得:

神经网络后馈算法剖析第13张      ————(12)

(12)说明在神经网络中,误差对l层某个边权wji的偏导,等于这个边所连输出端(l+1层第j个神经元)的误差与这个边所连输入端(l层第i个神经元的输出)的乘积。(12)写成向量的形式为:

神经网络后馈算法剖析第14张      ————(13)

这个就是最终的结论!

2.3 误差的后馈传播

下面介绍如何计算神经网络后馈算法剖析第15张

在输出层中,有:

神经网络后馈算法剖析第16张    ————(14)

而对于隐层或者输入层,有:

神经网络后馈算法剖析第17张  ————(15)

(15)式实际上表示了一个误差后馈的过程,l层的误差是l+1层的误差通过w(l)传递过来的。由于:

神经网络后馈算法剖析第18张      ————(16)

由(6)、(7)式可得:

神经网络后馈算法剖析第19张      ————(17)

(16)、(17)代入(15)可以得到:

神经网络后馈算法剖析第20张     ————(18)

(18)写成向量的形式为:

神经网络后馈算法剖析第21张       ————(19)

其中.*表示点乘。

2.3 误差后馈总结

  1. 将一个输入向量xn输入到网络中,使用公式(6)、(8)前向转播;
  2. 使用(14)式计算输出层的误差δ
  3. 后馈输出层的δ,并计算每一个隐层的δ
  4. 使用(13)计算所求的偏导。

免责声明:文章转载自《神经网络后馈算法剖析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇win10安装docker运行环境ubuntu16.04更换成国内源下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

《python深度学习》笔记---3.1、神经网络剖析

《python深度学习》笔记---3.1、神经网络剖析 一、总结 一句话总结: |||-being 训练神经网络主要围绕以下四个方面,构建好架构,还是非常简单的 |||-end 层,多个层组合成网络(或模型)。 输入数据和相应的目标。 损失函数,即用于学习的反馈信号。 优化器,决定学习过程如何进行。 1、层:深度学习的基础组件 ? 输入张量转化为输出张量:...

分水岭算法实现图像分割及其应用

将图像分割为多个同质区域, 分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征。 watershed原理:对图像中部分区域做标记,表明已知,根据这个已知区域确定其他区域(参考点问题) void waters...

人脸识别的会遇到的问题及解决方法

参考:https://blog.csdn.net/duan19920101/article/details/50683988/?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242 注:以前做过基于KNN算法的人脸识别,但是未做这样的总结,这...

大话数据结构之一(绪论、算法)

数据结构绪论 数据结构是相互之间存在一种或多种特定关系的数据元素的集合 程序设计=数据结构+算法 数据结构事实上就是一门研究非数值计算的程序设计问题的操作对象,以及它们之间的关系和操作等相关问题的学科。 数据是描述客观事件的符号,是计算机中可以操作的对象,是能被计算机识别,并输入能计算机处理的符号集合,也就是说数据必须具备两个前提: 可以输入到计...

数字签名

首先介绍一下散列算法,这种算法在计算机科学当中相当常见,它接收一大块的数据并将其压缩成最初数据的一个指纹或者摘要。 举个例子,18/2=9,在某种程度上9就是表达式(18/2)的指纹(也可以叫摘要)。这时我们无论计算机多少次,结果都会是9。这时无论我们对18进行多么细微的改动,其运算结果都会改变。返过来我们把计算结果9告诉你,不告诉你任何进一步的信息,你就...

算法>并行算法

并行算法 一、并行算法 什么是并行算法? 它可理解为: 适合于在某类并行计算机上求解问题和处理数据的算法, 是一些可同时执行的诸进程的集合, 这些进程相互作用和协调作用, 从而达到对给定问题的求解。 二、并行计算机 并行处理就是把一个传统串行处理的任务分解开来, 并将其分配给多个处理器同时处理, 即在同一时间间隔内增加计算机的操作数量。为并行处理所设计的计算...