機器學習--什麼是梯度?爲何梯度方向就是函數上升最快的方向?(轉載)

本打算把梯度放在神經網絡來說,學習機器學習實戰時發現用到梯度降低最優算法,因此就把這個知識點深刻講一下,等後面實戰到神經網絡時,直接複製這裏的,此次講解會深刻講解,簡明易懂是目的,雖然網上都有各類畫圖說明,可是仍是不容易理解,本講解必定會讓你們理解的,講解主要從問題出發,從簡單的內容開始,這須要你對導數、向量、多遠微分有點了解,進入正題:算法

若是有基礎的能夠從下面的泰勒級數閱讀:
想知道前因後果的建議仔細閱讀。網絡

      什麼是梯度?爲何梯度方向就是函數上升最快的方向?又爲何有梯度降低的說法?他們有什麼聯繫?機器學習

什麼是梯度?函數

      講梯度的定義以前,先說明一下梯度他不是一個實數,他是一個向量即有方向有大小。這個向量有什麼特色呢?這裏以二元函數爲主講解,先給出公式:學習

         設一個多元函數爲,在某點(,)的梯度爲這點的偏導即:優化

                                                               

其中是函數在這一點的梯度符號,是一個總體,而、是函數在 在( ) 的偏導數。.net

      看到這裏你們確定是暈暈的,別急咱們慢慢往下看,如今問題來了,爲何在多元函數中某點的梯度就是該函數在這一點的偏導數呢?爲何不是二階偏導數不是其餘而是一階偏導數呢?爲何會這樣呢?基礎很差的同窗可能還會問什麼是偏導數呢?什麼是向量呢?上面這個定義,你們看了下面理解之後再過來看就懂了。blog

        你們還記得什麼是向量嗎?怎麼定義的?數學

    在平面直角座標系中,分別取與x軸、y軸方向相同的兩個單位向量i,j做爲一組基底。  爲平面直角座標系內的任意向量,以座標原點O爲起點做向量  。由平面向量基本定理可知,有且只有一對實數(x,y),使得    ,所以把實數對(x,y)  叫作向量 的座標,記做   。這就是向量  的座標表示。三維的也是這樣表示的。基礎

 

       那麼這樣你們就能理解向量是可使用座標表示的,同時解釋了他是一個向量的表示,雖然沒有箭頭,可是他也是向量呀,並且就是梯度,如今你們應該能夠理解爲何說他是一個向量,到這裏咱們還須要一點矩陣方面的知識,例如矩陣方面的向量什麼?這裏的向量和矩陣的向量有所不一樣,你們須要區別開,由於應用不一樣,全部定義有點不一樣可是具備相同的性質即有大小有方向。後面會發現就是經過向量把他們的關係創建起來的。

矩陣:矩陣你們都知道,矩陣的向量默認爲列向量即一列爲一組向量(這點特別重要,你們務必留心,這關係後面的梯度證實的理解),矩陣中的向量有什麼性質呢?在這裏只提到用到的性質,下降難度,即向量的範數(在空間向量中稱爲模),以及兩個向量的內積。

向量的內積:

       設二維空間內有兩個向量   和   ,定義它們的數量積(又叫內積、點積)爲如下實數:

                                                                             

更通常地,n維向量的內積定義以下: [1] 
                                                                              
幾何定義
設二維空間內有兩個向量  和    ,    和   表示向量a和b的大小,它們的夾角爲   ,則內積定義爲如下實數: 、                                                                          

 

 

內積的物理意義就是b向量在a向量的投影的乘積或者說a向量在b向量投影的乘積,他們是同樣的。

該定義只對二維和三維空間有效。
         此時你們看到了內積的定義,知道內積計算結果是一個數,不是向量,他的物理意義就是既然是一個數那就存在最大值和最小值,再看看這個公式:,由於的範圍爲[-1,1],因此內積的範圍爲[-, ],所以存在最大值和最小值,當取180°時最下,當取0時最大,由此咱們可知只要這兩個向量共線就會取極值,若是共線同向則取極大值,反之取極小值,所謂共線就是兩線平行的意思。  這個概念很重要,你們務必理解了,這將直接關係可否理解梯度。下面介紹矩陣這方面內容。

