打卡(1)
4.1 深层神经网络
* 符号约定:输入层
X=a[0],预测值ŷ =a[L]
打卡(2)
4.2 深层网络中前向传播
单个样本:
X=a[0]
Z[1]=W[1]a[0]+b[1]
a[1]=g[1](Z[1])
第一层
Z[2]=W[2]a[1]+b[2]
a[2]=g[2]Z[2]
第二层
…..
Z[4]=W[4]a[3]+b[4]
a[4]=g[4]Z[4]=ŷ 第四层
Z[l]=W[l]a[l−1]+b[l]
a[l]=g[l]Z[l]
所有样本:
Z[1]=W[1]A[0]+b[1]
A[1]=g[1](Z[1])
第一层
Z[2]=W[2]A[1]+b[2]
A[2]=g[2]Z[2]
第二层
…….
4.3 核对矩阵的维数
假定:输入层的维度为
n[0]
,隐藏层第一层为
n[1]
,第二层
n[2]
,…..。
则:
第一层的权重
W[1]:(n[1],n[0]),截距b[1]:(n1,1)
第二层的权重
W[1]:(n[2],n[1]),截距b[2]:(n2,1)
…..
W[l]:(n[l],n[l−1])
b[l]:(nl,1)
同样反向传播时:
dW[l]与W[l]有同样的维度:(n[l],n[l−1])
db[l]与b[l]有同样的维度:(n[l],n[l−1])
单个样本的计算:
Z[1]=W[1]X+b[1]
其中,
Z[1]
的维度是
(n[1],1)
,
W[1]
的维度是
(n[1],n[0]),
X的维度是
(n[0],1)
,
b[1]
的维度是
(n[1],1)
;
对于整个训练集(m个样本):
Z[1]
的维度为
(n[1],m)
,
W[1]
的维度是
(n[1],n[0])
,
X
的维度是
(n[0],m)
,
b[1]
的维度是
(n[1],m)
.
-
Z[l]
,
a[l]
:
(n[l],1)
-
Z[l]
,
A[l]
:
(n[l],m)
-
l=0
时,
A[0]=X=(n[0],m)
-
dz[l],dA[l]:(n[l],m)
4.4 为什么使用深层表示
深度神经网络并不需要很大的神经网络,但是得有深度,得有比较多的隐藏层
4.5 搭建深层神经网络块
编程过程中需要将
Z[l],W[l],b[l]
缓存,在反向传播时可直接使用,节省时间
4.6 前向和反向传播
前向传播:
后向传播
损失函数:L=f(ŷ ,y),ŷ =a[l]
"da[l]"=dLda[l]
"dZ[l]"=dadZ="da[l]"∗g[l]′(Z[l])
"dW[l]"="dZ"∗dZdW[l]="dZ[l]"a[l−1]
"db[l]"="dZ"∗dZdb[l]="dZ[l]"
"da[l−1]"="dZ"∗dZda[l−1]=W[l]T"dZ[l]"
求
"dal−1"时W[l]
需要转置,因为
"da[l−1]"
维度为
(n[l−1],1)
,
W[l]
维度为
(n[l],n[l−1])
,
"dZ[l]"
维度为
(n[l],1)
4.7 参数和超参数
- 超参数在某种程度上决定了参数