目的:得到一个功能为y=2x+0的模型
- 随机初始化 w 和 b
- 用一批数据 (x, y) 做预测:
y_pred = w*x + b - 计算误差(loss):
看预测和真实差多少 - 根据误差,计算"该怎么改 w 和 b"(梯度)
- 微调 w 和 b(往更好的方向走一点)
- 重复很多次
最终:
让所有数据的误差尽可能小
→ 得到 w≈2, b≈0
python
import random
# 初始化参数
w = random.random()
b = random.random()
print(f"w={w:.4f}, b={b:.4f}")
lr = 0.001 # 学习率
# 构造数据:y = 2x
data = [(x, 2*x) for x in range(10)]
for epoch in range(50):
total_loss = 0
for x, y_true in data:
# -------- forward --------
y_pred = w * x + b
# -------- loss --------
loss = (y_pred - y_true) ** 2
# -------- backward(手写梯度)--------
grad_w = 2 * (y_pred - y_true) * x
grad_b = 2 * (y_pred - y_true)
# -------- update --------
w = w - lr * grad_w
b = b - lr * grad_b
total_loss += loss
print(f"epoch {epoch}, loss={total_loss:.4f}, w={w:.4f}, b={b:.4f}")