一、基本概念
生物神经元
树突(输入)→ 细胞体(处理)→轴突(输出)
人工神经元
其中g函数代表整合函数,f为激活函数。
(1)整合函数一般有以下两种:
(2)激活函数有以下几种:
二、人工神经网络结构
前馈型网络:没有回路。根据层数不同又可分为单层,双层和多层网络,在多层网络中又根据神经元的功能划分为输入层、隐含层和输出层。
反馈型:有回路,一般也被称为动态神经网络或循环网络。
单层感知器,只能解决线性可分问题,不可解决线性不可分和非线性问题,如异或问题。所以出现了多层感知器,如下图:
三、bp算法的推导过程
第二层神经元的输出:
即第二层的输出可以表示为:
因此可以得到前向传播公式为:
1.代价函数
(1)单个样本的代价函数:
(2)所有K个样本的代价函数:
以上定义中的第一项是一个均方差项。第二项是一个正则化项,防止过拟合。
2.梯度下降算法求解最优参数w (l)和b(l)
我们先来看对于第 l+1 层第 i 个神经元来说,第 l 层第 j 个神经元的权值可按如下方式迭代更新:
类似的,对于第 l+1 层第 i 个神经元来说,第 l 层的单元的偏置权值可按如下方式迭代更新:
我们现在的目的是求出以下两个式子就可以对参数进行迭代了
我们知道第 l+1 层第 i 个神经元的输入可以由以下式子计算:
进一步对上面的式子进行变形:
接下来引入残差的概念, 残差表明了该节点对最终输出值的残差产生了多 少影响。第k个样本在第l层第i个神经元上产生的残差表示为:
所以参数更新公式进一步可表示为下式:
因此参数更新公式为下:
现在的核心问题只剩下一个了,这个残差该如何求?接下来计算残差:
我们先计算最后一层第 i 个神经元上的残差,这里为了简单起见,不再指定为第 k 个样本。
接着计算倒数第二层即第 nl−1 层第 i 个神经元的残差:
上面是残差传播的示意图,从图中我们可以看出紧挨着的两层神经元之间的残差是有关系的,这也是反向传播的由来。更一般的,可以将上述关系表述为:
四、向量化表示
这里我们尝试将上述结果表示成向量或矩阵的形式,比如我们希望能一次性更新某一层神经元的权值和偏置,而不是一个一个的更新。
整个第 l+1 层神经元的残差是:
五、bp算法的求解步骤
1.进行前馈传导计算,利用前向传导公式,得到 L2,L3直到输出层Ln的激活值;
2.对输出层(第Ln层),计算:
3.对于 的各层,还算:
4.计算最终需要的偏导数值:
在2,3步计算中