机器学习是让电脑自己从数据里找规律,然后用这个规律来做事。
你不用手把手地写死规则,告诉电脑“如果A出现,就做B”。而是给它一堆数据,让它自己学。
举个例子,你想让电脑识别一封邮件是不是垃圾邮件。
在传统的编程里,你得写很多规则,比如“如果邮件标题包含‘免费’、‘中奖’,那它就是垃圾邮件”。但问题是,骗子会换花样,你永远也写不完所有规则。
机器学习的做法就不一样了。你找来成千上万封邮件,每一封都提前标好,“这是垃圾邮件”、“这不是垃圾邮件”。然后,把这些数据都“喂”给一个机器学习模型。
这个模型会自己分析这些邮件,找出垃圾邮件和正常邮件的区别。它可能会发现,垃圾邮件里某些词出现的频率更高,或者发件人地址有一些共同特征。它自己总结出来的规律,比你手动写的规则要复杂得多,也有效得多。
学习完成后,你再给它一封新的、没见过的邮件,它就能根据自己学到的规律,判断出这封邮件是不是垃圾邮件。
这就是机器学习的核心:从数据中学习,然后做出预测或决策。
整个过程可以分成几步:
1. 收集数据:你需要大量的、已经分好类的数据。在刚才的例子里,就是那些标好的邮件。
2. 选择模型:机器学习里有很多种模型,比如决策树、支持向量机(SVM)等等。你需要根据你的问题选一个合适的。
3. 训练模型:把数据“喂”给模型,让它学习。这个过程其实就是调整模型内部的参数,让它做出的判断越来越准。
4. 评估和使用:模型训练好后,你要用一些新的数据测试它,看看效果怎么样。如果效果不错,就可以用它来做实际的预测了。
在这个过程中,有一个环节很重要,叫做“特征工程”(Feature Engineering)。
还是用垃圾邮件的例子。你不能直接把一整封邮件扔给模型。你需要先把邮件里的一些关键信息提取出来,变成电脑能理解的数字。这些关键信息就叫“特征”。
比如,你可以提取这些特征:
* 邮件标题里是不是包含某些特定的词?
* 发件人是不是在你的联系人列表里?
* 邮件里有多少个链接?
* 邮件的文本长度是多少?
这些特征都是人来设计和提取的。你需要凭经验判断,哪些信息可能对判断垃圾邮件有用。这个过程做得好不好,直接影响最终的效果。很多时候,机器学习工程师大部分时间都花在这上面了。
所以,机器学习可以看成是:人工提取特征 + 机器学习模型。
现在我们说说深度学习。
深度学习其实是机器学习的一个分支。它之所以叫“深度”,是因为它用的模型结构比较深,这个结构叫做“人工神经网络”(Artificial Neural Networks)。
神经网络这个名字听起来很玄乎,但它的灵感来源其实是人脑的神经元。它由很多层“神经元”组成,每一层都负责处理一部分信息,然后把结果传给下一层。
一个简单的神经网络可能只有几层,而一个“深度”的神经网络,可能会有几十甚至上百层。
深度学习最大的不同在于,它基本上不需要你来做“特征工程”了。
我们再用一个例子来说明,这次是识别图片里有没有猫。
如果用传统的机器学习方法,你可能需要手动提取图片的特征,比如:
* 图片里有没有三角形的耳朵?
* 有没有胡须?
* 眼睛的形状是怎样的?
* 物体的轮廓是什么样的?
你得写代码去检测这些特征,然后把这些特征数据喂给机器学习模型。这个过程很麻烦,而且你很难穷举所有的特征。
但深度学习不一样。你直接把成千上万张猫的图片扔给一个深度神经网络模型。
这个模型会自己从图片里学习特征。 它的第一层可能只能识别一些非常简单的东西,比如边缘、角落和颜色块。然后,第二层会把第一层识别出的边缘和角落组合起来,识别出更复杂一点的形状,比如眼睛、鼻子。再往上一层,可能会把眼睛、鼻子、耳朵组合起来,识别出猫脸的轮廓。
就这样,信息一层一层地往上传递,模型自动学习到的特征也从简单到复杂。最后,顶层的神经元就能根据这些组合起来的复杂特征,判断出这到底是不是一只猫。
整个过程是自动的。你不需要告诉它什么是耳朵,什么是胡须。它自己从海量的数据里,找到了识别猫所需要的那些关键特征。
所以,深度学习可以看成是:模型自动提取特征 + 预测。
总结一下,它们最核心的区别就在于对“特征”的处理方式。
- 机器学习:大部分情况下,需要人来设计和提取特征。你得告诉模型应该关注哪些信息。
- 深度学习:它自己就能从原始数据(比如一张完整的图片、一段原始的语音)里学习到有用的特征。你不需要(或者说很少需要)人工干预。
这个区别导致了它们在其他方面也表现不同。
对数据量的要求不一样
深度学习通常需要非常非常多的数据。因为它要从头开始学习,没有足够的数据量,它就没法学到那些有用的、复杂的特征。如果数据太少,它的效果可能还不如传统的机器学习方法。
机器学习对数据量的要求相对低一些。因为你已经帮它把特征提取好了,它需要学习的东西就少一些。
对硬件的要求不一样
深度学习模型的结构很复杂,参数非常多,计算量极大。所以,它通常需要用高性能的图形处理器(GPU)来训练,因为GPU擅长并行计算。用普通的中央处理器(CPU)可能要花上几天甚至几周的时间。
机器学习模型的计算量相对小一些,很多时候用CPU就足够了。
解决问题的领域不一样
机器学习的应用范围很广,在很多领域都很有用,比如金融风控(判断一笔交易是不是欺诈)、商品推荐(猜你喜欢什么)、房价预测等等。这些问题通常特征比较明确,可以用结构化的数据(比如表格数据)来解决。
深度学习特别擅长处理那些“非结构化”的数据,比如图像、声音和自然语言。
* 图像识别:现在手机相册能自动给你的照片分类,识别人脸,用的就是深度学习。
* 语音识别:你跟手机的语音助手说话,它能听懂你的意思,背后也是深度学习。
* 自然语言处理:像机器翻译,或者现在很火的聊天机器人,它们能理解和生成人类的语言,都离不开深度学习。
在这些问题上,人很难定义出好的特征,所以让模型自己去学,效果反而更好。
可解释性不一样
传统的机器学习模型,很多时候更容易理解。比如决策树模型,它做出的每一个判断,你都可以追溯到是根据哪个特征、哪个规则来决定的。
深度学习模型通常被叫做“黑箱”(black box)。 因为它的网络结构太复杂了,有几百万甚至上亿个参数。你虽然知道它给出的结果很准,但你很难说清楚,它到底是根据什么做出这个判断的。你只知道输入了什么,输出了什么,但中间发生了什么,就像一个黑色的盒子一样,看不透。这一点在某些需要高透明度的领域,比如医疗诊断或者金融信贷,可能会成为一个问题。
所以,机器学习和深度学习不是对立的关系,而是一个包含关系。深度学习是机器学习里一种更强大的、更自动化的方法。
你可以这么理解:机器学习是一个工具箱,里面有各种各样的工具(决策树、SVM、神经网络等)。深度学习就是这个工具箱里最新、最强力的一套工具(特指那些很深很复杂的神经网络),专门用来解决某些特定的、以前很难解决的问题,尤其是在图像和语言方面。但对于一些相对简单、数据量没那么大的问题,用工具箱里其他的老工具可能更顺手,也更有效率。