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

1. 介绍

这份教学包是针对那些对人工神经网络(ANN)没有接触过、基本上完全不懂的一批人做的一个简短入门级的介绍。我们首先简要的引入网络模型,然后才开始讲解ANN的相关术语。作为一个应用的案例,我们解释了后向传播算法,毕竟这一算法已经得到广泛应用并且许多别的算法也是从它继承而来的。

读者应该已经了解线性代数相关知识,也能解决一些函数和向量问题,如果掌握微积分知识更好但不是必须的。这份教学包的内容对一名高中毕业生来讲就已经能理解了。同时,对那些对ANN感兴趣或者想加深理解的人来说也是很有益处的。因此如果读者能全部看完这边教学包,应该对ANN的概念有个清楚的理解。另外对那些想运用后向传播算法但又对晦涩难懂的公式细节不想深入理解的读者来讲,这份教学包你选对了!这份包不应看做是网络上的科普读物,但也不是一篇枯燥的研究论文。为了简洁许多公式都删除了,具体细节的解释和演示在后面的参考书目里,读者可以深入学习。书中的练习章节是用来测试读者对理论知识的掌握程度的。作为对教学包的补充,列出了一些在线资源供读者网上学习。

2. 网络

复杂问题的有效解决方法就是“分而治之”。为了理解的目的,可以把复杂系统分解成一些简单的元素。同样,简单的元素也可集成为复杂系统[Bar Yam, 1997]。网络就是一种可以达到这种目的的方法。虽然网络的类型成千上万,但网络的基本元素是固定的:一系列的结点和连接结点之间的线。

这些点可以看做是运算单元。它们接受输入、处理输入、获得输出。有些处理过程可能就像计算输入总和这么简单,也有些可能会复杂一点,比如一个结点可能嵌入了另一个网络。

结点之间的连线决定了结点之间的信息流动。它们可能是单向的,连线的两个结点只能单向流动,也有可能是双向的,连线上的两个结点是相互流动的。

各结点通过连线相互交互产生了全局网络行为,这种行为只通过网络的基本元素是不可能观察到的,称这全局行为是“新显”。也就是说,紧随着网络元素而来的网络能力使网络成为了一个强大有效的工具。

物理学、计算机科学、生物化学、行为学、数学、社会学、经济学、电信和许多别的领域网络已经被应用于建立基于各自领域的模型。这是因为许多系统本身就可以看做是一个网络,比如:蛋白质、计算机、通讯等等。想想还有哪些别的系统也可以看做网络?为什么?

3. 人工神经网络

有一种类型网络把各个结点看做是“人工神经元”,这种网络就叫做“人工神经网络”(Artificial Neural Networks)。人工神经元就是受自然神经元静息和动作电位的产生机制启发而建立的一个运算模型。神经元通过位于细胞膜或树突上的突触接受信号。当接受到的信号足够大时(超过某个门限值),神经元被激活然后通过轴突发射信号,发射的信号也许被另一个突触接受,并且可能激活别的神经元。

自然的神经元

人工神经元模型已经把自然神经元的复杂性进行了高度抽象的符号性概括。神经元模型基本上包括多个输入(类似突触),这些输入分别被不同的权值相乘(收到的信号强度不同),然后被一个数学函数用来计算决定是否激发神经元。还有一个函数(也许是不变,就是复制)计算人工神经元的输出(有时依赖于某个门限)。人工神经网络把这些人工神经元融合一起用于处理信息。

人工神经网络

权值越大表示输入的信号对神经元影响越大。权值可以为负值,意味着输入信号收到了抑制。权值不同那么神经元的计算也不同。通过调整权值可以得到固定输入下需要的输出值。但是当ANN是由成百上千的神经元组成时,手工计算这些权值会变得异常复杂。这时就需要一些算法技巧。调整权重的过程称为“学习”或者“训练”。

ANN的类型和使用方式也有很多种。从McCulloch和Pitts(1943)建立第一个神经元模型起,已经产生了几百个不同的也被称为ANN的模型。这些模型之间的不同 也许是功能不同、也许是接受值和拓扑结构不同、也许是学习算法不同等等。同时也有一些混合模型,这些模型里的神经元有更多在上文中没有提到的属性。由于文章篇幅的原因,我们只讲解使用后向传播算法学习的ANN(Rumelhart and McClelland,1986)来学习合适的权值,这种ANN是所有ANNs里最通用的模型,并且许多模型都是基于它的。

