卷积运算的定义
卷积是对两个实变函数的一种特殊的线性运算,满足交换律和结合律。连续形式如下:
其中x(·)是输入信号强度(input),w(·)是权重,也称作核函数(kernel function)。
离散形式如下($da=1$):
卷积运算可以用星号表示:
卷积操作的实际含义是对输入信号的每个位置进行加权得到对某个参数的估计,其输出被称作特征映射(feature map)。
使用一张二维图像$I$进行输入,使用一个二维的核$K$:
稀疏交互,感受野,参数共享,等变表示
稀疏交互 sparse interactions
也叫稀疏连接(sparse connectivity)、稀疏权重(sparse weights)
核的大小远小于输入大小,使得需要存储的参数显著减少,提高了模型的统计效率,计算量减少。卷积核是一个权值矩阵,表示如何处理单个像素和相邻像素之间的关系,会影响输出的效果和亮度。卷积核中各个元素的相对差值小,就具有模糊降噪的效果;差值大就拉大了每个像素与相邻像素的距离,可以提取边缘或者达到锐化的效果。卷积核的元素相加为1,基本上保持了同样的亮度;如果大于1则图像变亮,小于1则变暗;如果累加为0则输出亮度极低,但不是全黑,可以用于边缘提取。
感受野 receptive field也称作接受域。输入x中影响输出单元s1的这些单元称作s1的接受域,即:每一层输出的特征图上像素点在原始图像上的映射区域大小。处于卷积网络中更深层的单元的接受域比浅层单元的接受域更大。这说明尽管网络层之间的直接连接很稀疏,但更深层的单元可以直接或间接连接到全部或者大部分输入单元。
感受野大小:$r_=r_{l-1}+k_{l-1}\cdot j_{l-1}$。
其中$j_l=j_{1-1} \cdot s_l$,因此$r_l=r_{l-1}+((k_{l-1}-1)\cdot ∏_{i=1}^{l-1}s_i)$。
k是核大小,s是步长,j是特征图上相邻元素间的像素距离,也可以理解为特征图上移动一个元素在原始图像上移动的像素个数。
局部感知域是指对于每个计算单元来说,只需要考虑其像素位置附近的输入,并不需要与上一层所有节点相连。
参数共享 parameter sharing
参数共享是指在一个模型的多个函数中使用相同的参数。传统神经网络中权重的每个元素只使用一次,而参数共享时核的每个元素都作用在输入的每个位置上,即网络含有绑定的权重(tied weight)。卷积运算中的参数共享保证了我们只需要学习一个参数集合而不是对每一个位置都需要学习一个参数集合,大大减少了需要学习的参数数量。
等变表示 equivariant representations
参数共享的特殊形式使得神经网络具有平移等变的性质。相同的边缘或多或少地分布在图像各处,所以应当对整个图像进行参数共享。
如果f(x)与g(x)满足f(g(x))=g(f(x)),则f(x)对于变换g具有等变性。
池化
卷积网络中一个典型层包含三级:卷积级、探测级、池化级
卷积级:并行计算多个卷积产生一组线性激活相应(多个卷积核学习到多个特征)
探测级:非线性激活函数
池化级:使用池化函数来调整输出
探测级输出的特征图与原图像像素大小相同,降维的关键在于池化,用于汇总输出。
池化函数使用某一位置的相邻输出的总体统计特征(max、mean)来代替该位置的输出,池化能够使特征提取拥有平移不变性(translation invariant),可以极大提高网络的统计效率。将池化与降采样(步幅移动)结合,可以使得池化单元少于探测单元,提高计算效率,减少过拟合。
池化对于处理不同大小的输入具有重要作用。
使用池化是一个无限强的先验:每一个单元都具有对少量平移的不变性。
卷积和池化可能导致欠拟合:如果一项任务依赖于保存精确的空间信息,那么在所有特征上使用池化会增大训练误差。
步幅卷积,标准卷积,平铺卷积,局部连接,全连接
步幅卷积:下采样,零填充(valid,same,full)
标准卷积等效于1个核的平铺卷积
不通过监督训练得到卷积核
随机初始化
手动设计
使用无监督的标准来学习核
其它
训练CNN时可以对输入进行旋转、平移、缩放等预处理来提高模型泛化能力(generalization ability)。
Classic cnn
AlexNet
ResNet
VGGNet
LeNet
PyTorch Tensorflow Keras
A brief summary
Convolution is a special kind of linear operation which satisfies the commutative and associative laws. It’s used to accumulate the weighted input.
Convolution Neural Network is the network that uses convolution instead of matrix multiplication. CNN mainly uses the idea of sparse connectivity and parameter sharing to improve the computing effectivity rapidly. The receptive field is defined as the region in the input space that a particular CNN’s feature is looking at.
CNN learns multiple features in parallel using multiple convolutional kernals.
The pooling function represents the output of a location using the overall statistical characteristics of adjacent output at that location. It can reduce the amount of data and prevent over-fitting.