梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数 J(θ0,θ1)的最小值。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合( θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。 我们持续这么做直到到到一个局部最小值( local minimum) ,因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值( global minimum) ,选择不同的初始参数组合,可能会找到不同的局部最小值。
梯度下降(gradient descent)算法的公式为:(repeat until convergence 重复直至收敛)
其中α是学习率( learning rate) ,它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大(α越大,步子越大;反之α越小,步子越小。α为正数,不宜过大或过小,因为太小的话梯度下降会很慢,太大会导致无法收敛甚至发散。),在梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。(注意:公式中的“:=”表示赋值,你需要同时更新θ0,θ1。你应该像下图中Correct部分那样同时更新)如果已经到了使代价函数局部最小的地方,则θ0,θ1的值将不在变化,因为此处的斜率为零。
注意: 只要你使用线性回归,它总是会收敛到全局最优,因为没有其他的局部最优解。