矩陣向量:

 

從這裏你們能夠看到,矩陣中向量的內積定義和平面向量的定義很像,只是他們的表達不同吧了,若是把平面中a向量和b向量寫成列的形式就同樣了。只能說平面向量是矩陣向量的一種特殊狀況,你們能夠這麼理解,

 

由於矩陣向量是列向量,而矩陣的運算法則是行乘以列,所以矩陣向量求內積須要轉置一下才能求出是一個數,

 

 到這裏你們知道了矩陣的向量計算內積公式了,總結一下:

        設矩陣向量爲、,則他們的內積爲,既然是內積,那它也有最大值和最小值,和平面理解同樣,兩向量同向,值最大,反向值最小(這個概念很重要的,理解透什麼是內積,切記矩陣向量內積的形式),這樣你們能夠理解內積了,至於梯度,你們別急,基礎理解了,梯度天然而然的就理解了。下面是導數方面的內容。

什麼是導數?什麼是偏導數?他們有什麼物理意義?梯度和導數、向量有什麼關係?

你們都知道導數是表明函數(曲線)的斜率,是描述函數(曲線)變化快慢的量,同時曲線的極大值點也可使用導數來判斷,即極大值點的導數爲0,此時斜率爲零(如今不深刻討論,後面會經過泰勒級數進行討論,一階導數爲零的點不必定是極值點多是駐點,這時須要根據二階導數判斷),那麼導數就爲咱們求解函數的極值提供了可能,固然咱們如今說的導數是一元導數即,只具備一個變量,所以很容易求導,那麼什麼是偏導數呢?咱們知道導數是指一元函數的,他的物理意義就是衡量函數變化快慢的量,例如一天中,溫度隨時間變化的函數就是一元函數,而多元函數是指形如、、等的函數,此時函數的自變量有多個,在這裏以二元函數爲例說明,咱們知道,一旦變量增多,意味着影響因素增長,例如一天的氣溫不只和時間有關仍是天氣有關,還和地理位置有關等,可是咱們就想知道,在這多種因素的影響下,我就想知道哪一個因素對他影響最大,怎麼辦呢?所謂的影響最大就是這個因素對氣溫的影響最大,即求氣溫的最值,這時候你們可能會說求導啊,對呀求導最好了,可是這裏有不少變量啊,例如,我想求x對f的影響,怎麼辦呢?初中咱們都學過一個實驗方法就是控制變量法,即當我須要改變一個量時,讓其餘量不變的狀況下去改變這個量而後觀察對函數的影響,那麼咱們 多元求導可不能夠也使用這樣的方法呢?當我求x對f的影響時,我把y當作常量來處理,而後對x求導便可,固然能夠啊,只是這時候的求導不在是導數了,由於多元函數是對一個因素也就是x進行求導,所以稱爲偏導,這下你們理解爲何有稱爲偏導了吧。

總結一下:偏導數是指在多元函數的狀況下,對其每一個變量進行求導,求導時,把其餘變量看作常量進行處理,物理意義就是查看這一個變量在其餘狀況不變的狀況下對函數的影響程度。

那什麼是梯度呢?和上面又有什麼關係呢?

          再說梯度以前仍是要先說一下泰勒級數,爲何要說這個泰勒級數,由於證實梯度方向老是指向函數最大增長方向的一個關鍵支撐。

泰勒級數:
       數學中,泰勒公式是一個用函數在某點的信息描述其附近取值的公式。若是函數足夠平滑的話,在已知函數在某一點的各階導數值的狀況之下,泰勒公式能夠用這些導數值作係數構建一個多項式來近似函數在這一點的鄰域中的值,即泰勒級數在某一鄰域內去無限接近該函數的一個公式。詳解泰勒級數可參考這篇文章

 

這裏引入泰勒級數的目的是爲了證實極值點的導數問題,高階函數通常要使用到矩陣論的海森矩陣相關知識,這裏不引入那麼深的概念,可是基本的矩陣知識仍是須要的。

咱們只保留前三項:

 

