神经网络的BP推导

版权声明:原创博客未经允许请勿转载! https://blog.csdn.net/holmes_MX/article/details/85261211

0. 写作目的

好记性不如烂笔头。

注意:本博客的求导法则,也许和其他地方不同,主要区别在于是否把链式法则中间的求导省略,如果不省略中间的求导则是本文的推导过程,如果省略则是常见的推导过程。其本质都是一样。

1. 定义

以多层神经元网络为例进行分析。网络如下图所示。

定义:网络共 m 层第 k 层的第 i 个神经元到第 (k + 1) 层的第 j 个神经元之间的权重为 w_{ij}^{k}。第 k 层的第 i 个神经元的输入为 I_{i}^{k},第 k 层的第 i 个神经元的输出为 O_{i}^{k}。激活函数设置为 f。

则 O_{i}^{k}=f\left ( I_{i}^{k} \right )

定义单个样本的loss函数为:

J=\frac{1}{2}\sum_{d=1}^{d=D}\left ( O_{d}^{m} -y_{d}\right )^{2}    或者  J=\frac{1}{2}\left \|O^{m}-y \right \|_{2}^{2} 

其中 O_{d}^{m} 为网络的输出值,即第 m 层网络的每一维的输入值,y_{d} 为样本每一维的理论值。

\frac{\partial J}{\partial w_{ij}^{\left ( k-1 \right )k}}=\frac{\partial J}{\partial O_{j}^{k}} \frac{\partial O_{j}^{k}}{\partial I_{j}^{k}} \frac{\partial I_{j}^{k}}{\partial w_{ij}^{\left ( k-1 \right )k}}=\frac{\partial J}{\partial O_{j}^{k}} f{\left ( I_{j}^{k} \right )}'O_{i}^{k-1}

对于反向求导过程中,所需要的变量,我们只需要求出 \frac{\partial J}{\partial O_{j}^{k}} 即可,其他变量可以从正向传播中得到。因此下图给出了如果求反向传播过程中的 \frac{\partial J}{\partial O_{j}^{k}} 。

 

 

[Reference]

[1] 英文版的BP理解 (推荐看):http://neuralnetworksanddeeplearning.com/chap2.html

猜你喜欢

转载自blog.csdn.net/holmes_MX/article/details/85261211