之前使用深度学习时一直对各种激活函数和权重初始化策略信手拈用,然而不能只知其表不知其里。若想深入理解为何选择某种激活函数和权重初始化方法卓有成效还是得回归本源,本文就从反向传播的计算过程来按图索骥。
为了更好地演示深度学习中的前向传播和反向传播,有必要图文结合,先按下面这个计算图造些数据。
这是一个输入只有单个样本、包含两个特征,两个隐藏层、分别带有2个神经元,以及一个输出的三层全连接神经网络。
输入和权重
输入 I n p u t Input Input (每行表示一个样本,每列表示一个特征)
X = [ x 1 , x 2 ] = [ 1 , − 1 ] X=[x_1,x_2]=[1,-1] X=[x1,x2]=[1,−1]
标签 y = [ 1 ] y=[1] y=[1]
权重 W W W (每列对应一个神经元,行数等于样本特征数)
W 1 = [ w 1 w 3 w 2 w 4 ] = [ 1 − 1 − 2 1 ] \begin{align} W_1 & = \begin{bmatrix} w_1 & w_3 \\ w_2 & w_4 \\ \end{bmatrix} \hspace{100cm} \\ & = \begin{bmatrix} 1 & -1 \\ -2 & 1 \\ \end{bmatrix} \end{align} W1=[w1w2w3w4]=[1−2−11]
W 2 = [ w 5 w 7 w 6 w 8 ] = [ 2 − 2 − 1 − 1 ] \begin{align} W_2 & = \begin{bmatrix} w_5 & w_7 \\ w_6 & w_8 \\ \end{bmatrix} \hspace{100cm} \\ & = \begin{bmatrix} 2 & -2 \\ -1 & -1 \\ \end{bmatrix} \end{align} W2=[w5w6w7w8]=[2−1−2−1]
W 3 = [ w 9 w 11 w 10 w 12 ] = [ 3 − 1 − 1 4 ] \begin{align} W_3 & = \begin{bmatrix} w_9 & w_{11} \\ w_{10} & w_{12} \\ \end{bmatrix} \hspace{100cm} \\ & = \begin{bmatrix} 3 & -1 \\ -1 & 4 \\ \end{bmatrix} \end{align} W3=[w9w10w11w12]=[3−1−14]
偏置 b b b (长度等于神经元数量)
b 1 = [ b 11 , b 12 ] = [ 1 , 0 ] b_1=[b_{11},b_{12}]=[1,0] b1=[b11,b12]=[1,0]
b 2 = [ b 21 , b 22 ] = [ 0 , 0 ] b_2=[b_{21},b_{22}]=[0,0] b2=[b21,b22]=[0,0]
b 3 = [ − 2 ] b_3=[-2] b3=[−2]
前向传播过程
前向传播就是从输入经隐藏层到输出层的计算过程。
从输入到第一个隐藏层的计算
z 1 = w 1 ⋅ x 1 + w 2 ⋅ x 2 + b 11 = 4 z_1=w_1 · x_1 + w_2 · x_2 + b_{11}=4 z1=w1⋅x1+w2⋅x2+b11=4
z 2 = w 3 ⋅ x 1 + w 4 ⋅ x 2 + b 12 = − 2 z_2=w_3 · x_1 + w_4 · x_2 + b_{12}=-2 z2=w3⋅x1+w4⋅x2+b12=−2
a 11 = σ ( z 1 ) = 0.9820 a_{11}=\sigma(z_1)=0.9820 a11=σ(z1)=0.9820
a 12 = σ ( z 2 ) = 0.1192 a_{12}=\sigma(z_2)=0.1192 a12=σ(z2)=0.1192
其中, σ = s i g m o i d = 1 1 + e − x \sigma=sigmoid={1 \over{1+e^{-x}}} σ=sigmoid=1+e−x1 ,其导数为 σ ′ = s i g m o i d ∗ ( 1 − s i g m o i d ) = 1 1 + e − x − 1 ( 1 + e − x ) 2 \sigma'=sigmoid * (1 - sigmoid)={1 \over{1+e^{-x}}}-{1 \over{(1+e^{-x}})^2} σ′=sigmoid∗(1−sigmoid)=1+e−x1−(1+e−x)21
隐藏层 H 1 = [ a 11 , a 12 ] H_1=[a_{11},a_{12}] H1=[a11,a12] ,作为第二个隐藏层的输入。
从第一个隐藏层到第二个隐藏层的计算
z 3 = w 5 ⋅ a 11 + w 6 ⋅ a 12 + b 21 = 1.8448 z_3=w_5 · a_{11} + w_6 · a_{12} + b_{21}=1.8448 z3=w5⋅a11+w6⋅a12+b21=1.8448
z 4 = w 7 ⋅ a 11 + w 8 ⋅ a 12 + b 22 = − 2.0832 z_4=w_7 · a_{11} + w_8 · a_{12} + b_{22}=-2.0832 z4=w7⋅a11+w8⋅a12+b22=−2.0832
a 21 = σ ( z 3 ) = 0.8635 a_{21}=\sigma(z_3)=0.8635 a21