神经网络与深度学习笔记系列一共有五个专题,分别是
第一章使用神经网络进行手写数字识别——梯度下降算法是什么主要介绍了神经网络的基础例如感知器激活函数等概念,最主要介绍了梯度下降算法。
第二章反向传播算法如何工作——反向传播算法的原理主要介绍了反向传播算法的工作原理。
第三章改变神经网络的学习方法——代价函数,规范化,过拟合。主要介绍了不同的代价函数,以及规范化等对传统代价函数的改造。
第四章深度神经网络为何难以训练——梯度消失和爆炸。主要介绍了梯度消失问题和梯度爆炸问题。
第二章反向传播算法如何工作
反向传播算法实质上是一种计算梯度的快速算法。
2.1神经网络中的矩阵计算
我们首先规定一下网络中权重w和偏置b的表示方法。表示从层的第k个神经元到第层第j个神经元的权重。同样,用表示第第j个神经元的偏执,用表示第层的第j个神经元的激活函数值。如下图所示。
权重的表示:
偏置和激活值的表示:
那么,我们计算第层的第j个神经元的激活值由下面的公式求得:
我们对每一层都定义一个权重矩阵,其中权重矩阵中第j行第k列的元素为。定义一个偏置向量,每一个元素是,表示这一层上第j个神经元的偏置值。定义一个激活值向量,每一个元素是,表示这一层上的第j个神经元的激活值。则运用矩阵乘法,以上公式可以重新写为:
更具体的,将上式展开得:
我们引入中间量
称为第层的带权输入。
2.2代价函数的两个假设
第一个假设:代价函数可以看作是训练集中每个训练样本x所产生的代价函数的均值,每一个训练样本产生的代价函数。
第二个假设:代价函数是神经网络的权重w和偏置b的函数。
2.3Hadamard乘积
向量按位相乘 s ⊙ t
2.4反向传播的四个基本方程
首先给出这四个方程,下面对四个方程进行解释及推导。
反向传播的根本含义是要计算偏导数和,为了计算对权重和偏置的偏导数,反向传播算法的核心就在于此,就是引入一个中间量,表示第层的第j个神经元的误差。
我们定义为:
将上式根据链式推导法则展开可得:
BP1
假设L层为神经网络的输出层,则即为该层第j个神经元的误差。将上式用向量乘法表示为:
BP1a
上式向量表达形式具体可表示为:
假设我们已经知道了第L+1层的神经元误差向量为,由第L+1层的误差反向求第L层的误差的公式为:
BP2
推导过程如下:假设第L+1层有k个神经元,第L层有m个神经元
代价函数关于网络中任意偏置的偏导数:
BP3
向量形式:
BP3a
代价函数关于网络中任意权重的偏导数:
BP4
简化形式:
其中表示权重连接的上一层神经元的激活值,表示权重连接的下一层神经元的误差,见下示意图:
以上就是反向传播过程的四个基本方程,总结一下如下图:
而且根据四个基本方程我们可以知道,如果输入神经元激活值很低,或者输出神经元已经饱和了(过高或者过低的激活值),权重会学习缓慢。
2.5反向传播算法
1.反向传播算法:
2.结合梯度下降算法的反向传播算法: