一个隐藏层、单输出的全链接神经网络

考虑如下所示的一个全连接的简单神经网络

该神经网络的两个输入分别为x1x_1x2x_2,输出为y^\hat{y}。input Layer 和 Hidden Layer 之间 weight 为

[w11(1)w12(1)w21(1)w22(1)w31(1)w22(1)]R3×2\begin{bmatrix} w_{11}^{(1)} & w_{12}^{(1)} \\ w_{21}^{(1)} & w_{22}^{(1)} \\ w_{31}^{(1)} & w_{22}^{(1)} \end{bmatrix}_{\mathbb{R}^{3 \times 2}}

Hidden Layer 和 Output Layer 之间的 weight 为[w11(2)w12(2)w13(2)]R1×3 \begin{bmatrix} w_{11}^{(2)} & w_{12}^{(2)} & w_{13}^{(2)} \end{bmatrix}_{\mathbb{R}^{1 \times 3}}

我们用 sigmoidsigmoid 函数 δ\delta 作为激活函数,对于 δ(x)\delta(x),有 δ(x)=δ(x)(1δ(x)){\delta}'(x) = \delta(x)(1-\delta(x))

我们来看这个神经网络的工作过程

[w11(1)w12(1)w21(1)w22(1)w31(1)w22(1)][x1x2]=[z1z2]\begin{bmatrix} w_{11}^{(1)} & w_{12}^{(1)} \\ w_{21}^{(1)} & w_{22}^{(1)} \\ w_{31}^{(1)} & w_{22}^{(1)} \end{bmatrix} \cdot \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} z_1 \\ z_2 \end{bmatrix}

δ(Z)=[δ(z1)δ(z2)δ(z3)]=[h1h2h3]\delta(Z) = \begin{bmatrix} \delta(z_1) \\ \delta(z_2) \\ \delta(z_3) \end{bmatrix} = \begin{bmatrix} h_1 \\ h_2 \\ h_3 \end{bmatrix}

[w11(2)w12(2)w13(2)][h1h2h3]=y^\begin{bmatrix} w_{11}^{(2)} & w_{12}^{(2)} & w_{13}^{(2)} \end{bmatrix} \cdot \begin{bmatrix} h_1 \\ h_2 \\ h_3 \end{bmatrix} = \hat{y}

现在我们采用最小二乘法来定义 Cost。即

E=12(y^y)2E = \frac{1}{2} \cdot (\hat{y} - y)^2

我们最终的目标,是求 E 对每个 weight 的偏导来进行梯度下降。根据微分的链式法则(Chain rule),有

Ewmn(1)=Ey^y^hmhmzmzmwmn(1)\frac{\partial E}{\partial w_{mn}^{(1)}} = \frac{\partial E}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial h_m} \cdot \frac{\partial h_m}{\partial z_m} \cdot \frac{\partial z_m}{\partial w_{mn}^{(1)}}

在这个例子里,m(1,2,3)m \isin (1,2,3)n(1,2)n \isin (1,2)

易得

Ey^=y^y(1.1)\frac{\partial{E}}{\partial \hat{y}} = \hat{y} - y \tag{1.1}

y^hm=w1m(2)(1.2)\frac{\partial \hat{y}}{\partial h_m} = w_{1m}^{(2)} \tag{1.2}

hmzm=hm(1hm)(1.3)\frac{\partial h_m}{\partial z_m} = h_m \cdot (1-h_m) \tag{1.3}

zmwmn(1)=xn(1.4)\frac{\partial z_m}{\partial w_{mn}^{(1)}} = x_n \tag{1.4}

于是

Ewmn(1)=Ey^y^hmhmzmzmwmn(1)=(y^y)w1m(2)δ(zm)xn=(y^y)w1m(2)hm(1hm)xn\begin{aligned} \frac{\partial E}{\partial w_{mn}^{(1)}} & = \frac{\partial E}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial h_m} \cdot \frac{\partial h_m}{\partial z_m} \cdot \frac{\partial z_m}{\partial w_{mn}^{(1)}} \\ & = (\hat{y} - y) \cdot w_{1m}^{(2)} \cdot \delta'(z_m) \cdot x_n \\ & = (\hat{y} - y) \cdot w_{1m}^{(2)} \cdot h_m \cdot (1-h_m) \cdot x_n \end{aligned}

