局部最優解


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


免責聲明!

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



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