1. 程式人生 > >區域性最優解

區域性最優解

反對回答區中一部分稱“模型收斂於鞍點”的回答。當然也有的大牛可以一針見血,那我就對這個問題多展開一下吧,讓鮮血流的更猛烈一些。(害怕.jpg)

真的結束於最優點嗎?

我們知道,在區域性最優點附近,各個維度的導數都接近0,而我們訓練模型最常用的梯度下降法又是基於導數與步長的乘積去更新模型引數的,因此一旦陷入了局部最優點,就像掉進了一口井,你是無法直著跳出去的,你只有連續不間斷的依託四周的井壁努力向上爬才有可能爬出去。更何況梯度下降法的每一步對梯度正確的估計都在試圖讓你墜入井底,因此勢必要對梯度“估計錯很多次”才可能僥倖逃出去。那麼從數學上看,什麼才是區域性最優點呢?

這個問題看似很白痴,很多人會說“區域性最優點不就是在loss曲面上某個一階導數為0的點嘛”。這就不準確啦,比如下面這個馬鞍形狀的中間的那個點:

(圖片來自《deep learning》)

顯然這個點也是(一階)導數為0,但是肯定不是最優點。事實上,這個點就是我們常說的鞍點。

顯然,只用一階導數是難以區分最優點和鞍點的。

我們想一下,最優點和鞍點的區別不就在於其在各個維度是否都是最低點嘛~只要某個一階導數為0的點在某個維度上是最高點而不是最低點,那它就是鞍點。而區分最高點和最低點當然就是用二階導數(斜率從負變正的過程當然就是“下凸”,即斜率的導數大於0,即二階導數大於0。反之則為“上凹”,二階導數小於0)。也就是說,若某個一階導數為0的點在至少一個方向上的二階導數小於0,那它就是鞍點啦。

那麼二階導數大於0和小於0的概率各是多少呢?由於我們並沒有先驗知識,因此按照最大熵原理,我們認為二階導數大於和小於0的概率均為0.5!

那麼對於一個有n個引數的機器學習/深度學習模型,“loss曲面”即位於n+1維空間(loss值為縱軸,n個引數為n個橫軸)。在這個空間裡,如果我們通過梯度下降法一路下滑終於滑到了一個各方向導數均為0的點,那麼它為區域性最優點的概率即 0.5^n ,為鞍點的概率為 1-0.5^n ,顯然,當模型引數稍微一多,即n稍微一大,就會發現這個點為鞍點的概率會遠大於區域性最優點!

好吧我再囉嗦的舉個栗子,已經反應過來的同學可以跳過這個栗子:

假設我們的模型有100個引數(實際深度學習模型中一般會遠大於100),那麼某一階導數為0的點為區域性最優點的概率為約為 0.5^{100}\approx10^{-31} ,而為鞍點的概率則為 1.0-10^{-31}\approx 1.0

 。就算我們的模型在訓練時使用了特別厲害的“超級梯度下降法”,它可以每走一步都恰好踩在一個一階導數為0的點上,那麼從數學期望上來看,我們需要走10^31步才行。而實際的projects中,哪怕資料集規模為千萬級,我們分了100萬個batches,然後要迭代100次,那也僅僅是走了 10^6*10^2=10^8 步,你真的覺得運氣可以辣麼好的走到區域性最優點上去嗎?所以實際中,當我們的深度學習模型收斂時,幾乎沒有必要認為它收斂到了一個區域性最優點,這完全等同於杞人憂天。

也就是說,如果最後模型確實在梯度下降法的指引下收斂到了一個導數為0的點,那這個點幾乎可以肯定就是一個鞍點。

如果我們的模型真的收斂到鞍點上了,會很可怕嗎?

這就又回到了文章開頭的那副馬鞍狀的圖。

顯然,站在馬鞍中央的時候,雖然很難翻過兩邊的山坡,但是往前或者往後隨便走一步就能摔下馬鞍!而在文章《batch size》中小夕講過,我們預設使用的mini-batch梯度下降法本身就是有噪聲的梯度估計,哪怕我們位於梯度為0的點,也經常在某個mini-batch下的估計把它估計偏了,導致往前或者往後挪了一步摔下馬鞍,也就是mini-batch的梯度下降法使得模型很容易逃離特徵空間中的鞍點。

那麼問題來了,既然區域性最優點很難踩到,鞍點也很容易逃離出去,那麼

為什麼我們的模型看起來是收斂了呢?

初學者可能會說 “誒誒,會不會是學習率太大了,導致在“鞍點”附近震盪?” 首先,鞍點不像最優點那樣容易震盪,而且哪怕你不斷的減小學習率繼續讓模型收斂,你這時計算output層或者後幾層的梯度向量的長度時往往會發現它依然離0很遙遠!(這句話是有實驗支撐的,不過那篇論文我暫時沒記起來,找到時貼出來)說明大部分時候收斂到的並不是鞍點。

那會不會踩到的鞍點太多,雖然前面的鞍點都輕鬆逃逸了,但是最後恰好收斂到一個跳不下去的鞍點身上了?

雖然高維空間中的鞍點數量遠遠大於最優點,但是鞍點的數量在整個空間中又是微不足道的:按前面的假設,假設在某個維度上隨機一跳有10%的概率踩到導數為0的點,那麼我們在101維的空間中的一步恰好踩到這個點上的概率為10^-100,也就是說在101維空間裡隨機亂跳的時候,有10^-100的可能性踩到鞍點身上。因此,即使有難以逃離的鞍點,那麼被我們正好踩到的概率也是非常小的。

