【深度学习之美】卷地风来忽吹散,积得飘零美如画(入门系列之十)

简介: “此情可待成追忆”。可“记忆”到底是什么?如果我告诉你,“记忆”就是一种“卷积”,你可别不信。卷积并不神秘,它就在你我的生活中,它就在深度学习里!这可能是史上最通俗易懂的关于“卷积”介绍文章,不信你就进来瞅瞅呗。

系列文章:

一入侯门“深”似海,深度学习深几许(深度学习入门系列之一)
人工“碳”索意犹尽,智能“硅”来未可知(深度学习入门系列之二)
神经网络不胜语,M-P模型似可寻(深度学习入门系列之三)
“机器学习”三重门,“中庸之道”趋若人(深度学习入门系列之四)
Hello World感知机,懂你我心才安息 (深度学习入门系列之五)
损失函数减肥用,神经网络调权重(深度学习入门系列之六)
山重水复疑无路,最快下降问梯度(深度学习入门系列之七)
BP算法双向传,链式求导最缠绵(深度学习入门系列之八)
全面连接困何处,卷积网络见解深(深度学习入门系列之九)


在前面的章节中,我们简要地介绍了卷积神经网络的来龙去脉。接下来我们逐一来解释它之所以成功的几个核心要素。卷积神经网络的名字就来自于其中的卷积操作。因此说到卷积神经网络,它最核心概念可能莫过于“什么是卷积”?

10.1 卷积的数学定义

脱离卷积神经网络这个应用背景,“卷积”其实是一个标准的数学概念。早在3.4节中,我们已经提及到“卷积”的概念:所谓卷积,不过是一个函数和另一个函数在某个维度上的加权“叠加”作用而已[1]。为了更好地理解卷积操作的数学意义,下面我们列举一个具体的案例来加以说明[2]。
假设我们的任务是实时监控一艘宇宙飞船。这艘宇宙飞船带有激光发射器。激光发射器在任意时刻t 都实时输出信号 f(t) ,这里 f(t) 表示飞船在任意时刻 t 所处的位置。通常来说,激光信号中都会夹杂有一定的噪音信号 g(t) 。为了能更加准确地测量飞船的位置,就需要减少噪音的影响,因此我们就需要对获取的距离信号x(t)进行平滑处理。
很显然,对于相邻时间的输出结果,距离当前时间较近的输出,它们对结果的输出影响也较大(分配较大的权值)。反之,距离当前时间越远,它们对当前结果的影响也就越小(分配较小的权值)。因此,加权平均后的飞船位置s(t) 可以用如公式(10.1)表示:


663660a98a27e39dff94d0b6963502e74e625e80

这样的操作就被称为连续域上的卷积操作。这种操作通常也简单记为公式(10.2):

bae252078a77e310c87dbd4c5d0ab0776c18907c

在公式(10.2)中,通常把函数f称为输入函数, g 称为滤波器或卷积核(kernel),这两个函数的叠加结果称为特征图或特征图谱(feature map)
在理论上,输入函数可以是连续的,因此通过积分可以得到一个连续的卷积。但实际上,目前基本上所有计算机都是数字计算机,这样的计算机是不能处理连续(模拟)信号的。因此需要把连续函数离散化。
一般情况下,我们并不需要记录任意时刻的数据,而是以一定的时间间隔(也即频率)采样即可。这么说是有理论根据的,根据香农采样定理,当采样频率应不小于模拟信号频谱中最高频率的2倍时,可以不失真地恢复模拟信号。对于离散信号,卷积操作可用如公式(10.3)表示:


ae23ff4975858757ff917956d2e34fdbbc2733d5

当然,对于离散卷积的定义推广到更高维度的空间上。例如二维的公式可表示为公式(10.4)所示:


58c1181e785968b206981358b39e7ef32822c4e3

10.2生活中的卷积

