.

什么是深度学习自动缺陷识别技术科普

前言

过去几年,人工智能(ArtificialIntelligence,AI)一直是媒体宣传的热点话题。

人们讨论着人工智能、机器学习、深度学习等诸多名词,企业和投资人也对人工智能抱有浓厚的兴趣,随着深度学习技术的不断发展,人工智能如今已经可以在部分任务上接近人类,甚至超越人类的水平。

例如在围棋上,年3月,谷歌旗下DeepMind公司开发的人工智能AlphaGo击败世界围棋冠军李世石,次年5月,AlphaGo的升级版AlphaGoMaster击败人类最强棋手之一的柯洁;在多人竞技游戏DOTA2上,年4月,OpenAI公司开发的人工智能OpenAIFive2:0击败了Ti冠军OG战队,这是人工智能首次在电子竞技项目上战胜世界冠军。

与此同时,人脸识别、虚拟助手、机器翻译、网络搜索、广告推荐、自动驾驶等其他人工智能技术,也伴随硬件和软件的提升进入到人们的日常生活中。

人工智能带来的变革,正如第二次工业革命的电气化一样,在一百多年的时间里,深刻改变了交通运输行业、制造业、医疗保健、通信等主要行业。

接下来我们将介绍人工智能、机器学习、深度学习的基本概念,其间关系,可用图1韦恩图表示。

图1、人工智能、机器学习与深度学习的包含性

1.1人工智能

人工智能通俗来讲,就是让机器像人类一样思考和推理的智能技术,这一概念最早出现,在年8月召开的达特茅斯会(DartmouthConference)上。

但由于目前,人类还没有完全了解和掌握人脑的运行原理,所以直接仿照人脑来设计人工智能在无疑是非常困难的[1]。计算机是否能够“思考”,如何“思考”,仍然是困扰研究者的难题。

大体来看,人工智能的发展可以总结成三个阶段:

第一阶段,研究者通过人类的经验,基于逻辑或者事实归纳出来一些规则,然后通过编写程序来让计算机完成一个任务。

在相当长的时间内,许多研究者相信,只要精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能,这一方法被称为符号主义人工智能(symbolicAI)[2]。这个时期中,研究者开发了一系列的智能系统,比如几何定理证明机、语言翻译器、早期的国际象棋程序等。

但随着研究的深入,研究者意识到这些推理规则过于简单,对项目难度评估不足,人工智能的研究开始陷入低谷,很多人工智能项目的研究经费也被削减[3]。

到了20世纪70年代,研究者意识到知识对于人工智能系统的重要性。特别是对于一些复杂的任务,需要专家来构建知识库。

这一时期,出现了各种各样的专家系统(ExpertSystem),并在特定的专业领域取得了很多成果。专家系统可以简单理解为“知识库+推理机”,是一类具有专门知识和经验的计算机智能程序系统。然而,这些项目最终都没有取得重大的成功,机器很难理解研究者通过形式化规则来描述的世界,因为对于人类的很多智能行为(比如语言理解、图像理解等),我们很难知道其中的原理,也无法描述这些智能行为背后的“知识”。因此,我们也很难通过知识和推理的方式来实现这些行为的智能系统。

为了解决这类问题,研究者开始将研究重点转向让计算机从数据中自己学习。事实上,“学习”本身也是一种智能行为。从人工智能的萌芽时期开始,就有一些研究者尝试让机器来自动学习,即机器学习(MachineLearning,ML)。

机器学习的主要目的是设计和分析一些学习算法,让计算机可以从数据(经验)中自动分析并获得规律,之后利用学习到的规律对未知数据进行预测,从而帮助人们完成一些特定任务,提高开发效率[4]。

1.2机器学习

机器学习是人工智能的一个重要分支,它致力在有限的观测数据中,学习出具有一般性规律的模型,并利用这些规律对未知数据进行预测。机器学习算法摒弃了人为向机器输入知识的操作,转而凭借算法自身来学到所需所有知识。

