目录
1.BP神经网络的含义
BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。
2.BP神经网络结构与原理
2.1BP神经网络的结构
在神经网络中每一个节点的都与上一层的所有节点相连,称为全连接。神经网络的上一层输出的数据是下一层的输入数据。在图中的神经网络中,原始的输入数据,通过第一层隐含层的计算得出的输出数据,会传到第二层隐含层。而第二层的输出,又会作为输出层的输入数据。
对上图元素的解释:
2.2BP神经网络的原理
BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
3.BP神经网络的第一种实现
3.1前向计算
3.2随机梯度下降法
3.3小批量梯度下降法
3.4反向传播
3.5估值函数
运行结果如下:
4.BP 神经网络的改进和第二种实现
4.1.1 交叉熵代价函数
其中,x表示样本,n表示样本的总数。那么,重新计算参数w的梯度:
其中:
因此,w的梯度公式中原来的被消掉了;另外,该梯度公式中的
表示输出值与实际值之间的误差。所以,当误差越大,梯度就越大,参数w调整得越快,训练速度也就越快。同理可得,b的梯度为:
(1) 引入交叉熵代价函数目的是解决一些实例在刚开始训练时学习得非常慢的问题,其主要针对激活函数为 Sigmod 函数(2) 如果采用一种不会出现饱和状态的激活函数,那么可以继续使用误差平方和作为损失函数(3) 如果在输出神经元是 S 型神经元时,交叉熵一般都是更好的选择(4) 输出神经元是线性的那么二次代价函数不再会导致学习速度下降的问题。在此情形下,二次代价函数就是一种合适的选择(5) 交叉熵无法改善隐藏层中神经元发生的学习缓慢(6) 交叉熵损失函数只对网络输出 “ 明显背离预期 ” 时发生的学习缓慢有改善效果(7) 应用交叉熵损失并不能改善或避免神经元饱和, 而是当输出层神经元发生饱和时,能够避免其学习缓慢的问题。