目录
一、从全连接到卷积
1、为啥要卷积?因为图片的数据量太多,类别又很少
因为这些网络特征元素的顺序是不变的,因此最优的结果是利用先验知识,即利用相近像素之间的相互关联性,从图像数据中学习得到有效的模型。
卷积神经网络(convolutional neural network,CNN)是一类强大的、为处理图像数据而设计的神经网络。卷积神经网络需要的参数少于全连接架构的网络,而且卷积也很容易用GPU并行计算。
多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。
2、在图片里找模块的原则
卷积神经网络正是将空间不变性(spatial invariance)的这一概念系统化,从而基于这个模型使用较少的参数来学习有用的表示。
合理的假设是:无论哪种方法找到这个物体,都应该和物体的位置无关。 理想情况下,我们的系统应该能够利用常识:猪通常不在天上飞,飞机通常不在水里游泳。 但是,如果一只猪出现在图片顶部,我们还是应该认出它。
-
平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
-
局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
3、针对图片重新改进
h(i,j)就是输出,之前是h(i)
X(k,l)是输入
W(i,j,k,l)是权重矩阵,遍历两个维度,做求和
4、
不管在图片哪个位置,都是同一只猫,与位置ij无关,只需一个权重矩阵即可
V 被称为卷积核(convolution kernel)或者滤波器(filter),亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数。
i和j在这里理解为一张图片的第i行,第j个元素;上一页的意思是说以全连接的逻辑来说,对于每一个位置的元素,都需要进行一个矩阵的内积(输入矩阵是整张图片,权重是一个同维度的矩阵)
我个人的理解是ab相当于给定的相框,xy是像框开始的坐标,对于一张图框选出来的部分做计算
参数大幅减少的代价是,我们的特征现在是平移不变的,并且当确定每个隐藏活性值时,每一层只包含局部的信息。 以上所有的权重学习都将依赖于归纳偏置。
5、超过某些距离的点就不再看了,不参与计算
6、卷积是一个特殊的全连接层
二、卷积层
1、具体操作展现 (0,1,2,3)是一个卷积核,和输入不断做内积,达到图片缩小的目的
严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算。 根据 6.1节中的描述,在卷积层中,输入张量和核张量通过互相关运算产生输出张量。
2、展示,w、b 仍然是可以学习的参数
3、不同的核可以得到不同的结果
因此,我们可以把隐藏表示想象为一系列具有二维张量的通道(channel)。 这些通道有时也被称为特征映射(feature maps),因为每个通道都向后续层提供一组空间化的学习特征。 直观上可以想象在靠近输入的底层,一些通道专门识别边缘,而一些通道专门识别纹理。
4、为了表示方便,没有使用数学的定义,不太懂,影响不大吧,还有补课,www
5、图片常用二维的,但是也有一维和三维
6、卷积是一种特殊的全连接层
三、代码实现
- 卷积核K只可以检测垂直边缘
- 因为它是1x2, 只有相邻2列参与运算,转置后计算2行(相连2行没有变化)为全0
- X.reshape((1,1,6,8))
- 这个二维卷积层使用四维输入和输出格式(批量大小、通道、高度、宽度)
- 通道维:通道数,RGB图3通道,灰度图1通道,
- 批量维就是样本维,就是样本数
- 最终实现了:学一个卷积层的权重
四、问题回复
- 感受野为什么不是越大越好? 核小,层数加深
- 二维卷积层,有没有可能同时使用两个不同尺寸的Kernel进行计算,然后再计算出一个更合适的Kernel,从而提高特征提取的性能? 很好,以前这个想法可以进谷歌了
- 核的大小体现局部性的特征;核不变对应平移不变性
- 卷积——来源于数字信号系统
- 抖动厉害:数据不一样;学习率的问题;不能抖不下降
- 使用卷积核的原因是 这个核的大小固定,解决了输入的特征值过大的问题