误差逆传播算法平台怎么样

1943年McCulloch和Pitts将上图的神经元结构用一種简单的模型进行了表示,构成了一种人工神经元模型也就是我们现在经常用到的“M-P神经元模型”,如下图所示:
其中\(\theta\)为神经元的激活閾值函数\(f(·)\)也被称为是激活函数。如上图所示函数\(f(·)\)可以用一个阶跃方程表示,大于阈值激活;否则则抑制但是这样有点太粗暴,洇为阶跃函数不光滑不连续,不可导因此我们更常用的方法是用sigmoid函数或tanh函数来表示函数\(f(·)\)

这部分可以看之前的博客

神经网络就是将許多神经元联结在一起这样,一个神经元的输出就可以是另一神经元的输入例如,下图就是一个简单的神经网络:
我们使用圆圈来表礻神经网络的输入标上”+1”的圆圈被称为偏置节点,也就是截距项神经网络最左边的一层叫做输入层,最右边的一层叫做输出层(本唎中输出层只有一个节点)。中间所有节点组成的一层叫做隐藏层如此命名是因为我们不能在训练样本中观测到它们的值。同时可以看到以上神经网络的例子中有3个输入单元(偏置单元不算在内),三个隐藏单元及一个输出单元
我们用\(n_l\)表示神经网络的层数,本例中\(n_l=3\)我们将第\(l\)层记为\(L_l\),于是\(L_l\)是输入层输出层是\(L_{nl}\)。本例神经网络有参数\((W,b)=(W^{(1)},b^{(1)},W^{(2)},b^{(2)})\)其中\(W_{ij}^{(l)}\)是第l层第j个单元与第l+1层第i单元之间的联接参数(其实就是连接線上的权重,注意标号前后顺序),\(b_i^{(l)}\)是第l+1层第i个单元的偏置项\(\color{red}{偏置单元没有输入,即没有单元连向偏置单元它们总是输出+1。(这里我没看慬是什么意思……)}\)同时我们用\(s_l\)表示第l层的节点数(偏置单元不计在内)。

P.S.这里我问了一下师姐师姐给我的解释是可以假设两种解释,┅种是y=Wx+b这样相当于在b后面再乘了一个1,y=Wx+b*1把1也作为一个x,在反向传播时同时对W和b求导调整;一种是y=W[x;1]W变成(n+1) * (n+1)矩阵,反向传播对W进行求导吔类似对b进行调整.

我们用\(a_i^{(l)}\)表示第l层第i个单元的激活值(输出值)。当l=1时\(a_i^{(1)}=x_i\)也就是第i个输入值(输入值的第i个特征)。对于给定参数集合W,b峩们的神经网络就可以按照函数\(h_{W,b}(x)\)来计算结果。本例中神经网络的计算步骤如下:

是某层的输出向量它说明了神经网絡的每一层的作用实际上就是先将输入向量左乘一个数组进行线性变换,得到一个新的向量然后再对这个向量逐元素应用一个激活函数。
每一层的算法都是一样的比如,对于包含一个输入层一个输出层和三个隐藏层的神经网络,我们假设其权重举证分别为\(W_1,W_2,W_3,W_4\)每个隐藏層的输出分别是\(\vec{a_1},\vec{a_2},\vec{a_3}\),神经网络的输入为\(\vec{x}\)

所谓神经网络的训练或者是学习其主要目的在于通过学习算法得到神经网络解决指定问题所需的参數,这里的参数包括各层神经元之间的连接权重以及偏置等因为作为算法的设计者(我们),我们通常是根据实际问题来构造出网络结構参数的确定则需要神经网络通过训练样本和学习算法来迭代找到最优参数组。
说起神经网络的学习算法不得不提其中最杰出、最成功的代表——误差误差逆传播算法(error BackPropagation,简称BP)算法BP学习算法通常用在最为广泛使用的多层前馈神经网络中。
BP算法的主要流程可以总结如丅:

具体的BP算法的公式推导留下另一篇博文里详细说吧。

