《机器学习(周志华)》——第5章 神经网络

1、神经元模型

(1)神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应

(2)神经网络中最基本的成分是神经元(neuron)模型

(3)M-P神经元模型:神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到的输入值将与神经元的阈值进行比较,通过“激活函数”(activationfunction)处理以产生神经元的输出。

(4)理想的激活函数是阶跃函数将输入值映射为输出值“0”(抑制)或“1”(兴奋),但是阶跃函数不连续、不光滑实际常用sigmoid函数,将较大范围内变化的输入值挤压到(0,1)输出值范围内

 

2、感知机与多层网络

(1)感知机(perceptron)由两层神经元组成,输入层接收外界输入信号传递给输出层,输出层是M-P神经元,也称“阈值逻辑单元”(threshold logicunit);感知机能实现逻辑与、或、非运算。

(2)给定训练数据集,权重ωi(i=1,2,…,n)以及阈值θ可通过学习得到,阈值θ可看作输入固定为-1.0的“哑结点”所对应的连接权重ωn+1;对训练样例(x,y),若当前感知机的输出为y’,则将如下调整:

ωi  ← ωi  + Δωi  ,          Δωi = η(y – y’) xi

其中η∈(0,1)称为学习率(learning rate)

(3)感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functionalneuron)无法处理非线性划分。

(4)与、或、非问题都是线性划分(linearly separable)问题,即存在一个线性超平面可将它们分开,这种情况感知机一定会收敛(converge)而求得适当的权向量 ω = (ω1 ; ω2 ; … ; ωn+1);否则感知机学习过程将会发生振荡(fluctuation)ω难以稳定下来

(5)要解决非线性问题,需使用多层功能神经元,输出层与输入层之间的一层神经元,被称为隐含层(hidden layer),隐含层和输出层神经元都是拥有激活函数的功能神经元

(6)神经网络的多层结构,每层神经元与下一层神经元全互连,不存在同层连接,也不存在跨层连接,这种称为“多层前馈神经网络”(multi-layerfeedforward neural networks);输入层神经元仅接受输入,不进行函数处理,隐含层与输出层包含功能神经元;神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”(connection weight)以及每个功能神经元的阈值

 

3、误差传播算法

(1)误差逆传播(error BackPropagation)算法(简称BP算法),在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计,基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行调整;

     如假设输入实例有d个输入神经元,l个输出神经元,q个隐藏层神经元,则均方误差为Ek,则:

给定学习率η,有:

注意到ωhj 先影响到第j个输出层神经元的输入值βj ,再影响到其输出值y’jk,然后在影响到Ek,有

(2)BP算法工作过程:

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

② 计算输出层的误差,再将误差逆向传播至隐含层神经元;

③ 根据隐含层神经元的误差来对连接权和阈值进行调整;

④ 该迭代过程循环,直到达到某些停止条件为止。

(3)标准BP和累积BP

① 标准BP每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象,往往需要进行更多次数的迭代;

② 累积BP算法直接针对累计误差最小化,它在读取整个训练集D一遍后才对参数进行更新,更新频率低,且累计误差下降到一定程度后,进一步下降会非常缓慢。

(4)通常采用“试错法”(trial-by-error)设置隐含层神经元的个数。

(5)缓解BP网络过拟合的策略:

“早停”(early stopping):将数据集分为训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值;

“正则化”(regularization):在误差目标函数中增加一个用于描述网络复杂度的部分,如连接权和阈值的平方和;仍令Ek表示第k个训练样例上的误差,ωi表示连接权和阈值,则误差目标函数变为:

其中λ∈(0,1)用于对经验误差与网络复杂度两项进行这种,常通过交叉验证法来估计。

 

 

4、全局最小与局部最小

(1)神经网络在训练集上的误差E,显然是关于连接权ω和阈值θ的函数,所以训练过程也是参数寻优过程,即寻找一组最优参数使得E最小

 

(2)我们通常谈到两种“最优”:

局部极小(local minimum):指参数空间中的某个点,其邻域点的误差函数值均不小于该店的函数值,此时对应的E称为局部极小值;

全局最小(global minimum):指参数空间中所有点的误差函数值,均不小于该点的误差函数值,此时对应的E称为全局最小值。

 

(3)基于梯度的搜索是使用最广泛的参数寻优方法,如梯度下降法就是沿着负梯度方向搜索最优解

 

(4)“跳出”局部极小的常用方法:

