西瓜书学习笔记第5章【神经网络】

西瓜书学习笔记第5章【神经网络】

  • 5.1神经元模型
  • 5.2 感知机与多层网络
    • 一、感知机
    • 二、多层功能神经元(多层网络)
  • 5.3误差逆传播算法(反向传播(BP)算法)
    • 对各个参数更新公式的推导
    • “早停(early stopping)”
    • “正则化(regularization)”
  • 5.4 全局最小与局部极小
    • “跳出”局部极小
  • 5.5其他神经网络(简介)
    • 5.5.1径向基函数(RBF)网络
    • 5.5.2自适应谐振理论(ART)网络
    • 5.5.3自组织映射(SOM)网络
    • 5.5.4级联相关网络
    • 5.5.5Elman网络
    • 5.5.6Boltzmann 机
  • 5.6 深度学习
    • 无监督逐层训练(unsupervised layer-wise training)

5.1神经元模型

  • 神经网络(neural network)定义:它是目前最为火热的研究方向之一——深度学习的基础。神经网络是一个强大的机器学习方法,它是由具有适应性的简单单元组成的广泛并行互连的网络,能够模拟生物神经系统对真实世界物体做出交互式的反应。
  • ​​​​​​​神经网络中最基本的成分是神经元(neuron)模型,即上述定义中的“简单单元”。
  • 在生物神经网络中,每个神经元与其他神经元相连,当某个神经元兴奋时,它就会向其他相连的神经元传递化学物质,从而改变了这些神经元内的电位;如果某个神经元的电位超过了一个阈值(threshold),那么就会被激活,即兴奋起来,向其他神经元发送化学物质。

M-P神经元模型正是从生物神经网络中抽象出来的。
在M-P神经元模型中,神经元接收到其他n个神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”(active function)处理以产生神经元的输出
西瓜书学习笔记第5章【神经网络】_第1张图片
把许多这样的神经元按一定的层次结构连接起来,就得到了神经网络。

  • 理想的激活函数是如下图所示的阶跃函数,它将输入值映射为“0”(神经元抑制),“1”(神经元兴奋)。
  • 然而,阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用Sigmoid函数作为激活函数。如下图所示,它把可能在较大范围内变化的输入值挤压到(0,1)输出值的范围内,因此有时也称为“挤压函数”(squashing function)
    西瓜书学习笔记第5章【神经网络】_第2张图片

神经网络可视为一个包含很多参数的数学模型,这个模型是若干个函数相互嵌套代入而得。有效的神经网络大多以数学证明为支撑。(函数正值就输出。)

5.2 感知机与多层网络

一、感知机

感知机(Perceptron)由两层神经元组成,输入层接受外界输入信号后传递给输出层,输出层是M-P神经元亦称“阈值逻辑单元”(threshold logic unit)。最上面那层是输出层,下面那层是输入层。
注意到:在这里插入图片描述
可以将阈值θ看作一个固定输入为 -1的"哑结点" (dummy node) 所对应的连接权重wn+1 ,这样,权重和阈值的学习就可统一为权重的学习。
西瓜书学习笔记第5章【神经网络】_第3张图片
感知机的学习规则(学习wi和阈值θ):对于训练样本(x,y),当该样本进入感知机学习后,会产生一个对应的输出值y’,若真实输出值y与其不一致,则感知机会对权重进行调整,若激活函数为阶跃函数,则调整方法为(梯度下降算法):西瓜书学习笔记第5章【神经网络】_第4张图片
感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元(functional neuron),其学习能力非常有限,只能处理线性可分的问题。不能解决"非线性可分"如
异或这样简单的非线性可分问题。
西瓜书学习笔记第5章【神经网络】_第5张图片
对于线性可分的问题,感知机的学习过程总能收敛(converge)而求得适当的权向量w=(w1;w2;…;wn+1);否则感知机学习过程将会发生震荡(fluctuation)难以稳定下来,不能求得合适解(遇到"非线性可分"问题)。

二、多层功能神经元(多层网络)

对于线性不可分的问题(如异或问题),则需要用多层功能神经元。
输出层与输入层之间的一层神经元,被称为隐层或隐含层(hidden laye),隐含层和输出层神经元都是拥有激活函数的功能神经元.
西瓜书学习笔记第5章【神经网络】_第6张图片
更一般的,常见的神经网络是如下图所示的层级结构,每层神经元与下层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络结构通常称为“多层前馈神经网络”(multi-layer feedforward neural networks)。前馈是指网络拓扑结构上不存在环或回路。
西瓜书学习笔记第5章【神经网络】_第7张图片

输出层:输出层神经元为功能神经元,进行函数处理
隐层(hidden layer):隐层神经元为功能神经元,进行函数处理
输入层:输入层神经元仅接收外界输入信息,不进行函数处理

神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”(connection weight)和每个功能神经元的阈值。换言之,神经网络"学"到的东西,蕴涵在连接权与阙值中。

5.3误差逆传播算法(反向传播(BP)算法)

  • 多层网络拥有比单层感知机更强大的学习能力,之前论述的简单感知机学习规则对于多层网络来说显然不够用了,需要更强大的学习算法。误差逆传播(error BackPropagation,简称BP)算法就是其中的杰出代表,是迄今最成功的神经网络学习算法。
  • 通常说 "BP 网络"时,般是指用 BP 算法训练的多层前馈神经网络。
  • BP算法除了运用在多层前馈神经网络之外,还可用于其他类型的神经网络,例如训练递归神经网络。

BP算法:
在这里插入图片描述
西瓜书学习笔记第5章【神经网络】_第8张图片
西瓜书学习笔记第5章【神经网络】_第9张图片
xi是输入,bh为隐层第h个神经元的输出。
西瓜书学习笔记第5章【神经网络】_第10张图片
图5.7的网络中有( d + 1 + l) ∗ q+ l 个参数需要确定:

  1. 输入层到隐层的 dxq个权值;
  2. 隐层到输出层的qxl个权值;
  3. q个隐层神经元的阈值;
  4. l个输出经元的阈值.

BP是一个迭代学习算法,在迭代的每一轮采用广义的感知机学习规则对参数进行更新估计,与感知机的类似,对于任意参数v,更新估计式为:在这里插入图片描述
BP基于梯度下降(gradient decent)策略寻找最小化均方误差,以目标的负的梯度方向对参数进行调整。

对各个参数更新公式的推导

西瓜书学习笔记第5章【神经网络】_第11张图片
西瓜书学习笔记第5章【神经网络】_第12张图片
西瓜书学习笔记第5章【神经网络】_第13张图片
西瓜书学习笔记第5章【神经网络】_第14张图片
西瓜书学习笔记第5章【神经网络】_第15张图片BP算法的工作流程:

  1. 输入示例传给输入层,再逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差(第4-5行),再将误差逆传播至隐层神经元(第6行),最后根据隐层神经元的误差来对连接权和阈值进行调整(第7行)。
  2. 停止条件,例如训练误差已达到一个很小的值。
    西瓜书学习笔记第5章【神经网络】_第16张图片

注意:BP算法的目标是要最小化训练集D上的累积误差E:
西瓜书学习笔记第5章【神经网络】_第17张图片
上图介绍的“标准BP算法”的更新规则是基于for循环下的单个Ek推导而得。(但最终效果依然是最小化累积误差),若类似地推导出基于累积误差最小化的更新规则(即每次都是基于累计误差而不再是单个误差进行调整),就得到了累积误差逆传播(accumulated error backpropagation)算法

1.标准BP算法:

  • 每次更新只针对单个样例,参数更新非常频繁
  • 对不同样例进行更新的效果可能出现“抵消”现象
  • 为了达到同样的累计误差极小点,往往需进行更多次次数的迭代

相对应的

