目录
1.前置知识(感知机)
感知机是神经网络(深度学习)的起源算法,相当于神经网络的神经元,其利用多个输入值各自的权重和利用激活函数得出最早输出。
2.BP神经网络介绍
BP(BackPropagation反向传播)神经网络是深度学习重要算法之一,其反复利用误差的反向传播修改权重值最终使前向传播计算值与预期值误差在一定阈值内。BP神经网络主要包含信号的前向传播以及误差的反向传播。
信号的正向传播:获取的信号(输入)通过多层隐含层计算后(每一层包含多个感知机)将信号传到输出层。
误差的反向传播:当正向传播得到的输出值与预期值误差超过阈值,误差就通过梯度下降法反向传播修改各层权值
下图第一层输入,第二次隐含层,第三层输出层,最后一行为偏置项(控制感知机可激活容易程度)。如果隐含层神经元过少可能不收敛,过多造成浪费计算资源和时间且普适性降低。
隐含层神经元可通过输入与输出和的开方加1-9其中一个整数计算得出,最后加的数字有相关算法。
第二层与第三层感知机的激活函数一般用sigmoid函数( 1 /(1+ e^( -x ) ) ),让极端数据变得普通并且不改变多个值的大小关系。
3.BP神经网络推导
数据都进行过修改
隐含层与输出层都相当于一层感知机,每个神经元都有自己的输入,经过各自权重和后的net以及经过激活函数计算后的out。
3.1.正向传播
3.1.1.输入层到隐含层
net与out在上方有计算方法
3.1.2.隐含层到输出层
输出层输出的out与预定值差别较大,进行误差的反向传播
3.2.反向传播
3.2.1.计算总误差
这里采用的是均方差的方式,更容易找到梯度下降的方向,也可以避免函数无法求导的情况(函数图像出现拐角而不是平滑的)
3.2.2.隐含层到输出层权值的更新
确立每个步骤计算公式,这里利用的是梯度下降的方法,找到误差与w5自变量间最快的下降的方向。实际计算利用的是链式法则求偏导。
计算出总误差对各个权重值的偏导
计算更新后的权重值,在上面第二个图第一行有公式,原来权重-学习率*权重偏导,这里学习率选用0.5,学习率太大会在最优值附近徘徊,太小会收敛缓慢,浪费很多时间。
3.2.3.隐含层到隐含层权值的更新
与上面隐含层到输出层不同的是,隐含层到隐含层out(h1)会受到E(o1)与E(o2)的影响。
上面是列的计算的大概框架的式子,很多在第一步隐含层到输出层里都有对应详细的偏导求出的简式,没出现过的也有类似的如激活函数求导是out与net间的偏导,而后一层的net与前一层的out的偏导是对应两层各神经元连线的权值。
详细式子,把分开的写在一个式子中,方便查看,四个偏导还是很有规律的,里面重复部分很多,带入之前求的相关参数即可求出相应偏导(里面有的偏导需要自己推,但和隐含层到输出层偏导所求类型类似)。
最后更新权值与之前更新权值类似。
可以通过设置训练次数或者损失函数所得结果阈值停止训练。