约定
本小节所使用的神经网络如图所示
其中
- 一共有三层, 序号分别是 0, 1, 2 (第0层为输入层)
- 输入为向量 x x x 有两个项 x 1 x_1 x1 和 x 2 x_2 x2
- a ( i ) a^{(i)} a(i) 表示第 i 层的输出向量, a j ( i ) a_j^{(i)} aj(i) 表示第 i 层输出向量的第 j 项. 注意 x = a ( 0 ) x = a^{(0)} x=a(0)
- W ( i ) W^{(i)} W(i) 表示连接第 i-1 层和第 i 层的边, 即系数, w j k ( i ) w_{jk}^{(i)} wjk(i) 表示连接第 i 层第 j 个节点和第 i-1 层第 k 个节点的边, 注意 jk 的顺序是从右到左连接
- z ( i ) = W ( i ) × a ( i − 1 ) z^{(i)} = W^{(i)} \times a^{(i-1)} z(i)=W(i)×a(i−1)
- a ( i ) = s i g m o i d ( z ( i ) ) a^{(i)} = sigmoid(z^{(i)}) a(i)=sigmoid(z(i)) 也就是说本网络使用的激活函数是 sigmoid
- s i g m o i d ( x ) = 1 1 + e − x sigmoid(x) = \frac{1}{1 + e^{-x}} sigmoid(x)=1+e−x1
- 损失函数为 J ( W , x , y ) = ∑ i = 1 2 [ y l n ( a i ( 2 ) ) + ( 1 − y ) l n ( 1 − a i ( 2 ) ) ] J(W, x, y) = \sum_{i=1}^2[yln(a_i^{(2)}) + (1-y)ln(1 - a_i^{(2)})] J(W,x,y)=∑i=12[yln(ai(2))+(1−y)ln(1−ai(2))]
- 简便起见不考虑 bias 项
推导
我们的目标是最小化 J ( W , x , y ) J(W, x, y) J(W,x,y), 其中 W 是所有的边, 而 x, y 是测试数据集为常量, 所以我们需要求 δ J δ W \frac{\delta J}{\delta W} δWδJ, 具体地, 我们要求 δ J δ w ( 2 ) \frac{\delta J}{\delta w^{(2)}} δw(2)δJ 和 δ J δ w ( 1 ) \frac{\delta J}{\delta w^{(1)}} δw(1)δJ :
δ J δ w ( 2 ) = δ J δ a ( 2 ) × δ a ( 2 ) δ z ( 2 ) × δ z ( 2 ) δ w ( 2 ) \frac{\delta J}{\delta w^{(2)}} = \frac{\delta J}{\delta a^{(2)}} \times \frac{\delta a^{(2)}}{\delta z^{(2)}} \times \frac{\delta z^{(2)}}{\delta w^{(2)}} δw(2)δJ=δa(2)δJ×δz(2)δa(2)×