如图2所示,传统机器学习算法的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取,其数据处理流程如图3所示。

图2、经典程序设计和机器学习的区别

图3、传统机器学习的流程

我们以鸢尾花分类为例,展现机器学习是如何从训练和预测的。这里使用Iris数据集,由英国统计学家RonaldFisher收集整理,也称鸢尾花卉数据集,是一种多变量分析的数据集,包含个数据样本,分为山鸢尾(setosa,记号0)、变色鸢尾(versicolour,记号1)、维吉尼亚鸢尾(virginica,记号2)3类,每类50个数据样本。每个数据样本包含4个特征和1个标签,分别是单株鸢尾花的花萼长度(sepallength(cm))、花萼宽度(sepalwidth(cm))、花瓣长度(petallength(cm))、花瓣宽度(petalwidth(cm))和品种。Iris数据集前5个数据的特征和标签如表1所示。

表1、Iris数据集前5个数据

那么如何建立鸢尾花的测量数据与鸢尾花种类之间的关系呢?对于这种结构化数据(StructuredData)的分类问题,已经有很多传统的机器学习算法可以解决了。

这里我们使用scikit-learn(一个基于Python语言的机器学习库)实现一个简单的决策树模型,代码如下(由于使用的是数据清理过的数据集,这里我们跳过图3中的预处理和特征提取、转换)。

fromsklearnimporttree

fromsklearn.treeimportDecisionTreeClassifier

fromsklearn.datasetsimportload_iris

importgraphviz

iris=load_iris()

iris_feature=iris.data

iris_target=iris.target

clf=DecisionTreeClassifier(max_depth=3).fit(iris.data,iris.target)

dot_data=tree.export_graphviz(clf,out_file=None,feature_names=iris.feature_names,class_names=iris.target_names)

graph=graphviz.Source(dot_data)

graph.render("iris")

决策树(DecisionTree)模型分类结果如图4所示,通过鸢尾花的花瓣长度、花瓣宽度实现了对鸢尾花的简单分类:花瓣长度小于等于2.45cm的鸢尾花是山鸢尾,花瓣长度小于等于2.45cm且花瓣宽度小于等于1.75cm的基本可以判定为变色鸢尾,此外的基本都是维吉尼亚鸢尾。

这样就从鸢尾花的数据中,提取了“知识”或者是“规则”,这样在遇到新的鸢尾时,就可以测量花瓣的尺寸大致判断鸢尾花的品种(即“预测”),即使完全不了解鸢尾花的人也能完成这一过程。

图4、鸢尾花分类的决策树模型

除了这里使用的决策树算法,还有很多其他的传统机器学习算法,如随机森林(RandomForest,RF)、GBDT(GradientBoostingDecisionTree)、支持向量机(SupportVectorMachine,SVM)、朴素贝叶斯(NaiveBayes)、高斯过程回归(GaussianProcessRegression,GPR)、岭回归(RidgeRegression)、逻辑回归(LogisticRegression)等等算法。在深度学习发展迅猛的当下,传统机器学习算法在推荐系统等领域仍有重要的应用。

1.3深度学习

在传统机器学习中,需要设计数据特征,这往往依赖于研究者的专业知识和经验。一开始研究者通过“特征工程(FeatureEngineering)”形式的工程试错性方式来得到数据特征(即图3中的特征提取和特征转换)。

这一过程费时费力,更麻烦的是,解决不同的机器学习任务需要的特征可能千差万别,很难公用特征,使得每解决一个问题都要提出一套新的特征。此外对于一些任务,人类根本不知道该如何用特征有效表示数据。例如,对于人类很好理解的语言和图像(非结构化数据),就很难设计出能让机器理解的通用特征。这使得传统机器学习算法在很多领域的时候受到限制。

