算法简介

百度百科:

BP算法(即反向传播算法)适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。这是BP算法得以应用的基础。

什么是反向传播?

反向传播是神经网络中最基本的学习算法,他是可以根据输出层的误差来更新每一层的参数。

看了很多博客,说反向传播就是链式求导,这句话很好理解。可是我对这个生僻的词语还是很难产生一个形象的理解。阅读了大量博客后我知道这是一个学习算法,可以用来更新参数。有人把它跟逻辑回归的梯度下降做对比,把逻辑回归看做是一个没有隐层的神经网络。意思是说,“梯度下降”可以看做是“没有隐层的神经网络”的反向传播算法。这么说我不知道是不是准确,但是我对反向传播有了一个大致的理解了:“反向传播就是一个类似梯度下降的算法嘛。”

可是用最普通的梯度下降不可以吗,梯度下降和反向传播有什么区别?那我来回顾一下梯度下降是什么,用白话说,梯度下降就是计算出预测结果与真实结果的误差,然后计算当时参数下误差的梯度是什么,然后沿着梯度,把误差“下降”下来,这就是梯度下降。公式这么写:

误差(损失函数)可以写为:

对误差求导(梯度):

梯度下降:

带入求导后的结果:

这是一个线性回归的梯度下降公式, 是真实值, 是预测函数计算出来的预测值,线性回归使用的是平方误差(为什么使用平方误差可以看我写的这篇博客),然后根据误差,计算梯度,再对参数进行调整,这就是梯度下降。

这里可以看到,对于这个没有隐层的神经网络,对于输出层的参数可以直接计算出误差然后进行梯度下降,因为也没有其他层了。可是如果对于一个多层的神经网络,每一层都有参数,因此如果想要使用梯度下降,要对每一层分别求梯度下降,而梯度下降时误差主导的,也就是说没有误差是无法进行梯度下降的(通过上面的公式可以看出,梯度是和每个样本的x和y有关,也就是输入输出值)。可对于神经网络来说,中间的隐层是没有目标值的,那也就没办法计算误差,自然也没办法进行梯度下降,因此就引出了反向传播

所以梯度下降只能对于单层使用,多层还得反向传播,梯度下降和反向传播的区别就在于此。现在我对反向传播这个词也有了大概的理解,因为在计算梯度的时候是需要计算出误差后,才能计算出梯度,而中间层没有办法计算出误差,所以需要把输出层的误差反向传播 到前面的隐层,这样才能计算梯度。

反向传播算法细节

===》原文详见《===

如图所示这是一个三层的神经网络,包含两个隐层:

其中是激活函数,可以理解为是一个非线性的函数,例如sigmoid

下面是前向传播过程:


以上完成了前向传播过程,就是把  输入网络计算出  的过程。( 表示从第  个神经元指向第  个神经元路径上的权重,例如  就是从第四个神经元指向第六个神经元路径上的权重,结合上图。)

下面开始反向传播,首先计算每个神经元的误差:

(这里误差直接使用了真实值与预测值的差)

然后将误差反向传播回去:

(If propagated errors came from few neurons they are added. The illustration is below: )

下面开始利用反向传播的误差,计算各个神经元(权重)的导数,开始反向传播修改权重(When the error signal for each neuron is computed, the weights coefficients of each neuron input node may be modified. In formulas below df(e)de\dfrac {df\left( e\right) }{de}dedf(e)​ represents derivative of neuron activation function (which weights are modified). ):



参考:

https://www.sohu.com/a/168767295_826434

https://blog.csdn.net/ft_sunshine/article/details/90221691

http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

反向传播算法(backpropagation)相关推荐

  1. 反向传播算法 Backpropagation Algorithm

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. (一)反向传播算法理解 (Back-Propagation)

    本文参考deeplearningbook.org一书第六章  6.5 Back-Propagation and Other Differentiation Algorithms 反向传播算法分为两篇来讲 ...

最新文章

  1. VS2005中删除最近打开的项目和文件的记录
  2. c4android 免root,C4Android中4.1.0版本不支持new命令,哪个版本支
  3. photo常用快捷键
  4. Flutter Web:Shadow Root问题
  5. 转:org.apache.maven.archiver.MavenArchiver.getManifest错误
  6. 棋盘切割 DP POJ 1191
  7. 推荐一款非常强大的扒站工具
  8. 处理有外键约束的数据
  9. MySQL修改配置 区分大小写
  10. L1-046 整除光棍 (20 分)—团体程序设计天梯赛
  11. Helloj2ee学Silverlight之五——Silverlight的编程模型
  12. looking for domain authoritative name server and domain name location
  13. js-table2excel 导出带图片的excel
  14. 原罪(Original sin):gluttony,greed,sloth,lust,pride,envy and wrath
  15. 揭秘传智播客班级毕业薪资超7k的内幕系列 之三 ----国企慕名而来,将未毕业学员“抢走”,传智播客又一次定义“被就业”...
  16. python音频频谱分析软件_SpectrumView(音频频谱分析软件)
  17. 网站防篡改有什么方法
  18. 设置锁屏方式后,锁屏长按电源键还有锁屏按钮(lockdown)锁屏状态下应该没有,解锁使用后长按才有这个按钮。
  19. GetCurrentTime函数
  20. 如何修复Dns查找失败

热门文章

  1. 静态网站生成器将会成为下一个大热门
  2. 很好的一篇讲解sql优化的文章
  3. android4.0 禁止横竖屏切换使用 android:configChanges=orientation|keyboardHidden无效
  4. jquery-galleryview-2.0 漂亮多样化的图片特效(多项自定义)
  5. Noip2011提高组 聪明的质监员
  6. [Codeforces 920E]Connected Components?
  7. Java专项面试训练(一)
  8. reader技巧总结2.1.doc
  9. 拓端tecdat|R语言蒙特卡洛方法:方差分量的Metropolis Hastings(M-H)、吉布斯Gibbs采样比较分析
  10. 拓端tecdat|R语言股市可视化相关矩阵:最小生成树