(图片来源:pixabay)
2019年3月27日, Yoshua Bengio、Geoffrey Hinton 和 Yann LeCun三个人因在深度学习的研究工作而获得了2018年的图灵奖。通过复杂神经网络进行深度学习的应用,最终将人工智能从科幻小说领域带到了现实世界。声音识别可以让你和机器人说话,图像识别是自动驾驶汽车的关键,但是究竟什么是深度学习呢?
很多文章都在告诉你深度学习是个复杂的多层神经网络,但并没有阐明深度学习背后的神奇力量。比如说,解释一下它是如何从像素值矩阵(即一张图片)中识别出人脸的。
作为一名数据科学教育者,数年来我一直在寻找一种能对深度学习的核心能力,也就是神经网络可以“发现”机器学习专家们所说的更高水平特征的能力,进行清晰直观的解释。更早一些的数据模型和包括神经网络在内的机器学习算法联合已经能对某些特征进行预测的数据库一起工作。举个例子,在预测哪家银行会*,我们猜测,某些财务比率(资产回报率、股本回报率等)可能具有预测价值。在预测保险诈骗时我们会认为保单的年龄具有预测性。
但在声音和图像识别方面,并不存在这样结构化的可供预测的信息。我们有的只是个人“低水平”的声音频率和振幅,或者是显示强度和颜色的像素值。你也许会跟计算机说,“就找两只眼睛吧。”然后提供眼睛的细节信息——一个小的实心圆(瞳孔),周围有一个环(虹膜),还有一个白色区域。但是,当计算机再次有一列列(低水平)像素值,你就需要做大量额外的工作来定义与眼睛相对应的所有不同的(更高级别的)像素模式。这就是深度学习上场的时候——它会自己“学习”怎样来辨别这些更高水平的特征。
在寻找解释深度学习的工作原理时,我发现大多数叙述都会在关键的地方用有一列彼此用线条连接的圆圈图像含糊带过。就像对你施了咒的演讲者,在空中挥舞着他的手,说道“像人脸这样更高级的特征就是这么被算法发现的。”
然后我就参加了一个研讨会,学习了卷积运算。
卷积神经网络
在一个标准的神经网络,每个预测器在每层神经网络中都会有一个权重。相比之下,卷积会选择这些预测器(像素)的一个子集,并对整个子集进行相同的操作。正是这种分组使得自动发现特征成为可能。回想一下,在图像识别任务里的数据由大量的像素值组成,在黑白图像中,范围从0(黑色)到255(白色)。由于我们对黑线和阴影感兴趣,所以我们就把黑色调为255,白色调为0。
(图片来源:Project Gutenberg's Samantha at the World's
看看上面的线条图,这张图在1893年由Funk & Wagnalls出版。在计算机可以识别复杂特征如眼睛、耳朵、鼻子和头等之前,它需要掌握像直线和边界这些很简单的特征。例如,组成一个男人下巴的线条。
(图片来源:Project Gutenberg's Samantha at the World's
在一个典型的卷积中,算法会每次选取一个小面积区域,比如说3X3像素区域。下巴的线条可能看上去是这样的:
(图片来源:Peter Bruce)
在第一次卷积操作中,该神经网络可以通过将每个像素值乘以一个3x3矩阵来进行滤波操作,该矩阵的值恰好能够识别垂直线。比如说这样:
(图片来源:Peter Bruce)
每一个小格乘积的总和是[0 0 0 200 225 225 0 0 0] = 650。与卷积产生的另一种排列方式相比,这是相对高的数值,因为图像部分和过滤器在中心列中都有高值,而在其他地方都有低值。所以对于这个初始滤波器操作,我们可以说它已经检测出垂直线,因此,我们可以将图像部分最初的9个值合并为一个单独的值(例如0到1之间的一个值,表示没有垂直线或存在垂直线)。
局部特征图
这个“垂直线检测器”滤波器在原始图像矩阵中上下移动,每次重新计算都会产生一个输出值。我们最后就会得到一个更小的矩阵。至于有多小就取决于滤波器是否每次移动一个像素、两个像素还是更多像素。虽然原始的图像只是单个像素值,但是新的、更小的矩阵是一个特征图,它回答了这样一个问题:“这部分有垂直线吗?”
卷积的结构相对较小,这意味着整个运算可以识别局部特征。我们可以想象其他局部滤波器可以发现水平线、对角线、曲线和边界线等。不同卷积操作的更深层,是把这些局部特征图作为输入,构建更高级的特征(角、矩形、圆圈等)。
特征的等级结构
第一个特征图谱是关于垂直线的,我们可以重复这个过程来识别水平线和对角线。我们也可以想象会有滤波器识别明暗区域的边界线。在产生了这些初级的特征图谱后,这个过程可以重复,只是不再使用原始像素值,而是使用这些特征图谱作为下一次的输入。这个迭代过程会一直继续,产生具有更高级别特征的多维矩阵图或者是张量。随着这个过程的进行,高级特征的矩阵表示变得有点抽象,所以我们并不一定能从深度的网络中发现眼睛。
在这个过程中,随着高级特征的出现,信息逐渐被压缩(简化):
(图片来源:Peter Bruce)
学习过程
神经网络是如何知道要做哪些卷积运算的呢?简单来说,神经网络保留了那些能成功分类的卷积运算。在一个基础神经网络中,每个权重都会在后续的学习迭代过程中得到调整。在一个卷积神经网络中,这个网络也在学习该做哪些卷积运算。
在监督式学习中,神经网络不断地向最高层次构建特征,这可能是学习任务的目标。想一下判断一幅图像是否包含人脸的任务。你有一些标记的图像用来训练,有些图像上有人脸,有些没有。训练过程就会得到一系列能识别特征等级(比如说,边>圆>眼睛)的卷积运算,它们能够在分类过程中成功识别目标。网络可能会发现的其他一些等级特征(比如说,边>矩形>房子)会因为它们对识别人脸没意义而被丢弃。有时候网络里单个神经元的输出就是一个有效的分类器,这表明了该神经元编码了你所关注的特征。
无监督学习
深度学习最神奇的地方就是它在能在无监督学习下识别特征,进而识别物体。著名的例子包括识别人脸图像和识别图像中的狗和猫。这是怎么做到的?
其中一个方法就是自编码网络。通过首先创建数据的低维表示,然后使用创建的表示再现原始数据,这些网络被训练到能重构输入信息。该网络也因此保留了有助于加速精确重构输入信息的特征。
在我们的图像识别例子中,自动编码器具有以下高级架构:
(图片来源:Peter Bruce)
在学习特征点(图像识别的瓶颈)之前,无监督神经网络与监督网络相似。一旦它开发了所学习的特征(数据的低维表示),它就会通过反向过程将这些特征扩展成图像。将输出图像与输入图像进行比较,如果它们不相似,则神经网络将继续工作(使用我们前面讨论过的相同的反向传播方法)。一旦神经网络可以可靠地生成与输入类似的输出图像,这个过程就会停止。
神经网络里瓶颈层的内部表示包含了关于训练网络的一般域(这里是图像)的有用信息。事实证明,在这个过程中出现的学习特征(瓶颈层神经元的输出)通常是有用的。例如,它们可以用于构建监督预测模型或非监督聚类算法。
本质内容
卷积网络成功的关键是它们能够构建非常复杂的多维特征图(需要强大的计算能力和容量),从而开发出形成数据低维表示的学习特性。不同的卷积架构(例如过滤操作的类型)适用于不同的任务。人工智能社区采用预训练过的神经网络,从而缩短冗长复杂的训练过程,减少特定任务所要用于训练和校准的数据集 (例如,不同数据集的通用图像,面孔图像、卫星图像、文本数据、语音数据等等)。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved