1.3.1 浅层神经网络

朋友们,如需转载请标明出处:http://blog.csdn.net/jiangjunshow

总目录(新手请点击总目录从序言看起,否则你可能看不懂本篇文章)

在上一小节1.2中给大家介绍了最简单的神经网络——单神经元神经网络,并且手把手教大家编写了能识别猫的神经网络程序。由于神经网络太简单,所以识别率不是很高。本小节将给大家介绍稍微复杂一点的神经网络——浅层神经网络。然后下一小节1.4中再给大家介绍更复杂的神经网络——深层神经网络。

先回顾一下上一节我们所学的单神经元神经网络。
如下图所示
这里写图片描述
上面这个唯一的神经元,其实负责执行了如下运算。
这里写图片描述
这个神经元通过对x,w,b进行运算,得出z,然后再由z得出a。
这里写图片描述
a就是预测结果,我们通过a和真实的标签y就可以构建一个损失函数L来计算出损失。同时我们可以从损失函数开始反向传播回到这个神经元来计算出w和b相对于损失函数的偏导数/梯度,以便进行梯度下降,然后再次进行前向传播,这样不停地反复来优化w和b…

对于多神经元神经网络,其实也是一样的。简单来说就是重复单神经元的流程。
下面是一个多神经元神经网络。
这里写图片描述
很多个箭头,看起来很乱。
我们可以把它拆分成一个一个单独的神经元来看,就可以清楚地看出复杂的神经网络其实就是由我们学习过的最简单的单神经元网络组成的。例如我们先只看第一个神经元。
这里写图片描述
然后再单独看第二个神经元。
这里写图片描述
后面的神经元同理。

最前面的负责输入特征的层叫做输入层,当我们在统计层数的时候通常不会把这一层计算在内,所以这是一个两层的神经网络(虽然上面看起来有3层);最后一层我们叫做输出层;在中间的所有层统称为隐藏层。

那么这个两层的神经网络是如何进行运算的呢。下面我们先简单地介绍一下,如果不懂也没关系,因为下一篇文章我会详细地给大家讲解运算过程。运算本质上还是和单神经元神经网络一样的。如下图所示。
这里写图片描述
我们先算出第一层的四个神经元的a。然后再将这四个a当做x输入到第二层的神经元中进行计算。上面的w[1]表示的是第一层的神经元关于输入层x的权重,所以w[1]是一个4x3的矩阵,因为第一层有4个神经元,每一个神经元都有3个特征输入。细节下一篇文章再和大家解释。反向传播计算也是一样。先算出第二层的梯度dw和db,然后再向第一层传播,算出第一层四个神经元的dw和db。

大家可以加我助手的微信,之后会用微信向大家公布一些通知,以及统一回答大家遇到的常见问题,有项目也可以招集大家一起做。加时请注明“人工智能”。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/jiangjunshow/article/details/82191764
今日推荐