基础简介
人们在谈论AI时,常常会混淆人工智能、机器学习和深度学习的关系。
其实,它们之间的关系很简单,一张图就说明了:
人工智能是非常宽泛的,一般来说将通常由人类完成的智力任务自动化,就可以称为人工智能。
因此,人工智能是一个综合性的领域,不仅包括机器学习和深度学习,还包括许多不需要学习的方法,如:
- 一个自动化完成特定的任务的脚本程序,如定时任务
- 早期的国际象棋程序,由精心编写的硬编码规则完成,不涉及机器学习
只要足够用心,硬编码理论上可以解决许多明确定义的逻辑问题。但是它难以处理更复杂、模糊的问题,如图像分类、语音识别和翻译等。
于是机器学习应运而生。
经典的程序设计方式是输入规则和需要根据这些规则进行处理的数据,输出结果。
而机器学习输入的是数据和从这些数据中预期得到的答案,输出的是规则。然后在新的数据上应用这些规则,并自主生成结果。
从下图可以分析出两者的差异:
所以说,机器学习是一种不同于经典程序设计的一种新的编程范式。
机器学习系统是训练出来的,不是明确地用程序编写出来的。
将与某个特定任务相关的许多示例输入机器学习系统,它会在这些示例中找出统计结构,从而最终找到规则并将任务自动化。
总的来说,机器学习具有以下特点:
- 机器学习与数理统计关系密切
- 机器学习常用于处理复杂的大型数据集
- 机器学习真正需要使用的数学理论较少,且以工程为导向
- 机器学习以更快的硬件和更大的数据集为驱动
- 机器学习是需要上手实践的学科,新的想法更多地是靠实践来证明,而非理论推导
机器学习模型将输入数据变为有意义的输出,这是一个从已知的输入和输出中进行学习的过程。机器学习的三要素:
- 输入数据点。如果任务是为图像加标签,那么数据点就是图像。
- 预期输出的示例。如果任务是图像标记,那么预期输出就是“猫,狗”之类的标签。
- 衡量算法好坏的方法。计算算法的当前输出与预期输出的差距,衡量结果是一种反馈信号,用于调节算法的工作方式,其中的调节步骤就是学习。
因此机器学习和深度学习的核心在于有意义地变换数据,即在于学习输入数据的有用“表示”——这种表示可以让数据更接近预期输出。
机器学习的技术定义就是在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。
这个简单的想法可以应用于很多智能任务,包括但不限于语音识别,智能驾驶等。
深度学习是机器学习的一个分支,它是从数据中学习表示的一种新方法,强调从连续的层中进行学习,这些层对应于越来越有意义的表示。
深度学习中的“深度”,指的就是一系列连续的表示层。数据模型中的层数,就是模型的深度。
现代深度学习通常包含数十个甚至上百个层,这些表示层是从训练数据中通过神经网络的模型自动学习的。
说到这里,有一点需要澄清一下,虽然深度学习的一些核心概念是从人们对大脑的理解中汲取部分灵感而形成的,但深度学习模型不是大脑模型。
可以这么说,深度学习与神经生物学没有任何关系,就我们的目的而言,深度学习是从数据中学习表示的一种数学框架。
深度学习的技术定义就是学习数据表示的多层级方法。这个想法很简单,但事实证明,非常简单的机制如果具有足够大的规模,将会产生魔法般的效果。
工作原理
机器学习的基本过程:
- 机器学习将输入(如图像)映射到目标(如标签:“狗”)
- 这是通过观察大量输入和目标的示例完成
- 深度神经网络通过一系列简单的数据变换(层)来实现这种输入到目标的映射
- 数据变换是通过观察示例学习到的
神经网络中每层对输入数据所做的具体操作保存在该层的权重中,本质上是一串数字。即每层实现的变换由其权重来参数化。
权重也称为该层的参数。学习的意思是为神经网络的所有层找到一组权重值,使得该网络能够将每个输入与其目标正确地一一对应。
可以用下图表示这个过程:
要想控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。
这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。
损失函数的输入是网络预测值与真实目标值(即希望网络输出的结果),然后计算一个距离值,衡量该网络在这个示例上的效果好坏。
这个过程可以用下图表示:
深度学习的基本技巧就是,利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值。
这种调节由优化器来完成,它实现了反向传播算法,这是深度学习的核心算法。
如下图:
神经网络的权重值可能会非常多,一开始是随机对它们赋值,此时损失值会很高,但随着网络处理的示例越来越多,权重值也会向着正确的方向微调,损失值就会降低。
这个过程这是训练循环,把这个循环重复足够多的次数,得到的权重值会使损失函数达到最小。
具有最小损失值的网络,输出值会与目标值尽可能接近,这就是训练好的网络。
重申一次,这是一个很简单的机制,一旦具有足够大的规模,将会产生魔法般的效果。
应用
深度学习目前已经取得了许多的突破:
- 接近人类水平的图像分类
- 接近人类水平的语音识别
- 接近人类水平的手写文字转录
- 更好的机器翻译
- 更好的文本到语音的转换
- 接近人类水平的智能驾驶
- 更好的广告定向投放
- 更好的网络搜索结果
- 能够回答用自然语言提出的问题
- 在围棋上战胜人类
对于深度学习在形式推理等方面的研究也在进行中。如果这行得通,那么,深度学习将能够协助人类进行科学研究和软件开发等。
更多内容
深度学习是当前蓬勃发展的一个机器学习领域,另一个方向可能是梯度提升机。
具体而言,梯度提升机用于处理结构化数据问题,而深度学习用于处理图像分类等感知问题。
XGBoost库用于处理前一种问题,而后一种问题主要使用Keras库。
深度学习的三个驱动力:运算能力、数据和算法,本文并未一一提及,读者可自行查阅。
参考资料
《Python深度学习》