后向传播学习的前馈型神经网络(BPNN)
BPNN基本思想
1.前馈型网络结构
在输入样本的时候,从输入层输入,向前把结果输出到第一隐含层,然后第一隐含层将接收到的数据处理后作为输出,该输出作为第二隐含层的输入,以此类推,直到输出层的输出为止。
2.向后传播
向后传播是指比较输出层的实际输出和预期的结果,得到误差,然后通过相关的误差方程式调整最后一个隐含层到输出层之间的网络权重,之后从最后一个隐含层向倒数第二隐含层进行误差反馈,调整它们之间的网络权重,以此类推,直到输入层与第一隐含层之间的网络权重调整为止。
BPNN算法流程
步骤1:初始化网络权重
每两个神经元之间的网络连接权重被初始化一个很小的随机数,同时每个神经元有一个偏置值,也被初始化为一个随机数。
对每个输入样本x,按照步骤2进行处理。
步骤2:向前传播输入(前馈型网络)
根据训练样本x提供网络的输入层,通过计算得到每个神经元的输出。
注:wij是由上一层的单元i到本单元j的网络权重;
Oi是上一层的单元i的输出;
A为 本单元的偏置,用来充当阈值,可以改变单元的活性。
从上面的公式可以看到,神经元j的输出取决于其总输人Sj=∑wij*Oi十Ai,然后通过激活函数Qj=1/(1+e^(-Sj))得到最终输出,这个激活函数称为logistic函数或者sigmoid函数,能够将较大的输入值映射为 区间0~1之间的一个值,由于该函数是非线性的和可微的,因此也使得BP神经网络算 法可以对线性不可分的分类问题进行建模,大大拓展了其应用范围。
步骤3:反向误差传播
由步骤2一路向前,最终在输出层得到实际输出,可以通过与预期输出相比较得到每个输出单元的误差:(Tj是输出单元的预期输出)
得到的误差需要从后往前传播,前一层单元的误差可以通过和它连接的后面一层的所有单元的误差计算所得:
依次得到最后一个隐含层到第一个隐含层每个神经元的误差。
步骤4:网络权重与神经元偏置调整
调整权重从输入层与第一隐含层的连接权重开始,依次向后进行,每个连接权重按以下公式进行调整:
注:其中l为学习率,通常取0~1之间的常数。(经验规则——将学习率设为迭代次数t的倒数,即1/t)
神经元偏置的调整方法是对每个神经元进行如下公式的更新:
步骤5:判断结束
对于每个样本,如果最终的输出误差小于可以接受的范围或迭代次数达到了一定的阈值,则选取下一个样本,转到步骤2重新继续执行;
否则,迭代次数加1,然后转向步骤2继续使用当前样本进行训练。