问题预览/关键词
- 更新梯度下降对模型拟合,等高线图,3d空间图的变化。
- 什么是批量梯度下降。
- 实验目标
- 计算梯度
- 运行梯度下降
- 梯度下降迭代次数和成本函数的关系可视化
- 模型预测
- 在等高线图上的梯度下降
- 学习率过大
- 报错问题
笔记
1.模型拟合,等高线图,3d空间图的变化
3.5课节有一样的图,不断运行梯度下降,成本函数越靠近等高线图的中心圈,w,b越接近最优解。
2.批量梯度下降
批量梯度下降:每一步梯度下降都会考虑所有训练样本。在计算导数项的求和时,我们会计算所有训练样本求和而不是计算部分训练样本求和。
- 梯度下降还有其它方法,只会看部分训练样本。
3.实验目标
使用梯度下降算法自动优化w,b。
4.计算梯度(导数项)
- 调用一次该函数,视为计算一次梯度。
- for循环m次,m为训练样本总数,这里体现了批量梯度下降(计算所有训练样本)。
5.运行梯度下降
- for循环表示迭代次数,每次迭代都要计算梯度然后更新w,b。
- 在迭代次数内,每次都要计算并保存成本函数的值。
- 打印部分成本函数的值。
- 给定w,b初始值为1,学习率设置为0.01,梯度下降次数设置为10000。
- 随着梯度下降不断计算并更新,成本函数,w,b三者的值趋近于稳定,表示找到了w,b最优解。
6.梯度下降迭代次数和成本函数的关系
- 第一张图,前100次迭代,成本函数的值快速下降到10000以下,也就是最初阶段变化迅速。
- 第二张图,第1000次迭代开始到第10000次,成本函数值变化范围从3.5无限趋近于0,变化较小。
7.使用模型预测
- 找到了最优的w,b,代入线性回归的函数进行房价预测。
8.在等高线图上的梯度下降
- 红色箭头表示梯度下降过程,越靠近中心圈,幅度越小。课节4.4提到过,是因为导数项越来越小。
- 缩小范围进行更细致的观察,幅度更小了。
9.学习率过大
-
成本在增加,w,b的绝对值也在增加,没有靠近成本函数最小值。
-
可视化,可以看到w,b在正负之间震荡,成本在增加。
10.报错问题
- 学习率过大的可视化的代码会报错OverflowError,
- 需要在lab_utils_uni.py文件中修改为:
- cost = np.zeros_like(w_array,dtype=‘float64’)
- z=np.zeros_like(tmp_b,dtype=‘float64’)
- 然后ctrl+s保存文件。
- 回到代码页面,重启内核并运行。
总结
目前接触到的梯度下降是批量梯度下降,表示每次计算梯度,我们都会包括所有的训练样本。其它类型的梯度下降可能计算部分训练样本。我们需要设置迭代次数来进行梯度下降,先写好计算梯度也就是计算导数项的函数,然后循环迭代次数来不断计算梯度并更新梯度,同时也保存好每次更新的w,b。通过二维关系图和等高线图,我们看到梯度下降一开始可以大幅度降低成本函数,随着迭代次数提升,更新的幅度慢慢减少。而如果学习率设置过大,梯度下降会导致成本函数的值上升。