机器学习算法学习笔记:绪论 / 引言 2026.3.7

20 阅读14分钟

机器学习算法学习笔记:绪论 / 引言

一、什么是机器学习?

  “机器学习是什么?” 这是每本教材开头都会回答的问题,也往往是最容易被快速跳过的问题。原因很简单: 这个问题看上去太像定义题了。 很多人扫一眼定义,就觉得自己已经懂了。但真正麻烦的地方恰恰在于: 定义可以记住,理解却未必发生。

1. 一个更严格一点的定义

  如果不满足于“让机器自己学习”这种口语化说法,那么机器学习可以更严格地表述为:

  让计算机系统利用经验数据,在特定任务上自动改进其性能。

  这句话短,但里面至少包含了三个不能省略的要素:

  • 经验(Experience):通常体现为数据
  • 任务(Task):系统需要完成的目标
  • 性能(Performance):衡量做得好不好的标准

  如果没有数据,就谈不上“从经验中学习”;如果没有任务,就谈不上“学什么”;如果没有性能标准,就谈不上“是否进步”。所以机器学习从来不是一句模糊的“机器变聪明了”,而是一个非常具体的问题:

  系统能否借助已有经验,在某类任务上越来越好。

2. 机器学习到底和传统编程差在哪?

  很多介绍都会说:

  • 传统编程:规则 + 输入 = 输出
  • 机器学习:数据 + 学习算法 = 模型,再由模型处理新输入 在这里插入图片描述   这当然是对的,但还可以再往深处说一步。传统程序的核心,是人来写规则;机器学习的核心,是让规则从数据中被归纳出来。也就是说,机器学习的本质不在于“计算机运行得更快”,而在于:

   某些原本必须靠人工显式指定的规则,现在可以由数据驱动地近似生成。

这也是为什么机器学习特别适合处理下面这类问题:

  • 房价预测
  • 垃圾邮件识别
  • 用户推荐
  • 风险控制
  • 医学影像判断

这些问题不是没有规律,而是规律往往:

  • 太复杂
  • 太隐含
  • 太高维
  • 太动态
  • 太难靠人手工穷举

  于是我们才需要一种新的方式:不是先把规则写出来,再让机器执行; 而是先给它数据,再让它自己去逼近规则。这就是机器学习真正的现实意义。


三、机器学习到底在“学”什么?

  这是我觉得整个绪论里最重要的问题,没有之一。很多初学者对“训练模型”的理解,还是很工程化的:

  • 把数据喂进去
  • 跑一个算法
  • 拿到一个结果

  这个过程当然是真的发生了。 但如果理解只停在这里,那你看到的还是“现象”,不是“结构”。从本质上说,机器学习做的事情可以概括为:

  在样本数据提供的信息约束下,从一个候选模型集合中,选出一个能够较好刻画数据规律的函数或决策规则。

这句话如果放到监督学习里,最经典的写法就是:

y=f(x)y = f(x)

其中:

  • xx 是输入特征
  • yy 是目标输出
  • ff 是真实但未知的规律

  我们的任务并不是直接“找到真理”,因为真实的 ff 通常并不可见。 我们真正能做的,是构造一个近似函数 f^\hat{f},使它在某种意义下尽可能接近真实规律。更一般地,训练过程通常可以写作:

f^=argminfHL(f,D)\hat{f} = \arg\min_{f \in \mathcal{H}} \mathcal{L}(f, D)

这里:

  • H\mathcal{H} 是假设空间
  • DD 是训练数据
  • L\mathcal{L} 是损失函数
  • f^\hat{f} 是最终学到的模型

  这组公式表面上看是标准定义,实际上它把机器学习的核心结构说得非常清楚:

  学习不是在无限可能中任意寻找答案,而是在一个受限的模型空间里,依据有限数据和误差准则,寻找一个足够好的近似。

  换句话说,机器学习不是全知视角下的“发现真理”,而是受限条件下的“最优逼近”。这也是为什么机器学习永远带着某种现实主义色彩: 它不承诺绝对正确,它追求的是在给定条件下尽可能有效。


四、为什么机器学习最困难的问题是泛化?

  如果只是在训练集上把结果做漂亮,很多时候并不难。 真正难的是:

  模型在没见过的数据上,还能不能继续成立。

  这就是机器学习里最核心的词之一:泛化(Generalization)

1. 为什么泛化比拟合更重要?

因为训练集上的成功,并不自动意味着模型真的理解了规律。 它也可能只是把训练样本记住了。一个很典型的情况是:

  • 训练误差很低
  • 测试误差很高

  这意味着模型在历史样本上表现得很好,但一旦换到新样本,效果立刻崩掉。
这类现象我们非常熟悉,就是 过拟合(Overfitting)。所以,机器学习真正追求的,从来不是:

  “找一个最会解释过去的模型”

