机器学习是什么?
机器学习是用例子编程,而不是用规则编程。机器从数据中学习的三条路径,以及各自适用的场景。
先动手,再深入阅读
从样本中调整一条规则 · 7 分钟传统编程是人来写规则:如果邮件里含「free money」,就标成垃圾邮件。 机器学习把这个关系倒了过来。你给它看成千上万封已经标好「是垃圾邮件/不是垃圾邮件」的邮件,规则由它自己写。
这个反转就是全部核心。你不再规定怎么得到答案,而是提供答案的例子。这一层里其余的内容——神经网络、梯度下降、每个 LLM 背后的机器——讲的都是机器如何把例子变成规则。
为什么是学习,而不是编程
有些任务很容易说清楚,却很难写出规则。用代码精确描述一张照片里为什么有猫,你写不出来。根本没有干净的规则——猫的姿势、颜色、光线千变万化。但你可以轻松收集一万张标好「猫」或「不是猫」的照片。
机器学习适合例子便宜、规则写不出来的场合。手写体变化太多,写不了规则。语言太流动,写不了规则。欺诈手法的变化速度,比任何人重写规则都快。这些情况里,模式都藏在数据里,没有人能把它完全说清楚。
反面也一样:如果你能写出一条简单可靠的规则,那就写。算销售税这种事,用机器学习是杀鸡用牛刀。
监督学习:从带标注的例子中学习
最常见的形式。每个训练样本都附带正确答案——一个标签——机器要学会把它复现出来。
- 标好所含动物的照片 → 预测新照片里的动物
- 带成交价的房子 → 预测一套还没卖出去的房子的价格
- 标好是否为垃圾邮件的邮件 → 识别出新的垃圾邮件
有两种形态反复出现。分类从一组固定的类别里挑一个(垃圾邮件/不是垃圾邮件,10 个数字里是哪一个)。回归预测一个连续尺度上的数字(价格、温度)。这个区分重要,因为它改变了你衡量「错得有多离谱」的方式,详见损失函数。
监督学习在实践中占主导,因为标签只要拿得到,就是最强的教学信号。它的代价也正在于此:得有人把标签做出来。
无监督学习:在没有答案的情况下找结构
这里的数据没有标签。机器拿到例子,必须自己找出结构。
聚类把相似的例子归到一起:给一批没有类别标记的客户购买记录,发现消费者自然地分成几类。没有人事先定义这些分组——是算法自己找出来的。
另一种形式是学习紧凑的表示。embedding 把高维输入压缩成一个更短的向量,同时保留重要的信息。它的训练信号常常是数据自己预测自己:遮住输入的一部分,让模型把它重建出来。这个「预测缺失部分」的技巧,正是 LLM 预训练的做法——文本自己提供了标签,只需要让模型预测下一个 token。它看起来是无监督的,因为没有任何人做标注,这也是它能扩展到整个互联网的原因。
强化学习:从结果中学习
第三种模式压根没有固定的数据集。agent 在环境里采取动作,并收到一个奖励信号——好结果加分,坏结果扣分。它学到的是一套随着时间把奖励最大化的策略。
一个赢了得 +1 的棋类系统,会学到哪些走法通向胜利,尽管没有人把任何单步标成正确。难点在于信用分配:一局很长的对弈结束时拿到的奖励,必须回溯到那些真正为它立功的走法上,而这确实很难。
如果你读过用人类反馈对齐 LLM,这个想法你已经见过了。在那里,奖励编码的是人们更喜欢哪些回答,模型则朝着多产出这类回答调整。同一套框架,不同的环境。
统管这三者的唯一一条规则
不管哪种模式,目标从来不是把训练样本背下来,而是泛化——在机器从未见过的数据上也表现良好。
一个把去年考卷答案背下来的学生什么也没学到,换一套新题就考砸。把训练集背下来的模型也一样;这种失败甚至有名字,叫过拟合。这个领域里每一个严肃的做法——留出的测试集、正则化、我们衡量成功的方式——都是为了让模型泛化,而不是让它背题。
这就是「它在训练数据上拿了 100%」本身算不上好消息的原因。唯一有意义的分数,是在模型从未训练过的数据上拿到的那个。
要点回顾
- 机器学习从例子里写出规则,而不是由人手工写。例子便宜、规则写不出来时,就用它。
- 监督学习从带标注的例子中学(分类与回归);无监督学习在无标注数据里找结构;强化学习从奖励和惩罚中学。
- 现代 LLM 的训练方式是让文本自己预测自己,不需要人工标注,所以能扩展到极大的规模。
- 目标始终是泛化到没见过的数据上,绝不是把训练集背下来。
下一篇: 数据如何变成数字——机器要学会任何东西,输入都得先变成数学。