由于ANNs是用来处理信息的,自然它被应用在与信息相关的领域。有许多的ANNs就是对真实神经元网络进行建模,用来研究动物和机器的行为与控制,但是也有许多是用于工程的,比如:模式识别、预测、数据压缩。

3.1 练习

这个练习的目的是熟悉人工神经网络的概念。建立一个包含四个人工神经元的网络。在网络中两个充当接受信号的输入端,另外两个充当发射信号的输出端。

每一个箭头都有一个权值代表信息流的强度,这些值和通过箭头的信号值相乘表示对信号的增强和衰减,这个网络上的神经元只是简单的把所有输入到该神经元的信号求和。由于这里的输入神经元上只有一个输入值,因此这个神经元的输出也只是输入的权值与输入的信号相乘的结果。如果权值是负值会发生什么?如果是零呢?

处于输出层的每个神经元都接受到了来至输入层神经元的输出信号,这些输出层神经元把收到的信号乘以各自的权值再求和作为自身的输出。输出信号再被权值相乘作为整个网络的输出。

现在把这些权值全都置为1,意味着信息流上的信号不会收到影响。请分别计算在下列不同输入的条件下网络的输出是什么?输入值:(1,1),(1,0),(0,1),(0,0),(-1,1),(-1,-1)。

很好,现在在(0.5,0,-0.5)中选择权值并且随机放在网络的任意权值处。输入值和上面的一样,请计算输出值。改变一些权值,看看网络的行为发生了怎样的变化。哪些权值具有举足轻重的作用(也就是说改变这个权重值,网络的输出会发生较大变化)?

现在假如我们需要这样的一个网络,它可以把输入值的顺序进行调换(例如(0.3,0.7)->(0.7,0.3))。试一下怎么设置权值?

这很简单的。还有一个简单的网络只是把输入加倍输出。你也可以试一试。

现在,给神经元设置门限值。神经元之前的输出值如果大于神经元的门限值,这个神经元的输出值就为1,否则为0。对现存的网络设置门限,看看这些网络的行为发生了什么改变。

现在,假设我们有这样的网络,输入层神经元只接受0和1。调整权值和门限使网络的第一个输出值是网络输入的“逻辑与”运算(输入值都为1时输出值才为1,否则为0),使网络第二个输出的值是网络输出的“逻辑或”运算(输入值都为0时输出值才为0,否则为1)。你会发现满足此种要求的网络不止一种。

现在,虽然调整这么小的网络的权值轻而易举,但是这个网络具有的能力也是渺小的。如果我们需要一个包含上百个神经元的网络,为得到需要的输出值你怎么调整这些权值?有许多种方法可以使用,我们将探索最通用的一种。

4. 后向传播算法

后向传播算法(Rumelhart and McClelland,1986)是应用在分层前馈式ANN上的一种算法。这就意味着人工神经元是根据不同层次来组织划分的,并且是通过前向方式发送信号的,然后把错误率通过反馈方式传播给后向上的神经元。网络通过位于输入层(input layer)的神经元收集输入信号,网络的输出值是通过位于输出层(output)的神经元给出的。可能存在一层或者多层的中间隐藏层(hidden layers)。后向传播算法使用监督学习,也就是说我们给这个算法提供了输入值和本来想让计算的输出值,然后计算出误差(真实值和计算值之间的误差)。后向传播算法的思想就在于学习完训练样本后误差要尽量的小。训练是以权值为任意值开始的,目的就是不停的调整权值,使误差最小。

实现后向传播算法的ANN里的神经元的激发函数是加权和(输入的与各自的权值相乘后的和):

 

 

可以看出激活函数只与输入值和权值有关

如果输出函数不变(输出等于激活函数),称神经元是线性的。但是这有严重的局限性。最通用的输出函数是S型函数:

 

 

