神经网络
1 神经元模型
神经网络是由具有适应性的简单单元组成的广泛并行互连网络,它的组织能够模拟生物神经系统对真实世界事物所做出的交互反应。
上述的简单单元是指神经网络最基础的组成部分神经元模型
神经元接收来自n个其它神经元传递过来的输入信号,这些输入通过带权连接进行传递。总输入通过与神经元的阈值进行比对,然后通过激活函数处理产生输出。
理想的激活函数是阶跃函数,但是其不连续不平滑等缺点使得sigmoid函数成为广泛使用的激活函数。
将多个这样的神经元按照一定的层次链接起来就是神经网络。
神经网络可以视为包含了多个参数的数学模型,这个模型由若干个函数相互嵌套而成。函数可以形如:
2 感知器与多层网络
感知器由两层神经元构成
w 与 θ 可以通过学习获得。
当学习过程中出现误差时,感知器的权重将调整。
感知器只有输入从进行激活函数处理,只拥有一层功能神经元,其学习能力非常有限,只能解决线性可分问题。否则感知器的学习过程将发生振荡,w很难稳定下来。例如,感知器不能解决异或问题。
要解决非线性可分问题需要使用多层功能神经元。
更一般的,常见的神经网络中每层神经元与下一层完全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构称为:多层前馈神经网络。
其中输入层仅接收输入,不进行函数处理,隐层和输入层对信号进行加工。因此图5.6(a)是两层神经网络,为了避免歧义可称为单隐层神经网络。神经网络的学习过程就是调整神经元之间的连接权重以及每个功能神经元的阈值。
3 误差逆传播算法
训练多层网络的时候,简单感知器模型的规则显然不够,需要更加强大的学习算法。误差逆传播(BP)算法就是代表。现实中大多神经网络都通过BP算法进行训练,BP不但可以用于前馈神经网络,还可以用去其它神经网络,如递归神经网络。通常说BP神经网络时,一般所指是BP算法训练的多层前馈神经网络。
任意参数的更新估计式为:
v = v + Δv
如此一来,图5.7中的变量都有了自己的跟新公式。
之前所推导的是标准BP算法,每次针对一个训练样本进行跟新权重与阈值, 类似的推导基于累计误差的更新规则,就是累积BP算法。累积BP算法与标准BP算法都很常用 。
显然,标准BP算法需要频繁的对每个实例的误差进行更新,参数的更新非常频繁。而累积BP算法在读取了整个数据集D后才进行更新,所以参数更新的频率非常低。
BP神经网络经常遭遇过拟合的问题,其训练误差降低,但测试误差却可能上升。有两种方式用于缓解过拟合的问题。
- 早停:当训练集误差降低时若测试集误差上升,则停止训练。返回测试集最小误差时的权值与阈值。
- 正则化:在误差目标函数中增加一个用于描述网络复杂度的部分。例如将5.16改为:
4 全局最小和局部极小
基于梯度的搜素是最为常用的参数寻优方法。在此类方法中,我们从某些初始点触发,迭代的寻找最优参数。每次迭代中,计算误差函数当前的梯度,按照梯度确定搜索方向。所以局部极小会使得迭代停止。
下列策略常用于跳出局部极小。
用多组不同参数初始化多个神经网络,训练后取误差最小的解作为最终参数。因为不同的初始点会陷入不同的局部极小,从中就可以找到更接近全局最小的结果。
模拟退火:每一步都有一定概率接受比当前解更差的结果,从而有助于跳出局部极小。迭代过程中,选择次优解的概率要逐渐降低,从而保证算法的稳定性。
随机梯度下降:在计算梯度的过程中加入随机因素。当进入局部极小值时,梯度仍然可能不为0,就可以进一步进行搜索。
5 其它神经网络
- RBF网络
RBF(radial basis function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基作为隐层神经元激活函数。其输出是对隐层神经元输出的线性组合。
- ART网络
竞争学习是神经网络中一种常用的无监督学习策略,在使用该策略的时候,网络的输出神经元互相竞争,仅一个获胜者被激活。该机制亦被称为胜者通吃原则。
ART(adaptive resonance theory,自适应写真)
该网络组成:
比较层:负责接收输入样本,将其传递给识别层
识别层:每个神经元对应一个模式类,训练中可动态增加神经元数目来增加新的模式类。(即增量学习/在线学习)
识别阈值和重置模块
在接收到比较层的输入信号后,识别层神经元之间开始相互竞争。可计算输入向量与每个识别层神经元对应的模式类的代表向量的距离,距离最小者胜出。获胜神经元向其他发送信号,抑制其激活。
- SOM网络
SOM(self-organizating map,自组织映射网络)是一种竞争学习型的无监督神经网络,它能够将高维输入数据映射到低纬度空间,同时保留输入数据在高维空间的拓扑结构,即将高维空间的相似样本映射到网络输出层。
输出层的每个神经元有一个权向量,网络接收输入层向量后,将会确定输出层获胜神经元,它决定了该输入在低维空间的位置。SOM训练目标是为每个输出层神经元找到合适权向量,以达到保持拓扑结构的目的。
训练过程:接收一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,为最佳匹配单元。然后,最佳匹配神经元及其邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。
- 级联相关网络
一般的神经网络结构是固定的,训练目的是寻找合适的连接权重和阈值等参数。但结构自适应网络则是将网络的结构也作为学习目标之一。级联相关网络就是其中的代表。
与一般前馈神经网络相比,级联相关网络无需设置网络层数与隐层神经原数,且训练速度快,但是其在数据较小时,易于陷入过拟合。
- Elman网络
与前馈神经网络不同,递归神经网络(recurrent neural networks)允许网络中出现环形结构,从而使得一些神经元的输出反馈作为输入信号。这样的信息反馈过程使得 t 时刻的输出不但与 t 时刻的输入有关,还与 t-1 时刻的网络状态相关,从而能处理与时间有关的动态变化。
Elman网络是其中代表之一。
- 玻尔茨曼机
神经网络中有一类模型:为网络状态定义一个能量。能量最小化时达到理想状态。而网络的训练就是在最小化这个能量函数。玻尔茨曼机,就是这样一种基于能量的模型。
其神经元被分为两层:显层与隐层。显层用于表示数据的输入输出,隐层可以视为数据的内在表达。Boltzmann机的神经元都是布尔型。1表激活、0表抑制。
玻尔茨曼机的训练过程:将每个训练样本视为一个状态向量,使其出现的概率尽可能大。标准机是一个全连接图,复杂度较高。常用受限的玻尔茨曼机(Restricted BM, RBM)。
6 深度学习
理论上,参数越多,模型越复杂,容量越大,越意味着可完成更复杂的任务。但一般,复杂模型的训练效率低,易陷入过拟合。随着云计算。大数据时代的到来,计算能力的大幅提高可缓解训练低效性,训练数据的大幅增加,可降低过拟合。
典型的深度学习模型:很深层的神经网络。
提高容量的方法:
1 增加隐层的数目
2 增加隐层神经元的数目
增加隐层数目的方法显然比增加隐层神经元的数目更有效:增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。
多隐层NN难以用经典算法(如BP)求解:误差在多隐层反响传播时,往往会发散而不能收敛到稳定状态。
多隐层训练的有效手段:无监督逐层训练。每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,本层隐结点的输出作为下一层的输入,此称为预训练。预训练全部完成后,再对整个网络进行微调训练。
例如:深度信念网络(DBN),每层都是一个受限玻尔茨曼机。整个网络视为若干个RBM堆叠而成,首先预训练,完成后再利用BP对整个网络进行训练。
预训练+微调的做法:可看作是将大量参数分组。对每组先找到局部看起来比较好的设置,然后再基于这些局部较优结果联合全局最优。
另一种节约训练开支的策略是权共享,让一组神经元使用相同的连接权。以CNN(卷积神经网络)进行手写识别为例:
CNN复合多个卷积层和采样层对输入信号进行加工,然后在连接层实现与输出目标的映射。
每个卷积层都包含多个特征映射,每个特征映射是由多个神经元构成的平面。CNN可以用BP进行训练,但是训练过程中不论是卷积层还是采样层,其每一组神经元都采用相同的权重,所以大幅减少了所需训练的参数个数。
无论哪种网络,其多层堆叠,每层对上一层的输出进行处理的机制,可看作是对输入信号不断逐层加工,从而把初始的,与输出目标不太相关的输入表示,转化为与输出目标相关的表示。通过多层处理,逐渐将低层特征表示转化为高层特征表示后,用简单模型即可完成复杂的分类任务。
由此,可将深度学习理解为进行“特征学习”,或者“表示学习”。
以往的机器学习任务中,描述特征的样本通常需要由人类专家设计,称为“特征工程”。特征好坏对泛化性能有至关影响。人类设计好特征并非易事,特征学习则通过机器学习技术来产生好特征。使得机器学习向“全自动数据分析”前进了一大步。