① 以多组不同的参数值初始化多个神经网络,取其中误差最小的解作为最终参数;也就是说从多个不同的初始点开始搜索,这样可能陷入不同的局部极小,从中选择更接近全局最小的结果

② 使用“模拟退火”(simulated annealing)技术,在每一步都以一定的概率接受比当前解更差的结果,有助于“跳出”局部极小;每次迭代过程中,接受“次优解”的概率随着时间的推移而降低,保证算法稳定;

③ 使用随机梯度下降,与标准梯度下降精确计算梯度不同,随机梯度下降法在计算梯度时加入随机因素,所以即使陷入局部极小点,它计算出的梯度仍可能不为0,这就有机会跳出局部极小继续搜索。

遗传算法(genetic algorithms)也常用来训练神经网络以更好地逼近全局最小。

 

5、其他常见的神经网络

(1)RBF(Radial Basis Function,径向基函数)网络

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

② 假定输入为d维向量x,输出为实值,则RBF网络表示为:

 

其中q表示隐层神经元的格式,ci和ωi分为表示第i个隐层神经元对应的中心和权重,ρ(x, ci) 是径向基函数。

③ 径向基函数是某种沿径向对称的标量函数,通常定义为样本x到数据中心ci之间的欧氏距离的单调函数,常用高斯径向基函数为:

 

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

 

(2)ART网络

竞争型学习(competitive learning)是常用的无监督学习策略,使用该策略时,网络输出神经元相互竞争,每个时刻仅有一个竞争获胜的神经元被激活,其他神经元被抑制,称为“胜者通吃”(winner-take-all)原则。

ART(AdaptiveResonance Theory,自适应谐振理论),由比较层、识别层、识别阈值和重置模块构成;比较层负责接收输入样本,并将其传递给识别层神经元,识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。

③ 识别层接收到比较层的输入信号后,识别层神经元之间相互竞争以产生获胜神经元;

竞争方式:计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者获胜,获胜神经元将向其他识别层神经元发送信号,抑制其激活;若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权更新,使得以后在接收到相似输入样本时该模式会计算出更大的相似度;若相似度不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量

④ ART网络具有更好的可塑性(plasticity,学习新知识的能力)稳定性(stability,学习新知识同时保持旧知识的记忆),可进行增量学习(incremental learning)或在线学习(online learning)。

增量学习:指在学得模型后,再接收到训练样例时,仅需根据新样例对模型进行更新,不必重新训练整个模型,并且先前的有效信息不会被“冲掉”;

在线学习:指每获得一个新样本就进行一次模型更新。】

 

(3)SOM网络

SOM(Self-Organizing Map,自组织映射),是一种竞争学习型的无监督神经网络,可将高维输入数据映射到低维空间,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中邻近的神经元

② SOM训练目标就是为每个输出层神经元找到合适的权向量,达到保持拓扑结构的目的;

   训练过程:在接收到一个训练样本后,每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元称为竞争获胜者,称为最佳匹配单元(best matching unit);然后,最佳匹配单元及其临近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小,不断迭代,直至收敛。

 

(4)级联相关网络

结构自适应网络(也成“构造性”网络)将网络结构也当作学习的目标之一,希望找到最符合数据特点的网络结构,级联相关(Cascade-Correlation)是其代表。

② 级联相关网络有“级联”和“相关”两个主要成分;

   级联指建立层次连接的层级结构,训练开始时,网络处于最小拓扑(只有输入层和输出层),随着训练进行,新的隐层神经元逐渐加入,从而创建起层级结构,当新的隐层神经元加入时,其输入端的连接权值是冻结固定的

   相关是指通过最大化新神经元的输出与网络误差之间的相关性(correlation)来训练相关的参数。

③ 级联相关网络无需设置网络层数、隐层神经元数目,且训练速度较快,但在数据小时容易过拟合。

 

(5)Elman网络

递归神经网络(recurrent neural networks)允许网络出现环形结构,可让一些神经元的输出反馈回来作为输入信号,也就是网络在t时刻的输出状态不仅和输入有关,还和t-1时刻的网络状态有关。

② Elman网络是常用的递归神经网络,其结构与多层前馈网络相似,但隐层神经元的输出被反馈回来,与下一时刻的输入层神经元提供的信号,一起作为隐层神经元下一时刻的输入。

隐层神经元常采用sigmoid激活函数,网络训练通过推广的BP算法进行。

 

(6)Boltzmann机