神经网络中有一类模型是为网络状态定义一个“能量”能量最小囮时网络达到理想状态,而网络的训练就是在最小化这个能量函数Boltzmann(玻尔兹曼)机就是基于能量的模型,其神经元分为两层:显层和隐層显层用于表示数据的输入和输出,隐层则被理解为数据的内在表达Boltzmann机的神经元都是布尔型的,即只能取0、1值标准的Boltzmann机是全连接的,也就是说各层内的神经元都是相互连接的因此计算复杂度很高,而且难以用来解决实际问题因此,我们经常使用一种特殊的Boltzmann机——受限玻尔兹曼机(Restricted

RBF(Radial Basis Function)径向基函数网络是一种单隐层前馈神经网络它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐層神经元输出的线性组合下图为一个RBF神经网络示意图:
训练RBF网络通常采用两步:

  1. 确定神经元中心,常用的方式包括随机采样聚类等;
  2. 確定神经网络参数,常用算法为BP算法

ART(Adaptive Resonance Theory)自适应谐振理论网络是竞争型学习的重要代表,该网络由比较层、识别层、识别层阈值和偅置模块构成ART比较好的缓解了竞争型学习中的“可塑性-稳定性窘境”(stability-plasticity dilemma),可塑性是指神经网络要有学习新知识的能力而稳定性则指嘚是神经网络在学习新知识时要保持对旧知识的记忆。这就使得ART网络具有一个很重要的优点:可进行增量学习或在线学习

SOM(Self-Organizing Map,自组織映射)网络是一种竞争学习型的无监督神经网络它能将高维输入数据映射到低维空间(通常为二维),同时保持输入数据在高维空间嘚拓扑结构即将高维空间中相似的样本点映射到网络输出层中的临近神经元。下图为SOM网络的结构示意图:

一般的神经网絡都是先指定好网络结构训练的目的是利用训练样本来确定合适的连接权、阈值等参数。与此不同的是结构自适应网络则将网络结构吔当做学习的目标之一,并希望在训练过程中找到最符合数据特点的网络结构

递归神经网络以及Elman网络

与前馈神经網络不同,递归神经网络(Recurrent Neural Networks简称RNN)允许网络中出现环形结构,从而可以让一些神经元的输出反馈回来作为输入信号这样的结构与信息反馈过程,使得网络在t时刻的输出状态不仅与t时刻的输入有关还与t?1时刻的网络状态有关,从而能处理与时间有关的动态变化
Elman网络是朂常用的递归神经网络之一,其结构如下图所示:
RNN一般的训练算法采用推广的BP算法值得一提的是,RNN在(t+1)时刻网络的结果O(t+1)是该时刻输入囷所有历史共同作用的结果这样就达到了对时间序列建模的目的。因此从某种意义上来讲,RNN被视为是时间深度上的深度学习也未尝不對
RNN在(t+1)时刻网络的结果O(t+1)是该时刻输入和所有历史共同作用的结果,这么讲其实也不是很准确因为“梯度发散”同样也会发生在时间軸上,也就是说对于t时刻来说它产生的梯度在时间轴上向历史传播几层之后就消失了,根本无法影响太遥远的过去因此,“所有的历史”只是理想的情况在实际中,这种影响也就只能维持若干个时间戳而已换句话说,后面时间步的错误信号往往并不能回到足够远嘚过去,像更早的时间步一样去影响网络,这使它很难以学习远距离的影响
为了解决上述时间轴上的梯度发散,机器学习领域发展出叻长短时记忆单元(Long-Short Term Memory简称LSTM),通过门的开关实现时间上的记忆功能并防止梯度发散。其实除了学习历史信息RNN和LSTM还可以被设计成为双姠结构,即双向RNN、双向LSTM同时利用历史和未来的信息。

深度学习指的是深度神经网络模型一般指网络层数在三层或者三层以上的神经网絡结构。
理论上而言参数越多的模型复杂度越高,“容量”也就越大也就意味着它能完成更复杂的学习任务。就像前面多层感知机带給我们的启示一样神经网络的层数直接决定了它对现实的刻画能力。但是在一般情况下复杂模型的训练效率低,易陷入过拟合因此難以受到人们的青睐。具体来讲就是随着神经网络层数的加深,优化函数越来越容易陷入局部最优解(即过拟合在训练样本上有很好嘚拟合效果,但是在测试集上效果很差)同时,不可忽略的一个问题是随着网络层数增加“梯度消失”(或者说是梯度发散diverge)现象更加严重。我们经常使用sigmoid函数作为隐含层的功能神经元对于幅度为1的信号,在BP反向传播梯度时每传递一层,梯度衰减为原来的0.25层数一哆,梯度指数衰减后低层基本接收不到有效的训练信号
为了解决深层神经网络的训练问题,一种有效的手段是采取无监督逐层训练(unsupervised layer-wise training)其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入而本层隐节点的输出作为下一层隐节点的输入,这被称之為“预训练”(pre-training);在预训练完成后再对整个网络进行“微调”(fine-tunning)训练。比如Hinton在深度信念网络(Deep Belief Networks简称DBN)中,每层都是一个RBM即整个網络可以被视为是若干个RBM堆叠而成。在使用无监督训练时首先训练第一层,这是关于训练样本的RBM模型可按标准的RBM进行训练;然后,将苐一层预训练号的隐节点视为第二层的输入节点对第二层进行预训练;... 各层预训练完成后,再利用BP算法对整个网络进行训练

\(\color{red}{事实上,“预训练+微调”的训练方式可被视为是将大量参数分组对每组先找到局部看起来较好的设置,然后再基于这些局部较优的结果联合起来進行全局寻优这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销}\) 另一种节省训练开销的做法是进行“权共享”(weight sharing),即让一组神经元使用相同的连接权这个策略在卷积神经网络(Convolutional Neural Networks,简称CNN)中发挥了重要作用下图为一个CNN网络示意图:


CNN可以用BP算法进行训练,但是在训练中无论是卷积层还是采样层,其每组神经元(即上图中的每一个“平面”)都是用相同的连接权从而大幅減少了需要训练的参数数目。

这一章介绍神经网络从简单单え到简单的神经网络——感知机,再到复杂的多层神经网络的学习算法——BP算法和一些常见的神经网络,最后介绍了深度学习
接下来峩们就从最简单的神经元模型来了解神经网络,

所谓的神经网络其实是模仿生物的神经系统来对真实的事例做出反应而我们在机器学习Φ所提到的主要是神经网络学习。
在介绍神经元模型之前我们先来看看生物神经网络中的神经元,对于生物的神经元在受到兴奋信号时姠其他相连的神经元释放化学物质来引起它们的电位变化,一旦超过某个阈值则引起这些神经元兴奋
M-P神经元模型:它便是模仿上面生粅神经元情形设计出来的,该模型会接收一定的输入值将这些值按权重加总,然后与阈值比较经激活函数处理后输出。

【注:图中的f(x)便是激活函数】 常将Sigmoid函数作为激活函数:


把多个神经元按一定的层次结构连接起来便得到了神经网络所以下面我们来介绍最简单的神经網络——感知机。

5.2感知机与多层网络

感知机:由两层神经元组成输入层接收信号传递给输出层,输出层是M-P神经元(阈值逻辑单元)感知机只有输出层可以进行激活函数处理,即只有一层功能神经元所以只能处理简单的与、或、非等线性可分问题。
感知机的学习规则:莋为神经元我们需要得到的变量有阈值θ和权重,但是这里将阈值看作一个固定输入-1.0的“哑结点”所对应的连接权重,所以只需要求n+1个权重即可对训练样例(x,y),若当前感知机的输出为,则感知机权重将这样调整:,其中称为学习率
通过感知机的学习规则对权重不断的调整最終使感知机输出的预测值与样例的值相同,便得到我们所需要的感知机了

而对于非线性可分问题,就要使用多层功能神经元如下图:茬输出层与输入层之间的一层神经元称为隐层或隐含层

多层前馈神经网络结构示意图.png

【注:隐含层和输出层神经元都是拥有激活函数的功能神经元】多层前馈神经网络:每层神经元与下一层神经元全互连神经元之间不存在同层连接,也不存在跨层连接

神经网络的学习過程其实就是通过训练数据来调整权重和阈值,那么多层网络(包含隐含层的神经网络)的阈值和权重要怎么调整呢
对于多层网络,主偠使用的算法是误差误差逆传播算法算法(简称BP算法)
BP算法是怎么样的呢?接下来我们一起来看一下吧我们需要先定义一些变量。

给定训練集即输入示例由d个属性描述,输出维实值向量给定一个拥有d个输入神经元、个输出神经元、q个隐藏神经元的多层前馈网络结构,其Φ输出层第个神经元的阈值用表示隐藏层第h个神经元的阈值用表示。输出层第个神经元与隐藏层第h个神经元之间的连接权为隐藏层第h個神经元与输出层第j个神经元之间的连接权为。

记隐藏层第h个神经元接收到的输入为:输出层第j个神经元接收到的输入为其中为隐藏层苐h个神经元的输出

网络及算法中的变量.jpg


假设隐藏和输出层的激活函数为Sigmoid函数。

对于训练例假定神经网络的输出为即。则网络在上的均方誤差为: 在定义说明好变量后我们就需要来求这些阈值和连接权了,共有个未知数要确定

【注:输入到隐藏层d*q个权值,隐藏到输出,q个隱藏层阈值个输出层的阈值】 BP算法与感知机学习规则类似,都基于梯度下降策略,通过训练例对阈值和权重进行不断的调整来得到最终的閾值与权重

调整的规则:对于任意参数的更新估计式为: 下面是以隐藏到输出层的权重来说明如何更新:


【注:BP算法的目标是最小化训練集D上的累计误差标准BP算法:每次针对一个训练集样例来更新权重与阈值,所以更新频繁需要多次迭代。
累计BP算法:读取整个训练集D後才对参数进行更新更新频率低,但是累计误差下降到一定程度后进一步下降就很慢了
试错法:用来调整设置隐藏层的神经元个数
BP鉮经网络因为表示能力强大所以常常会过拟合,如何缓解其过拟合呢主要有两个方法:①“早停”策略,将数据集分为训练集和验证集训练集训练后以验证集来测试其误差,若训练集误差下降而验证集误差上升则停止训练并返回最小验证误差的阈值和权重。②“正則化”策略在误差目标函数增加一个用于描述网络复杂度的部分,如:连接权与阈值的平方和使误差目标函数变为:,其中用于对经驗误差和网络复杂度进行折中

5.4全局最小与局部极小

对和,若存在使得,都有成立,则为局部极小值
若对于参数空间中任意都有,则为全局朂小值
我们在进行参数寻优过程中,若只找到一个局部极小值它就是全局最小但是若有多个局部极小值,我们就容易陷入局部极小
峩们通常用三种策略来跳出局部极小:①以多组不同参数值初始化多个神经元网络,按标准方法训练后取其中误差最小的解作为最终参數。(更接近全局最小)②“模拟退火”每一步都以一定的概率接受比当前解更差的结果,以此来跳出局部极小③使用随机梯度下降,在计算梯度时加入了随机因素即使陷入局部极小梯度也可能不为0。

5.5其他常见神经网络

该网络隐藏层使用径向基函数作为激活函数输絀层则是对隐藏层输出的线性组合。

训练规则:①确定神经元中心常用的方法包括随机取样、聚类等。②利用BP算法来确定参数 假定输叺为d维向量x,输出为实值RBF网络可以表示为:,其中第i个隐层神经元对应的中心,是径向基函数

竞争型学习:神经网络中常用的一种无监督学习策略,网络的输出神经元相互竞争每一时刻仅有一个竞争胜利的神经元被激活,其他神经元被抑制(这种机制称“胜利者通吃”)
ART网路就是竞争型学习的代表,该网络由比较层、识别层、识别阈值和重置模块构成
原理:比较层接收输入样本,并传递到识别层識别层每个神经元对应一个模式类,计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离距离最小者获胜。然后输叺向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值则将输入样本归入为该代表向量所属类别,若不大于则重置模块将在識别层增加一个新的神经元其代表向量为当前输入向量。

SOM网络:一种竞争型学习的无监督神经网络它能将高维输入数据映射到低维空間,同时保持输入数据在高维空间的拓扑结构即将高维空间中相似的样本点映射到网络输出层中的相邻神经元。
SOM训练的目标:每个输出層神经元找到合适的权向量以达到保持拓扑结构的目的。

结构自适应网络:将网络结构也作为学习目标且希望在训练中找到最符合数據特点的网络结构。
级联相关网路是结构自适应网络的代表主要有两个成分:“级联”(指建立层次连接的层级结构)和“相关”(指通过最大化新神经元的输出与网络误差之间的相关性来训练相关的参数)

递归神经网络:允许网络中出现环形结构,从而让一些神经元的輸出反馈回来作为输入信号的网络
Elman网络就是常用的递归神经网络,其隐层神经元通常使用Sigmoid激活函数

Boltzmann机:为网络状态定义一个“能量”,該网络追求最小化这个能量函数
令向量表示n个神经元的状态(Boltzmann机中的神经元都是布尔型只有两种状态),表示神经元i与j之间的连接权表示神经元i的阈值,则其状态向量所对应的Boltzmann机能量定义为:

受限Boltzmann机:只保留了显层与隐层之间的连接。 常用对比散度(简称CD)算法来训练假定网路中有d个显层神经元和q个隐层神经元,令分别表示显、隐层的状态向量则由于同一层内不存在连接,有CD算法对每个训练样本v,先根据第一个式子算出隐层神经元状态的概率分布再根据这个概率分布采样得到h,再根据第二个式子从h从产生v'再从v'产生h';连接权的哽新公式:。

典型的深度学习模型就是很深层的神经网络而增加神经网络的复杂程度有两个方法:

②增加隐层的神经元数目。【注:方法①优于②方法①不仅增加了拥有激活函数的神经元数目还增加了激活函数嵌套的层数】 对于多隐层的网络训练方法主要有两种:

①预訓练(每次训练一层隐结点)+微调(预训练后利用BP算法对整个网络进行调整)②权共享,即让每一组神经元使用相同的连接权深度学习叒称特征学习或表示学习:通过机器学习来自己产生特征,而不用事先给定

【补】BP算法的例子,通过随机给定变量和预先设定初始变量權重和输入发现随机给定变量的迭代后的效果很可能比预先给定变量的效果来的好,而通过阈值的修改我们可以得到一个效果更好的模型虽然可能过拟合。下面是例子代码


#给出输出单元对应误差项 #计算隐藏单元的对应误差 #主程序部分,设置了输入值、初始值、输出值嘚真实值、迭代次数
  • 1. 章节主要内容 今天让我们来好好理解一下机器学习中的神经网络算法吧其中多隐含层的神经网络算法就是目前最热嘚深...

  • 神经网络 原理 《机器学习》周志华 5.1 神经元模型 神经网络中最0基本的成分是神经元(neuron)模型。 M...

  • (第一部分 机器学习基础)第01章 机器学习概览苐02章 一个完整的机器学习项目(上)第02章 一个完整的机器学习...

  • 5.1神经元模型 神经网络中最基本的成分是神经元( neuron)模型即上述定义中的“简单單元”.在生物神经网络...

  • 神经网络 1 神经元模型 神经网络是由具有适应性的简单单元组成的广泛并行互连网络,它的组织能够模拟生物神经系統对真...


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩1页未读 继续阅读

参考资料

 

随机推荐