1. 程式人生 > >梯度上升VS梯度下降,加還是減

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

梯度下降VS梯度上升

梯度下降是一種常用的優化演算法,公式是這樣的:

w(τ+1)=wταE(wτ)

其中, E(w) 是cost函式的梯度,減去這個值和學習率的乘積,就代表沿著最陡峭的面滑向最低點。嗯,沒有問題。

可是有一天看到有本書提到梯度上升,公式是這樣的:

w=w+αwf(w)

嗯,也容易理解,式1中 E(w) 是個碗的形狀,要下降到最低點,式2中 f(w) 是個蘑菇的形狀,要上升到最頂點。E(w) 加個負號就變成 f(w) 了。

等等,這一對比才意識到還有一個問題:為什麼下降就一定是減,上升就一定是加?

梯度、導數、傾斜方向

要回答這個問題,就要理解梯度的含義,梯度是三維以上座標系的概念,它在平面座標系對應的概念是導數

那麼我們先來看導數,它表示線的斜率,斜率又可以分兩部分來看,一個是傾斜的程度(我有多斜),一個是傾斜的方向(我往那兒斜)。此處只討論傾斜方向。

其實二維平面上只兩個傾斜方向:往左斜和往右斜。有人就懷疑了,為什麼沒有往上斜和往下斜,因為那是根線啊,這兩種說法一樣,我們取其一種說法而已。又有人懷疑了,你說它上頭往左斜,它同時下頭就往右斜啊。也對,那為了把事兒說清楚,我們就只看一、二象限。總而言之,傾斜方向只有兩個,為了表述清楚,我們需要加一些限制。二維平面的傾斜方向正好對應導數的正負,導數為正,線右傾,導數為負,線左傾。

二維平面中, 導數 代表 的傾斜方向和傾斜程度,三維空間中, 梯度 代表 的傾斜方向和傾斜程度。線的傾斜方向只有兩個用正負表示,而面的傾斜方向是無窮的,是由向量表示。

梯度是個向量,向量的方向就代表傾斜方向,向量的模就代表傾斜程度。圖1繪製了三維空間中兩個傾斜的平面和一個參考水平面,為了清晰,畫出了兩個視角的截圖:
“梯度示意圖”

如圖所示,三維空間中面的梯度是二維向量,我把它畫在Z=0的XY平面上,它就是這個傾斜平面的梯度向量,它垂直於這個平面與水平面的交線,圖中畫的兩個面傾斜方向是一樣的,傾斜程度不同,也就是梯度向量方向相等,模不相等。這裡就可以看到面的傾斜方向的含義,同樣的,為了表述明確,需要幾個限制,一是傾斜是以面的銳角夾角方向,二是從右手座標系上方視角來看的。

加梯度永遠是向上的

現在很明顯了,加梯度,就是自變數沿著面的傾斜方向移動,函式值就會向上移動。對於平面如此,而到了曲面上,某個點的梯度就是該點切面的傾斜方向和傾斜程度。所以對碗形函式求極小值,就要減梯度,對蘑菇形函式求極大值,就要加梯度。