① Boltzmann机是一种“基于能量的模型”(energy-based model),神经元分为显层和隐层显层用于表示数据输入和输出隐层被理解为数据的内在表达;Boltzmann机中神经元都是布尔型的,只能取0、1两种状态,状态1表示激活,状态0表示抑制。

② 令向量s∈{0,1}n表示n个神经元的状态,ωij表示神经元i与j之间的连接权,θi表示神经元i的阈值,则状态向量s对应的Boltzmann机能量定义为:

 

③ Boltzmann机的训练过程就是将每个训练样本视为一个状态向量,使其出现的概率尽可能大,标准Boltzmann机是一个全连接图,网络复杂度高。

④ 现实中常使用受限Boltzmann机仅保留显层和隐层之间的连接),它常用“对比散度”(Contrastive Divergence),即CD算法进行训练;假定网络中有d个显层神经元和q个隐层神经元,令vh分别表示显层与隐层的状态向量,由于同一层内不存在连接,有:

 

CD算法对每个训练样本v,根据下面的式子计算隐层神经元状态的概率分布,然号后根据概率分布采样得到h;类似再根据上面的式子从h产生v’,在从v’产生h’;连接权更新公式:

 

 

6、深度学习

(1)典型的深度学习模型就是很深层的神经网络,提高神经网络模型容量的方法是增加隐层数目,从增加模型复杂度角度,增加隐层数目比增加隐层神经元数目更有效。

 

(2)无监督逐层训练(unsupervisedlayer-wise training)是多隐层网络训练的有效手段。基本思想是:每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,本层隐结点的输出作为下一层隐结点的输入,这称为预训练(pre-training);预训练完成后,再对整个网络进行“微调”(fine-tuning)训练。“预训练+微调”基于局部最优进行全局寻优,如深度信念网络(deep belief network,简称DBN)。

 

(3)另一种节省训练开销的策略是“权共享”(weight sharing),即让一组神经元使用相同的连接权,代表是CNN(Convolutional NeuralNetwork)。CNN采用BP算法进行训练,但无论是卷积层还是采样层(也称池化层),其每一组神经元都是用相同的连接权。

【使用CNN时常将sigmoid激活函数替换为修正线性函数——当x<0时,f(x)=0;当x≥0时,f(x)=x。这样的神经元称为ReLU(Rectified Linear Unit)。此外,池化层常采用“max pooling”或“mean pooling”,这更接近于集成学习。】

 

(4)无论是DBN还是CNN,通过多层堆叠,每层将上一层输出进行处理,将“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务,可理解为“特征学习”(feature learning)或“表示学习”(representation learning)。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 什么是泛化能力?泛化能力和过拟合之间有什么关系? 泛化能力是指模型在新的、未见过的数据上的表现能力。模型的泛化能力与其对训练数据的拟合程度有关,通常来说,过拟合的模型泛化能力较差。 2. 什么是交叉验证?交叉验证的作用是什么? 交叉验证是一种通过将数据集分成若干个子集来进行模型评估的方法。具体地,将数据集分成k个子集,每个子集都轮流作为测试集,其余子集作为训练集,重复k次,最终得到k个模型的评估结果的平均值。交叉验证的作用是提高模型评估的可靠性和泛化能力。 3. 留出法、k折交叉验证和留一法的区别是什么?它们各自适用于什么情况? 留出法是将数据集分成两部分,一部分作为训练集,另一部分作为测试集。留出法适用于数据集较大的情况。 k折交叉验证是将数据集分成k个子集,每个子集都轮流作为测试集,其余子集作为训练集,重复k次,最终得到k个模型的评估结果的平均值。k折交叉验证适用于数据集较小的情况。 留一法是k折交叉验证的一种特殊情况,即将数据集分成n个子集,每个子集都作为测试集,其余子集作为训练集,重复n次。留一法适用于数据集较小且样本数较少的情况。 4. 为什么要对数据进行预处理?数据预处理的方法有哪些? 数据预处理可以提高模型的表现,并且可以减少过拟合的风险。数据预处理的方法包括:标准化、归一化、缺失值填充、特征选择、特征降维等。 5. 什么是特征选择?特征选择的方法有哪些? 特征选择是指从所有特征中选择出对模型预测结果有重要贡献的特征。特征选择的方法包括:过滤式方法、包裹式方法和嵌入式方法。其中,过滤式方法是基于特征间的关系进行特征选择,包裹式方法是基于模型的性能进行特征选择,嵌入式方法是将特征选择嵌入到模型训练中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值