在求极值的问题中,有梯度上升和梯度下降两个最优化方法。梯度上升用于求最大值,梯度下降用于求最小值。
如logistic回归的目标函数:
代表的是概率,我们想求概率最大值,即对数似然函数的最大值,所以使用梯度上升算法。
而线性回归的代价函数:
代表的则是误差,我们想求误差最小值,所以用梯度下降算法。
那么问题来了,挖掘机技术哪家强?哦不不不,为啥求最大值是梯度上升,求最小值是梯度下降?
举个栗子,来看两个函数:
我们现在用梯度下降求第一个函数的最小值,该函数求导得 f(x)=2x。如果随机取一点并使用梯度下降得到最小值,那么每次更新的就是其梯度,梯度也就是最陡峭的方向导数,方向导数是切线的斜率(先可以简单这么理解,严格来说并不能这么解释)。
每次的更新方式就是:
减号后面一部分就是2x。
现在把图像切分一下,先看左半部分,当随机的点在左半时,x为负,即梯度2x<0。那么更新就是在x基础上减去一个负数,相当于x加一个正数,所以x沿x轴的正方向移动;再看右半部分,当随机的点在右半时,x为正,即梯度2x>0。那么更新是在x基础上减去一个正数,相当于x沿着x轴负方向移动。正好一前一后使x在向极小值移动(极小值处梯度为0,所以x不更新)。
====
再看第二个函数,我们用梯度上升求它的最大值,每次更新方式为:
该函数求导得f(x)=-2x。同样我们先看左半部分,当随机点在左半时,x为负,即梯度-2x>0,所以更新x相当于沿着x轴正方向移动;同理随机点在右半部分时,更新x相当于沿着x轴负方向移动。两种移动都慢慢靠近最后停在极大值上。