周志华-机器学习-笔记(四)- 神经网络
神经元模型
神经网络中最基本的成分是神经元(neuron)模型。在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”(threshold),那么它就会被**,即“兴奋”起来,向其他神经元发送化学物资。
图5.1所示的简单模型就是沿用至今的“M-P神经元模型”。在这个模型中,神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到总输入值将与神经元的阈值进行比较,然后通过“**函数”(activation function)处理以产生神经元的输出。
阶跃函数是理想的**函数,它将输出值映射为输出值“0”或“1”,“1”对应与神经元兴奋,“0”对应于神经元抑制。但阶跃函数具有不连续、不光滑等不太好的性质,因此常用Sigmoid函数作为**函数,如下图:
把许多这样的神经元按一定的层次结构连接起来,就得到了神经网络。
感知机与多层网络
感知机(Perceptron)由两层神经元组成,如图5.3所示。输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)。
给定训练数据集,权重以及阈值都可以通过学习得到。我们把阈值也看做神经元的一个固定输入为的“哑结点”(dummy node),其所对应的连接权重为,这样,权重和阈值的学习就可以统一为权重的学习(因为实际阈值是)。
感知机的学习规则:对训练样例,若当前感知机的输出为,则感知机权重将这样调整:
若我们需要解决的问题是线性可分问题(linearly separable),就会存在一个线性超平面能将它们分开,如图5.4(a)-(c)所示,则感知机的学习过程一定会收敛(converge),从而求得适当的权重向量,否则感知机学习过程将会发生振荡(fluctuation)。如图5.4(d)的非线性可分问题。
要解决非线性可分问题,需考虑使用多层功能神经元。如图5.5中两层感知机解决异或问题。
这里的输入层和输出层之间的一层神经元,被称为隐层或隐含层(hidden layer),隐含层和输出层神经元都是拥有**函数的功能神经元。
我们常见的神经网络是如图5.6所示的层级结构,每层神经元与下一层神经元全互连,神经元枝江不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feed forward neural network)。由于输入层神经元仅是接受输入,不进行函数处理,隐层与输出层包含功能神经元。因此,通常被称为“两层网络”,或“单隐层网络”。
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”(connection weight)以及每个功能神经元的阈值。
误差逆传播算法
欲训练多层神经网络,上述的简单感知机学习规则显然不够,我们需要更强大的学习算法。误差逆传播(error BackPropagation,简称BP)算法就是一种杰出的神经网络学习算法。
有训练集,即输入示例由个属性描述,输出维实值向量。
如图5.7是一个拥有个输入神经元、个输出神经元、个隐层神经元的多层前馈网络结构。其中输出层第个神经元的阈值用表示,隐层第个神经元的阈值用;输入层第个神经元与隐层第个神经元之间的连接权为,隐层第个神经元与输出层第个神经元之间的连接权为;记隐层第个神经元接收到的输入为,输出层第个神经元接收到的输入为,为隐层第个神经元的输出。并假设隐层和输出层神经元都使用图5.2(b)中的Sigmoid函数。
对训练例,假定神经网络的输出为,即
图5.7的网络中有个参数需确定。
下面我们以图5.7中隐层到输出层的连接权为例进行推导。
BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向(函数值下降最快)对参数进行调整。对式(5.4)的误差,给定学习率,有
注意到先影响到第个输出层神经元的输入值,再影响到其输出值,然后影响到,有
根据,有
图5.2中的Sigmoid函数有一个很好的性质:
于是根据式(5.4)和(5.3),有
将式(5.10)和(5.8)代入(5.7),再代入式(5.6),就得到了BP算法中关于的更新公式
类似可得
式(5.13)和(5.14)中
学习率控制着算法每一轮迭代中的更新步长,若太大则容易振荡,太小则收敛速度又会过慢。有时为了做精细调节,可令式(5.11)与(5.12)使用,式(5.13)与(5.14)使用,两者未必相等。
BP算法的工作流程如图5.8所示:
先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5行),在将误差逆向传播至隐层神经元(第6行),最后根据隐层神经元的误差来对神经元的误差来对连接权和阈值进行调整(第7行)。直到到达某些停止条件为止,例如训练误差已达到一个很小的值。
BP算法的目标是要最小化训练集上的积累误差
图5.8的“标准BP算法”每次仅针对一个训练样例更新连接权和阈值,参数更新得非常频繁,而且对于不同的样例进行更新的效果可能出现“抵消”现象。积累BP算法直接针对积累误差最小化,它在读取整个训练集D一遍后才对参数进行更新。但在很多任务中,积累误差下降到一定程度后,进一步下降就非常缓慢,这是标准BP往往会更快获得较好的解,尤其是在训练集非常大时更明显。
BP神经网络经常遭遇过拟合,此处有两种策略常用来缓解BP网络的过拟合。第一种是“早停”(early stop):将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。第二种是“正则化”(regularization):基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和。仍令表示第k个训练样例上的误差,表示连接权和阈值,则误差目标函数(5.16)可以表示为
全局最小与局部极小
若令代表神经网络在训练集上的误差,并且是关于连接权和阈值的函数。那么,在神经网络训练过程可以看作寻找一组最优参数使得最小。“局部极小”(local minimum)和”全局最小“(global minimum)是我们常会提到的两种“最优”。
局部极小:对应二维曲线中的极小值点。
在神经网络中表示为,对和,若存在使得
全局最小:对应二维曲线中的最小值点。
在神经网络中表示为,若对参数空间中的任意都有,则为全局最小解。
在现实任务中,我们希望参数是全局最小而非局部极小。基于梯度的搜索是使用最为广泛的参数寻优方法。在此类方法中,我们从某些初始解出发,往负梯度方向迭代寻找最优参数值。若误差函数仅有一个局部极小,那么该局部极小就是全局最小;然而,若误差函数具有多个局部极小,则不能保证找到的解是全局最小。
以下策略常用于“跳出”局部极小,进一步接近全局最小。但这些技术大多是启发式,理论上尚缺乏保障:
以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。这相当于从多个不同的初始点开始搜索,这样可能陷入不同的局部极小,从中选择有可能接近全局最小的结果。
使用“模拟退火”(simulated
annealing)技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于“跳出”局部极小。使用随即梯度下降。随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,他计算出的梯度仍可能不为零,这样有机会跳出局部极小继续搜索。
遗传算法(genetic algorithms)。
其他常见神经网络
RBF网络
RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数隐层神经元**函数,而输出层则是对隐层神经元输出的线性组合。
假定输入为维向量,输出为实值,则RBF网络可表示为
通常采用两步过程来训练RBF网络:第一步,确定神经元中心,常用的方式包括随即采样、类聚等;第二步,利用BP算法等来确定参数和。
ART网络
竞争型学习(competitive learning)是神经网络中一种常用的无监督学习策略,在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被**,其他神经元的状态被抑制。
ART(Adaptive Resonance Theory,自适应谐振理论)网络是竞争型学习的重要代表。
SOM网络
SOM(Self-Organizing Map,自组织映射)网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。