卷积的概念好像比较抽象。好在理论来源于现实的归纳和抽象。为了便于理解这个概念,我们可以借助现实生活中案例,来反向演绎说明这个概念。
在前面章节的描述中,我们已经提到,函数(function)就是功能(function),功能就是函数。函数的加权叠加作用,更通俗点讲,就是功能的叠加作用。如果是函数是抽象的,那么功能则是具体的。我们很容易从生活中找到“卷积”影子,从而能更加形象地解释这个概念。在这方面,李德毅院士是高手。
在2015中国计算机大会特邀报告上,笔者有幸聆听了中国人工智能学会理事长李德毅院士的主题报告。在报告中,李院士便提到了卷积的理解问题,非常有意思[3]。
他讲到,什么叫卷积呢?举例来说,在一根铁丝某处不停地弯曲,假设发热函数是f(t) ,散热函数是 g(t) ,此时此刻的温度就是 f(t) 跟g(t)的卷积。在一个特定环境下,发声体的声源函数是f(t) ,该环境下对声源的反射效应函数是 g(t) ,那么这个环境下的接受到声音就是 f(t) 和 g(t) 的卷积。
类似地,记忆其实也是一种卷积的结果。假设认知函数是 f(t) ,它代表对已有事物的理解和消化,随时间流逝而产生的遗忘函数是g(t),那么人脑中记忆函数 h(t) 就是函数是 f(t) 跟g(t) 的卷积,可用如下公式表示。


41fbb1d8ff8a0cd983dc81c85f04796260bf233e

最后,李院士讲到,我们计算机工作者要了解卷积,就要了解卷积神经网络。这个观点和今天讲到的主题很应景,下面我们就言归正“卷”,接着聊卷积神经网络。

10.3在图像处理中的卷积

图像识别是卷积神经网络发威的“圣地”。所以下面我们就以图像处理为例,来说明卷积的作用。
对于如图10-1所示的左侧的图像,正常人很容易判定出,图像中分别是一个数字“8”和一只猫。但是,对于计算机而言,它们看到数字矩阵(每个元素都是0到255之间像素值),至于它们据此能不能判定出是数字“8”和猫,这要依赖于计算机算法,这也是人工智能的研究方向。


89a7feae31e8c15bd630c945c6d50e760f166abe


图10-1 计算机“眼中”的图像

在如图10-1所示的矩阵中,每个元素表示的都是像素的亮度强度。在这里,0表示黑色,255表示白色,数字越小,越接近黑色。在灰度图像中,每个像素值仅表示一种颜色的强度。也就是说,它只有一个通道。而在彩像中,可以有3个通道,即RGB(红,绿,蓝)。在这种情况下,把三个不同通道的像素矩阵堆叠在一起,即可描述彩色图像。
在图像处理中应用卷积操作,主要目的就是从图像中提取特征。卷积可以很方便地通过从输入的一小块数据矩阵(也就是一小块图像)中学到图像的特征,并能保留像素间的空间关系。下面举例说明在二维图像使用卷积过程。
在图10-2中,为了便于读者理解,图像数据矩阵的像素值分别用诸如a-b-c-d这样的字母代替,卷积核是一个2×2的小矩阵。需要注意的是,在其他场合,这个小矩阵,也被称为“滤波器(filter)”或“特征检测器(feature detector)”。
如果把卷积核应用到输入图像的数据矩阵上,依次按照从左到右、从上到下的顺序分别执行卷积运算,就可以得到这个图像的特征图谱(feature map)。在不同的学术论文中,这个术语特征图谱也被称呼为做“卷积特征(convolved feature)”或 “激活图(activation map)”。


1e1bec45ef59eca75a34a233e6e4464b6f377977


图10-2 二维图像数据上的卷积操作实例

从图10-2体现出来的计算可以看到,在本质上,离散卷积就是一个线性运算。因此,这样的卷积操作也被称为线性滤波。这里的“线性”是指,我们用每个像素的邻域的线性组合来代替这个像素。其实,卷积操作还具有平移不变性(shift-invariant)。这个“平移不变性”是指,在图像的每个位置都执行相同的操作。
这个过程好像并不容易理解,下面我们就用更为浅显易懂的动态图来说明这个卷积过程。正如前文所说,每张图片都可视为关于像素值的数字矩阵。对于灰度图像而言,像素值的范围是0 ~255。为了简单起见,我们考虑一个给定5×5 的极简图像,其像素值仅为或0 或 1。类似地,卷积核是一个3×3的极简矩阵,如图10-3所示。


