跟着吴恩达学习机器学习 3梯度下降
梯度下降作用
梯度下降是一个用来求函数最小值的算法,在这里用梯度下降算法来求出代价函数 J(θ0,θ1) 的最小值。
梯度下降的思想
开始时随机选择一个参数的组合(θ0,θ1,…,θn)【初始化参数值】,计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合。持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。也就是说,找到的最小值,不一定是全局最小,多数情况下是局部最小。
公式
:=是赋值符号,其中α是学习率(learning rate),它决定了沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,α越大,迈步子越大,走的越快,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
理解
在梯度下降算法中,我们需要更新θ0和θ1,当 j=0 和 j=1 时,会产生更新,所以将更新Jθ0和Jθ1。并且同时更新θ0和θ1,(θ0:=θ0,并更新θ1:=θ1)。所以应该计算公式右边的部分,使用了中间变量temp1和temp0,通过那一部分计算出θ0和θ1的值,然后同时更新θ0和θ1。
总结描述:对θ赋值,使得J(θ)(代价函数的值)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中α是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
对于α后面的那部分,也就是代价函数对θ求偏导,可以理解是在代价函数上面极小的一段,α则对这一段进行了放大,当α过于大,迈的步子就大,很可能会错过极小值点,表现出来的就是导致无法收敛,甚至发散,当α过于小,迈的步子小,则需要训练很久。所以α应当选择比较合适的值,这样才能快速的接近极小值点甚至达到极小值点。
假设你将θ1初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。也就是局部最优点的导数将等于零,因为它是那条切线的斜率。这意味着你已经在局部最优点,它使得θ1不再改变,也就是新的θ1等于原来的θ1,因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率α保持不变时,梯度下降也可以收敛到局部最低点。