神经网络

反向传播算法

核心的思想在于理解从x->y正向是计算损失,然后倒过来从y->x计算误差,利用链式法则计算参数的倒数,从而完成更新,迭代这个计算过程。

其中在链式法则计算的过程中,比较难理解是各个变量的依赖关系。

重要的是要理解将一个神经元要看成两个小单元组成,下图中的out(o1)out_(o1)neto1net_{o1},然后根据网络结构得到得到要计算参数的路径,沿着路径,根据链式法则,就可以写出完整的求导式子,举个例子,要计算Etotalw5\frac{\partial E_{total}}{\partial w_5},可以看到从Eo1E_{o1}误差到w5w_5的路径:Eo1out(o1)neto1w5E_{o1}\rightarrow out_(o1)\rightarrow net_{o1} \rightarrow w_5,路径有了,就可以很轻松写出下面图片中求导式子了。

看一个来自两条路径的,这里在h1h1这个节点就要分成两部分来写,如下如图公式:

总的来说就是把握住要求参数的路径,就可以写出对应的求导式子。

正向传播的思路很好理解,这里不再赘述。

参考:

“反向传播算法”过程及公式推导

反向传播算法(过程及公式推导)

一文弄懂神经网络中的反向传播法——BackPropagation (包含示例代码)

Last updated