吴恩达机器学习——线性回归

    

        我们有一个房价的训练集,我们的工作是从这些数据中,如何学习预测房价?

        

        用直角坐标系进行建模,横坐标表示面积,纵坐标表示售价:

        我们观察这些直角坐标系中的点,似乎更适合用直线来拟合,这个特定的模型叫做单变量线性回归。设直线方程为(也就是我们的假设函数):  H(x) = θ0 + θ1 x 

        θ0 、θ1 称为模型参数,选择不同的参数θ0 、θ1,会得到不同假设函数表示的直线。 我们用代价函数来度量直线与这些点的拟合程度: 

                    

        现在我们就将问题转化为,求函数J(θ0 ,θ1)最小值时,θ0 、θ1的取值?

        

        用一个小例子,来直观的解释代价函数用来做什么的,以及为什么要使用它?

        有一个训练集,其中有三个点(1,1)、(2,2)、(3,3)。为了更好的使代价函数J可视化,我们使用一个简化的假设函数: H(x) = θ x  ( θ0 = 0),则代价函数为: 

         

        当θ = 1时,H(x) =  x  

      

 

        当θ = 2时,H(x) =  2x 

      

 

        当θ = 0.5 时,H(x) =  0.5x 

      

        . . . . . . 

        通过这些点,我们大概画出代价函数J(θ)的轮廓:

        

        通过图形,我们很容易得出:当θ = 1时,函数J(θ)最小。同时我们注意到,当θ = 1时,这确实是一条最好拟合数据的直线,这就是为什么要最小化J(θ)的原因。

   

        在最小化线J(θ)时,不可能每次都将J(θ)图形画出来后再找出最小值,我们可以使用梯度下降法最小化代价函数。

        上图是J(θ0,θ1)三维图像,我们将它想象成一座山,而你站在山坡上准备下山。你环顾四周,找到一个最有利下山的方向,迈出一步;你到达新的点,再环顾四周,找到一个最有利下山的方向,迈出一步。重复上述动作,直到到达局部最低点,这就是梯度下降算法思想。需要注意的是,如果初始站立点不同,最后到达的最低点可能会有所不同,下面我们给出梯度下降算法的定义:

        为了方便解释梯度下降法对代价函数起什么作用?我们引用上面代价函数只有一个参数的例子。此时梯度下降算法:

                 初始值 ,  学习速率,类似我们迈出一步的大小 ,   导数项,类似选取最有利下山的方向

        代价函数J()图形如下, 选  = 2 ,

           相当于=2点的切线斜效率,该斜率为正斜率,所以 

         :=  -   *(正数),永远大于零,于是 更新为 减去一点,相当于在图形中我将 向左移了,使变小了。我们看到这么做对的,因为这个方向确认让我更接近那边的最低点。

 

        选 = 0

         相当于=0点做切线,该切线斜率为负斜率,所以 

          :=  -   *(负数),于是 更新为 加上一点,相当于在图形中我将 向右移了,使变大了。我们看到这也是对的,因为这个方向确认让我更接近那边的最低点。

        综上所述,我们可以得知,每次更新都是向最低点方向移动,且线的斜率由陡向缓,最终趋于水平。该点的导数等于该点切线的斜率,因此我的导数项会越来越小,直到到达最低点,导数为零。

        在进行下一步梯度下降时,我的导数项是更小的,更新的幅度就会更小。随着梯度下降法的进行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现已经收敛到局部极小值了。这也解释了,即使学习速率保持不变,梯度下降法也可以收敛到局部最低点的原点。不过我们需要注意 的选值:

        如果 太小,就会像小宝宝的步伐,只能一点点地挪动去接近最低点,这样需要很多步才能到达最低点。所以如果 太小的话,梯度下降会很慢。

        如果 太大,那么梯度下降可能会越过最低点,导致可能无法收敛或者发散。

©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页