深度学习之反向传播.doc

深度学习之反向传播.doc

ID:55590171

大小:1.40 MB

页数:9页

时间:2020-05-19

深度学习之反向传播.doc_第1页
深度学习之反向传播.doc_第2页
深度学习之反向传播.doc_第3页
深度学习之反向传播.doc_第4页
深度学习之反向传播.doc_第5页
资源描述:

《深度学习之反向传播.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、深度学习之反向传播算法(BackPropagation)1.算法简介反向传播算法(BP算法)主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。BP算法要求每个人工神经元(节点)所使用的激励函数必须是可微的。BP算法特别适合用来训练前向神经网络。2.算法原理假设有一个固定样本集 ,它包含  个样例。可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例 ,其代价函数(或损失函数)为:这是一个(二分之一的)方差代价函数。给定一个包含  个样例的数据集,可以定义整体代价函数为:以上公式中的第一项  是一个均方差项。第二项是一个规

2、则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。[注:通常权重衰减的计算并不使用偏置项 ,比如在  的定义中就没有使用。一般来说,将偏置项包含在权重衰减项中只会对最终的神经网络产生很小的影响。]权重衰减参数  用于控制公式中两项的相对重要性。在此重申一下这两个复杂函数的含义: 是针对单个样例计算得到的方差代价函数; 是整体样本代价函数,它包含权重衰减项。以上的代价函数经常被用于分类和回归问题。在分类问题中,利用  或 1,来代表两种类型的标签(这是因为sigmoid激活函数的值域为 ;如果我们使用双曲正切型激活函数,那么应该选用  和  作为标签)。对于回

3、归问题,我们首先要变换输出值域,以保证其范围为  (同样地,如果使用双曲正切型激活函数,要使输出值域为 )。我们的目标是针对参数  和  来求其函数  的最小值。为了求解神经网络,需要将每一个参数  和  初始化为一个很小的、接近零的随机值(比如说,使用正态分布  生成的随机值,其中  设置为  ),之后对目标函数使用诸如批量梯度下降法的最优化算法。因为  是一个非凸函数,梯度下降法很可能会收敛到局部最优解;但是在实际应用中,梯度下降法通常能得到令人满意的结果。最后,需要再次强调的是,要将参数进行随机初始化,而不是全部置为 。如果所有参数都用相同的值作为初始值,那么所有隐

4、藏层单元最终会得到与输入值有关的、相同的函数(也就是说,对于所有 ,都会取相同的值,那么对于任何输入  都会有: (图1))。随机初始化的目的是使对称失效。梯度下降法中每一次迭代都按照如下公式对参数  和 进行更新:其中  是学习速率。其中关键步骤是计算偏导数。我们现在来讲一下反向传播算法,它是计算偏导数的一种有效方法。下面来介绍一下如何使用反向传播算法来计算  和 ,这两项是单个样例  的代价函数  的偏导数。一旦求出该偏导数,就可以推导出整体代价函数  的偏导数:以上两行公式稍有不同,第一行比第二行多出一项,是因为权重衰减是作用于  而不是 。1.算法实例图1三层神经

5、网络上图是典型的三层神经网络的基本构成,LayerL1是输入层,LayerL2是隐含层,LayerL3是隐含层,给定一些数据{x1,x2,x3,...,xn},输出也是一堆数据{y1,y2,y3,...,yn},现在将它们在隐含层做某种变换,让输入的数据训练后得到期望的输出。如果输出和原始输入一样,那么就是最常见的自编码模型(Auto-Encoder)。如果输出和原始输入不一样,那么就是很常见的人工神经网络了,相当于让原始数据通过一个映射来得到希望输出的数据。在此直接举一个例子,带入数值演示反向传播法的过程,假设,有一个网络层:第一层是输入层,包含两个神经元i1,i2,和

6、截距项b1;第二层是隐含层,包含两个神经元h1,h2和截距项b2,第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。对它们赋上初值,如下图:其中,输入数据 i1=0.05,i2=0.10;输出数据o1=0.01,o2=0.99;初始权重 w1=0.15,w2=0.20,w3=0.25,w4=0.30;w5=0.40,w6=0.45,w7=0.50,w8=0.88;目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近。n前向传播l输入层---->隐含层:计算神经元h

7、1的输入加权和:神经元h1的输出outh1:(此处用到激活函数为sigmoid函数):同理,可计算出神经元h2的输出outh2:l隐含层---->输出层:计算输出层神经元o1和o2的值:这样前向传播的过程就结束了,得到输出值为[0.,0.],与实际值[0.01,0.99]相差还很远,因此对误差进行反向传播,更新权值,重新计算输出。n反向传播l计算总误差总误差:(squareerror)因为有两个输出,所以分别计算o1和o2的误差,总误差为两者之和:l隐含层---->输出层的权值更新:以权重参数w5为例,如果想知道w5对整体误差

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。