神经网络与深度学习笔记——反向传播算法原理

神经网络与深度学习笔记系列一共有五个专题,分别是
第一章使用神经网络进行手写数字识别——梯度下降算法是什么主要介绍了神经网络的基础例如感知器激活函数等概念,最主要介绍了梯度下降算法。
第二章反向传播算法如何工作——反向传播算法的原理主要介绍了反向传播算法的工作原理。

第三章改变神经网络的学习方法——代价函数,规范化,过拟合。主要介绍了不同的代价函数,以及规范化等对传统代价函数的改造。

第四章深度神经网络为何难以训练——梯度消失和爆炸。主要介绍了梯度消失问题和梯度爆炸问题。

第二章反向传播算法如何工作

反向传播算法实质上是一种计算梯度的快速算法。

2.1神经网络中的矩阵计算

我们首先规定一下网络中权重w和偏置b的表示方法。w^l_{jk}表示从(l-1)^{th}层的第k个神经元到第l^{th}层第j个神经元的权重。同样,用b^l_j表示第l^{th}第j个神经元的偏执,用a^l_j表示第l^{th}层的第j个神经元的激活函数值。如下图所示。

权重的表示:

偏置和激活值的表示:

那么,我们计算第l^{th}层的第j个神经元的激活值a^l_j由下面的公式求得:

                                                           

我们对每一层l都定义一个权重矩阵w^l,其中权重矩阵w^l中第j行第k列的元素为w^l_{jk}。定义一个偏置向量b^l,每一个元素是b^l_j,表示这一层上第j个神经元的偏置值。定义一个激活值向量a^l,每一个元素是a^l_j,表示这一层上的第j个神经元的激活值。则运用矩阵乘法,以上公式可以重新写为:

扫描二维码关注公众号,回复: 10818292 查看本文章

                                                                  

更具体的,将上式展开得:

图前向传播

我们引入中间量

                                                            

z^l为第l层的带权输入。

2.2代价函数的两个假设

第一个假设:代价函数可以看作是训练集中每个训练样本x所产生的代价函数C_x的均值C=1/n \sum_xC_x,每一个训练样本产生的代价函数C_x=1/2||y-a^L||^2

第二个假设:代价函数是神经网络的权重w和偏置b的函数。

2.3Hadamard乘积 

向量按位相乘 s ⊙ t

2.4反向传播的四个基本方程

首先给出这四个方程,下面对四个方程进行解释及推导。

                       

反向传播的根本含义是要计算偏导数\partial C/\partial w^l_{jk}\partial C/\partial b^l_j,为了计算对权重和偏置的偏导数,反向传播算法的核心就在于此,就是引入一个中间量{\delta}^l_j,表示第l层的第j个神经元的误差。

我们定义{\delta}^l_j为:

                                                                

将上式根据链式推导法则展开可得:

                                                                           BP1

假设L层为神经网络的输出层,则{\delta}^l_j即为该层第j个神经元的误差。将上式用向量乘法表示为:

                                                                           BP1a

上式向量表达形式具体可表示为:

假设我们已经知道了第L+1层的神经元误差向量为\delta^{L+1},由第L+1层的误差反向求第L层的误差的公式为:

                                                                             BP2

推导过程如下:假设第L+1层有k个神经元,第L层有m个神经元

代价函数关于网络中任意偏置的偏导数:

                                                                                                                   BP3

向量形式:

                                                                                             \frac{\partial C}{\partial b^L}\delta ^L                                           BP3a

代价函数关于网络中任意权重的偏导数:

                                                                                                          BP4

简化形式:

                                                                                

其中a_{in}表示权重连接的上一层神经元的激活值,\delta_{out}表示权重连接的下一层神经元的误差,见下示意图:

                                                                     

以上就是反向传播过程的四个基本方程,总结一下如下图:

                

而且根据四个基本方程我们可以知道,如果输入神经元激活值很低,或者输出神经元已经饱和了(过高或者过低的激活值),权重会学习缓慢。

2.5反向传播算法

1.反向传播算法:

2.结合梯度下降算法的反向传播算法:

发布了23 篇原创文章 · 获赞 6 · 访问量 1332

猜你喜欢

转载自blog.csdn.net/weixin_42194139/article/details/104929114
今日推荐