Learning representations by back-propagating errors

这篇文章清晰地阐释了backpropagation的过程。

backpropagation的精髓就在于chain rule。同时利用神经网络的结构,使得gradient descent的过程就如同反向的神经网络一般。

假设我们有如下一个神经网络

其中

Y_{ij}=\frac{1}{1+e^{-{X_{ij}}}}

X_{ij}=\sum_{j = 1}^{n}{W_{i-1,j}Y_{i-1,j}}

最终的loss function被定义为

L=\frac{1}{2}\sum_{i=1}^{m}{(y^{(i)}_{out}-d^{(i)})^2}

gradient descent所做的事情就是不断调整W的取值,使得最终的loss function最小化。

文中提到如果没有hidden layer,那么GD是一件相对容易的事情;但是如果有hidden layer,事情会复杂很多。

我们需要通过计算W的偏导数来更新W的数值,根据chain rule,可以得到第一步的分解式

\frac{\partial L}{\partial W_{ij}^{(k)}}=\frac{\partial L}{\partial Y_{k+1,j}}\frac{\partial Y_{k+1,j}}{\partial W_{ij}^{(k)}}

其中分解的第一个偏导数可以直接从loss function的定义中得到。

至于第二个偏导数我们可以利用chain rule继续分解

\frac{\partial Y_{k+1,j}}{\partial W_{ij}}=\frac{\partial Y_{k+1,j}}{\partial X_{k+1,j}}\frac{\partial X_{k+1,j}}{{\partial W_{ij}}}

这一步中的第一个偏导数是sigmoid function的偏导数可以很简单地计算出来,第二个偏导数我们发现就是

\frac{\partial X_{k+1,j}}{{\partial W_{ij}^{(k)}}}=Y_{ij}

然后递归下去,便可以更新所有W的值。

猜你喜欢

转载自blog.csdn.net/holmosaint/article/details/82193134