上面提到了一階導數是極值點的 。如今解釋爲何會是這樣,上面的是指很小的步長,當時說明x向右走,當時說明x向左走,學太高等數學極限的應該有這個概念,如今咱們經過泰勒級數只考慮上面公式的前兩項來解釋爲何,極值點處的一階導數爲0

 

假如這一點的函數值爲極值點,能夠是極小值或者極大值,這裏以極大值點爲講解內容 :

        由於此時的爲極大值,不管仍是,那麼的,那麼上面的公式想要成立,只能讓

才能成立,極小值也是這樣證實的,無需畫圖,從泰勒級數就能夠說明極值點的一階導數必定爲0,那麼一階導數爲零的點不必定是極值點怎麼證實呢?使用三項便可證實,下面證實;

一階導數爲零不必定是極值點:

 

 若是,那麼公式可寫成這樣:

                                                      

從上式能夠看到若是在時假如爲極大值,理應說不管仍是,,可是此時若是    ,則,因此,即證的不是極大值點,那如何才能判斷是極值點呢?

此時須要藉助二階導數,上面若是則爲極大值點,因此纔有一階導數等於零,二階導數小於零爲極大值點,若是二階導數大於零則爲極小值點。若是二階導數等於0怎麼辦?那就繼續判斷三階導數就能夠了。

這是在標量的狀況下的極值問題,若是x是向量怎麼處理呢?

仍是引入泰勒公式就能夠了。只是不同的是都是向量了:

       咱們知道機器學習中的變量都不少,通常都使用向量進行表示(此時爲列向量)且爲多元函數,求導和標量同樣的,只是如今是求偏導了。

                                                 

 上面的公式、、、都是向量,例如一階偏導應該是這樣的:

 

由於是向量,因此有大小有方向了,你們注意到了沒有此時的爲行向量了,由於轉置了,所以和相乘是內積,此時咱們也只看前兩項即:

                                                                 

如今重點來了啊,爲了每次x前進的方向是使函數增加最快,應該怎樣選取前進方向的步伐(向量),才能保證呢?好,你們能看到直接影響着,而決定的值是由、決定,然而是肯定的,因此使其最大便可,而該式就是向量的內積,根據上面講了半天的向量內積可知,只要使取的向量和共線就能夠了,若是共線同向則取最大方向,反向取最小小方向。所以直接使=便可,即保證方向共線就能夠了,至於值得大小能夠乘一個標量,如今咱們找到了這個向量,而這個向量就是多元函數的一階偏導數,這時候就定義,多元函數的一階偏導數爲梯度,符號爲,數學上的梯度就是這麼來的,此時就能夠寫成這樣了:

 

      好,到這裏咱們知道了什麼是梯度,梯度怎麼來的,總結來講梯度是爲了尋找極值而生的,並且是極大值,所以梯度老是指向函數增加最快的方向,這就是本質緣由了,可是咱們常聽的是梯度降低,改變梯度方向就是降低最快的,共線反向取極小值就是這個道理了。

       該式更能反映事實。你們細細品味,梯度的知識點難在理解上,梯度不是標量,他是向量,有方向有大小,通常咱們不是很關心大小,由於能夠經過標量放大或者縮小,重要的是方向問題,由於只要肯定增加最快的方向,才能找到極值點,這也是不少算法使用梯度優化算法的緣由,固然是梯度的反方向,

 

到如今基本上就結束了,可是我仍是有些知識須要交代,矩陣方面的沒給你們深刻講,可能上面的證實仍是不夠嚴謹,可是證實思路已經出來了,理解梯度已經夠用了,若是感興趣,建議你們有時間看看張賢達的矩陣論,裏面有更嚴謹的數學推到 ,在這裏但願給你們一種拋磚引玉的感受,矩陣論對這方面講解的很透徹,主要牽扯到二次型,正定、半正定等知識。有時候感受數學沒什麼用,其實用處很大的,須要咱們學習者內化或者理解其物理意義,搞明白前因後果,方能正確使用數學這把利劍,梯度到此結束,有問題歡迎交流。————————————————版權聲明:本文爲CSDN博主「zsffuture」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/weixin_42398658/article/details/83017995

相關文章
相關標籤/搜索