《机器学习》读书笔记5

来源:互联网 发布:淘宝店网名昵称大全 编辑:程序博客网 时间:2024/05/21 08:40

第五章 神经网络

5.1 神经元模型

 

M-P神经元(neuron)模型:神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值(threshold)进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。激活函数通常为阶跃函数或者sigmoid函数。

 

把多个神经元按照一定层次结构连接起来就得到了神经网络。

 

5.2 感知机与多层网络

感知机(Perceptron)由两层神经元组成,包括输入层和输出层,其中输出层是MP神经元,也称“阈值逻辑单元”。

感知机能实现逻辑与、或、非运算,这些运算都是线性可分的,异或问题则不是线性可分的,不能用感知机来表达,需要使用多层神经元。

多层网络中输入与输出层之间的神经元,称为隐层(hidden layer)。

 

多层前馈神经网络(multi-layer feedforward neural networks)。

 

神经网络的学习过程即是根据训练数据来调整神经元之间的连接权(connection weight)以及每个功能神经元的阈值。

 

5.3 误差逆传播算法

误差逆传播算法(Back Propagation,BP)基于梯度下降策略,以目标的负梯度方向对参数进行迭代调整。激活函数仍然采用sigmoid函数。

 

对于如上BP网络,对于训练例(xk,yk),假定神经网络的输出为,则其中各参数的调整公式为:

 

 

其中,gj为输出层的梯度项,eh为隐层的梯度项。

 

 

η为学习率,处于0-1之间,学习率控制着算法每一轮迭代中的更新步长。

 

标准BP算法的工作流程为:

1、先将输入示例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;

2、计算输出层误差(即输出层梯度项gj);

3、再将误差逆向传播至隐层神经元,获得隐层梯度项eh;

4、最后根据隐层神经元的误差来对各连接权和阈值进行调整;

5、重复这个迭代过程,直到满足停止条件。

 

BP算法的目标是要最小化训练集上的累计误差:


 

标准BP算法每次仅针对一个训练样例更新连接权和阈值,另有“累计BP算法”则是在读取整个训练集一遍后才对参数进行更新,更新频率低得多,有利于快速进行参数调整。

 

只需一个包含足够多神经元的隐层,多层前馈网络能以任意精度逼近任意复杂度的连续函数。

 

BP神经网络有过拟合问题,有两种策略来缓解过拟合,一种是“早停”,一种是“正则化”。其中正则化是在误差目标函数中增加一个描述网络复杂度的部分,如连接权与阈值的平方和。

 

5.4 全局最小与局部极小

参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小点(local minimum)。我们在参数寻优过程中是希望找到全局最小(global minimum)。基于梯度的搜索是最常见的参数寻优方法,为避免参数寻优陷于局部极小,可采取多种策略来试图“跳出”局部极小:

1、多组不同参数值初始化多个神经网络,训练后取误差最小的解作为最终参数

2、使用“模拟退火”(simulated annealing)技术

3、使用随机梯度下降,即在计算梯度时加入随机因素,即便陷入局部极小点,计算出的梯度仍然不为零

4、遗传算法(genetic algorithm)

 

5.5 其他常见神经网络

5.5.1 RBF(Radical Basis Function,径向基函数)网络

RBF网络为一种单隐层前馈神经网络,使用径向基函数作为隐层激活函数,输出层则是对隐层神经元输出的线性组合,RBF函数表示为:

 

其中,q为隐层神经元个数,ci和wi分别是第i个隐层神经元所对应的中心和权重,为径向基函数,是某种沿径向对称的标量函数,通常定义为样本x到数据中心ci之间欧氏距离的单调函数,常用的有高斯径向基函数如:

 

 通常采用两步过程来训练RBF网络,第一步,确定神经元中心ci,常用的方式包括随机采样、聚类等;第二部,利用BP算法等来确定参数wi和Bi。

BP网络是全局逼近网络(网络的一个或多个可调参数对任何一个输出都有影响),而RBF网络 是局部逼近网络。高斯RBF类似于将一个石子投入到水面中,产生波浪,波浪距离石子中心(ci)越远,波浪越弱,RBF网络相当于多个石子扔到同一个水面中,RBF可以看做是一个高维空间中的曲面拟合问题。

 

5.5.2 ART(Adaptive Resonance Theory,自适应谐振理论)网络

ART网络采用竞争型学习(competitive learning)策略,是一种无监督学习策略,该策略采用“赢家通吃”的原则,每次仅有一个竞争获胜的神经元被激活,其他神经元被抑制。

 

ART网络由比较层C、识别层R、识别阈值和重置模块(Reset)构成,包含3种控制信号:复位信号R、逻辑控制信号G1和G2。

