反向传播算法(backpropagation)
算法简介
百度百科:
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)相关推荐
- 反向传播算法 Backpropagation Algorithm
假设我们有一个固定样本集,它包含 个样例.我们可以用批量梯度下降法来求解神经网络.具体来讲,对于单个样例(x,y),其代价函数为:这是一个(二分之一的)方差代价函数.给定一个包含 个样例的数据集,我们 ...
- 【 反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10)】
反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10) 数学推导 BP算法 BP神经网络可以说机器学习的最基础网络.对于普通的简单 ...
- 多层感知机(MultiLayer Perceptron)以及反向传播算法(Backpropagation)
多层感知机:MLP 多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络(DNN: Deep Neural Networks). 感知机:PLA 为了理解神经网络,我们应该先 ...
- Stanford UFLDL教程 反向传播算法(BP算法)
反向传播算法(BP算法) 假设我们有一个固定样本集 ,它包含 个样例.我们可以用批量梯度下降法来求解神经网络.具体来讲,对于单个样例,其代价函数为: 这是一个(二分之一的)方差代价函数.给定一个包含 ...
- 深度学习基础2(反向传播算法)
反向传播算法 我们先是用链式法则解释.比如如下的神经网络 前向传播 对于节点来说,的净输入如下: 接着对做一个sigmoid函数得到节点的输出: 类似的,我们能得到节点..的输出... 误差 得到结果 ...
- 入门机器学习(八)--神经网络参数的反向传播算法
1. 代价函数(Cost Function) 假设我们拥有一个如下图所示的神经网络,一共有四层,分别是一层输入层,两层隐藏层,一层输出层.下面定义几个变量的意义: m:训练样本的个数,共有m个样本 L ...
- 反向传播算法的详细解释(上)
最近在看NG的视频的时候,学习反向传播算法时遇到了不小的困难.一是因为NG并没有把太多的精力放在讲解反向传播原理上,可能NG自己也觉得这部分如果要细讲,真的会耗费不少时间.二是NG在开课初就很照顾数学 ...
- TensorFlow 2.0深度学习算法实战 第七章 反向传播算法
第七章 反向传播算法 7.1 导数与梯度 7.2 导数常见性质 7.2.1 基本函数的导数 7.2.2 常用导数性质 7.2.3 导数求解实战 7.3 激活函数导数 7.3.1 Sigmoid 函数导 ...
- 【机器学习】详解 BackPropagation 反向传播算法!
首先介绍一下链式法则 假如我们要求z对x1的偏导数,那么势必得先求z对t1的偏导数,这就是链式法则,一环扣一环 BackPropagation(BP)正是基于链式法则的,接下来用简单的前向传播网络为例 ...
- (一)反向传播算法理解 (Back-Propagation)
本文参考deeplearningbook.org一书第六章 6.5 Back-Propagation and Other Differentiation Algorithms 反向传播算法分为两篇来讲 ...
最新文章
- VS2005中删除最近打开的项目和文件的记录
- c4android 免root,C4Android中4.1.0版本不支持new命令,哪个版本支
- photo常用快捷键
- Flutter Web:Shadow Root问题
- 转:org.apache.maven.archiver.MavenArchiver.getManifest错误
- 棋盘切割 DP POJ 1191
- 推荐一款非常强大的扒站工具
- 处理有外键约束的数据
- MySQL修改配置 区分大小写
- L1-046 整除光棍 (20 分)—团体程序设计天梯赛
- Helloj2ee学Silverlight之五——Silverlight的编程模型
- looking for domain authoritative name server and domain name location
- js-table2excel 导出带图片的excel
- 原罪(Original sin):gluttony,greed,sloth,lust,pride,envy and wrath
- 揭秘传智播客班级毕业薪资超7k的内幕系列 之三 ----国企慕名而来,将未毕业学员“抢走”,传智播客又一次定义“被就业”...
- python音频频谱分析软件_SpectrumView(音频频谱分析软件)
- 网站防篡改有什么方法
- 设置锁屏方式后,锁屏长按电源键还有锁屏按钮(lockdown)锁屏状态下应该没有,解锁使用后长按才有这个按钮。
- GetCurrentTime函数
- 如何修复Dns查找失败
热门文章
- 静态网站生成器将会成为下一个大热门
- 很好的一篇讲解sql优化的文章
- android4.0 禁止横竖屏切换使用 android:configChanges=orientation|keyboardHidden无效
- jquery-galleryview-2.0 漂亮多样化的图片特效(多项自定义)
- Noip2011提高组 聪明的质监员
- [Codeforces 920E]Connected Components?
- Java专项面试训练(一)
- reader技巧总结2.1.doc
- 拓端tecdat|R语言蒙特卡洛方法:方差分量的Metropolis Hastings(M-H)、吉布斯Gibbs采样比较分析
- 拓端tecdat|R语言股市可视化相关矩阵:最小生成树