梯度下降
在最低点的左边,w需要调大,最低点的右边,w需要调小
利用k,最低点斜率为0
- 得到代价函数曲线在w这个点上的斜率k
- 根据k正负调整w
如果每次调整的幅度确定,调整的速度很慢且可能在最低点反复横跳
希望:远离最低点下降速度快,越接近最低点下降速度越慢
令w=w-k,k离最低点越远绝对值越大,w下降的也就越快
同样的,使用学习率alpha控制下降的速度
编程实现
-
初始化
x, y = dataset.get_beans(100) plt.scatter(x, y) # 初始 w = 0.1 -
梯度下降
对于每一对w,计算k,更新w,重复更新1000次
for num in range(1000): for i in range(100): # 取出每一个值 a = x[i] b = y[i] # 计算k k = 2 * (x ** 2) * w - 2 * (x * y) alpha = 0.05 w = w - alpha * k -
绘制静态结果
y_pre = x * w plt.plot(x, y_pre) plt.show()注意要用更新后的w值再次计算预测函数

注意,fori内计算k时应该用具体的a、b值而不是x、y数集,否则得出的w是个数集,结果是个曲线
for num in range(1000):
for i in range(100):
# 取出每一个值
a = x[i]
b = y[i]
# 计算k
k = 2 * (a ** 2) * w - 2 * (a * b)
alpha = 0.05
w = w - alpha * k

拟合的非常不错
绘制动态图像
-
清空窗口,绘制静态内容
plt.clf() # 清空窗口 plt.scatter(x, y) y_pre = x * w -
限定坐标范围,绘制动态内容
plt.xlim(0, 1) plt.ylim(0, 1.2) plt.plot(x, y_pre) -
暂停
plt.pause(0.01)
本文详细介绍了如何使用梯度下降算法进行权重更新,通过动态调整步长k和学习率alpha来优化模型。通过实例展示了如何在Python中实现,并观察了拟合效果和动态图像。核心概念包括代价函数、斜率计算、学习率控制以及优化过程的可视化。
1916

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



