本文是Deep Learning Specialization系列课程的第1课《Neural Networks and Deep Learning》中Shallow Neural Network部分的学习笔记。
在前面的章节中,我们以逻辑回归计算为例,实现了一个简单的神经网络(感知机),在感知机中只有输入层(X
)和输出层(Y
)。
那我们尝试将神经网络变得复杂一些,在输入层和输出层中间加一层隐藏层(Hidden Layer),将原来1层的神经网络变成2层的神经网络,并对该2层神经网络进行正向传播和反向传播的计算。
1. 两层神经网络
首先,需要说明的是关于神经网络层数的定义,主要是分为3部分:输入层,隐藏层(中间层)和输出层,在定义神经网络的层数时,一般是不包含输入层的,所以针对只有1个隐藏层的神经网络,其层数为2。
我们之前了解了感知机的实现,由输入数据X
和参数w
,b
来计算,经过输入函数的到z
,并通过激活函数(sigmoid)来得到最后的输出a
。
下面我们来详细看一下2层神经网络的计算,其整体过程如下:
2. 符号的确认
下面的公式是我们下面要用到的,这里对其中的一些符号做一个确认。
- 上标 [ l ] ^{[l]} [l]:表示该要素所在第 l l l层layer,这里表示的是第1层
- 下标 i _i i:表示该要素所在这层layer的第 i i i个node,这里表示的是第1个node
3. 神经网络的输出
针对每一层的每一个node,分别计算其z
和a
值。
- 第一层第一个node: z 1 [ 1 ] = w 1 [ 1 ] T x + b 1 [ 1 ] , a 1 [ 1 ] = σ ( z 1 [ 1 ] ) z^{[1]}_1 = w^{[1]T}_1 x + b^{[1]}_1, a^{[1]}_1 = \sigma (z^{[1]}_1) z1[1]=w1[1]Tx+b1[1],a1