2.累计BP算法:

  • 直接针对累计误差最小化,读取整个训练集D一遍后(进行了一轮学习)才进行参数更新,参数更新频率相对低得多。

但在很多任务中,累计误差下降到一定程度后,进一步下降会非常缓慢,这时标准 BP 往往会更快获得较好的解,尤其是在训练集D非常大时更明显.

注:标准BP算法和累积BP算法的区别类似于随机梯度下降与标准梯度下降之间的区别。

梯度下降和随机梯度下降之间的关键区别:
  1、标准梯度下降是在权值更新前对所有样例汇总误差,而随机梯度下降的权值是通过考查某个训练样例来更新的。
  2、在标准梯度下降中,权值更新的每一步对多个样例求和,需要更多的计算。
  3、标准梯度下降,由于使用真正的梯度,标准梯度下降对于每一次权值更新经常使用比随机梯度下降大的步长。
  4、如果标准误差曲面有多个局部极小值,随机梯度下降有时可能避免陷入这些局部极小值中。

多层前馈神经网络有强大的表示能力,只要隐层包含的神经元数量足够多,它就能以任意精度逼近任意复杂度的连续函数。然而,如何设置隐层神经元的个数仍是个未决问题,实际应用中通常靠“试错法”(trail-by-error)调整

正是由于其强大表示能力,经常遇到这样的情况:训练误差持续降低,但测试误差却在上升,这就是BP神经网络经常遭遇的过拟合问题。

常用的两种缓解策略:

“早停(early stopping)”

将数据分成训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若出现过拟合现象,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

“正则化(regularization)”

在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和。
仍令Ek表示第k个训练样例上的误差,wi表示连接权和阈值,则误差目标函数(5.16)改变为:
在这里插入图片描述
在这里插入图片描述

5.4 全局最小与局部极小

若用E表示神经网络在训练集上的误差,则它是关于连接权ω和阈值θ的函数。此时,神经网络的训练过程可看作一个参数寻优过程,即在参数空间中,寻找一组最优参数使得E最小。我们在参数寻优过程中希望找到的就是全局最小值。
西瓜书学习笔记第5章【神经网络】_第18张图片
(就是极小值和最小值的区别。)
显然,参数空间内梯度为零的点,只要其误差函数值小于邻点的误差函数值,就是局部极小值。局部极小值可以有多个,全局最小值只有一个。我们在参数寻优过程中希望找到的就是全局最小值。

基于梯度的搜索是使用最广泛的参数寻优方法。在该类方法中,我们从某些初始解出发,然后根据梯度确定搜索方向。例如,由于负梯度是函数值下降最快的方向,因此梯度下降法就是沿着负梯度方向搜索最优解。

若误差函数在当前点的梯度为0,则已经达到局部极小,之后不会再做更新,这就意味着参数的迭代更新就到此停止了。很明显这样做的一个问题是,若误差函数有多个局部极小,那么就不能保证当前找到的解是全局最小。

这种情况,我们称参数寻优陷入了局部极小。

“跳出”局部极小

人们常采用以下三种策略来试图“跳出”局部极小,从而进一步接近全局最小(不能保证得到的就是全局最小,只是更接近):

  1. 以多组不同的参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。
    这相当于从多个不同的初始点开始搜索,这样可能陷入多个不同的局部极小,从中进行选择有可能得到更接近全局最小的解。(取多个不同的初始值训练)
  2. 使用模拟退火(simulated annealing)技术西瓜书学习笔记第5章【神经网络】_第19张图片
    模拟退火在每一步都以一定的概率接受比当前解更差的结果,从而有助于"跳出"局部极小。 在每步迭代过程中接受"次优解"的概率要随着时间的推移而逐渐降低,从而保证算法稳定。
  3. 使用随机梯度下降。与标准梯度下降法精确计算精度不同,随机梯度下降在计算梯度时引入了随机因素。于是,即使陷入局部极小点,它计算出的梯度仍可能不为零,这样就有机会跳出局部极小继续搜索。

