手撕CNN神经网络(二)反向传播(back propagation)
反向传播简单来说就是通过求偏导数从而更新神经网络中权重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)相关推荐
- 手撕 CNN 经典网络之 AlexNet(理论篇)
大家好,我是红色石头! 第一个典型的CNN是LeNet5网络,而第一个大放异彩的CNN却是AlexNet.2012年在全球知名的图像识别竞赛 ILSVRC 中,AlexNet 横空出世,直接将错误率降 ...
- 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)
大家好,我是红色石头! 在上一篇文章: 手撕 CNN 经典网络之 VGGNet(理论篇) 详细介绍了 VGGNet 的网络结构,今天我们将使用 PyTorch 来复现VGGNet网络,并用VGGNet ...
- 手撕 CNN 之 AlexNet(PyTorch 实战篇)
大家好,我是红色石头! 在上一篇文章: 手撕 CNN 经典网络之 AlexNet(理论篇) 详细介绍了 AlexNet 的网络结构,今天我们将使用 PyTorch 来复现AlexNet网络,并用Ale ...
- 零基础入门深度学习(3) - 神经网络和反向传播算法
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...
- 手撕 CNN 经典网络之 VGGNet(理论篇)
2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet.VGGNet是比AlexNet更深的 ...
- 深度学习与自然语言处理教程(3) - 神经网络与反向传播(NLP通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://www.showmeai.tech/article-d ...
- 独家思维导图!让你秒懂李宏毅2020深度学习(三)——深度学习基础(神经网络和反向传播部分)
独家思维导图!让你秒懂李宏毅2020深度学习(三)--深度学习基础(神经网络和反向传播部分) 长文预警!!!前面两篇文章主要介绍了李宏毅视频中的机器学习部分,从这篇文章开始,我将介绍李宏毅视频中的深度 ...
- 机器学习笔记丨神经网络的反向传播原理及过程(图文并茂+浅显易懂)
文章目录 一.前言 二.神经网络的前向传播原理 1. 单个神经元的计算 2. 神经元在神经网络中的计算 三.反向传播算法内容(请静下心,一步一步的看) Step1 计算误差 Step2 更新权重 四. ...
- 深度学习与计算机视觉教程(4) | 神经网络与反向传播(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/37 本文地址:https://www.showmeai.tech/article-d ...
最新文章
- 字节老板在群里diss员工:上班时间聊游戏,工作很闲吗?员工回怼:查聊天记录,看聊天时间占工作时间百分比!网友:真·扁平化管理!...
- MVC (ModelBinder等)技巧
- 2021年春季学期-信号与系统-第八次作业参考答案-第七小题
- VMTK学习——02.基本的PYPES教程
- 如何解决pip更新问题
- 音高和基频(Pitch and F0)
- 五分钟学会企业的OpenStack(T版)——简介及安装方式
- 【Qt开发】QSplitter的使用和设置
- 江西理工大学 微型计算机原理,江西理工大学-微机原理考试(wenwei)作业.docx
- 深入理解C++ 虚函数表
- js在wap端获取定位_iPhone 定位服务,没用的都关掉
- 9.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 高级进阶
- 计算机基础854哈工大,854计算机基础大纲
- 基于java社区疫情防控管理系统(java毕业设计)
- java简单的学生管理系统界面_java 学生信息管理系统(图形界面)
- EDEM软件简单介绍
- Win11如何调整鼠标dpi?Win11调整鼠标dpi的方法
- esp8266 阿里云 加湿器 天猫精灵
- 最新鑫迪自助建站系统源码V1.1完整版
- 约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】
热门文章
- hive经典面试题2--次日留存、3日、7日留存怎么计算
- 腾讯副总裁张小龙谈微信:对人性把握最重要
- OpenCV和Halcon分别实现彩色图像的白平衡效果
- c语言中rand()函数的用法笔记
- PTA 1069 微博转发抽奖(20points)
- Processing “迁” p5.js【秒懂小白篇】
- webstorem git报错error: index uses extension, fatal: index file corrupt
- C语言学习4:Bit、Byte、KB、MB、GB、TB、PB简述及单位换算
- 3DSlicer入门操作教程
- 烽火通信ECC升级转换S4项目的实施方法和价值收益