第一学期第三节课
很好,我们继续。
到目前为止,我们已经建立了第一棵非常重要的知识树:
现实世界
↓
数据 Data
↓
特征 Feature
↓
模型 Model
↓
参数 Parameter
↓
预测 Prediction
上一节课最后留下了一个非常核心的问题:
如果 AI 看到的只是数字,为什么调整一些数字(参数),它就能逐渐学会世界规律?
这就是今天的主题。
第一学期 第三节课
《模型为什么能够学习?——参数到底是什么?》
本节目标
今天结束后,你应该理解:
什么是参数(Parameter)
参数为什么可以代表知识
模型为什么可以通过参数变化改变行为
为什么大模型需要几十亿、几千亿参数
参数和人脑神经元有什么关系
第一部分:生活中的例子(建立直觉)
先不要想 AI
我们先想一个普通人学习开车。
刚开始:
小明第一次开车:
方向盘转多少?
油门踩多少?
刹车力度?
全部不会。
于是:
教练告诉他:
方向盘向左多打一点
油门轻一点
刹车提前踩
经过很多次练习:
小明脑子里形成了一套经验。
以后:
遇到:
弯道
雨天
堵车
他可以自动处理。
问题:
小明学会开车以后。
他的知识存在哪里?
不是一本书。
不是某个文件。
而是:
大脑神经连接方式发生了变化。
AI也是一样。
训练以后:
模型里面没有:
猫图片
狗图片
文章原文
答案列表
而是:
大量数字发生了变化。
这些数字:
就是:
参数。
第二部分:理论(什么是参数)
我们回到最简单的模型。
小学公式:
$$
y=ax+b
$$
例如:
预测工资。
输入:
工作年限 x
输出:
工资 y
假设:
x=5年
模型:
y=10000x+5000
结果:
55000
这里:
x
是什么?
x 是 Feature
因为:
它来自现实:
工作年限
它不是模型自己决定的。
a 和 b 是 Parameter
因为:
它们决定模型行为。
例如:
如果:
a=10000
表示:
每增加一年:
工资增加10000。
如果:
a=5000
表示:
增长速度下降。
所以:
参数的本质:
控制模型如何理解输入。
一个重要思想
模型其实是一台机器。
输入:
Feature
经过:
参数控制的计算
输出:
Prediction
也就是:
输入
↓
模型
↓
输出
而参数决定:
这个模型是什么样。
第三部分:数学(参数为什么能表示知识)
现在深入一点。
假设:
我们有一个模型:
$$
y=ax+b
$$
现在:
数据告诉我们:
工作1年
工资20000
工作5年
工资60000
我们希望找到:
a是多少?
b是多少?
实际上:
我们是在寻找:
一组参数:
(a,b)
使得:
模型最符合现实。
例如:
第一次:
a=1000
b=1000
预测:
6000
错误很大。
调整:
a=10000
b=10000
预测:
60000
接近。
说明:
改变参数:
改变了模型理解世界的方式。
所以:
机器学习的本质:
不是:
学习数据
而是:
寻找一组最好的参数
这句话非常重要:
训练 = 找参数。
第四部分:代码(参数真的可以学习)
我们写一个最简单的机器学习程序。
目标:
让机器学会:
y=2x
的数据。
比如:
x y
1 2
2 4
3 6
4 8
我们不知道公式。
假设:
模型:
y = w*x
现在:
w不知道。
代码:
import torch
# 初始化参数
w = torch.tensor(1.0, requires_grad=True)
# 数据
x = torch.tensor([1,2,3,4])
y = torch.tensor([2,4,6,8])
for i in range(100):
# 预测
pred = w*x
# 计算错误
loss = ((pred-y)**2).mean()
# 计算梯度
loss.backward()
# 修改参数
with torch.no_grad():
w -= 0.01*w.grad
w.grad.zero_()
print(w)
最后:
你会看到:
w≈2
机器自己发现:
y=2x
注意这里发生了什么?
开始:
w=1
模型认为:
y=x
错误。
训练:
不断修改:
w
1.1
1.5
1.8
1.99
2.0
最后:
找到规律。
这就是:
参数学习。
第五部分:GPU / 工程(为什么大模型参数这么多)
现在进入大模型。
刚才:
一个参数:
w
就能学习一个简单规律。
但是现实世界复杂得多。
例如:
理解一句话:
苹果发布新手机
里面有:
苹果 = 公司?
苹果 = 水果?
发布 = 动作?
新 = 时间关系?
手机 = 产品?
需要理解:
大量关系。
一个简单模型:
几个参数:
不够。
于是:
增加参数。
从:
10个参数
到:
100万个参数
到:
10亿参数
到:
700亿参数
为什么参数越多能力越强?
因为:
参数提供了更多"表达空间"。
举个类比。
一个小孩:
只能记住:
猫有四条腿
狗会叫
成年人:
可以理解:
猫的行为
猫和生态关系
猫在人类文化中的意义
为什么?
因为:
大脑连接更加复杂。
AI里面:
参数就是:
"可调整的连接"。
参数是不是知识?
这是一个非常深的问题。
答案:
是,但不是人类意义上的知识。
例如:
GPT知道:
巴黎是法国首都
但是模型里面没有:
Paris -> France -> Capital
这样的表。
而是:
大量参数组合后:
产生这种概率。
比如:
输入:
法国首都是?
模型内部:
大量参数计算。
最后:
输出:
巴黎
所以:
参数不是:
知识数据库。
参数更像:
压缩后的世界规律。
第六部分:总结 + 思考
今天我们建立了一个核心理解:
1. 模型是什么?
模型:
输入
↓
数学计算
↓
输出
2. 参数是什么?
参数:
决定模型行为的数字
3. 训练是什么?
训练:
不断调整参数
↓
让预测更准确
4. 大模型为什么参数多?
因为:
世界规律非常复杂。
需要更多参数表达。
现在知识树变成:
现实世界
↓
数据 Data
↓
特征 Feature
↓
模型 Model
↓
参数 Parameter
↓
训练 Training
↓
预测 Prediction
课后思考题
问题1
假设:
一个模型:
y=ax+b
如果:
a和b固定。
它还能学习吗?
为什么?
问题2
为什么说:
参数 ≠ 数据
例如:
GPT训练完成以后,
为什么不会保存所有训练文本?
问题3(非常重要)
如果:
GPT-4有几千亿参数。
那么:
是不是:
参数越多一定越聪明?
如果不是,
还需要什么?
(提示:下一节课会讲)
下一节课预告
《为什么模型不能无限增加参数?——训练、泛化和过拟合》
这是机器学习历史上最重要的问题之一。
我们会讲:
为什么模型记住答案不等于学会规律?
什么叫过拟合?
为什么一个模型考试满分,但是现实表现很差?
为什么 GPT 训练几十万亿 Token,却还能回答没见过的问题?
为什么大模型需要海量数据?
这一节会连接:
参数
↓
训练
↓
泛化能力
↓
大模型为什么有效
也是进入神经网络之前最后一个重要基础。