一、神经元模型
神经网络: 目前使用最广泛的定义是由适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。我们在机器学习中谈论神经网络时指的是神经网络学习,或者说,是机器学习与神经网络这两个学科领域的交叉部分。
神经网络中最基本的成分是神经元模型,一直沿用近日的是 “M-P神经元模型”,如下图所示。这个模型中神经元接收到来自 n 个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
理想中激活函数是阶跃函数,如下图 a 所示,将输入值映射为输出 0 和 1,1 对应神经元的兴奋,0 对应神经元的抑制,但由于阶跃函数具有不连续、不光滑不太好的性质。实际中常用 Sigmoid 函数,如图b所示。它将较大范围内变化的输入值挤压到(0,1)输出值范围内,有时也称“挤压函数”。
(a) (b)
把上述许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。
二、感知机与多层网络
感知机由两层神经元组成,输出层是“M-P神经元”,亦称“阈值逻辑单元”。感知机能实现逻辑与、或、非运算。感知机的学习规则非常简单,对训练样例(x,y),若当前感知机的输出为 ,则感知机的权重调整为:
其中 称为学习率,若感知机对训练样例(x,y)预测正确,即
,则感知机不发生变化,否则将根据错误的程度进行权重调整。由于感知机只有输出层神经元进行激活函数处理,其学习能力非常有限,只能处理线性可分问题。要处理非线性可分问题,需要考虑使用多层功能神经元。例如简单的两层感知机就可以解决异或的问题,在输入和输出有一层神经元,被称为隐含层。隐含层和输出层都具有激活函数的功能神经元。
一般的神经网络如下图所示的单隐层前馈网络,还有双隐层前馈网络等等,只要包含隐含层就为多层网络。每层神经元与下层神经元全连接,神经元之间不存在同层连接,也不存在跨层连接,这样的神经元称为“多层前馈神经网络”。输入层只接受输入不处理函数,隐含层和输出层包含功能函数。
神经网络的学习过程就是训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值,即神经网络的学习蕴含在连接权和阈值中。
三、BP算法
迄今最成功的神经网络学习算法是误差逆传播算法(BP),那BP算法究竟是怎样的? 下面一起来看
下图是一个拥有 d 个输入神经元,l 个输出神经元,q 个隐含层神经元的多层前馈网络结构。其中输出层第j个神经元的阈值表示为 ,隐含层第 h 个神经元的阈值用
表示,输入层第 i 个神经元与隐含层第 h 个神经元之间的连接权用
表示,隐含层第 h 个神经元与输出层第 j 个神经元之间的连接权为