误差的反向传播,已经在神经网络中获得广泛运用。但它是如何进行传播的,很多人却不太了解,本文主要讲解了误差反向传播的原理及其推导过程,希望能让大家对反向传播有一定的了解。

话不多说,开搞!


在讲解反向传播之前,先讲解一下反向传播的网络结果和相关数学知识。

网络结构

一个完整的BP网络包含输入层,隐含层,激活函数,输出层,输出值五个部分,为什么说五个部分我下面会说。

每一层隐含层都有相应的权重和偏置,且输出都会连接一个激活函数,用来限制输出不会过大。

激活函数的种类我就不再这里展开了,其中最常用的无非就是线性传递函数(purelin),正切S型传递函数(tansig),对数S型传递函数(logsig)。

值得注意的是,这里的输出层和输出值代表的不是同一个意思,在MATLAB神经网络工具箱中,系统会自动分配一个输出层,其中输出层也是有相应的权重和偏置的,当然也少不了激活函数啦,但是输出层的激活函数往往采用线性传递函数()。

经过输出层输出的值才是我们最后得到的预测值!!!

数学知识

数学知识就简单了,只需要了解两个知识点,偏导数和激活函数的偏导。

首先是偏导:

假设某一函数

那么该函数分别对x和y的偏导为,这个就是我们所说的偏导了。

第二个是激活函数的偏导:

这部分我就不推导了,高数不好,直接给答案了。

对数S型传递函数:,其偏导数为

正切S型传递函数:,其偏导数为

好了,基础知识讲完了,还有那个什么链式求导法则,那个就很简单了。

首先,我们选择一个最简单的神经网络来进行讲解。

该神经网络为单输入单输出类型,有两层隐含层,每层隐含层节点数都为1,两个隐含层的激活函数都为对数S型传递函数,输出层的激活函数为线性传递函数()。

先写一下整个网络的前向传播:

以上就是整个网络的前向传播过程,我们最终的目的是为了使预测值和真实值差异最小。那么我们该如何才能使这两个值的差异最小呢,那肯定是不断地去调节权重和偏置,然后是的前向传播的的预测值和真实值差距最小。

那么反向传播传播的是什么呢,那肯定就是误差的反向传播啦,将预测值与真实值的误差反传给网络,然后去不断地修改权重和偏置,从而获得最好的结果。

我们定义目标函数,我们通过不断地调整权重和偏置,最终使得目标函数最小,那么我们怎么才能知道每次调整完参数后目标函数是在变小的呢。

我们可以看到,目标函数是一个凸函数,当其偏导数时,函数取极小值,也是函数的最小值。所以我们只要观察当前的偏导数值小于上一次的值时,目标函数值就是在下降的,证明权重和偏置的修改方向是正确的。最终我们是要使得其偏导数离0最近,则网络训练完成。

下一步就是误差的反向传播了。

至此,我们就已经完成了误差的反向传播,那么在知道误差反向传播后,我们最终的目的是修改各个权重和偏置,那么我们如何将反向传播的值运用于修改权重和偏置上呢。

那个梯度下降我就不在这里说了,我在这里说一个学习率,这个学习率是用来做什么的呢,他就是用来更新我们的权重和偏置的,操作如下。

其他的权重和偏置也是按照这个做法来修改的。

一文教你看懂BP反向传播。不会你打我相关推荐

  1. BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...

  2. ​通俗理解神经网络BP反向传播算法

    转载自  ​通俗理解神经网络BP反向传播算法 通俗理解神经网络BP反向传播算法 在学习深度学习相关知识,无疑都是从神经网络开始入手,在神经网络对参数的学习算法bp算法,接触了很多次,每一次查找资料学习 ...

  3. Pytorch框架中SGD&Adam优化器以及BP反向传播入门思想及实现

    因为这章内容比较多,分开来叙述,前面先讲理论后面是讲代码.最重要的是代码部分,结合代码去理解思想. SGD优化器 思想: 根据梯度,控制调整权重的幅度 公式: 权重(新) = 权重(旧) - 学习率 ...

  4. [AI 笔记] BP反向传播算法

    [AI 笔记] BP反向传播算法 说明 BP算法 链式法则 计算图 简单例子 前向传播 反向传播 聚焦计算节点,深入理解 计算节点的代码实现 例子 各种门的功能 多元链式法则 向量化BP算法 参考资料 ...

  5. 使用随机梯度下降SGD的BP反向传播算法的PyTorch代码实现

    Index 目录索引 写在前面 PyTorch的 .data() PyTorch的 .item() BP with SGD的PyTorch代码实现 参考文章 写在前面 本文将用一个完整的例子,借助Py ...

  6. BP反向传播一文弄懂神经网络中的反向传播法

    最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...

  7. BP反向传播矩阵推导图示详解​

    ©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成.情绪对抗样本生成 背景介绍 BP(反向传播)是有 Geffrey Hinton 在 1988 年发 ...

  8. 一文看懂BP神经网络的基础数学知识

    看懂本文需要的基础知识有: 能够理解最基本的最优化问题(例如最小二乘法优化) 学习过高数和线性代数,对数学符号有概念 一定的编程基础 最好明白感知器的概念 神经网络的基本知识 1.0 历史与发展 线性 ...

  9. Back-Propagation Neural Network BP反向传播网络算法

    01 网络描述 BP网络由大量简单处理单元广泛互联而成,是一种对非线性函数进行权值训练的多层映射网络.具有优良的非线性映射能力,理论上它能够以任意精度逼近任意非线性函数.本文采用BP神经网络解决下列函 ...

最新文章

  1. 迭代和瀑布的最大的差别就在于风险的暴露时间上
  2. 北航成AAAI 2021最大赢家,两篇一作斩获最佳论文、提名奖,研究皆与Transformer相关...
  3. 修改initrd做miniLinux
  4. 1.23 Lambda表达式的使用
  5. python基础入门:实现(无重复字符)字符串的全排列的两种方法
  6. WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manua
  7. 如何将rootfs打包进kernel image
  8. LeetCode 422. 有效的单词方块
  9. 电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...
  10. 注意html的语言编码charset,HTML编码
  11. Login as Root in Ubuntu 12.10
  12. Zookeeper C API 指南七(Zookeeper 辅助 API 介绍)
  13. 计算机网络 IP:ABC类地址与 子网掩码(ABC类网络均有属于自己的私有IP段 节省32位IP资源 ) 网络地址 主机地址 子网 与子网掩码之间的关系换算 IP和子网掩码相互依存
  14. linux终端设置为管理员权限,ubuntu 中的管理员权限
  15. 【美少女】阿里巴巴实习三个月总结
  16. OneNote同步问题,提示没有权限
  17. HTML星星组成的平行四边形,用一个程序打印菱形,平行四边形星星图
  18. hololens凝视物体、单击双击、语音控制、蓝牙
  19. python后端工程师简历_【社招】字节跳动 - 后端开发工程师( Python Golang)-懂车帝...
  20. HTTP 十分钟教程

热门文章

  1. 获取当前月份为何要+1;获取当日日期-1的原因
  2. 2016年4月12日。
  3. 李宏毅机器学习(一补充)
  4. 什么是ZYNQ?ZYNQ简介
  5. Duplicate keys detected: '0'原因及解决方法
  6. MSE(均方误差)计算封装Matlab函数
  7. 【板绘练习】天使恶魔ヾ(゚∀゚○)ツ线稿练习
  8. 带你轻松遍历用户生命价值与流失挽救(上):流量下的价值套路
  9. 灵活可扩展,2023年值得尝试的13款富文本编辑器
  10. Nginx Https 双向认证