1.数学含义
y = w * x
cost = 1/n ∑(y_pred - y)^2
grad = 2 * x * (x * w - y)
2.含义解释
线性回归反向传播
对cost函数求w导得出w的变化率,更新w求得最佳
3.代码实现
import math
# 数据
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]
w = 1.999
#线性传播,计算y = w * x
def forword(x):
return x * w
#计算损失cost
def cost(xs,ys):
cost = 0
for x,y in zip(xs,ys):
y_pred = forword(x)
cost += math.pow(y_pred - y, 2)
return cost/len(xs)
# 计算梯度
def gradient(xs,ys):
grad = 0
for x, y in zip(xs, ys):
grad += 2 * x * (x * w - y)
return grad/len(xs)
#训练模型
for epoch in range(100):
cost_val = cost(x_data,y_data)
grad_val = gradient(x_data,y_data)
print('Epoch:' ,epoch,'w = ',w,'loss = ',cost_val)
4.结果展示
Epoch: 0 w = 1.999 loss = 4.666666666666527e-06
Epoch: 1 w = 1.999 loss = 4.666666666666527e-06
Epoch: 2 w = 1.999 loss = 4.666666666666527e-06
Epoch: 3 w = 1.999 loss = 4.666666666666527e-06
Epoch: 4 w = 1.999 loss = 4.666666666666527e-06
Epoch: 5 w = 1.999 loss = 4.666666666666527e-06
Epoch: 6 w = 1.999 loss = 4.666666666666527e-06
Epoch: 7 w = 1.999 loss = 4.666666666666527e-06
Epoch: 8 w = 1.999 loss = 4.666666666666527e-06
Epoch: 9 w = 1.999 loss = 4.666666666666527e-06
·····································
·····································
·····································
Epoch: 92 w = 1.999 loss = 4.666666666666527e-06
Epoch: 93 w = 1.999 loss = 4.666666666666527e-06
Epoch: 94 w = 1.999 loss = 4.666666666666527e-06
Epoch: 95 w = 1.999 loss = 4.666666666666527e-06
Epoch: 96 w = 1.999 loss = 4.666666666666527e-06
Epoch: 97 w = 1.999 loss = 4.666666666666527e-06
Epoch: 98 w = 1.999 loss = 4.666666666666527e-06
Epoch: 99 w = 1.999 loss = 4.666666666666527e-06
本文介绍了线性回归模型的数学原理,包括y=w*x的线性传播公式,以及成本函数cost的计算方法:1/n∑(y_pred-y)^2。通过梯度计算梯度grad=2*x*(x*w-y),并利用反向传播更新权重w以最小化损失。提供的Python代码展示了训练过程,但输出显示w值未随训练迭代改变,可能是因为初始w值已接近最优解,导致损失始终为常数。
8万+

被折叠的 条评论
为什么被折叠?



