2016年,AlphaGo 击败韩国围棋冠军李世石,在媒体报道中,曾多次提及“深度学习”这个概念。而新版本的AlphaGoZero,更充分地运用了深度学习法,不再从人类棋手的以往棋谱记录中开始训练,而是完全靠自己的学习算法,通过自我对弈来学会下棋。经过一段时间的自我学习,它就击败了曾打败李世石的以及曾完胜柯洁的AlphaGo版本。
由此可见,机器的确开始具有了某种学习能力。它在训练中得到的不再只是规则、对象信息,而是还能获得对象出现的可能条件。换言之,它已经能够开始“感受”和捕捉可能性,而不只是现成之物了。这种学习就是一个非线性的、概率的、反馈调整的和逐层逐时地深化和构成的准发生过程。这是一个具有某种真实时间历程的习得过程。
什么是深度学习?
深度学习是机器学习的一种形式,所采用的神经网络在输入节点和输出节点之间具有许多“深度”层。通过基于大数据集训练网络,创建的模型可用于根据输入数据进行精确预测。在用于深度学习的神经网络中,每一层的输出会前馈到下一层的输入。通过更改各层之间连接的加权,反复优化模型。在每一个周期,对模型预测准确度的反馈将用于指导连接加权的更改。
输入和输出之间含有“深度”隐藏层的神经网络:
相对输入加权的更改:
人工智能、机器学习与深度学习
如上图,最早出现的人工智能位于同心圆最外侧;其次是随后发展起来的机器学习,位于中间;最后是推动人工智能突飞猛进发展的深度学习,位于最内侧。
自上个世纪50年代的人工智能热以来,基于人工智能概念的机器学习和深度学习又掀起一阵前所未有的新浪潮。
1956年,几个计算机科学家在达特茅斯会议上首次提出了“人工智能”的概念。此后,人工智能就一直萦绕于人们的脑海之中,并在科研实验室中蓄势待发。之后的几十年,人工智能一直在两极反转,有人称其为打开人类文明辉煌未来的钥匙,也有人将其当成科技疯子的狂想扔到技术垃圾堆里。其实2012年之前,这两种观点一直不相上下。
过去几年,尤其是2015年以来,人工智能突飞猛进地发展。这主要归功于图形处理器(GPU)的广泛应用,使得并行计算变得更快、更便宜、更有效。当然,无限拓展的存储能力和骤然爆发的数据洪流(大数据)的组合拳,也使得图像数据、文本数据、交易数据、映射数据全面海量爆发。
机器学习——实现人工智能的方法
机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。
机器学习直接来源于早期的人工智能领域。传统算法包括决策树学习、推导逻辑规划、聚类、强化学习和贝叶斯网络等等。众所周知,我们还没有实现强人工智能。早期机器学习方法甚至都无法实现弱人工智能。
机器学习最成功的应用领域是计算机视觉,虽然也还是需要大量的手工编码来完成工作。人们需要手工编写分类器、边缘检测滤波器,以便让程序能识别物体从哪里开始,到哪里结束;写形状检测程序来判断检测对象是不是有八条边;写分类器来识别字母“ST-O-P”。使用以上这些手工编写的分类器,人们总算可以开发算法来感知图像,判断图像是不是一个停止标志牌。
深度学习——实现机器学习的技术
人工神经网络是早期机器学习中的一个重要的算法。神经网络的原理是受我们大脑的生理结构——互相交叉相连的神经元启发。但与大脑中一个神经元可以连接一定距离内的任意神经元不同,人工神经网络具有离散的层、连接和数据传播的方向。
例如,我们可以把一幅图像切分成图像块,输入到神经网络的第一层。在第一层的每一个神经元都把数据传递到第二层。第二层的神经元也是完成类似的工作,把数据传递到第三层,以此类推,直到最后一层,然后生成结果。
每一个神经元都为它的输入分配权重,这个权重的正确与否与其执行的任务直接相关。最终的输出由这些权重加总来决定。
我们停止(Stop)标志牌为例。将一个停止标志牌图像的所有元素都打碎,然后用神经元进行“检查”:八边形的外形、救火车般的红颜色、鲜明突出的字母、交通标志的典型尺寸和静止不动运动特性等等。神经网络的任务就是给出结论,它到底是不是一个停止标志牌。神经网络会根据所有权重,给出一个经过深思熟虑的猜测——“概率向量”。
这个例子里,系统可能会给出这样的结果:86%可能是一个停止标志牌;7%的可能是一个限速标志牌;5%的可能是一个风筝挂在树上等等。然后网络结构告知神经网络,它的结论是否正确。
其实在人工智能出现的早期,神经网络就已经存在了,但神经网络对于“智能”的贡献微乎其微。主要问题是,即使是最基本的神经网络,也需要大量的运算。神经网络算法的运算需求难以得到满足。
现在,经过深度学习训练的图像识别,在一些场景中甚至可以比人做得更好:从识别猫,到辨别血液中癌症的早期成分,到识别核磁共振成像中的肿瘤。Google的AlphaGo先是学会了如何下围棋,然后与它自己下棋训练。它训练自己神经网络的方法,就是不断地与自己下棋,反复地下,永不停歇。
深度学习的相关技术
深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示。这些方法在许多方面都带来了显著的改善,包括最先进的语音识别、视觉对象识别、对象检测和许多其它领域。深度学习能够发现大数据中的复杂结构。深度卷积网络在处理图像、视频、语音和音频方面带来了突破,而递归网络在处理序列数据,比如文本和语音方面表现出了闪亮的一面。
几十年来,想要构建一个模式识别系统或者机器学习系统,需要一个精致的引擎和相当专业的知识来设计一个特征提取器,把原始数据(如图像的像素值)转换成一个适当的内部特征表示或特征向量,子学习系统,通常是一个分类器,对输入的样本进行检测或分类。特征表示学习是一套给机器灌入原始数据,然后能自动发现需要进行检测和分类的表达的方法。
深度学习就是一种特征学习方法,把原始数据通过一些简单的但是非线性的模型转变成为更高层次的,更加抽象的表达。通过足够多的转换的组合,非常复杂的函数也可以被学习。
监督学习
机器学习中,不论是否是深层,最常见的形式是监督学习。我们要建立一个系统,它能够对一个包含了一座房子、一辆汽车、一个人或一个宠物的图像进行分类。我们先收集大量的房子,汽车,人与宠物的图像的数据集,并对每个对象标上它的类别。在训练期间,机器会获取一副图片,然后产生一个输出,这个输出以向量形式的分数来表示,每个类别都有一个这样的向量。我们希望所需的类别在所有的类别中具有最高的得分,但是这在训练之前是不太可能发生的。通过计算一个目标函数可以获得输出分数和期望模式分数之间的误差(或距离)。然后机器会修改其内部可调参数,以减少这种误差。这些可调节的参数,通常被称为权值,它们是一些实数,定义了机器的输入输出功能。
在典型的深学习系统中,有可能有数以百万计的样本和权值,和带有标签的样本,用来训练机器。为了正确地调整权值向量,该学习算法计算每个权值的梯度向量,表示了如果权值增加了一个很小的量,那么误差会增加或减少的量。权值向量然后在梯度矢量的相反方向上进行调整。我们的目标函数,所有训练样本的平均,可以被看作是一种在权值的高维空间上的多变地形。负的梯度矢量表示在该地形中下降方向最快,使其更接近于最小值,也就是平均输出误差低最低的地方。
卷积神经网络
卷积神经网络被设计用来处理到多维数组数据的,比如一个有3个包含了像素值2-D图像组合成的一个具有3个颜色通道的彩色图像。很多数据形态都是这种多维数组的:1D用来表示信号和序列包括语言,2D用来表示图像或者声音,3D用来表示视频或者有声音的图像。卷积神经网络使用4个关键的想法来利用自然信号的属性:局部连接、权值共享、池化以及多网络层的使用。
一个典型的卷积神经网络结构是由一系列的过程组成的。最初的几个阶段是由卷积层和池化层组成,卷积层的单元被组织在特征图中,在特征图中,每一个单元通过一组叫做滤波器的权值被连接到上一层的特征图的一个局部块,然后这个局部加权和被传给一个非线性函数,比如ReLU。在一个特征图中的全部单元享用相同的过滤器,不同层的特征图使用不同的过滤器。使用这种结构处于两方面的原因:
1、在数组数据中,比如图像数据,一个值的附近的值经常是高度相关的,可以形成比较容易被探测到的有区分性的局部特征。
2、不同位置局部统计特征不太相关的,也就是说,在一个地方出现的某个特征,也可能出现在别的地方,所以不同位置的单元可以共享权值以及可以探测相同的样本。在数学上,这种由一个特征图执行的过滤操作是一个离线的卷积,卷积神经网络也是这么得名来的。
深度神经网络利用的很多自然信号是层级组成的属性,在这种属性中高级的特征是通过对低级特征的组合来实现的。在图像中,局部边缘的组合形成基本图案,这些图案形成物体的局部,然后再形成物体。这种层级结构也存在于语音数据以及文本数据中,如电话中的声音,因素,音节,文档中的单词和句子。当输入数据在前一层中的位置有变化的时候,池化操作让这些特征表示对这些变化具有鲁棒性。
使用深度卷积网络进行图像理解
21世纪开始,卷积神经网络就被成功的大量用于检测、分割、物体识别以及图像的各个领域。这些应用都是使用了大量的有标签的数据,比如交通信号识别,生物信息分割,面部探测,文本、行人以及自然图形中的人的身体部分的探测。近年来,卷积神经网络的一个重大成功应用是人脸识别。
图像可以在像素级别进行打标签,这样就可以应用在比如自动电话接听机器人、自动驾驶汽车等技术中。像Mobileye以及NVIDIA公司正在把基于卷积神经网络的方法用于汽车中的视觉系统中。其它的应用涉及到自然语言的理解以及语音识别中。
如今的卷积神经网络架构有10-20层采用ReLU激活函数、上百万个权值以及几十亿个连接。然而训练如此大的网络两年前就只需要几周了,现在硬件、软件以及算法并行的进步,又把训练时间压缩到了几小时。
卷积神经网络很容易在芯片或者现场可编程门阵列(FPGA)中高效实现,许多公司正在开发卷积神经网络芯片,以使智能机、相机、机器人以及自动驾驶汽车中的实时视觉系统成为可能。
递归神经网络
引入反向传播算法时,最令人兴奋的便是使用递归神经网络训练。对于涉及到序列输入的任务,比如语音和语言,利用RNNs能获得更好的效果。RNNs一次处理一个输入序列元素,同时维护网络中隐式单元中隐式的包含过去时刻序列元素的历史信息的“状态向量”。如果是深度多层网络不同神经元的输出,我们就会考虑这种在不同离散时间步长的隐式单元的输出,这将会使我们更加清晰怎么利用反向传播来训练RNNs。
RNNs是非常强大的动态系统,但是训练它们被证实存在问题的,因为反向传播的梯度在每个时间间隔内是增长或下降的,所以经过一段时间后将导致结果的激增或者降为零。
由于先进的架构和训练方式,RNNs被发现可以很好的预测文本中下一个字符或者句子中下一个单词,并且可以应用于更加复杂的任务。例如在某时刻阅读英语句子中的单词后,将会训练一个英语的“编码器”网络,使得隐式单元的最终状态向量能够很好地表征句子所要表达的意思或思想。这种“思想向量”可以作为联合训练一个法语“编码器”网络的初始化隐式状态(或者额外的输入),其输出为法语翻译首单词的概率分布。如果从分布中选择一个特殊的首单词作为编码网络的输入,将会输出翻译的句子中第二个单词的概率分布,并直到停止选择为止。总体而言,这一过程是根据英语句子的概率分布而产生的法语词汇序列。这种简单的机器翻译方法的表现甚至可以和最先进的的方法相媲美,同时也引起了人们对于理解句子是否需要像使用推理规则操作内部符号表示质疑。这与日常推理中同时涉及到根据合理结论类推的观点是匹配的。
机器学习和深度学习的主要差异
深度学习和机器学习都提供了训练模型和分类数据的方法,那么这两者到底有什么区别?
使用标准的机器学习的方法,我们需要手动选择图像的相关特征,以训练机器学习模型。然后,模型在对新对象进行分析和分类时引用这些特征。
通过深度学习的工作流程,可以从图像中自动提取相关功能。另外,深度学习是一种端到端的学习,网络被赋予原始数据和分类等任务,并且可以自动完成。
另一个关键的区别是深度学习算法与数据缩放,而浅层学习数据收敛。浅层学习指的是当用户向网络中添加更多示例和训练数据时,机器学习的方式能够在特定性能水平上达到平台级。
如果需要在深度学习和机器学习之间作出抉择,用户需要明确是否具有高性能的GPU和大量的标记数据。如果用户没有高性能GPU和标记数据,那么机器学习比深度学习更具优势。这是因为深度学习通常比较复杂,就图像而言可能需要几千张图才能获得可靠的结果。高性能的GPU能够帮助用户,在建模上花更少的时间来分析所有的图像。
如果用户选择机器学习,可以选择在多种不同的分类器上训练模型,也能知道哪些功能可以提取出最好的结果。此外,通过机器学习,我们可以灵活地选择多种方式的组合,使用不同的分类器和功能来查看哪种排列最适合数据。
所以,一般来说,深度学习的计算量更大,而机器学习技术通常更易于使用。
深度学习使得机器学习能够实现众多的应用,并拓展了人工智能的领域范围。深度学习摧枯拉朽般地实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。
全部0条评论
快来发表一下你的评论吧 !