所以更令人信服的是,在高維空間裡(深度學習問題上)真正可怕的不是區域性最優也不是鞍點問題,而是一些特殊地形。比如大面積的平坦區域:

(圖片來自《deep learning》)

在平坦區域,雖然導數不為0但是卻不大。雖然是在不斷下降但是路程卻非常長。對於優化演算法來說,它需要走很多很多步才有可能走過這一片平坦區域。甚至在這段地形的二階導數過於特殊的情況下,一階優化演算法走無窮多步也走不出去(設想一下,如果終點在一米外,但是你第一次走0.5米,後續每一步都是前一步的一半長度,那麼你永遠也走不到面前的一米終點處)。

所以相比於栽到最優點和鞍點上,優化演算法更有可能載到這種類似平坦區的地形中(如果這個平坦區又是“高原地帶”,即loss值很高的地帶,那麼恭喜你悲劇了)。更糟糕的是,由於高維地形難以視覺化,還有很多更復雜的未知地形會導致假收斂,一旦陷入到這些危險地形中,幾乎是無解的。

所以說,在深度學習中,與其擔憂陷入區域性最優點怎麼跳出來,更不如去考慮

  1. 如何去設計一個儘量沒有“平坦區”等危險地形的loss空間,即著手於loss函式的設計以及深度學習模型的設計;
  2. 儘量讓模型的初始化點遠離空間中的危險地帶,讓最優化遊戲開始於簡單模式,即著手於模型引數的初始化策略;
  3. 讓最優化過程更智慧一點,該加速衝時加速衝,該大膽跳躍時就大膽跳,該慢慢踱步時慢慢走,對危險地形有一定的判斷力,如梯度截斷策略;
  4. 開外掛,本來下一步要走向死亡的,結果被外掛給拽回了安全區,如batch normalization策略等。

 

初學神經網路者的疑惑:為什麼BP神經網路有那麼多...

答:這是因為bp演算法是最簡單的,BP網路結構也最簡單最經典。儘管有缺點,但實際應用效果還不錯。其實很多其他變型網路如Elman網路實際上也用的是梯度下降法。 雖然BP網路得到了廣泛的應用,但自身也存在一些缺陷和不足,主要包括以下幾個方面的問題...

對於非連續目標在深度神經網路的優化過程中 哪種梯...

答:還有很多,一步正割演算法,擬牛頓演算法,量化共軛梯度法,彈性梯度下降法等等。具體可以在MATLAB的help檔案訓練函式中檢視,路徑是:Neural Network Toolbox>Functions>Training Functions,可以看到各種演算法的函式及詳細介紹

梯度下降法怎麼改變神經網路中的權重

答:梯度下降演算法是神經網路在每代更新網路權值的一種方法。 神經網路還有很多其他更新權值的方法,不只這一種

梯度下降演算法是指什麼 神經網路

答:梯度下降演算法是神經網路在每代更新網路權值的一種方法。 神經網路還有很多其他更新權值的方法,不只這一種

rbf神經網路和bp神經網路有什麼區別

答:bp神經網路學習速率是固定的,因此網路的收斂速度慢,需要較長的訓練時間。對於一些複雜問題,BP演算法需要的訓練時間可能非常長,這主要是由於學習速率太小造成的。而rbf神經網路是種高效的前饋式網路,它具有其他前向網路所不具有的最佳逼近效能...

BP神經網路中學習速率是什麼意思

答:學習率實際和訊號分析裡的時間常數是一樣的,學習率越小 學習會越精細,但同時學習速度也會降低,因為現實中很多模型都是非線性的,猶如一條曲線,梯度下降採用很多小直線迭代去逼近非線性的曲線,如果每一步跨度太大(學習率)就會失去很多曲線...

bp神經網路中的gradient是什麼意思

答:若果對你有幫助,請點贊。 神經網路的結構(例如2輸入3隱節點1輸出)建好後,一般就要求神經網路裡的權值和閾值。現在一般求解權值和閾值,都是採用梯度下降之類的搜尋演算法(梯度下降法、牛頓法、列文伯格-馬跨特法、狗腿法等等),這些演算法會先...

卷積神經網路是如何反向調整引數的?

答:引數調整流程: 計算loss--loss是根據網路輸入值和真實值求解獲得,與網路引數有關 根據loss使用梯度下降法進行反向傳播--梯度下降的BP演算法,參考微積分鏈式求導法則. 結束.. 可以追問的~~

DPS軟體的BP神經網路預測.怎樣預測未來幾年的數

答:BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式對映關係,而無需事前揭示描述這...

有哪位大神知道BP神經網路變學習率學習演算法在Matla...

答:額。。。 一種啟發式的改進就是,為學習速率選用自適應值,它依賴於連續迭代步驟中的誤差函式值。 自適應調整學習速率的梯度下降演算法,在訓練的過程中,力圖使演算法穩定,同時又使學習的步長儘量地大,學習速率則是根據區域性誤差曲面作出相應的調整。...

連結:

https://blog.csdn.net/eric_e/article/details/80371022

http://blog.sina.com.cn/s/blog_15f0112800102wojj.html