卷积
许多机器学习的库实现的是下面的互相关函数(cross-correlation)(以二维图像为例),但是称之为卷积。
输入(input):卷积的第一个参数,上例中为
核函数(kernel function):第二个参数,上例
特征映射(feature map):输出,上例
在机器学习中,学习算法会在核合适的位置学的恰当的值,所以一个基于核翻转的卷积运算学习算法所学得的核,是对未翻转的算法学得的核的翻转。
动机
稀疏交互
传统神经网络使用矩阵乘法来建立输入与输出之间的连接关系,其中,参数矩阵中每一个参数都描述了一个输入单元与一个输出单元之间的交互,即每一个输出单元与每一个输入单元都产生交互。但是由于卷积运算的核的大小的远小于输入的大小,所以在每次运算时,每一个输入单元只与某几个输出单元产生交互,同样,每一个输出单元也只与某几个输入单元产生交互。这就是所谓稀疏交互
虽然卷积神经网络中相邻层一个输出单元只直接接收部分输入的信息,但在更深的层中的单元,它们的接受域却更大。这意味着在卷积神经网络中尽管直接连接都是很稀疏的,但在更深的层中的单元却可以间接地连接到全部或者大部分输入图像。
参数共享
传统的神经网络的参数矩阵中,每一个参数只使用一次,当它乘以一个输入单元以后就再也不会用到了。但在卷积神经网络中,用于一个输入的参数也会用到另外的输入单元上;实际上,核的每一个元素都作用在输入的每一位置上(是否考虑边界元素取决于边界决策的设计)。
以第一张配图为例,一个核(kernel function)中四个参数对整张输入(input)所有元素都有交互。只需要存储4个参数即可。
因此,参数共享有效降低了需要存储的参数体量;我们只需要学习一个参数集合,而不是对于每一输入都需要学习一个单独的参数。
对书中提到,参数共享“没有改变前向传播的运行时间,仍然是 ”尚不理解。(在传统神经网络计算时,时间复杂度为,卷积神经网络为,假如 比 小几个数量级,时间复杂度应有明显下降?)
等变表示
等变的定义:如果一个函数满足“输入改变,输出也以同样的方式改变”这一性质,就说这个函数是等变的。
如果函数 满足 ,那么就说 对变换 是等变的。
对于卷积,天然满足平移等变。即如果令 是输入的任意平移函数,那么卷积运算对于 就是等变的。
以二维图像为例,输入图像经过卷积运算,产生了一个二维映射来表明某些特征在输入中的位置。如果我们移动在输入中的对象,它的(特征)表示也会在输出中移动同样的量。
但卷积对于其他的变换并非天然等变,例如旋转和缩放,还需要另外的处理机制。
池化
池化函数(pooling function)使用某一位置的相邻输出的总体特征来代替网络在该位置的输出。常用的池化函数有取相邻矩形区域内最大值或平均值、范数、基于矩中心像素距离的加权平均函数。
平移不变性是指当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。且空间位置上的平移对池化天然具有不变性。
当我们对分离参数的卷积的输出进行池化时,特征能够学得应该对于哪种变换具有不变性。