实例介绍
反向传播算法是人工神经网络训练时采用的一种通用方法,在现代深度学习中得到了大 规模的应用。全连接神经网络(多层感知器模型,MLP),卷积神经网络(CNN),循环神 经网络(RNN)中都有它的实现版本。算法从多元复合函数求导的链式法则导出,递推的 计算神经网络每一层参数的梯度值。算法名称中的“误差”是指损失函数对神经网络每一层 临时输出值的梯度。反向传播算法从神经网络的输出层开始,利用递推公式根据后一层的误 差计算本层的误差,通过误差计算本层参数的梯度值,然后将差项传播到前一层
(w, x,)+b 这个神经元接受的输入信号为向量( ),向量( )为输入 向量的组合权重,为徧置项,是标量。神经儿对输入冋量进行加权求和,并加上偏置项 最后经过激活函数变换产生输出 为表述简洁,我们把公式写成向量和矩阵形式。对每个神经元,它接受的来自前一层神 经元的输入为向量,本节点的权重向量为,偏置项为,该神经元的输出值为 先计算输入向量与权重向量的内积,加上偏置项,再送入一个函数进行变换,得到输出 这个函数称为激活函数,典型的是 函数。为什么需要激活函数以及什么样的函数可 以充当激活函数,在 之前的公众号文章“理解神经网终的激活函数”中已经进行了 介绍。 神绎网络一般有多个层。第一层为输入层,对应输入向量,神绎元的数量等于特征向量 的维数,这个层不对数据进行处理,只是将输入向量送入下一层中进行计算。中间为隐含层, 可能有多个。最后是输出层,神经元的数量等于要分类的类别数,输出层的输岀值被用来做 分类预测。 下面我们来看一个简单神经网络的例了,如下图所示 这个网络有层。第一层是输入层,对应的输入向量为,有个神经元,写成分量形 式为(),它不对数据做任何处理,直接原样送入下一层。中间层有个神经元,接 受的输入数据为向量,输出向量为,写成分量形式为 。第三个层为输出层, 接受的输入数据为向量,输出向量为,写成分量形式为()。第一层到第层的权重 矩阵为(,第二层到第三层的权重矩阵为()。权重矩阵的每一行为一个权重向量,是 层所有神经元到本层某一个神经儿的连接权重,这里的上标表小层数 如果激活函数选用 函数,则第二层神经元的输出值为 +(-(+0)+(1+(0) (-( () 第三层神经元的输出值为 如果把代入上面二式中,可以将输出向量表示成输出向量的函数。通过调整权 重矩阵和偏置项可以实现不同的函数映射,因此神经网终就是一个复合函数 需要解决的·个核心问题是·旦神经网络的结构(即神经元层数,每层神经元数量)桷 定之后,怎样得到权重矩阵和偏置项。这些参数是通过训练得到的,这是本文推导的核心任 务 个简单的例子 首先以前面的层神经网络为例,推导损失函数对神经网络所有参数梯度的计算方法 假设训练样本集中有个样本()。其中为输入向量,为标签向量。现在要确定神 经网络的映射函数: 什么样的函数能很好的解释这批训练栟本?答案是神经网络的预测输出要尽可能的接 近样本的标签值,即在训练集上最小化预测误差,如果使用均方误差,则优化的目标为: ∑‖()- 其中()和都是向量,求和项内部是向量的范数平方,即各个分量的平方和。上 面的误差也称为欧氏距离损失函数,除此之外还可以使用其他损失函数,如交叉熵、对比损 失等。 优化目标函数的自变量是各层的权重矩阵和梯度向量,一般情况下无法保证目标函数是 凸函数,因此这不是一个凸优化问题,有陷入局部极小值和鞍点的风险(对于这些概念和问 题 之前的公众号文章“理解梯度下降法”,“理解凸优化”中己经做了详细介绍) 这是神经网络之前一直被诟病的一个问题。可以使用梯度下降法进行求解,使用梯度下降法 需要计算出损失函数对所有权重矩阵、偏置向量的梯度值,接下来的关键是这些梯度值的计 算。在这里我们先将问题简化,只考虑对单个样本的损失函数 ()-‖ 后面如果不加说明,都使用这种单样木的损失函数。如果计算出了对单个样木损失函数 的棁度值,对这些梯度值计算均值即可得到整个目标函数的梯度值。 和(要被代入到网络的后一层中,是复合函数的内层变量,我们先考虑外层的 和。权重矩阵是一个x的矩阵,它的两个行分别为向量(和 是 个维的列向量,它的两个元素为()和()。网络的输入是向量,第一层映射之后的 输出是向量 首先计算损失函数对权重矩阵每个元素的偏导数,将欧氏距离损尖函数展开,有 ((+))(()) 6( 如果,即对权重矩阵第行的元素求导,上式分了中的后半部分对来说是常数。 根据链式法则有 S()+() O 如果,即对矩阵第二行的元素求导,类似的有: 可以统一写成 可以发现,第一个下标决定了权重矩阵的第行和偏置向量的第个分量,第二个下 标决定了向量的第个分量。这可以看成是一个列向量与一个行向量相乘的结果,写成 矩阵形式为 上式中乘法⊙为向量对应元素相乘,第二个乘法是矩阵乘法。 是 个维列向量, +也是一个维列向量,两个向量执行⊙运算的结果还是 个维列向量。是一个元素的列向量,其转置为维行向量,前面这个:维列向量与 的乘积为的矩阵,这正好与矩阵的尺寸相等。在上面的公式中,权重的偏导数在 求和项中由部分组成,分别是网络输出值与真实标签值的误差 激活 区数的导数 +(),本层的输入值。神经网络的输出值、激活函数的导数值 本层的输入值都可以在正向传播吋得到,因此可以晑效的计算出来。对所有训练样本的偏导 数计算均值,可以得到总的偏导数 对偏置项的偏导数为: 如果 上式分子中的后半部分对来说是常数,有: ()⊥() 如果 类似的有 这可以统写成: 写成矩阵形式为 偏置项的导数由两部分组成,分别是神经网络预测值与真实值之间的误差,激活函数的 导数值,与权重矩阵的偏导数相比唯一的区别是少了。 接下来计算对 和的偏导数,由于是复合函数的内层,情况更为复杂。() 是 个的短阵,它的个行向量为(),(,(,(。偏置项()是维向量, 个分量分别是(),(,(),(。首先计算损失函数对的元素的偏导数: 而 上式分子中的两部分都有,因此都与有关。为了表述简活,我们令: 根据链式法则有: 其巾(( 和 和 都是标量 和()是两个 () 向量的内积,的每一个分量都是()的函数。接下来计算 和 这里的一是个向量,衣示的每个分量分别对求导。当时有: 后面个分量相对于求导变量(都是常数。类似的当时有: () 0) ( () 和时的结果以此类推。综合起来有: 同理有: ()十 如果令 合并得到 ()() [()-)。()。() 写成矩阵形式为 () 最后计算偏置项的偏导数 () 类似的我们得到: 合并后得到 () 写成矩阵形式为: (0) 至此,我得到了这个简单网络对所有参数的偏导数,接下来我们将这种做法推广到更 般的情况。从上面的结果可以看岀一个规律,输出层的权重矩阵和偏置向量梯度计算公式中 共用了()-)()对」隐含层也有类似的结果 完整的算法 现在考虑一般的情况。假设有个训练样本(),其中为输入向量,为标签 向量。训练的目标是最小化样木标签值与神经网络预测值之闩的误差,如果使用均方误差, 则优化的目标为: 其中为神经网络所有参数的集合,包括各层的权重和偏置。这个最优化问题是·个 不带约束条件的问题,可以用梯度下降法求解。 上面的误差函数定义在整个训练样本集上,梯度下降法每一次迭代利用了所有训练样本, 称为批量棁度卜降法。如果样木数量很大,每次迭代都用所有样木进计算成木太高。为了解 决这个问题,可以采用单样本梯度下降法,我们将上面的损失函数写成对单个样本的损失函 数之和: 定义对单个样本()的损失函数为 )=-() 如果采用单个样本进行迭代,梯度下降法第次迭代时参数的更新公式为: nV 如果要用所有样本进行迭代,根据单个样本的损失函数梯度计算总损失梯度即可,即所 有样本梯度的均值 用梯度下降法求解需要初始化优化变量的值。一般初始化为一个随机数,如用正态分布 (a)产生这些随机数,其中G是一个很小的正数 到日前为止还有一个关键问题没有解决:日标函数是一个多层的复合函数,因为神经网 络中每一层都有权重矩阵和偏置向量,且每一层的输出将会作为下一层的输入。因此,直接 计算损失函数对所有权重和偏置的梚度很复杂,需要使用复合函数的求导公式进行递推计算 几个重要的结论 在进行推导之前,我们首先来看下面几种复合函数的求导。又如下线性映射函数: 其中是维向量,是×的矩阵,是维向量。 问题:假设有函数,如果把看成常数,看成的函数,如何根据函数对的 梯度值Ⅴ计算函数对的梯度值Ⅴ?根据链式法则,由于只和有关,和其他的 ≠无关,因此有: c∑( 对于的所有元素有: 写成矩阵形式为: 问题:如果将看成常数,将看成的函数,如何根据V计算Ⅴ?由于任意 的和所有的都有关系,根据链式法则有 写成矩阵形式为 这是一个对称的结果,在计算函数映射时用矩阵乘以向量得到,在求梯度时用 矩阵的转置乘以的梯度得到的梯度。 问题:如果有向量到向量的映射: 【实例截图】
【核心代码】
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论