⚙️ 第十二章 如何让计算机【学习】
📄 一句话概括

传统程序是人写规则,机器学习是人给数据、机器自己找规则——核心动作只有一句话:规律从数据里算出来。

📝 本节和前面几节的关系

前十章讲的是【程序怎么跑】,这一章换了个方向:程序里的规律,能不能不用人写。

一、两种做法的根本差别

传统程序:人把规则想清楚,写成代码。问题是——规则写不全。 机器学习:人给一批数据(带正确答案),机器自己去找规律。 差别不只在写法上,还在【你能不能说清那件事】上。 认字、识脸、听语音——这些事人做得很好,却说不出规则。 说不出规则的事,正是机器学习的用武之地。

二、机器是怎么【学】的

学习这件事,落在机器上其实很朴素: 准备数据 → 训练(调参数)→ 评估 → 拿去用。 【训练】不是【思考】,它是反复试:猜一个答案、跟正确答案比、差多少就往回改一点。 改到猜得够准了,这套【参数】就固化下来,成了模型。 所以机器学习产出的不是一个程序,而是一组数。

三、用卖货的例子看一遍

拿十天的进货量与销量,人写规则很难下手(多进点?少进点?到底几成?)。 让机器从这十组数据里找,一条式子就出来了:销量约等于 1.015 乘进货量减 1.59。 用这条式子算:进货 15 大约卖 13.6、进货 25 大约卖 23.8。 这就是那个核心动作:规律不是人告诉它的,是它自己算出来的。

四、但它学到的不是【理解】

这一点必须说清:它学到的是【这批数据里的统计规律】,不是【懂了卖货这件事】。 所以有几个必然的后果: 数据有偏,学到的规律就偏——只见过夏天的销量,它不会懂冬天。 数据的范围之外,它只能外推,没有依据——进货 500 会怎样?它不知道。 它不解释原因——它只告诉你【大概是多少】,不告诉你【为什么】。 记住这一句,后面所有内容都好理解了:机器学习是从数据里找规律,不是让机器长出脑子。

五、动手 Demo:什么是机器学习

传统程序是人写规则,机器学习是从数据里找规则。 拿十天的进货量与销量,看机器怎么把规律算出来。

days = [(10, 9), (12, 10), (14, 13), (16, 14), (18, 17),
        (20, 19), (22, 21), (24, 22), (26, 25), (28, 27)]
n = len(days)
mx = sum(a for a, _ in days) / n
my = sum(b for _, b in days) / n
num = sum((a - mx) * (b - my) for a, b in days)
den = sum((a - mx) ** 2 for a, _ in days)
slope, intercept = num / den, my - num / den * mx
print("销量 ≈ %.3f × 进货量 %+.2f" % (slope, intercept))

实跑输出:

--------------------------------------------------------------------
什么是机器学习
--------------------------------------------------------------------

**传统程序和人写规则的区别,一张表就说清了:**

                   传统程序       机器学习
  -----------------------------------------------------
  规则是谁写的     人写的         机器从数据里找
  输入是什么       数据           数据 + 正确答案
  产出是什么       结果           一套判断规则(模型)
  难在哪           规则写不全     数据不够、规律不明显

  拿一个卖货的例子看差别——**给十天的进货量与销量**:

    进货量    10   12   14   16   18   20   22   24   26   28
    销量       9   10   13   14   17   19   21   22   25   27

  **人写规则很难下手**(多进点?少进点?到底几成?),
  **而让机器从这十组数据里找,一条式子就出来了:**

    销量 ≈ 1.015 × 进货量 -1.59

  用这条式子算一算:**进货 15 大约能卖 13.6、进货 25 大约能卖 23.8。**

  **这就是机器学习的核心动作:不是人告诉它规律,是它从数据里把规律算出来。**
  注意一点:**它学到的是【这批数据里的统计规律】,不是【懂了卖货这件事】。**

实测算出:销量约等于 1.015 乘进货量减 1.59。 人写规则很难下手,而机器从十组数据里就把式子算出来了——这就是机器学习的核心动作。

30 秒实验

  1. 再添两组数据(比如进货 30 卖 28),看式子的斜率和截距会怎么变。
  2. 想一想:如果这十天全是旺季,这条式子拿到冬天还准吗。

常见误区

  1. 以为机器学习是【让机器思考】。它是在数据里找统计规律。
  2. 以为数据越多就一定越好。有偏的数据,多了只会错得更一致。
自测三问(点开对答案) 1. 机器学习与传统程序的根本差别是什么? —— 传统程序由人写规则;机器学习由人给数据,机器自己从数据里找规律。 2. 机器学习的流程大致是什么? —— 准备数据、训练(反复比较并调整参数)、评估、拿去使用。 3. 为什么说它学到的不是理解? —— 它只掌握这批数据里的统计规律,不解释原因,数据有偏或超出范围就会失效。

相关笔记