而是:

   “找一个能够从过去出发,对未来也仍然有效的模型。”

  这两者听起来只差一点点,实际上差别极大。前者只要求你把已知样本吃透;后者要求你从有限样本中,提炼出可以迁移的规律。在这里插入图片描述

2. 为什么这件事本质上就很难?

  因为我们真正关心的不是训练集,而是训练集背后的整体分布,但问题在于,我们永远看不到完整分布,只能看到它的一小部分样本。也就是说:

  • 我们拥有的是局部观测
  • 我们想讨论的是整体规律

  这件事从逻辑上就不是演绎,而是归纳,而归纳的难点恰恰在于:

  它不像演绎那样,一旦前提成立,结论就必然成立。

  所以机器学习从根子上就带着一种不可消除的不确定性;它可以越来越可靠,但不会在绝对意义上“被证明正确”。这也是为什么我越来越倾向于把机器学习理解成:

  一种面向未知的统计归纳机制,而不是一套可以保证无条件正确的规则系统。


五、分类、回归、聚类:这些高频词到底分别在回答什么问题?

  机器学习入门时,几乎一定会接触这些术语:分类、回归、聚类、降维,但真正重要的,不是记住这些名字,而是理解它们分别对应了怎样的问题结构。

1. 分类:回答“它属于哪一类?”

  分类任务讨论的是离散标签预测,比如:

  • 邮件是不是垃圾邮件
  • 肿瘤是良性还是恶性
  • 图像里是猫、狗还是汽车

  分类问题的本质,不是“求一个数”,而是:

  把一个对象判定到有限类别集合中的某一类。

  所以分类回答的是:

  “这个样本属于哪一个类别?”

2. 回归:回答“它的值是多少?”

  回归任务讨论的是连续量预测。比如:

  • 房价是多少
  • 明天气温是多少
  • 下个月销量会是多少

  它与分类最大的不同在于: 输出不再是类别,而是一个连续数值。所以回归回答的是:

  “这个对象对应的量,应当取什么值?”

3. 聚类:回答“这些数据内部怎么分?”

  聚类与前两者最不一样的地方在于,它没有现成标签。 模型不能拿着“标准答案”去学,而是只能依据样本之间的相似性来组织数据。例如:

  • 用户分群
  • 客户分层
  • 主题发现

  所以聚类真正回答的是:

  “这些样本内部是否本来就存在某种潜在结构?”

  如果把这三类任务压缩成一句话,我会这样概括:

  分类和回归是在学输入到输出的映射;聚类是在找数据到结构的组织方式。

  这个区分非常重要,因为它决定了你后面该如何理解模型目标、训练方式和评价标准。 在这里插入图片描述


六、监督学习与无监督学习,真正的差别不是“有没有标签”,而是“在认识什么”

  很多教材会很快给出区分:

  • 监督学习:有标签
  • 无监督学习:无标签

  这没有错,但说到这里其实还远远不够。因为这个区分只说了形式,没有说到本质。更本质的区别在于:

  监督学习与无监督学习,面对的是两类不同的认识问题。

1. 监督学习:核心是预测

  监督学习的数据通常写作:

D={(x1,y1),(x2,y2),,(xn,yn)}D = \{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\}

  每个输入都有对应输出。 模型要做的,就是从这些样本对中学到映射关系。

所以监督学习真正关心的是:

  给定输入,如何预测输出?

  这类问题的代表任务,就是:分类、回归

2. 无监督学习:核心是结构发现

  无监督学习的数据通常写作:

D={x1,x2,,xn}D = \{x_1, x_2, \dots, x_n\}

  这里没有标签,没有标准答案。 模型只能从数据本身出发,试图理解其内部组织方式。它更关心的是:

  • 数据中有没有潜在群体
  • 高维数据能否压到低维
  • 哪些样本明显偏离整体
  • 能不能学到更好的表示

  所以,与其说“监督学习有标签,无监督学习没标签”,不如更准确地说:

  监督学习以预测为中心,无监督学习以结构发现为中心。

  前者更像在回答“答案是什么”,后者更像在回答“数据本身是如何组织的”。


七、假设空间:模型不是在“随便学”,而是在边界内学

  机器学习中有一个特别关键的概念,叫 假设空间(Hypothesis Space)。它指的是:

  所有候选模型构成的集合。

  比如在一个二分类问题里,我们可以选:线性分类器、决策树、支持向量机、神经网络。很多人会把这些只看成“不同算法”,但更本质的是:它们对应的是不同的函数族、不同的表达能力、不同的归纳方式。这意味着一件非常重要的事:

  模型最终能学到什么,不只取决于数据,也取决于你允许它以什么形式去表达规律。

  这就是为什么“学习”从来不是无限制的。模型不是在所有可能规律里自由漂浮,而是在一个预先设定的表达空间内寻找解。于是问题马上就来了:

  • 假设空间太小,模型可能表达不了真实规律
  • 假设空间太大,模型又可能把噪声也学进去

  所以很多机器学习问题,最终都可以被压缩成一个非常核心的张力:

  表达能力 vs 泛化能力

  而这恰恰是机器学习最深层的矛盾之一。


