谈谈离散卷积和卷积神经网络

早在学习数学分析时,我就已经接触过卷积的概念。然而,彼时年少,水平有限,没有完整地理解卷积的概念和精髓。这个遗憾一直持续至今。接触到卷积神经网络(Convolution Neural Network, CNN)之后,旧事重提般地,想要了解清楚卷积的冲动就愈发强烈,终至此文。

这是一篇介绍性质的文章。文中的公式、动画效果限于网页的表现力,无法达至完美。本文有对应的 PDF 格式的幻灯片可供下载(离散卷积和卷积神经网络)。你可能需要使用 Adobe Acrobat/Reader 作为 PDF 阅读器,以获得幻灯片的所有效果。

初识卷积

一问卷积

「卷积」这个词给人的第一印象就是「萌萌哒」,因此,恐怕很多人听见卷积的第一反应会是:「卷积可以吃吗为什么要叫这个名字」。

粗暴地回答的话,理由有三:

  • 卷在这里对应英文的 convolve 这个单词,在卷积这个概念中,它的本意是「翻转」;
  • 积在这里对应乘积,因为卷积是通过两个函数/序列的乘积实现的;
  • 它真的是在「卷」——把多个乘积卷在一起变成一个值。

形式定义

在具体介绍卷积是什么、为什么是这样、有什么用之前,让我们预先「先入为主」地看一看一维卷积的定义是什么样的。

  • 离散形式:(xy)[n]=+m=x[m]y[nm](x∗y)[n]=∑m=−∞+∞x[m]⋅y[n−m]
  • 连续形式:(fg)(t)=+f(τ)g(tτ)dτ(f∗g)(t)=∫−∞+∞f(τ)⋅g(t−τ)dτ

当然,此篇主要介绍离散卷积,因此连续卷积从这一刻起就被暂时打入冷宫了。

如果你仔细观察离散卷积的定义,你就会发现,它也可以写成如下等价形式。

(xy)[n]=i+k=nx[i]y[k].(x∗y)[n]=∑i+k=nx[i]⋅y[k].

可以看到,卷积将等式右边的两个变量 ii, jj 变成了等式左边的一个变量 nn——俗称:降维打击。

一维离散卷积

在详细介绍一维离散卷积之前,我们需要先了解什么是「线性时不变系统」。此后,在脉冲激励和冲激响应的叠加中,我们就能得到卷积。

线性时不变系统

线性时不变系统

线性时不变系统(Linear Time-invariant System)是一种特殊的信号系统。它的特性分成「线性」和「时不变」两个维度。

所谓线性,说的是系统的输出对输入满足齐次性和叠加性。这也就是说,若输入 x1(τ)x1(τ)  x2(τ)x2(τ) 分别得到 y1(τ)y1(τ)  y2(τ)y2(τ),那么对于任意的常数 c1c1, c2c2 满足 c1x1(τ)+c2x2(τ)c1x1(τ)+c2x2(τ) 的输入在系统的作用下产生输出 c1y1(τ)+c2y2(τ)c1y1(τ)+c2y2(τ)

输入 输出
x1(τ)x1(τ) y1(τ)y1(τ)
x2(τ)x2(τ) y2(τ)y2(τ)
c1x1(τ)+c2x2(τ)c1x1(τ)+c2x2(τ) c1y1(τ)+c2y2(τ)c1y1(τ)+c2y2(τ)

所谓时不变,说的是系统对固定输入的输出响应不随时间发生变化。这也就是说,若输入 x(τ)x(τ) 得到输出 y(τ)y(τ),则若输入 x(t0+τ)x(t0+τ) 得到输出 y(t0+τ)y(t0+τ)

输入 输出
x(τ)x(τ) y(τ)y(τ)
x(t0+τ)x(t0+τ) y(t0+τ)y(t0+τ)

冲激和响应

信号系统的输入,称之为「激励」。对信号系统来说,它通常会接收一连串的激励。这一连串的激励,通常在瞬时发生,然后消退。因此信号系统的输入又称之为「脉冲激励」,简称「冲激」。若以 yy 记信号系统的冲激,则它应该是一个序列 y[n]y[n]。具体的值 y[i]y[i]  yiyi 表示第 ii 时刻信号系统接收的脉冲激励。

y[n]={,y1=0,y0=i,y1=j,y2=k,y3=0,}.y[n]={…,y−1=0,y0=i,y1=j,y2=k,y3=0,…}.

