传统神经网络ANN训练算法总结

原创 2013年12月05日 12:22:07

学习/训练算法分类   

  神经网络类型的不同,对应了不同类型的训练/学习算法。因而根据神经网络的分类,总结起来,传统神经网络的学习算法也可以主要分为以下三类:

   1)前馈型神经网络学习算法-----(前馈型神经网络)

   2)反馈型神经网络学习算法------(反馈型神经网络)

   3)自组织神经网络学习算法------(自组织神经网络)

      以下我们将通过三类典型的神经网络模型分别阐述这三类不同的学习算法其区别与相似点。

     虽然针对不同的网络模型,这里产生了三类不同类型的训练算法,但是总结起来,这三类训练算法都可以归属到两种类型的机器训练方法中,即监督型学习算法和非监督型

学习算法。在20-30年的神经网络学习算法研究过程中,科学家往往都通过将监督型学习算法和非监督型学习算法进行单独或混合使用,提出并构建出了不同类型的训练算法及

其改进算法。因而总结起来现今的神经网络训练算法都可以归类到监督型学习算法和非监督型学习算法中,这在后续讲解的Deep Learning中的DBNs网络学习中也会体现出

来。当然目前也提出一种半监督学习方法,其定义为。

       半监督学习(Semi-supervised Learning)是模式识别和机器学习领域研究的重点问题,是监督学习与无监督学习相结合的一种学习方法。它主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。半监督学习对于减少标注代价,提高学习机器性能具有非常重大的实际意义。

        半监督学习是监督学习算法和非监督学习算法的结合体,可以认为是两种方法的结合型算法,其根源也归属为两类本质的学习算法,因而也逃不脱监督学习和非监督学习领域圈,这里我们就不再进一步深入讨论半监督学习算法了。  

在以下传统神经网络训练算法的总结中我们也将具体指明具体的训练算法和监督型学习算法和非监督型学习算法的关系。

BP神经网络训练算法

     以下我们分析BP神经网络学习过程。其学习算法基本步骤可以归纳如下:

   1、初始化网络权值和神经元的阈值(最简单的办法就是随机初始化)

   2、前向传播:按照公式一层一层的计算隐层神经元和输出层神经元的输入和输出。

   3、后向传播:根据公式修正权值和阈值

   直到满足终止条件。

    算法通过一定的判定函数,对前向传播结果进行判定,并通过后向传播过程对网络参数进行修正,起到监督学习的作用,因而传统的BP经网络训练过程可以归纳为一类典型的监督学习过程。

      BP是后向传播的英文缩写,那么传播对象是什么?传播的目的是什么?传播的方式是后向,可这又是什么意思呢。

传播的对象是误差,传播的目的是得到所有层的估计误差,后向是说由后层误差推导前层误差:

      即BP的思想可以总结为

    利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获得了所有其他各层的误差估计。 
  • “BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)”

我们来看一个最简单的三层BP:


  • “BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。”

BP利用一种称为激活函数来描述层与层输出之间的关系,从而模拟各层神经元之间的交互反应。

激活函数必须满足处处可导的条件。那么比较常用的是一种称为S型函数的激活函数:


那么上面的函数为什么称为是S型函数呢:

我们来看它的形态和它导数的形态:

p.s. S型函数的导数:


神经网络的学习目的:

希望能够学习到一个模型,能够对输入输出一个我们期望的输出。
 
学习的方式:
在外界输入样本的刺激下不断改变网络的连接权值
 
学习的本质:
对各连接权值的动态调整

学习的核心:

权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。

二,有监督的BP模型训练过程

1. 思想

有监督的BP模型训练表示我们有一个训练集,它包括了: input X 和它被期望拥有的输出 output Y

所以对于当前的一个BP模型,我们能够获得它针对于训练集的误差

所以BP的核心思想就是:将输出误差以某种形式通过隐层向输入层逐层反传,这里的某种形式其实就是:


也就是一种 "信号的正向传播 ----> 误差的反向传播"的过程:


2.具体










这里解释下根据误差对权值的偏导数来修订权值:



References

http://www.360doc.com/content/13/1217/13/9282836_337854682.shtml


相关文章推荐

训练神经网络的五大算法

训练神经网络的五大算法
  • x_r_su
  • x_r_su
  • 2016年11月05日 12:10
  • 2651

给初学者们讲解人工神经网络(ANN)

1.介绍 这份教学包
  • tdkcs
  • tdkcs
  • 2014年06月09日 22:43
  • 9720

Opencv中ANN神经网络使用示例

前一段儿想用opencv做一下数字识别,用神经网络做识别。 在网上搜了一下关于opencv中ANN的使用方法,@小魏的修行路 的【模式识别】OpenCV中使用神经网络 CvANN_MLP 这篇文章写...

Deep learning 与传统的神经网络的区别

Deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展。 Deep learning与传统的神经网络之间有相同的地方也有很多不同...

使用Python实现网格索引

网格索引就是在一个地图图层上,按每个小网格宽△w,高△h打上均匀的格网,计算每个图元所占据的网格或者所经过的网格单元集合。这篇文章主要是我在查找网格索引算法的时候,看到一位仁兄在csdn发表的文章ht...

PYTHON--一些函数

1. numpy.c_[] 和np.r_[]可视为兄弟函数,两者的功能为np.r_[]添加行,np.c_[]添加列。 a1 = np.array([[1, 2, 3], [4, 5, 6]]) b...

人工神经网络(ANN)及BP算法

1 什么是神经网络1.1 基本结构 说明: 通常一个神经网络由一个input layer,多个hidden layer和一个output layer构成。 图中圆圈可以视为一个神经元(又可以称为感...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:传统神经网络ANN训练算法总结
举报原因:
原因补充:

(最多只允许输入30个字)