一个人的产线 书架

第 08 章 / 共 15 章

第八章 · 算法祛魅:它其实是在找一个函数

算法这个词,被你想复杂了

你大概听过太多次「算法」这个词,配着一堆吓人的符号、希腊字母、还有「深度」「神经」这类唬人的形容词。于是你默认:这是数学家的地盘,跟一个不懂代码的人没关系。

这一章我要拆掉这个误会。我不会推一个公式,但我保证:读完之后,你能拿常识判断别人给你的模型「靠不靠谱」。这比会推公式有用得多——公司里会推公式的人不缺,缺的是能一眼看出「这轮子不圆」的人。

先给你一个贯穿全章的类比,记住它,后面所有概念都挂在这上面:

我在纸上点了一堆点,不告诉你它们背后的规律。你的任务是描一条线,尽量穿过这些点。以后我随便说一个横坐标,你看着你描的线,就能报出纵坐标。

整个机器学习,本质上就是这件事。剩下的全是细节。

所谓模型,就是从数据里找一个函数

算法 / 模型:说白了,就是一个从「输入」到「输出」的转换规则。你给它一个输入,它吐给你一个输出。判断螺丝松没松:输入是这颗螺丝的拧紧扭矩,输出是「松」或「紧」。这个「扭矩 → 松/紧」的规则,就是模型。

关键在于:这个规则不是人写死的,是机器从例子里自己找出来的。

传统写代码,是你把规则想清楚,一条条 if 敲进去:扭矩小于 8 就是松。可现实里规律没这么干脆——同一颗螺丝,材质、温度、垫片厚度都会让那个界限飘。你要写的 if 越来越多,最后自己都绕晕。

机器学习换了个思路:你别去想规则了,你只管把大量「输入配上正确答案」的例子喂给它,让它自己去凑那条规律。这就是开头那个描线的游戏——你不告诉它函数,你只给它一堆点。

你在中学学过函数:y = 2x + 1,给个 x 算个 y。机器学习就是反过来——不给你公式,只给你一堆 (x, y) 的对子,让机器把那个公式猜出来。所以你以后听到「模型」,脑子里就换成「一个被猜出来的函数」,八九不离十。

训练:反复拧旋钮,直到对准

训练:就是机器「凑那条线」的过程。它先瞎画一条,看看离你给的点差多远,然后往差得少的方向挪一点,再看,再挪……如此反复成千上万次,直到那条线尽量贴合所有点。

想象你在拧老式收音机的旋钮找电台:一开始全是沙沙的杂音,你慢慢拧,声音越来越清楚,直到最清楚那一刻你停手。训练就是这样,只不过要拧的旋钮成千上万个,机器自己拧,你不用管。

你作为 PM 要知道的只有一件事:训练需要「带正确答案」的例子。想让模型认得出缺陷,你得先有一堆图片,每张都标好「这是好的」「这是坏的」。这些标注从哪来、准不准、够不够——这才是你该操心的,不是旋钮怎么拧。第 9、10 章会反复回到这件事上。

特征:你喂给它的是不是「有用的线索」

特征:你拿来判断的那些线索。判断螺丝松没松,你可以看它的图像像素,也可以看拧紧时的扭矩曲线,还可以听拧的时候有没有异响。每一样都是一个特征。

这里有个反直觉、但极其重要的结论:

选对线索,比换一个更高级的模型有用得多。

打个比方。你想判断西瓜甜不甜。如果给你的线索是「西瓜的重量」,那你再聪明也判断不准——重量跟甜度关系不大。可如果给你的线索是「敲一下的声音」和「藤蔓的干枯程度」,一个普通人都能判断个八九不离十。线索本身没带信息,再牛的模型也变不出信息来。

所以当有人跟你说「模型效果不好,我们换个更深的网络试试」,你要会追问一句:我们喂给它的线索,本身够不够判断这件事? 很多时候,答案是不够——螺丝松紧的关键信息在扭矩里,你却只喂了张模糊的照片。换十个模型也没用。这是第 9、10 章里最常见的坑,先在这里给你打个预防针。

过拟合:只会做原题的学生

现在讲全章最重要的一个词,也是你未来听汇报时最该警惕的一个词。

过拟合:模型把训练用的那批例子背得太死,连里面的噪声、巧合都当成规律背了下来。结果它在见过的题上满分,一换新题就傻眼。

