机器学习 梯度下降法总结

来源:互联网 发布:免费推广网络兼职平台 编辑:程序博客网 时间:2024/05/19 04:01

梯度下降法 :

就是我们在对于一个代价函数求出适合的参数值的时候经常使用的方法,首先 J (thete1,…,theten) 我们要使得这个函数最小化,就需要不断去逼近这些 thete 值,我们需要深刻理解导数、偏导数这些东西才能知道其中的原理,比如说导数是一个函数沿着x轴正方向的变化率,在偏导数中 对于一个变量 xi 对它的偏导数就着这个方向增长的最大变化率,所以在使用梯度下降的时候需要向反方向下降就可以了。
当然我们在使用梯度下降法的时候就是通过不断减去这个变化率乘以一个学习速率 a 然后不断迭代就能得到最优解。

算法原理

别进入死循环。

梯度下降法的执行步骤
方法:
(1)先确定向下一步的步伐大小,我们称为Learning rate;
(2)任意给定一个初始值 (任意即可)
(3)确定一个向下的方向,并向下走预先规定的步伐,并更新;
(4)当下降的高度小于某个定义的值,则停止下降;

这里写图片描述

注意 theta 应该同步更新,否则就不是剃度下降法。

特点:
(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
(2)越接近最小值时,下降速度越慢;

问题:如果初始值就在local minimum的位置,则会如何变化?
答:因为已经在local minimum位置,所以derivative 肯定是0,因此不会变化;因为在最低点时候偏导数肯定为0。

如果取到一个正确的值,则cost function应该越来越小;
问题:怎么取值?
答:随时观察值,如果cost function变小了,则ok,反之,则再取一个更小的值;因为如果取值取得太大的话,可能会出现不收敛的情况。

问题 : 初始点不同最后的答案是否相同 ?
答 : 答案使不同的,因为通过梯度下降算法不同的初始点得到的答案不同,所以用梯度下降算法得到的只是一个局部最优解。

关于算法的优化 :
为了使迭代次数减少,我们常常使用标准化特征 (特征缩放)的方法,就是使得所有的变量尽量在一个相同的变化范围之内,一般是 -1 到 1 ,当然也有别的时候情况 达到优化算法的目的。

举个实际的例子,
有两个Feature:
(1)size,取值范围0~2000;
(2)#bedroom,取值范围0~5;
则通过feature scaling后,

这里写图片描述
就像这样

原创粉丝点击