提交 45d9f529 编写于 作者: R Rachel Hu 提交者: Aston Zhang

updated

上级 1d6486e7
# 从全连接层到卷积
:label:`sec_why-conv`
我们之前讨论的MLP模型十分适合处理表格数据。表格数据中的每行对应每个样本,每列分别对应每个特征。这些特征之间的交互可能产生影响,但我们没有考虑特征交互结构上的先验假设。然而,对于高维感知数据,这种MLP单一结构模型可能会变得笨拙。
我们之前讨论的多层感知机十分适合处理表格数据。表格数据中的每行对应每个样本,每列分别对应每个特征。这些特征之间的交互可能产生影响,但我们没有考虑特征交互结构上的先验假设。有时我们缺乏足够的知识来指导模型的结构设计,此时多层感知机可能是最好的选择。然而,对于高维感知数据,这种多层感知机单一结构模型可能会变得笨拙。
例如,在之前区分猫和狗的例子中。假设我们收集了一个照片数据集,每张照片具有百万级像素,这意味着MLP的每个输入都有一百万个维度。然而即使将隐藏层维度降低到 $1000$ ,这个神经网络也将有 $10^6 \times 10^3 = 10^9$ 个参数。除非我们有大量的GPU、分布式优化训练的经验以及超乎常人的耐心,否则很难学习这个网络
例如,在之前区分猫和狗的例子中。假设我们收集了一个照片数据集,每张照片具有百万级像素,这意味着多层感知机的每个输入都有一百万个维度。然而即使将隐藏层维度降低到 $1000$ ,这个神经网络也将有 $10^6 \times 10^3 = 10^9$ 个参数。想要训练这个模型很难,需要有大量的GPU、分布式优化训练的经验和超乎常人的耐心
细心的读者可能会反对这一论点,认为要求百万像素分辨率过分吹毛求疵。
......@@ -21,7 +21,7 @@
这个游戏包括一些混乱的场景,游戏玩家的目标是找到沃尔多,而沃尔多通常潜伏在一些不太可能的位置。
所以尽管沃尔多的样子很有特点,在眼花缭乱的场景中找到他也如大海捞针。
由于沃尔多潜藏的地方并不取决于它出现的位置,我们可以使用一个“沃尔多检测器”扫描图像,该检测器将图像分成数个小方片,并为每个贴片包含沃尔多的可能性打分。而CNN将“空间不变性”的概念系统化,用较少参数来学习有用的特征。
由于沃尔多潜藏的地方并不取决于它出现的位置,我们可以使用一个“沃尔多检测器”扫描图像,该检测器将图像分成数个小方片,并为每个贴片包含沃尔多的可能性打分。而卷积神经网络将“空间不变性”的概念系统化,用较少参数来学习有用的特征。
![沃尔多游戏示例图。](../img/where-wally-walker-books.jpg)
......@@ -29,7 +29,7 @@
:label:`img_waldo`
现在,我们将如上想法系统化,来设计一下适合于计算机视觉的神经网络结构:
现在,我们将上面想法总结一下,从而帮助我们设计适合于计算机视觉的神经网络结构:
1. 平移不变性:不管出现在图像中的哪个位置,神经网络的底层应该对相同的图像区域做出类似的响应。这个原理即为“平移不变性”。
1. 局部性:神经网络的底层应该只探索输入图像中的局部区域,而不考虑远处区域的图像内容,这就是“局部性”原则。最终,这些局部特征可以融会贯通,在整个图像级别上做出预测。
......@@ -38,14 +38,14 @@
## 限制MLP
## 限制多层感知机
首先,假设以二维图像 $\mathbf{X}$ 作为输入,那么我们MLP的隐藏表示 $\mathbf{H}$ 在数学上是一个矩阵,在代码中则是一个二维张量。
首先,假设以二维图像 $\mathbf{X}$ 作为输入,那么我们多层感知机的隐藏表示 $\mathbf{H}$ 在数学上是一个矩阵,在代码中则是一个二维张量。
其中 $\mathbf{X}$ 和 $\mathbf{H}$ 具有相同的二维形状。
我们可以认为,不仅输入有空间结构,隐藏表示也应该有空间结构。
我们用 $[\mathbf{X}]_{i, j}$ 和 $[\mathbf{H}]_{i, j}$ 分别表示输入图像和隐藏表示中的位置($i$, $j$)元素。
为了使每个输入像素都有神经元处理,我们将参数从权重矩阵替换为四阶权重张量 $\mathsf{W}$,如同我们先前在MLP中所做的那样。假设 $\mathbf{U}$ 包含偏差参数,我们可以将全连接层表示为
为了使每个输入像素都有神经元处理,我们将参数从权重矩阵替换为四阶权重张量 $\mathsf{W}$,如同我们先前在多层感知机中所做的那样。假设 $\mathbf{U}$ 包含偏差参数,我们可以将全连接层表示为
$$\begin{aligned} \left[\mathbf{H}\right]_{i, j} &= [\mathbf{U}]_{i, j} + \sum_k \sum_l[\mathsf{W}]_{i, j, k, l} [\mathbf{X}]_{k, l}\\ &= [\mathbf{U}]_{i, j} +
\sum_a \sum_b [\mathsf{V}]_{i, j, a, b} [\mathbf{X}]_{i+a, j+b}.\end{aligned}$$
......@@ -65,7 +65,9 @@ $$\begin{aligned} \left[\mathbf{H}\right]_{i, j} &= [\mathbf{U}]_{i, j} + \sum_k
$$[\mathbf{H}]_{i, j} = u + \sum_a\sum_b [\mathbf{V}]_{a, b} [\mathbf{X}]_{i+a, j+b}.$$
这就是卷积!我们使用系数 $(i+a, j+b)$ 有效地训练 $(i, j)$ 附近的像素以获得隐藏表示 $[\mathbf{H}]_{i, j}$。注意,$[\mathbf{V}]_{a, b}$ 的参数比 $[\mathsf{V}]_{i, j, a, b}$ 少很多,因为前者不再依赖于图像中的位置。太棒了,通过平移不变性,我们已经取得了重大进展!
这就是卷积!
我们使用系数 $[\mathbf{V}]_{a, b}$ 对位置 $(i, j)$ 附近的像素 $(i+a, j+b)$ 进行加权。
注意,$[\mathbf{V}]_{a, b}$ 的参数比 $[\mathsf{V}]_{i, j, a, b}$ 少很多,因为前者不再依赖于图像中的位置。
### 局部性
......@@ -77,7 +79,7 @@ $$[\mathbf{H}]_{i, j} = u + \sum_{a = -\Delta}^{\Delta} \sum_{b = -\Delta}^{\Del
简而言之, :eqref:`eq_conv-layer` 是一个卷积层,而卷积神经网络是包含卷积层的一类特殊的神经网络。
在深度学习研究社区中, $\mathbf{V}$ 被称为 *卷积核* (convolution kernel) 或者 *滤波器* (filter),是可学习的权重。
当图像处理的局部区域很小时,卷积神经网络CNN与完全连接的网络MLP的训练差异可能是巨大的:以前,MLP可能需要数十亿个参数来表示,而现在CNN通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。
当图像处理的局部区域很小时,卷积神经网络与多层感知机的训练差异可能是巨大的:以前,多层感知机可能需要数十亿个参数来表示,而现在卷积神经网络通常只需要几百个参数,而且不需要改变输入或隐藏表示的维数。
以上所有的权重学习都依赖于归纳偏差,当这种偏差与实际情况相符时,我们就可以得到有效的模型,这些模型能很好地推广到不可见的数据中。
但如果这些假设与实际情况不符,比如当图像不是平移不变时,我们的模型可能难以拟合。
......@@ -118,7 +120,7 @@ $$(f * g)(i, j) = \sum_a\sum_b f(a, b) g(i-a, j-b).$$
实际上,图像不是二维张量,而是一个由高度、宽度和颜色组成的三维张量,例如形状为 $1024 \times 1024 \times 3$ 的像素。
因此,我们将 $\mathsf{X}$ 索引为 $[\mathsf{X}]_{i, j, k}$ 。由此卷积相应地调整为 $[\mathsf{V}]_{a,b,c}$ ,而不是 $[\mathbf{V}]_{a,b}$ 。
此外,由于输入图像是三维的,我们的隐藏表示$\mathsf{H}$也可化为一个三维张量。
此外,由于输入图像是三维的,我们的隐藏表示 $\mathsf{H}$ 也是一个三维张量。
因此,我们可以把隐藏表示想象为一系列具有二维张量的 *通道* (channel)。
这些通道有时也被称为 *特征映射* (feature maps),因为每一层都向后续层提供一组空间化的学习特征。
在靠近输入的底层,一些通道专门识别边,而其他通道专门识别纹理。
......@@ -141,7 +143,7 @@ $$[\mathsf{H}]_{i,j,d} = \sum_{a = -\Delta}^{\Delta} \sum_{b = -\Delta}^{\Delta}
- 图像的平移不变性使我们可以以相同的方式处理局部图像。
- 局部性意味着计算相应的隐藏表示只需一小部分局部图像像素。
- 在图像处理中,卷积层通常比全连接层需要更少的参数。
- 卷积神经网络CNN是一类特殊的神经网络,它可以包含多个卷积层。
- 卷积神经网络(CNN)是一类特殊的神经网络,它可以包含多个卷积层。
- 多个输入和输出通道使模型在每个空间位置可以获取图像的多方面特征。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册