信号系统的输出,称之为「响应」。对于单位强度冲激的响应,即是「冲激响应」。信号系统对单独的冲激,做出的响应输出,可能在冲激发生之后持续一段时间。若以 xx 记信号系统的冲激响应,则它也应该是一个序列 x[n]x[n]。具体的值 x[i]x[i]  xixi 表示系统接收到单位强度冲激之后第 ii 时刻做出的响应输出。

若你不太理解为何响应会在冲激发生之后持续一段时间,那么你可以把自己比作一个信号系统。当你遇到什么开心/不开心的事情之后,你高兴/伤心的情绪不会只在那一瞬间出现,而是会持续一段时间。

x[n]={,x1=0,x0=a,x1=b,x2=c,x3=0,}.x[n]={…,x−1=0,x0=a,x1=b,x2=c,x3=0,…}.

连续冲激的响应

现在我们知道几个事实:

  • 系统接收到一份输入后,其后的一段时间内会陆续给出输出响应;
  • 系统会连续收到若干输入;
  • 系统是线性时不变的。

特别地,输入冲激 y^y^  x[n]x[n] 的作用下,第 ii 时刻的输出是 y^x[i]y^⋅x[i]。因此,整个线性时不变系统在第 ii 时刻的输出,应该是

y[0]x[i]+y[1]x[i1]+.y[0]⋅x[i]+y[1]⋅x[i−1]+⋯.

当然,对于两端延伸的无穷序列,你应该把它写作
+y[1]x[i+1]+y[0]x[i]+y[1]x[i1]+.⋯+y[−1]⋅x[i+1]+y[0]⋅x[i]+y[1]⋅x[i−1]+⋯.

以上一小节的数据为例,将数据制成表如下:

time 0 1 2 3 4
y0=iy0=i aiai bibi cici 00 00
y1=jy1=j 00 ajaj bjbj cjcj 00
y2=ky2=k 00 00 akak bkbk ckck

接下来,你只需要纵向观察表格,将每一纵列的值相加,就能得到相应时刻的系统输出响应了。

离散卷积

从上面的分析中,可以看出,对于任意时刻 nn,系统的输出是

z[n]=def(xy)[n]=m=+x[nm]y[m]=m=+x[m]y[nm].z[n]=def(x∗y)[n]=∑m=−∞+∞x[n−m]⋅y[m]=∑m=−∞+∞x[m]⋅y[n−m].

这正是一维离散卷积的定义。以 +m=x[m]y[nm]∑m=−∞+∞x[m]⋅y[n−m] 为例,不难发现,卷积其实是一种推广的加权平均:以 xx 为权,以 nn为中心,把 yy 距离中心 m−m 位置上的值乘上 xx  mm 位置的值,最后加到一起。

定投的例子

现在假设有一个一年期定投项目,它的利率始终保持不变。因此,整个定投项目可以视作是一个线性时不变系统。

  • 最终收益对投入的资金是线性累加的;
  • 利率不变,意味着任何时候投入资金的效果是一样的。

因此,你可以定义响应序列

x[n]={,x1=0,x0=1.050,x1=1.051,,xi=1.05i,}.x[n]={…,x−1=0,x0=1.050,x1=1.051,…,xi=1.05i,…}.

而后,假设你每年存入 100 元,于是有冲激序列

y[n]={,y1=0,y0=100,y1=100,,yi=100,}.y[n]={…,y−1=0,y0=100,y1=100,…,yi=100,…}.

于是,任意时刻的账户余额 z[n]=def(xy)[n]z[n]=def(x∗y)[n] 是卷积。

time 00 11 22 33 44
y0=100y0=100 100100 100×1.051100×1.051 100×1.052100×1.052 100×1.053100×1.053 100×1.054100×1.054
y1=100y1=100 00 100100 100×1.051100×1.051 100×1.052100×1.052 100×1.053100×1.053
y2=100y2=100 00 00 100100 100×1.051100×1.051 100×1.052100×1.052
y3=100y3=100 00 00 00 100100 100×1.051100×1.051
y4=100y4=100 00 00 00 00 100100

接下来,我们回过头观察 +m=x[m]y[nm]∑m=−∞+∞x[m]⋅y[n−m] 这个式子。

