调整学习率(吴恩达机器学习编程作业1)

介绍

本文主要是展示相同迭代次数不同学习率、相同学习率不同迭代次数对应代价函数变化的情况。本着一不做二不休的情况想探究一哈学习率过大和过小的情况。
基于吴恩达机器学习编程作业1中的二元线性回归题目探讨的。题目的数据集中有3个特征变量,俄勒冈州波特兰市的房子面积,房子卧室数量和房价。题目要求我们根据房子面积和房子卧室数量两个特征建立2元线性回归方程预测房价。
下面分4波学习率进行展示,第一张图片是按照instruction给的建议alpha 取0.3,0.1,0.03和0.01。
第二张图片在第一波的基础上加了alpha取1和0.0001的情况。
第三张图片、第四张图片是alpha分别取2、5。第一波和第二波都比较正常,但是第三波和第四波出现了反常情况。具体介绍见下文。
第五张图片是alpha取5,迭代次数分别取21、22、23、24 。第六张图片是alpha取5,迭代次数分别取25、30、35、40 。

改变学习率

在这里插入图片描述 从图中可以看出,alpha为0.3时代价函数下降最快,迭代9次后,代价函数的值就变为稳定值2.3e+10
alpha 取0.1, 迭代30次后,代价函数的值就变为稳定值2.3e+10,速度约等于alpha为0.3的三分之一
alpha 取0.03, 迭代100次后,代价函数的值就变为稳定值2.3e+10。
alpha 取0.01, 迭代302次后,代价函数的值就变为稳定值2.3e+10,速度约等于alpha为0.03的三分之一
通过对比alpha=0.3和alpha=0.1以及alpha=0.03和alpha=0.01,可以不严谨地得出一个结论,代价函数减小速度与学习率大小成反比。

alpha 取1的时候,代价函数几乎在迭代不超过10次后就减少到稳定值,代价函数减小地极快
alpha 取0.0001, 迭代400次后,代价函数的值基本没有变化,代价函数减小地极慢。

在这里插入图片描述 alpha 取1的时候,代价函数的变化出现了异常,先是基本不变,然后在迭代400左右的时候飙升。而且注意到代价函数的数量级飙升到1e+259数量级。更多的探讨在下面alpha 取5的时候展开讨论。
在这里插入图片描述alpha 取5的时候,和alpha取1的时候类似,代价函数的变化出现了异常,先是基本不变(在后文可以知道其实变了,只是在图像中不明显),然后在迭代180次左右的时候飙升。而且注意到代价函数的数量级飙升到1e+305数量级,相比于alpha取1时代价函数飙升到1e+259,数量级还是增大不少。此时得到的线性回归方程参数为
Theta =
[
-2.78e+114
-5.23+129
-5.23+129
]
针对房间面积1650平方米,3个卧室的房价3.48e+129dollars!!!
考虑到在代码中设置的迭代次数为400次,但是上图中迭代次数直到了180次,所以在代码中更改迭代次数分别为10,20,50,100,观察代价函数的图像变化情况。

接着,我就想到一个问题,**为啥代价函数总是在迭代次数最后几次暴增?**我想了一下,**觉得可能是其实每次迭代,代价函数的增长都很快,可能是越来越快,**这样积累下来就导致随着迭代次数越来越多,代价函数增加地就越来越快,导致最后的迭代使得代价函数增长的数量级比前面的迭代使得代价函数增长的数量级要大得多。

改变迭代次数

在这里插入图片描述**保持学习率alpha = 5不变,把迭代次数修改为21、22、23、24,**代价函数的数量级依次为1e+43、1e+45、1e+47、1e+48。每增加1个迭代次数,代价函数的数量级变为原来100倍左右。
在这里插入图片描述
**保持学习率alpha = 5不变,把迭代次数修改为25、30、35、40,**代价函数的数量级依次为1e+50、1e+58、1e+66、1e+75。每增加1个迭代次数,代价函数的数量级变为原来1e+8倍左右。

结论

综上,学习率过大会导致代价函数不增反减,学习率过小会导致代价函数基本不会减小。学习率适中,代价函数减少速度与学习率大小成反比。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章