回到描线的游戏。我给你 20 个点,其中有几个因为我手抖,点歪了。一个「刚好」的做法是描一条平滑的线,大方向对,个别歪点就让它歪着。可你要是较真,非要让线穿过每一个点,就得画出一条扭来扭去、上蹿下跳的鬼画符。这条鬼画符在这 20 个点上「一分不差」,可我再给你第 21 个点,它离谱得没边。

那条扭曲的线,就是过拟合。它不是在学规律,是在死记硬背。

换个人话:过拟合就是「只会做原题、不会变通的学生」。平时刷过的题门门满分,一到考场遇上新题型就抓瞎。你身边一定有这种同学。模型也会这样,而且比人更容易这样。

为什么说它是头号敌人?因为它会伪装成成功。团队拿训练数据一测,指标漂亮得不得了,皆大欢喜。可这漂亮全是背出来的,一上真实产线就崩。等你发现,钱和时间都花出去了。第 14 章「AI 骗你时你怎么知道」,源头就在这里。

怎么防?把考卷藏起来一部分

办法朴素得让你意外:把你的例子分成两堆。一堆给机器训练(平时做的练习册),另一堆藏起来,训练时绝对不给它看(期末考卷)。训练完,再拿这堆没见过的去考它。

在练习册上得高分不算数——那可能是背的。只有在藏起来的考卷上也得高分,才说明它是真学会了。你作为 PM,验收时一定要问一句:这个成绩,是在模型见过的数据上测的,还是没见过的? 这一句话,能戳穿一大半虚假的漂亮。

泛化:能在没见过的数据上管用,才是目的

泛化:模型在从没见过的新数据上,也一样管用的能力。这才是我们做模型的真正目的——你要它上产线判断的,永远是它没见过的、下一颗螺丝、下一块工件。

过拟合和泛化是一对冤家:背得越死(过拟合越重),换到新数据上越废(泛化越差)。你追求的从来不是「在旧数据上多完美」,而是「在新数据上多可靠」。记住这句,你就抓住了机器学习的牛鼻子。

「准确率 99%」可能是在骗你

最后这一节,为整个工业场景埋一根最粗的线。请务必读进去。

假设产线上 1000 个零件,只有 10 个是坏的。现在有个模型,号称准确率 99%。听起来棒极了对吧?

我告诉你一个作弊的模型,它也能拿到 99%:不管来什么,一律说「好」。 1000 个里 990 个真的好,它全说对了,990÷1000 = 99%。可它一个坏的都没抓到——而抓坏的,恰恰是你装这套设备的唯一理由。

当好坏比例悬殊时,「准确率」这个词几乎没有意义。它会把一个彻底没用的模型,包装成一个优等生。

所以工业上真正要看的是另外两个数,它们盯着「坏的那 10 个」:

这俩通常是跷跷板,按下一头翘起另一头。你把模型调得草木皆兵、一点风吹草动就报警,坏的基本都能抓住(查全率高),但会冤枉一堆好件(查准率低)。反过来,你让它谨慎点、只在铁证如山时才报警,冤枉的少了(查准率高),可也会放跑一些坏的(查全率低)。

没有哪个更好,只有哪个更适合你的场景。这正是你 PM 该拍板、也只有你能拍板的地方:

看出来了吗?漏检和误检哪个更要命,是个业务问题,不是技术问题。 算法工程师答不了,只有懂业务的你能答。这就是你在算法这张牌桌上,最硬的那张牌。

这一章,你只要带走一句话

你不需要会造轮子。但你得会判断一个轮子圆不圆——而判断靠的是常识和对数据、对业务的理解,不是数学。

具体到能马上用的,就三个问句,未来每次听模型汇报你都掏出来:

  1. 喂给它的线索,本身够判断这件事吗?(特征对不对)
  2. 这个成绩,是在它没见过的数据上测的吗?(有没有过拟合、能不能泛化)
  3. 在我这个场景里,漏检和误检哪个更要命,指标是照这个来的吗?(查全还是查准)

把这三问揣兜里,第 9 章的视觉缺陷检测、第 10 章的时序异常,你就不是被工程师牵着走,而是能站着跟他们对话了。地基打好了,我们下章上手真东西。

一个人的产线
面向对世界有好奇心的人 · 费曼式写法 · 由多个 AI 代理撰写与互相审校