一个隐藏层、多输出的全链接神经网络

该神经网络的输入为[x1x2x3x4] \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{bmatrix}

输出为[y1^y2^y3^y4^] \begin{bmatrix} \hat{y_1} \\ \hat{y_2} \\ \hat{y_3} \\ \hat{y_4} \end{bmatrix}

input Layer 和 Hidden Layer 之间 weight 为[w11(1)w12(1)w13(1)w14(1)w21(1)w22(1)w23(1)w24(1)w31(1)w32(1)w33(1)w34(1)w41(1)w42(1)w43(1)w44(1)w51(1)w52(1)w53(1)w54(1)w61(1)w62(1)w63(1)w64(1)]R6×4 \begin{bmatrix} w_{11}^{(1)} & w_{12}^{(1)} & w_{13}^{(1)} & w_{14}^{(1)} \\ w_{21}^{(1)} & w_{22}^{(1)} & w_{23}^{(1)} & w_{24}^{(1)} \\ w_{31}^{(1)} & w_{32}^{(1)} & w_{33}^{(1)} & w_{34}^{(1)} \\ w_{41}^{(1)} & w_{42}^{(1)} & w_{43}^{(1)} & w_{44}^{(1)} \\ w_{51}^{(1)} & w_{52}^{(1)} & w_{53}^{(1)} & w_{54}^{(1)} \\ w_{61}^{(1)} & w_{62}^{(1)} & w_{63}^{(1)} & w_{64}^{(1)} \end{bmatrix}_{\mathbb{R}^{6 \times 4}}

Hidden Layer 和 Output Layer 之间的 weight 为[w11(2)w12(2)w13(2)w14(2)w15(2)w16(2)w21(2)w22(2)w23(2)w24(2)w25(2)w26(2)w31(2)w32(2)w33(2)w34(2)w35(2)w36(2)]R3×6 \begin{bmatrix} w_{11}^{(2)} & w_{12}^{(2)} & w_{13}^{(2)} & w_{14}^{(2)} & w_{15}^{(2)} & w_{16}^{(2)} \\ w_{21}^{(2)} & w_{22}^{(2)} & w_{23}^{(2)} & w_{24}^{(2)} & w_{25}^{(2)} & w_{26}^{(2)} \\ w_{31}^{(2)} & w_{32}^{(2)} & w_{33}^{(2)} & w_{34}^{(2)} & w_{35}^{(2)} & w_{36}^{(2)} \end{bmatrix}_{\mathbb{R}^{3 \times 6}}

E=i=1312(yi^yi)2E = \sum_{i=1}^{3} \frac{1}{2} \cdot (\hat{y_i} - y_i)^2

Eyi^=yi^yi\frac{\partial E}{\partial \hat{y_i}} = \hat{y_i} - y_i

根据链式法则

Ewmn(1)=i=1pEyi^yi^hmhmzmzmwmn(1)=i=1p(yi^y)w1m(2)δ(zm)xn=i=1p(yi^y)w1m(2)hm(1hm)xn\begin{aligned} \frac{\partial E}{\partial w_{mn}^{(1)}} & = \sum_{i=1}^{p} \frac{\partial E}{\partial \hat{y_i}} \cdot \frac{\partial \hat{y_i}}{\partial h_m} \cdot \frac{\partial h_m}{\partial z_m} \cdot \frac{\partial z_m}{\partial w_{mn}^{(1)}} \\ & = \sum_{i=1}^{p} (\hat{y_i} - y) \cdot w_{1m}^{(2)} \cdot \delta'(z_m) \cdot x_n \\ & = \sum_{i=1}^{p} (\hat{y_i} - y) \cdot w_{1m}^{(2)} \cdot h_m \cdot (1-h_m) \cdot x_n \end{aligned}

其中,p表示输出的向量个数,m表示隐藏层的神经元个数,n表示输入的特征数

多个隐藏层,多输出的全链接神经网络

(未完待续)

PS:梯度消失和梯度爆炸本质上是一样的,都是因为网络层数太深而引发的梯度反向传播中的连乘效应