计算机视觉是一门研究如何使计算机识别图片的学科,也是深度学习的主要应用领域之一。
在众多深度模型中,卷积神经网络“独领风骚”,已经被称为计算机视觉的主要研究根据之一。
一、卷积神经网络的基本思想
卷积神经网络最初由 Yann LeCun(杨立昆)等人在1989年提出,是最初取得成功的深度神经网络之一。
1、局部连接
1、全局连接
传统的BP神经网络,例如多层感知器,前一层的某个节点与后一层的所有节点都有连接,后一层的某一个节点与前一层的所有节点也有连接,这种连接方式成为全局连接。
如果前一层有M个节点,后一层有N个节点,我们就会有 M×N 个链接权值,
每一轮反向传播更新权值的时候都要对这些权值进行重新计算,造成了 O(M×N)=O(n ²)的计算与内存开销。
2、局部连接
而局部连接的思想就是使得两层之间只有相邻的结点才进行连接,即连接都是“局部”的。
以图像处理为例,直觉上,图像的某一个局部的像素点组合在一起共同呈现出一些特征,而图像中距离比较远的像素点组合起来则没有什么实际意义,因此这种局部连接的方式可以在图像处理的问题上有较好的表现。
如果把连接限制在空间中相邻 c 个节点,就把连接权值降低到了 c×N,计算与内存开销就降低到了 O(c×N)= O(n) 。
2、参数共享
既然在图像处理中,我们认为图像的特征具有局部性,那么对于每一个局部使用不同的特征抽取方式(即不同的连续权值)是否合理?
由于不同的图像在结构上相差甚远,同一个局部位置的特征并不具有共性,对于某一个局部使用特定的连续权值不能让我们得到更好的结果。
因此我们考虑让空间中不同位置的结点连续权值进行共享,例如在局部连接的图中,属于结点 s₂的连续权值:
w = { w₁,w₂,w₃|w₁:x₁ → s₂;w₂:x₂ → s₂;w₃:x₃ →s₂}
可以被结点s₃ 以
w = { w₁,w₂,w₃|w₁:x₂ → s₃;w₂:x₃ → s₃;w₃:x₄ →s₃}
的方式共享。其他结点的权值共享类似。
这样一来,两层之间的连续权值就减少到 c 个。虽然在前向传播和反向传播的过程中,计算开销仍为 O(n),但内存开销被减少到常数级别O(c)。
二、卷积操作
离散的卷积操作正是这样一种操作,它满足了以上局部连接、参数共享的性质。代表卷积操作的结点层称为卷积层。
在泛函分析中,卷积被 f * g 定义为:
则一维离散的卷积操作可以被定义为:
现在,假设 f 和 g 分别代表一个从向量下标到向量元素值的映射,令 f 表示输入向量,g 表示的向量称为卷积核(kermel),则卷积核施加于输入向量上的操作类似于一个权值向量在输入向量上移动,每移动一步进行一次加权求和操作;每一步移动的距离被称为步长(stride)。
例如,我们取输入向量大小为5,卷积核大小为3,步长为1,则卷积操作过程如图:
卷积核从输入向量左边开始扫描,权值在第一个位置分别与对应输入值相乘求和,得到卷积特征值向量的第一个值,接下来,移动1个步长,到达第二个位置,进行相同操作,依此类推。
这样就实现了从前一层的输入向量提取特征到后一层的操作,这种操作具有局部连接(每个结点只与其相邻的3个结点有连接&#x