一文教你看懂BP反向传播。不会你打我
误差的反向传播,已经在神经网络中获得广泛运用。但它是如何进行传播的,很多人却不太了解,本文主要讲解了误差反向传播的原理及其推导过程,希望能让大家对反向传播有一定的了解。
话不多说,开搞!
在讲解反向传播之前,先讲解一下反向传播的网络结果和相关数学知识。
网络结构
一个完整的BP网络包含输入层,隐含层,激活函数,输出层,输出值五个部分,为什么说五个部分我下面会说。
每一层隐含层都有相应的权重和偏置、,且输出都会连接一个激活函数,用来限制输出不会过大。
激活函数的种类我就不再这里展开了,其中最常用的无非就是线性传递函数(purelin),正切S型传递函数(tansig),对数S型传递函数(logsig)。
值得注意的是,这里的输出层和输出值代表的不是同一个意思,在MATLAB神经网络工具箱中,系统会自动分配一个输出层,其中输出层也是有相应的权重和偏置的,当然也少不了激活函数啦,但是输出层的激活函数往往采用线性传递函数()。
经过输出层输出的值才是我们最后得到的预测值!!!
数学知识
数学知识就简单了,只需要了解两个知识点,偏导数和激活函数的偏导。
首先是偏导:
假设某一函数
那么该函数分别对x和y的偏导为,,这个就是我们所说的偏导了。
第二个是激活函数的偏导:
这部分我就不推导了,高数不好,直接给答案了。
对数S型传递函数:,其偏导数为。
正切S型传递函数:,其偏导数为。
好了,基础知识讲完了,还有那个什么链式求导法则,那个就很简单了。
首先,我们选择一个最简单的神经网络来进行讲解。
该神经网络为单输入单输出类型,有两层隐含层,每层隐含层节点数都为1,两个隐含层的激活函数都为对数S型传递函数,输出层的激活函数为线性传递函数()。
先写一下整个网络的前向传播:
以上就是整个网络的前向传播过程,我们最终的目的是为了使预测值和真实值差异最小。那么我们该如何才能使这两个值的差异最小呢,那肯定是不断地去调节权重和偏置,然后是的前向传播的的预测值和真实值差距最小。
那么反向传播传播的是什么呢,那肯定就是误差的反向传播啦,将预测值与真实值的误差反传给网络,然后去不断地修改权重和偏置,从而获得最好的结果。
我们定义目标函数,我们通过不断地调整权重和偏置,最终使得目标函数最小,那么我们怎么才能知道每次调整完参数后目标函数是在变小的呢。
我们可以看到,目标函数是一个凸函数,当其偏导数时,函数取极小值,也是函数的最小值。所以我们只要观察当前的偏导数值小于上一次的值时,目标函数值就是在下降的,证明权重和偏置的修改方向是正确的。最终我们是要使得其偏导数离0最近,则网络训练完成。
下一步就是误差的反向传播了。
至此,我们就已经完成了误差的反向传播,那么在知道误差反向传播后,我们最终的目的是修改各个权重和偏置,那么我们如何将反向传播的值运用于修改权重和偏置上呢。
那个梯度下降我就不在这里说了,我在这里说一个学习率,这个学习率是用来做什么的呢,他就是用来更新我们的权重和偏置的,操作如下。
其他的权重和偏置也是按照这个做法来修改的。
一文教你看懂BP反向传播。不会你打我相关推荐
- BP反向传播算法的思考和直观理解 -卷积小白的随机世界
https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...
- 通俗理解神经网络BP反向传播算法
转载自 通俗理解神经网络BP反向传播算法 通俗理解神经网络BP反向传播算法 在学习深度学习相关知识,无疑都是从神经网络开始入手,在神经网络对参数的学习算法bp算法,接触了很多次,每一次查找资料学习 ...
- Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现
因为这章内容比较多,分开来叙述,前面先讲理论后面是讲代码.最重要的是代码部分,结合代码去理解思想. SGD优化器 思想: 根据梯度,控制调整权重的幅度 公式: 权重(新) = 权重(旧) - 学习率 ...
- [AI 笔记] BP反向传播算法
[AI 笔记] BP反向传播算法 说明 BP算法 链式法则 计算图 简单例子 前向传播 反向传播 聚焦计算节点,深入理解 计算节点的代码实现 例子 各种门的功能 多元链式法则 向量化BP算法 参考资料 ...
- 使用随机梯度下降SGD的BP反向传播算法的PyTorch代码实现
Index 目录索引 写在前面 PyTorch的 .data() PyTorch的 .item() BP with SGD的PyTorch代码实现 参考文章 写在前面 本文将用一个完整的例子,借助Py ...
- BP反向传播一文弄懂神经网络中的反向传播法
最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...
- BP反向传播矩阵推导图示详解
©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成.情绪对抗样本生成 背景介绍 BP(反向传播)是有 Geffrey Hinton 在 1988 年发 ...
- 一文看懂BP神经网络的基础数学知识
看懂本文需要的基础知识有: 能够理解最基本的最优化问题(例如最小二乘法优化) 学习过高数和线性代数,对数学符号有概念 一定的编程基础 最好明白感知器的概念 神经网络的基本知识 1.0 历史与发展 线性 ...
- Back-Propagation Neural Network BP反向传播网络算法
01 网络描述 BP网络由大量简单处理单元广泛互联而成,是一种对非线性函数进行权值训练的多层映射网络.具有优良的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数.本文采用BP神经网络解决下列函 ...
最新文章
- 迭代和瀑布的最大的差别就在于风险的暴露时间上
- 北航成AAAI 2021最大赢家,两篇一作斩获最佳论文、提名奖,研究皆与Transformer相关...
- 修改initrd做miniLinux
- 1.23 Lambda表达式的使用
- python基础入门:实现(无重复字符)字符串的全排列的两种方法
- WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manua
- 如何将rootfs打包进kernel image
- LeetCode 422. 有效的单词方块
- 电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...
- 注意html的语言编码charset,HTML编码
- Login as Root in Ubuntu 12.10
- Zookeeper C API 指南七(Zookeeper 辅助 API 介绍)
- 计算机网络 IP:ABC类地址与 子网掩码(ABC类网络均有属于自己的私有IP段 节省32位IP资源 ) 网络地址 主机地址 子网 与子网掩码之间的关系换算 IP和子网掩码相互依存
- linux终端设置为管理员权限,ubuntu 中的管理员权限
- 【美少女】阿里巴巴实习三个月总结
- OneNote同步问题,提示没有权限
- HTML星星组成的平行四边形,用一个程序打印菱形,平行四边形星星图
- hololens凝视物体、单击双击、语音控制、蓝牙
- python后端工程师简历_【社招】字节跳动 - 后端开发工程师( Python Golang)-懂车帝...
- HTTP 十分钟教程