深度学习 神经网络(2)前向传播
- 一、前言
- 二、神经网络结构
- 三、前向传播
- 四、参考资料
一、前言
前面介绍了《感知器》,类似于单个神经元细胞,现在我们用多个感知器组合成更加复杂的神经网络。本文介绍了多层神经网络通过前向传播方法,逐层计算出最终结果值的过程。
二、神经网络结构
如上图所示(亲绘 ^ _ ^),展示了两层神经网络,有n+1个输入,2个输出,包含1个隐藏层。
其他N层的神经网络以此类推就行。
输入 x = [ x 0 x 1 ⋮ x n ] x=\begin{bmatrix} x_0 \\ x_1 \\ \vdots \\ x_n \\ \end{bmatrix} x=⎣ ⎡x0x1⋮xn⎦ ⎤
第1层权重 w ( 1 ) = [ w 00 ( 1 ) w 01 ( 1 ) w 02 ( 1 ) . . . w 0 n ( 1 ) w 11 ( 1 ) w 11 ( 1 ) w 12 ( 1 ) . . . w 1 n ( 1 ) . . . . . . . . . . . . . . . w k 1 ( 1 ) w k 1 ( 1 ) w k 2 ( 1 ) . . . w k n ( 1 ) ] w^{(1)}=\begin{bmatrix} w^{(1)}_{00} & w^{(1)}_{01} & w^{(1)}_{02} & ...&w^{(1)}_{0n} \\ w^{(1)}_{11} & w^{(1)}_{11} & w^{(1)}_{12} & ...&w^{(1)}_{1n} \\ ... & ... & ... & ...&... \\ w^{(1)}_{k1} & w^{(1)}_{k1} & w^{(1)}_{k2} & ...&w^{(1)}_{kn} \\ \end{bmatrix} w(1)=⎣ ⎡w00(1)w11(1)...wk1(1)w01(1)w11(1)...wk1(1)w02(1)w12(1)...wk2(1)............w0n(1)w1n(1)...wkn(1)⎦ ⎤
第1层输出
a
(
1
)
=
f
1
(
w
(
1
)
x
)
=
[
a
0
(
1
)
a
1
(
1
)
⋮
a
k
(
1
)
]
a^{(1)}=f_1(w^{(1)}x)=\begin{bmatrix} a^{(1)}_0 \\ a^{(1)}_1 \\ \vdots \\ a^{(1)}_k \\ \end{bmatrix}
a(1)=f1(w(1)x)=⎣
⎡a0(1)a1(1)⋮ak(1)⎦
⎤
其中
f
1
f_1
f1是第1层的激活函数。
第2层权重 w ( 2 ) = [ w 00 ( 2 ) w 01 ( 2 ) w 02 ( 2 ) . . . w 0 k ( 2 ) w 11 ( 2 ) w 11 ( 2 ) w 12 ( 2 ) . . . w 1 k ( 2 ) ] w^{(2)}=\begin{bmatrix} w^{(2)}_{00} & w^{(2)}_{01} & w^{(2)}_{02} & ...&w^{(2)}_{0k} \\ w^{(2)}_{11} & w^{(2)}_{11} & w^{(2)}_{12} & ...&w^{(2)}_{1k} \end{bmatrix} w(2)=[w00(2)w11(2)w01(2)w11(2)w02(2)w12(2)......w0k(2)w1k(2)]
第2层输出
a
(
2
)
=
f
2
(
w
(
2
)
a
(
1
)
)
=
f
2
(
w
(
2
)
(
f
1
(
w
(
1
)
x
)
)
)
=
f
2
(
[
w
00
(
2
)
w
01
(
2
)
w
02
(
2
)
.
.
.
w
0
k
(
2
)
w
11
(
2
)
w
11
(
2
)
w
12
(
2
)
.
.
.
w
1
k
(
2
)
]
[
a
0
(
1
)
a
1
(
1
)
⋮
a
k
(
1
)
]
)
=
[
a
0
(
2
)
a
1
(
2
)
]
a^{(2)}=f_2(w^{(2)}a^{(1)})=f_2\big(w^{(2)}(f_1(w^{(1)}x))\big)=f_2\bigg(\begin{bmatrix} w^{(2)}_{00} & w^{(2)}_{01} & w^{(2)}_{02} & ...&w^{(2)}_{0k} \\ w^{(2)}_{11} & w^{(2)}_{11} & w^{(2)}_{12} & ...&w^{(2)}_{1k} \end{bmatrix}\begin{bmatrix} a^{(1)}_0 \\ a^{(1)}_1 \\ \vdots \\ a^{(1)}_k \\ \end{bmatrix}\bigg)=\begin{bmatrix} a^{(2)}_0 \\ a^{(2)}_1 \\ \end{bmatrix}
a(2)=f2(w(2)a(1))=f2(w(2)(f1(w(1)x)))=f2([w00(2)w11(2)w01(2)w11(2)w02(2)w12(2)......w0k(2)w1k(2)]⎣
⎡a0(1)a1(1)⋮ak(1)⎦
⎤)=[a0(2)a1(2)]
其中
f
2
f_2
f2是第2层的激活函数。
三、前向传播
以此类推,那么在第
l
l
l 层
a
(
l
)
=
f
l
(
w
(
l
)
a
(
l
−
1
)
)
a^{(l)}=f_l(w^{(l)}a^{(l-1)})
a(l)=fl(w(l)a(l−1))
以
x
→
f
1
w
(
1
)
a
(
1
)
→
f
2
w
(
2
)
⋯
→
f
l
w
(
l
)
a
(
l
)
x\xrightarrow[f_1]{w^{(1)}}a^{(1)}\xrightarrow[f_2]{w^{(2)}}\dots \xrightarrow[f_l]{w^{(l)}}a^{(l)}
xw(1)f1a(1)w(2)f2⋯w(l)fla(l)的形式,神经网络通过逐层的信息传递,最终得到网络的输出
a
(
l
)
a^{(l)}
a(l),这叫前馈神经网络
的前向传播。
四、参考资料
神经网络与深度学习-邱锡鹏
《深度学习入门:基于Python的理论与实现》