【Nan‘s 吴恩达深度学习笔记】第四周 深层神经网络
浅层神经网络(Deep neural networks)
小结
前向传播:
反向传播:
核对矩阵的维数
维数:
①𝑤的维度是(下一层的维数,前一层的维数),即
w
[
l
]
:
(
n
[
l
]
,
n
[
l
−
1
]
)
;
w^{[l]}: (n^{[l]},n^{[l−1]});
w[l]:(n[l],n[l−1]);
②b的维度是(下一层的维数,1),即
b
[
l
]
:
(
n
[
l
]
,
1
)
;
b^{[l]}: (n^{[l]},1);
b[l]:(n[l],1);
③
z
[
l
]
,
a
[
l
]
:
(
n
[
l
]
,
1
)
;
z^{[l]},a^{[l]}: (n^{[l]},1);
z[l],a[l]:(n[l],1);
注:
𝑑
w
[
l
]
w^{[l]}
w[l]和
w
[
l
]
w^{[l]}
w[l]维度相同, 𝑑
b
[
l
]
b^{[l]}
b[l]和
b
[
l
]
b^{[l]}
b[l]维度相同,且𝑤和𝑏向量化维度不变,但𝑧,𝑎以及𝑥的维
度会向量化后发生变化.
向量化后:
①
Z
[
l
]
Z^{[l]}
Z[l]可以看成由每一个单独的
z
[
l
]
z^{[l]}
z[l]叠加而得到,
Z
[
l
]
=
(
z
[
l
]
[
1
]
,
z
[
l
]
[
2
]
,
…
,
z
[
l
]
[
m
]
)
Z^{[l]}= (z^{[l][1]}, z^{[l][2]},…,z^{[l][m]})
Z[l]=(z[l][1],z[l][2],…,z[l][m]).
𝑚为训练集大小,所以
z
[
l
]
z^{[l]}
z[l]的维度变为(
n
[
l
]
n^{[l]}
n[l], 𝑚)
②
A
[
l
]
A^{[l]}
A[l]:((
n
[
l
]
n^{[l]}
n[l], 𝑚),
A
[
0
]
A^{[0]}
A[0] = 𝑋 = ((
n
[
l
]
n^{[l]}
n[l], 𝑚)
Why deep
以人脸检测为例:
这种从简单到复杂的金字塔状表示方法,也可以应用在图像或者人脸识别以外的其他数据上。
较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。
训练神经网络
神经网络的一步训练包含:
从𝑎[0]开始,也就是 𝑥 然后经过一系列正向传播计算得到
y
^
\hat{y}
y^,之后再用输出值计算这个(第二行最后方块),再实现反向传播。现在你就有所有的导数项了, 𝑊和b也会在每一层被更新为𝑊 = 𝑊 − 𝛼𝑑𝑊, 𝑏 = 𝑏 − 𝛼𝑑𝑏,反向传播就都计算完毕,我们有所有的导数值,那么这是神经网络一个梯度下降循环。
补充一个细节:缓存𝑧,还有𝑊和𝑏。将参数复制到你在计算反向传播时所需要的地方,方便实际编程!
参数 vs 超参数( Parameters vs Hyper parameters)
参数: W, b
超参数: 这些数字实际上控制了最后的参数𝑊和𝑏的值,被称作超参数。
①learning rate 𝑎(学习率)②iterations(梯度下降法循环的数量)③𝐿(隐藏层数目)④𝑛[𝑙](隐藏层单元数目)⑤choice of activation function(激活函数的选择)
寻找超参数的最优值:
走 Idea—Code—Experiment—Idea 这个循环, 尝试各种不同的参数, 实现模型并观察是否成功,然后再迭代