前向神经网络算法原理

转载 2016年10月18日 12:00:18

总体上来讲,神经网络的算法是比较复杂的,后面有非常精妙的数学原理,而且对这些数学方法,还需要证明其具有收敛性,所以很多神经网络的书籍,绝大部分都是一些数学模型介绍、推导和证明,对于非数学专业的我们来说,感沉像看天书一样。其实神经网络的精髓是将现实中的问题进行抽象,建立适合神经网络表示的模型,然后应用神经网络进行处理,不断调整优化网络结构和参数,直到最终达到满意的效果。所以成功应用神经网络,不需要太过高深的数学基础。但是如果可以适当掌握神经网络背后的数学原理,对于我们理解参数的含义,选择合适的网络结构等都具有重要的意义。

所以在本篇文章中,我们就对最简单的前向网络(BP)网络进行一下数学上的描述,这基本上是神经网络最础的算法模型,对于理解其他深度学习算法,具有非常重要的基础作用,如果立志于深度学习领域的研发工作,理解BP网络是必须的。

我们首先从最简单的感知器模型说起,所谓感知器就是一个具有N维输入的神经元,同时具有一个偏移量bias,其处理是先对输入信号进行求合,然后进行一个非线性运算(神经元的激活函数),得出的值既为该神经元的输出,如下图所示:


神经元首先对输入信号进行求合运算:

 式7.1

然后经过非线性运算(神经元的激活函数),通常为Sigmal函数或Tanh函数,这里以Sigmal函数为例,但是实际应用中,经验表明双曲正切作为激活函数可能收敛更快,具有更好的性能。

 式7.2

该函数的图形为:


如上图所示,其值域为(0, 1),可以代表事件的出现概率等概念。

在这里,我们以讨论在线学习算法为主,即每经过一个学习样本,就对权值进行一次调整。与此对应的是,可以进行离线学习,就将所有训练样本都运行一次,然后统一调整一次权值。以及近代为了提高算法效率和适应性,采用了批量处理方式,既以某个批量如100个训练样本,运行一次,根据汇总误差,调整权值,然后进行下一个批次的学习,综合了在线学习和离线学习各自的优点。但是无论是在线学习、离线学习还是批量学习,算法框架都是一样的,所不同的只是对误差处理方式的不同。所以我们以最简单的在线学习为例进行讲解。

对于某个特定的训练样本n,输入到神经网络之后,会产生一个输出,而训练样本正确的输出应该为就是神经网络对第n个训练样本产生的误差,假设我们定义学习率为ℇ,则我们可以根据误差对相应的权值进行调整,可以将权值调整公式定义为:

 式7.3

上面的公式可以用于在线学习时权值调整公式,但是如果对每个训练样本都进行权值调整,可能出现由于不同样本的误差不同,而权值调整出现震荡的情况,使学习收敛速度变慢,因此实际中通常使用的是批量学习,下面我们来讨论批量学习。

如果我们定义所有训练样本数目为D,或者批量学习中批量的大小为D,则我们可以定义误差为:

 式7.4

如果对于激活函数为线性函数的神经元,例如只是原封不动地将输入信息之合输出,则很容易求出权值调整公式:

 式7.5

根据上面的误差定义公式,可以得到如下结论:

 式7.6


所以对于线性神经元来说,其权值调整计算公式为:

    式7.6.1

 式7.7

但是目前主流神经网络中,神经元都不是线性的,例如其为Sigmal函数,所以其权值求导公式需要用到链式求导公式,对式7.6而言,由于神经元激活函数不是线性的,所以式中就不等于了,我们只能根据链式求导公式:

 式7.8

由于式7.1 可知:

 式7.9

由于式7.2,则可以推导出:

 式7.10

代入7.6公式,可以得到如下公式:

 式7.11

 式7.12

以上就是感知器模型算法的推导过程,可以看出,只是简单的感知器模型,后面的数学原理也是非常复杂的。

我们在有了这些基础知识之后,我们就可以开始着手理解多层网络的BP算法了,在下一篇博文中,我们将具体讨论BP算法的推导过程。需要注意的是,我们在这里推导这些算法,并不意味着我们在实际算法实现中,要按照这些算法来编程序。因为我们如果按照这些理论来编程,我们自己无法对矩阵等算法进行优化,同时也无法利用GPU,总之我们自己的算法效率与Theano或TensorFlow相比,在效率上要低很多,所以我们还是要采用Theano来进行具体的算法实现。

相关文章推荐

前向型神经网络之BPNN(附源码)

神经网络 静态神经网络 BP算法 前向型神经网络 BPNN 人工神经网络 误差反向传播算法 Back Propagation 数据挖掘 机器学习...

神经网络(前向传播和反向传导)

谓神经网络就是将许多个单一“神经元”(图1)联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入,如图2所示。...
  • dcxhun3
  • dcxhun3
  • 2015年07月08日 14:57
  • 1443

神经网络中前向传播和反向传播解析

虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解,最近在看去年LeCun和Hinton在Nature上发表的deep learning的review,有两张图分...

深度学习算法实践7---前向神经网络算法原理

在本文中,我们对感知器模型的算法进行了推导,为我们对多层前馈网络(BP)的误差反向传播算法打下基础。...
  • Yt7589
  • Yt7589
  • 2016年08月22日 18:16
  • 3886

神经网络简介

最近在研究Deep Learning在个性化推荐中的应用,由于DL跟神经网络有很大的关系,索性开篇就介绍下神经网络和自己所了解到的知识。接触ML时间不是很长,难免有描述不当的地方,旨在于交流学习,有啥...
  • coolluyu
  • coolluyu
  • 2013年06月06日 13:31
  • 12854

BP神经网络后向传播原理

BP神经网络后向传播原理    在BP神经网络中,最难理解也是最为重要的部分就是BP后向传播中风险函数J对各神经线上的权的偏导数的求解。然而,吃透这部分内容对于真正理解BP神经网络是至关重要的。 ...

前向型神经网络之BPNN(附源码)

人工神经网课的大作业~~转自http://blog.csdn.net/heyongluoyao8/article/details/48213345 BPNN 人工神经网络   我们知...
  • shulixu
  • shulixu
  • 2016年10月23日 21:18
  • 1116

漫步微积分二十六——Sigma符号和一些特殊和

为了理清定积分,我们首先介绍一个标准的数学符号,它用于缩写长的求和公式。这就所谓sigma符号,用希腊字母Σ\Sigma表示。在希腊字母表中,字母Σ\Sigma对应于英语字母的SS,也就是sum的第一...

神经网络中的前向和后向算法

最近深度学习的研究在学界火的一塌糊涂,大老板终于也下定决心组织实验室开展相关研究了,何况实验室的主流方向是做成像的,不做点这方面的研究感觉说不过去。研究生小朋友们刚进来还得看视觉方面的东西,博三博四的...

深入浅出BP神经网络算法的原理

相信每位刚接触神经网络的时候都会先碰到BP算法的问题,如何形象快速地理解BP神经网络就是我们学习的高级乐趣了(画外音:乐趣?你在跟我谈乐趣?) 本篇博文就是要简单粗暴地帮助各位童鞋快速入门采取BP算法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:前向神经网络算法原理
举报原因:
原因补充:

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