文档章节

反向传播(Backpropagation)算法的数学原理

Lee的白板报
 Lee的白板报
发布于 2015/11/11 17:08
字数 781
阅读 14635
收藏 12
点赞 5
评论 5

准备

本文不是一篇引导读者入门的科普文。读者至少需要对人工神经网络有概念性的理解,并且熟悉偏导数。

这是一个简单的人工神经网络,分为输入层,隐藏层和输出层。输入层以原始数据 x 作为本层向下一层的输出,即 a(1);隐藏层将 a(1) 中的元素进行线性组合作为自己的输入,即 z(2),然后将 z(2) 进行一个数学变换(函数 g(z))作为对下一层的输出,即 a(2)。以此类推,得到最后一层的输出,即 a(3) 或 hΘ(x),就是人工神经网络的运算结果。

其中 Θ(1), Θ(2) 分别是第1层,第2层向前传递数据时的线性组合参数,把 Θ(1), Θ(2)  统称为 Θ。在训练时,将已经标记好标准答案(称标准答案为 y)的数据输入网络,刚开始网络的输出与答案往往相距甚远,然后用优化算法(例如梯度下降法)不断修正 Θ,使网络的计算结果越来越接近标准答案,直至达到要求的精度。

这里定义一个表达式,叫做【代价方程】(Cost Function):

                      J(Θ) = 【计算结果 与 标准答案 之间的差距】

不需要关心 Cost Function 的具体形式,只需要理解它是对计算误差的一种衡量,并且它是 Θ 的函数。我们的目标就是使计算误差尽量小。

以梯度下降法为代表的很多优化算法可以用来解决上述的最小化问题。在优化过程中,这些算法通常会用到 J(Θ) Θ 中各元素的偏导数(Θ 是一个矩阵)。反向传播算法就是用来计算这些偏导数的。

最后要注意的一点是,除了最后一层以外,每一层都要在自己的输出向量前附加一个值为+1的项(称为 Bias Term),为了理解它的意义,可以想象二维坐标系中的一条直线:ax + b = 0,Bias term 与对应参数相乘后的值就是直线的截距 b。


数学原理


结语

听课时老师直接给出了反向传播的算法与程序,绕过了数学证明。虽然并不影响应用,但使用一个并不了解原理的工具,让我有如鲠在喉之感。通过证明,既可加深学习印象,也为后续的高阶学习夯实基础。

© 著作权归作者所有

共有 人打赏支持
Lee的白板报
粉丝 90
博文 31
码字总数 45338
作品 0
高级程序员
加载中

评论(5)

t
tjchern

引用来自“tjchern”的评论

为啥求第一部分的时候,使用的是加法,这样成立的前提是J可以写成Z的和,但是实际上不能啊

不好意思,楼主写的就是链式法则的定义形式,之前理解错了
t
tjchern
为啥求第一部分的时候,使用的是加法,这样成立的前提是J可以写成Z的和,但是实际上不能啊
PrincessMQ
PrincessMQ
楼主,能不能解释一下为什么第l层第i个单元的计算误差,是代价函数J(theta)对zi的偏导数?
Lee的白板报
Lee的白板报

引用来自“2550572497”的评论

楼主,能不能解释一下为什么J(Θ)要拆分成①,②,③三个部分?有没有什么特殊的含义?
只是链式求导过程中的不同步骤而已,为了方便理解。 比如: F=f1(f2(X)), 那么 dF/dX = dF/df1 * df1/df2 * df2/dX
2550572497
2550572497
楼主,能不能解释一下为什么J(Θ)要拆分成①,②,③三个部分?有没有什么特殊的含义?
反向传播的工作原理(深度学习第三章)

https://www.youtube.com/watch?v=Ilg3gGewQ5U What is backpropagation really doing? 梯度向量的每一项大小是在告诉大家,代价函数对于每一个参数有多敏感。 对于改变激活值,可以有三种方...

Fire_to_cheat_ ⋅ 01/19 ⋅ 0

详解反向传播算法(上)

目录: 1 用计算图来解释几种求导方法: 1.1 计算图 1.2 两种求导模式:前向模式求导( forward-mode differentiation) 反向模式求导(reverse-mode differentiation) 1.3 反向求导模式(反向传...

晓雷 ⋅ 2017/02/04 ⋅ 0

入门 | 如何通过梯度检验帮助实现反向传播

  选自imaddabbura   机器之心编译   参与:刘天赐、路      本文介绍了如何使用梯度检验方法确认反向传播代码是否准确。      在《Coding Neural Network - Forward Propaga...

机器之心 ⋅ 05/09 ⋅ 0

Coursera机器学习笔记 第5周 第九章 神经网络:学习(一)

第九章 神经网络:学习(Neural Networks: Learning)(一) 第1节 代价函数和反向传播(Cost Function and Backpropagation) 9.1 代价函数 参考视频 : 9 - 1 - Cost Function (7 min).mkv ...

shengchaohua163 ⋅ 03/25 ⋅ 0

BP算法是从天上掉下来的吗?

前馈神经网络 在文章《逻辑回归到神经网络》(以下简写《LR到NN》)中,小夕为大家描述了一个从逻辑回归延伸到神经网络的过程。在《一般化机器学习与神经网络》中,小夕阐述了神经网络的一般...

夕小瑶Elsa ⋅ 2017/05/06 ⋅ 0

【转】脉络清晰的BP神经网络讲解,赞

本文转自编程小翁博客园博客,原文链接:http://www.cnblogs.com/wengzilin/archive/2013/04/24/3041019.html,如需转载请自行联系原作者...

文艺小青年 ⋅ 2017/11/17 ⋅ 0

人工神经网络的原理与训练

之前写过几篇大白话介绍系列,比如金融危机起因这种。但还是有朋友跟我说,这不是大白话。其实,我已经尽力把问题解释到入门者的程度了。有一些困难的东西,一是因为有些问题是无法避免,比如...

Yupeng ⋅ 2016/09/22 ⋅ 0

改善深层神经网络第一周-Gradient Checking(梯度检查)

Gradient Checking Welcome to the final assignment for this week! In this assignment you will learn to implement and use gradient checking. You are part of a team working to make......

bxg1065283526 ⋅ 05/04 ⋅ 0

详解反向传播算法(下)

神经网络结构图: 示例网络图 其中C是损失函数,例如C可以取: 梯度下降(SGD)进行学习时,核心问题是求解损失函数C关于所有网络参数的偏导数。 根据详解反向传播算法(上) 我们已经知道用反...

晓雷 ⋅ 2017/03/04 ⋅ 0

无需深度学习框架,如何从零开始用Python构建神经网络

  选自TowardsDataScience   作者:James Loy   机器之心编译   参与:陈韵竹、王淑婷      这是一份用于理解深度学习内部运作方式的初学者指南。作者根据自己从零开始学习用 Py...

机器之心 ⋅ 05/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 今天 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部