概述
本篇简要介绍浅层神经网络,并给出其向量化形式。
转自猴开发博客:深度学习(四)浅层神经网络及其向量化
4.0 Logistic 回顾
在前三篇当中,我们见过了 Logistic 回归的相关内容,了解了向前传播、向后传播、梯度下降与向量化等重要概念,并结合一个实际例子在 Jupyter Notebook 环境下搭建了一个 Logistic 回归网络,成功实现了 72% 测试集准确率的猫图识别功能。
虽然 Logistic 回归能够较好的学习线性函数,但是由于它太过简单,对于非线性的数据往往不能够很好地适应,而这一点在浅层神经网络当中将有所改善。在这一篇中将介绍浅层神经网络的一些内容,你将看到浅层神经网络是怎样向前传播的,以及如何对其进行向量化处理。
4.1 浅层神经网络
下图1-1就是一个浅层神经网络的示例。
浅层神经网络是一个单隐层的神经网络,也是一个双层神经网络。对于上图的单输出情况而言,如果你遮住输入层不看的话,你会发现隐藏层与输出层所组成的结构与 Logistic 回归网络完全一致(图1-2左),事实上,如果你不遮住输入层,单看一个隐藏单元的话情况是一样的(图1-2右)。
从这个层面上来讲,可以认为浅层神经网络就是多个 Logistic 回归的堆叠,更准确的说是多个单层神经网的堆叠,区别在于浅层神经网络具有隐藏层与输入层共两层,因此可以有不同的激活函数的选择,而在单层神经网络中,只能够为输出层选择一个激活函数。
4.2 浅层网络的向前传播
在前面你看到了一个单输出的浅层神经网络是什么样子的,其实就是多个单层网络的堆叠。下面来看一看浅层神经网络是怎样进行向前传播的。
为了方便描述,在浅层神经网络中所有第一层的参数我们都用方括号上标来表示,而该层中的某一个单元则用下标来表示,例如 图1-2右 中隐藏层的第一个单元,它作为一个独立的“单层网络”具有的参数 w w w 和 b b b,就用符号 w 1 [ 1 ] w^{[1]}_1 w1[1] 和 b 1 [ 1 ] b^{[1]}_1 b1[1] 来表示,输出层只有一个单元,其参数就用 w 1 [ 2 ] w^{[2]}_1 w1[2] 和 b 1 [ 2 ] b^{[2]}_1 b1[2] 来表示。下面来看一看对于下图 图1-3 所显示的这个隐藏单元都经历了什么。
与 Logistic 回归相同,每一个神经网络单元在向前传播中都分别完成线性计算与激活函数这两步,因此 x 1 . . . x n x x_1 ... x_{nx} x1...xnx 作为输入数据进入到了第一个隐藏单元中同样完成了这两步:
z 1 [ 1 ] = w 1 [ 1 ] x + b 1 [ 1 ] z^{[1]}_1 = w^{[1]}_1x + b^{[1]}_1 z1[1]=w1[1]x+b1[1]
a 1 [ 1 ] = σ ( z 1 [ 1 ] ) a^{[1]}_1 = \sigma(z^{[1]}_1) a1[1]=σ(z1[1])
隐藏层中的第二个隐藏单元也是同理:
对于 n x n_x nx 个输入 x 1 . . . x n x x_1...x_{n_x} x1...xnx,有
z 2 [ 1 ] = w 2 [ 1 ] x + b 2 [ 1 ] z^{[1]}_2 = w^{[1]}_2x + b^{[1]}_2 z