BP神经网络
1.基本概念
BP (Back Propagation) 神经网络是1986年由 Rumelhart 和 McClelland 为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。
2.BP神经感知器网络
感知器(Perceptron)网络是早期仿生学研究的成果,在1950s由 Frank Rosenblatt 第一次引入,是一种神经网络模型。
感知器即当输入的活动超过一定的内部阈值时,神经元被激活,当输入具有一定的特点时,出发速率也增加。
输入节点:x1,x2,x3…
权重:w1,w2,w3…
偏置:b
激活函数:f
输出节点:output
3.BP神经网络的组成结构和传递规则
BP神经网络是一种典型的非线性算法。
BP神经网络由 输入层、隐含层(也称中间层)和 输出层 构成 ,其中隐含层有一层或者多层。每一层可以有若干个节点。层与层之间节点的连接状态通过 权重 来体现。
只有一个隐含层:传统的浅层神经网络;有多个隐含层:深度学习的神经网络。
*此图为含多个隐含层的神经网络
4.BP神经网络的核心步骤
*实线表示正向传播
*虚线表示逆向传播
正向传播:
从输入样本开始,将输入数据乘以权重得到输出。每一个节点的输出数据将作为下一个节点的输入数据,不断进行推进得到最终输出结果。
逆向传播:
每一次正向传播得到的输出结果与期望结果进行误差比较。若误差小于比较参数,就达到预期结果,则结束循环;若误差大于比较参数,则利用梯度下降方法得到新的权重(从输出层到各个隐藏层到输入层,依次更新权值),返回输入初始数据,重新开始迭代。
5.更新权重和偏置的方法以及公式推导
此处神经网络的激活函数统一用sigmoid函数
即加粗样式
更新权重和偏置还是利用梯度下降的算法
注:f(x)表示算出的值,y为期望达到的值,n为样本个数
- 首先利用损失函数求出误差
- 再通过梯度下降算法更新上一层所有神经元的权重和偏置,直到输入层为止。
实例演示:
-
对激活函数求导得
-
不妨设实际输出为y1和y2,这里使用最小均方误差表示:
-
l表示l-1层传到l层的权重,i表示l-1层所对应的神经元,j表示l层的神经元;b{l}:l表示l-1层传到l层的偏置项;I_{k}{l}第l层尚未使用激活函数的第k个神经元;O_{k}^{l}第l层已使用激活函数的第k个神经元;n_{l}第l层神经元的个数。以第l层传到第l+1层为例:
-
使用梯度下降法更新参数
对偏置项b^{l},更新公式为:
由梯度下降法的公式可以看出实际就是求出最小均方误差对参数的偏导。这里以
为例。
- 对
只跟第5层神经网络的第1个神经元有关,既有:
由链式求导法则得:
对
跟第5层的所有神经元有关,跟第4层第1个神经元有关,既有:
由链式求导法则得:
对上式中E对
的偏导这里单独进行讨论,
又因为:
故:
对
跟第3层的第1个神经元,第4层所有神经元有关,第5层第所有神经元有关,既有:
由链式求导法则得:
对上式中E对O_{1}^{3}的偏导这里单独进行讨论
又因为:
故:
公式太长了,这里就推到由第2层到第3层的参数W_{11}^{3}。
规律总结:
对输出层即第5层:
对第4层:
对第3层:
同理可得对第2层 :
综上可得:
对输出层有:
对非输出层有:
所以权重更新公式为:
同理可得偏置项的更新公式为: