深度学习和机器学习有什么区别?
深度学习和机器学习有什么区别? 在人工智能的早期,那些对人类智力来说非常困难、但对计算机来说相对简单的问题得到迅速解决,比如,那些可以通过一系列形式化的数学规则来描述的问题。人工智能的真正挑战在于解决那些对人来说很容易执行、但很难形式化描述的任务,如识别人们所说的话或图像中的脸。对于这些问题,我们人类往往可以凭借直觉轻易地解决。针对这些比较直观的问题,《深度学习》讨论一种解决方案。该方案可以让计算机从经验中学习,并根据层次化的概念体系来理解世界,而每个概念则通过与某些相对简单的概念之间的关系来定义。让计算机从经验获取知识,可以避免由人类来给计算机形式化地指定它需要的所有知识。层次化的概念让计算机构建较简单的概念来学习复杂概念。如果绘制出表示这些概念如何建立在彼此之上的图,我们将得到一张“深”(层次很多)的图。基于这个原因,我们称这种方法为AI深度学习(deep learning)。
AI许多早期的成功发生在相对朴素且形式化的环境中,而且不要求计算机具备很多关于世界的知识。例如,IBM的深蓝(Deep Blue)国际象棋系统在1997年击败了世界冠军Garry Kasparov(Hsu,2002)。显然国际象棋是一个非常简单的领域,因为它仅含有64个位置并只能以严格限制的方式移动32个棋子。设计一种成功的国际象棋策略是巨大的成就,但向计算机描述棋子及其允许的走法并不是这一挑战的困难所在。国际象棋完全可以由一个非常简短的、完全形式化的规则列表来描述,并可以容易地由程序员事先准备好。
具有讽刺意义的是,抽象和形式化的任务对人类而言是最困难的脑力任务之一,但对计算机而言却属于最容易的。计算机早就能够打败人类最好的国际象棋选手,但直到最近计算机才在识别对象或语音任务中达到人类平均水平。一个人的日常生活需要关于世界的巨量知识。很多这方面的知识是主观的、直观的,因此很难通过形式化的方式表达清楚。计算机需要获取同样的知识才能表现出智能。人工智能的一个关键挑战就是如何将这些非形式化的知识传达给计算机。
一些人工智能项目力求将关于世界的知识用形式化的语言进行硬编码(hard-code)。计算机可以使用逻辑推理规则来自动地理解这些形式化语言中的声明。这就是众所周知的人工智能的知识库(knowledge base)方法。然而,这些项目最终都没有取得重大的成功。其中最著名的项目是Cyc(Lenat and Guha,1989)。Cyc包括一个推断引擎和一个使用CycL语言描述的声明数据库。这些声明是由人类监督者输入的。这是一个笨拙的过程。人们设法设计出足够复杂的形式化规则来精确地描述世界。例如,Cyc不能理解一个关于名为Fred的人在早上剃须的故事(Linde,1992)。它的推理引擎检测到故事中的不一致性:它知道人体的构成不包含电气零件,但由于Fred正拿着一个电动剃须刀,它认为实体——“正在剃须的Fred”(“Fred While Shaving”)含有电气部件。因此,它产生了这样的疑问——Fred在刮胡子的时候是否仍然是一个人。
依靠硬编码的知识体系面临的困难表明,AI 系统需要具备自己获取知识的能力,即从原始数据中提取模式的能力。这种能力称为机器学习(machine learning)。引入机器学习使计算机能够解决涉及现实世界知识的问题,并能做出看似主观的决策。比如,一个称为逻辑回归(logistic regression)的简单机器学习算法可以决定是否建议剖腹产(Mor-Yosef et al.,1990)。而同样是简单机器学习算法的朴素贝叶斯(naive Bayes)则可以区分垃圾电子邮件和合法电子邮件。
这些简单的机器学习算法的性能在很大程度上依赖于给定数据的表示(representation)。例如,当逻辑回归用于判断产妇是否适合剖腹产时,AI系统不会直接检查患者。相反,医生需要告诉系统几条相关的信息,诸如是否存在子宫疤痕。表示患者的每条信息称为一个特征。逻辑回归学习病人的这些特征如何与各种结果相关联。然而,它丝毫不能影响该特征定义的方式。如果将病人的MRI(核磁共振)扫描而不是医生正式的报告作为逻辑回归的输入,它将无法做出有用的预测。MRI扫描的单一像素与分娩过程中并发症之间的相关性微乎其微。
在整个计算机科学乃至日常生活中,对表示的依赖都是一个普遍现象。在计算机科学中,如果数据集合被精巧地结构化并被智能地索引,那么诸如搜索之类的操作的处理速度就可以成指数级地加快。人们可以很容易地在阿拉伯数字的表示下进行算术运算,但在罗马数字的表示下,运算会比较耗时。因此,毫不奇怪,表示的选择会对机器学习算法的性能产生巨大的影响。图1.1展示了一个简单的可视化例子。
http://picx.zhimg.com/50/v2-0d055965d218d104cc5342c4392aef5c_720w.jpg?source=1940ef5c
图1.1 不同表示的例子:假设我们想在散点图中画一条线来分隔两类数据。在左图中,我们使用笛卡儿坐标表示数据,这个任务是不可能的。在右图中,我们用极坐标表示数据,可以用垂直线简单地解决这个任务(与David Warde-Farley合作绘制此图)
许多人工智能任务都可以通过以下方式解决:先提取一个合适的特征集,然后将这些特征提供给简单的机器学习算法。例如,对于通过声音鉴别说话者的任务来说,一个有用的特征是对其声道大小的估计。这个特征为判断说话者是男性、女性还是儿童提供了有力线索。
然而,对于许多任务来说,我们很难知道应该提取哪些特征。例如,假设我们想编写一个程序来检测照片中的车。我们知道,汽车有轮子,所以我们可能会想用车轮的存在与否作为特征。遗憾的是,我们难以准确地根据像素值来描述车轮看上去像什么。虽然车轮具有简单的几何形状,但它的图像可能会因场景而异,如落在车轮上的阴影、太阳照亮的车轮的金属零件、汽车的挡泥板或者遮挡的车轮一部分的前景物体等。
解决这个问题的途径之一是使用机器学习来发掘表示本身,而不仅仅把表示映射到输出。这种方法我们称之为表示学习(representation learning)。学习到的表示往往比手动设计的表示表现得更好。并且它们只需最少的人工干预,就能让AI系统迅速适应新的任务。表示学习算法只需几分钟就可以为简单的任务发现一个很好的特征集,对于复杂任务则需要几小时到几个月。手动为一个复杂的任务设计特征需要耗费大量的人工、时间和精力,甚至需要花费整个社群研究人员几十年的时间。
表示学习算法的典型例子是自编码器(autoencoder)。自编码器由一个编码器(encoder)函数和一个解码器(decoder)函数组合而成。编码器函数将输入数据转换为一种不同的表示,而解码器函数则将这个新的表示转换回原来的形式。我们期望当输入数据经过编码器和解码器之后尽可能多地保留信息,同时希望新的表示有各种好的特性,这也是自编码器的训练目标。为了实现不同的特性,我们可以设计不同形式的自编码器。
当设计特征或设计用于学习特征的算法时,我们的目标通常是分离出能解释观察数据的变差因素(factors of variation)。在此背景下,“因素”这个词仅指代影响的不同来源;因素通常不是乘性组合。这些因素通常是不能被直接观察到的量。相反,它们可能是现实世界中观察不到的物体或者不可观测的力,但会影响可观测的量。为了对观察到的数据提供有用的简化解释或推断其原因,它们还可能以概念的形式存在于人类的思维中。它们可以被看作数据的概念或者抽象,帮助我们了解这些数据的丰富多样性。当分析语音记录时,变差因素包括说话者的年龄、性别、他们的口音和他们正在说的词语。当分析汽车的图像时,变差因素包括汽车的位置、它的颜色、太阳的角度和亮度。
在许多现实的人工智能应用中,困难主要源于多个变差因素同时影响着我们能够观察到的每一个数据。比如,在一张包含红色汽车的图片中,其单个像素在夜间可能会非常接近黑色。汽车轮廓的形状取决于视角。大多数应用需要我们理清变差因素并忽略我们不关心的因素。
显然,从原始数据中提取如此高层次、抽象的特征是非常困难的。许多诸如说话口音这样的变差因素,只能通过对数据进行复杂的、接近人类水平的理解来辨识。这几乎与获得原问题的表示一样困难,因此,乍一看,表示学习似乎并不能帮助我们。
深度学习(deep learning)通过其他较简单的表示来表达复杂表示,解决了表示学习中的核心问题。
深度学习让计算机通过较简单的概念构建复杂的概念。图1.2展示了深度学习系统如何通过组合较简单的概念(例如角和轮廓,它们反过来由边线定义)来表示图像中人的概念。深度学习模型的典型例子是前馈深度网络或多层感知机(multilayer perceptron,MLP)。多层感知机仅仅是一个将一组输入值映射到输出值的数学函数。该函数由许多较简单的函数复合而成。我们可以认为不同数学函数的每一次应用都为输入提供了新的表示。
学习数据的正确表示的想法是解释深度学习的一个视角。另一个视角是深度促使计算机学习一个多步骤的计算机程序。每一层表示都可以被认为是并行执行另一组指令之后计算机的存储器状态。更深的网络可以按顺序执行更多的指令。顺序指令提供了极大的能力,因为后面的指令可以参考早期指令的结果。从这个角度上看,在某层激活函数里,并非所有信息都蕴涵着解释输入的变差因素。表示还存储着状态信息,用于帮助程序理解输入。这里的状态信息类似于传统计算机程序中的计数器或指针。它与具体的输入内容无关,但有助于模型组织其处理过程。
http://picx.zhimg.com/50/v2-f7b3fe865d4dfe6c2f75e909dc2cc5d8_720w.jpg?source=1940ef5c
图1.2 深度学习模型的示意图。计算机难以理解原始感观输入数据的含义,如表示为像素值集合的图像。将一组像素映射到对象标识的函数非常复杂。如果直接处理,学习或评估此映射似乎是不可能的。深度学习将所需的复杂映射分解为一系列嵌套的简单映射(每个由模型的不同层描述)来解决这一难题。输入展示在可见层(visible layer),这样命名的原因是因为它包含我们能观察到的变量。然后是一系列从图像中提取越来越多抽象特征的隐藏层(hidden layer)。因为它们的值不在数据中给出,所以将这些层称为“隐藏层”;模型必须确定哪些概念有利于解释观察数据中的关系。这里的图像是每个隐藏单元表示的特征的可视化。给定像素,第1层可以轻易地通过比较相邻像素的亮度来识别边缘。有了第1隐藏层描述的边缘,第2隐藏层可以容易地搜索可识别为角和扩展轮廓的边集合。给定第2隐藏层中关于角和轮廓的图像描述,第3隐藏层可以找到轮廓和角的特定集合来检测特定对象的整个部分。最后,根据图像描述中包含的对象部分,可以识别图像中存在的对象(经Zeiler and Fergus(2014)许可引用此图)
图1.2 深度学习模型的示意图。计算机难以理解原始感观输入数据的含义,如表示为像素值集合的图像。将一组像素映射到对象标识的函数非常复杂。如果直接处理,学习或评估此映射似乎是不可能的。深度学习将所需的复杂映射分解为一系列嵌套的简单映射(每个由模型的不同层描述)来解决这一难题。输入展示在用来作为一个步骤的函数。图1.3说明了语言的选择如何给相同的架构两个不同的衡量。
http://picx.zhimg.com/v2-78922a4b016c0abc432b6fc2bf6a7868_r.jpg?source=1940ef5c
图1.3 将输入映射到输出的计算图表的示意图,其中每个节点执行一个操作。深度是从输入到输出的最长路径的长度,但这取决于可能的计算步骤的定义。这些图中所示的计算是逻辑回归模型的输出,σ(wTx),其中σ是logistic sigmoid函数。如果使用加法、乘法和logistic sigmoid作为计算机语言的元素,那么这个模型深度为3;如果将逻辑回归视为元素本身,那么这个模型深度为1
另一种是在深度概率模型中使用的方法,它不是将计算图的深度视为模型深度,而是将描述概念彼此如何关联的图的深度视为模型深度。在这种情况下,计算每个概念表示的计算流程图的深度可能比概念本身的图更深。这是因为系统对较简单概念的理解在给出更复杂概念的信息后可以进一步精细化。例如,一个AI系统观察其中一只眼睛在阴影中的脸部图像时,它最初可能只看到一只眼睛。但当检测到脸部的存在后,系统可以推断第二只眼睛也可能是存在的。在这种情况下,概念的图仅包括两层(关于眼睛的层和关于脸的层),但如果我们细化每个概念的估计将需要额外的n次计算,那么计算的图将包含2n层。
由于并不总是清楚计算图的深度和概率模型图的深度哪一个是最有意义的,并且由于不同的人选择不同的最小元素集来构建相应的图,所以就像计算机程序的长度不存在单一的正确值一样,架构的深度也不存在单一的正确值。另外,也不存在模型多么深才能被修饰为“深”的共识。但相比传统机器学习,深度学习研究的模型涉及更多学到功能或学到概念的组合,这点毋庸置疑。
总之,这本书的主题——深度学习是通向人工智能的途径之一。具体来说,它是机器学习的一种,一种能够使计算机系统从经验和数据中得到提高的技术。我们坚信机器学习可以构建出在复杂实际环境下运行的AI系统,并且是唯一切实可行的方法。深度学习是一种特定类型的机器学习,具有强大的能力和灵活性,它将大千世界表示为嵌套的层次概念体系(由较简单概念间的联系定义复杂概念、从一般抽象概括到高级抽象表示)。图1.4说明了这些不同的AI学科之间的关系。图1.5展示了每个学科如何工作的高层次原理。
http://picx.zhimg.com/v2-acd943a0b0f12e19ccd8f5102d164207_r.jpg?source=1940ef5c
图1.4 维恩图展示了深度学习既是一种表示学习,也是一种机器学习,可以用于许多(但不是全部)AI方法。维恩图的每个部分包括一个AI技术的实例
http://picx.zhimg.com/v2-a45c6a117b7367b8e8fbd0a5920537ee_r.jpg?source=1940ef5c
图1.5 流程图展示了AI系统的不同部分如何在不同的AI学科中彼此相关。阴影框表示能从数据中学习的组件
书籍推荐
1、深度学习
http://pic1.zhimg.com/v2-104e392d7f88c18707351758c5ef9ec2_r.jpg?source=1940ef5c
深度学习领域奠基性经典畅销书,数据科学家和机器学习从业者必读,长期位居美亚AI和机器学习类图书榜首,图灵奖获奖作品,全彩印刷。
《深度学习》由全球知名的三位专家IanGoodfellow、YoshuaBengio和AaronCourville撰写,是深度学习领域奠基性的经典教材。全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。
《深度学习》适合各类读者阅读,包括相关专业的大学生或研究生,以及不具有机器学习或统计背景、但是想要快速补充深度学习知识,以便在实际产品或平台中应用的软件工程师。
2、动手学深度学习
http://picx.zhimg.com/50/v2-fa2a21118f61c058a050672f352d4a54_720w.jpg?source=1940ef5c
书面向希望了解深度学习,特别是对实际使用深度学习感兴趣的大学生、工程师和研究人员。本书不要求读者有任何深度学习或者机器学习的背景知识,读者只需具备基本的数学和编程知识,如基础的线性代数、微分、概率及Python编程知识。本书的附录中提供了书中涉及的主要数学知识,供读者参考。
全书的内容分为3个部分:第一部分介绍深度学习的背景,提供预备知识,并包括深度学习基础的概念和技术;第二部分描述深度学习计算的重要组成部分,还解释近年来令深度学习在多个领域大获成功的卷积神经网络和循环神经网络;第三部分评价优化算法,检验影响深度学习计算性能的重要因素,并分别列举深度学习在计算机视觉和自然语言处理中的重要应用。
本书同时覆盖深度学习的方法和实践,主要面向在校大学生、技术人员和研究人员。阅读本书需要读者了解基本的Python编程或附录中描述的线性代数、微分和概率基础。
3、PyTorch深度学习实战
http://pic1.zhimg.com/50/v2-97766f6dba00ed9500c584f9e9069427_720w.jpg?source=1940ef5c
虽然很多深度学习工具都使用Python,但PyTorch 库是真正具备Python 风格的。对于任何了解NumPy 和scikit-learn 等工具的人来说,上手PyTorch 轻而易举。PyTorch 在不牺牲高级特性的情况下简化了深度学习,它非常适合构建快速模型,并且可以平稳地从个人应用扩展到企业级应用。由于像苹果、Facebook和摩根大通这样的公司都使用PyTorch,所以当你掌握了PyTorth,就会拥有更多的职业选择。
本书是教你使用 PyTorch 创建神经网络和深度学习系统的实用指南。它帮助读者快速从零开始构建一个真实示例:肿瘤图像分类器。在此过程中,它涵盖了整个深度学习管道的关键实践,包括 PyTorch张量 API、用 Python 加载数据、监控训练以及将结果进行可视化展示。
4、机器学习的数学
http://pic1.zhimg.com/50/v2-163f01083e2d1acb46b217fab37f3f5f_720w.jpg?source=1940ef5c
本书的目标是帮助读者全面、系统地学习机器学习所必须的数学知识。全书由8章组成,力求精准、最小地覆盖机器学习的数学知识。包括微积分,线性代数与矩阵论,**化方法,概率论,信息论,随机过程,以及图论。本书从机器学习的角度讲授这些数学知识,对它们在该领域的应用举例说明,使读者对某些抽象的数学知识和理论的实际应用有直观、具体的认识。
本书内容紧凑,结构清晰,深入浅出,讲解详细。可用作计算机、人工智能、电子工程、自动化、数学等相关专业的教材与教学参考书。对人工智能领域的工程技术人员与产品研发人员,本书也有很强的参考价值。对于广大数学与应用的数学爱好者,本书亦为适合自学的读本。
机器学习精讲 全彩印刷
http://pic1.zhimg.com/50/v2-97df94e200e8dc5435a363f1ffd15430_720w.jpg?source=1940ef5c
本书用简短的篇幅、精炼的语言,讲授机器学习领域必备的知识和技能。全书共11章和一个术语表,依次介绍了机器学习的基本概念、符号和定义、算法、基本实践方法、神经网络和深度学习、问题与解决方案、进阶操作、非监督学习以及其他学习方式等,涵盖了监督学习和非监督学习、支持向量机、神经网络、集成学习、梯度下降、聚类分析、维度降低、自编码器、迁移学习、强化学习、特征工程、超参数调试等众多核心概念和方法。全书最后给出了一个较为详尽的术语表。
本书能够帮助读者了解机器学习是如何工作的,为进一步理解该领域的复杂问题和进行深入研究打好基础。本书适合想要学习和掌握机器学习的软件从业人员、想要运用机器学习技术的数据科学家阅读,也适合想要了解机器学习的一般读者参考。 如果你经常想让自己弄清楚机器学习和深度学习的区别,阅读该文章,我将用通俗易懂的语言为你介绍他们之间的差别。
机器学习和深度学习变得越来越火。突然之间,不管是了解的还是不了解的,所有人都在谈论机器学习和深度学习。无论你是否主动关注过数据科学,你应该已经听说过这两个名词了。
为了展示他们的火热程度,我在 Google trend 上搜索了这些关键字:
http://pic1.zhimg.com/v2-32cdf54f6615a20610a504d779b21f09_r.jpg?source=1940ef5c
如果你想让自己弄清楚机器学习和深度学习的区别,请阅读本篇文章,我将用通俗易懂的语言为你介绍他们之间的差别。下文详细解释了机器学习和深度学习中的术语。并且,我比较了他们两者的不同,别说明了他们各自的使用场景。
什么是机器学习?
一言以蔽之,由 Tom Mitchell 给出的被广泛引用的机器学习的定义给出了最佳解释。下面是其中的内容:
“计算机程序可以在给定某种类别的任务 T 和性能度量 P 下学习经验 E ,如果其在任务 T 中的性能恰好可以用 P 度量,则随着经验 E 而提高。”
是不是读起来很绕口呢?
让我们用简单的例子来分解下这个描述。
示例 1:机器学习和根据人的身高估算体重
假设你想创建一个能够根据人的身高估算体重的系统(也许你出自某些理由对这件事情感兴趣)。那么你可以使用机器学习去找出任何可能的错误和数据捕获中的错误,首先你需要收集一些数据,让我们来看看你的数据是什么样子的:
http://picx.zhimg.com/v2-b6d666ebb7bcedb48a38c544323685fd_r.jpg?source=1940ef5c
图中的每一个点对应一个数据,我们可以画出一条简单的斜线来预测基于身高的体重
例如这条斜线:
Weight (in kg) = Height (in cm) - 100
这些斜线能帮助我们作出预测,尽管这些斜线表现得很棒,但是我们需要理解它是怎么表现的,我们希望去减少预测和实际之间的误差,这也是衡量其性能的方法。
深远一点地说,我们收集更多的数据 (experience),模型就会变得更好。我们也可以通过添加更多变量(例如性别)和添加不同的预测斜线来完善我们的模型。
示例2:飓风预测系统
我们找一个复杂一点的例子。假如你要构建一个飓风预测系统。假设你手里有所有以前发生过的飓风的数据和这次飓风产生前三个月的天气信息。
如果要手动构建一个飓风预测系统,我们应该怎么做?
http://picx.zhimg.com/v2-b738b75ea40653da00f4782f72e9d897_r.jpg?source=1940ef5c
首先我们的任务是清洗所有的数据找到数据里面的模式进而查找产生飓风的条件。
我们既可以将模型条件数据(例如气温高于40度,湿度在80-100等)输入到我们的系统里面生成输出;也可以让我们的系统自己通过这些条件数据产生合适的输出。
我们可以把所有以前的数据输入到系统里面来预测未来是否会有飓风。基于我们系统条件的取值,评估系统的性能(系统正确预测飓风的次数)。我们可以将系统预测结果作为反馈继续多次迭代以上步骤。
让我们根据前边的解释来定义我们的预测系统:我们的任务是确定可能产生飓风的气象条件。性能P是在系统所有给定的条件下有多少次正确预测飓风。经验E是我们的系统的迭代次数。
什么是深度学习?
深度学习的概念并不新颖。它已经存在好几年了。但伴随着现有的所有的炒作,深度的学习越来越受到重视。正如我们在机器学习中所做的那样,先来看看深度学习的官方定义,然后用一个例子来解释。
“深度学习是一种特殊的机器学习,通过学习将世界使用嵌套的概念层次来表示并实现巨大的功能和灵活性,其中每个概念都定义为与简单概念相关联,而更为抽象的表示则以较不抽象的方式来计算。”
这也有点让人混乱。下面使用一个简单示例来分解下此概念。
示例 1:形状检测
先从一个简单的例子开始,从概念层面上解释究竟发生了什么的事情。我们来试试看如何从其他形状中识别的正方形。
http://pic1.zhimg.com/v2-bb5d66a99566765840654627d6852082_r.jpg?source=1940ef5c
我们眼中的第一件事是检查图中是否有四条的线(简单的概念)。如果我们找到这样的四条线,我们进一步检查它们是相连的、闭合的和相互垂直的,并且它们是否是相等的(嵌套的概念层次结构)。
所以,我们完成了一个复杂的任务(识别一个正方形),并以简单、不太抽象的任务来完成它。深度学习本质上在大规模执行类似逻辑。
示例 2:猫VS狗
我们举一个动物辨识的例子,其中我们的系统必须识别给定的图像中的动物是猫还是狗。阅读下此文,以了解深度学习在解决此类问题上如何比机器学习领先一步。
机器学习和深度学习的对比
现在的你应该已经对机器学习和深度学习有所了解,接下来我们将会学习其中一些重点,并比较两种技术。
数据依赖性
深度学习与传统的机器学习最主要的区别在于随着数据规模的增加其性能也不断增长。当数据很少时,深度学习算法的性能并不好。这是因为深度学习算法需要大量的数据来完美地理解它。另一方面,在这种情况下,传统的机器学习算法使用制定的规则,性能会比较好。下图总结了这一事实。
http://pica.zhimg.com/v2-e0236cbc0c5ed0b4a417fccf81c4c50c_r.jpg?source=1940ef5c
硬件依赖
深度学习算法需要进行大量的矩阵运算,GPU 主要用来高效优化矩阵运算,所以 GPU 是深度学习正常工作的必须硬件。与传统机器学习算法相比,深度学习更依赖安装 GPU 的高端机器。
特征处理
特征处理是将领域知识放入特征提取器里面来减少数据的复杂度并生成使学习算法工作的更好的模式的过程。特征处理过程很耗时而且需要专业知识。
在机器学习中,大多数应用的特征都需要专家确定然后编码为一种数据类型。
特征可以使像素值、形状、纹理、位置和方向。大多数机器学习算法的性能依赖于所提取的特征的准确度。
深度学习尝试从数据中直接获取高等级的特征,这是深度学习与传统机器学习算法的主要的不同。基于此,深度学习削减了对每一个问题设计特征提取器的工作。例如,卷积神经网络尝试在前边的层学习低等级的特征(边界,线条),然后学习部分人脸,然后是高级的人脸的描述。更多信息可以阅读神经网络机器在深度学习里面的有趣应用。
http://picx.zhimg.com/v2-74b4286a630c0f8dfc3a09f1725006b4_r.jpg?source=1940ef5c
问题解决方式
当应用传统机器学习算法解决问题的时候,传统机器学习通常会将问题分解为多个子问题并逐个子问题解决最后结合所有子问题的结果获得最终结果。相反,深度学习提倡直接的端到端的解决问题。
举例说明:
假设有一个多物体检测的任务需要图像中的物体的类型和各物体在图像中的位置。
http://pic1.zhimg.com/v2-1f09714e399214bed764b5c604a7dd18_r.jpg?source=1940ef5c
传统机器学会将问题分解为两步:物体检测和物体识别。首先,使用一个边界框检测算法扫描整张图片找到可能的是物体的区域;然后使用物体识别算法(例如 SVM 结合 HOG )对上一步检测出来的物体进行识别。
相反,深度学习会直接将输入数据进行运算得到输出结果。例如可以直接将图片传给 YOLO 网络(一种深度学习算法),YOLO 网络会给出图片中的物体和名称。
执行时间
通常情况下,训练一个深度学习算法需要很长的时间。这是因为深度学习算法中参数很多,因此训练算法需要消耗更长的时间。最先进的深度学习算法 ResNet完整地训练一次需要消耗两周的时间,而机器学习的训练会消耗的时间相对较少,只需要几秒钟到几小时的时间。
但两者测试的时间上是完全相反。深度学习算法在测试时只需要很少的时间去运行。如果跟 k-nearest neighbors(一种机器学习算法)相比较,测试时间会随着数据量的提升而增加。不过这不适用于所有的机器学习算法,因为有些机器学习算法的测试时间也很短。
可解释性
至关重要的一点,我们把可解释性作为比较机器学习和深度学习的一个因素。
我们看个例子。假设我们适用深度学习去自动为文章评分。深度学习可以达到接近人的标准,这是相当惊人的性能表现。但是这仍然有个问题。深度学习算法不会告诉你为什么它会给出这个分数。当然,在数学的角度上,你可以找出来哪一个深度神经网络节点被激活了。但是我们不知道神经元应该是什么模型,我们也不知道这些神经单元层要共同做什么。所以无法解释结果是如何产生的。
另一方面,为了解释为什么算法这样选择,像决策树(decision trees)这样机器学习算法给出了明确的规则,所以解释决策背后的推理是很容易的。因此,决策树和线性/逻辑回归这样的算法主要用于工业上的可解释性。
机器学习和深度学习用于哪些领域?
维基百科上关于机器学习的文章概述了所有使用机器学习的领域。这些包括:
[*]计算机视觉 用于车牌识别和面部识别等的应用。
[*]信息检索 用于诸如搜索引擎的应用 - 包括文本搜索和图像搜索。
[*]市场营销 针对自动电子邮件营销和目标群体识别等的应用。
[*]医疗诊断 诸如癌症识别和异常检测等的应用。
[*]自然语言处理,如情绪分析和照片标记等的应用。
http://pic1.zhimg.com/v2-a5d9583a42c4e50a047eb0769f284f89_r.jpg?source=1940ef5c
上图恰当地总结了机器学习的应用领域,涵盖了整个机器智能的更广泛的话题。
使用机器学习/深度学习的公司的一个主要例子是Google。
http://picx.zhimg.com/v2-0be95d263c2c575a652c6bc5fb3e8ce8_r.jpg?source=1940ef5c
在上图中,你可以看到 Google 正在将机器学习应用于其各种产品。机器学习/深度学习的应用是无尽的 - 你仅需寻找正确的时机!
突击测试
为了评估你是否真的了解这个区别,我们将进行一次测验。 你可以在这个帖子中发布你的答案。
请务必涉及以下步骤,以保证是完整的对各个场景进行回答。
[*]你将如何使用机器学习解决以下问题?
[*]你如何使用深度学习解决以下问题?
[*]结论:哪种方法是更好的?
场景1
你必须建立一个用于自动驾驶车辆的软件组件。你构建的系统应该从相机中获取原始像素数据,并预测你应该引导车轮的角度是多少。
场景2
给定一个人的信用和背景信息,你的系统应该评估出此人是否应该有资格获得贷款。
场景3
你必须创建一个可以将俄语消息翻译成印地语消息的系统,以便俄语代表能够与当地的群众通信。
在此找到针对上述问题的各种数据科学家的讨论记录和观点。
未来发展趋势
本文概述了机器学习和深度学习及其差异。在本节中,我将分享我对机器学习和深度学习未来发展的观点。
[*]首先,随着业内对数据科学和机器学习使用的日益增长的趋势,对于每个想要生存下来的公司来说,重视机器学习将变得非常重要。苹果正在 iPhone X 中使用机器学习,这标志着这项技术的发展方向。
[*]深入学习让我们每天都感到惊讶,并将在不久的将来继续如此。这是因为深度学习是被证明为最先进的性能最好的技术之一。
[*]针对机器学习和深度学习的研究将是持续的。但与前几年的研究仅限于学术界不同的是,机器学习和深度学习方面的研究将在业界和学术界都有爆发式的发展。而且拥有比以往更多的资助,更有可能成为人类整体发展的主旋律。
注:本文转载自开源中国,译文出处一文读懂深度学习与机器学习的差异,英文原文Deep Learning vs. Machine Learning,Tocy、 rever4433、soaring、mskf等人参与翻译。做一只勤劳的IT干货搬运工,只为成就更好的你! 作为一个大数据从业人员,相信大家整天都在被AI、机器学习、深度学习等一些概念轰炸。现在分享一下这三者的关系区别,希望对您有所帮助。
人工智能(Artificial Intelligence)
人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。我们来分解一下这个概念。“人工智能”是“一门技术科学”,它研究与开发的对象是“理论、技术及应用系统”,研究的目的是为了“模拟、延伸和扩展人的智能”。既然如此,那么买菜用的“计算器”算是人工智能吗?严格地说是算的,因为它至少做了“模拟”人在计算方面的智能,并扩展了这个能力(比人算得更快)。我们每天编码驱动计算机去帮我们干活,这个算是人工智能吗?也算的。所以,首先不用妄自菲薄,其实大家早已是“人工智能”的从业者了。我们现在看到的貌似很高端的技术,如图像识别、NLP,其实依然没有脱离这个范围,说白了,就是“模拟人在看图方面的智能”和“模拟人在听话方面的智能”,本质上和“模拟人在计算方面的智能”没啥两样,虽然难度有高低,但目的是一样的——模拟、延伸和扩展人的智能。另外,人工智能也不是啥新概念,事实上这是50年代提出的东西了(比你们老多了),现在这么火热,顶多只能算是“诈尸”,谈不上“新生”。
随着人对计算机科学的期望越来越高,要求它解决的问题越来越复杂,摧枯拉朽地打个小怪已经远远不能满足人们的诉求了。1+1好算,1+2也不难,这些已经能解决的问题暂且按下不表。要解决的问题域越来越复杂,即使是同一个问题,其面对的场景也越来越多。咱总不能每新出来一种场景,就让码农去查找switch,然后在default前去再加一个case吧;世间的场景千千万,那得多少个case啊,杀个码农祭天也保不齐会出问题啊。那怎么办呢?于是有人提出了一个新的思路——能否不为难码农,让机器自己去学习呢(提出这个概念的人一定做过码农)?
机器学习
所以,机器学习的定义就出来了。机器学习就是用算法解析数据,不断学习,对世界中发生的事做出判断和预测的一项技术。研究人员不会亲手编写软件、确定特殊指令集、然后让程序完成特殊任务;相反,研究人员会用大量数据和算法“训练”机器,让机器学会如何执行任务。这里有三个重要的信息:1、“机器学习”是“模拟、延伸和扩展人的智能”的一条路径,所以是人工智能的一个子集;2、“机器学习”是要基于大量数据的,也就是说它的“智能”是用大量数据喂出来的,如果缺少海量数据,它也就啥也不是了;3、正是因为要处理海量数据,所以大数据技术尤为重要;“机器学习”只是大数据技术上的一个应用。常用的10大机器学习算法有:决策树、随机森林、逻辑回归、SVM、朴素贝叶斯、K最近邻算法、K均值算法、Adaboost算法、神经网络、马尔科夫。Apache有个开源项叫mahout,提供了这些经典算法的实现;但是后来spark出来了,由于在内存迭代计算方面的优势,一下子抢过了这个风头,目前spark自带的MLlib被使用得更为广泛。虽然mahout也在向spark转,但是在技术的世界里就是这样的,只有新人笑,哪闻旧人哭。
深度学习
相较而言,深度学习是一个比较新的概念,算是00后吧,严格地说是2006年提出来的。是用于建立、模拟人脑进行分析学习的神经网络,并模仿人脑的机制来解释数据的一种机器学习技术。它的基本特点,是试图模仿大脑的神经元之间传递,处理信息的模式。最显著的应用是计算机视觉和自然语言处理(NLP)领域。显然,“深度学习”是与机器学习中的“神经网络”是强相关,“神经网络”也是其主要的算法和手段;或者我们可以将“深度学习”称之为“改良版的神经网络”算法。深度学习又分为卷积神经网络(Convolutional neural networks,简称CNN)和深度置信网(Deep Belief Nets,简称DBN)。其主要的思想就是模拟人的神经元,每个神经元接受到信息,处理完后传递给与之相邻的所有神经元即可。所以看起来的处理方式有点像下图(想深入了解的同学可以自行google)。
http://picx.zhimg.com/v2-0793e7f38af449e793517ff901fd0aa1_r.jpg?source=1940ef5c
神经网络的计算量非常大,事实上在很长时间里由于基础设施技术的限制进展并不大。而GPU的出现让人看到了曙光,也造就了深度学习的蓬勃发展,“深度学习”才一下子火热起来。击败李世石的Alpha go即是深度学习的一个很好的示例。Google的TensorFlow是开源深度学习系统一个比较好的实现,支持CNN、RNN和LSTM算法,是目前在图像识别、自然语言处理方面最流行的深度神经网络模型。事实上,提出“深度学习”概念的Hinton教授加入了google,而Alpha go也是google家的。在一个新兴的行业,领军人才是多么的重要啊!
总结
人工智能是一个很老的概念,机器学习是人工智能的一个子集,深度学习又是机器学习的一个子集。机器学习与深度学习都是需要大量数据来“喂”的,是大数据技术上的一个应用,同时深度学习还需要更高的运算能力支撑,如GPU。以一张图来结尾。
http://picx.zhimg.com/v2-19f326cdb7191c0748461e0bc505508d_r.jpg?source=1940ef5c
更多技术干货请关注 华为云技术宅基地
http://pic1.zhimg.com/50/v2-a974ce8b690bac698eb5d6ecf2362626_720w.jpg?source=1940ef5c http://picx.zhimg.com/44fe603d253c2586def6d0e832b5efd6_r.jpg?source=1940ef5c
A Venn diagram showing how deep learning is a kind of representation learning, which is in turn a kind of machine learning, which is used for many but not all approaches to AI. Each section of the Venn diagram includes an example of an AI technology.
http://pica.zhimg.com/f864fea19c5c8f896f108fb02b7a7a12_r.jpg?source=1940ef5c
Flowchartsshowing how the different parts of an AI system relate to eachother withindifferent AI disciplines. Shaded boxes indicate components that are able tolearn fromdata.
内容来源为Yoshua Bengio的Deep Learning一书. http://picx.zhimg.com/58933cd8b4d8f43c43cc0e25cb0f98cd_r.jpg?source=1940ef5c
页:
[1]