更高效的随机梯度下降(Incremental gradient descent)法的尝试

梯度下降法被用于求解局部最小值的基本方法,有几种形式:BGD(Batch gradient descent),SGD(Stochastic gradientdescent),MBGD(Mini-batch gradient descent)。另外还有一种更高效的方法牛顿法。牛顿法在提高效率上的代价,是在每一次迭代计算中要计算Cost Function的Heissian矩阵的逆矩,这对于数据量较大的情况,简直是噩梦。

       牛顿法下,每一步的迭代: 

        Heissian矩阵,在这里就是h()的二次导 

相比梯度下降法的计算难度较低,但是迭代的次数较大。另外还有一种弊端,就是在越逼近局部极小值的时候,迭代步值就越小,从而导致收敛的速度越来越慢。

为了提高收敛的速度而引入了一种方法叫Feature scaling,具体的思想是将输入的特征变量进行归一化,降低特征变量在尺度上的差异。说到这里,让我们从头来捋一下线性回归:

假设有n组数据(Xn,Yn),其中X=[1,x1,x2,x3,…,xn]。则拟合函数为:

其中

则只要求得θ使得Cost Function的值最小,此时的拟合函数就是局部最佳拟合。

Cost Function:

令每一次迭代:

在这里,我认为α值是影响迭代效率的关键值,即使是将输入特征归一化,在临近局部最小值时,也会速率大大减慢。常规下,α的值是常数,但如果在开始|∇J(θ)|较大时,我们使α足够小,使递减的步子不至于过大,在|∇J(θ)|较小时,使α足够大,能快速的逼近局部最小值。那么就可以提高递减的速率。

由于α是随∇J(θ)变化,我们可以假设:

这里我让G(∇J(θ))~,让μ=0。

  a为常量,用于伸缩α的幅度。

 

经过测试,这种方式可以很好的提高拟合的速度。这里就不贴上代码。

以上为个人看法,有雷同,只是巧合。

 

引用:

梯度下降:https://blog.csdn.net/kwame211/article/details/80364079

Featrue Scaling:https://www.cnblogs.com/ooon/p/4947347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值