Lesson1 Week4 part I-V
深层神经网络
深度神经网络的许多隐藏层中,较早的前几层能学习一些低层次的简单特征,等到后几层,就能把简单的特征结合起来,去探测更加复杂的东西。深层的网络隐藏单元数量相对较少,隐藏层数目较多,如果浅层的网络想要达到同样的计算结果,则需要指数级增长的单元数量才能达到。
吴老师在课程中提到,“当我开始解决一个新问题时,我通常会从 logistic回归开始,再试试一到两个隐层,把隐藏层数量当作参数、超参数一样去调试,这样去找比较合适的深度。但是近几年以来,有一些人会趋向于使用非常非常深邃的神经网络,比如好几打的层数,某些问题中只有这种网络才是最佳模型。”
Lesson1 Week4 part VI
搭建神经网络块
对于上图的神经网络而言,有 3 个隐藏层和 1 个输出层。每一层的计算都包括两个步骤:
- 正向传播。输入
a
[
l
?
1
]
a^{[l-1]}
a[l?1] 并且输出
a
[
l
]
a^{[l]}
a[l],为了计算结果你需要用
W
[
l
]
W^{[l]}
W[l]和
b
[
l
]
b^{[l]}
b[l],以及输出到缓存的
z
[
l
]
z^{[l]}
z[l]。
- 反向传播。输入
d
a
[
l
]
da^{[l]}
da[l],输出
d
a
[
l
?
1
]
da^{[l-1]}
da[l?1],得到对激活函数的导数,也就是希望的导数值
d
a
[
l
?
1
]
da^{[l-1]}
da[l?1]。
神经网络的一步训练包含了,从
a
[
0
]
a^{[0]}
a[0] 开始,也就是 x,然后经过一系列正向传播计算得到
y
^
\hat{y}
y^?,之后再实现反向传播。现在你就有所有的导数项了,w 也会在每一层被更新为
w
=
w
?
α
?
d
w
w = w -\alpha*dw
w=w?α?dw;b 也一样,
b
=
b
?
α
?
d
b
b = b -\alpha*db
b=b?α?db,反向传播就都计算完毕,这是神经网络一个梯度下降循环。
|