神经网络与深度学习:神经元模型、感知机与多层网络
神经网络是人工智能的核心之一,那么它是何时提出的呢?又是如何实现”智能“的呢?
最近一段时间在学习周志华老师的经典书籍《机器学习》,对其中的一些重点做了些总结和一些个人的理解。如有错误,还请批评指正。
1、神经元模型
Kohonen在1988提出了神经网络的定义:神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
神经网络中最基本的成分是神经元(neuron),如下图所示基本神经元模型——M-P神经元模型,1943年由McCulloch和Pitts首次提出。
在上述神经元模型中,神经元接收到其他神经元传递信号, 这些信号通过带权重的连接(connection)传递,神经元接收到的总输入值将与神经元的阈值进行比较,通过"激活函数" (activation function) 处理以产生神经元的输出。
理想中的激活函数是阶跃函数,如下图所示,它将输入值映射为输出值“0” 或1,“显然”1“ 对应于神经元兴奋, ”0“ 对应于神经元抑制。
然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。如下图所示,它把可能在较大范围内变化的输入值挤压到(0,1) 输出值范围内,因此有时也称 为"挤压函数" (squashing function)。
把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。事实上,从计算机科学的角度看,可以先不考虑神经网络是否真的模拟了生物神经网络,只需将一个神经网络视为包含了许多参数的数学模型,这个模型是若干个函数相互嵌套得到的。这些函数可能是如下的形式:
同时有效的神经网络学习算法大多以数学证明为支撑。
2、感知机与多层网络
感知机(Perceptron) 由两层神经元组成,如图所示。输入 层接收外界输入信号后传递给输出层, 输出层是M-P 神经 元,亦称“阈值逻辑单元" (threshold logic unit) .
感知机能容易地实现逻辑与、或、非运算,注意到上述的函数,假设函数f是一个阶跃函数,即它的输出只有0和1,那么则有性质如下所示:
而更具一般性的来说,我们可以通过训练来得到权重w和阈值θ。阈值可看作一个固定输入为-1.0的“哑结点”(dummy node),它对应一个连接权重w(n+1)。这样权重和阈值的学习可统一为权重w的学习。对训练样例(x,y),如当前感知机的输出为拔,则感知机权重如下调整:
其中η称为学习率,取值范围为0-1之间,从(1)式可以看出,假如感知机对训练样例(x,y)的预测是正确的,即y拔=y,则感知机不会发生变化,否则将根据错误的程度进行权重的调整。
那么感知机有哪些缺点呢?主要有以下两点:
1)只有一层功能神经元(functional neuron),学习能力差 ;
2)只在线性可分问题中收敛,非线性问题收敛弱。
如上图所示,与、或和非均为线性可分问题,异或为非线性问题。
要解决非线性可分问题,需考虑多层功能神经元。如简单的两层感知机就能解决异或问题,输出层与输入层之间的一 层神经元,被称为隐含层(hidden layer) ,隐含层和输出层神经元都是拥有激活函数的功能神经元。
更一般地,常见的神经网络是形如下图所示的层级结构, 每层神经元与下层神经元全互连, 神经元之间不存在同层连接, 也不存在跨层连接。这样的神经网络结构通常称为 “多层前馈神经网络” (multi-layer feedforward neural networks) ,其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。那么理论上,多层神经网络可以拟合所有的函数。
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权” (connection weight) 及每个功能神经元的阈值。
换言之,神经网络“学”到的东西,蕴涵在连接权与阈值之中。
那么神经网络是如何进行具体的学习与参数的更新的呢?有时间再给大家介绍啦。。。
- 点赞
- 收藏
- 关注作者
评论(0)