深度学习的数学-卷积神经网络的误差反向传播
文章目录
- 前言
- 正文
- 卷积神经网络中的关系式
- 卷积层
- 池化层
- 输出层
- 平方误差(损失函数)
- 梯度下降法
- 卷积层和输出层的神经单元误差(重点)
- 输出层的神经单元误差计算
- 输出层的神经单元与其权重偏置的关系
- 卷积层的神经单元误差与其权重偏置的关系
- 反向递推关系式(重点)
- 总结
排版可能更好一点的永久原文链接:深度学习的数学-卷积神经网络的误差反向传播
前言
本篇博客主要记录反向传播法在卷积神经网络中的应用,如何像全连接的隐藏层那样,通过输出层的神经单元误差反向推算出所有层的神经单元误差,最终得到梯度。
正文
博主在看完卷积神经网络的正向运作流程后,其实是有一点懵圈的,于是我冷静了一天再继续看卷积神经网络的反向传递;正向运作流程中的 『池化』、『特征映射』应该怎么样用式子表示?经过了池化(最大/平均/L2)的神经单元输入,又怎样体现在神经单元误差的计算上?可以带着这些问题继续往下看。
卷积神经网络中的关系式
在进行推算之前,首先确定好每个层神经单元之间的关系式
卷积层
卷积层中每个神经单元的输入可以理解为过滤器的加权输出,卷积层神经单元的输出套上激活函数就可以了。
所以关系式是下面这个样子的:
池化层
池化层的输入等于输出,如果是最大池化,则使用Max求一定范围内的极值就可以了(当前例子是将 4 * 4 的卷积最大池化为 2 * 2 的池化层)
输出层
而输出层和池化层的神经单元是全连接的,所以就是熟悉的 权重 * 池化输出求和 公式
平方误差(损失函数)
平方误差依旧由 正解 - 输出神经单元的输出,做平方和
梯度下降法
梯度下降如果有些忘了的话,链接在此:深度学习的数学-梯度下降
梯度就可以看作是代价函数的导数整体下降速度最快的分量,每个变量只需要顺着梯度做减法,即可以最快速度达到整体极值点的位置
各个神经单元的的权重、偏置都是变量,为方便理解书中也把每个变量代表的含义标了一下,如下图所示:
卷积层和输出层的神经单元误差(重点)
在全连接隐藏层反向递推的过程中,有一个神经单元误差的概念,忘了的可以看一下之前记录的博客:深度学习的数学-神经单元误差和反向传播
简单来说就是损失函数对神经单元的综合输入求偏导数,这个偏导数衡量这个神经单元与理想状态(理想是达到0)的差距
而卷积神经网络中,有卷积层和输出层两种类型的神经元,分别定义如下
PS:池化层输入等于输出是没有额外变量的,过滤器的偏置和权重都体现在了卷积层的综合输入 z 上
这两个神经单元误差影响整体平方误差画一个图就像下面这样:
输出层的神经单元误差计算
在看神经单元误差对权重偏置的影响之前,先看一下怎么计算输出层的神经单元误差,其定义如下:
由平方误差的定义式可以知道 C 对 anoa_n^oano 的偏导数
PS:乘 1/2 就是为了不让偏导数前面带常数 2
带入式子即可得到输出层的神经单元误差公式
输出层的神经单元与其权重偏置的关系
与之前一样,还是从输出层开始,建议看的时候结合这个式子看,很容易就看出来了
同样根据单变量复合函数求偏导数的链式法则,把 z1oz_1^oz1o 看作 wi−jOkw_{i-j}^{Ok}wi−jOk 的函数,再根据输出层神经单元误差的定义,得到如下式子
相同的思路,对输出层神经单元的偏置求偏导数,能得到如下结果
卷积层的神经单元误差与其权重偏置的关系
还是先看下上方贴出来的式子如下
如果但看上面看不太明白,还可以按照书中的思路,先把式子都列出来找找规律
里边的每一个 w 的偏导数一目了然
再找规律整理一下就能得到式子
再看一下上面的定义式,根据单变量复合函数的偏导数公式,很容易也能得出下面的结论
反向递推关系式(重点)
为了减少偏导数的计算,再一次来到了紧张刺激的反向递归关系烧脑环节,书中依旧是以 6 * 6 手写识别的神经网络为例,便于理解推导过程
三个输出神经单元的情况下,有三条路径可以影响到平方误差,把平方误差对 zijFkz_{ij}^{Fk}zijFk 的偏导数转向对输出层的三个 ziOz_i^OziO 求偏导数,即可得到如下式子
提取同类项可得:
然后把括号中的非神经单元误差的导数,根据关系式求出来(回想z = 权重 * 输出的那个式子,所以 z 对 a 求导结果自然是权重)
然后计算 aijPka_{ij}^{Pk}aijPk 对 zijPkz_{ij}^{Pk}zijPk 的导数
最大池化层,输入等于输出,等于卷积层对应神经单元的最大值;两者相等(激活函数 a = x),所以导数为1
接着计算 zijPkz_{ij}^{Pk}zijPk 对 aijFka_{ij}^{Fk}aijFk 的导数,最大时这两个数相等(激活函数 a = x),否则为0(可以理解为激活函数 a = 0 * x)
最后那个 zijFkz_{ij}^{Fk}zijFk 对 aijFka_{ij}^{Fk}aijFk 的导数就是激活函数的导数,带入即可得到如下式子:
推广一下,就可以通过下一层的神经单元误差反推上一层的神经单元误差
最后只需要根据神经单元误差与权重和偏置的关系,即可算出梯度,再使用梯度下降法,逼近全局最低点即可
总结
首先根据卷积神经网络的概念引入了卷积神经网络中各层的数学关系式,并通过关系式求出了输出的神经单元误差及其各层的神经单元误差与权重和偏置的关系,最后用全连接神经网络类似的推导方法,推导出了反向递推关系式。
深度学习的数学-卷积神经网络的误差反向传播相关推荐
- 深度学习的数学 (6)误差反向传播法必需的链式法则
1. 神经网络和复合函数 y = f(u), u = g(x) 嵌套结构的函数 f(g(x)) 称为 f(u) 和 g(x) 的复合函数. 2. 链式法则,复合函数求导公式 2.1 三个函数的复合函数 ...
- 函数或变量 rtenslearn_c 无法识别_深度学习的数学-卷积神经网络的结构和变量关系...
前言 本篇博客主要介绍卷积神经网络的组成部分,以及变量表示,最后附上卷积神经网络代价函数的计算 正文 前文中学到的神经网络都是全连接类型的,隐藏层对输入层有着各自固定的偏好模式,满足偏好模式(权重和偏 ...
- 深度学习 --- BP算法详解(误差反向传播算法)
本节开始深度学习的第一个算法BP算法,本打算第一个算法为单层感知器,但是感觉太简单了,不懂得找本书看看就会了,这里简要的介绍一下单层感知器: 图中可以看到,单层感知器很简单,其实本质上他就是线性分类器 ...
- 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP
原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR
原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression python源代码(GitHub下载 CSDN免费下载) ...
- 深度学习算法中卷积神经网络的应用
下面一起来探讨一下关于深度学习算法中卷积神经网络的基本概念和应用: 1.卷积神经网络基本概念 卷积神经网络也是在传统人工神经网络的基础上发展起来的,它与 BP 神经网络有很大的相似之处,但也有很大的区 ...
- 深度学习教程(10) | 卷积神经网络解读(吴恩达·完整版)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...
- 吴恩达.深度学习系列-C4卷积神经网络-W2深度卷积模型案例
吴恩达.深度学习系列-C4卷积神经网络-W2深度卷积模型案例 (本笔记部分内容直接引用redstone的笔记http://redstonewill.com/1240/.原文整理的非常好,引入并添加我自 ...
最新文章
- 最新论文解读 | 神经网络“剪枝”的两个方法
- Step1帐户登录系统(6.使用OpenID登录网站)
- 程序员的创业陷阱:接私活
- Fluid 0.4 新版本正式发布:支持数据预热,优化小文件场景
- 2021年第十二届蓝桥杯 - 省赛 - C/C++大学C组 - D.相乘
- 【208天】黑马程序员27天视频学习笔记【Day21-中】
- Django报错SocialApp matching query does not exist以及Django的SITE_ID = 1的含义
- Android 自定义操作成功的loading动画
- 95-140-112-源码-transform-算子split 和 select
- AI说,它可以把你变成个游戏 | 3D人体模型 · CVPR
- 计算机制图应用领域,计算机制图对测绘工程的应用
- IOI 2022 简要题解
- Java——求解一元n次方程(V1.0)
- 网络信息安全领域中常见的几个概念
- 王道计算机网络第三章
- Leo说说写简历之晋级篇
- 真的无语,MSRA连国防七子及北邮学生都不招了
- 判断互质数的简易方法
- 电子计算机及多媒体教学设计,第六课 多媒体与多媒体技术
- 91. 基于Notes/Domino的文档工作流系统(三)
热门文章
- Unity中使用动画状态机控制Spine动画
- 【亲测可用】经验分享,开发在线考试平台(类似问卷星、考试星、阿里巴巴在线考试、易考通、考试云、移动网大、移动网校、中石化网络学院、宝武微学院、iTEST等)如何用程序代码防止学生作弊?
- Python提示:Consider using the `--user` option or check the permissions.
- 一刀斩 :“SVN” failed to start 服务启动失败
- oracle大于字符串时间,Oracle
- 数学----常见函数求导过程
- 【云原生之Docker实战】使用Docker部署Linux系统监控平台Netdata
- Mybatis源码解析《一》
- 2021年中国阴极铜产量及重点企业对比分析:江西铜业vs铜陵有色vs云南铜业[图]
- 2021最新华为Java校招面试题,讲的太透彻了