为了解决这个问题,研究者提出的深度学习的概念。深度学习是将原始的数据特征通过多步的特征转换得到一种特征表示,并进一步输入到预测函数得到最终结果。从原始数据到最终结果,中间的特征全都是模型自行学习得到的,没有人工设计的特征,从而避免特征工程。所谓“深度”是指原始数据进行非线性特征转换的次数,通过学习深度的加深,机器可以学习到不同层次的特征。深度学习中的一类代表算法是神经网络算法,包括深度置信网络(DeepBeliefNetwork,DBN)、递归神经网络(RecursiveNeuralNetwork,RNN)和卷积神经网络(ConvolutionalNeuralNetworks,CNN)等等。

二、、神经网络的历史

神经网络的发展经历了多个阶段,可以说是跌宕起伏,总的来说神经网络有着三次高潮和两次低谷。

第一次浪潮,开始于20世纪40年代到20世纪60年代的控制论。年,心理学家WarrenMcCulloch和逻辑学家WalterPitts根据生物神经(Neuron)结构,提出了MP神经元模型,通过检验函数

的正负来识别两种不同类别的输入。该模型可以完成固定逻辑的判定,但是没有学习的能力,模型的参数需要人为设定。

年,美国心理学家FrankRosenblatts提出了一个能根据每个类别的输入样本来学习权重的模型,所学模型便是最简单的线性加权:

称为感知机(Perceptron)。使用线性模型无疑是有很多限制的,年MarvinMinsky撰文指出,使用线性模型的神经网络(如感知机)无法学习异或(XOR)函数,即当时的神经网络不具有非线性的分类或拟合能力,这导致了研究者对受神经网络产生了抵触,神经网络研究随即陷入低谷。一般认为年到年为神经网络发展的第一次兴盛期。

图5、感知机结构

第二次浪潮,开始于年到年间的联结主义方法,可以使用反向传播训练神经网络。联结主义的中心思想是,当网络将大量简单的计算单元连接在一起时可以实现智能行为。年,DavidRumelhart和GeoffreyHinton等人在Nature上发表了通过反向传播算法来进行表征学习的论文,解决了两层神经网络所需要的复杂计算的问题,同时克服了MarvinMinsky说过神经网络无法解决异或问题,真正引起神经网络第二次研究高潮。

年,YannLeCun等人将反向传播算法应用于卷积神经网络LeNet的训练上,在手写数字图片识别上取得了巨大成功。20世纪90年代,LeNet被美国邮政署采用,用于自动读取信封上的邮政编码。LeNet的实现确立了CNN的结构,现代CNN中的许多内容在LeNet的网络结构中都能看到,例如卷积层(ConvolutionalLayer),池化层(PoolingLayer)。虽然LeNet早在20世纪90年代就已经提出了,但由于当时缺乏大规模的训练数据,计算机硬件的性能也较低,因此LeNet在处理复杂问题时效果并不理想。

图6、LeNet-5的结构

然而与此同时,研究者在以支持向量机为代表的核方法上取得巨大进展,支持向量机拥有严格的理论基础,训练需要的样本数量较少,可解释性强,同时具有良好的泛化能力,在很多重要任务上实现了很好的效果。相比之下,神经网络的不可解释性使得其如同“黑箱”,训练模型有很大的随机性,网络权重优化困难,硬件性能不足等问题使得很难训练深层网络,性能也相对一般,这导致了神经网络研究第二次陷入低谷。

神经网络研究的第三次浪潮始于年的突破,GeoffreyHinton表明,深度置信网络可以使用一种贪婪逐层预训练的策略来有效地训练[5],并在MNIST手写数字图片数据集上取得了优于支持向量机的效果,使得神经网络重新崛起。