比较层负责接收输入样本,识别层每个神经元对应一个模式,神经元数目可在训练过程中动态增长以增加新的模式类。识别层神经元之间通过竞争学习,计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者获胜。ART网络的思路是当网络接收新的输入时,按照预设定的参考门限检查该输入模式与所有存储模式类典型向量之间的匹配程度以确定相似度,对相似度超过门限的所有模式类,选择最相似的作为该模式的代表类,并调整与该类别相关的权值,以使后续与该模式相似的输入再与该模式匹配时能够得到更大的相似度。若相似度都不超过门限,就在网络中新建一个模式类,同时建立与该模式类相连的权值,用于代表和存储该模式以及后来输入的所有同类模式。

 

ART网络及算法在适应新输入模式方面具有较大的灵活性,同时能够避免对先前所学模式的修改,有利于保持旧知识的记忆。

 

5.5.3 SOM(Self-Organizing Map,自组织映射)网络

SOM网络是一种竞争学习型的无监督神经网络,能将高维输入映射到低维空间(如二维),同时保持输入数据在高维空间的拓扑结构。SOM网络在聚类、高维数据可视化、图像分割等方面有广泛应用。

 

 

5.5.4 级联相关(cascade-correlation)网络

级联相关网络是结构自适应网络,即在学习过程中网络结构也作为学习目标之一,级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但在数据较小时易陷入过拟合。

 

 

5.5.5 Elman网络

Elman网络是递归神经网络(RNN:recurrent neural network)之一,RNN可让一些神经元的输出反馈回来作为输入信号,从而能处理与时间有关的动态变化。Elman网络隐层神经元激活函数常采用sigmoid函数,网络训练采用BP算法。

 

 

5.5.6 Boltzmann机

玻尔兹曼机是一种基于能量的模型,神经网络的变化过程实质上是一个能量不断减少的过程,最终达到能量的极小值,即稳态。标准玻尔兹曼机是一个全连接图,复杂度高,不便于训练,实际中常采用受限玻尔兹曼机(Restricted Boltzmann Machine RBM),RBM可以用于降维,学习特征,深度信念网络等。

 

 

玻尔兹曼机神经元分为两层:显层和隐层。显层用于数据输入和输出,隐层则用于数据的内在表达。其中神经元都是布尔型的,状态1表示激活,状态0表示抑制。向量表示n个神经元的状态,wij表示神经元i和j之间的连接权,表示神经元i的阈值,则状态向量s所对应的玻尔兹曼机能量定义为:

 

玻尔兹曼机最终达到的稳态也称为玻尔兹曼分布,此时状态向量s出现的概率将仅由其能量与所有可能状态向量的能量确定:

 

 

玻尔兹曼机的训练过程就是一个将每个训练样本视为一个状态向量,使其出现的概率尽可能大。

 

RBM常用“对比散度”(contrastive divergence,CD)算法进行训练。假定网络中有d个显层神经元和q个隐层神经元,令v和h分别表示显层和隐层的状态向量,则有:

 

CD算法对每个训练样本v,先根据上式P(h|v)计算出隐层神经元状态的概率分布,然后根据这个概率分布采样得到h,此后,类似的根据上式P(v|h)从h产生v’,再从v’产生h’,连接权的更新公式为

 

阈值更新公式可类似获得。

 

5.6 深度学习

深度学习(deep learning)模型是很多层的神经网络。一般情况下,多隐层神经网络难以直接用标准BP算法进行训练,因为误差在多隐层内逆传播时,往往会发散而不能收敛。

多隐层神经网络训练常采用无监督逐层训练(unsupervised layer-wise training),即每次训练一层隐节点,称为“预训练”(pre-training),在预训练完成后,再对整个网络进行“微调”(fine-tuning)训练。

 

一种是深度信念网络(Deep belief network,DBN),每层都是一个RBM,使用无监督逐层训练方法,各层都按照标准RBM进行训练,然后再利用BP算法对整个网络进行训练。

 

另一种是卷积神经网络(convolutional neural network, CNN),采用了“权共享”(weight sharing),即让一组神经元使用相同的连接权,从而大幅减少了需要训练的参数数目。下图是一个经典的手写数字识别CNN算法

 

CNN是一种前馈神经网络,对于图像处理和语音识别有出色表现。它包括卷积层(alternating convolutional layer)和池层(pooling layer,也叫采样层),sigmoid函数作为卷积网络的激活函数。

 

无论是DBN还是CNN,可将网络中前若干层处理看做是在进行特征表示,最后一层处理是在进行分类,分类使用一个简单的模型即可。

 

5.7 阅读材料

神经网络历史上的三次高潮。神经网络学习存在理论性质不够清晰、试错性强、在使用中充斥大量的“窍门”的弱点。

原创粉丝点击