一、前言

前面介绍了《感知器》,类似于单个神经元细胞,现在我们用多个感知器组合成更加复杂的神经网络。本文介绍了多层神经网络通过前向传播方法,逐层计算出最终结果值的过程。

二、神经网络结构

深度学习 神经网络(2)前向传播-LMLPHP
如上图所示(亲绘 ^ _ ^),展示了两层神经网络,有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= x0x1xn

第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(l1))

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) f2w(l) fla(l)的形式,神经网络通过逐层的信息传递,最终得到网络的输出 a ( l ) a^{(l)} a(l),这叫前馈神经网络的前向传播。

四、参考资料

神经网络与深度学习-邱锡鹏
《深度学习入门:基于Python的理论与实现》

10-28 10:03