1、L层神经网络
\qquad
将浅层神经网络的隐藏层的层数增多之后,可以得到更深层的神经网络结构。下图是一个L=4层的神经网络示意图:
\qquad
之前浅层网络中定义的符号,在深层网络中同样适用,如
n
[
l
]
n^{[l]}
n[l]表示第
l
l
l层的神经元个数,
g
[
l
]
g^{[l]}
g[l]表示第
l
l
l层的激活函数,
a
[
l
]
a^{[l]}
a[l]表示第
l
l
l层的输出值。
\qquad
生成神经网络的前向传播通用表达式如下所示:
Z
[
l
]
=
w
[
l
]
A
[
l
?
1
]
+
b
[
l
]
A
[
l
]
=
g
[
l
]
(
Z
[
l
]
)
Z^{[l]}=w^{[l]}A^{[l-1]}+b^{[l]}\\ A^{[l]}=g^{[l]}(Z^{[l]})
Z[l]=w[l]A[l?1]+b[l]A[l]=g[l](Z[l])
\qquad
在检查神经网络参数的维度时,通用检查公式如下所示:
w
[
l
]
:
(
n
[
l
]
,
n
[
l
?
1
]
)
b
[
l
]
:
(
n
[
l
]
,
1
)
w^{[l]}:(n^{[l]},n^{[l-1]})\\ b^{[l]}:(n^{[l]},1)
w[l]:(n[l],n[l?1])b[l]:(n[l],1)
\qquad
在反向传播时,
d
w
dw
dw和
d
b
db
db的维度分别和
w
,
b
w,b
w,b的维度相同。
\qquad
在不使用向量化和使用向量化时的参数
z
(
Z
)
,
a
(
A
)
z(Z),a(A)
z(Z),a(A)的维度如下所示:
z
[
l
]
,
a
[
l
]
:
(
n
[
l
]
,
1
)
Z
[
l
]
,
A
[
l
]
:
(
n
[
l
]
,
m
)
z^{[l]},a^{[l]}:(n^{[l]},1)\\ Z^{[l]},A^{[l]}:(n^{[l]},m)
z[l],a[l]:(n[l],1)Z[l],A[l]:(n[l],m)
\qquad
其中m时训练样本的个数,当
l
l
l等于0时,
n
[
0
]
n^{[0]}
n[0]表示特征数量。
2、深层网络提出的原因
\qquad
深层神经网络提出的原因是,使用浅层网络神经元来识别简单信息,之后将简单信息进行组合成为,由更深层次的神经元来识别复杂信息:
2.1
L
t
h
L^{th}
Lth层正向/反向传播的计算过程和输入/输出参数
\qquad
在正向传播时,
L
t
h
L^{th}
Lth层的输入参数为上一层的输出结果
a
l
?
1
a^{l-1}
al?1,系数
w
(
l
)
w^{(l)}
w(l)和偏置
b
(
l
)
b^{(l)}
b(l),输出结果首先计算
z
(
l
)
=
w
(
l
)
a
l
?
1
+
b
(
l
)
z^{(l)}=w^{(l)}a^{l-1}+b^{(l)}
z(l)=w(l)al?1+b(l),之后得到
L
t
h
L^{th}
Lth层的输出
a
(
l
)
=
g
(
l
)
(
z
(
l
)
)
a{(l)}=g^{(l)}(z^{(l)})
a(l)=g(l)(z(l))。
\qquad
在反向传播时,
L
t
h
L^{th}
Lth层的输入参数为后一层计算的梯度
d
a
(
l
)
d a^{(l)}
da(l)和一个cache
z
(
l
)
z^{(l)}
z(l);输出结果为:
d
?
a
(
l
?
1
)
,
d
?
w
(
l
)
,
d
?
b
(
l
)
d\ a^{(l-1)}, d\ w^{(l)}, d\ b^{(l)}
d?a(l?1),d?w(l),d?b(l)
\qquad
所有神经网络层的正向和反向传播的计算过程如下图所示:
\qquad
反向传播的计算公式如下图所示:
\qquad
其中,
d
a
l
=
?
y
a
+
1
?
y
1
?
a
da^{l}=-\frac{y}{a}+\frac{1-y}{1-a}
dal=?ay?+1?a1?y?
3、参数和超参数
\qquad
神经网络的参数包括:
w
[
1
]
,
b
[
1
]
,
w
[
2
]
,
b
[
2
]
,
w
[
3
]
,
b
[
3
]
,
.
.
.
w^{[1]}, b^{[1]}, w^{[2]}, b^{[2]},w^{[3]}, b^{[3]},...
w[1],b[1],w[2],b[2],w[3],b[3],...,这些参数是通过神经网络自己进行学习的;还有一些超参数(hyper parameters),需要人为地进行设定,如学习率
α
\alpha
α,迭代次数
#
i
t
e
r
a
t
i
o
n
\#iteration
#iteration,隐藏层的数量
L
L
L,隐藏单元的数量:
n
[
1
]
,
n
[
2
]
,
.
.
.
n^{[1]}, n^{[2]},...
n[1],n[2],...,激活函数的选择,如
s
i
g
m
o
i
d
,
?
R
e
L
U
,
?
t
a
n
h
sigmoid,\ ReLU, \ tanh
sigmoid,?ReLU,?tanh,还有一些其他数据相关的超参数,如momentum,minibatch size,regulation terms, etc.
\qquad
涉及到这么多参数,应用深度学习是一个比较经验主义的过程,在想到一个想法之后,设计代码进行实现,之后进行试验验证,之后再进行经验参数调整,如此循环最终得到比较好的效果。
THE END
|