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

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

所以在本篇文章中,我们就对最简单的前向网络(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来进行具体的算法实现。

时间: 2024-10-14 19:03:28

深度学习算法实践7---前向神经网络算法原理的相关文章

算法工程师耗尽心血终成TensorFlow深度学习应用实践,值得一学!

本篇总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力.全篇力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法.高级模型设计和对应的程序编写. 本篇强调理论联系实际,重点介绍TensorFlow编程解决图像识别的应用,提供了大量数据集,并以代码的形式实现了深度学习模型,以供读者参考. 本篇可作为学习人工神经网络.深度学习TensorFlow 程序设计以及图像处理等相关内容的程序设计人员学习.

《解析深度学习 语音识别实践》高清中文版PDF下载

<解析深度学习 语音识别实践>高清中文版PDF下载高清中文版PDF,全书321页带目录 下载链接:https://pan.baidu.com/s/1Ly4sdpNpcU_AwnwEVdBKLA备用链接:https://u1593575.ctfile.com/fs/1593575-330744495 本书首次专门讲述了如何将深度学习方法,特别是深度神经网络(DNN)技术应用于语音识别(ASR)领域.在过去的几年中,深度神经网络技术在语音识别领域的应用取得了前所未有的成功.这使得本书成为在深度神经

神经网络与深度学习笔记 Chapter 6之卷积神经网络

深度学习 Introducing convolutional networks:卷积神经网络介绍 卷积神经网络中有三个基本的概念:局部感受野(local receptive fields), 共享权重( shared weights), 混合( pooling). 与前面的神经网络不同,在这里我们用下图中的矩阵来表示输入神经元. 在cnn中,输入层的一个区域(例如,5 * 5)对应下一层隐含层中的一个神经元,这个区域就是一个局部感受野.如下图所示: 通过在输入矩阵中滑动局部感受野来对应隐含层中的

人脸识别---基于深度学习和稀疏表达的人脸识别算法

介绍 基于深度学习和稀疏表达的人脸识别算法 1 利用VGGFace提取人脸特征 2 PCA对人脸特征进行降维 3 稀疏表达的人脸匹配 Code 1 介绍 本文将介绍一种基于深度学习和稀疏表达的人脸识别算法.首先,利用深度学习框架(VGGFace)提取人脸特征:其次,利用PCA对提取的特征进行降维:最后,利用稀疏表达分类实现特征匹配.我采用CMC曲线评价在AR数据库上的识别性能.最后我还提供了整个过程的code. 2 基于深度学习和稀疏表达的人脸识别算法 2.1 利用VGGFace提取人脸特征 下

深度学习与计算机视觉系列(8)_神经网络训练与注意点

作者:寒小阳 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50521064 声明:版权所有,转载请联系作者并注明出处 1.训练 在前一节当中我们讨论了神经网络静态的部分:包括神经网络结构.神经元类型.数据部分.损失函数部分等.这个部分我们集中讲讲动态的部分,主要是训练的事情,集中在实际工程实践训练过程中要注意的一些点,如何找到最合适的参数. 1.1 关于梯度检验 之前的博文我们提到过,我们需要比对数值梯度和解析

TensorFlow深度学习应用实践

http://product.dangdang.com/25207334.html 内容 简 介 本书总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力.全书力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法.高级模型设计和对应的程序编写. 本书共22章,内容包括Python类库的安装和使用.TensorFlow基本数据结构和使用.TensorFlow数据集的创建与读取.人工神经网络.反馈神

免费领取16套深度学习权威实践课,从零基础小白到大牛

摘要:想学习人工智能却无从下手,听过两三遍网课还是不懂什么是卷积神经网络,好不容易啃完了视频却发现没源码没法调参跑代码,快来AI Studio课程!免费优质课程,系统化学习, 名师指导,提供真实开发案例,在线实训调参,提升学习效果,带你快速入行人工智能! 很多学习AI算法的人都很痛苦,尤其是希望进入大热的深度学习领域的你,是否遇到过以下囧境? 网上有大量的学习资料,质量参差不齐,且不知道知该从何学起: 听过两三遍网课,还是不懂什么是卷积神经网络: 好不容易啃完了视频却发现没源码,没法调参跑代码,

深度学习最佳实践

本文首发自公众号:RAIS,欢迎关注. 最佳实践,顾名思义,就是做某事的最佳方法,当然,这里的最佳一定是绝大多数情况,但又不是百分百的情况,我们不必纠结这个问题,我们需要记住的是下面这些方法在深度学习实践中是非常好的做法. 回调机制 如果你看到这里,我有理由认为你是一个懂得程序设计懂得编程的有一定开发经验的程序员,既然如此,你一定对回调不陌生,回调类似于一种观察者的设计模式,我交给你一个任务去执行,交代结束我就继续去做自己的工作了,你执行结束了,不管结果是好是坏,你都要把结果告诉我,这就是回调的

深度学习之五:使用GPU加速神经网络的训练

使用神经网络训练,一个最大的问题就是训练速度的问题,特别是对于深度学习而言,过多的参数会消耗很多的时间,在神经网络训练过程中,运算最多的是关于矩阵的运算,这个时候就正好用到了GPU,GPU本来是用来处理图形的,但是因为其处理矩阵计算的高效性就运用到了深度学习之中.Theano支持GPU编程,但是只是对英伟达的显卡支持,而且对于Python编程而言,修改一些代码就可以使用GPU来实现加速了. 一,首先需要安装GPU环境(说明:我开始按照官网步骤发生了错误,下面是我综合网上一些资料最后安装成功之后的

机器学习&amp;深度学习基础(tensorflow版本实现的算法概述0)

tensorflow集成和实现了各种机器学习基础的算法,可以直接调用. 监督学习 1)决策树(Decision Tree) 决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答yes和no问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择(选择yes还是no),直到所有选择都进行完毕,最终给出正确答案. 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题.剪