假设我们有一个固定样本集,它包含 个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例(x,y),其代价函数为:这是一个(二分之一的)方差代价函数。给定一个包含 个样例的数据集,我们可以定义整体代价函数为:

以上公式中的第一项 是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合

[注:通常权重衰减的计算并不使用偏置项 ,比如我们在 的定义中就没有使用。一般来说,将偏置项包含在权重衰减项中只会对最终的神经网络产生很小的影响。在贝叶斯规则化方法中,我们将高斯先验概率引入到参数中计算MAP(极大后验)估计(而不是极大似然估计)。]

权重衰减参数 用于控制公式中两项的相对重要性。在此重申一下这两个复杂函数的含义: 是针对单个样例计算得到的方差代价函数; 是整体样本代价函数,它包含权重衰减项。

以上的代价函数经常被用于分类和回归问题,在分类问题中,我们用y=0或y=1,来代表两种类型的标签(回想一下,这是因为sigmoid激活函数的值域为[0,1];如果我们使用双曲正切型激活函数,那么应该选用-1和+1作为标签)。对于回归问题,我们首选要变换输出值域(也就是y)以保证其范围为[0,1](同样地,如果我们使用双曲正切型激活函数,要使用输出值域为[-1,1])。

我们的目标是针对W和b来求其函数J(W,b)的最小值。为了求解神经网络,我们需要将每一个参数初始化为一个很小的,接近零的随机值(比如说,使用正态分布 生成的随机值,其中 设置为 ),之后对目标函数使用诸如梯度批量梯度下降法的最优化算法。因为 是一个非凸函数,梯度下降法很可能会收敛到局部最优解;但是实际应用中,梯度下降法通常能够得到令人满意的结果,最后,需要再次强调的是,要将参数进行随机初始化,而不是全部置为0.如果所有参数都用相同的值作为初值,那么所有隐藏层单元最终会得到与输入值有关的,相同的函数(也就是说,对于所有 都会取相同的值,那么对于任何输入 都会有: )。随机初始化的目的是使对称失效

梯度下降法中每一次迭代都按照如下公式对参数W和b进行更新:

其中 是学习速率。其中关键步骤是计算偏导数。我们现在来讲一下反向传播算法,它是计算偏导数的一种有效方法。

我们首先讲一下如何使用反向传播算法来计算,这两项是单个样例 的代价函数 的偏导数。

一旦我们求出该偏导数,就可以推导出整体代价函数 的偏导数:

以上两行公式稍有不同,第一行比第二行多出一项,是因为权重衰减是作用于 而不是

反向传播算法的思路如下:给定一个样例(x,y),我们首先进行“前向传导”运算,计算出网络中所有激活值(我们用 表示第 层第 单元的激活值(输出值)。)包括 的输出值()。之后,针对第针对第 层的每一个节点 ,我们计算出其“残差” ,,该残差表明了该节点对最终输出值的残差产生了多少影响。对于最终的输出节点,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为 (第 层表示输出层)。对于隐藏单元我们如何处理呢?我们将基于节点(译者注:第 层节点)残差的加权平均值计算 ,这些节点以 作为输入。下面将给出反向传导算法的细节:

1、进行前馈传导计算,利用前向传导公式,得到 直到输出层 的激          活值。

2、对于第 层(输出层)的每个输出单元 ,我们根据以下公式计算残差:

[译者注:

]

3、对 的各个层,第 层的第 个节点的残差计算方法如下:

{译者注:

将上式中的的关系替换为的关系,就可以得到:

以上逐次从后向前求导的过程即为“反向传导”的本意所在。]

4、计算我们需要的偏导数,计算方法如下:

最后,我们用矩阵-向量表示法重写以上算法。我们使用“” 表示向量乘积运算符(在Matlab或Octave里用“.*”表示,也称作阿达马乘积)。若 ,则 。在上一个教程中我们扩展了 的定义,使其包含向量运算,这里我们也对偏导数 也做了同样的处理(于是又有 )。

那么,反向传播算法可以表示为以下几个步骤:

1、进行前馈传导计算,利用前向传导公式,得到 直到输出层 的激活值。

2、对输出层(第 层),计算残差:

3、对于 的各层,计算:

4、计算最终需要的偏导数值:

实现中应注意:在以上的第2步和第3步中,我们需要为每一个 值计算其 。假设 是sigmoid函数,并且我们已经在前向传导运算中得到了 。那么,使用我们早先推导出的 表达式,就可以计算得到

最后,我们将对梯度下降算法做个全面总结。在下面的伪代码中, 是一个与矩阵 维度相同的矩阵, 是一个与 维度相同的向量。下面,我们实现爱你批量梯度下降法中的一次迭代:

  1. 对于所有 ,令 , (设置为全零矩阵或全零向量)
  2. 对于 ,更新权重参数:
    1. 使用反向传播算法计算
    2. 计算
    3. 计算

3、更新权重参数:

现在,我们可以重复梯度下降法的迭代步骤来减小代价函数 的值,进而求解我们的神经网络。

中英文对照:

反向传播算法 Backpropagation Algorithm

(批量)梯度下降法(batch)gradient descent

(整体)代价函数 (overall)cost function

方差 squared-error

均方差 average sum-of-squares error

规则化项 regularization term

权重衰减 weight decay

偏置项 bias terms

贝叶斯规则化方法 Bayesian regularization method

