反向传播(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)算法详解相关推荐

  1. nndl学习笔记(二)反向传播公式推导与详解

    写在前面 反向传播回顾 为什么需要反向传播? 基本思想 算法流程 算法局限性 详细推导(核心:多元微积分的*链式法则*) 一些定义 1. 输出层的误差δL\delta^{L}δL 2. 利用下一层误差 ...

  2. 神经网络算法详解 04:反馈神经网络(Hopfield、BAM、BM、RBM)

    本文介绍了反馈神经网络,包括Hopfield网络,离散Hopfield网络(DHNN),连续Hopfield网络(CHNN),双向联想记忆网络(BAM),玻尔兹曼机(BM),受限玻尔兹曼机(RBM). ...

  3. 神经网络算法详解 01:人工神经网络基础

    本文介绍了人工智能的发展历史,基本概念,应用领域:神经元模型,神经元的学习规则以及神经网络工作原理.本系列文章来自阿里云大学人工智能学习路线中的<神经网络概览及神经网络算法详解>课程. 系 ...

  4. 【强化学习】Policy Gradient算法详解

    DeepMind公开课https://sites.google.com/view/deep-rl-bootcamp/lectures David Silver教程 http://www0.cs.ucl ...

  5. 人脸识别系列三 | MTCNN算法详解上篇

    前言 我们前面分享了PCA,Fisher Face,LBPH三种传统的人脸识别算法,Dlib人脸检测算法.今天我们开始分享一下MTCNN算法,这个算法可以将人脸检测和特征点检测结合起来,并且MTCNN ...

  6. 深度学习 --- BP算法详解(流程图、BP主要功能、BP算法的局限性)

    上一节我们详细推倒了BP算法的来龙去脉,请把原理一定要搞懂,不懂的请好好理解BP算法详解,我们下面就直接把上一节推导出的权值调整公式拿过来,然后给出程序流程图,该流程图是严格按照上一节的权值更新过程写 ...

  7. Deformable ConvNet算法详解(对象尺寸/形状变换)

    Deformable ConvNet算法详解(DCN) 算法背景 算法细节 Deformable convolution Deformable RoI pooling Deformable ConvN ...

  8. FloodFill算法详解及应用

    FloodFill算法详解及应用 啥是 FloodFill 算法呢, 最直接的一个应用就是「颜色填充」,就是 Windows 绘画本中那个小油漆桶的标志,可以把一块被圈起来的区域全部染色. 这种算法思 ...

  9. YOLOv5算法详解

    目录 1.需求解读 2.YOLOv5算法简介 3.YOLOv5算法详解 3.1 YOLOv5网络架构 3.2 YOLOv5实现细节详解 3.2.1 YOLOv5基础组件 3.2.2 输入端细节详解 3 ...

  10. SoftPool算法详解

    Refining activation downsampling with SoftPool-论文链接-代码链接 目录 1.需求解读 2.SoftPool算法简介 3.SoftPool算法详解 3.1 ...

最新文章

  1. 如何把文件隐藏在一张图片里面
  2. Net作业调度(一) -Quartz.Net入门
  3. es6之扩展运算符...
  4. Java8之Consumer、Supplier、Predicate和Function攻略
  5. Python使用中文注释和输出中文(原创)
  6. 简化从Win32到Windows 10的迁移之路
  7. 【Android OpenGL ES 开发 (零)】创建一个新的工程
  8. 基于javaweb(springboot+mybatis)网上酒类商城项目设计和实现以及文档报告
  9. 【做题】uoj#370滑稽树上滑稽果——巧妙dp
  10. VC socket 发送类对象
  11. flex的三个属性grow、shrink、basis
  12. 理解 Delphi 的类(十一) - 深入类中的方法[12] - 消息方法
  13. 2.UML2 软件建模入门与提高 --- UML入门基础
  14. 软考数据库系统工程师笔记
  15. 计算机软件购销合同模版,软件销售合同范本
  16. 如何删除计算机新用户,如何将电脑里的账户信息彻底删除
  17. 那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
  18. 深入浅出Stream和parallelStream
  19. windows操作系统知识最全
  20. Arduino--YF-S201水流量检测传感器

热门文章

  1. 推荐 5 款良心网盘,免费、空间大、不限速!
  2. PyQt:1个文件选择对话框实现既可以选择文件,也可以选择文件夹
  3. 常见的文件后缀名大全
  4. Scrum敏捷开发框架
  5. 广义线性模型python
  6. Acer 4750 安装黑苹果_黑苹果安装 你要知道的那些坑
  7. 如何使用 DiskGenius 合并分区
  8. mysql主从配置文件
  9. 初秋最佳运动蓝牙耳机推荐,100-500这几款防水蓝牙耳机可以试试
  10. attention 文字识别算法_一文带你了解文字识别