Contents
本文主要分为以下几个部分。首先对神经网络进行概述。由此引出由两层神经元组成的感知机,并介绍了感知机的学习规则。但感知机学习能力有限,要解决非线性可分问题需引入多层网络,多层网络增加了隐层。误差逆传播算法(BP算法)可用于训练多层前馈神经网络,第三部分重点介绍了使用BP算法训练网络的过程。神经网络的训练过程就是个参数寻优的过程,第四部分介绍了全局最小与局部极小,并介绍了四个策略用于跳出局部极小,分别是:1.以多组不同参数值初始化多个神经网络;2.使用模拟退火算法;3.使用随机梯度下降;4.使用遗传算法。第五部分介绍了 一些其他常见的神经网络,有RBF网络、ART网络、SOM网络、级联相关网络、Elman网络、Boltzmann机,分别介绍了他们的网络机构以及训练过程。第六部分简单介绍了深度学习与神经网络的关系,构建深层神经网络的两个方法,并介绍了训练深层神经网络的两种常用的方法:1。无监督逐层训练(预训练+微调);2.权共享。
神经网络概述
”神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。“[Kohonen,1988].
机器学习中谈论的神经网络通常是指神经网络学习。
神经网络中最基本的成分是神经元(neuron)模型。如果某神经元的电位超过了一个”阈值“(threshold),那么它就会被激活,即”兴奋“,下图是”M-P神经元模型”。
在这个模型中,神经元接收到来自其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。理想的激活函数是阶跃函数,但阶跃函数具有不连续、不光滑等不太好的性质,因此常用Sigmoid函数作为激活函数,其可以把输入值挤压到(0,1)输出值范围内。
感知机与多层网络
感知机(Perceptron)由两层神经元组成,如下图,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”(threshold logic unit)。感知机能容易地实现逻辑与、或、非运算。给定训练数据集,权重Wi(i=1,2,..,n)以及阈值可通过学习得到。
感知机的学习规则非常简单(最简单),对训练样例(x,y),若当前感知机的输出为ý,则感知机权重将这样调整:
其中η∈(0,1)称为学习率(learning rate)。从式(5.1)可看出,若感知机对训练样例(x,y)预测正确,即ý=y,则感知机不发生变化,否则将根绝错误的程度进行权重调整。
感知机只有输入层神经元进行激活函数处理,即只拥有一层功能神经元,学习能力有限。若两类模式是线性可分的,即存在一个线性超平面将它们分开,则感知机的学习过程一定收敛(converge)并求得适当的权向量W;否则感知机学习过程将会发生振荡,权重难以稳定下来。
要解决非线性可分问题,需考虑使用多层功能神经元。输出层与输入层之间的一层神经元被称为隐层或隐含层(hiden layer),隐含层和输出层神经元都是拥有激活函数的功能神经元。
常见的神经网络如图5.6所示的层级结构。被称为“多层前馈神经网络”(multi-layer feedforward neural networks)不存在同层连接以及跨层连接。其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出;即输入层仅是接收输入,不进行函数处理。神经网络学到的东西,蕴含在连接权与阈值中。
误差逆传播算法(BP)
简单感知机学习规则不够用于训练多层网络。误差逆传播(error BackPropagation,简称BP)算法是迄今最成功的神经网络学习算法。BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络,如递归神经网络。通常所说的“BP网络”指用BP算法训练的多层前馈神经网络。
对训练样例(xk,yk),假定神经网络的输出为ýk=(ý1k,ý2k,…,ýlk),即
则网络在(xk,yk)上的均方误差为
图5.7的网络中有(d+l+1)q+l个参数需确定:输入层到隐层的d×q个权值、隐层到输出层的q×l个权值、q个隐层神经元的阈值、l个输出层神经元的阈值。BP是一个迭代学习算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,即与式(5.1)类似,任意参数v的更新估计式为
以下是更新估计式的推导,若不感兴趣,可以直接跳到误差逆传播算法描述那里
其中
——————————推导分割线结束————————
学习率(范围0~1)控制着算法每一轮迭代中的更新步长,若太大则容易振荡。太小则收敛速度又会过慢。BP算法的工作流程:
第4步:
第5步:
第6步:
第7步:
BP算法的目标是要最小化训练集D上的累积误差
其中均方误差是:
上述介绍的“标准BP算法”每次仅针对一个训练样例更新连接权和阈值。类似的,基于累积误差最小化的更新规则,就有累积误差逆传播(accumulated error backpropagation)算法。标准BP算法每次更新只针对单个样例,更新频繁,可能出现抵消现象,为达到同样的累积误差极小点,需进行更多次迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,更新频率更低。。累积误差下降到一定程度后,进一步下降会非常缓慢。这时标准BP算更快获得好的解,尤其是在训练集D非常大时更明显。
只需包含足够多神经元的隐层,多层前馈网络就能以任意精度逼近任意复杂度的连续函数。目前通常使用“试错法”来设置隐层神经元的个数。
由于其强大的表示能力,所有BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。有两种策略来缓解BP网络的过拟合。
第一种:早停(early stopping):将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证机误差的连接权和阈值
第二种:正则化(regularization):在误差目标函数中增加一个用于描述网络复杂度的部分。例如连接权与阈值的平方和,则误差目标函数改为:
其中λ∈(0,1)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计
全局最小与局部极小
神经网络的训练过程可看作一个参数寻优过程,即在参数空间中,寻找一组最优参数使得E最小。基于梯度的搜索是使用最为广泛的参数寻优方法。由于负梯度方向是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解,若误差函数在当前点的梯度为零,则已达到局部极小,更新量将为零,显然,如果误差函数仅有一个局部极小,那么此时找到的局部极小就是全局最小。但如果误差函数具有多个局部极小,则找到的解不能保证是全局最小,即陷入了局部极小。可采用以下策略来”跳出“局部极小。
- 以多组不同参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,
- 使用”模拟退火“(simulated annealing)技术。模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于”跳出”局部极小。接受“次优解”的概率要随时间的推移递减,从而保证算法稳定、
- 使用随机梯度下降。与标准梯度下降法精确计算梯度不同,随机梯度下降在计算梯度是加入随机因素,于是,即便陷入局部极小点,它计算出的梯度仍可能不为零,则有机会跳出局部极小继续搜索。
- 遗传算法:一种启发式搜索算法, 核心思想在于先产生一定量的随机状态, 计算其优化程度(或者叫适应度),保留优质的状态,并通过不断微调较优的状态来获得新状态加入竞争。 优势状态有更大概率保留和产生子状态,劣势状态虽然保留概率不高但也不是不可能保留,因此可以避免陷入局部最优解,同时人为加入了基因池容量限制(资源有限),保证了运转效率。
其他常见神经网络
RBF网络
RBF(Radial Basis Function,径向基函数)网络,一种单隐层前馈神经网络,使用径向基函数作为隐层神经元激活函数,而输出层是对隐层神经元输出的线性组合。RBF网络表示为
其中q为隐层神经元个数,ci和wi分别是第i个隐层神经元所对应的中心和权重ρ(x,ci)是径向基函数,这是某种沿径向对称的标量函数,通常定义为x到数据中心ci之间欧式距离的单调函数,常用的高斯径向基函数形如:
通常采用两步过程来训练RBF网络:
第一步:确定神经元中心ci常用的方式包括随机采样、聚类等;
第二步:利用BP算法等来确定参数ωi和βi。
ART网络(结构自适应网络)
竞争性学习是神经网络中一种常用的无监督学习策略,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态呗抑制。
ART(Adaptive Resonance Theory,自适应谐振理论)网络是竞争型学习的重要代表。该网络由比较层、识别层、识别阈值和重置模块构成。比较层约等于输入层,识别层约等于隐层加输出层。识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。
竞争方式:
- 计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离
- 取距离最小的输入向量,计算与代表向量的相似度
a.若相似度大于识别阈值,判为该类,更新连接权,使得往后被判为该类的输入向量与代表向量的相似度更大
b.若相似度小于 识别阈值,重置模块增设新神经元,当前输入向量为代表向量
识别阈值对ART网络的性能有重要影响,当识别阈值较高时,输入样本将会被分成比较多、比较精细的模式类,如果识别阈值较低,则会产生比较少、比较粗略的模式类。
ART比较好地缓解了竞争型学习中的“可塑性-稳定性窘境”(可塑性:学习新知识的能力;稳定性:学习新知识时保持对旧知识的记忆的能力)。因此ART网络具有很重要的优点:可进行增量学习或在线学习。
小衍生:增量学习:根据新样例对模型进行更新,不必重新训练整个模型。在线学习:每获得一个新样本就进行一次模型更新。在线学习是增量学习的特例,增量学习是“批模式”的在线学习。
SOM网络
SOM(Self-Organizing Map,自组织映射)网络是一种竞争学习型的无监督神经网络。它将高维输入数据映射到低维空间,同时保持在高维空间的拓扑结构。SOM的训练目标就是为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的。
训练过程:接收到一个训练样本后,每个输出层神经元会计算样本与自身携带的权向量之间的距离,距离最近的神经元称为竞争获胜者,称为最佳匹配单元。然后,最佳匹配单元及其邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代直至收敛。
级联相关网络(结构自适应网络)
一般的神经网络模型通常假定网络结构是事先固定的,而结构自适应网络将网络结构也当作学习的目标之一。级联相关(Cascade-Correlation)网络是结构自适应网络的重要代表。
级联是指建立层次连接的层级结构。开始训练时,网络只有输入层和输出层,处于最小拓扑结构;随着训练的进行,新的隐层神经元逐渐加入,从而创建起层级结构。相关是指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。
与一般的前馈神经网络相比,级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但其在数据较小时易陷入过拟合
Elman网络
与前馈神经网络不同,“递归神经网络”(recurrent neural networks)允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号。Elman网络是最常用的递归神经网络之一,隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下一时刻的输入。隐层神经元通常采用Sigmoid激活函数。网络的训练采用推广的BP算法。
Boltzman机
为网络状态定义一个“能量”,能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数。Boltzmann机就是一种“基于能量的模型”。常见结构如t图a所示,其神经元分为两层:显层与隐层。显层用于表示数据的输入与输出,隐层则被理解为数据的内在表达。Boltzmann机中的神经元都是布尔型的。令向量s表示n个神经元的状态,则状态向量s所对应的Boltzmann机能量定义为
若网络中的神经元以任意不依赖于输入值的顺序进行更新,则网络最终将达到Boltzmann分布,此时状态向量s出现的概率将仅由其能量与所有可能状态向量的能量确定:
训练过程:将每个训练样本视为一个状态向量,使其出现的概率尽可能大。标准的Boltzmann机是一个全连接图,训练网络的复杂度很高,故难以用于解决现实任务。现实常采用受限Boltzmann机(Restricted Boltzmann Machine,简称RBM),如图b,受限Boltzmann机仅保留显层与隐层之间的连接。
受限Boltzmann机常采用“对比散度”(Contrastive Divergence,CD)算法进行训练。假定网络中有d个显层神经元,q个隐层神经元。v和h分别表示显层与隐层的状态向量,则
CD算法对每个训练样本v,先根据式(5.23)计算出隐层神经元状态的概率分布,然后根据这个概率分布采样得到h;此后,类似地根据式(5.22)从h产生v’,再从v’产生h’;连接权的更新公式为:
深度学习
典型的深度学习模型就是很深层的神经网络,对神经网络模型提高容量的两个办法,一个是增加隐层的数目,相应的神经元连接权、阈值等参数就会更多。还有一个办法是通过单纯增加隐层神经元的数目。前者更有效,因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。
如何训练深层神经网络?
主要有两种办法:一种是无监督逐层训练,一种是权共享;
无监督逐层训练每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,本层隐结点的输出作为下一层的输入,称为“预训练”(pre-training);在预训练全部完成后,再对整个网络“微调”(fine-tuning)。“预训练+微调”的做法可视为将大量参数分组,对每组先找到局部看来比较好的设置,然后再基于这些局部较优的结构联合起来进行全局寻优。深度信念网络(deep belief network,DBN)即采用该种方法训练。
“权共享”上一组神经元使用相同的连接权,这个策略在卷积神经网络(Convolutional Neural Network,CNN)中发挥了重要的作用。对深度学习感兴趣可以移步深度学习系列:
深度学习对输入信号进行逐层加工,从而把初始的,与输出目标之间联系不太密切的输入表示,转化成与输出目标联系更密切的表示,使得原来进基于最后一层输出映射难以完成的任务成为可能。因此深度学习也可以理解为特征学习或表示学习。