@evilking
2017-10-15T10:32:46.000000Z
字数 2724
阅读 1526
机器学习篇
神经网络是由具有 适应性 的 简单单元组成 的 广泛并行互连 的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应 ———— Kohonnen,1988
神经网络中最基本的成分是神经元(neuron)模型,即上述定义中的“简单单元”,在生物神经网络中每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质
人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型;神经网络由大量的人工神经元联结进行计算,大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统
现代神经网络是一种非线性统计性数据建模工具,常用来对输入和输出间复杂的关系进行建模,或用来探索数据的模式
物理结构:人工神经元将模拟生物神经元的功能
计算模拟:人脑的神经元有局部计算和存储的功能,通过连接构成一个系统。人工神经网络中也有大量有局部处理能力的神经元,也能够将信息进行大规模并行处理
存储与操作:人脑和人工神经网络都是通过神经元的连接强度来实现记忆存储功能,同时为概括、类比、推广提供有力的支持
训练:同人脑一样,人工神经网络将根据自己的结构特性,使用不同的训练、学习过程,自动从实践中获得相关知识
神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或函数的逼近,也可能是对一种逻辑策略的表达
M-P神经元模型 即为 [McCulloch and Pitts, 1943]将上述情形抽象为下图所示的简单模型。在这个模型中,神经元接收到来自 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将于神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出
理想中的激活函数是如下图(a)所示的阶跃函数,它将输入值映射为输出值“0”或“1”,显然“1”对应于神经元兴奋,“0”对应于神经元抑制。然而阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用 Sigmoid函数 作为激活函数。
典型的Sigmoid函数如下图(b)所示,它把可能在较大范围内变化的输入值挤压到(0,1)输出值范围内,因此有时也称为“挤压函数”(squashing function)
感知机(Perceptron)由两层神经元组成,如下图所示,输入层接收外界输入信号后传递给输出层,输出层是 M-P 神经元
感知机能容易地实现逻辑与、或、非运算。注意到 ,假定 是图中的阶跃函数,有
“与” : 令 ,则 ,仅在 时,
“或” : 令 ,则 ,当 或 时,
“非” : 令 ,则 ,当 时,;当 时,
更一般地,给定训练数据集,权重以及阈值 可通过学习得到。阈值 可看作一个固定输入为为 的“哑节点”(dummy node)所对应的连接权重 ,这样,权重和阈值的学习就可统一为权重的学习。感知机学习规则非常简单,对训练样例 ,若当前感知机的输出为 ,则感知机权重将这样调整:
需要注意的是,感知器只有输出层神经元进行激励函数处理,即只拥有一层功能神经元(functional neuron),其学习能力非常有限。事实上,上述与、或、非问题都是线性可分(linearly separable)的问题
可以证明,两类模式是线性可分的,即存在一个线性超平面能将它们分开
感知器只能对低维线性可分的数据集具有区分能力,对于在低维上非线性可分的数据集,感知器就无法区分,这时需要将低维空间映射到高维空间,在高维空间存在一个线性超平面能将它们分开。感知器属于线性变换,无法将低维映射到高维,这就是感知器无法区分低维非线性可分数据集的原因。所以我们需要考虑使用多层功能神经元,解决“异或”问题,能将低维映射到高维。
多层网络是感知器的输入层和输出层中间增加了隐含层,隐含层可能有多层,也可能只有一层,隐含层和输出层神经元都是拥有激活函数的功能神经元
常见的神经网络拓扑图如下:
每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feedforward neural networks)
其中输入层神经元接收外界输入,隐含层与输出层神经元对信号进行加工,最终由输出层神经元输出;也就是说输入层只负责数据的输入,是一个线性过程
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权值”(connection weight),以及每个功能神经元的阈值;也就是说,神经网络“学”到的东西都是储存在这些连接权值与阈值中
本篇介绍了人工神经网络的由来,介绍了神经网络的层级结构,介绍了神经网络为什么能具有这种非线性的分类能力
在后面的篇章中我们以具体的神经网络来详细讲解人工神经网络是如何学习以及如何分类的,并举例用R程序是如何来实现神经网络的