0b77571fa00cf589b4a653454defe74ab9329e25


图10-3 简化版本的图像矩阵核卷积核

下面我们来卷积计算是怎么完成的。我们用橙色的矩阵在原始图像(绿色所示矩阵)上从左到右、从上到下滑动,每次滑动一个像素,滑动的距离称为“步幅(stride)”。在每个位置上,我们可以计算出两个矩阵间的相应元素乘积,并把点乘结果之和,存储在输出矩阵(粉色所示)中的每一个单元格中,这样就得到了特征图谱(或称为卷积特征)矩阵[5]。


05c0c84c210f5d25a8250ff1455d897f74aa372d


图10-4 卷积的实现过程

10.4卷积在图像处理中的应用

到目前为止,我们只是做了一些简单的矩阵运算而已,它的好处体现在哪里,好像还不十分明确。简单来说,这样做的用途在于,将图像相邻子区域的像素值与卷积核执行“卷积”操作,可以获取相邻数据之间的统计关系,从而可挖掘出图像中的某些重要特征。
这样说来,还是非常地抽象,这些特征到底是什么?下面我们还是用几个图像的案例来形象说明这个概念[6],如图10-5所示。


5156e30492ece9f36288c1481e359058650d93b5


图10-5 “神奇”的卷积核

下面我们简单介绍一下常用的“久经考验”的卷积核。
(1)同一化核(Identity)。从图10-5可见,这个滤波器什么也没有做,卷积后得到的图像和原图一样。因为这个核只有中心点的值是1。邻域点的权值都是0,所以对滤波后的取值没有任何影响。
(2)边缘检测核(Edge Detection),也称为高斯-拉普拉斯算子。需要注意的是,这个核矩阵的元素总和为0(即中间元素为8,而周围8个元素之和为-8),所以滤波后的图像会很暗,而只有边缘位置是有亮度的。
(3)图像锐化核(Sharpness Filter)。图像的锐化和边缘检测比较相似。首先找到边缘,然后再把边缘加到原来的图像上面,如此一来,就强化了图像的边缘,使得图像看起来更加锐利。
(4)均值模糊(Box Blur /Averaging)。这个核矩阵的每个元素值都是1,它当前像素和它的四邻域的像素一起取平均,然后再除以9。均值模糊比较简单,但图像处理得不够平滑。因此,还可以采用高斯模糊核(Gaussian Blur),这个核被广泛用在图像降噪上。
事实上,还有很多有意思的卷积核,比如说浮雕核(embossing Filter),它可以给图像营造一种比较艺术化的3D阴影效果,如图10-6所示。浮雕核将中心一边的像素值减去另一边的像素值。这时,卷积出来的像素值可能是负数,我们可以将负数当成阴影,而把正数当成光,然后再对结果图像加上一定数值的偏移即可。


730ab62588968595285a96c75008f964a74912be


图10-6 浮雕核的应用

10.5 小结

现在我们小结一下本章的内容,我们首先给出了卷积的数学定义,接着用生活中的相近的案例来反向演绎解释了这个概念。最后我们用几个著名的卷积核演示了卷积在图像处理中的应用。
在后面的章节中,我们将详细介绍卷积神经网络的重要结构,包括卷积层(Convolutional Layer)、激活层(Activation Layer,涉及到ReLU的概念)、池化层(Pooling Layer)及全连接层(Full Connected Layer)。
请你关注。

10.6 请你思考

通过前面的学习,请你思考如下问题:
(1)我们常说的分布式特征表示,在卷积神经网络中是如何体现的?
(2)除了本文中描述的常见卷积核,你还知道哪些常用于图像处理的卷积核?
(3)现在非常流行计算机来作画,不论是谷歌团队的Inceptionism(“盗梦主义”[7]),还是David Aslan正在使用的“深度风格(Deep Style)”[8](如图10-7所示),都是一种基于神经网络的艺术画风。你知道他们都使用了什么样的卷积核吗?


