五、神经网络
5.1 神经元模型
本书使用的对神经网络的定义是:“神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交叉反应”。
神经网络中最基本的成分是神经元模型。在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变神经元的电位;如果神经元的电位超过了一个阈值,它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。示意图如下:
理想的激活函数应该是阶跃函数。但阶跃函数不连续且不光滑。在实践中,多采用Sigmoid函数作为激活函数。如下所示
5.2 感知机和多层网络
感知机由两层神经元组成。输入层接受外界输入信号后传递给输出层,输出层是M-P神经元,也称为“阈值逻辑单元”。
感知机能较容易的实现逻辑与、或、非计算。输出公式为
一般地,给定训练数据集,权重
需注意的是,感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元。可以证明,若两类模式是线性可分的,即存在一个线性超平面将他们分开,那么感知机的学习过程一定是收敛的;否则,感知机学习过程将会发生震荡。
要解决非线性可分问题,需要使用多层神经元。一般来说,常见的神经网络是层级结构,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”。
5.3 误差逆传播算法
为了训练多层网络,目前最好的算法是误差逆传播(BP)算法,它是迄今最成功的神经网络学习算法。对每个学习样例,BP算法执行以下操作:
先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整。该迭代过程循环进行,直到达到了某些停止条件为止。BP算法的目标是要最小化训练集D上的累积误差:
已经证明,只需一个包含足够多神经元的隐层,多层前馈神经网络能以任意精度逼近任意复杂度的连续函数。但是,如何设置隐层神经元的个数仍然是未知问题,实践中需要使用试错法来解决。
由于BP神经网络的学习能力过于强大,在应用中常常遭遇“过拟合”。通常采用两种策略缓解过拟合现象:
第一种策略是“早停”,将数据分成训练集和验证集,若训练误差降低但验证误差升高,则停止训练。
第二种策略是“正则化”,基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分。
5.4 全局最小与局部极小
若用E表示神经网络表示训练集上的误差,则它显然是关于连接权
基于梯度的搜索是使用最为广泛的参数寻优方法。在此类方法中,从某些初始解出发,迭代寻找最优参数值。每次迭代中,先计算误差函数在当前点的梯度,然后根据梯度确定搜索方向。若误差函数在当前点的梯度为零,则迭代停止。这种方式有可能陷入局部极小中。
人们常采用以下策略来“跳出”局部极小,从而进一步接近全局最小。
1. 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。
2. 使用”模拟退火”,模拟退火在每一步都有一定概率接受比当前解更差的结果,从而有助于“跳出”局部极小。在每次迭代过程中,接受“次优解”的概率要随着时间的推移逐渐降低,从而取得收敛的结果。
3. 使用随机梯度下降。在计算梯度时,该方法加入了随机因素。因此,即便陷入局部最小点,它计算出的梯度仍有可能不为零,这样就有机会跳出局部极小继续搜索。
除此以外还有遗传算法。需要注意的是,这些方法大多数是启发式,理论上不严密。
5.5 其他常见神经网络
5.5.1 RBF网络
RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经单元激活函数,而输出层是对隐层神经元输出的线性组合。径向基函数是沿径向对称的标量函数,通常定义为样本x到数据中心c之间的欧氏距离的单调函数。
5.5.2 ART网络
竞争性学习是神经网络中一种常用的无监督学习策略,在使用该策略时,网络的输出神经元互相竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制。
ART(Adaptive Resonance Theory, 自适应谐振理论)网络是竞争性学习的最佳代表,该网络由比较层、识别层、识别阈值和重置模块构成。其中,比较层负债接受输入样本,并将其传输给识别层神经元。识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增加以增加新的模式类。通过这种方式,ART网络兼具了可塑性与稳定性,可进行增量学习或在线学习。
5.5.3 SOM网络
SOM(Self-Organizing Map, 自映射)网络,是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间中的拓扑结构,即将高维空间中相似的样本映射到网络输出层中的邻近神经元。
SOM网络中的输出层神经元以矩阵方式排列在二维空间中,每个神经元都拥有一个权向量。网络在接受输入向量后,将会确定输出层获胜神经元,它决定了该输入向量在低维空间中的位置。SOM的训练目标是为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的。
5.5.4 级联相关网络
一般的神经网络通常假定结构是固定的,而结构自适应网络则将网络结构也作为学习的目标之一,并希望能在数据训练过程中找到最符合数据特点的网络结构。级联相关(Cascade-Correlation)网络是结构自适应网络的重要代表。
在开始训练时,网络只有输入层和输出层,处于最小拓扑结构。随着训练的进行,新的隐层神经元逐渐加入,从而创建起层级结构。当新的隐层神经元加入时,输入端连接权值时冻结的,通过最大化新神经元的输出与网络误差之间的相关性来训练相关参数。
5.5.5 Elman网络
递归神经网络(recurrent neutral networks)允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。这样的反馈过程,使得网络能够处理与时间有关的动态变化。
Elman网络是最常用的递归神经网络之一。网络的训练采用推广的BP算法。
5.5.6 Boltzman机
Boltzman机是一种“基于能量的模型”。
神经网络中有一类模型是为网络状态定义一个能量,当能量最小化时达到理想状态,而网络的训练就是在最小化这个能量函数。Boltzman机中的神经元都是布尔型的,只能取0和1两种状态。令向量
若网络中的神经元以任意不依赖与输入的顺序进行更新,则网络最终将到达Boltzman分布.此时状态向量s出现的概率为
Boltzman机的训练过程就是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。标准的Boltzman机是一个全连接图,训练网络的复杂度很高。现实中常采用受限Boltzman机(Restricted Boltzman Machine,RBM)。
5.6 深度学习
典型的深度学习就是深层的神经网络。在训练时,多隐层(三个以上隐层)神经网络难以直接用BP算法进行训练,因为误差在多隐层内逆传播时,往往会“发散”而不能收敛到温度状态。有两种方式可以在训练模型的同时节省训练开销:
1. 无监督逐层训练。这是多隐层网络训练的有效手段。基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,本层隐节点的输出作为下一层隐节点的输入。这被称为“预训练”。在预训练全部完成后,再对整个网络进行“微调”。这种方式在深度信念网络(deep belief network,DBN)中得到应用。
2. 权共享。让一组神经元使用相同的连接权。这种方式在卷积神经网络(Convolutional Neutral Network,CNN)中得到应用。