机器学习和深度学习有区别吗?了解后,区别还是蛮大的!
- 什么是机器学习?
“ 计算机程序可以在给定某种类别的任务 T 和性能度量 P 下学习经验 E ,如果其在任务 T 中的性能恰好可以用 P 度量,则随着经验 E 而提高。”
是不是读起来很绕口呢?让我们用简单的例子来分解下这个描述。
示例 1:机器学习和根据人的身高估算体重
首先你需要收集一些数据,让我们来看看你的数据是什么样子的:
这个so easy,我也不想多解释了。我们高中都做过这样的题目,给你一堆点,你做出一条直线尽可能去拟合样本点,那这个直线就是你“学习”出来的,然后就可以用这个直线去预测未知点了。
示例2:飓风预测系统
首先我们的任务是清洗所有的数据找到数据里面的模式进而查找产生飓风的条件。
我们既可以将模型条件数据(例如气温高于40度,湿度在80-100等)输入到我们的系统里面生成输出;也可以让我们的系统自己通过这些条件数据产生合适的输出。
我们可以把所有以前的数据输入到系统里面来预测未来是否会有飓风。基于我们系统条件的取值,评估系统的性能(系统正确预测飓风的次数)。我们可以将系统预测结果作为反馈继续多次迭代以上步骤。
让我们根据前边的解释来定义我们的预测系统:我们的任务是确定可能产生飓风的气象条件。性能P是在系统所有给定的条件下有多少次正确预测飓风。经验E是我们的系统的迭代次数。
这里注意了!“温度”、“湿度”等等指标,就是机器学习中的“特征”,而这些特征都是人工设置好的!就是说,我们在做这样一个预测系统的时候,首先由专家通过分析哪些“特征”是重要的,然后机器就通过分析历史数据中的这些特征的数据,来找到相应的模式,也就是怎样的特征的组合会导致怎样的结果。
- 什么是深度学习?
“深度学习是一种特殊的机器学习,通过学习将世界使用嵌套的概念层次来表示并实现巨大的功能和灵活性,其中每个概念都定义为与简单概念相关联,而更为抽象的表示则以较不抽象的方式来计算。”
例子: 识别狗和猫
如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。
而现在,深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征!而传统机器学习则需要我们人工地给出特征!
我觉得这是两者最重要的区别。
对比机器学习和深度学习
-
随着数据量的增加,二者的表现有很大区别:
-
硬件依赖
深度学习十分地依赖于高端的硬件设施,因为计算量实在太大了!深度学习中涉及很多的矩阵运算,因此很多深度学习都要求有GPU参与运算,因为GPU就是专门为矩阵运算而设计的。相反,普通的机器学习随便给一台破电脑就可以跑。 -
解决问题的方式
在解决问题时,传统机器学习算法通常先把问题分成几块,一个个地解决好之后,再重新组合起来。但是深度学习则是一次性地、端到端地解决。 -
执行时间
通常情况下,训练一个深度学习算法需要很长的时间。这是因为深度学习算法中参数很多,因此训练算法需要消耗更长的时间。最先进的深度学习算法 ResNet完整地训练一次需要消耗两周的时间,而机器学习的训练会消耗的时间相对较少,只需要几秒钟到几小时的时间。
但两者测试的时间上是完全相反。深度学习算法在测试时只需要很少的时间去运行。如果跟 k-nearest neighbors(一种机器学习算法)相比较,测试时间会随着数据量的提升而增加。不过这不适用于所有的机器学习算法,因为有些机器学习算法的测试时间也很短。 -
可解释性
深度学习很多时候我们难以理解。一个深层的神经网络,每一层都代表一个特征,而层数多了,我们也许根本就不知道他们代表的啥特征,我们就没法把训练出来的模型用于对预测任务进行解释。例如,我们用深度学习方法来批改论文,也许我们训练出来的模型对论文评分都十分的准确,但是我们无法理解模型到底是啥规则,这样的话,那些拿了低分的同学找你质问“凭啥我的分这么低啊?!”,你也哑口无言····因为深度学习模型太复杂,内部的规则很难理解。
但是机器学习不一样,比如决策树算法,就可以明确地把规则给你列出来,每一个规则,每一个特征,你都可以理解。
但是这不是深度学习的错,只能说它太牛逼了,人类还不够聪明,理解不了深度学习的内部的特征。
参考https://baijiahao.baidu.com/s?id=1595509949786067084&wfr=spider&for=pc
参考 https://blog.csdn.net/cpless/article/details/78352528