人工智能、机器学习与深度学习
链接:https://www.zhihu.com/question/57770020/answer/684127682
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
人工智能、机器学习与深度学习,这三者之间的关系如下:(文末附学习书单)
图 1 人工智能、机器学习与深度学习
人工智能
人工智能诞生于 20 世纪 50 年代,当时计算机科学这一新兴领域的少数先驱开始提出疑问:计算机是否能够“思考”?我们今天仍在探索这一问题的答案。人工智能的简洁定义如下:努力将通常由人类完成的智力任务自动化。因此,人工智能是一个综合性的领域,不仅包括机器学习与深度学习,还包括更多不涉及学习的方法。例如,早期的国际象棋程序仅包含程序员精心编写的硬编码规则,并不属于机器学习。在相当长的时间内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能。这一方法被称为符号主义人工智能(symbolic AI),从 20 世纪 50 年代到 80 年代末是人工智能的主流范式。在 20 世纪 80 年代的专家系统(expert system)热潮中,这一方法的热度达到了顶峰。
虽然符号主义人工智能适合用来解决定义明确的逻辑问题,比如下国际象棋,但它难以给出明确的规则来解决更加复杂、模糊的问题,比如图像分类、语音识别和语言翻译。于是出现了一种新的方法来替代符号主义人工智能,这就是机器学习(machine learning)。
机器学习
在维多利亚时代的英格兰,埃达 • 洛夫莱斯伯爵夫人是查尔斯 • 巴贝奇的好友兼合作者,后者发明了分析机(Analytical Engine),即第一台通用的机械式计算机。虽然分析机这一想法富有远见,并且相当超前,但它在 19 世纪三四十年代被设计出来时并没有打算用作通用计算机,因为当时还没有“通用计算”这一概念。它的用途仅仅是利用机械操作将数学分析领域的某些计算自动化,因此得名“分析机”。1843 年,埃达 • 洛夫莱斯伯爵夫人对这项发明评论道:“分析机谈不上能创造什么东西。它只能完成我们命令它做的任何事情……它的职责是帮助我们去实现我们已知的事情。”
随后,人工智能先驱阿兰 • 图灵在其 1950 年发表的具有里程碑意义的论文“计算机器和智能”中,引用了上述评论并将其称为“洛夫莱斯伯爵夫人的异议”。图灵在这篇论文中介绍了图灵测试以及日后人工智能所包含的重要概念。在引述埃达 • 洛夫莱斯伯爵夫人的同时,图灵还思考了这样一个问题:通用计算机是否能够学习与创新?他得出的结论是“能”。
机器学习的概念就来自于图灵的这个问题:对于计算机而言,除了“我们命令它做的任何事情”之外,它能否自我学习执行特定任务的方法?计算机能否让我们大吃一惊?如果没有程序员精心编写的数据处理规则,计算机能否通过观察数据自动学会这些规则?
图灵的这个问题引出了一种新的编程范式。在经典的程序设计(即符号主义人工智能的范式)中,人们输入的是规则(即程序)和需要根据这些规则进行处理的数据,系统输出的是答案(见图2)。利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是规则。这些规则随后可应用于新的数据,并使计算机自主生成答案。
图2 机器学习:一种新的编程范式
机器学习系统是训练出来的,而不是明确地用程序编写出来的。将与某个任务相关的许多示例输入机器学习系统,它会在这些示例中找到统计结构,从而最终找到规则将任务自动化。举个例子,你想为度假照片添加标签,并且希望将这项任务自动化,那么你可以将许多人工打好标签的照片输入机器学习系统,系统将学会将照片与特定标签联系在一起的统计规则。
虽然机器学习在 20 世纪 90 年代才开始蓬勃发展,但它迅速成为人工智能最受欢迎且最成功的分支领域。这一发展的驱动力来自于速度更快的硬件与更大的数据集。机器学习与数理统计密切相关,但二者在几个重要方面有所不同。不同于统计学,机器学习经常用于处理复杂的大型数据集(比如包含数百万张图像的数据集,每张图像又包含数万个像素),用经典的统计分析(比如贝叶斯分析)来处理这种数据集是不切实际的。因此,机器学习(尤其是深度学习)呈现出相对较少的数学理论(可能太少了),并且是以工程为导向的。这是一门需要上手实践的学科,想法更多地是靠实践来证明,而不是靠理论推导。
从数据中学习表示
为了给出深度学习的定义并搞清楚深度学习与其他机器学习方法的区别,我们首先需要知道机器学习算法在做什么。前面说过,给定包含预期结果的示例,机器学习将会发现执行一项数据处理任务的规则。因此,我们需要以下三个要素来进行机器学习。
- 输入数据点。例如,你的任务是语音识别,那么这些数据点可能是记录人们说话的声音文件。如果你的任务是为图像添加标签,那么这些数据点可能是图像。
- 预期输出的示例。对于语音识别任务来说,这些示例可能是人们根据声音文件整理生成的文本。对于图像标记任务来说,预期输出可能是“狗”“猫”之类的标签。
- 衡量算法效果好坏的方法。这一衡量方法是为了计算算法的当前输出与预期输出的差距。衡量结果是一种反馈信号,用于调节算法的工作方式。这个调节步骤就是我们所说的学习。
机器学习模型将输入数据变换为有意义的输出,这是一个从已知的输入和输出示例中进行“学习”的过程。因此,机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出。在进一步讨论之前,我们需要先回答一个问题:什么是表示?这一概念的核心在于以一种不同的方式来查看数据(即表征数据或将数据编码)。例如,彩色图像可以编码为 RGB(红 - 绿 - 蓝)格式或 HSV(色相 - 饱和度 - 明度)格式,这是对相同数据的两种不同表示。在处理某些任务时,使用某种表示可能会很困难,但换用另一种表示就会变得很简单。举个例子,对于“选择图像中所有红色像素”这个任务,使用 RGB 格式会更简单,而对于“降低图像饱和度”这个任务,使用 HSV 格式则更简单。机器学习模型都是为输入数据寻找合适的表示——对数据进行变换,使其更适合手头的任务(比如分类任务)。
我们来具体说明这一点。考虑 x 轴、y 轴和在这个 (x, y) 坐标系中由坐标表示的一些点,如图3 所示。
图3 一些样本数据
可以看到,图中有一些白点和一些黑点。假设我们想要开发一个算法,输入一个点的坐标 (x, y),就能够判断这个点是黑色还是白色。在这个例子中:
- 输入是点的坐标;
- 预期输出是点的颜色;
- 衡量算法效果好坏的一种方法是,正确分类的点所占的百分比。
这里我们需要的是一种新的数据表示,可以明确区分白点与黑点。可用的方法有很多,这里用的是坐标变换,如图4 所示。
图4 坐标变换
在这个新的坐标系中,点的坐标可以看作数据的一种新的表示。这种表示很棒!利用这种新的表示,用一条简单的规则就可以描述黑 / 白分类问题:“x>0 的是黑点”或“x<0 的是白点”。这种新的表示基本上解决了该分类问题。
在这个例子中,我们人为定义了坐标变换。但是,如果我们尝试系统性地搜索各种可能的坐标变换,并用正确分类的点所占百分比作为反馈信号,那么我们做的就是机器学习。机器学习中的学习指的是,寻找更好数据表示的自动搜索过程。
所有机器学习算法都包括自动寻找这样一种变换:这种变换可以根据任务将数据转化为更加有用的表示。这些操作可能是前面提到的坐标变换,也可能是线性投影(可能会破坏信息)、平移、非线性操作(比如“选择所有 x>0 的点”),等等。机器学习算法在寻找这些变换时通常没有什么创造性,而仅仅是遍历一组预先定义好的操作,这组操作叫作假设空间(hypothesis space)。
这就是机器学习的技术定义:在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。这个简单的想法可以解决相当多的智能任务,从语音识别到自动驾驶都能解决。
现在你理解了学习的含义,下面我们来看一下深度学习的特殊之处。
深度学习之“深度”
深度学习是机器学习的一个分支领域:它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。“深度学习”中的“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。数据模型中包含多少层,这被称为模型的深度(depth)。这一领域的其他名称包括分层表示学习(layered representations learning)和层级表示学习(hierarchical representations learning)。现代深度学习通常包含数十个甚至上百个连续的表示层,这些表示层全都是从训练数据中自动学习的。与此相反,其他机器学习方法的重点往往是仅仅学习一两层的数据表示,因此有时也被称为浅层学习(shallow learning)。
在深度学习中,这些分层表示几乎总是通过叫作神经网络(neural network)的模型来学习得到的。神经网络的结构是逐层堆叠。神经网络这一术语来自于神经生物学,然而,虽然深度学习的一些核心概念是从人们对大脑的理解中汲取部分灵感而形成的,但深度学习模型不是大脑模型。没有证据表明大脑的学习机制与现代深度学习模型所使用的相同。你可能会读到一些流行科学的文章,宣称深度学习的工作原理与大脑相似或者是根据大脑的工作原理进行建模的,但事实并非如此。对于这一领域的新人来说,如果认为深度学习与神经生物学存在任何关系,那将使人困惑,只会起到反作用。你无须那种“就像我们的头脑一样”的神秘包装,最好也忘掉读过的深度学习与生物学之间的假想联系。就我们的目的而言,深度学习是从数据中学习表示的一种数学框架。
深度学习算法学到的表示是什么样的?我们来看一个多层网络(见图 5)如何对数字图像进行变换,以便识别图像中所包含的数字。
图 5 用于数字分类的深度神经网络
如图 6 所示,这个网络将数字图像转换成与原始图像差别越来越大的表示,而其中关于最终结果的信息却越来越丰富。你可以将深度网络看作多级信息蒸馏操作:信息穿过连续的过滤器,其纯度越来越高(即对任务的帮助越来越大)。
图 6 数字图像分类模型学到的深度表示
这就是深度学习的技术定义:学习数据表示的多级方法。这个想法很简单,但事实证明,非常简单的机制如果具有足够大的规模,将会产生魔法般的效果。
用三张图理解深度学习的工作原理
现在你已经知道,机器学习是将输入(比如图像)映射到目标(比如标签“猫”),这一过程是通过观察许多输入和目标的示例来完成的。你还知道,深度神经网络通过一系列简单的数据变换(层)来实现这种输入到目标的映射,而这些数据变换都是通过观察示例学习到的。下面来具体看一下这种学习过程是如何发生的。
神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一串数字。用术语来说,每层实现的变换由其权重来参数化(parameterize,见图 7)。权重有时也被称为该层的参数(parameter)。在这种语境下,学习的意思是为神经网络的所有层找到一组权重值,使得该网络能够将每个示例输入与其目标正确地一一对应。但重点来了:一个深度神经网络可能包含数千万个参数。找到所有参数的正确取值可能是一项非常艰巨的任务,特别是考虑到修改某个参数值将会影响其他所有参数的行为。
图 7 神经网络是由其权重来参数化
想要控制一件事物,首先需要能够观察它。想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。损失函数的输入是网络预测值与真实目标值(即你希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏(见图 8)。
图 8 损失函数用来衡量网络输出结果的质量
深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值(见图 9)。这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法,这是深度学习的核心算法。
图 9 将损失值作为反馈信号来调节权重
一开始对神经网络的权重随机赋值,因此网络只是实现了一系列随机变换。其输出结果自然也和理想值相去甚远,相应地,损失值也很高。但随着网络处理的示例越来越多,权重值也在向正确的方向逐步微调,损失值也逐渐降低。这就是训练循环(training loop),将这种循环重复足够多的次数(通常对数千个示例进行数十次迭代),得到的权重值可以使损失函数最小。具有最小损失的网络,其输出值与目标值尽可能地接近,这就是训练好的网络。再次强调,这是一个简单的机制,一旦具有足够大的规模,将会产生魔法般的效果。
深度学习已经取得的进展
虽然深度学习是机器学习一个相当有年头的分支领域,但在 21 世纪前十年才崛起。在随后的几年里,它在实践中取得了革命性进展,在视觉和听觉等感知问题上取得了令人瞩目的成果,而这些问题所涉及的技术,在人类看来是非常自然、非常直观的,但长期以来却一直是机器难以解决的。
特别要强调的是,深度学习已经取得了以下突破,它们都是机器学习历史上非常困难的领域:
- 接近人类水平的图像分类
- 接近人类水平的语音识别
- 接近人类水平的手写文字转录
- 更好的机器翻译
- 更好的文本到语音转换
- 数字助理,比如谷歌即时(Google Now)和亚马逊 Alexa
- 接近人类水平的自动驾驶
- 更好的广告定向投放,Google、百度、必应都在使用
- 更好的网络搜索结果
- 能够回答用自然语言提出的问题
- 在围棋上战胜人类
我们仍然在探索深度学习能力的边界。我们已经开始将其应用于机器感知和自然语言理解之外的各种问题,比如形式推理。如果能够成功的话,这可能预示着深度学习将能够协助人类进行科学研究、软件开发等活动。
————
最后,如果想浅显的了解一下人工智能技术,可以看《人工智能的冲击》,一本人工智能技术、产业的通俗读本。也适用于人工智能产业相关人员作为背景知识、资料阅读参考。
书中以AI技术对个人、社会的冲击为焦点,结合欧美日人工智能产业的调查研究,解读了AI时代的新秩序、新格局。书中既有对技术要义原理的浅白讲解,如机器学习、深度学习;也有对就业、产业格局变革的研究和分析,如自动驾驶、智能机器人、医疗、养老、艺术等;还涉及技术时代下,人类存在价值、社会伦理伤痕的讨论;以及人工智能冲击背景下,对日本全产业衰退危机的深度思考。
如果想找一个机器学习的实践项目,可以看看这本《利用机器学习开发算法交易系统》,它选用难以预测的股市数据,利用数学理论,创建预测模型、处理数据、训练预测股价、解析训练结果、揭示改进方法等,一整个机器学习的全过程。通过源代码和函数讲解,介绍了机器学习的基本概念,对进一步了解机器学习绘制“理论路线图”很有帮助。
如果对深度学习比较感兴趣,可以看看这本《Python深度学习》,它由Google人工智能研究员、Keras之父 François Chollet著作,内容立足于人工智能的可达性和大众化,我们无须具备机器学习相关背景知识即可展开阅读。上面的回答就是选自本书中的内容。在学习完本书后,我们将具备搭建自己的深度学习环境、建立图像识别模型、生成图像和文字等能力。
浙公网安备 33010602011771号