若以 mm 为「自变量」,则 y[nm]y[n−m] 相当于把 y[m]y[m] 的图像左右翻转(这即是翻转的来源),然后再向右移动 nn 个单位。而当 nn增大时,相当于 xx 不动而 yy 沿着轴线向右滑动。当 xx  yy 重叠时,计算重叠部分的乘积,然后加和得到最终结果。这个加和的过程,放在连续函数的情景下,就是积分了。将这个过程,制作成动态图如下。

定投收益示意图

怎样卷?

通过观察 +m=x[m]y[nm]∑m=−∞+∞x[m]⋅y[n−m],我们已经知道了卷积是怎样翻转的,也知道卷积的积分从何而来。现在我们讨论关于卷积的终极问题:究竟要怎样才能「卷起来」?

怎样卷起来

我们来看这张图。它的横轴和纵轴被替换成了 mm  nmn−m,恰好对应 +m=x[m]y[nm]∑m=−∞+∞x[m]⋅y[n−m] 中的 x[m]x[m]  y[nm]y[n−m]。途中有两条斜线,斜线经过的整数交点上画着小黑点。这些小黑点代表相应位置的 x[m]y[nm]x[m]⋅y[n−m];而斜线则代表将这条斜线上所有小黑点的值相加。

不难发现,m(nm)m(n−m)-二维平面上斜率为 1−1 的斜线族,其中每条这样的斜线(包括没有画出来的),都表示了一个卷积。特别地,斜线上每一个整数点的横纵坐标相加(即是 m+(nm)m+(n−m))都是 nn。因此,斜线对应的卷积是 (xy)[n](x∗y)[n]。这样,我们就建立了斜线与卷积值之间的对应关系。

现在,把 m(nm)m(n−m)-二维平面想象成一块无限薄的地毯。接下来,我们沿着斜率为 1−1 的直线方向,把地毯卷起来。这样,我们就将地毯卷成了一条直线。而这条直线上的每个点,都对应了原平面上的一条直线。也就是说,在「卷地毯」的过程中,原平面的直线纷纷坍缩成了一系列的点。而这些轴线与其上的点,正可作为是卷积 (xy)[n](x∗y)[n]  nn 所在的数轴。

这就是为什么我们说,卷积它真的可以「卷」了。

二问卷积

至此,一维离散卷积相关的内容,我们就介绍完了。现在我们回过头来看看,在介绍一维离散卷积的过程中,卷积表现出了哪些特点。

我们是通过线性时不变的信号系统引出卷积的概念的。若仍以信号系统的说辞为例,则不难发现:

  • 一个脉冲激励可以影响到信号系统在若干时刻的输出;
  • 从另一个角度,这也就是说,信号系统任意时刻的输出,取决于相关的多个冲激输入。

也就是说,和一般的函数不同,信号系统的输入和输出不是「一对一」的关系,而是「多对多」的关系。我们在后续介绍卷积神经网络的时候,会看到这一特点的作用。

此外,仍以信号系统的说辞为例,我们也不难发现,系统的最终输出,一方面取决于输入的激励信号长什么样子,另一方面取决于冲激响应的模式。这两方面相互作用(就是卷积),最终决定了信号系统的输出。

在后续对一维离散卷积的观察中,我们发现,连续地求解多个卷积值的时候(即,求解 n=0,1,2,n=0,1,2,… 的卷积值时),我们实际上做的事情可以归纳成:

  • 翻转输入信号;
  • 输入信号沿轴线向前滑动;
  • 输入信号与冲激响应叠加的部分分别求积,然后相加。

而实际上我们发现,在卷积的定义中,xx  yy 是地位等同的。这就是说,我们也完全可以选择翻转而后滑动冲激响应的模式,再去求积、叠加。此时,我们通常会把冲激响应称为「卷积核」,而把整个过程形象地称之为:滑动卷积核。

二维离散卷积

定义

恭喜你,现在我们进入「高维宇宙」。

首先,让我们回顾一下一维离散卷积的定义。

(xy)[n]=defm=+x[m]y[nm].(x∗y)[n]=def∑m=−∞+∞x[m]⋅y[n−m].

二维卷积的定义,在形式上和一维卷积完全一致——只需要将一维卷积中的变量 mm, nn 从标量变成向量即可。当然,你也可以将向量的两个分量展开,记成标量形式。

