反向传播简单来说就是通过求偏导数从而更新神经网络中权重w的过程

首先先简单复习一下前向传播(forward propagation)

篇幅有限,bias(b)在图中就没画出来,大家知道有这么个东西就好 ,顺便再偷个懒,输出层的激活函数忘记画上去了~

在正式说反向传播之前,先说两个简单的概念

1.loss函数

loss函数是一个描绘了我们的【预测值】和【实际值】之间误差的函数,它的自变量通常是一个或者多个weight,因变量是误差的大小,这点很重要。我们的神经网络能够优化的就是weight和bias,对于同样的输入结果x1,x2......调整不同的w和b,得到的loss会不一样。而loss函数就记录了在同样的一组输入结果x1,x2,......,xn下,使用不同的w和b以及它们与实际值之间的差值

2.梯度下降(gradient descent,GD)

梯度下降是一种帮助我们寻找loss函数最低点的最基础方法,这类方法有很多种,它们有一个统一的名字叫【优化器】

我举一个下山的例子,loss函数是一座连绵的山峰,我们要做的就是山的谷底,而我们的起点是一个随机的点

梯度下降的公式大致描述如下,以上图为例:

其中

:学习率(learning rate),可以理解为我们下山的步伐,一步迈多少米,一定是正数

:斜率,当前这个点的陡峭程度

以上图为例,当斜率小于0时,意味着a点往右移动,下山方向正确,当斜率大于0时,如c点,则向左移动,下山方向正确

从公式中可以看出,当斜率为0时,下山就停止了,算法认为我们已经到达了山谷。

但是,从图中我们可以看出,当a点下降到x1点时,算法认为我们到达了最低点,但是实际上,我们的最低点在x2,这就是陷入了局部最优的问题

那么要如何解决局部最优问题呢?其中一个方法就是调大学习率,让a点一步跨过去它右边那个山峰,跨到b点或者c点的位置,再继续下降。

但是,过大的学习率也会有一定的问题,就是使得a点在一个U形两端来回蹦跶,学名叫做无法收敛,如下图所示

所以,选取合适的学习率,是一门技术活

3.反向传播

接下来就来看看什么是反向传播

反向传播其实就是,通过前向传播画出的loss,使用梯度下降或者其他优化方法,找到那个使得loss函数值最小的一组w,将他更新到我们的神经网络中去

不过,在我们一般的实际应用中,通常会有很多很多个w,所以我们就要用到数学中的偏导数概念,下面直接拿例子来说明

比如我想研究一下w5这个参数对于我最终的有什么影响,我们就要先梳理清楚w5的影响是怎么传播到total中去的

所以,对于求偏导数的过程,也是一样的传播道理

先看看w5对z有什么影响,再看看z对output1有什么影响(这里实际上就是对激活函数sigmoid求导),最后再看output1对losstotal有什么影响

在计算出了对于w5的偏导数之后,就可以使用梯度下降的公式进行更新了

接下来稍微加大一点难度,我想研究一下w1对最终的losstotal的影响,还是和前面一样,梳理清楚影响传播的路径

可以看到,与w5不同的是,w1对于losstotal的影响有两个分支,所以我们就需要分开来看,

然后最后把他们加起来,就是w1对于losstotal的影响

最后使用梯度下降进行更新

手撕CNN神经网络(二)反向传播(back propagation)相关推荐

  1. 手撕 CNN 经典网络之 AlexNet(理论篇)

    大家好,我是红色石头! 第一个典型的CNN是LeNet5网络,而第一个大放异彩的CNN却是AlexNet.2012年在全球知名的图像识别竞赛 ILSVRC 中,AlexNet 横空出世,直接将错误率降 ...

  2. 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)

    大家好,我是红色石头! 在上一篇文章: 手撕 CNN 经典网络之 VGGNet(理论篇) 详细介绍了 VGGNet 的网络结构,今天我们将使用 PyTorch 来复现VGGNet网络,并用VGGNet ...

  3. 手撕 CNN 之 AlexNet(PyTorch 实战篇)

    大家好,我是红色石头! 在上一篇文章: 手撕 CNN 经典网络之 AlexNet(理论篇) 详细介绍了 AlexNet 的网络结构,今天我们将使用 PyTorch 来复现AlexNet网络,并用Ale ...

  4. 零基础入门深度学习(3) - 神经网络和反向传播算法

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  5. 手撕 CNN 经典网络之 VGGNet(理论篇)

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet.VGGNet是比AlexNet更深的 ...

  6. 深度学习与自然语言处理教程(3) - 神经网络与反向传播(NLP通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://www.showmeai.tech/article-d ...

  7. 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)

    独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...

  8. 机器学习笔记丨神经网络的反向传播原理及过程(图文并茂+浅显易懂)

    文章目录 一.前言 二.神经网络的前向传播原理 1. 单个神经元的计算 2. 神经元在神经网络中的计算 三.反向传播算法内容(请静下心,一步一步的看) Step1 计算误差 Step2 更新权重 四. ...

  9. 深度学习与计算机视觉教程(4) | 神经网络与反向传播(CV通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...

最新文章

  1. 字节老板在群里diss员工:上班时间聊游戏,工作很闲吗?员工回怼:查聊天记录,看聊天时间占工作时间百分比!网友:真·扁平化管理!...
  2. MVC (ModelBinder等)技巧
  3. 2021年春季学期-信号与系统-第八次作业参考答案-第七小题
  4. VMTK学习——02.基本的PYPES教程
  5. 如何解决pip更新问题
  6. 音高和基频(Pitch and F0)
  7. 五分钟学会企业的OpenStack(T版)——简介及安装方式
  8. 【Qt开发】QSplitter的使用和设置
  9. 江西理工大学 微型计算机原理,江西理工大学-微机原理考试(wenwei)作业.docx
  10. 深入理解C++ 虚函数表
  11. js在wap端获取定位_iPhone 定位服务,没用的都关掉
  12. 9.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级进阶
  13. 计算机基础854哈工大,854计算机基础大纲
  14. 基于java社区疫情防控管理系统(java毕业设计)
  15. java简单的学生管理系统界面_java 学生信息管理系统(图形界面)
  16. EDEM软件简单介绍
  17. Win11如何调整鼠标dpi?Win11调整鼠标dpi的方法
  18. esp8266 阿里云 加湿器 天猫精灵
  19. 最新鑫迪自助建站系统源码V1.1完整版
  20. 约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】

热门文章

  1. hive经典面试题2--次日留存、3日、7日留存怎么计算
  2. 腾讯副总裁张小龙谈微信:对人性把握最重要
  3. OpenCV和Halcon分别实现彩色图像的白平衡效果
  4. c语言中rand()函数的用法笔记
  5. PTA 1069 微博转发抽奖(20points)
  6. Processing “迁” p5.js【秒懂小白篇】
  7. webstorem git报错error: index uses extension, fatal: index file corrupt
  8. C语言学习4:Bit、Byte、KB、MB、GB、TB、PB简述及单位换算
  9. 3DSlicer入门操作教程
  10. 烽火通信ECC升级转换S4项目的实施方法和价值收益