给初学者们讲解人工神经网络(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里的神经元的激发函数是加权和(输入的
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值