script type="text/javascript" src="http://latex.codecogs.com/latex.js">

第五周:反向传播算法求导过程

一、神经网络代价函数深入理解:

逻辑回归中的代价函数形式为:$J(\theta )=-\frac{1}{m}\sum_{i=1}^{m}\left [ y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)})) \right ] + \frac{\lambda}{2m}\sum_{j=1}^{n}\theta_j^2$

神经网络中的代价函数形式为:$J(\Theta )=-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}\left [ y^{(i)}_k log((h_\Theta(x^{(i)}))_k)+(1-y^{(i)}_k)log(1-(h_\Theta(x^{(i)}))_k) \right ] + \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta^{(l)}_{j,i})^2$

下文对神经网络的代价函数做一些深入的理解总结。

1、对$\frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta^{(l)}_{j,i})^2$的理解

这是神经网络代价函数中的正规化项,其本质上既是计算所有参数项的平方和(不包括bias term项,即不包括各层的偏置项)。如果不甚理解,可以尝试按照下面思路梳理:

1.1. 单层、单节点的情况:

这里说的单层是指带参数的层,输入层由于没有输入项,也自然没有参数,所以不算。

如上图所示,包括2层:输入层和输出层。其中输出层只有一个输出节点, 故为单节点。

此时的输入为:$z = \theta_1*x_1 + \theta_2*x_2 + \theta_3*x_3$;输出层单节点的核函数为sigmoid()函数,则输出为:sigmoid(z)

参数$\theta$是一个向量:$\begin{bmatrix}\theta_1 & \theta_2 & \theta_3\end{bmatrix}$。这个场景也就是典型的逻辑回归的场景了。

1.2. 单层,多节点的情况:

如上图所示,输出层有2个节点,此时参数$\Theta$就不再是一个向量,而是一个矩阵了:$\begin{bmatrix}\theta_{11} & \theta_{12} & \theta_{13} \\ \theta_{21} & \theta_{22} & \theta_{23}\end{bmatrix}$,这里$\theta_{j,i}$的下标中,i表示输出层的第i个节点;而j表示第j个特征,如$\theta_{2,1}$即输出层第2个节点O2的第一个输入特征X1对应的参数。

1.3. 多层,多节点的情况:

这个网络包括3层:输入层、隐藏层和输出层。此时的参数$\Theta$是多个矩阵,即每一层都是一个矩阵。

比如第一层的矩阵为:$\begin{bmatrix}\theta^{(1)}_{11} & \theta^{(1)}_{12} & \theta^{(1)}_{13} \\ \theta^{(1)}_{21} & \theta^{(1)}_{22} & \theta^{(1)}_{23}\end{bmatrix}$

比如第二层的矩阵为:$\begin{bmatrix}\theta^{(2)}_{11} & \theta^{(2)}_{12} \\ \theta^{(2)}_{21} & \theta^{(2)}_{22} \end{bmatrix}$

所以,为了把所有的$\Theta$累加到一起,就是三个$\Sigma$的叠加了

那么,每一个$\Sigma$的范围是什么意思呢?

第一个$\Sigma$表示所有有参数的层,也就是除输入层之外的其他层,所以是从l=1到L-1。

第二个$\Sigma$表示每一层的所有特征,比如输入层的X1、X2,或隐藏层的H1;所以是从i=1到$s_l$,即第l层的结点个数;

第三个$\Sigma$表示每一层的后面一层的结点数,比如输出层的O1、O2;所以是从j=1到$s_{l+1}$;

 

二、反向传播的求导过程

反向传播的求导,实际上就是$J(\Theta)$对整个神经网络的每个参数$\Theta_{j,i}^{(l)}$求偏导数

$\frac{\partial }{\partial \Theta_{j,i}^{(l)} }J(\Theta)$

=$-\frac{1}{m}\sum_{i=1}^{m}\sum_{k=1}^{K}\left [ y^{(i)}_k log((h_\Theta(x^{(i)}))_k)+(1-y^{(i)}_k)log(1-(h_\Theta(x^{(i)}))_k) \right ] + \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta^{(l)}_{j,i})^2$

 

posted @ 2016-12-27 11:20  玄天妙地  Views(1284)  Comments(0Edit  收藏  举报