八、归纳偏好:为什么模型最后选的是这个解,而不是另一个?

  再往前走一步,就会遇到一个更有意思、也更深的问题:

  如果多个模型都能解释训练数据,为什么算法最终偏偏选了这一类?

  答案指向一个机器学习中极其重要的概念:归纳偏好(Inductive Bias)。所谓归纳偏好,说得简单一点,就是:

  当多个假设都和训练数据相容时,学习算法更倾向于选择哪一类假设。

  换句话说,算法从来不是完全中立的,任何学习方法都带着某种偏好。最经典的一类偏好,是偏向更简单的模型。这并不是因为“简单更好看”,而是因为背后有一个非常深刻的直觉,也叫奥卡姆剃刀原理:

  在解释能力差不多的情况下,更简单的结构通常更有希望推广到新样本。

  所以如果一定要把这两个概念并列着理解,我会这样说:

  • 假设空间回答的是:模型“能学什么”
  • 归纳偏好回答的是:模型“更愿意学什么”

  没有假设空间,学习无从发生;没有归纳偏好,学习就无法在多个可能解之间作出选择。从这个意义上讲,机器学习之所以成立,并不是因为数据本身“会说话”,而是因为我们愿意带着某种先验去听它说话。这不是缺陷,而是前提。


九、NFL 定理:为什么不存在万能算法?

  如果前面所有内容都在说明“模型必须带着偏好去学习”,那么 NFL 定理则进一步说明:

  正因为模型带着偏好去学习,所以它注定不可能在所有问题上都最好。

1. NFL 定理到底在说什么?

  No Free Lunch Theorem(NFL 定理)的核心意思是:

  如果对所有可能问题一视同仁,那么任意两个学习算法在平均意义下的表现是相同的。

  换句话说:

  不存在一个对所有任务都普遍最优的学习算法。

  这条结论非常重要,因为它直接击中了一个机器学习实践里极其常见的误区:

   脱离问题背景去问“哪个算法最好”。

  这个问题本身就问错了。因为“最好”从来都不是抽象的、脱离语境的形容词。 它总是相对于:某类任务、某种数据分布、某套评价准则、某种归纳偏好。   一个算法之所以强,不是因为它有一种神话般的普适优越性,而是因为它更适合当前问题。

2. 一个很直观的理解

假设有两个算法:

  • 算法 A 偏好线性结构
  • 算法 B 更适合复杂非线性结构

那么:

  • 在线性问题上,A 往往更好
  • 在复杂非线性问题上,B 往往更好

  但如果把所有问题都拿来平均,A 在某些问题上的优势,会被它在另一些问题上的劣势抵消;B 也是一样。于是最终你会发现:从总体平均意义上看,它们并没有绝对高下。

3. NFL 真正给人的启发是什么?

  NFL 最重要的启发,不是“算法都差不多”,而是:

  1. 算法选择必须绑定问题背景
  2. 不存在脱离分布与任务结构的最优模型
  3. 机器学习能够有效,本质上依赖某种先验结构

  所以我越来越认同这样一种看法:

  机器学习最核心的问题,不只是“怎么设计更强的算法”,更是“如何理解问题,并让模型偏好与问题结构匹配”。

  这才是真正成熟的机器学习思维。


十、机器学习的一般流程,看起来像流程图,本质上却是一个闭环系统

从实践角度看,一个典型的机器学习任务通常会包括:

  1. 数据收集
  2. 数据清洗与预处理
  3. 特征选择或特征构造
  4. 模型训练
  5. 参数优化
  6. 模型评估
  7. 部署、预测与迭代

  这张流程图很多人都见过。但真正做项目之后你会发现,最容易被高估的是“模型”,最容易被低估的是“数据与评估”。   因为现实里经常发生的情况是:

  真正决定一个项目能不能成立的,不是你选了哪个模型,而是你有没有可靠的数据、合理的表示、可信的评估和可持续的反馈机制。

换句话说:

  • 数据质量决定问题上限
  • 特征表达决定模型是否可学
  • 评估方式决定结论是否可信
  • 部署与反馈决定模型是否真正产生业务价值

  所以机器学习从来都不只是“选一个模型然后训练”。它更像是:

  围绕数据、表示、模型、评估与反馈构成的一整套闭环系统。

  这也是为什么,真正做机器学习项目的人,最后往往不会再把“算法”看成唯一中心。


十一、机器学习为什么强大?又为什么必须被克制地理解?