上述用于跳出局部极小的技术大多是启发式,理论上尚缺乏保障。

此外,遗传算法也常用来训练神经网络以更好地逼近全局最小。

5.5其他神经网络(简介)

5.5.1径向基函数(RBF)网络

RBF(Radial Basis Function,径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。假定输入为d维向量x,则输出为实值,则RBF网络可表示为:
西瓜书学习笔记第5章【神经网络】_第20张图片
通常采用两步过程训练RBF网络:
(1)确定神经元中心ci,常用的方式包括聚类、随机采样等;
(2)利用BP算法确定参数wi和βi。

5.5.2自适应谐振理论(ART)网络

  • 思想基础竞争型学习 (competitive learning) 是神经网络中一种常用的无监督学习策略。在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被撤活,其他神经元的状态被抑制.这种机制亦称"胜者通吃" (winner-take-all) 原则。
  • 结构:ART(Adaptive Resonance Theory,自适应谐振理论)网络 [Carpenter and
    Grossberg, 1987]可是竞争型学习的重要代表。该网络由比较层、识别层、识别阈值和重置模块构成.比较层负责接收输入样本,并将其传递给识别层神经元.识别层每个神经元对应 一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。
  • 过程:竞争的最简单力方式是,计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜。获胜神经元将向其他识别层神经元发送信号,抑制其撤活。若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权将会更新,使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜;若相似度不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。
  • 优点:ART 比较好地缓解了竞争型学习中的==“可塑性-稳定性窘境” (stability plasticity dilemma) 可塑性是指神经网络要有学习新知识的能力,而稳定性==则是指神经网络在学习新知识时要保持对旧知识的记忆.这就使得ART 网络具有一个很重要的优点:可进行增量学习 (incremental learning) 或在线学习 (online learning) .

5.5.3自组织映射(SOM)网络

  • SOM(Self-Organizing Map ,自组织映射)网络 [Kohonen 1982] 是一种竞争学习型的无监督神经网络,它能将高维输入数据映射到低维空间(通常为二维) ,同时保持输入数据在高维空间的拓扑结构,即将高维空间中相似的样本点映射到网络输出层中的邻近神经元。
  • SOM 的训练过程很简单:在接收到一个训练样本后.每个输出层神经元会计算该样本与自身携带的权向量之间的距离,距离最近的神经元成为竞争获胜者,称为最佳匹配单元 (best matching unit)。然后,最佳匹配单元及其邻近神经元的权向量将被调整,以使得这些权向量与当前输入样本的距离缩小。这个过程不断迭代,直至收敛。
  • SOM 网络在聚类、高维数据可视化、图像分割等方面有广泛应用。
  • 如图 5.11 所示, SOM 网络中的输出层神经元以矩阵方式排列在二维空间中,每个神经元都拥有一个权向量,网络在接收输入向量后,将会确定输出层获胜神经元,它决定了该输入向量在低维空间中的位置.SOM 的训练目标就是为每个输出层神经元找到合适的权向量,以达到保持拓扑结构的目的.

西瓜书学习笔记第5章【神经网络】_第21张图片

5.5.4级联相关网络

一般的神经网络模型通常假定 网络结构是事先固定的,训练的目的是利用训练样本来确定合适的连接权、 阙值等参数.与此不同, 结构自适应网络则将网络络结构也当作学习的目 标之 一,并希望能在训练过程中找到最符合数据特点的网络结构。级联相关(Cascade-Correlation [Fahlman and Lcbiere, 1990] 是结构适应网络(亦称"构造性" (constructive) 神经网络)的重要代表。
西瓜书学习笔记第5章【神经网络】_第22张图片
级联相关网络包括两个主要部分:“级联”和“相关”。级联是指建立层次连接的层级结构,相关是指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数。

当新的隐层神经元加入时,其输入端连接权值是冻结固定的。

级联相关网络不需要设置网络层数、隐层神经元数量,并且训练速度快,但在较小数据集中容易陷入过拟合。

5.5.5Elman网络

与前馈神经网络不同==“递归神经网络” (recurrent neural networks) 允许网络中出现环形结构,从而可让一些神经元的输出反馈回来作为输入信号==.这样的结构与信息反馈过程,使得网络在 t 时刻的输出状态不仅与 t 时刻的输入有关,还与 t-1 时刻的网络状态有关,从而能处理与时间有关的动态变化.

Elman 网络 [Elman, 1990] 是最常用的递归神经网络之一,其结构如图所示,它的结构与多层前馈网络恨相似,但隐层神经元的输出被反馈回来,与下一时刻输入层神经元提供的信号一起,作为隐层神经元在下 时刻的输入.隐层神经元通常采用 Sigmoid 激活函数,而网络的训练则常通过推广的 BP 算法进行 。
西瓜书学习笔记第5章【神经网络】_第23张图片

5.5.6Boltzmann 机

神经网络中有一类模型是为网络状态定义一个"能量" (energy) ,能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数.Boltzmann 就是一种==“基于能量的模型” (energy-based model) ==,常见结构如图5.14(a) 所示,其神经元分为两层:显层与隐层.显层用于表示数据的输入与输出,隐层则被理解为数据的内在表达.
西瓜书学习笔记第5章【神经网络】_第24张图片
Boltzmann机中的神经元都是布尔型的,若网络中的神经元以任意不依赖输入值的顺序进行更新,则网络最终将达到Boltzmann分布。

5.6 深度学习

理论上来说,参数越多的模型复杂度越高、“容量”(capacity)越大,这意味着它能完成更复杂的学习任务。但一般情况下,复杂模型的训练效率低,易陷入过拟合

训练效率低可由计算能力的提升缓解。

过拟合风险可由训练数据的大幅增加缓解。

因此,以“深度学习”(deep learning)为代表的复杂模型开始受到人们的关注。(大型深度学习模型中甚至有上百亿个参数。)
典型的深度学习模型就是很深层的神经网络。

对于神经网络模型,提高容量的一个简单方法就是增加隐层的数量。

从增加模型复杂度的角度看,增加隐层的数目显然比增加隐层神经元的数目更有效。因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。

多隐层神经网络难以直接用经典算法(如标准BP算法)进行训练,因为误差在多隐层内逆传播时,往往会“发散”(diverge)而不能收敛到稳定状态。
(这里所说的"多隐层"是指三个以上隐层;深度学习模型通常有八九层甚至更多隐层.)

无监督逐层训练(unsupervised layer-wise training)

是多隐层神经网的训练的有效手段。其基本思想是:

  1. 每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出又作为下一层隐结点的输入,这称为“预训练”(pre-training)
  2. 预训练全部完成后,再对整个网络进行==“微调”(fine-tuning)训练==

“预训练+微调”的做法可视为:将大量参数分组,对每组先找到局部看起来比较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。(如深度信念网络(deep belief network,筒称DBN) )

另一种节省训练开销的策略是“权共享”(weight sharing),即让一组神经元使用相同的连接权。这种策略在卷积神经网络((Convolutional Neural Network,简称CNN)中发挥了重要作用。

若将网络中前若干层处理看作是在进行特征表示,只把最后一层处理看作是在进行“分类”,则分类使用的就是一个简单模型。

通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用"简单模型"即可完成复杂的分类等学习任务,由此可将深度学习理解为进行"特征学习"(feature learning) 或"表示学习"(representation learning)。

思维导图:
西瓜书学习笔记第5章【神经网络】_第25张图片
参考链接:https://blog.csdn.net/qq_38962336/article/details/106397677?spm=1001.2014.3001.5502
参考链接:https://blog.csdn.net/shichensuyu/article/details/90907029

你可能感兴趣的:(西瓜书-机器学习(学习笔记),机器学习,深度学习,卷积神经网络,神经网络,人工智能)