第五章 神经网络
神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反映。
神经元模型
神经元模型是神经网络中最基本的成分。
- M-P 神经元(阈值逻辑单元)模型
在这个模型中,神经元接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与阈值进行比较,然后通过激活函数(activation function)处理以产生神经元的输出。
常用Sigmoid函数作为激活函数,它把可能在较大范围内变化的输入值挤压到(0, 1)输出值的范围内,有时也称它为挤压函数(squashing function)。
感知机与多层网络
感知机(Perceptron)
- 构成:感知机由两层神经元组成。输入层接收外界输入信号后传递给输出层。
- 功能:实现逻辑与,或,非等线性可分问题。
- 学习规则:对于训练样例(x, y),若当前感知机的输出为
yˆ
,则感知机权重
ωi
(i=1,2,…,n)将重新调整:
其中, η∈(0,1) 称为学习率(learning rate). - 局限:感知机只有一层功能神经元(functional neuron),其学习能力非常有限。感知机只能解决线性可分的问题而无法解决非线性可分问题。
- 实现:
>> x=[3,3;4,3;1,1];
>> y=[1,1,-1];
>> plot(x(1:2,1),x(1:2,2),'*');
>> hold on;
>> [w]=perceptionLearn(x,y,1,20);
>> xline=linspace(0,5,20);
>> yline=-w(2)/w(3).*xline-w(1)/w(3);
>> plot(xline,yline);
多层网络
- 隐层或隐含层(hidden layer)
如图,输出层与输入层之间的一层神经元被称为隐含层。隐含层和输出层神经元都是拥有激活函数的功能神经元。
- 多层前馈神经网络
多层前馈神经网络每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。
误差逆转传播算法
误差逆传播(error BackPropagation,简称BP)算法是迄今最成功的神经网络学习算法。
对训练例( xk , yk ),假定神经网络的输出为 yˆk=(yˆk1,yˆk2,...,yˆkl) ,即yˆkj=f(βj−θj)
则网络在 (xk,yk) 上的均方误差为Ek=12∑j=1l(yˆkj−ykj)2
算法目标
最小化训练集D上的累计误差
E=1m∑k=1mEk工作流程
BP算法先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐层神经元,最后根据隐层神经元的误差来对连接权和阈值进行调整。该迭代过程循环进行,直到达到某些停止条件为止。
标准BP算法与累计BP算法
标准BP算法:一般来说,标准BP算法每次更新只针对单个样例,参数更新非常频繁,而且对不同样例进行更新可能出现抵消现象。所以为了达到同样的累计误差极小点,标准BP算法需要更多次的迭代。
累计BP算法:累计BP算法直接针对累计误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新频率低很多。
优劣:当累计误差下降到一定程度后累计BP算法进一步下降会非常缓慢,这是标准BP算法会更快获得较好的解。BP算法的缺点
由于BP算法强大的表示能力,它经常会发生过拟合,其训练误差持续降低,但测试误差却可能上升。有两种策略:- 早停
将数据分成训练集和验证集,训练集用来计算梯度,更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。 - 正则化
在误差目标函数中增加一个用于描述网络复杂度的部分。误差目标函数变为E=λ1m∑k=1mEk+(1−λ)∑iω2i
>> P = [0 1 2 3 4 5 6 7 8 9 10]; >> T = [0 1 2 3 4 3 2 1 2 3 4]; >> net = newff(P,T,5); >> Y = sim(net,P); >> plot(P,T,P,Y,'o'); >> net.trainParam.epochs = 50; >> net = train(net,P,T); >> Y = sim(net,P); >>> figure,plot(P,T,P,Y,'o');
全局最小与局部极小
对于 ω∗ 和 θ∗ ,若存在 ϵ>0 使得,
都有 E(ω;θ)≥E(ω∗,θ∗) 成立,则 (ω∗,θ∗) 为局部极小解;若对参数空间中的任意 (ω;θ) 都有 E(ω;θ)≥E(ω∗,θ∗) ,则 (ω∗,θ∗) 为全局最小解。
为了寻找全局最小,人们常常采取一下方式来避开局部最小:
此外,遗传算法也常用来训练神经网络以更好的逼近全局最小,但以上技术理论上尚缺乏保障- 早停
其他常见神经网络
RBF网络
RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数。假定输入为d维向量x,输出为实值,则RBF网络可表示为:
训练RBF网络的步骤:
- 确定神经元中心 ci ,常用的方式包括随机取样,聚类等;
- 利用BP算法等来确定参数 wi 和 βi
ART网络
ART(Adaptive Resonance Theory)网络是竞争型学习的代表。该网络由比较层,识别层,识别阈值和重置模块构成。其中识别层神经元之间的最简单的竞争方式是计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜。
ART网络的优点:
- 在学习新的模式时不会破坏己存储的模式。对已学习过的对象具有稳定的快速识别能力,同时又能迅速适应未学习过的新对象;
- ART网络的学习不需要样本,它可以自动的向环境学习,不断的自动修正网络结构参数,进行无监督的学习。因此又称ART网络为自组织网络;
- 具有相当好的稳定性,而且不会被大量的任意输入所干扰,能适应非平稳的环境;
- 具有自归一能力,根据某些特征在全体特征中占的比例,有时把它作为关键特征,有时又可将其作为噪声处理;
- 当系统对环境做出错误反应时,可通过提高系统的“警觉性”,而迅速识别新的对象;
- ART结构很容易就能与其它分层认知理论结合起来。它考虑到了来自ART网络外围的其它子系统诸如注意子系统、预测子系统或取向子系统对特性和分类层的影响。
SOM网络
SOM(Self-Organizing Map,自组织映射)网络是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构。与ART网络相似,SOM网络的竞争方式是在接收一个训练样本后,每个输出神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元称为竞争获胜者,称为最佳匹配单元。
级联相关网络
级联相关(Cascade-Correlation)网络是结构自适应网络的重要代表。
- 级联:建立层次连接的层级结构
- 相关:通过最大化新神经元的输出与网络误差之间的相关性来训练相关参数。
与一般的前馈神经网络相比,级联相关网络无需设置网络层数,隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合。
Elman网络
Elman网络是最常用的递归神经网之一。其结构与多层前馈网络相似,但隐层神经元的输出被反馈回来,与下一刻的输入层神经元提供的信号一起,作为隐层神经元在下一刻的输入。
Boltzmann机
Boltzmann机是一种”基于能量的模型”其神经元分为两层:
- 显层:用于表示数据的输入与输出
- 隐层:数据的内在表达
Boltzmann机中的神经元都是布尔型的。令向量
s∈
{0,1}
n
表示n个神经元的状态。则状态向量s所对应的Boltzmann机能量定义为:
若网络中的神经元以任意不依赖与输入值的顺序进行更新,此时状态向量s出现的概率为:
Boltzmann机的训练过程就是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。而标准的Boltzmann机是一个全连接图,其训练网络的复杂度很高,所以现实中常采用受限机(Restricted Boltzmann Machine,简称RBM)。
深度学习
随着云计算,大数据时代的到来,计算能力的提高以及训练数据的增加。以深度学习(deep learning)为代表的复杂模型开始受到人们关注。
一般通过“预训练+微调”的做法实现。
- 深度信念网络(deep belief network,简称DBN)
整个网络可视为若干个RBM堆叠而得,在使用无监督逐层训练时对各层预训练完成后,再利用BP算法等对整个网络训练 - 卷积神经网路(Convolutional Neural Network,简称CNN)
如图,网格输入是一个32×32的手写数字图像,输出是识别图像,CNN复合多个“卷积层”和“采样层”对输入信号进行加工,然后在连接层实现与输出目标之间的映射。
总结:通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。因此可将深度学习理解为“特征学习(feature learning)”或“表示学习(representation learning)”。