时至今日,我们目前讨论的模型在处理表格数据时仍然是合适的选择。通过表格,我们的意思是数据由对应于示例的行和对应于特征的列组成。对于表格数据,我们可能会预期我们寻求的模式可能涉及特征之间的相互作用,但我们不假设任何关于特征如何相互作用的先验结构。
有时,我们确实缺乏知识来指导更巧妙的架构的构建。在这些情况下,MLP 可能是我们能做的最好的。然而,对于高维感知数据,这种无结构网络可能会变得笨拙。
例如,让我们回到我们正在运行的区分猫和狗的例子。假设我们在数据收集方面做得很彻底,收集了一个百万像素照片的注释数据集。这意味着网络的每个输入都有一百万个维度。即使大幅减少到一千个隐藏维度,也需要一个完全连接的层,其特征是106×103=109 参数。除非我们有大量的 GPU、分布式优化的人才和非凡的耐心,否则学习这个网络的参数可能是不可行的。
细心的读者可能会反对这一论点,因为百万像素分辨率可能不是必需的。然而,虽然我们可能能够摆脱 10 万个像素,但我们的隐藏层大小 1000 严重低估了学习良好图像表示所需的隐藏单元数量,因此实际系统仍需要数十亿个参数。此外,通过拟合如此多的参数来学习分类器可能需要收集庞大的数据集。然而今天,人类和计算机都能够很好地区分猫和狗,这似乎与这些直觉相矛盾。这是因为图像展现出丰富的结构,人类和机器学习模型都可以利用这些结构。
7.1.1. 不变性
想象一下,我们想要检测图像中的物体。这似乎是合理的,无论我们使用什么方法来识别物体,都不应该过分关注物体在图像中的精确位置。理想情况下,我们的系统应该利用这些知识。猪通常不会飞,飞机通常不会游泳。尽管如此,我们仍然应该认出一只猪出现在图像的顶部。我们可以从儿童游戏“威利在哪里”中得到一些启发(如图7.1.1所示)。游戏由许多充满活动的混乱场景组成。沃尔多出现在每个地方的某个地方,通常潜伏在一些不太可能的位置。读者的目标是找到他。尽管他的着装很有特色,但由于大量的干扰因素,这可能出奇地困难。然而,Waldo 长什么样子并不取决于Waldo 所在的位置。我们可以使用 Waldo 检测器扫描图像,该检测器可以为每个补丁分配一个分数,指示该补丁包含 Waldo 的可能性。事实上,许多目标检测和分割算法都是基于这种方法(Long et al. , 2015)。CNN 将这种空间不变性的思想系统化,利用它以更少的参数学习有用的表示。
现在,我们可以通过列举一些必要条件来指导我们设计适用于计算机视觉的神经网络架构,从而使这些直觉更加具体:
-
在最早的层中,我们的网络应该对相同的补丁做出类似的响应,无论它出现在图像中的什么位置。这个原理称为平移不变性(或平移等变性)。
-
网络的最早层应该关注局部区域,而不考虑远处区域的图像内容。这就是局部性原则。最终,可以聚合这些局部表示以在整个图像级别进行预测。
-
随着我们的进行,更深的层应该能够捕捉图像的更远距离的特征,类似于自然界中更高层次的视觉。
让我们看看这如何转化为数学。
7.1.2. 约束 MLP
首先,我们可以考虑一个带有二维图像的 MLP X作为输入及其直接隐藏的表示 H类似地表示为矩阵(它们在代码中是二维张量),其中X和 H具有相同的形状。让它沉入其中。我们现在不仅将输入设想为具有空间结构,而且将隐藏表示设想为具有空间结构。
让[X]i,j和[H]i,j表示位置处的像素(i,j)分别在输入图像和隐藏表示中。因此,为了让每个隐藏单元接收来自每个输入像素的输入,我们将从使用权重矩阵(就像我们之前在 MLP 中所做的那样)切换到将我们的参数表示为四阶权重张量W. 假设U包含偏差,我们可以将全连接层正式表示为
从开关W到V现在完全是装饰性的,因为两个四阶张量中的系数之间存在一对一的对应关系。我们只是重新索引下标(k,l)这样k=i+a和l=j+b. 换句话说,我们设 [V]i,j,a,b=[W]i,j,i+a,j+b. 指数a和b遍历正偏移和负偏移,覆盖整个图像。对于任何给定位置(i, j) 在隐藏表示中[H]i,j,我们通过对像素求和来计算它的值x, 以 (i,j)并加权