1、神经网络的表示
\qquad
所有输入特征组成输入层(Input Layer),最终的输出神经元组成输出层(Output Layer),输入层和输出层之间的叫做隐藏层(Hidden Layer)。神经网络通过偏置和权重进行计算的示意图如下图所示:
\qquad
将上述计算式进一步进行整合:
z
[
1
]
=
W
[
1
]
x
+
b
[
1
]
a
[
1
]
=
σ
(
z
[
1
]
)
z
[
2
]
=
W
[
2
]
a
[
1
]
+
b
[
2
]
a
[
2
]
=
σ
(
z
[
2
]
)
z^{[1]}=W^{[1]}x+b^{[1]}\\ a^{[1]}= \sigma (z^{[1]}) \\ z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}\\ a^{[2]}= \sigma (z^{[2]})
z[1]=W[1]x+b[1]a[1]=σ(z[1])z[2]=W[2]a[1]+b[2]a[2]=σ(z[2])
\qquad
在进行多个样本的并行训练时,计算方法如下所示:
Z
[
1
]
=
W
[
1
]
X
+
b
[
1
]
A
[
1
]
=
σ
(
Z
[
1
]
)
Z
[
2
]
=
W
[
2
]
A
[
1
]
+
b
[
2
]
A
[
2
]
=
σ
(
Z
[
2
]
)
Z^{[1]}=W^{[1]}X+b^{[1]}\\ A^{[1]}= \sigma (Z^{[1]}) \\ Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}\\ A^{[2]}= \sigma (Z^{[2]})
Z[1]=W[1]X+b[1]A[1]=σ(Z[1])Z[2]=W[2]A[1]+b[2]A[2]=σ(Z[2])
\qquad
其中,
Z
[
i
]
,
A
[
i
]
Z^{[i]},A^{[i]}
Z[i],A[i]表示不同训练样本在相同神经网络层下的权值累和和输入值,将其组合起来为矩阵形式,矩阵的行表示当前神经网络层的神经元个数,列表示训练样本数量,如下图所示:
2、激活函数
\qquad
除了之前介绍的sigmoid激活函数,还有一种另外一种激活函数为tanh激活函数,同时tanh在大多数情况下用于隐藏层时的效果要优于sigmoid激活函数,但是在输出层一般使用sigmoid激活函数。tanh激活函数表达式为:
t
a
n
h
=
e
z
?
e
?
z
e
z
+
e
?
z
tanh = \frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}
tanh=ez+e?zez?e?z?
\qquad
tanh激活函数的图像如下图所示:
\qquad
sigmoid激活函数和tanh激活函数具有一个相同的弊端:当z的值十分大或者十分小时,sigmoid激活函数和tanh激活函数的导数均比较小,这会导致梯度下降运算效率降低;所以,另外一种常用的激活函数时ReLU激活函数,
R
e
L
U
=
m
a
x
(
0
,
z
)
ReLU=max(0,z)
ReLU=max(0,z),ReLU的图像如下所示:
2.1 激活函数的导数
\qquad
sigmoid激活函数:
\qquad
tanh激活函数:
\qquad
ReLU激活函数和Leakey ReLU激活函数:
3、神经网络的误差反向传播
\qquad
单个隐藏层的神经网络误差反向传播的公式如下所示:
4、神经网络参数的随机初始化
\qquad
如果将所有权重和偏置均初始化为0,则会使得神经网络中每一个隐藏层中的所有神经元起到相同的作用,即每一个隐藏层中的所有神经元均计算的是同一个相同的函数,从而使得增加神经元数量变得无效,降低学习效果。偏置可以初始化为0,但是权重不能初始化为0。
\qquad
通常的做法是使用随机初始化偏置和权重的方法,通常将权重初始化为比较小的数值,因为如果将权重设置的很大,将会使得梯度下降的速度减慢:
THE END
|