(xy)[n⃗ ]=def(xy)[n1,n2]=defm⃗ =(,)(+,+)x[m⃗ ]y[n⃗ m⃗ ]m1=+m2=+x[m1,m2]y[n1m1,n2m2].(x∗y)[n→]=def∑m→=(−∞,−∞)(+∞,+∞)x[m→]⋅y[n→−m→](x∗y)[n1,n2]=def∑m1=−∞+∞∑m2=−∞+∞x[m1,m2]⋅y[n1−m1,n2−m2].

类似地,你可以定义更高维的卷积。

若仔细观察公式,不难发现,我们在二维卷积中遇到的问题,和在一维卷积中遇到的问题完全一致。二维卷积具有和一维卷积几乎完全相同的性质、特点、作用。和一维卷积一样,二维卷积也可以看做是加权平均的推广:以 xx 为权,以 (n1,n2)(n1,n2) 位中心,将 yy 距离中心 (m1,m2)(−m1,−m2) 位置的值乘上 xx 距离中心 (m1,m2)(m1,m2) 的值,最后加到一起。

图像的滤镜

在实际应用中,卷积核 xx 的有效部分总是有限的。例如,下图展示了一个 3×33×3 的卷积核,在图像上的滑动。

二维卷积示意图

值得一提的是,对于图像来说,这个过程实际就是 PhotoShop 等图像处理软件中的「滤镜」效果。比如,假设我们有一个 3×33×3的卷积核

1/91/91/91/91/91/91/91/91/9,[1/91/91/91/91/91/91/91/91/9],

从直觉上分析,它将中心点附近的共 9 个点的像素值,平均到输出图像的中心像素点上;这实际上就是模糊效果对应的滤镜(box-blur)。又比如,假设我们有这样的卷积核

010151010,[0−10−15−10−10],

从直觉上分析,它加强了中心像素点的作用,同时减小了位于其上下左右的四个像素点对它的干扰;这实际上就是锐化效果对应的滤镜(sharpen)。又比如,假设我们有这样的卷积核

111181111,[−1−1−1−18−1−1−1−1],

从直觉上分析,只有当中心像素点原本的像素值和周围 8 个像素点的值差距很大时,这个卷积核的输出,才会明显地不等于 0;因此,这实际上就是边缘检测对应的滤镜(edge detect)。

我们将上述三个矩阵以 Python 实现出来,就能看到它们的效果了。(参见:PIL 简明教程 - 像素操作与图像滤镜)其效果如下图所示。

Python 实现的图像滤镜

三问卷积

又到了思考问题的贤者时间。

在介绍一维卷积的过程中,我们已经讨论了卷积本身具有的特点。但是,也留下了一个问题:卷积在抽象上,到底有什么意义呢?

站在人类的角度,我们先入为主地将上面 3 个示例的卷积核当做了「滤镜」。然而,事情真的是这样吗?如果我们忘记「滤镜」这一先验知识,那么我们可能会把这件事情,简单地以更抽象的方式描述为「卷积核处理图形」。没错,这仅仅是一个「处理」过程而已。现在我们回想一下,环境中的真实景象,也是经过我们的大脑处理之后,在脑海里形成实际的画面的。若然你知道,同一个真实景象,在不同生物的眼里是不一样的。那么你就不难发现,不同的生物,因其进化路径不同,大脑对环境真实景象的处理也不同,因而脑海中看到的景象也就不同。这与我们用不同的滤镜处理图像,得到不同的滤镜结果,何其相似?

刚才我们说到不同生物眼里的世界是不一样的。那么,更深入地理解一下这份不同,我们会否领会到更多的东西呢?

比如,我们可以思考:为什么自然选择会让不同的生物看到不同的景象?答案其实很简单:因为适者生存。蛇类的眼睛,按照人类的意识,几乎不能视物;然而因为经常需要夜间活动,所以蛇能够以红外的方式「看到」这个世界。青蛙的眼睛,难以察觉到静止的事物;然而因为它只对「会动的虫子」感兴趣,所以青蛙具有奇佳的动态视觉。站在更广的时间维度上,我们可以这样回答这个问题:对于具体的某种生物来说,因其生存需要,它只对某种形式的视觉效果感兴趣,因而其视觉处理系统进化成了当前的模样。简而言之,不同的生物,看待世界的方式,有不同的侧重点,因而将同一个真实景象处理成了不同的模样。

这里我们对生物的视觉效果进行了展开分析。这不是我要「跨界」当「神棍」,而是想以一种直觉的方式,以普遍的现象为对比,试着能够更好地理解卷积的意义。

