BP神经网络
作者:桂。
时间:2017-08-19 22:40:05
链接:http://www.cnblogs.com/xingshansi/p/7398396.html
前言
BP与RBF是分析基本神经网络的两个概念,最近接触到这些概念(目前的认识是:用在矩阵分析中减少计算量),简单梳理一下。
这里记录基本的BP神经网络,神经网络的基础是感知器,这里的BP(back propagation )算法是求解神经网络参数的一种实现思路。
一、算法简介
任何从输入到输出的连续函数都可以用一个三层非线性网络实现,条件是给出足够多的隐单元数。BP的基本结构:
包括输入单元、输出单元、中间的各个层次称为隐单元,上面的网络结构可以表述为:
其中f(.)是判别函数,因为优化通常涉及到求导,所以平滑性对梯度下降类学习方法很有效,通常f(.)选取连续易求导的判别函数,如sigmoid。
反向传播主要利用误差项(正是因为:根据误差项,建立准则函数,进行参数优化,而误差只能从输出计算,因而误差的计算顺序从后往前,也就是反向传播的概念,进而更新权重w。)。
由于涉及到梯度下降,因此针对参数求解的那一套改进这里也使用:如基于一阶导的随机梯度下降、批量梯度下降,基于二阶导的Newton-raphson等等。
二、BP的直观描述
A-结构图及映射关系
首先借助一篇讲义来直观描述BP的思想:
BP的结构图:
结构图对应的映射关系:
B-神经网络的计算步骤
神经网络在参数给定的情况下,计算依旧是从输入→输出的顺序。
第一层:
第二层:
第三层:
至此已经得到输出结果,可以根据训练数据的理想输出,计算误差(反向传播)。
C-误差反向传播
计算误差,开始反向传播:
反传至第二层:
反传至第一层:
至此完成了误差的反向传播,带入更新公式(也称为链式微分法则)。
D-利用BP更新权重的步骤
第一层:
第二层:
第三层:
B、C、D操作循环往复,直到满足迭代约束条件。
三、BP的参数推导及算法流程
A-理论推导
为了方便,直接copy原文的图:
对应网络层的加权组合成为het。
设定准则函数J,这里选取常用的最小方差:
1-隐层到输出层
核心思路还是梯度下降法更新参数,使用链式微分法则:
其中单元k的敏感度(sensitivity)定义为:
敏感度描述总误差怎样随着单元的激发而变化。
同样是链式法则(其实就是逐层推进):
而
从而计算出更新准则:
2-输入层到隐层
与上面的步骤类似:
后两项可以直接得出,主要是计算第一项求解,分析链式流程:J→z→net_k→y,从而有:
定义隐单元的敏感度:
从而得到学习规则:
至此,完成了整个网络的权重更新过程。
B-算法流程
这里给出两种基本的实现思路,一是基于随机梯度下降,二是基于批量梯度下降,更多求解思路可以参考梯度下降法的思路。
1-随机梯度下降
2-批量梯度下降
C-算法推广
BP的思路可以直接推广至:
- 输入单元包含偏置bias单元;
- 允许输入单元直接与输出单元和隐单元相连
- 网络多于三层
- 不同层有不同的非线性函数f(.)
- 每个单元有它各自的非线性函数f(.)
参考
- http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
- 《模式分类》第二版,p235~240.