1. 它为什么强大?

  机器学习真正强大的地方在于:

  它让许多原本难以被显式建模的问题,第一次变得可以被系统性求解。

  它的优势通常体现在:

  • 能从数据中自动提取规律
  • 能处理复杂的非线性关系
  • 能随数据积累持续优化
  • 能广泛应用于推荐、搜索、风控、医疗、视觉、NLP 等领域

  很多问题如果坚持手工写规则,几乎不现实;但一旦转化为数据驱动建模问题,就突然变得可操作了。这就是机器学习改变世界的地方。

2. 它为什么又不能被神化?

  另一方面,机器学习也有非常清晰的边界。它并不是一种“给数据就能自动产生智能”的魔法。 它依然受到很多现实约束:

  • 强依赖数据质量
  • 容易过拟合
  • 复杂模型往往可解释性较弱
  • 训练与调参成本可能很高
  • 从实验到落地之间存在明显工程鸿沟

  所以我更愿意把机器学习理解为:

  一种以数据为基础、以统计归纳为核心、以工程系统为载体的方法体系。

  它不是神话,也不是幻术;它之所以强大,正是因为它是在现实约束之下,找到了一种足够有效的建模方式。


十二、为什么说“绪论”这一章决定了后面所有内容的理解方式?

  如果把这一章压缩成几条最核心的认识,我现在的理解大概是这样:

1. 机器学习的核心不是记住数据,而是学习可泛化的规律

  这决定了为什么训练误差从来不是唯一目标;也决定了为什么“对未来有效”比“对过去解释得漂亮”更重要。

2. 机器学习本质上是一种受约束的归纳过程

  我们只有有限样本,却要讨论未知样本;因此它天然离不开:

  • 假设空间
  • 归纳偏好
  • 误差度量
  • 泛化评估

3. 不存在脱离任务背景的万能算法

  NFL 定理告诉我们,算法优劣从来不是抽象的,它总是和问题结构、数据分布、评价目标紧密绑定。所以真正成熟的机器学习思维,不是痴迷于“最强模型”,而是不断追问:

  • 这个问题到底是什么?
  • 数据到底提供了什么信息?
  • 模型到底作出了什么假设?
  • 哪种方法更匹配这个任务?
  • 它会在什么地方失效?

  当这些问题被认真问过之后,机器学习才真正开始变得清晰起来。


十三、小结:真正的入门,不是从“会调一个模型”开始,而是从“会问问题”开始

  表面上看,“绪论 / 引言”这一章没有炫目的算法,也没有复杂的推导,甚至很容易给人一种“不够实用”的错觉。但如果现在回头看,我反而越来越觉得: 这一章其实决定了你未来理解整个机器学习的方式。它最重要的价值,不是让人记住几个术语,而是帮你建立这样一套认识:

  • 机器学习研究的是如何从数据中学习规律
  • 学习的目标不是机械拟合,而是实现泛化
  • 模型总是在某个假设空间中、带着某种归纳偏好进行学习
  • 不存在适用于所有问题的万能算法
  • 机器学习真正关键的,永远是“问题—数据—方法”的匹配

  所以,真正的入门,并不是从“我已经会用一个模型”开始,而是从你开始认真思考下面这些问题开始:

  • 问题到底是什么?
  • 数据到底包含了什么信息?
  • 模型实际上做了哪些假设?
  • 它为什么可能在这里有效?
  • 它又会在什么条件下失效?

  我越来越相信:

  机器学习学到最后,拼的往往不是会多少算法,而是能不能把问题看清楚。


十四、延伸阅读:从“学模型”走向“做系统”

  学完绪论之后,我最大的一个感受是:只盯着单个算法的 demo,真的远远不够;真实世界里的机器学习,从来不是一段独立的训练脚本。它更像一个持续运行的系统:数据流、特征流、训练、评估、部署、监控、迭代缺一不可。   这里先记录一个我写的一个小demo:占位符   我关注它,不是因为它用了什么“酷炫模型”,而是因为它更接近真实机器学习项目的完整形态:

  • 有数据管道
  • 有特征管理
  • 有实验跟踪
  • 有模型服务
  • 有 CI/CD
  • 有云端部署

  这类项目最大的价值,不是告诉你“某个模型有多强”,而是提醒你:

  机器学习真正产生价值的地方,不只是把模型训练出来,而是把模型放进系统、放进业务、放进持续反馈的闭环里,并让它长期稳定地工作。


后记

  写这篇绪论笔记时,我越来越强烈地意识到:机器学习的学习顺序,未必应该是“先背很多算法,再慢慢理解原理”;有时候恰恰相反,先把这些最基础的问题想清楚,后面的很多内容才会真正连起来。因为算法当然重要,模型当然重要,实验当然重要。但在它们之前,可能还有一个更重要的问题:

  你是否真的知道,自己在试图解决什么问题?