S型函数是这样的函数:对于大的正数变量,函数的值渐渐趋近与1,对于大的负数变量,函数的值渐渐趋于0,在零点,函数的值为0.5。这就给神经元输出的高低值有一个平稳的过度(接近于1或接近于0)。我们发现输出只和激活函数有关,而激活函数又与输入值和对应的权值有关。

现在,训练的目标就变成了给定输入值得到希望的输出值。既然误差是真实输出值与希望输出值的差值,并且误差依赖于权值,我们需要调整权值来最小化误差。我们可以为每个神经元的输出定义一个误差函数:

 

 

我们把输出值与希望值的差做了平方,这样可以保证误差值都为正,因为差别越大误差值也越大,差别越小误差值也越小。网络的误差值就是简单的把所有在输出层上神经元的误差求和:

 

 

后向传播算法现在计算误差是怎么随着输出值、输入值和权重而变化的。我们理解了这些,就可以通过梯度下降法来调整权值了:

 

 

上面的公式可以按照下面的思路来理解:每个调整的值将会根据上次调整后权重与网络误差的依赖程度进行调整,这种依赖程度是关于的导数。每次调整的步长还依赖于。也就是说对误差影响大的权值相比于影响小的,每次调整的值也比较大。公式(5)循环计算直到找到满意的权值才停止(误差很小了)。如果你对导数不理解,没关系,你可以把它看着一个函数,并且在下文我将立即用线性代数来代替。如果你理解了,请自己写出来然后和我这儿的做个比较。如果你还想详细的理解关于后向传播算法的推导过程,你可以根据我后面的推荐书籍进行查找,毕竟这已经超出了这份材料的范围。

所以,我们只须求得关于的导数。这就是后向传播算法的目标,我们需要得到这个反馈。首先,我们需要计算输出值是怎么影响误差的,它是关于的导数(来自公式(3))。

 

 

然后计算激活函数是怎么影响输出的,其次是权值怎么影响激活函数的(来自公式(1)和(2)):

 

 

继续推导(来自公式(6)和(7)):

 

 

因此,对于每个权值做如下调整(来自公式(5)和(8)):

 

 

我们可以使用公式(9)来训练含有两层的ANN。现在我们想训练再多一层的网络还要考虑许多。如果我们想调整前面一层的权重(我们把它记为)。我们首先需要计算误差是怎么依赖于来自上层的输入的,而和权值无关。这很简单,我们只须把公式(7),(8),(9)里的代替。但是也需要知道网路的误差是怎么随而变化的。因此:

 

 

这里:

 

 

另外,假设有输入值为、权重为的信号进入神经元(来自公式(7)):

 

 

如果我们还想增加一层,用同样的方法计算误差是怎么随第一层的输入和权值而变化的。我们只须对这些牵引稍加注意,毕竟每层的神经元个数是不一样的,不能混淆。

对于实践推理来说,实现后向传播算法的ANNs不能有太多的层,因为花在计算上的时间是随层数指数级别上升的。同时,还有许多具有更快学习速度的改进算法。

4.1 练习

如果你懂得编程,实现这个后向传播算法,至少能用来训练下面的网络。要是你能实现后向传播的通用算法(随意几层、每层有任意个神经元、任意个训练序列),好好干吧。

如果你还不懂得编程,但是知道运用一些辅助工具(比如Matlab或者Mathematica),那么应用里面定义好的函数找到下面网络的合适的权值吧,这些函数能让你的工作变得轻松一点。

再如果你一点电脑经验都没有的话,还是通过手一步一步的算吧。

这里的网络在输入层有三个神经元,隐藏层有两个,输出层有三个。一般情况下训练序列是很大的,但在这个练习里,我们只用一个训练序列。当输入为(1,0.25,-0.5)时,输出应该为(1,-1,0)。记住,你应该以随机的权值开始训练。

5. 进一步阅读

以下都是深入理解ANNs的大作:

  • Rojas, R. (1966). Neural Networks: A systematical Introduction. Springer, Berlin.
  • Rumelhart, D. and J. McClelland (1986). Parallel Distributed Processing. MIT Press, Cambridge, Mass.

