第一学期第四节课
很好,我们继续。
前面三节课,我们已经建立了机器学习最核心的几个概念:
现实世界
↓
数据 Data
↓
特征 Feature
↓
模型 Model
↓
参数 Parameter
↓
训练 Training
↓
预测 Prediction
今天我们进入一个非常关键的转折点。
因为很多人会产生一个疑问:
既然模型越复杂,参数越多,能力越强,那为什么不直接造一个拥有无限参数的模型?
答案是:
因为模型可能学会“答案”,却没有学会“规律”。
这就是今天的主题:
第一学期 第四节课
《为什么模型不能无限增加参数?——训练、泛化与过拟合》
本节目标
今天结束后,你应该理解:
什么叫训练集、测试集
什么叫泛化能力(Generalization)
什么叫过拟合(Overfitting)
为什么模型记住数据不等于智能
为什么大模型需要海量数据
为什么 GPT 这种模型能够回答没见过的问题
第一部分:生活中的例子(建立直觉)
一个考试的故事
假设有两个学生。
学生 A:
考试前:
背了1000道题。
考试:
老师原题出现。
结果:
100分。
但是:
换一道新题:
不会。
学生 B:
理解了数学公式。
考试:
原题不会。
但是:
新题也能解决。
问题:
谁真正学会了?
显然:
学生 B。
为什么?
因为:
学生 A:
记住答案
学生 B:
理解规律
机器学习也是一样。
模型有两种能力:
第一种:记忆
例如:
训练数据:
猫图片1
猫图片2
猫图片3
模型直接记住:
看到这个像素组合
输出猫
这叫:
Memorization(记忆)
第二种:理解规律
例如:
模型发现:
尖耳朵
胡须
眼睛结构
身体比例
这些共同出现。
所以:
新的猫:
也能识别。
这叫:
Generalization(泛化)
AI真正追求的是:
泛化能力。
第二部分:理论(训练集和测试集)
现在进入机器学习正式概念。
数据为什么要分?
假设我们有:
100万张猫狗图片。
不能全部拿来训练。
为什么?
因为:
你不知道模型是不是真的学会。
所以分成:
训练集 Training Set
用于:
调整参数
例如:
80万张图片。
测试集 Test Set
用于:
检查模型能力
例如:
20万张图片。
过程:
训练数据
↓
调整参数
↓
得到模型
↓
测试新数据
↓
评价能力
关键:
测试数据必须是:
模型没见过的。
否则:
没有意义。
第三部分:数学理解(什么叫拟合)
现在看一个简单例子。
假设:
我们有数据:
x y
1 2
2 4
3 6
4 8
规律:
明显:
y=2x
如果模型:
找到:
y=2x
很好。
因为:
它发现规律。
但是如果模型:
直接记:
x=1 → 2
x=2 → 4
x=3 → 6
x=4 → 8
也可以预测。
但是:
如果:
x=5
怎么办?
不知道。
所以:
真正好的模型:
不是:
把数据背下来。
而是:
找到:
生成数据的规律。
数学上:
我们希望:
模型学习:
真实分布:
$$
P(Y|X)
$$
而不是:
记忆:
训练样本。
第四部分:过拟合(Overfitting)
现在正式定义:
什么叫过拟合?
简单说:
模型在训练数据上表现很好,但是在新数据上表现很差。
例如:
训练:
准确率:
99.9%
测试:
准确率:
60%
说明:
模型:
背题。
不是:
学习。
为什么叫:
Over-fitting?
来看:
拟合是什么意思?
比如:
散点:
*
*
*
*
我们画一条线。
希望:
尽量接近所有点。
简单模型:
---------
可能:
误差较大。
复杂模型:
可能:
~~~~~~~
穿过所有点。
训练误差:
几乎0。
但是:
遇到新点:
可能乱跑。
所以:
太简单:
叫:
欠拟合(Underfitting)
太复杂:
叫:
过拟合(Overfitting)
关系:
模型复杂度
低
|
|
| 欠拟合
|
| 最佳
|
| 过拟合
|
高
第五部分:代码实践(观察过拟合)
我们用一个简单例子。
假设真实规律:
y = x^2
数据:
1 → 1
2 → 4
3 → 9
模型 A:
二次函数:
y=ax²+bx+c
可以很好学习。
模型 B:
100次多项式:
y=a100x100+...
它可以:
精确经过所有训练点。
但是:
新的 x:
可能预测爆炸。
这就是:
模型太强。
反而不好。
在深度学习里面:
类似:
模型参数太多。
数据太少。
容易:
记忆。
第六部分:GPU / 大模型工程联系
现在进入最重要部分。
你可能会问:
GPT 有几千亿参数,为什么没有严重过拟合?
这是大模型最有趣的地方。
传统机器学习:
认为:
参数数量
不能超过
数据量
否则容易过拟合。
但是大模型时代发现:
一个奇怪现象:
例如:
模型:
700亿参数
数据:
数万亿 Token
训练以后:
不仅没有过拟合。
反而:
能力越来越强。
为什么?
原因很多。
原因1:数据规模巨大
以前:
模型:
百万参数。
数据:
几千条。
现在:
模型:
千亿参数。
数据:
万亿Token。
比例完全不同。
原因2:神经网络有强大的表示能力
神经网络不是简单记忆。
它能够自动发现:
层级规律。
例如:
视觉:
第一层:
边缘
第二层:
纹理
第三层:
形状
第四层:
物体
语言:
第一层:
字符关系
中间:
词语关系
高层:
语义关系
原因3:训练方式不同
大模型训练:
不是:
只背答案。
而是:
预测任务。
例如:
输入:
北京是中国的____
模型预测:
首都
它必须学习:
语言规律。
一个非常重要的理解
GPT训练:
不是:
记住:
问题A
答案B
而是:
学习:
文字之间的概率关系
例如:
模型学习:
中国
后面
经常出现
北京
大量关系组合起来。
形成:
语言能力。
第七部分:今天知识总结
今天我们补充知识树:
数据
↓
Feature
↓
Model
↓
Parameter
↓
Training
↓
↓
泛化能力
核心概念:
1. 参数越多不一定越好
因为:
可能:
记住训练数据
而不是:
学习规律
2. 好模型看什么?
不是:
训练准确率。
而是:
未知数据表现
3. AI真正目标
不是:
记忆。
而是:
泛化。
课后思考题
问题1
如果一个模型:
训练集准确率:
100%
测试集准确率:
50%
说明什么?
问题2
为什么:
GPT训练数据越多,
通常能力越强?
数据只是越多越好吗?
为什么?
问题3(非常重要)
假设:
一个模型参数:
100亿。
训练数据:
100条。
你觉得会发生什么?
为什么?
下一节课预告
《从公式到神经网络:为什么简单模型不够?》
下一节我们开始进入:
神经网络诞生的原因。
我们会回答:
为什么线性模型无法解决复杂问题?
什么叫非线性?
神经元到底是什么?
为什么多个简单单元组合起来会产生强大能力?
为什么神经网络能够自动学习 Feature?
这节课之后,我们正式进入:
机器学习
↓
深度学习
的分界线。你会开始真正理解:
为什么今天的大模型不是传统机器学习,而是深度学习的产物。