Deep Learning Note5
什么是卷积
卷积首先要理解,瞬时行为的持续性后果。即一个函数f(x)对当前结果发生了影响,并对后续的
g(x)函数产生影响,将这些影响进行积分,获得总的结果
“卷“表明f(x)对g(x)施加影响,而“积”表明影响是持续累积的。
所谓卷积,就是一个功能和另一个功能在时间的维度上的“叠加”作用。
什么叫卷积呢?举例来说,在一根铁丝某处不停地弯曲,假设发热函数是f(t) ,散热函数是 g(t) ,此时此刻的温度就是 f(t) 跟g(t)的卷积。在一个特定环境下,发声体的声源函数是f(t) ,该环境下对声源的反射效应函数是 g(t) ,那么这个环境下的接受到声音就是 f(t) 和 g(t) 的卷积。类似地,记忆其实也是一种卷积的结果。假设认知函数是 f(t) ,它代表对已有事物的理解和消化,随时间流逝而产生的遗忘函数是g(t),那么人脑中记忆函数 h(t) 就是函数是 f(t) 跟g(t) 的卷积,可用如下公式表示。
神经网络的卷积
边缘检测
输入图像
$$
实际上我们就是用每个像素的及其相邻的区域的线性组合来代替这个像素。说直白点,也是为了调整图片像素的权重。例如特征检测器为
$$
便是锁定一个3*3的像素块,加强竖直方向的像素的对比。如果一个色块中有明显的边际,那么乘以这个特征检测器,颜色相近的色块的数值相加值相互抵消,导致颜色变浅;而颜色相差大的色块数值相加影响不大,颜色偏深。
卷积和互相关
卷积核的通道数
假如有个RGB图像,那么就有三个通道。那么就应该采用三维卷积核 ,最后要将各个通道对应坐标的值相加就生成了卷积后该坐标对应数值
思考:为什么要将多通道压缩到二维的呢?
多卷积核
每次通过卷积核后,都会生成一个2维的特征图像,那么一个图片同时
经过n个卷积核后,就生成n个特征图像,那么这些特征图像就成为了后续全连接神经网络的输入值(类似全连接神经网络中,每一个网络层有多个神经节点)
卷积维度的验证
输入矩阵格式:四个维度,依次为:样本数、图像高度、图像宽度、图像通道数
输出矩阵格式:与输出矩阵的维度顺序和含义相同,但是后三个维度(图像高度、图像宽度、图像通道数)的尺寸发生变化。
权重矩阵(卷积核)格式:四个维度,依次为:卷积核高度、卷积核宽度、输入通道数、输出通道数(卷积核个数)
输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系
- 卷积核的输入通道数由输入矩阵的通道数所决定。
- 输出矩阵的通道数由卷积核的输出通道数所决定。
- 输出矩阵的高度和宽度这两个维度的尺寸由输入矩阵、卷积核、步长所共同决定。
输入图像维度
为:(样本数量n;高度 h;宽度 w;通道数 c)
$$
Pool(池化)层
池化层用于压缩特征图片,没有需要学习的参数,往往位于卷积层之后。但反向传播时需要还原压缩的特征图
最大池化层
即选定一个区域内的的最大值作为最终的特征值
$$
平均池化层
选取的是小区域内的均值来代表该区域内的值
$$
Valid / Same 卷积
Valid:no padding;
$$
原文链接:https://blog.csdn.net/koala_tree/article/details/78458067
卷积层的反向传播
问题:
- 池化层在前向传播的时候,对输入进行了压缩。它除了自身没有实际参与运算的参数,反向传播时如何还原上一层的数据
- 卷积层通过卷积求和得到当前层的输出,而DNN是通过矩阵乘法得到输出
池化还原
平均池化还原
将每个区域的值平均分配到所在区域,还原后
最大值池化还原
将最大值还原到之前它所在位置,还原后
卷积层求导上一层隐藏层
一直fan'xia撒旦
反向推导时首先要明白,上一层的元素和下一层哪些元素相关,例如
输入图像
$$
得到的特征图谱
根据特征计算流程,可知道,只通过影响。所以的误差应该等于点的误差乘上权重。
以此类推:通过影响,通过影响,通过影响,通过影响。所以的误差应该等于......
推导下式:
$$
见于下图:https://zhuanlan.zhihu.com/p/61898234
所以我们在误差矩阵周围添加了一圈0。然后将卷积核翻转后(上下、左右)进行卷积操作,便算出来了上一层输入的误差
$$
由此,我们可以推导出
$$
推导该层的W、b的梯度
我们已经求得了的表达式。回顾张量的卷积,后一层的每个通道都是由前一层的各个通道经过卷积再求和得到的。也就是有几个卷积核,下一层就有多少个通道
根据
因此
$$
是一个4维张量,它的维度表示为卷积核个数×行数×列数×通道数。且权值w和所有的输出都有关系
以我们可以得出下面的 :
可以转换为矩阵表示
再转换为符号简化模式
$$