高斯先验概率 Gaussian piror

极大后验估计 MAP

极大似然估计 maximum likelihood estimation

激活函数 activation function

双曲正切函数 tanh function

非凸函数 non-convex function

隐藏层单元 hidden (layer) units

对称失效 symmetry breaking

学习速率 learning rate

前向传导 forward pass

假设值 hypothesis

残差 error term

加权平均值 weighted average

前馈传导 feedforward pass

阿达马乘积 Hadamard product

前向传播 forward propagation

转自http://deeplearning.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95

转载于:https://www.cnblogs.com/rong86/p/3518416.html

反向传播算法 Backpropagation Algorithm相关推荐

  1. 【 反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10)】

    反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10) 数学推导 BP算法 BP神经网络可以说机器学习的最基础网络.对于普通的简单 ...

  2. 多层感知机(MultiLayer Perceptron)以及反向传播算法(Backpropagation)

    多层感知机:MLP 多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络(DNN: Deep Neural Networks). 感知机:PLA 为了理解神经网络,我们应该先 ...

  3. Stanford UFLDL教程 反向传播算法(BP算法)

    反向传播算法(BP算法) 假设我们有一个固定样本集 ,它包含  个样例.我们可以用批量梯度下降法来求解神经网络.具体来讲,对于单个样例,其代价函数为: 这是一个(二分之一的)方差代价函数.给定一个包含 ...

  4. 深度学习基础2(反向传播算法)

    反向传播算法 我们先是用链式法则解释.比如如下的神经网络 前向传播 对于节点来说,的净输入如下: 接着对做一个sigmoid函数得到节点的输出: 类似的,我们能得到节点..的输出... 误差 得到结果 ...

  5. 入门机器学习(八)--神经网络参数的反向传播算法

    1. 代价函数(Cost Function) 假设我们拥有一个如下图所示的神经网络,一共有四层,分别是一层输入层,两层隐藏层,一层输出层.下面定义几个变量的意义: m:训练样本的个数,共有m个样本 L ...

  6. 反向传播算法的详细解释(上)

    最近在看NG的视频的时候,学习反向传播算法时遇到了不小的困难.一是因为NG并没有把太多的精力放在讲解反向传播原理上,可能NG自己也觉得这部分如果要细讲,真的会耗费不少时间.二是NG在开课初就很照顾数学 ...

  7. TensorFlow 2.0深度学习算法实战 第七章 反向传播算法

    第七章 反向传播算法 7.1 导数与梯度 7.2 导数常见性质 7.2.1 基本函数的导数 7.2.2 常用导数性质 7.2.3 导数求解实战 7.3 激活函数导数 7.3.1 Sigmoid 函数导 ...

  8. 深度学习笔记三:反向传播(backpropagation)算法

    接上一篇的最后,我们要训练多层网络的时候,最后关键的部分就是求梯度啦.纯数学方法几乎是不可能的,那么反向传播算法就是用来求梯度的,用了一个很巧妙的方法. 反向传播算法应该是神经网络最基本最需要弄懂的方 ...

  9. 【机器学习】详解 BackPropagation 反向传播算法!

    首先介绍一下链式法则 假如我们要求z对x1的偏导数,那么势必得先求z对t1的偏导数,这就是链式法则,一环扣一环 BackPropagation(BP)正是基于链式法则的,接下来用简单的前向传播网络为例 ...

最新文章

  1. 第23天 django的modal的正向反向查找 多对多查找 分组和聚合 F和Q ORM补充select_related和prefetch_related (无内容)...
  2. spring--(14)利用注解建立bean与bean之间的关系
  3. MMD的unity导入插件
  4. 小D学blend-----优美简洁的mp3播放器
  5. 试题 E: 迷宫 第十届蓝桥杯
  6. linux home目录重装,Linux/centos 卸载重装
  7. canvas画条形图 微信小程序_小程序-引入 echart 图表画圆饼图
  8. POJ1040 HDU1456 UVA301 UVALive5516 Transportation题解
  9. 求123456789=x成立个数
  10. 大数据信息安全问题有哪些
  11. css设置元素抛物线,CSS3 抛物线波动(Parabola Wave)
  12. CentOS 8配置静态IP地址
  13. 【游戏编程扯淡精粹】如何学习编程语言
  14. 坚果nuts 加速 官网_坚果R2手机发布 Smartisan OS 8.0公布推送计划
  15. 中国软件外包 IT公司最新排名
  16. 应届毕业生前端试用期总结
  17. 学习unity能够做什么
  18. 基于颜色布局描述符(CLD)图像特征提取算法使用Python实现简单的人脸检测功能并使用PyQt5构建简单的功能界面(数字图像处理课程实验)
  19. FPGA 多屏多画面视频拼接器
  20. 软考高级介绍以及岗位介绍

热门文章

  1. hdu 4496 并查集 逆向 并查集删边
  2. UNITY3D单词学习 speed和velocity的区别
  3. 纯原生仿ES6的Object.assign,实现深度合并对象
  4. 第六课:不要为金钱而工作
  5. vue-router 在项目中的使用
  6. CentOS 更改Apache默认网站目录
  7. 中国计算机考试区别及求职的相关思考
  8. Artech的MVC4框架学习——第三章controller的激活
  9. Nginx安装及配置简介
  10. 锗钛项圈真的可以治颈椎病吗