至此,我们可以比较容易地制作出一张对应的表格。

卷积 生物视觉 机器学习领域的意义
滑动卷积核 视觉系统处理外界光信号 读入并处理结构化的特征
卷积核处理的结果 脑海中形成的视觉成像 卷积处理的结果
不同的卷积核 观察世界的不同方式、不同侧重点 不同角度的高维特征信号

这也就是说,特定的卷积核,能够从若干相关特征信号(通常是相邻位置的特征信号)中以特定的方式抽取新的高维特征。

卷积神经网络

有了这些关于卷积的知识基础,现在我们可以讨论卷积神经网络了。我们假设你已经对神经网络有所了解,因此就不去从感知机开始,逐步地介绍了。

图片识别任务

这个例子,来自于 YJango的卷积神经网络——介绍

在介绍二维离散卷积的时候,我们以图片为例。这是因为,图片是天然的二维像素矩阵组成的数据形式(RBG 三通道即是 3 个矩阵)。因此,专业里我们也以图片识别任务为例,展开对卷积神经网络的介绍。

识别横折

如上图。每一个 4×44×4 的方块,都表示一张图片。在我们的表示中,黄色的圆圈表示空无一物的底色;黑色的圆圈,表示有内容的笔画。现在,我们要识别上图顶部的「横折」这一笔画。显而易见,上图下半部分的 6 张图片,内里都包含了横折。

前馈神经网络

对于这样的图片识别任务,使用深度前馈神经网络来解决,当然是可以的。

深度神经网络(DNN)图例

如上图。为了解决这样的问题,我们首先需要将原始图片制成一个能用向量表示出来的数据形式。最简单的办法,就是将二维的图像,逐行地展开。如此,我们就从 object 得到了输入层 input。接下来,我们就可以把输入层链接到隐藏层当中,经过逐层地全连接,得到最终输出 output。通常来说,这个最终输出,是神经网络给出的概率。这个概率描述,神经网络认为当前图片中,包含「横折」的概率。

经过大量的训练,这样的神经网络可以很好地完成识别任务。然而,这样的网络设计,也可能存在一些问题。

图片识别样本

如上图。假设左侧的 4 张图片,是我们标注好的训练样本。经过训练之后,我们的神经网络应当已经具有一定的能力,尝试识别图片中是否存在「横折」这一笔画。然而,由于训练神经网络时的输入样本十分有限,我们的神经网络可能并不认得右侧的样本。特别地,在我们的神经网络示意图中,左上角的横折和位于中间的横折是完全不同的两个向量。因此,我们得到的神经网络模型,很可能无法给出对右侧未知样本的准确预测。

那么,怎么办呢?

最最简单容易想到的办法,就是增加训练时的训练样本。若然我们能够让样本覆盖所有情况,那么训练得到的神经网络自然就可以识别所有的情况,并给出结论了。不过,最简单容易想到的解法,往往暗含各种各样的问题。首先,我们的图片识别任务中,图片都是 4×44×4 的小型图片。对这类图片,穷举所有可能,其总数也只有 216216 张。对于这种类型的问题,穷举所有情况,大致是没有问题的。然而,实际生产中,我们遇到的问题,其复杂度要远远高于现在我们所言的「玩具问题」。在实际问题中,我们不可能让样本覆盖所有情形。另一方面,若是简单粗暴地扩增样本容量,就失去了模型「预测」的意义了。换而言之,这就不是我们追求的高可泛化的模型了。

表意的平移不变性——对问题的深入思考

扩大训练集的解法,当然也是一个办法。在实际生产中,有些时候也确实需要扩大训练集,以解决一些欠拟合的问题。然而,正如任何定理都有其适用范围,我们也需要斟酌扩大训练集在当前任务中是否合适。显然,有上面的分析,在当前任务中,这不是个好办法。

那么,问题出在哪里呢?或者说,我们应当在哪个方向前进,以便解决这个问题呢?在上面的分析中,我们有提到一句话:「在我们的神经网络示意图中,左上角的横折和位于中间的横折是完全不同的两个向量」。我想,若你足够敏感,应该能意识到什么。

