试用梯度下降法逼近函数最优解

一道课后思考题:
试用梯度下降法,逼近函数y=4w^2+5w+1的最优解,迭代4-5步。
解:
把导函数看作梯度,沿梯度反方向迭代。
在这里插入图片描述
程序如下:
试用梯度下降法逼近函数最优解_第1张图片

我们来看看画出的图像:
试用梯度下降法逼近函数最优解_第2张图片
我们将图片放大:
试用梯度下降法逼近函数最优解_第3张图片
可以看出,5次迭代后,(w,y)已经趋近于最低点
我们可以在看一看w,y的值来加以确认:
w=[0,-0.500000000000000,-0.600000000000000,-0.620000000000000,-0.624000000000000,-0.624800000000000];
y=[0,-0.500000000000000,-0.560000000000000,-0.562400000000000,-0.562496000000000,-0.562499840000000];
实际上学习率为0.1是一个实验得出的比较合适的值。

如果我们取值小一点,令alpha=0.01,图像为:试用梯度下降法逼近函数最优解_第4张图片
可以明显看出迭代次数不够,增加迭代次数,我们也是可以得到最优解的,但是收敛的速度会比较慢。

如果我们取值大一点,令alpha=0.3,图像为:
试用梯度下降法逼近函数最优解_第5张图片
可以明显看出学习率较大,导致步长过大,迭代后发散了,就无法求出最优解。

ps:
因为本人使用matlab还十分生疏,编写的代码可能比较复杂了,如果有人可以编写的更为精炼,欢迎指教。
如果本文有任何本人没发现的错误,欢迎指正。
如果有任何问题,欢迎提出~

你可能感兴趣的:(机器学习,机器学习,随机梯度下降,matlab)