计算机视觉
包括:图像分类也叫做图像识别、目标检测等
一个小的图像可能1M,但是他的像素是一个超级大向量,如果直接深度学习那么运算量会很大,因此需要运用卷积运算。
卷积运算是卷积神经网络的基础单元之一。下面用边缘检测理解卷积如何进行运算。
过滤器又称为核,对于复杂的图像我们可以将其设为为参数,通过后向传播学习,自动获得。
填充
是构建深度神经网络时,需要对基本卷积进行的操作。
进行卷积的两个缺陷:
- 1、每次卷积计算过后图像都会变小。
- 2、图像角落或者边缘的像素在输出过程中只会被使用一次,中间像素会用到很多次,丢失了许多图片靠近边界的信息。
一种是不填充,另一种是保持输入和输出一致,所以过滤器一般都是奇数。
卷积步长
带步长的卷积是在卷积神经网络中组成基础卷积模块的另一个部分。
步长等于2时:
输入与输出的维度(向下取整)
实际真正的卷积都是将核矩阵针对水平和垂直方向做一个镜面对称(反转),因此上述的过程用的是核矩阵本身,故上述计算过程应该称为交叉相关,但是多数深度学习网络都称其为卷积。
三维卷积
一个体积核可以检测一个特征,两个核检测两个特征,,,,(深度/通道)
卷积网络中的一层:
单层卷积神经网络:
利用两个不同的过滤器对三维输入进行卷积运算,的到不同的输出,最终我们要将这些输出变成单程卷积神经网络,还需要对每一个输出添加一个偏差(是一个实数,应用广播机制,对矩阵中的每一个元素添加一个偏差),可以继续添加非线性转换ReLU,最终通过添加偏差与非线性转换得到一个矩阵输出。最后将不同的输出矩阵放在一起得到一个体积输出,就是卷积神经网络的一层。
将其与非卷积单层前向传播神经网络对应,卷积核类似于权矩阵,上述例子中有两个过滤器,也就是两个特征,特征使得卷积神经网络不太容易过拟合。
深度卷积神经网络ConvNet:
池化层:
深度卷积神经网络通常还使用池化层减少展示量,提高计算速度,使一些特征的检测功能更强大。
如果把4X4的区域看作某个特征的集合,即神经网络某个层中的激活状态,一个大的数字,意味着它或许检测到了一个特定的特征。池化层做的其实是,如果在过滤器中任何地方检测到了这些特征,就保留最大值,如果特征没有被检测到,可能左侧上方的四分之一区域就没有这个特征,于是那些数值的最大值仍然相当小。
池化层有一套超参(步长、尺寸),但是没有任何参数需要学习,没有需要梯度下降算法学习的东西。还有均值采样,但是没有最大化采样使用频率高。
CNN示例
受到经典神经网络的启发(LeNet-5),网络中存在很多超参数,不要试着创造自己的超参数组,而是要阅读文献,看看其他人使用的超参数。去学习一定数量的神经网络的实例,去看看别人如何做的,从中获得灵感将这些构件组合在一起
为什么卷积在神经网络中如此有用,如何将卷积放在神经网络中,如何用有标签的数据训练卷积神经网络:
卷积层相较于只有完全连接的神经层优势:参数共享与连接的稀疏性
卷积神经网络参数很少的原因有两个:
- 参数共享:在特征检测器中,例如垂直边缘检测对于图像的一部分是有用的,那么对于另一部分可能也是有用的,所有一个卷积核循环检测图像所有位置,找到垂直的边缘
- 避免只有相对少的参数的方法建立稀疏的联系
卷积神经网络会被用来捕捉平移不变,当一张图片移动了几个像素格,它还应该产生非常相似的特征,给他相同的标签;同时,因为使用了相同的滤网,图片的各个部分,平移之前与平移之后的图层,帮助神经网络自然而然的学会更稳定或者更佳的捕捉到平移不变需要的特性。