🎯 目标
我们想做的是:造一个“假的”房价/身高/成绩数据,但是它符合一个“直线规律”,同时有一点点随机误差。
公式就是:
y=Xw+b+ϵy = Xw + b + \epsilony=Xw+b+ϵ
- XXX:输入(特征,比如房子的面积、楼层数)
- www:权重(每个特征对结果的影响有多大)
- bbb:偏置(基础分,相当于“起点”)
- ϵ\epsilonϵ:噪声(小的随机扰动,让数据更真实)
👶 轻松理解
举个例子:
你考试成绩 yyy 可能取决于两件事:
- 作业分数 x1x_1x1
- 考勤次数 x2x_2x2
那你可以写成:
y=2⋅x1−3.4⋅x2+4.2+小误差y = 2 \cdot x_1 - 3.4 \cdot x_2 + 4.2 + \text{小误差}y=2⋅x1−3.4⋅x2+4.2+小误差
-
这里的
w = [2, -3.4]2表示“作业分数”每多 1 分,最后成绩多 2 分;-3.4表示“缺勤次数”每多 1 次,最后成绩少 3.4 分;
-
b = 4.2就像“老师给的基础分”。
🖥 程序里 w 的作用
true_w = torch.tensor([2, -3.4]) # 这就是 w
true_b = 4.2 # 这是 b
-
true_w:我们设定的“真实规律”里,每个特征的权重。 -
在函数
synthetic_data里,它会跟x(特征)做 矩阵乘法:y = torch.matmul(x, w) + b就是算 y=Xw+by = Xw + by=Xw+b。
所以,w 的作用就是告诉程序:每个特征对结果的贡献是多少。
📝 总结
w是“方向盘”,决定特征怎么影响结果。b是“起点分”,即使啥都不做也有的分数。ε是“噪声”,让结果不会死板地都在一条直线上。
这样生成的数据就很像现实中的情况。