seedcup 2019-07-01
机器学习和深度学习现在风靡一时!好像是在一瞬间,每个人都在谈论着它们 - 无论人们是否理解两者中间的差异!现在人们无论是否关注数据科学 - 都会听到过这两个术语。
现在展示一下深度学习和机器学习所获得的关注度,以下是这些关键字的Google趋势:
如果你想了解机器学习和深度学习之间的区别,请继续阅读这篇以简单的外行语言进行详细比较机器学习和深度学习的文章。我将会详细的解释这些术语。然后比较它们并解释我们可以在什么地方会用到它们。
让我们从基础的知识开始开始说起 - 什么是机器学习和什么是深度学习。如果你已经知道这一点,那可以跳过这一部分,直接去看第二部分,两种学习之间的比较。
Tom Mitchell广泛引用的机器学习定义最好地解释了机器学习。这就是它所说的:
这听起来很令人费解或令人困惑对吧?那让我们用简单的例子来分析一下。
示例1 - 机器学习 - 根据高度预测权重
假设现在需要创建一个系统,该系统根据人的身高来显示预期的体重。可能有几个原因会让人感兴趣对这个系统感兴趣。我们可以使用它来过滤掉任何可能的欺诈或数据获取的错误。首先要做的第一件事就是收集数据。假设我们现在的数据是这样子的:
图表上的每个点代表一个数据点。首先,我们可以画一条简单的线来预测基于身高的体重。举一个简单的例子:
这样可以帮助我们做出预测。虽然这条预测线做得不错,但我们需要了解它的表现。在这种情况下,我们可以说我们希望减少预测值和实际值之间的差异。这就是衡量绩效的方法。
此外,我们收集的数据点越多(经验),我们的模型就越好。我们还可以通过添加更多变量(例如性别)并为它们创建不同的预测线来改进我们的模型。
示例2 - 风暴预测系统
让我们举一个稍微复杂一点的例子。假设现在需要构建一个风暴预测系统。通过过去发生的所有风暴的数据,以及这些风暴发生前三个月的天气状况。
考虑到这些,如果我们要手动建立一个风暴预测系统,我们需要做什么?
我们首先必须检查所有的数据,并找到这些数据中的模式。我们的任务是寻找导致风暴的条件。
我们可以模拟这样的条件,如果温度大于40摄氏度,湿度在80到100之间等等。然后手动将这些'条件'输入到我们的系统。
或者,我们可以让我们的系统在数据中了解到这些特征的适当值。
现在要找到这些值,需要浏览所有之前的数据,并尝试预测是否会有风暴。根据系统设置的特征值,我们评估系统的性能,就是系统正确预测风暴发生的次数。我们可以对上述步骤进一步多次迭代,将性能作为反馈给我们的系统。
让我们采用我们的正式定义来尝试定义我们的风暴预测系统:我们的任务“T”是找出引发风暴的大气条件。性能“P”是在提供给系统的所有条件中,正确预测风暴的次数。经验'E'是我们系统的重复模拟。
深度学习的概念并不新鲜。它已经存在好几年了。但是现在随着不断的炒作,深度学习越来越受到关注。正如我们在机器学习中所做的那样,我们先研究深度学习的正式定义,然后通过例子对深度学习分解认识。
这些概念同样会让人困惑不已。现在让我们用简单的例子来认识它。
示例1 - 形状检测
让我从一个简单的例子开始,它解释了在概念层面上事情是如何发生的。让我们试着理解如何识别其他形状的正方形。
我们眼睛做的第一件事就是检查是否有4条线与一个图形相关联(简单概念)。如果我们找到4条线,我们进一步检查它们是否连接,闭合,垂直以及它们是否相等(概念的嵌套层次结构)。
因此,我们采取了一项复杂的任务(确定一个正方形)并将其分解为简单的、不那么抽象的东西。深度学习在很大程度上就是这么做的
示例2 - 猫还是狗
让我们举一个动物识别器的例子,我们的系统必须识别给的图片是猫还是狗。
如果我们将此作为一个典型的机器学习问题的话,我们必须定义一些特征,诸如动物是否有胡须,是否有耳朵如果有耳朵,那么耳朵是尖的还是稍微圆一点的。简单点说,我们要定义面部特征,让系统识别哪些特征在对特定动物进行分类时比较重要。
现在,深度学习就比机器学习领先一步。深度学习会自动找出对分类很重要的特征,在机器学习中我们必须手动提供这些特征。深度学习的工作原理如下:
深度学习的工作原理如下:
既然现在你已经了解了机器学习和深度学习的基本概念,那我们接下来要用一些重要的观点来比较一下这两种技术。
深度学习与传统机器学习之间最重要的区别会随着数据规模的增大而表现出来。当数据很小时,深度学习算法表现不佳。这是因为深度学习算法需要大量数据才能完美理解它。另一方面,传统的机器学习算法及其手工制作的规则在这种情况下占据优势。下图总结了这一事实。
深度学习算法在很大程度上依赖于高端机器,这与传统的机器学习算法相反,后者可以在低端机器上运行。这是因为深度学习算法的要求包括GPU,因为GPU是其工作中不可或缺的组成部分。深度学习算法本质上是做大量的矩阵乘法运算,而使用GPU可以有效的优化这些操作,而这就是使用GPU的目的。
特征工程是将领域知识放入特征提取器的创建过程,用来降低数据的复杂性并使特征对于学习算法更加可见。就时间和专业知识而言,这个过程是困难而又昂贵的。
在机器学习中,大多数应用的特征需要由专家识别,然后根据领域和数据类型进行手动编码。
例如,特征可以是像素值,形状,纹理,位置和方向。大多数机器学习算法的性能取决于特征识别和特征提取的准确程度。
深度学习算法尝试从数据中学习高级特征。这是深度学习一个非常独特的部分,也是超越传统机器学习的重要部分。因此,深度学习减少了为每个问题开发新的特征提取器的任务。就像,卷积神经网络将尝试先学习底层特征,例如早期图层中的边缘和线条,然后是人脸的部分面部,最后是高级的面部识别。
当使用传统的机器学习算法解决问题时,通常建议将问题分解为不同的部分,分别解开这些问题,然后将它们组合起来得到结果。相反,深度学习主张从头到尾的解决问题。
我们举一个例子来理解这一点。
假设现在有一个多个对象检测的任务。任务是确定对象是什么以及它在图像中的位置。
在典型的机器学习方法中,可以将问题分为两个步骤:对象检测和对象识别。首先,您将使用像grabcut这样的边界框检测算法来浏览图像并查找所有可能的对象。然后,在所有已识别的对象中,您将使用对象识别算法(如带有HOG的SVM)来识别相关对象。
相反,在深度学习方法中,只需要从头到尾的完成这个过程。例如,在YOLO net(这是一种深度学习算法)中,传入这张图像,它将给出对象存在的位置以及对象的名称。
通常,深度学习算法需要很长时间来训练。这是因为深度学习算法中有很多的参数,所以训练它们需要更长的时间。最先进的深度学习算法ResNet需要大约两周时间才能完全从0开始的训练。相比之下,机器学习的训练时间要短得多,从几秒钟到几小时不等。
测试时间完全颠倒了。在测试时,深度学习算法运行的时间要少得多。然而,如果把它与k近邻(一种机器学习算法)进行比较,则测试时间会随着数据的增加而增加。虽然这不适用于所有机器学习算法,因为有些算法的测试时间也会很短。
最后一点但并非不重要的是,我们将可解释性作为比较机器学习和深度学习的一个因素。这个因素是深度学习在用于行业之前仍被反复思考的主要原因。
我们来举个例子吧。假设我们使用深度学习自动为论文打评分。它在打分方面的表现的非常出色,接近人类的表现。但有一个问题。它没有透露出为什么它给出了这个分数。事实上,你可以通过数学方法找出深层神经网络的哪些节点被激活,但我们不知道这些神经元是怎么建模的,以及这些神经元做了什么。所以我们无法解释结果。
另一方面,像决策树这样的机器学习算法为我们提供了清晰的规则,解释了为什么要选择这个内容,因此特别容易理解其背后的原理。因此,像决策树和线性/逻辑回归等算法主要用于行业中就是因为其结果的可解释性。
维基文章概述了应用机器学习的所有领域。这些包括:
上面给出的图像恰当地总结了机器学习的应用领域。虽然它涵盖了更广泛的机器智能主题。
使用机器学习/深度学习的公司的一个主要例子是Google。
在上图中,您可以看到Google如何在其各种产品中应用机器学习。机器学习/深度学习的应用是无止境的,你只需要看到合适的机会!
上面的文章讲述了机器学习和深度学习以及它们之间的区别。在这部分中,我将分享一下我认为的机器学习和深度学习未来发展的观点。