tutorial of CNN 笔记
来源:互联网 发布:python 获取js跳转url 编辑:程序博客网 时间:2024/05/21 22:53
tutorial of CNN 笔记
Vanilla BP Through Fully Connected Networks
这里只考虑二维CNN的情况
Feedforward Pass
这里使用平方误差Loss Function,对于一个c类N个sample的分类器,设
多分类器的label大多采用one-hot code(e.g:[0,0,1,0,0])
由于整个dataset的error只是N张输入的error的加和,这里为了简便假定input只有一张图,那么
为了将权值W引入计算,设
f(.)为激活函数(sigmoid或tanh),
Backpropagation Pass
这里的error可以视为每一个神经元对bias(b)上的扰动的敏感度(大雾),公式为
而
那么有
得到反向传播的最重要的公式:
对输出层,公式变为
那么对每一个给定的神经元,更新权值W只需要知道输入和对应的delta(delta法则)
实际应用中对每一个
Convolutional Neural Networks
Convolution Layers
导出convolution layers 的bp更新公式,在convolution layer,前一层的特征图和一个可以学习的kernel进行卷积并且在最后加上一个activation function,每一个convolution layer的output map可能由多个输入卷积之后叠加而成,设
对于input map selection的设置,一般选择每两个一组或者每三个一组。
Computing the Gradients
我们假定每一个卷积层
up(.)表示upsampling操作,即将每一个像素点横向和纵向地重复n次(假设降采样层是以n*n的大小降采样的),一个有效的计算这个过程的方法是使用Kronecker product
如果A是一个 m x n 的矩阵,而B是一个 p x q 的矩阵,克罗内克积则是一个 mp x nq 的矩阵
A⊗B=⎛⎝⎜⎜a11B⋮am1B⋯⋱⋯a1nB⋮amnB⎞⎠⎟⎟
那么
那么我们很快就可以计算出bias的梯度:
最后,卷积核权值的梯度可以用BP得出,因为权值共享,只需要把所有涉及到给定权值的连接的梯度相加即可
上式可以在MATLAB中用一行写出,我们先对delta灵敏度map进行旋转,这样就可以进行互相关计算,而不是卷积(在卷积的数学定义中,特征矩阵(卷积核)在传递给conv2时需要先翻转(flipped)一下。也就是颠倒下特征矩阵的行和列)。然后把输出反旋转回来,这样我们在前向传播进行卷积的时候,卷积核才是我们想要的方向。
Sub-sampling Layers
降采样层提供了对input map的降采样的视角,如果有N个input map,那么就有N个output map,但是output map 要比input map小,或者
down(.)表示降采样方程,一般采用n x n的区域计算(取最大或者取平均),所以output map 的大小要比input map的大小在两个空间维度上(x轴,y轴)小n倍,
Computing the Gradients
这里的难点在于计算
当我们计算section2.1.1的卷积核的梯度的时候,我们需要算出input中的哪一个patch对应output map中的给定的pixel,而在这里我们需要算出当前层的
像之前一样,我们先旋转卷积核来让卷积函数进行互相关计算,这里需要使用’full convolution’来处理边界情况,在边界补0,以免input中的一个patch无法被nxn的区域铺满
这时就可以开始计算
对于乘性bias,不可避免地要涉及到原来的在feedforward过程中的当前层的down-sampled的map,所以最好把这些map先保存起来,避免重复计算,定义:
那么
Learning Combinations of Feature Maps
一般来说,使用多个input的卷积相加得出一个output map是有好处的。在一些著作中,这样的一些input map是手动选择的,但是我们可以尝试让CNN自己学习如何选择input maps,令
并且
为了满足上式可以把
因为上式的j是固定的,为了简便,我们去掉j,只考虑一个输出的情况,那么上面的那个softmax的函数的导数为:
这里的
Kronecker delta:
δi,j=0ifi≠jδi,j=1ifi=j
c那么
这里
Enforcing Space Combinations(加强稀疏性组合)
为了使得
只考虑一个输出的情况时:
因为
那么总体上
- tutorial of CNN 笔记
- 【论文笔记】The Impact of Imbalanced Training Data for CNN
- CNN 笔记
- CNN笔记
- CNN笔记
- deep learning tutorial卷积神经网络CNN
- Tutorial: Power of Two
- Essentials of Caffe Tutorial
- 【论文笔记】物体检测系列 Light-Head R-CNN: In Defense of Two-Stage Object Detector
- PARTICULAR OBJECT RETRIEVAL WITH INTEGRAL MAX-POOLING OF CNN ACTIVATIONS阅读笔记
- Survey of CNN Quantization Algorithm
- KeyPoint of《Fast R-CNN》
- CNN学习笔记
- 卷积神经网络(CNN)笔记
- CNN学习笔记
- CNN学习笔记
- R-CNN学习笔记
- R-CNN阅读笔记
- Dynamics CRM2016 解决C#调用web api报错无法显示错误详情的问题
- PHP流判断上传文件是否合法
- "-"列表框(CList)综合文件
- 数据库的复合主键
- centos7.3下安装pip时失败解决办法
- tutorial of CNN 笔记
- Tomcat最佳线程数
- 黑白间转换
- mybatis 一对多和多对一关联查询
- Erlang性能分析工具
- 创建型模式--工厂方法
- 背景图片的使用
- VS平台下C++编程_strcpy报错,数组长度获取
- 流量兄弟教你SEO新手入门法则