機器學習之梯度下降法


前言

    以下內容是個人學習之后的感悟,轉載請注明出處~

 

 

梯度下降法

一、簡介

    梯度下降法(gradient decent)是一個最優化算法,通常也稱為最速下降法。常用於機器學習和人工智能當中用來遞歸性地

逼近最小偏差模型。

 

二、原理

    梯度下降法,顧名思義,從高處尋找最佳通往低處的方向,然后下去,直到找到最低點。我們可以看到,J(θ0,θ1)是以θ0,θ1

自變量的函數,它們的關系如圖1中所示。圖中,起始點的黑色十字從紅色的高坡上,一步一步選擇最佳的方向通往深藍色的低谷,這

其實就是梯度下降法的作用。

                                                                       圖1

      微妙的是圖1中的低谷有很多個,選擇不同的起始點,最終達到的低谷也會有所不同。如圖2所示,黑色十字跑向了另外一個低谷。此時

有些人就會問:為什么會產生這種現象?其實,原因很簡單,梯度下降法在每次下降的時候都要選擇最佳方向,而這個最佳方向是針對局部

來考慮的,不同的起始點局部特征都是不同的,選擇的最佳方向當然也是不同,導致最后尋找到的極小值並不是全局極小值,而是局部極小

值。由此可以看出,梯度下降法只能尋找局部極小值一般凸函數求極小值時可以使用梯度下降法。

    

                                                                    圖2

      梯度下降法的公式為:

                                                                   (1)

 

      公式(1)中“:=”符號代表賦值,並不是代表“等於”,J(θ0,θ1)是需要求極小值的函數。

 

 

三、使用方式:以線性回歸為例

設線性回歸的假設函數為:

                                                                           (2)

 設代價函數為:

                                               (3)

 目標:尋找J(θ0,θ1)的最小值。

 措施:使用梯度下降法:

 原理:根據公式(1),可以知道求參數θ,下一步的θ是由上一步的θ減去α乘以J(θ0,θ1)在上一點的斜率值產生的,

            如圖3所示,然后不斷迭代,當θ值不變時,J(θ0,θ1)達到極小值。

               

 

                                                                圖3

 步驟: 不斷執行以下公式(4),直到公式(1)收斂,即達到極小值。

              (4)

             注意:公式(4)中各行不能調換順序,否則並不是梯度下降法(也許是其他算法,如果有哪位大神知道,請不吝賜教~)

             比如公式(5)這種形式,θ0剛更新完,馬上就用於下一步的θ1的更新計算,脫離了梯度下降法的意圖。

                                                                       (5)

 

四、如何提高梯度下降法的效率

主要有兩種方法:

1、特征值x的縮放

     why? ——  很多人也許會問:為什么要縮放特征值?縮放特征值x就能提高效率?

     本人打算用圖4來講解,J(θ)是假設函數hθ(x)=θ01x12x2的代價函數,圖中J(θ)關於θ1、θ2的等高線圖中帶箭頭的

紅線是迭代的分步,左邊是x1、x2數量級相差較大的時候,紅線彎來彎去,迭代效率很低,右邊則是x1、x2數量級相差較小的時

候,帶箭頭的紅線很快到達了等高線圖的最低點,取得極小值,效率很高。所謂的縮放特征值x,就是讓所有的x值在數量級

上相差不大,達到提高迭代效率的目的。

                

 

                                                                          圖4 

縮放特征值的方法大致有以下三種:

  • 除以最大值   (以x1為例,將x1所有樣本的值除以max{x1},此時-1≤x1≤1
  • 均值歸一化   (x1:=(x1-μ)/(max{x1}-min{x1}),其中μ為x1的平均值,此時-0.5≤x1≤0.5)  
  • 均值方差歸一化

     

 

2、選擇適當的α

       公式(1)中α起着很重要的作用,如果選的太小,則會出現圖5左邊這種情況,迭代很慢;如果選的太大,則會出現圖4右邊這種

情況,很糟糕,過大的α使迭代不收斂。

       

 

                                                                                                        圖5

α的選擇是需要通過計算一個個試的,按我的經驗來說,我一般會這樣取值(僅限參考,勿噴~):

  • ......,0.001,0.003,0.01,0.03,0.1,.........(以此類推)

 

以上是全部內容,如果有什么地方不對,請在下面留言,謝謝~

 

 

 

 

 

 

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM