机器学习不是一种新算法,而是一种新思维——把编程从"人类告诉机器怎么做"变成了"机器从例子中学会怎么做"。这是计算机科学史上最重要的范式转移之一。
程序员的工作:写出 f(x) 的逻辑
例:if 邮件含"免费" → 垃圾邮件
程序员的工作:收集 (x, y) 样本对,选择模型架构
例:给 10000 封已标注邮件 → 模型自己学判断
| 场景 | 传统编程 | 机器学习 |
|---|---|---|
| 识别猫图 | 写规则:圆脸、尖耳、胡须… | 给 10000 张标注过的猫图 |
| 翻译 | 写语法规则 + 词典 | 给大量中英文对照文本 |
| 推荐 | if 用户看了 A 就推 B | 分析百万用户行为找模式 |
| 下围棋 | 写棋盘评估函数 | 自我对弈数百万局 |
💡 关键洞察:如果一个问题你能清晰地写出规则,那就用传统编程。如果你"知道答案但说不清规则",那就用机器学习。
用一句话说:机器学习 = 优化问题
| 符号 | 含义 | 直觉 |
|---|---|---|
| fθ | 模型(带参数 θ) | "这是我的猜想函数" |
| xi | 第 i 个输入样本 | "这张图" |
| yi | 第 i 个真实标签 | "这张图实际是猫" |
| L(ŷ, y) | 损失函数 | "猜得有多错" |
| Σ | 对所有样本求和 | "所有样本上的总犯错" |
| argminθ | 找到使总犯错最小的 θ | "调参让总犯错最小" |
有标准答案,照着学。
数据:(xi, yi)
分类:猫/狗;回归:房价预测
类比:老师出题 → 学生作答 → 老师批改 → 改正
没有标准答案,自己找结构。
数据:xi only
聚类:用户分群;降维:数据压缩
类比:给你一堆动物图片,自己分类
没有标准答案,做对了给糖吃。
信号:环境奖励
AlphaGo 自我对弈,RLHF 训练 ChatGPT
类比:训练小狗——坐下给饼干,不坐不给
| 维度 | 监督学习 | 无监督学习 | 强化学习 |
|---|---|---|---|
| 需要标签? | ✅ 需要 | ❌ 不需要 | ❌ 不需要(要奖励) |
| 学习信号 | 正确答案对比 | 数据内在结构 | 环境反馈的奖励 |
| 反馈时机 | 即时 | N/A | 可能延迟 |
| 数据要求 | 标注成本高 | 数据量大就行 | 需要交互环境 |
| 难度 | ★★☆ | ★★★ | ★★★★ |
少量标注 + 大量未标注数据。先用少量标签训粗糙模型 → 给未标注打伪标签 → 全部数据再训。
从数据本身构造"伪标签"。把一句话遮住一个词 → 让模型猜遮住的是什么。这就是 GPT 的训练方式。
1. 定义问题
├── 分类还是回归?监督还是无监督?
└── 成功的标准?(准确率 95%?)
2. 准备数据
├── 收集 → 清洗 → 标注
├── 训练集 / 验证集 / 测试集 划分
└── 特征工程(传统 ML 必备)
3. 选择模型
├── 从简单开始:线性模型 / 决策树
└── 逐步升级:集成方法 / 神经网络
4. 训练与调参
├── 训练:优化器找到最优参数 θ
├── 验证:在验证集上调超参数
└── 测试:最终在测试集上报告成绩
5. 部署与监控
├── 模型上线
└── 监控性能变化(数据分布漂移)
机器学习的"范式革命"意义不在算法本身,而在它改变了我们对待问题的方式:
以前:这个问题太难了,因为规则太复杂写不出来。
现在:这个问题不难,只要我有足够多的例子。
这也是为什么互联网时代 ML 才真正爆发——互联网 = 海量数据的工厂。