梯度下降 - zLulus/My_Note GitHub Wiki

目的

梯度下降算法的目的是求解θ0到θ1,使J(θ0,θ1)最小,找到h(x)趋近于y的最优解

梯度算法的概念

假设模型为h(x)=θ0+θ1*x,代价函数为J(θ0,θ1)
将θ0放在x轴上,把θ1放在y轴上,在垂直的z轴上放置代价函数,如下图所示
1
从任意一点(任意(θ0,θ1))出发,向使J(θ0,θ1)更小的地方行进,即“下坡”

通过我们的成本函数的导数(函数的切线),切线的斜率是那个点的导数,它会给我们一个走向的方向。我们降低成本功能的方向与最陡的下降。 每一“步”的大小由参数α决定,称为学习率。
例如,上图中每个“星号”之间的距离代表由我们的参数α确定的一个步骤。 α越小,步长越小,α越大,步长越大。步进的方向取决于J(θ0,θ1)的偏导数。
从图上看出,可能有多个局部最优解,从不同的初始点出发,最终可能走向不同的局部最优解,红色箭头显示图中的最小点,即J(θ0,θ1)最小的地方

梯度下降算法

重复以上工作,直到收敛:
2
(j = 0,1代表特征索引号)
注意:在每次迭代j时,应同时更新参数θ1,θ2,...,θn。在计算第j次迭代之前更新特定参数会导致错误的实现。
3