反向传播(Backpropagation)算法详解
反向传播(back propagation)算法详解
反向传播算法是神经网络的基础之一,该算法主要用于根据损失函数来对网络参数进行优化,下面主要根据李宏毅机器学习课程来整理反向传播算法,原版视频在https://www.bilibili.com/video/av10590361/?p=14.
首先,我们来看一看优化方程:
上面的损失函数是普通的交叉熵损失函数,然后加上了正则化项,为了更新参数W,我们需要知道J关于W的偏导。
上图是一个简单的例子,我们截取神经网络的一部分,根据链式法则(chain rule),要想知道J关于w的偏导,我们需要求出:
上面的式子也可以写成下式,a代表activation function也就是激活函数:
1:前向传播(forward pass)
在前向传播中,我们可以得到每个神经元的输出z,以及z关于该层参数w的偏微分:
根据z的式子我们可以知道,z关于w的偏导等于该层的输入,下图是一个例子:
2:反向传播(backward pass)
通过正向传播,我们已经知道了但是还没有求出来,而这两项都是在反向传播过程中得到的。
其中比较好求,因为它的值就是激活函数的偏导,比如sigmoid函数的偏导等于z(1-z).因此现在我们只需要求解:
根据链式法则,等于所有分支关于a的偏导,如上图所示。
因此求解的过程大致如下:
为了求,我们需要求解,如果直接连接输出的话,可以按照下面求解:
如果不是直接输出,那么就递归的求解。
下面就是总的过程:
可以看出,在求解偏导的时候,需要乘以每一层的输出z,以及激活函数的导数,以及中间的参数w,因此在训练神经网络的时候需要做batch normalization,使得每一层的输入大致在一个scale下面,另外还需要加正则项防止w过大(会造成梯度爆炸),除此之外还需要设计一些好的激活函数来防止梯度消失问题(如sigmoid的偏导最大值为0.25,因此层数加深之后会造成梯度消失)。
反向传播(Backpropagation)算法详解相关推荐
- nndl学习笔记(二)反向传播公式推导与详解
写在前面 反向传播回顾 为什么需要反向传播? 基本思想 算法流程 算法局限性 详细推导(核心:多元微积分的*链式法则*) 一些定义 1. 输出层的误差δL\delta^{L}δL 2. 利用下一层误差 ...
- 神经网络算法详解 04:反馈神经网络(Hopfield、BAM、BM、RBM)
本文介绍了反馈神经网络,包括Hopfield网络,离散Hopfield网络(DHNN),连续Hopfield网络(CHNN),双向联想记忆网络(BAM),玻尔兹曼机(BM),受限玻尔兹曼机(RBM). ...
- 神经网络算法详解 01:人工神经网络基础
本文介绍了人工智能的发展历史,基本概念,应用领域:神经元模型,神经元的学习规则以及神经网络工作原理.本系列文章来自阿里云大学人工智能学习路线中的<神经网络概览及神经网络算法详解>课程. 系 ...
- 【强化学习】Policy Gradient算法详解
DeepMind公开课https://sites.google.com/view/deep-rl-bootcamp/lectures David Silver教程 http://www0.cs.ucl ...
- 人脸识别系列三 | MTCNN算法详解上篇
前言 我们前面分享了PCA,Fisher Face,LBPH三种传统的人脸识别算法,Dlib人脸检测算法.今天我们开始分享一下MTCNN算法,这个算法可以将人脸检测和特征点检测结合起来,并且MTCNN ...
- 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)
上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...
- Deformable ConvNet算法详解(对象尺寸/形状变换)
Deformable ConvNet算法详解(DCN) 算法背景 算法细节 Deformable convolution Deformable RoI pooling Deformable ConvN ...
- FloodFill算法详解及应用
FloodFill算法详解及应用 啥是 FloodFill 算法呢, 最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色. 这种算法思 ...
- YOLOv5算法详解
目录 1.需求解读 2.YOLOv5算法简介 3.YOLOv5算法详解 3.1 YOLOv5网络架构 3.2 YOLOv5实现细节详解 3.2.1 YOLOv5基础组件 3.2.2 输入端细节详解 3 ...
- SoftPool算法详解
Refining activation downsampling with SoftPool-论文链接-代码链接 目录 1.需求解读 2.SoftPool算法简介 3.SoftPool算法详解 3.1 ...
最新文章
- 如何把文件隐藏在一张图片里面
- Net作业调度(一) -Quartz.Net入门
- es6之扩展运算符...
- Java8之Consumer、Supplier、Predicate和Function攻略
- Python使用中文注释和输出中文(原创)
- 简化从Win32到Windows 10的迁移之路
- 【Android OpenGL ES 开发 (零)】创建一个新的工程
- 基于javaweb(springboot+mybatis)网上酒类商城项目设计和实现以及文档报告
- 【做题】uoj#370滑稽树上滑稽果——巧妙dp
- VC socket 发送类对象
- flex的三个属性grow、shrink、basis
- 理解 Delphi 的类(十一) - 深入类中的方法[12] - 消息方法
- 2.UML2 软件建模入门与提高 --- UML入门基础
- 软考数据库系统工程师笔记
- 计算机软件购销合同模版,软件销售合同范本
- 如何删除计算机新用户,如何将电脑里的账户信息彻底删除
- 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
- 深入浅出Stream和parallelStream
- windows操作系统知识最全
- Arduino--YF-S201水流量检测传感器