年,AlexKrizhevsky、IlyaSutskever和GeoffreyHinton首次在大规模图像数据集上成功训练深层卷积神经网络,即AlexNet,其中采用了线性整流函数(RectifiedLinearUnit,ReLU),并使用随机失活(dropout)、数据扩充等技术来防止过拟合,模型在两块NVIDIAGTXGPU上进行并行训练,提高了训练速度,最终夺得了年的ImageNet大型视觉识别挑战赛的冠军,且准确率远超年基于经典的计算机视觉方法的冠军模型。(年获胜模型的Top-5错误率为15.3%,年为25.7%),引起了巨大的轰动,开启了卷积神经网络在计算机视觉领域的爆发式发展。

之后,VGGNet、GoogLeNet、ResNet、DenseNet、Xception等网络结构不断涌现,深度卷积神经网络已成为所有计算机视觉任务的首选算法。国内外的大型科技公司Google、Facebook、微软、百度、腾讯和阿里巴巴等公司在深层神经网络上的投入和研究迅速改了我们的生活,引发了巨大的现实影响,而不像前两次神经网络浪潮中的成果多停留在学术界。

三、为何深度学习会兴起

在了解神经网络发展的历史后,有人可能会有疑问,神经网络的雏形20世纪就出现了,使用反向传播训练卷积神经网络在年就已经实现了,自然语言处理(NaturalLanguageProcessing,NLP)中重要算法长短期记忆(LongShort-TermMemory,LSTM)年也被开发出来,为什么神经网络在近十年才被认识是实现人工智能的关键技术?为什么深度学习在年之后才开始取得成功?这主要有三方面的原因。

首先是数据。传统的机器学习算法的训练比较简单,在较小的数据集上就获得很好的效果。比如前文提到的鸢尾花卉数据集,仅仅包含3种鸢尾花,个样本,使用决策树算法就可以训练出很好的模型。年由YannLeCun收集整理的MNIST手写数字图片数据集共包含0~9共10类数字,每个类别多达张图片[6]。然而,如果想训练一个较高性能的神经网络,需要训练一个规模足够大的神经网络,这就需要很多的数据,以增加泛化能力,并降低过拟合的风险。

幸运的是,随着互联网的发展,现代社交媒体的流行,使得数据的收集更加的便捷,利用爬虫等技术可以轻易地建立图像、视频、自然语言等各种数据集。同时,各种数据集的数据量也与日俱增,最大的数据集已经包含超过7位数的数据。这使得训练网络层较深,模型参数量较大的网络成为可能。

表2、数据集规模

如果说其中哪个数据集最出名或者影响最深远,那一定是李飞飞团队收集和制作的数据集ImageNet,目前已经收集张图片,包含个类别。在ImageNet子数据集上举办的年度大型视觉识别挑战赛促进了计算机视觉的发展,年AlexNet的夺冠彻底改变了人们对深度学习的看法,也引发人工智能至今的繁荣。

其次是硬件。传统的机器学习算法通常在单台机器的CPU上训练,由于算法的复杂度较低,且数据量较小,在CPU上串行训练即可得到满意结果。但是,对于计算机视觉或语音识别所使用的典型深度学习模型,其训练使用的数据量很大,训练需要的计算量也很大,单个CPU很难满足需求,而CPU集群则十分昂贵。

幸运的是,视频游戏系统的消费市场刺激了图形处理硬件的发展。NVIDIA和AMD等公司投资大量资金来开发图形处理器(GraphicsProcessingUnit,GPU),以便为越来越逼真的视频游戏提供图形显示支持。由于相对简便的编程模型,强大的并行能力以及巨大的内存带宽,通用GPU为我们提供了训练神经网络的理想平台[7]。著名的AlexNet就是使用两块NVIDIAGTXGPU训练了5-6天得到的。目前的大部分神经网络均使用NVIDIAGPU和GoogleTPU等并行加速芯片训练模型参数。随着GPU算力的指数增长(速度远快于CPU算力的增长),深度神经网络的训练所需的时间大大降低了。

图8、四十年来处理器的发展,蓝色表示CPU,绿色表示GPU

来源:NVIDIA


转载请注明:http://www.abachildren.com/sstx/1492.html