b8e65f50619f81d178296a33ef091a1a1e9b4936


图10-7 深度风格的画风

写下你的感悟,祝你每天都有收获!

参考文献

[1] 张玉宏.云栖社区. 神经网络不胜语, M-P模型似可寻(深度学习入门系列之三)
[2]黄安埠. 深入浅出深度学习.中国工信出版社.2017.6
[3] 李德毅.从脑认知到人工智能.中国计算机大会.2015.10
[4] Savan Visalpara. How do computers see an image ?
[5] Feature extraction using convolution
[6] Ujjwal Karn. An Intuitive Explanation of Convolutional Neural Networks
[7] Alexander Mordvintsev, Christopher Olah, Mike Tyka.
Inceptionism: Going Deeper into Neural Networks.
[8] David Aslan. How Artists Can Use Neural Networks to Make Art


文章作者:张玉宏,著有《品味大数据》一书、https://item.jd.com/12382640.html《(最通俗易懂的深度学习入门)2018年7月出版

审校:我是主题曲哥哥。
联系邮件:zhangyuhong001@gmail.com

推荐阅读

一入侯门“深”似海,深度学习深几许(深度学习入门系列之一)
人工“碳”索意犹尽,智能“硅”来未可知(深度学习入门系列之二)
神经网络不胜语, M-P模型似可寻(深度学习入门系列之三)
“机器学习”三重门,“中庸之道”趋若人(深度学习入门系列之四)
Hello World感知机,懂你我心才安息(深度学习入门系列之五)
损失函数减肥用,神经网络调权重(深度学习入门系列之六)
山重水复疑无路,最快下降问梯度(深度学习入门系列之七)
BP算法双向传,链式求导最缠绵(深度学习入门系列之八)
全面连接困何处,卷积网络见解深(深度学习入门系列之九)
卷地风来忽吹散,积得飘零美如画(深度学习入门系列之十)
局部连接来减参,权值共享肩并肩(深度学习入门系列之十一)


##(未完待续)
相关文章
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
[深度学习入门]Numpy基础(上)
[深度学习入门]Numpy基础(上)
|
7月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
如何入门深度学习
如何入门深度学习
62 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
从零开始学习深度学习:入门指南与实践建议
本文将引导读者进入深度学习领域的大门,从基础概念到实际应用,为初学者提供全面的学习指南和实践建议。通过系统化的学习路径规划和案例实践,帮助读者快速掌握深度学习的核心知识和技能,迈出在人工智能领域的第一步。
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习入门:Python 与神经网络
深度学习是机器学习的一个分支,它涉及使用多层神经网络来处理和学习数据。在 Python 中,有许多流行的深度学习库和框架可以帮助我们轻松地构建和训练神经网络模型。在本文中,我们将介绍深度学习的基本概念,并使用 Python 中的 TensorFlow 和 Keras 库来构建一个简单的神经网络模型。
|
3月前
|
机器学习/深度学习 分布式计算 搜索推荐
深度学习入门:一篇概述深度学习的文章
深度学习入门:一篇概述深度学习的文章
|
5月前
|
机器学习/深度学习
小白入门机器学习深度学习实战教程
小白入门机器学习深度学习实战教程
35 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习从入门到出门(1)——概念与发展概况
深度学习从入门到出门(1)——概念与发展概况
|
6月前
|
机器学习/深度学习 人工智能 TensorFlow
【人工智能】深度学习框架值TF入门-模型保存与加载
保存完整的模型有很多应用场景,比如在浏览器中使用TensorFlow.js加载运行,比如在移动设备上使用TensorFlow Lite加载运行。
37 0
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
[深度学习入门]Numpy基础(下)
[深度学习入门]Numpy基础(下)
|
6月前
|
机器学习/深度学习 人工智能 数据挖掘
【数据分析入门】人工智能、数据分析和深度学习是什么关系?如何快速入门 Python Pandas?
【数据分析入门】人工智能、数据分析和深度学习是什么关系?如何快速入门 Python Pandas?