深度学习中,我们需要沿着梯度下降的方向,更新参数。
偏导数是表明了自变量对因变量产生了多大的影响。最理想的状态是偏导数等于0,没有对误差最终的误差产生影响。 ---- 一阶导与极值的关系
在损失函数所代表的“几何图像”上,用损失函数的梯度能够找到损失函数变化最快的方向。
如果正方向是增加的话,那么反方向就是最快减小的方向。
偏导的定义,是基于某点函数有增量;
第一层是输入层,包含两个神经元 i 1 i_{1} i1, i 2 i_{2} i2 和截距项 b 1 b_{1} b1 ;
第二层是隐含层,包含两个神经元 h 1 h_{1} h1, h 2 h_{2} h2 和截距项 b 2 b_{2} b2 ;
第三层是输出 o 1 o_{1} o1, o 2 o_{2} o2 ;
每条线上标的 w i w_{i} wi 是层与层之间连接的权重,激活函数采用sigmoid函数;
由公式wx+b可知:
w × x = [ w 1 w 2 w 3 w 4 ] [ i 1 i 2 ] = [ w 1 i 1 + w 2 i 2 w 3 i 1 + w 4 i 2 ] \mathbf{w} \times \mathbf{x} = \begin{bmatrix} w_{1} & w_{2} \\ w_{3}& w_{4} \end{bmatrix} \begin{bmatrix} i_{1} \\ i_{2} \end{bmatrix}=\begin{bmatrix} w_{1} i_{1}+w_{2} i_{2} \\ w_{3} i_{1}+w_{4} i_{2} \end{bmatrix} w×x=[w1w3w2w4][i1i2]=[w1i1+w2i2w3i1+w4i2]
前向传播:
-
输入层 → \rightarrow → 隐藏层:
n e t h 1 = w 1 i 1 + w 2 i 2 + b 1 net_{h_{1}} = w_{1} i_{1}+w_{2} i_{2}+b_{1} neth1=w1i1+w2i2+b1
n e t h 1 = 0.15 ∗ 0.05 + 0.2 ∗ 0.1 + 0.35 = 0.3775 net_{h_{1}} = 0.15*0.05+0.2*0.1+0.35=0.3775 neth1=0.15∗0.05+0.2∗0.1+0.35=0.3775n e t h 2 = w 3 i 1 + w 4 i 2 + b 1 net_{h_{2}} = w_{3} i_{1}+w_{4} i_{2}+b_{1} neth2=w3i1+w4i2+b1
n e t h 2 = 0.25 ∗ 0.05 + 0.3 ∗ 0.1 + 0.35 net_{h_{2}} = 0.25*0.05+0.3*0.1+0.35 neth2=0.25∗0.05+0.3∗0.1+0.35 -
激活函数:
o u t h 1 = s i g m o i d ( n e t h 1 ) = 0.593269992 out_{h_{1}} = sigmoid(net_{h_{1}})=0.593269992 outh1=sigmoid(neth1)=0.593269992
o u t h 2 = s i g m o i d ( n e t h 2 ) = 0.596884378 out_{h_{2}} = sigmoid(net_{h_{2}})=0.596884378 outh2=sigmoid(neth2)=0.596884378 -
隐藏层 → \rightarrow → 输出层:
n e t o 1 = w 5 o u t h 1 + w 6 o u t h 2 + b 2 net_{o_{1}} = w_{5}out_{h_{1}}+w_{6}out_{h_{2}}+b_{2} neto1=w5outh1+w6outh2+b2n e t o 2 = w 7 o u t h 1 + w 8 o u t h 2 + b 2 net_{o_{2}} = w_{7}out_{h_{1}}+w_{8}out_{h_{2}}+b_{2} neto2=w7outh1+w8outh2+b2
-
激活函数:
o u t o 1 = s i g m o i d ( n e t o 1 ) = 0.75136507 out_{o_{1}} = sigmoid(net_{o_{1}})=0.75136507 outo1=sigmoid(neto1)=0.75136507
o u t o 2 = s i g m o i d ( n e t o 2 ) = 0.772928465 out_{o_{2}} = sigmoid(net_{o_{2}})=0.772928465 outo2=sigmoid(neto2)=0.772928465
通过前向传播得到输出值为[0.75136079, 0.772928465],
与实际值 [0.01, 0.99] 相差还很远,现在对误差进行反向传播,更新权值,重新计算输出。
反向传播:
-
计算总误差:
误差公式: E t o t a l = Σ 1 2 ( t a r g e t − o u t p u t ) 2 E_{total} = Σ \frac{1}{2}(target-output)^{2} Etotal=Σ21(target−output