关于网络方面的进一步资料和相关主题,这些书很有帮助且图文并茂:

  • Bar-Yam, Y. (1997). Dynamics of Complex Systems,Addison-Wesley.
  • Kauffman, S. (1993). Origins of Order, Oxford University Press.

6. 在线资源

网络上有大量的关于神经网络的资源。EPFL基于Java applets开发的卓越案例和指导手册。别的两个教程是Universidad Politécnica de Madrid和伦敦科学、技术、医学的帝国理工学院。另外作者自己一些关于神经网络编程方面的Java代码。

7. 参考书目

  • Bar-Yam, Y. (1997). Dynamics of Complex Systems. Addison-Wesley.
  • Kauffman, S. (1993). Origins of Order, Oxford University Press.
  • McCulloch, W. and W. Pitts (1943). A Logical Calculus of the Ideas Immanent in Nervous Activity.Bulletin of Mathematical Biophysics, Vol. 5, pp. 115-133.
  • Rojas, R. (1996). Neural Networks: A Systematic Introduction. Springer, Berlin.
  • Rumelhart, D. and J. McClelland (1986). Parallel Distributed Processing. MIT Press, Cambridge,
  • Mass.Young, D.Formal Computational Skills Course Notes. 

//

转载:https://blog.csdn.net/tdkcs/article/details/29561511

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最后一场「屏之争」:汽车大佬与硅谷巨头的贴身肉搏

作者 | Tim Higgins 、William Boston来源:机器之能编译摘要:安卓的跨平台生态系统允许用户在手机和车机等不同屏幕上访问他们的数字生活,在去年,它帮助谷歌获得了 820 亿美元的移动广告收入。但在大众 CEO 赫伯特迪斯&#xff08…

对网络体系变革的思考

来源::中兴摘要:互联网已走过了50年,其发展远远超越了初衷,各类新业务与应用加大了网络体系变革的压力,对网络体系颠覆性的探索和演进创新一直在进行。近年来关于5G网络体系的演进方向逐渐明朗,…

Junit 内部解密之一: Test + TestCase + TestSuite

转自:http://blog.sina.com.cn/s/blog_6cf812be0100wbhq.html nterface: Test 整个测试的的基础接口 Method 1: abstract int countTestCases() 这个方法主要是用来计算要运行的test case的数量的。 Method 2:abstract void run(TestResult result) 这个方法主要是…

数据预测之BP神经网络具体应用以及matlab实现

1.具体应用实例。根据表2,预测序号15的跳高成绩。 表2 国内男子跳高运动员各项素质指标 序号 跳高成绩() 30行进跑(s) 立定三级跳远() 助跑摸高() 助跑4—6步跳高() 负重深蹲杠铃() 杠铃半蹲系数 100 (s) 抓举 () 1 2.24 3.2 9.6 3.45 2.15 1…

谷歌机器人业务重组 花里胡哨没有用 要做实干家

来源: medium 编译 | 网易智能 (乐邦)在机器人领域,谷歌一直都不怎么顺利,尽管在前些年它大举进军,完成了多宗相关的并购交易。最近该公司重组成立Robotics at Google实验室,这对于机器人和智能机器的发展来说是一大步…

BP神经网络识别手写数字项目解析及matlab实现

BP神经网络指传统的人工神经网络,相比于卷积神经网络(CNN)来说要简单些。 人工神经网络具有复杂模式和进行联想、推理记忆的功能, 它是解决某些传统方法所无法解决的问题的有力工具。目前, 它日益受到重视, 同时其他学科的发展, 为其提供了更大的机会。1986 年, Rom…

智能家居市场年增速近30%!苹果看齐亚马逊、谷歌,欲开辟三足鼎立

来源:物联网智库整理摘要:作为世界领先的科技巨头,亚马逊、谷歌和苹果相爱相杀许多年。在智能家居领域,三家的“战争”也会随着市场的成熟而更加激烈。尽管苹果目前稍显落后,但未来市场广阔谁主沉浮仍未可知。近日&…

简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗

UITableView索引功能是常见的,主要是获取中英文的首字母并排序,系统自带获取首字母 //系统获取首字母 - (NSString *) pinyinFirstLetter:(NSString*)sourceString {NSMutableString *source [sourceString mutableCopy];CFStringTransform((__bridge CFMutableStr…

