梯度下降的思想
梯度下降是求得函数最小值的算法。在逻辑回归中,梯度下降用来求得损失函数(或代价函数)的最小值J(θ)min。
初始随机选择权重参数组合(θ0,θ1,…,θn),计算损失函数(或代价函数),然后寻找下一个能让损失函数(或代价函数)值下降最多的权重参数组合。
注:梯度下降在线性回归中求得是平方误差代价函数的最小值,逻辑回归中是求得损失函数的最小值。无论是代价函数还是损失函数(其实损失函数本身源于代价函数;而两者都源于本质的目标函数),梯度下降都是求解所要优化的函数。
过程
此处假设权重参数只有两个θ0和θ1。
α表示学习步长(learning rate)。
在梯度下降算法中需要同时更新θ0和θ1。
几个问题
1、α学习率的问题
α太小,找到局部最小值点需要的步数会很多;
α太大,每一次迭代会由于步子太大而越过最低点,会导致无法收敛,甚至发散。
2、初始点为局部最小值点
如果初始点恰好为局部最小值点,此时的导数为0,也就是切线的斜率为0,所以更新θ的值不会有变化。此时的θ也就是我们需要的参数。
3、为什么不需要更新或者改变α的值
在找到局部最小值的迭代过程中,按照我们的理解来说,应该在距离局部最小值点远的地方下降的快些,越靠近局部最小值点的时候应该下降的慢些(越接近目标越要小心翼翼)。
根据下图可以看出,在距离局部最小值点较远的时候,切线的斜率是较大的,对应θ值的改变也就越大,也就是下降的更快一些;而越接近局部最小值点的时候,切线的斜率越小,对应θ值的改变越小,也就是下降的速度变得慢了。因此,不需要改变α的值,偏导数∂J(θ)/∂θ就已经有了这个功能。初始值点在局部最小值点的左边也是一样。