美文网首页
哲哲的ML笔记(三:梯度下降)

哲哲的ML笔记(三:梯度下降)

作者: 沿哲 | 来源:发表于2020-08-22 21:58 被阅读0次

1. 前提回顾

已知:代价函数J(\theta_0, \theta_1),希望找到对应的参数\theta_0, \theta_1使得J最小
思路:令\theta_0, \theta_1从任意值开始(一般设置为\theta_0=0, \theta_1=0);每次微小改变\theta_0, \theta_1直到J最小

2. 梯度下降的直观感受

假设代价函数J这样,横坐标为\theta_0, \theta_1,纵坐标为J

课程中有个很形象的比喻:将上图的这个代价函数比作公园里的山地,想象一下你站立在这座红色山上,要寻找最快下山的路线。走一步之后再寻找下一步的方向,如此循环,直到达到局部最小处。(对应左边的黑路线)
假设这次开始的位置比刚才靠右了一些,那么这次寻找的路线可能就和第一次不一样(右边的黑色路线),直到到达第二个局部最优处。

3. 梯度下降的数学原理

细节1:下式中\alpha是学习率,若\alpha很大,那么梯度下降就很快(迈大步下山)

梯度下降算法

细节2:\theta_0, \theta_1需要同步更新,下图中展示了两种更新方法,一种正确一种错误。错误方法错误之处在于:先更新了\theta_0,用更新完的\theta_0再去更新\theta_1,没有做到同步

python

传参说明:
X:特征,比如一个城市的人口,假设有97个样本,维度为97*2
theta:
y: label,比如对应的商户盈利
myiter:迭代次数
myalpha:\alpha

def gradientDescent(X,theta,y,myiter,myalpha):
    m=X.shape[0] #获取样本数
    parament_len=X.shape[1]#需要的 $\theta$ 
    cost=np.zeros(myiter) 
    
    for i in range(myiter):
        error=X*theta.T-y #97*2 2*1=97*1
        
        for j in range(parament_len):
            term=np.multiply(error,X[:,j])# 对应位相乘,结果为97*1
            theta[0,j]=theta[0,j]-(myalpha/m)*np.sum(term)
        cost[i]=computecost(X,theta,y)
    return theta,cost

为深入探究这些表达式的含义,仍然从一个参数\theta_1开始讨论,当\theta_1在最低点右侧(下图)时,\frac{\mathrm{d} J }{\mathrm{d} \theta_1} >0, 根据\theta_1=\theta_1-\alpha\frac{\mathrm{d} J }{\mathrm{d} \theta_1}\theta_1会减小,靠近最低点


同理可得,当\theta_1在最低点左侧时……
此时,再来看一下\alpha,就很容易理解为什么\alpha过大或者过小时会发生什么

\alpha过小时,\theta_1每次更新移动的步伐会很小,需要很长时间才能到达最低点;\alpha过大时,会直接越过最低点,甚至离最低点越来越远以致不能收敛

还有一点,即\alpha是固定的,也可以收敛到最低点。假设最初的点是下图中粉色,这点点斜率较陡峭,下一个更新的绿点会距离粉点较远;但绿点的斜率已经没有之前那么陡,所以下下一个红点会距离绿点近一些……以此类推直到到达最低点!

4. 线性回归的梯度下降

将之前学习的梯度下降和线性回归的平方差代价函数结合



可以得到下式



再不断迭代上式直至参数收敛

收敛过程中我们比较担心会陷入局部最优,但是对于线性回归代价函数总是“凸函数”,即总有全局最优解。如下图所示


处于同一等高线上的\theta_0、\theta_1对应相同值的J,有相同的代价值。当\theta_0、\theta_1向汇聚点靠近时,\theta_1由负变正,斜率变化很明显。

等高线的图中显示了从初始化的值一步步到收敛的最小值过程,左边显示了对应更新的\theta_0、\theta_1h(\theta_0、\theta_1)的变化

5. 总结

上面的梯度下降算法中,迭代\theta_0、\theta_1用到了全部的样本,称之为batch梯度下降;也有非batch梯度下降,即关注了样本的小子集

相关文章

网友评论

      本文标题:哲哲的ML笔记(三:梯度下降)

      本文链接:https://www.haomeiwen.com/subject/ffvpmhtx.html