matlab——图像细化

所谓细化,就是从原来的图像中去掉一些点,但仍要保持原来的形状。 1、代码如下: close all;clear all;clc; %关闭所有图形窗口,清除工作空间所有变量,清空命令行 I1imread(circles.png); subplot(1,3,1),imshow(I1);…

中国60家最强汽车初创在此!芯片厂高调入局,智能网联强势霸榜

来源:智东西摘要:中国汽车科技最全地图!2018年,知名市场研究机构毕马威再次设立了中国汽车科技领先企业50强和新锐企业10强榜单评选,并在近日公布了结果。备选企业包括在智能网联、汽车后市场服务、汽车制造技术、出行…

专设AI周会 高管悉数到场 微软CEO有多重视人工智能?

来源:CNBC 翻译 | 网易智能 (天门山)据CNBC报道,一般在每周的周四,微软首席执行官萨蒂亚纳德拉(Satya Nadella)和微软高管团队都要在一起开会,讨论该公司越来越多的人工智能(AI)项目。微软首席技术官凯文斯…

汽车电子:下一个苹果产业链

来源:安信证券摘要:本文将从“7个层级深度解析”这次产业发展红利带来巨大且丰富的投资机遇。汽车电子产业,预计将是继家电、PC和手机之后又一次全产业链级别的大发展机遇,不同的是:1. 其构成产品附加值更高(高稳定/高…

模块化开发之sea.js实现原理总结

seajs官网说:seajs是一个模块加载器,所以学习它并不难。 在我的理解就是:本来我们是需要手动创建 script标签 引入 js文件的,但用seajs后,它就自动帮我们完成这些工作。 这里只说实现原理,具体使用请看seaj…

【干货】百度联合清华大学发布国内首个基于AI实践的《产业智能化白皮书》(附报告全文)...

来源:百度AI在4月9日举行的“百度大学 Alpha 学院首期学员毕业典礼”上,百度联合清华大学发布国内首个基于 AI 实践的行业重磅报告,《产业智能化白皮书——人工智能产业化发展地形初现端倪》。这是国内首次从产业演进的视角探讨 AI 与产业融合…

全球语种谱系图,看看机器翻译需要跨越的大山

来源:语言春秋编辑 | 北外新闻中心 杨丹蕊摘要:当前机器翻译技术可以分成两类,一种是 Rich Resource NMT,也就是双语语料丰富的语言对(比如中文 - 英文);另一种叫 Low Resource NMT&#xff0c…

Big Data Security Part One: Introducing PacketPig

Series Introduction Packetloop CTO Michael Baker (cloudjunky) made a big splash when he presented ‘Finding Needles in Haystacks (the Size of Countries)‘ at Blackhat Europe earlier this year. The paper outlines a toolkit based onApache Pig, Packetpig pack…

美国科学家成功恢复老年人工作记忆,望奠定认知干预疗法基础

来源:科技日报伴随着人体衰老,大脑对信息加工和贮存的能力也必然会下降,但如果这种能力可以被逆转呢?据英国《Nature Neuroscience》杂志8日在线发表的一项研究,美国科学家通过同步脑区节律——按特定节律刺激颞叶和额…

广告机市场和产品

广告机行业分析 前言 关于广告机,不同的人有不同的认识,此部分主要说明文中所指广告机的范围。 在讨论前,先区分几个概念。 1、 广告机与数字标牌 数字标牌是数字标示牌的简称,指代显示任意信息的显示终端;广告机是指…

《工业大数据白皮书》2019版正式发布

来源:悟空智能科技近日,由中国电子技术标准化研究院、全国信息技术标准化技术委员会大数据标准工作组主编,工业大数据产业应用联盟联合主编,联想集团等多家联盟成员企业参编的《工业大数据白皮书(2019版)》…

产品金字塔

制造业产品大概可以分为三个层次,第一层为实物,第二层为服务,第三层为体验。其中产品为基础,服务为改善,共同给客户美好的体验。三者组成一个产品金字塔。第一层,实物。比如手机,满足通话、上网…