梯度下降算法适用于许多函数,不单单可以求出线性回归函数的最小值。
求最小值过程为,先设定初始的0,1,往往都设置为零,然后逐渐的移动 0,1去减少代价函数J,直到找到函数J的最小值
梯度下降算法有一个特点就是选择不同的起始点,会得到不同的局部最优解。
梯度下降算法的数学原理,在公式中被称为学习率,用来控制梯度下降时我们迈多大的步子,越大则梯度下降越快。需注意在进行计算梯度下降算法时,需要对每个参数同时进行求偏导,并同时更新。
梯度下降算法是做什么的,以及它的更新过程有什么意义?
我们这里假设代价函数J只有一个参数 1,所以得到的代价函数J的图像如下,当函数J只有一个参数时不再进行偏导而是直接求导,如果有两个或者两个以上的参数才进行偏导,其中往往正数
第一种情况,当初始值 1在图像右侧时,导数为正值,1将减去一个值,1将减小,将逐步向最低点靠近
第二种情况,当初始值 1在图像左侧时,导数为负值,1将加上一个值,1将增大,将逐步向最低点靠近
刚刚我们说了往往是个正数,但是如果太大或者太小会出现什么状况?
当太小时,我们会走很多步,才能到达最小值点
如果太大,可能会跳过最小值点,可以结合梯度下降公式理解,最后可能导致函数的发散
注意一个特殊情况,当 1已经处在最小值点时, 1将不再更新
为什么是一个不变的值,但是梯度下降算法却能找到代价函数J的局部最低点呢?
随着导数不断地变小, 1将移动的幅度会逐渐变小,不管 1是在函数的左侧还是右侧