2026/7/27 14:03:28

机器学习到底是什么——别再被“AI万能论“给忽悠了

机器学习到底是什么——别再被“AI万能论“给忽悠了 前两天有个做销售的朋友请我吃饭酒过三巡突然压低声音问我哥们儿你跟我说实话现在外面说的那些AI自动建模平台是不是我啥都不用干把数据倒进去它自己就把模型训好了我差点把嘴里的啤酒喷出来。这种问题我不是第一次听到了——AI是不是要取代程序员了机器学习是不是就是个黑盒子往里灌数据往外吐结果我高中数学都不及格能不能转行做机器学习工程师每次听到这种问题我都得深吸一口气然后从头开始解释机器学习没那么神它就是个用数据拟合函数的工具核心逻辑跟初中数学里的线性回归没有本质区别只是现在拟合的函数复杂了亿点点而已。今天咱们就从根儿上捋一遍——机器学习到底在干嘛。本质是找函数从数学视角看机器学习就一句话给你一堆输入X和输出Y的配对数据让你找一个函数f使得f(X)尽可能接近Y。你手写识别里X是28x28的像素矩阵Y是0到9的数字你要找到一个f能把像素矩阵映射到正确的数字。推荐系统里X是你的浏览历史和用户画像Y是你喜不喜欢某个商品f要预测出你可能喜欢的商品列表。自动驾驶里就更复杂了X是摄像头和雷达的实时数据流Y是方向盘转多少度、油门踩多深f要能实时把感官输入映射到驾驶指令。你看本质上全是X到Y的映射数学上就是一个函数拟合问题。只不过以前我们手动设计这个函数线性回归、逻辑回归、决策树现在用深度神经网络让机器自己去学这个函数的结构。关键问题这个学习是怎么发生的如果你把机器学习比作教小孩认字那就好理解了。你指着一只猫说猫小孩记住了再指一只狗说狗他也记住了。多指几次小孩自己就总结出规律了——哦尖耳朵、长胡须、喵喵叫的是猫耳朵耷拉、汪汪叫的是狗。神经网络的学习本质上就是这个过程前向传播是看——把输入数据像素一路传过各层网络得到预测结果反向传播是纠错——拿预测结果跟真实标签比算出误差然后从输出层往输入层倒着传回去逐层调整每个神经元的权重和偏置让下次预测误差更小一点。这个过程反复几万次、几十万次网络里的那几千万个参数就被调试到了一个状态——在这个状态下它对于训练数据里的绝大多数样本都能给出正确的预测。细节决定成败特征工程 vs 端到端学习在这个找函数的大框架下有个历史分水岭特别值得聊——特征工程时代和深度学习时代的区分。2012年以前机器学习从业者大部分时间都在干一件事——设计特征。你拿到一堆原始数据不能直接喂进模型得先把有用的信息手工提炼出来。比如做图像识别你得设计SIFT、HOG、LBP这些手工特征提取器把图像里的边缘、角点、纹理信息变成一串数字向量再把这串向量塞进SVM或者随机森林里训练。这个阶段的模型相对简单但特征设计特别考验领域知识——你得懂图像处理、懂信号分析、懂这个特定场景里什么信息重要。所以那个时候的机器学习工程师一半是数学家、一半是行业专家。2012年AlexNet横空出世之后局面彻底变了。深度学习用卷积神经网络自动从原始像素里提取特征——不再需要人设计SIFT和HOG了网络自己在训练过程中学出了哪些像素组合最有区分力。这就是所谓的端到端学习——原始输入到最终输出中间全由网络自己搞定人的干预降到了最低。但不用手工设计特征不等于不用做特征工程。工业界里有一句老话——Garbage in, garbage out你喂进去的数据质量不行模型再先进也没用。真实数据里全是缺失值、异常值、格式不一致、标注错误——这些东西不做预处理深度学习直接硬吃训出来的模型也是一团浆糊。训练集、验证集、测试集——这三个东西分不清楚的人活该被骂机器学习里最基本的实验原则就是数据隔离。你把所有数据混在一起训模型训完之后在同一个数据集上测试——这种做法叫数据泄露做出来的指标全是假的因为模型已经见过测试样本了相当于考试前把答案看了。正确做法是把所有数据随机分成三份。训练集Train Set用来更新模型参数通常占70%-80%。验证集Validation Set用来调试超参数和选择模型通常占10%-15%。你每次调完参数在验证集上测一下看效果有没有变好再决定要不要保留这次改动。测试集Test Set整个项目从头到尾只能用一次——在确定所有超参数和模型都选定之后最后跑一次测试集得到最终的真实泛化性能。这个结果才值得写进报告。很多人偷懒用验证集调完参数之后又拿验证集当测试集来报指标这属于学术不端——虽然后果没那么严重但你的模型真实表现一定比你报出来的低因为你在验证集上已经过拟合了。过拟合 vs 欠拟合——机器学习里永远在平衡的两个极端过拟合是新手最容易犯的错误——模型在训练集上表现神勇、准确率99.9%一到验证集直接腰斩到70%。原因就是模型把训练数据里的噪声也记住了以为那些是规律。欠拟合则是另一个极端——模型太简单了连训练数据本身的规律都没抓住。训练集准确率就50%验证集也50%这就是模型表达力不足需要换更复杂的模型或者加更多特征。工业界的真实项目往往是先过拟合再正则化——先用一个超大模型硬训验证集上表现好就保留、表现差就加Dropout、加L2正则化、做数据增强。这是一个反复试探、来回折腾的过程远没有论文里写的那么顺畅。机器学习不是魔法它有你想象不到的边界最后我想说一个很多新人都不理解的事情——机器学习模型只在训练数据的分布范围内有效。你拿白天的数据训的模型拿到晚上用就是不行拿夏天的数据训的拿到冬天就是不行。模型不懂推理它只是在插值——在它见过的数据点之间做平滑预测。一旦输入超出了训练数据的覆盖范围它就彻底懵了。这就像你教一个小孩认水果只教过苹果和香蕉某天你拿个火龙果给他他不知道这是什么——只能瞎猜。模型也是一样它只能认它见过的东西。所以那些喊通用人工智能马上要来了的人压根不明白现在的深度学习本质是在特定数据集上的高度复杂插值离真正的理解和推理还差了十万八千里。机器学习很强大但它不是魔法它有它的适用范围和前提条件。