BP神经网络

Posted 桂。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.

以上是关于BP神经网络的主要内容,如果未能解决你的问题,请参考以下文章

bp神经网络算法介绍 bp神经网络算法简介

BP算法、BP神经网络、遗传算法、神经网络这四者之间的关系

BP神经网络

用Matlab算BP神经网络的具体算法?

关于BP神经网络出现的问题

Matlab BP神经网络预测错误,怎么办?