四、应用
4.1 逐像素输出
卷积神经网络不仅可以输出分类任务的标签或者回归任务的实数值,还可以输出高维的结构化对象。如:图片上每个像素属于各个类别的概率。这允许模型标记图像中的每个像素,并绘制单个物体的精确轮廓。
这种结构化对象用张量表示。如:张量 ,其中 是网络的输入像素 属于类 的概率。
对图像进行逐个像素标记的一种策略是:先产生图像标记的一个原始猜测;然后使用相邻像素之间的校验来修正该原始猜测;重复上述修正步骤直到收敛。
如下图所示:输入图像张量 , 输出每个像素的类别张量 。
该网络并不是一次性输出结果 ,而是使用前一轮的输出 来改善结果 。
每一步对 执行卷积的卷积核都是张量 。
每一步产生的 都需要两个输入:
一个输入是通过对图像 采用核 来卷积。
一个输入是通过对前一个输出 采用核 进行卷积。
第一次产生 时,这一项为零,因为还没有前一次输入。
张量 用于产生从 到 的输出。
每一次重复修正相当于再一次执行同样的卷积(卷积核为 )。
很多个这样的卷积组成了一个深层网络,该网络的最后几层之间存在跨层的权值连接(连接权重为 )。
这种跨层的权值连接构成了反馈,因此这种深层网络形成了一个特殊的循环神经网络。
一旦对每个像素都进行了一次预测,就可以用各种方法来进一步处理这些预测的结果。
常规思路是:假设大片相连的像素对应于相同的标签。
4.2 可变输入类型
卷积神经网络使用的数据通常包含多个通道:每个通道都是时间/空间上一个点的某个角度的观测量。
同一个点,观测的角度不同,就产生了不同的通道。如:
三维的单通道:立体成像的数据。每个点代表了三维空间的一个点。
- 三维:空间的三个维度。
- 单通道:数据通道。
三维的多通道:彩色视频数据。时间维度+二维空间(图像)+色彩通道(红绿蓝三通道)
- 三维:时间维度(一维)+ 图像维度(二维)。
- 多通道:色彩通道(红绿蓝三通道)。
卷积神经网络还可以处理具有变化的空间尺度的输入。如:输入图片的尺寸可能各不相同。
这种不同尺寸大小的输入,无法使用传统的基于矩阵乘法的神经网络来表示。
因为不同样本的输入的维度可能不同,所以权重矩阵的形状无法确定。
卷积神经网络可以处理这种情况:根据输入图片尺寸的大小,核会被自动的的使用不同次数。
- 如果要求网络的输出尺寸和输入尺寸是一样的(如:为每个输入像素分配类别标签),则无需做额外的工作。
- 如果要求网络的输出尺寸是固定的(如:为整个图像分配一个类别标签),此时需要插入一个池化层:池化区域的大小要和输入的大小成比例,从而保持固定数量的池化输出。
卷积能处理可变大小的输入,但这种“可变”必须是因为同一个事物在同一个角度下的、不同数量的观察不同导致的。
如:时间角度下的、数量上的不同观察导致时间维度可变,空间角度下的、数量上的不同观察导致空间维度可变。
这种可变并不包括特征数量(即:多少个观察角度)的可变。
如:某个样本具有 “年龄、学历、性别”特征,另一个样本只具有“年龄、学历”特征。则卷积对于这种类型的数据集无能为力。
4.3 高效的卷积算法
设计更快的卷积、或者近似卷积而不降低模型准确率的方法是一个活跃的研究领域。
甚至仅提高前向传播效率的技术也是有用的。因为在商业环境中,通常对模型的推断有性能要求或者限制。
4.3.1 傅里叶变换
卷积等效于:使用傅里叶变换将输入和核都转换到频域,然后在频域将输入和核进行逐点相乘,最后把相乘的结果使用傅里叶逆变换转换回时域。
对于某些规模的问题,这种算法可能比直接计算离散卷积效率更高。
4.3.2 可分离卷积
对于一个 维的核矩阵,如果可以表示成 个一维向量的外积时,称该核是可分离的。
这里的外积不同于代数意义上的叉乘,而是:
当核 是可分离时,假设有: 。
直接使用 进行卷积运算是非常低效的。它等价于连续的对 个一维向量 执行卷积。
由于 ,因此直接计算卷积需要 个参数,需要 的运行时间和存储空间。
如果使用可分离卷积,则只需要连续的对 个一维向量 执行卷积。
此时需要 个参数,只需要 的运行时间和存储空间。
但遗憾的是:并不是每个核都是可分离的。
4.4 非监督的特征
通常卷积神经网络训练中代价最高的是学习卷积核,而输出层的学习代价相对较低。
- 因为卷积核的输入单元相对较多,而且卷积神经网络中可能需要学习多个卷积核。
- 经过了若干个池化层之后,输出层的输入单元的数量要小的多。
每个卷积核都可以提取某个特征,因此学习卷积核就是要学习特征。
降低卷积神经网络训练成本的方法是:使用那些非监督方式训练得到特征。
有三种基本策略来避免监督训练而得到特征:
- 简单地随机初始化特征。
- 人工设计特征。如:人工设计一个检测图像边缘的卷积核。
- 用无监督训练来学习特征。
4.5.1 随机初始化特征
随机初始化特征经常在卷积网络中表现的出乎意料的好。
随机初始化特征训练卷积神经网络的步骤是:
给出多个随机权重,生成一组候选的卷积核(这些卷积核可以是不同尺寸的)。
仅仅训练输出层来评估这一组候选卷积核的性能,挑选表现最好的那个卷积核。
训练过程中,卷积核的权重固定,不会被调整。
使用表现最好的那个卷积核的结构和权重,并重新训练整个网络。
训练过程中,卷积核的权重会被调整。
4.5.2 无监督学习特征
使用无监督学习特征来训练卷积神经网络时,允许其结构与输出层相分离。
其步骤是:
- 使用无监督学习特征。
- 提取训练集的全部特征,构建一个新的训练集。
- 将这个新的训练集作为输出层的输入,训练一个简单的神经网络(可能只有一个输出层,也可能添加一层隐层)。
无监督学习特征可以使用一些特殊的方法来学习,它不需要在每个梯度步骤中都完整的前向和反向传播。
如:逐层贪心预训练。逐层贪心预训练的经典模型是卷积深度信念网络。
使用无监督学习特征来训练卷积神经网络时,训练过程中可以完全不使用卷积。
通过该方法可以训练非常大的模型,并且只在前向传播期间产生高计算成本(反向传播阶段计算成本较低,因为大量的参数并不参与训练)。
当前大多数卷积神经网络以纯粹有监督的方式训练,因为计算能力比以前大幅度提升。
有监督的方式训练的预测能力更强。
无监督学习特征的优点难以说清:
- 使用无监督学习特征可以提供一些相对于监督训练的正则化。
- 使用无监督学习特征可以训练更大的网络结构,因为它的学习方式减少了计算成本。