不好。这很不好。在表意上,位于图片左上角的横折之于位于图片中间的横折没有什么差别。也就是说,在图片上任意平移横折的位置,其表意不发生变化。我们称之为表意的平移不变性。然而,在我们的神经网络中,这两个横折在输入层的表现居然没有什么共同点。显而易见,这是不合理的。因此,在遇到的这个问题中,我们首先应该考虑的,不是扩增训练集,而是应当考虑我们神经网络是否足够好地适应当前的问题。

那么,我们的神经网络中,问题出在哪里呢?

首先,我们的神经网络是针对每个像素的具体情况进行训练的。其次,图片上的区域各自为政,没有关联。也就是说,我们的神经网络,很难捕捉到相邻区域中几个像素点(特征值)的结构信息。另一方面,我们的神经网络,也没有以一种一致地视角,去看待每一个局部的结构。这样一来,我们的神经网络就可能会把位于左上角的横折与位于中间的横折,当成两个完全没有关联的图形。这显然是不合适的。

引入卷积

至此,就轮到卷积出场拯救世界了。

我们回顾一下简单的前馈神经网络在当前任务中遇到的问题:无法一致地捕捉局部的结构信息。我们再来回想一下卷积的特点:以一个固定的卷积核,收集相邻特征信号的信息,加权平均得到卷积值。啊!卷积的这些特点,不就正好弥补了当前前馈神经网络的不足吗?

于是,我们可以设计出这样的网络结构。

卷积神经网络(CNN)图例

如上图。首先,我们用一个固定的 2×22×2 的卷积核作为窗口,逐个像素地扫描原图片。这样一来,我们可以得到 3×33×3 的卷积结果,称为 convolved feature。而后,和我们在前馈神经网络中做的一样,我们将 convolved feature 展开,作为输入层,链接其背后的隐藏层,并最终得到输出。

在这个过程中,神经网络的参数,除了隐藏层中的各个神经元上的参数,还有卷积核的具体内容。也就是说,卷积核的大小是固定的,但是它长什么样子,是需要具体训练的。

这样引入了卷积的神经网络,就是卷积神经网络(Convolution Neural Network, CNN)了。当然,在实际使用中,还常常引入名为池化(Pooling)的技术,这里按下不表。

不变性的讨论

有了卷积,我们的神经网络就能一致地去捕捉输入信号局部的结构信息。特别地,由于卷积核在不同位置上是共享的,所以笔画的平移在神经网络看来,就不影响表意了。因此我们说,卷积神经网络满足了平移不变性。

那么,是否还有其它的不变性呢?当然是有的。

比如,我们现在的横折由 33 个像素在 2×22×2 的局部中组成。那么,若是将它放大,在 3×33×3 的局部中,用 55 个像素去组成横折,是否也可以呢?答案是显而易见的:大猫也是猫,大狗也是狗。这种现象,我们称之为缩放不变性。那么,当前的卷积神经网络,是否能解决这样的问题呢?我们说,不能。因为我们当前使用的卷积核是 2×22×2 的,它无法去捕捉 3×33×3 的局部结构中的完整信息。因此,当前的卷积神经网络,没有满足缩放不变性。若要满足缩放不变性,我们可以考虑用不同大小的卷积核,分别处理原图像;或者,可以考虑在卷积层的基础上,再用卷积处理一次。

又比如,假设我们不识别笔画,我们识别图片中的铅笔。在图片中,除了说铅笔可大可小,位置上可以在图片上游走,铅笔还可能以不同角度出现——横着放的、竖着放的、斜着放的。但不论铅笔如何摆放,它都是铅笔。这种现象,我们称之为旋转不变性。不过,很遗憾,由于卷积的特性所限,我们无法简单地用卷积,让神经网络满足旋转不变性。

卷积神经网络直觉上的优势

上面我们讨论了卷积的特点。因此,我们不难总结卷积神经网络的一些优势。

  • 适用于相关元素(特别是相邻元素)中存在结构特征的情况;
  • 适用于上述结构可能出现在不同位置的情况。

现在,我们考虑一下分类问题。对于分类问题来说

  • 在分割线(可能是超平面、超曲面)附近,样本往往存在特定的结构特征;
  • 输入的样本,可能位于分割线的不同位置,因此上述结构也可能出现在分割线的不同位置。

分类问题的这样的特点,恰恰符合了卷积神经网络的优势。因此,人们常常偏向于认为:「卷积神经网络可以在分类问题上表现得好」。

原文地址: https://liam0205.me/2017/07/27/convolutions-and-convolution-neural-network/
展开阅读全文

没有更多推荐了,返回首页