人工智能(artificial intelligence,AI)近来一直受媒体大肆炒作。机器学习、深度学习和人工智能都出现在不计其数的文章中。大家如何能够快速理解机器学习(ML)与深度学习(DL)的核心概念,立刻入门,作者通过本笔记与大家一同探讨。
1. 人工智能、机器学习、深度学习的三者关系
人工智能诞生于20世纪50年代,当时计算机科学这个新兴领域的少数先驱者开始提出疑问:能否让计算机“思考”?今天,我们仍在探索这一问题的答案。虽然许多基本理念在数年前甚至数十年前就已经开始酝酿,但“人工智能”最终在1956年明确成为一个研究领域。
当时,达特茅斯学院年轻的数学系助理教授John McCarthy根据以下提案组织了一场夏季研讨会。该研究(笔者政安晨注:现在我们知道这个研究是人工智能方向的研究)是基于以下猜想进行的:学习的各个方面或其他任何智能特征原则上都可以被精确描述,从而可以制造一台机器来模拟。我们将试图找到一种方法,让机器能够使用语言、形成抽象思维和概念、解决人类目前还不能解决的各种问题,并自我提升。
人工智能可以被描述为试图将通常由人类完成的智力任务自动化。因此,人工智能是一个综合领域,不仅包括机器学习和深度学习,还包括更多不涉及学习的方法。在相当长的时间内,大多数专家相信,只要程序员手动编写足够多的明确规则来处理存储在显式数据库中的知识,就可以实现与人类水平相当的人工智能。
这一方法被称为符号主义人工智能(symbolic AI),从20世纪50年代到80年代末,它是人工智能的主流范式。在20世纪80年代的专家系统(expert system)热潮中,这一方法的热度达到顶峰。
虽然符号主义人工智能适合用来解决定义明确的逻辑问题,但它难以给出明确规则来解决更复杂、更模糊的问题,比如图像分类、语音识别或自然语言翻译。于是,一种替代符号主义的新方法出现了,这就是机器学习(machine learning)。
人工智能、机器学习和深度学习这三者之间有什么关系呢?
简单地说,人工智能是一个总体概念,它指的是让机器具有人类的智能,能够理解、思考和行动。
机器学习是实现人工智能的一种方法,它指的是让机器从数据中自动学习和改进。
深度学习是机器学习的一个分支,它指的是使用多层神经网络来进行特征提取和转换,从而实现更高级的人工智能任务。
在这里要了解机器学习,需要先对比一下传统的计算机常用方法:由人类程序员编写规则(计算机程序),计算机遵循这些规则将输入数据转换为适当的答案,写下一步步的指令来让处理器执行。
而机器学习把这个过程反了过来:机器读取输入数据和相应的答案,然后找出应有的规则。机器学习系统是训练出来的,而不是明确地用程序编写出来的。将与某个任务相关的许多示例输入机器学习系统,它会在这些示例中找到统计结构,从而最终找到将任务自动化的规则。
举个例子,如果你想让计算机认识苹果、香蕉、梨等水果,并希望将这项任务自动化,那么你可以将许多人为写好标签的水果照片输入机器学习系统,系统将学会的是:看到一个水果就与特定标签联系在一起的这个统计规则,这个统计规则执行的正确率越高,计算机对水果的识别度越好,这个不断训练而提高正确率的过程就是机器学习。
看上图,经典的程序设计是:输入规则和数据,经过计算机处理,最终获得答案;
而机器学习则是,输入数据和已知答案,经过运行机器学习算法模型的计算机处理后,产生规则(后续使用时,再通过相应机制利用这些规则,预测出新的答案)。
机器学习虽然在20世纪90年代才开始蓬勃发展,经过这几十年,从理论到实践逐步成熟,并迅速成为人工智能最受欢迎且最成功的分支领域。这一发展趋势的驱动力来自于速度更快的硬件与更大的数据集。机器学习与数理统计相关,但二者在几个重要方面有所不同。
机器学习经常要处理复杂的大型数据集(比如包含数百万张图片的数据集,每张图片又包含数万像素),用经典的统计分析(比如贝叶斯分析)来处理这种数据集是不切实际的。因此,机器学习(尤其是深度学习)呈现出相对较少的数学理论,从根本上来说,应该是一门工程学科,而且是一门非常注重实践反馈的工程学科,由经验发现所驱动,并深深依赖着软硬件的发展。
2.机器学习算法究竟在做什么呢?
对于一项数据处理任务,给定预期输出的示例,机器学习系统可以发现并执行任务的规则。因此,我们需要以下三个要素来进行机器学习:
(1)输入数据。
如果任务是语音识别,那么输入数据可能是记录人们说话的声音文件。如果任务是为图像添加标签,那么输入数据可能是图片。
(2)预期输出的“答案”。
对于语音识别任务来说,这些“答案”(示例)可能是人们根据声音文件整理生成的文本。对于图像标记任务来说,预期输出可能是“狗”“猫”之类的标签。
(3)评价算法效果的方法。
这一评价(衡量)方法很有必要,其目的是计算算法的当前输出与预期输出之间的差距。衡量结果是一种反馈信号,用于调整算法的工作方式。这个调整步骤就是我们所说的学习。机器学习模型将输入数据变换为有意义的输出,这是一个从已知的输入输出示例中进行“学习”的过程。因此,机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出。
那么,什么是表示?
这一概念的核心在于以一种不同的方式来查看数据(表征数据或将数据编码)。举例来说,彩色图像可以编码为RGB(红−绿−蓝)格式或HSV(色相−饱和度−明度)格式,这些是对同一数据的两种表示。在处理某些任务时,使用某种表示可能会很困难,但换用另一种表示就会变得很简单。举个例子,对于“选择图像中所有红色像素”这项任务,使用RGB格式会更简单,而对于“降低图像饱和度”这项任务,使用HSV格式则更简单。机器学习模型旨在为输入数据寻找合适的表示(对数据进行变换),使其更适合手头的任务。
机器学习中的学习指的是,寻找某种数据变换的自动搜索过程。在反馈信号的指引下,这种变换可以生成有用的数据表示,这种表示则可以用更简单的规则来解决手头的任务。比如刚才说到的,对同一张彩色图像,RGB格式是一种表示,而HSV格式则是另一种表示。
我们不断让系统尝试数据表示(可能是系统自动生成的)与基于这些表示的规则之间的不同组合(刚才彩色图像的表示规则是我们人类发明出来的,未来可能更多的规则是我们人类和算法一起尝试),利用正确分类的结果(“答案”)所占百分比作为反馈信号,在某个开发数据集上找到那些好的组合,我们做的这个过程,就是机器学习。
机器学习算法在寻找这些组合变换时通常没有创造性,仅仅是遍历一组预先定义的操作,这组操作叫作假设空间(hypothesis space)。例如,所有可能的坐标变换组成的空间就是上述针对图像表示示例的假设空间。
总之,机器学习就是指在预先定义的可能性空间中,利用反馈信号的指引,在输入数据中寻找有用的表示和规则。这个简单的想法可以解决相当多的智力任务,从语音识别、自动驾驶到功能机器人都能解决。
因为机器学习的概念如此重要,让我们再换一种方法总结深度学习:
首先,机器学习的目标是通过计算机算法和数据模型,使机器能够从经验中学习和自动改进,并完成特定的任务。
A. 学习:机器学习的核心是让机器能够通过观察和分析数据,从中提取模式和规律,并基于这些模式和规律做出预测或做出决策。
B. 数据:机器学习的基础是数据。机器学习算法通过对大量的数据进行处理和分析,从中提取特征,训练和优化模型,并使用模型进行预测或决策。
C. 模型:模型是机器学习算法的核心部分,它是一个数学和统计模型,用于表示和描述数据之间的关系。模型可以从数据中学习,并用于预测新的数据或做出决策。
D. 训练:机器学习的过程包括训练和测试。在训练阶段,机器学习算法使用已知的数据示例(上段提到的表示)来调整模型的参数,以使模型能够更好地拟合数据集。
E. 预测:在训练完成后,机器学习模型可以用于预测未知数据的结果。模型通过将已学习的知识应用于新数据,产生预测结果。
F.无监督学习:无监督学习是一种机器学习的方法,其中机器从数据中自动发现模式和结构,而没有预先定义的标签或目标。
G.监督学习:监督学习是一种机器学习的方法,其中机器从标记的数据示例中学习,将输入和输出之间的关系建模,并用于预测新的输入数据的输出。
H.强化学习:强化学习是一种机器学习的方法,其中机器通过与环境交互,在不断的试错和奖励反馈中学习最优策略,从而达到某个预定目标。
机器学习就是这样利用算法和模型从数据中学习和自动改进的方法,以实现预测、决策等任务。
3. 深度学习的“深度”含义
深度学习是机器学习的一个相当重要的分支领域:
它是从数据中学习表示的一种新方法,强调从连续的层中学习,这些层对应于越来越有意义的表示。深度学习之“深度”并不是说这种方法能够获取更深层次的理解,而是指一系列连续的表示层。数据模型所包含的层数被称为该模型的深度(depth)。这一领域的其他名称还有分层表示学习(layered representations learning)和层级表示学习(hierarchical representations learning)。
现代深度学习模型通常包含数十个甚至上百个连续的表示层,它们都是从训练数据中自动学习而来的。与之相对,其他机器学习方法的重点通常是仅学习一两层的数据表示(例如获取像素直方图,然后应用分类规则),因此有时也被称为浅层学习(shallow learning)。
在深度学习中,这些分层表示是通过叫作神经网络(neural network)的模型学习得到的。神经网络的结构是逐层堆叠。“神经网络”这一术语来自于神经生物学,然而,虽然深度学习的一些核心概念是从人们对大脑(特别是视觉皮层)的理解中汲取部分灵感而形成的,但深度学习模型并不是大脑模型。没有证据表明大脑的学习机制与现代深度学习模型的学习机制相同。
有些文章宣称深度学习的工作原理与大脑相似或者是在模拟大脑,但事实并非如此。对于这一领域的新人来说,如果认为深度学习与神经生物学存在任何关系,那将使人困惑,只会起到反作用。你无须那种“就像我们的头脑一样”的神秘包装,最好也忘掉读过的深度学习与生物学之间的假想联系。就我们的目的而言,深度学习是从数据中学习表示的一种数学框架。
深度学习算法学到的数据表示是什么样的?现在看一个深度神经网络如何对数字图像进行变换,以便识别图像中的数字。
神经网络将数字图像变换为与原始图像差别越来越大的表示,而其中关于最终结果的信息越来越丰富。你可以将深度神经网络看作多级信息蒸馏(information distillation)过程:信息穿过连续的过滤器,其纯度越来越高(对任务的帮助越来越大)。
这样,我们看到深度学习的技术就是一种多层的学习数据表示的方法。这个想法很简单,但事实证明,如果具有足够大的规模,那么非常简单的机制将产生魔法般的效果。
但是,我们要注意到,当前行业中所使用的大部分机器学习算法不是深度学习算法。深度学习不一定总是解决问题的正确工具,因为可能针对具体问题有时没有足够的数据,深度学习可能不适用,而其他算法可以更好地解决问题。如果第一次接触的机器学习就是深度学习,那么你可能会发现手中只有一把这个深度学习的“锤子”,而所有机器学习问题看起来都像是“钉子”。为了避免陷入这个误区,唯一的方法就是熟悉其他机器学习方法,并在适当的时候进行实践。
深度学习发展得如此迅速,主要原因在于它在很多问题上表现出更好的性能,但这并不是唯一的原因。深度学习还让解决问题变得更加简单,因为它将特征工程完全自动化,而这曾经是机器学习工作流程中最关键的一步。
先前的机器学习技术(浅层学习)仅涉及将输入数据变换到一两个连续的表示空间,通常使用简单的变换,比如高维非线性投影(SVM)或决策树。但这些技术通常无法得到复杂问题所需要的精确表示。因此,人们不得不竭尽所能让初始输入数据更适合于用这些方法处理,不得不手动为数据设计良好的表示层。这一步叫作特征工程(feature engineering)。
与此相对,深度学习将这一步完全自动化:利用深度学习,可以一次性学习所有特征,而无须自己手动设计。这极大地简化了机器学习工作流程,通常用一个简单、端到端的深度学习模型取代复杂的多级流程。
深度学习从数据中进行学习时有两个基本特征:
第一,通过逐层渐进的方式形成越来越复杂的表示;
第二,对中间这些渐进的表示共同进行学习,每一层的修改都需要同时考虑上下两层。这两个特征叠加在一起,使得深度学习比先前的机器学习方法更成功。
深度学习有几个重要的性质,可以证明它确实是人工智能的革命。很多年后,我们可能不再使用神经网络,但我们那时所使用的工具都会直接继承自现代深度学习及其核心概念,因为这些重要的性质可能都会含有:简单、可扩展、可复用的这三类特征。
总之,深度学习的核心是深层神经网络,其包含多个神经网络层,每一层通过非线性变换将输入映射到更抽象的表示层。深层神经网络通过反向传播算法进行训练,不断调整网络参数以最小化预测误差。
深度学习的优势在于它能够自动学习特征表示,而不需要人工提取特征。这使得深度学习在处理大规模数据时表现得更好,因为它可以从数据中学习到更复杂、更抽象的特征。此外,深度学习还具有较强的泛化能力,即在训练数据之外的新数据上也能够取得良好的推断效果。
深度学习的挑战在于。首先,深度学习需要大量标注数据进行训练,而这些数据可能很难获得。其次,深度学习模型的训练时间较长,需要在强大的计算资源上运行。此外,深度学习模型的结果解释性较差,往往被视为"黑箱"模型。
最后,深度学习是人工智能领域中一种强大的机器学习方法,它在处理复杂任务和大规模数据上有着广泛的应用。随着算法的不断改进和计算资源的提升,深度学习有望进一步推动人工智能的发展。