如何从信号角度理解卷积神经网络?
深度神经网络很大程度上还是一种黑箱中技术,我们还不完全清楚其如此有效的原因。南加利福尼亚大学的研究者 C.-C. Jay Kuo 提出了一种用于理解卷积神经网络的数学模型。机器之心技术分析师对该研究进行了解读,本文为解读的中文版。
论文地址:https://arxiv.org/abs/1609.04112
随着复杂又有效的神经网络架构的涌现,卷积神经网络的表现已经超越了 SIFT 和SURF 等传统的数字图像处理方法。在计算机视觉领域,学术界的研究重点已经转向了 CNN,并开始相信 CNN 就是这一领域的未来。但是,在 CNN 的实践成功背后,我们对其的理解还很少。因此,当今有很多热门课题都是研究其中的原理。基本而言,存在三种主流角度:优化角度、近似角度和信号角度。前两者主要关注纯数学的表示方式,以分析神经网络的统计学性质和收敛性。而信号角度的研究则是试图解决以下问题:
- 为什么非线性激活函数在所有中间层的过滤器输出处都很关键?
- 两层级联系统相对于单层系统有什么优势?
球面修正相关性(RECOS)
众所周知,给定包含有限数量神经元的单个隐藏层,前馈神经网络(FNN)可以被视为一种能够近似任意连续函数的通用近似器。FNN 的特别之处是神经元中的非线性激活函数。神经网络有时候很宽,有时候很深,但如果没有非线性激活,它们的复杂架构就会像简单的单层线性模型一样工作,即将输入映射到另一个输出空间。具体来说,非线性激活函数能为我们提供一个从输入表征学习到新集合,这更适合解决真实世界问题。
CNN 只是一类 FNN 或 MLP(多层感知器)。为了分析 CNN 中的分线性,这篇论文提出了一种用于理解 CNN 的行为的数学模型。CNN 可被视为一种由基本运算单元构成的网络,这些单元执行的是球面修正相关性(RECOS)。因此,它被称为 RECOS 模型。在 CNN 的训练期间,首先会对其核的权重进行初始化,然后这些权重会通过梯度下降方法和反向传播算法来调整。在 RECOS 模型中,权重被称为锚向量,代表它们在聚类输入数据上的作用。这就是说我们想要计算输入向量和锚向量之间的相关性,然后衡量其相似性。
为什么用非线性激活?
CNN 不会和 MLP 一样在一个步骤中考虑所有像素的交互,而是会将输入图像分解成更小的片,这被称为特定层的节点的感受野。CNN 会逐渐增大感受野以覆盖图像的更大范围。神经元会计算输入向量和锚向量之间的相关性以衡量它们之间的相似性。一个 RECOS 单元中存在 K 个神经元。我们可将我们的系统看作是 Y=AX,其中 X 是输入向量,Y 是输出向量,A 是锚向量(核过滤器的权重矩阵)。根据这个等式,我们可以看到 CNN 是将输入映射到另一个空间。在 RECOS 模型中,我们可以立即得出结论:学习得到的核权重往往会将相似的目标映射到同一个区域。举个例子,如果 x_i 和 x_j 在欧几里德距离上很相近,那么对应的输出 y_i 和 y_j 必然在新空间中也很相近。对于被用于获取猫的特征的过滤器,任何猫向量 X_cat 都会被这种类型的所学到的锚向量 A 映射到 Y_cat,而其它向量 X_dog 或 X_car 则永远不会出现在这片区域中。这就是 CNN 能够有效识别不同事物的原因。
但我们为何必须使用非线性激活呢?考虑上图:左为原图,右为反色后的图。根据人类知识,这两张图可能是同类,也可以是不同类。我们可以得出结论说它们都是猫,也可以说它们是反色相关的。因为这只黑猫是通过将白猫的像素减去 255 的值得到的。CNN 会怎么解读这两只猫?
我们可以从上图一窥对修正(rectification)的需求。X 是输入向量,a_1、a_2 和 a_3是所学习到的不同锚向量。在 RECOS 模型中,线性运算 Y=AX 是输入向量与锚向量之间的相似度的度量。因此,对于锚向量 a_1 和 a_3,我们可以看到 x 与这两个锚向量之间的相似度的幅度是一样的,但符号相反。此时在 CNN 看来这两只猫是不同的。但以 LeNet-5 为例,该网络有两个卷积层,如果原始输入 x 经过这两层,那么最后的结果会很混乱:没有修正的系统不能区分以下两种情况:“第一层正响应后第二层负过滤器权重”与“第一层负响应后第二层正过滤器权重”。但是,通过使用非线性激活,CNN 可以轻松排除负值的影响,保证系统的鲁棒性。
此外,作者还执行了一个有趣的实验,结果引述如下:
我们使用 MNIST 训练数据集训练了 LeNet-5,并在 MNIST 测试数据集上得到了 98.94% 的正确识别率。然后我们将同一网络应用到了经过灰度反色处理的测试图像上,如图 5 所示。准确度下降到了 37.36%。接下来,我们将 C1 中所有过滤器权重都改成了它们的负值,同时保持网络其它部分不变。这个经过稍微修改的 LeNet-5 在经过灰度反转的测试数据集上得到了 98.94% 的正确识别率,而在原始测试数据集上的正确识别率为 37.36%。
可以看到,在修改了第一个卷积层中所有的过滤器权重之后得到了对称的结果。这个结果表明添加激活会导致负相关性消失,如果我们将锚图像加倍来学习灰度反转的特征,我们能在这两个测试集上都得到较好的识别表现。
级联层的优势?
一般而言,随着CNN 加深,卷积核会尝试基于所有之前核的输出来构建自己的抽象特征。所以深度层能得到全局形义以及高级特征。这其中发生的情况是,作为 RECOS 模型,CNN 尝试利用一种序列修正变换来逐层地聚类相似的输入数据,这等价于相似度测量。输出层预测所有可能决策(比如目标类别)的可能性。训练样本能为图像与其决策标签提供一个关系。而且它们能引导 CNN 构建更合适的锚向量(由此得到更好的聚类),并将聚类后的数据与决策标签连接起来。
上图展现了深度网络的有效性,该实验的细节引述如下:
我们使用一个示例来阐述这一点。首先,我们对 MNIST 训练和测试数据集进行修改,做法是随机地向 MNIST 数据集中的原始手写数字添加十种不同的背景场景。对于这三列图像,最左列是输入数字图像、中间一列是 6 张来自卷积层和 ReLU 层的谱输出图像、右边两列是 16 张谱输出图像。由于背景的多样性,寻找第一层的优良的锚矩阵是很困难的。但是,这些图像中的背景场景在空间域中并不一致,而前景数字则是一致的。
使用不同的扭曲背景,CNN 能成功获取表征的模式。注意,在第一层中有大量冗余且不需要的信息,而通过又一次应用特征提取,CNN 能学习到全局模式而非局部细节。也就是说,对于输入向量 x,RECOS 变换会生成一组 K 个非负相关值作为维度为 K 的输出向量。这种表征能逐层实现反复的聚类。最后,标签会引导 CNN 在不同的设定中寻找到同一模式。
根据上面的分析,我们可以看到卷积层是一种用于自动特征选择的有用模型。无需任何人力工作,它就能度量相似度并将输入数据聚类到不同的区域。但全连接层的作用是什么?
将 CNN 分解成两个子网络是很常见的:特征提取(FE)子网络和决策(DM)子网络。FE 子网络由多个卷积层构成,而 DM 子网络则由几个全连接层构成。大致来说,FE 子网络是通过一系列 RECOS 变换来进行聚类,目标是新的表征。DM 子网络则是将数据表征连接到决策标签,作用类似于 MLP 中的分类。
到目前为止,我们都可以说 CNN 在计算机视觉领域都大幅优于经典的机器学习算法。因为 CNN 既能自动提取特征,又能基于这些特征来学习对输入分类,而随机森林(RF)和支持向量机(SVM)等经典算法非常依赖特征工程,但这些特征工程往往又难以执行。
总结
总而言之,RECOS 模型为我们提供了一个对卷积神经网络的信号角度的分析。从这个角度,我们可以看到激活和深度架构的有效性。但是,以下领域还需要更多研究努力:网络架构设计、弱监督学习、对错误标签的稳健性、数据集偏差和过拟合问题等。