1、深层神经网络
目前为止,学习了只有一个单独隐藏层的神经网络的正向传播和反向传播,还有逻辑回归,并且还学到了向量化,这在随机初始化权重时是很重要。
这一次所要做的是把这些理念集合起来,就可以组建并执行一个术语你自己的 深度神经网络,有没有一种乐高积木的感觉呢?
简单复习下前面的内容:
逻辑回归,下图左边。一个隐藏层的神经网络,下图右边。
神经网络层数的定义方式:从左到右,由隐藏层开始,定义为第一层,比如上边右图,、、这一层右边的隐藏层是第一层,所以浅层神经网络是两层网络。
由此类推,下图左边是两个隐藏层的三层神经网络,右边是五个隐藏层的六层神经网络。(这个层数叫法是存在不同的结论的,最简单且不出错的方法是说隐藏层的层数,比如左边的是两个隐藏层,右边的是五个隐藏层)
所以,严格意义上来说,逻辑回归也是一个一层的神经网络,而上边右图一个深得多的模型,是一个六层的神经网络。我们所说的浅层神经网络和深层神经网络中的浅与深,仅仅是指一种程度,也就是相对而言的。
小结一下: 严格的说,有一个隐藏层的神经网络,就是一个两层神经网络。记住算神经网络的层数时,不算输入层,只算隐藏层和输出层。
2、前向传播和反向传播
深度神经网络的每一层都有 前向传播 步骤以及一个相反的 反向传播 步骤,那么这两个步骤是如何实现的呢?
先说前向传播, 表示层数,网络的输入 ,网络的输出是 ,网络的缓存为 ;从实现的角度来说可以缓存下 和 ,这样更容易在不同的环节中调用函数。
所以前向传播的步骤可以写成:
(1)
(2)
向量化(深度学习入门笔记(四):向量化)整个过程之后,可以写成:
(1)
(2)
前向传播需要喂入 也就是 ,即输入特征,来进行初始化,初始化的是第一层的输入值。 对应于一个训练样本中的输入特征,而 对应于一整个训练样本中的输入特征,所以这就是这条链的第一个前向函数的输入,重复这个步骤就可以从左到右计算前向传播。
再讲反向传播,具体的原理和推导可以看这个博客——深度学习100问之深入理解Back Propagation(反向传播),输入为 ,输出为 ,, 。
所以反向传播的步骤可以写成:
(1)
(2)
(3)
(4)
(5)
式子(5)由式子(4)带入式子(1)得到,前四个式子就可实现反向传播。
向量化实现过程可以写成:
(6)
(7)
(8)
(9)
小结一下:
吴恩达老师手稿如下,举一个简单的三层(两层隐藏层)神经网络。
在这里插入图片描述
3、核对矩阵维数
当实现深度神经网络的时候,其中一个最常用的也是最好用的检查代码是否有错的方法,就是拿出一张纸过一遍算法中矩阵的维数。或者有一个笨方法就是,一直运行,一直 ,不过这样太低效了。
向量化前,变量的维度如下:
和 向量化维度不变,但 , 以及 的维度会向量化后发生变化。
向量化后:
到这里,一个深层神经网络就设计完成了,理论知识也大概讲述完毕了。
未完待续。。。