反向传播算法

反向传播算法

目录

  1. 关键词
  2. 损失函数
  3. 反向传播算法
  4. BP算法伪代码

上一篇----》神经网络 》点击查看

1

关键词

反向传播算法 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 prior

极大后验估计 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

2

损失函数

假设我们有一个固定的样本集{(x[^1], y[^1]), .....,(x[^m], y[^m])},它包含m个样例。我们可以使用批量梯度下降法来求解神经网络。具体而言,对于单个样例(x, y),其代价损失函数为:

这是一个方差损失函数。给定一个含有m个样例的数据集,我们可以是使用如下的整体代价损失函数表示:

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

[注:通常权重衰减的计算并不使用偏置项 ,比如我们在 的定义中就没有使用。一般来说,将偏置项包含在权重衰减项中只会对最终的神经网络产生很小的影响。如果你在斯坦福选修过CS229(机器学习)课程,或者在YouTube上看过课程视频,你会发现这个权重衰减实际上是课上提到的贝叶斯规则化方法的变种。在贝叶斯规则化方法中,我们将高斯先验概率引入到参数中计算MAP(极大后验)估计(而不是极大似然估计)。

权重衰减参数用于控制公式中两项的相对重要性。在此重申一下这两个复杂函数的含义:J(W, b, x, y) 是针对单个样例计算得到的方差代价函数;J(W, b) 是整体样本代价函数,它包含权重衰减项。(由于无法使用数学编辑器这儿使用r表示权重衰减因子lambda)

以上的代价函数经常被用于分类和回归问题。在分类问题中,我们用y = 0 或 y = 1 来代表两种类型的标签。对于回归问题,我们首先要变换输出值域,以保证其范围为[0, 1 ] 。

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

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

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

3

反向传播算法

首先来讲一下如何使用反向传播算法来计算下式:

这两项是单个样例(x, y)的损失函数J(W, b, x, y)的偏导数。一旦我们求出该偏导数,就可以推导出整体代价函数J(W, b) 的偏导数:

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

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

1

进行前馈传导计算,利用前向传导公式,得到 L1, L2, ....直到输出层Lnl 的激活值;

2

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

3

对l = nl-1, nl-2, nl -3, ...., 2 的各个层,第l层的第i 个节点的残差计算方法如下:

根据递推过程,将nl-1 与nl 的关系替换为l 与 l+1的关系,可以得到上面的结果:

以上的逐步反向递推求导的过程就是“反向传播”算法的本意所在。

4

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

最后,我们用矩阵-向量表示法重写以上算法。

4

BP算法伪代码

反向传播算法可表示为以下几个步骤。

1

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

2

对输出层(第 nl层),计算:

大黑点表示向量成绩运算

3

对于l = nl-1, nl-2, nl-3, ...., 2 的各层,计算:

4

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

下面,实现批量梯度下降法中的一次迭代:

END

原文发布于微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文发表时间:2016-12-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

Tensorflow入门-白话mnist手写数字识别

文章目录 mnist数据集 简介 图片和标签 One-hot编码(独热编码) 神经网络的重要概念 输入(x)输出(y)、标签(label) 损失函数(loss ...

51010
来自专栏AI科技大本营的专栏

别磨叽,学完这篇你也是图像识别专家了

图像识别是当今深度学习的主流应用,而Keras是入门最容易、使用最便捷的深度学习框架,所以搞图像识别,你也得强调速度,不能磨叽。本文让你在最短时间内突破五个流行...

7107
来自专栏人工智能LeadAI

LeNet5的基本结构 | 卷积神经网络

在机器视觉,图像处理领域,卷积神经网络取得了巨大的成功。本文将参考UFLDL和DEEPLEARNING.NET的教程,结合自己的理解,梳理一下卷积神经网络的构成...

3967
来自专栏人工智能LeadAI

黑猿大叔-译文 | TensorFlow实现Batch Normalization

原文:Implementing Batch Normalization in Tensorflow(https://r2rt.com/implementing-...

5558
来自专栏贾志刚-OpenCV学堂

使用OpenCV与sklearn实现基于词袋模型(Bag of Word)的图像分类预测与搜索

基于OpenCV实现SIFT特征提取与BOW(Bag of Word)生成向量数据,然后使用sklearn的线性SVM分类器训练模型,实现图像分类预测。实现基于...

5363
来自专栏瓜大三哥

竞争型神经网络续1

1.竞争神经网络函数 1.1创建函数 1.1.1 newc函数 newc函数用于创建一个竞争层,这是一个旧版本的函数,现在用competlayer函数代替。函数...

41110
来自专栏红色石头的机器学习之路

台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network

上节课我们主要介绍了Deep Learning的概念。Deep Learing其实是Neural Networ的延伸,神经元更多,网络结构更加复杂。深度学习网络...

2460
来自专栏人工智能LeadAI

计算机视觉处理三大任务:分类、定位和检测

该笔记是以斯坦福cs231n课程(深度学习计算机视觉课程)的python编程任务为主线,展开对该课程主要内容的理解和部分数学推导。这篇学习笔记是关于计算机视觉处...

6517
来自专栏智能算法

深度学习三人行(第4期)---- TF训练DNN之进阶

2928
来自专栏CVer

深度学习的卷积算法指南[1] 卷积和池化简介

本文简要回顾了卷积神经网络(CNN)的主要组成部分,即离散卷积(discrete convolutions)和池化(pooling)。

4485

扫码关注云+社区

领取腾讯云代金券