梯度下降?梯度上公升?梯度提公升?

2021-09-28 22:00:09 字數 1499 閱讀 7368

最近被這三個詞搞蒙了。原本沒覺得它們有多難區分,但真要向乙個人解釋清類似「為何要有梯度提公升」這類問題,似乎還是很吃力,從而發現自己其實並沒有完全理解其中的含義。

也許根本就不存在什麼「梯度上公升」,只有「梯度提公升」罷,但我覺得,至少在中文環境裡,大家越發的喜歡無意識地將這兩個詞分別開來,從而這兩個詞逐漸顯示出不同的含義。下面我就簡單介紹一下他們之間的差別吧。

首先,梯度下降

梯度下降應該是機器學習入門第一課水平的知識,我這裡當然不是來做無謂掃盲的,畢竟這樣的帖子太多了。我只是想說,為何會存在「梯度下降」。對於高中時代的我們,求乙個一元二次函式極值的好方法,就是求導,然後令導數為0。但在機器學習損失函式空間中,由於特徵(或言之變數)數目眾多,導致函式曲面非常複雜,以致於幾乎不可能有這樣乙個點,在這個點上各個方向導數都是0,哪怕從計算的角度來說也是這樣,我們太難找到這樣乙個點了。那麼,我們可以忍受我們不能一下子做對,但我們可以一步步走向正確。那麼,當下能做的最好的決定,就是做我眼前可見的最好的事情。所以我要按照梯度方向走(梯度方向為全部方向導數中絕對值最大的方向,由此易得,我們肯定會得到互為相反數的兩個梯度方向,乙個是梯度最大方向,乙個是梯度最小方向)。由於我的目標是更新引數,然後使得損失函式最小,因而我當然要沿著梯度最小的方向去更新我的引數。

我在這裡不得不再提一次「梯度最小」的含義——梯度最小,我覺得有必要說明到底是「誰」的梯度最小。是目標函式在當前點的梯度最小。所以,對於引數列表中的每個引數而言,你可能反而變大了,但總目標函式是在減小的,因為它們沿著負梯度的方向在前進。

所以說,這個「梯度下降」,目的指的是損失函式取值的下降,而非引數在下降。只不過引數沿著負梯度的方向前進,大概率也是在下降罷了。正因為「負梯度」,導致那個引數更新公式裡也是減號。

同理——梯度上公升

「梯度上公升」,指的是目標函式取值的上公升,而非引數的上公升。引數本身是沿著正梯度的方向前進的。

然後,我們說一說「梯度提公升」

梯度提公升,英文應該叫gradient boosting,反正我只在gbdt中聽到過這種說法。這裡的「gbdt」的「梯度提公升」,我認為和「梯度上公升」還是不同的,二者的確是兩個不同的概念——梯度上公升,指的是求解目標函式最值的一種方案——沿正梯度方向上公升;而梯度提公升,指的是一種演算法思想。首先它是乙個」提公升「演算法,所以使用加法模型思想,一步步將結果進行提公升。所以我們表面上是在最小化損失函式,而損失函式就是所謂前m輪加法模型得到的結果與真實值之間的差值,而如果我們想讓這個差值最小,當然就是讓新函式取沿著負梯度方向下降,結果的確就是在擬合負梯度。如果我們擬合的是正梯度,則加法模型之間就都應該是減號,這就很不美觀了,所以我們要擬合負梯度,這樣加法模型就更名副其實了,雖然加法模型也沒要求一定要加,它只是說明要進行線性組合。

所以,我覺得,梯度下降和梯度上公升,是針對目標函式的一種學習演算法,是針對目標函式中引數的更新所提出來的,但「下降」or「上公升」實際上指的還是目標函式的取值變化; 

梯度提公升,僅指gbdt,指的是對「新函式」求導,然後讓新函式沿著梯度方向,對加法模型累加得到的整體函式提公升,這更像是一種演算法思想。

實際上具體操作基本都是一樣的,所以也沒什麼必要區分了。。。

梯度上公升VS梯度下降,加還是減

梯度下降是一種常用的優化演算法,公式是這樣的 w 1 w e w w 1 w e w 其中,e w e w 是cost函式的梯度,減去這個值和學習率的乘積,就代表沿著最陡峭的面滑向最低點。嗯,沒有問題。可是有一天看到有本書提到梯度上公升,公式是這樣的 w w wf w w w w f w 嗯,也容易...

根據權威文獻區分梯度上公升與梯度下降

參考 第五頁 the analogy of boosting 9 10 to steepest descent minimization 意思是,梯度提公升法用於最小化函式 由於國內的凸函式是國外的凹函式 國外的凸函式是國內的凹函式。所以可知,上面這句意思是 梯度提公升用於處理國外定義中的凸函式,講...

梯度上公升和梯度下降演算法區別與聯絡

函式上當前點對應的梯度方向是增大最快的方向,反方向是減小最快的方向 要計算的是函式的極大值,如最大化似然函式,加上學習率 梯度 要計算的是函式的極小值,如最小化損失函式,減去學習率 梯度 在某些地方可能說是梯度下降,但是用的卻是加法,有兩種解釋 減號代入了梯度中 梯度下降和梯度上公升本質上是一樣的,...