试用梯度下降法逼近函数最优解
一道课后思考题:
试用梯度下降法,逼近函数y=4w^2+5w+1的最优解,迭代4-5步。
解:
把导函数看作梯度,沿梯度反方向迭代。
程序如下:
我们来看看画出的图像:
我们将图片放大:
可以看出,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,图像为:
可以明显看出迭代次数不够,增加迭代次数,我们也是可以得到最优解的,但是收敛的速度会比较慢。
如果我们取值大一点,令alpha=0.3,图像为:
可以明显看出学习率较大,导致步长过大,迭代后发散了,就无法求出最优解。
ps:
因为本人使用matlab还十分生疏,编写的代码可能比较复杂了,如果有人可以编写的更为精炼,欢迎指教。
如果本文有任何本人没发现的错误,欢迎指正。
如果有任何问题,欢迎提出~