机器学习(Machine Learning)是现代人工智能背后最重要的技术之一。
垃圾邮件过滤、推荐系统、欺诈检测、图像识别、语音识别、自动驾驶汽车、搜索引擎,以及许多其他应用,都在使用机器学习技术。
但是,机器学习到底是什么意思?
计算机真的会“学习”吗?
机器学习和普通程序设计又有什么区别?
其实,机器学习最基本的思想并没有想象中那么复杂。
传统程序设计通常需要程序员自己写出各种规则,而机器学习采用了另一种方法:我们给计算机提供大量示例,然后利用算法,从这些示例中寻找有用的规律。
最终得到的结果,叫作一个模型(Model)。
下面我们一步一步来看机器学习到底是怎样工作的。
1. 传统程序设计使用规则
要理解机器学习,最好先从传统程序设计开始。
在普通程序设计中,程序员通常需要明确告诉计算机应该遵循哪些规则。
从概念上,可以把它表示成:
数据 + 规则 → 输出
例如,我们希望编写一个程序,判断一个数字是不是偶数。
程序员可以直接写出一条非常简单的规则:
如果一个数字除以 2 没有余数,那么它就是偶数。
计算机所做的事情,只是执行这条规则。
这里并不存在所谓的“学习”。
因为程序员已经知道答案背后的规律,并且明确告诉了计算机应该怎样判断。
当问题具有清楚、稳定而且容易描述的规则时,这种传统编程方式非常有效。
但是,现实世界中的很多问题并没有这么简单。
2. 有些问题很难用规则描述
假设我们想开发一个程序,用来识别垃圾邮件。
理论上,我们可以尝试编写成千上万条规则。
例如:
如果邮件中包含某些特定词语,就提高它的垃圾邮件评分。
如果邮件中出现大量可疑链接,再提高它的评分。
如果发件人身份未知,也可以进一步提高评分。
问题在于,真实世界中的电子邮件非常复杂。
垃圾邮件发送者会不断改变邮件内容和表达方式。
与此同时,正常邮件有时也会包含一些看起来很可疑的词语或链接。
如果试图通过人工编写规则来覆盖所有可能出现的情况,规则数量会迅速膨胀,最终变得极其复杂,甚至难以维护。
这正是机器学习开始发挥作用的地方。
我们不再试图自己描述所有规则,而是让算法直接从数据中寻找规律。
3. 机器学习从示例中学习
假设我们收集了数千封、数百万封,甚至更多电子邮件。
其中一部分被标记为:
垃圾邮件
另外一些被标记为:
非垃圾邮件
这些带有已知答案的示例,就成为机器学习系统的训练数据(Training Data)。
机器学习算法会分析这些数据,寻找能够帮助区分垃圾邮件和正常邮件的模式。
从概念上,可以表示为:
训练数据 → 学习算法 → 模型
训练过程最重要的结果,就是得到一个模型。
模型中包含了机器学习系统从训练数据中学到的各种数值关系。
训练完成以后,我们就可以把一封模型以前从未见过的新邮件交给它。
这时,整个过程变成:
新数据 → 模型 → 预测
例如:
新邮件 → 模型 → 96% 的概率是垃圾邮件
程序员并不需要事先写出所有可能出现的垃圾邮件规则。
相反,模型通过大量示例,自己学习到了有助于判断垃圾邮件的模式。
这就是机器学习最核心的思想:
从数据和示例中学习规律。
4. “学习”到底是什么意思?
“学习”这个词,有时候会让机器学习听起来非常神秘。
但计算机的“学习”,并不等于人类真正意义上的学习。
从最基本的层面来说,机器学习实际上是一种数学优化过程。
在训练过程中,模型首先会做出预测。
然后,系统会把模型的预测结果和正确答案进行比较。
如果模型预测错了,系统就会计算这个预测产生了多大的误差。
接下来,系统会调整模型内部的一些数值,希望让下一次预测的误差更小。
这个基本过程可以表示为:
预测 → 误差 → 调整 → 新的预测
这一过程可能重复成千上万次、数百万次,甚至数十亿次。
随着训练不断进行,模型通常会逐渐变得更擅长完成某一项任务,并产生更加有用的预测结果。
模型中那些不断被调整的数值,通常叫作参数(Parameters)。
因此,当我们说一个机器学习系统正在“学习”时,通常真正表达的意思是:
系统根据数据不断调整模型中的参数,使模型的预测结果逐渐变得更好。
这里并没有什么魔法。
它的背后仍然是计算、数学、数据和优化。
5. 训练模型和使用模型是两回事
机器学习通常可以分成两个非常重要的阶段。
第一个阶段叫作训练(Training)。
在训练过程中,系统读取大量训练数据,并不断调整模型内部的参数。
训练可能需要巨大的计算能力,因为系统可能需要处理非常庞大的数据集,同时反复更新大量参数。
第二个阶段通常叫作推理(Inference)。
推理发生在模型训练完成以后。
这时候,我们把新的输入数据交给已经训练好的模型,让模型给出预测结果。
仍然以垃圾邮件识别为例:
训练:
数百万封已经标记的邮件 → 学习 → 垃圾邮件检测模型
推理:
新邮件 → 已训练模型 → 垃圾邮件或非垃圾邮件
训练的目标,是建立和调整模型。
推理的目标,则是使用已经训练好的模型处理新的数据。
训练和推理之间的这种区别,几乎贯穿整个现代机器学习领域。
6. 机器学习的主要类型
机器学习并不是只有一种方法,而是包含多种不同的学习方式。
其中最常见的一种叫作监督学习(Supervised Learning)。
在监督学习中,训练数据通常包含已经知道的正确答案。
前面介绍的垃圾邮件识别就是监督学习。
因为训练邮件已经被提前标记为“垃圾邮件”或者“非垃圾邮件”。
另一种常见方法叫作无监督学习(Unsupervised Learning)。
在无监督学习中,数据通常没有预先提供明确的正确答案。
算法需要自己分析数据,从中发现有用的结构、相似性或者不同的数据群组。
第三种重要方法叫作强化学习(Reinforcement Learning)。
在强化学习中,一个系统通过不断采取行动,并根据得到的反馈来学习。
如果某个行动产生了比较好的结果,系统可能获得较高的奖励。
如果行动带来的结果较差,系统得到的奖励可能就比较低。
通过不断尝试不同的行为并观察结果,系统逐渐学习怎样采取更好的行动。
监督学习、无监督学习和强化学习解决的问题并不完全相同。
但它们背后共享一个非常重要的思想:
系统通过数据或者经验改善自己的行为,而不是完全依赖程序员事先手工编写的规则。
7. 机器学习、深度学习和人工智能
人工智能(Artificial Intelligence)、**机器学习(Machine Learning)和深度学习(Deep Learning)**这几个词经常被混在一起使用。
但它们并不是完全相同的概念。
人工智能是其中范围最广的概念。
它描述的是那些被设计用来完成我们通常认为需要“智能”才能完成任务的计算机系统。
机器学习则是实现人工智能的一种方法。
机器学习不要求程序员手工编写系统所有行为规则,而是让系统通过数据学习模式。
深度学习则是机器学习中的一个进一步分类。
深度学习通常使用包含很多层的神经网络(Neural Networks),从大量数据中学习更加复杂的模式。
从概念上可以理解为:
↓
机器学习
↓
深度学习
也就是说,深度学习属于机器学习,而机器学习又属于更广泛的人工智能领域。
今天的大语言模型、现代图像生成系统、语音识别系统,以及许多其他人工智能技术,都高度依赖深度学习。
但是,无论模型变得多么复杂,机器学习最基本的思想仍然没有改变:
从数据中学习有用的模式,再利用这些模式进行预测或者做出决策。
8. 为什么机器学习如此重要
传统程序设计仍然非常重要。
如果一个问题具有清晰、稳定而且可靠的规则,那么直接把这些规则写进程序,很可能仍然是最简单、最可靠的解决方案。
机器学习真正发挥优势的地方,是那些规律非常复杂,很难由程序员直接描述的问题。
例如:
识别人脸。
理解人类语音。
检测异常金融交易。
推荐电影。
识别图片中的物体。
判断一封电子邮件是不是垃圾邮件。
对于这些问题,如果试图人工列举所有可能出现的规则,往往会变得极其困难。
机器学习提供了另外一种思考方式。
传统程序设计通常问的是:
程序员应该写什么规则?
而机器学习问的是:
计算机能够从数据中学到什么模式?
从“人工编写所有规则”转向“让系统从数据中学习规律”,是现代人工智能发展过程中最重要的思想变化之一。
Conclusion
机器学习听起来可能非常复杂,但它最基本的思想其实非常直接。
在传统程序设计中:
数据 + 规则 → 输出
规则由程序员提供。
而在机器学习中:
训练数据 → 学习算法 → 模型
算法利用大量示例建立模型。
模型训练完成以后:
新数据 → 模型 → 预测
所谓“学习”,并不意味着计算机突然拥有了和人类一样的思考能力。
它真正意味着的是:
系统利用数据调整模型内部的数学参数,让模型逐渐变得更擅长完成某一项特定任务。
从垃圾邮件过滤、推荐系统,到计算机视觉、语音识别,再到今天的生成式人工智能,这个看似简单的思想,已经成为现代计算机技术的重要基础之一。
理解了机器学习最基本的工作方式以后,我们就可以继续追问下一个更加重要的问题:
机器学习模型究竟是什么?
