摘要: 深度學習的核心問題就是一個非常難的優化問題。所以在神經網絡引入後的幾十年間,深度神經網絡的優化問題的困難性是阻礙它們成為主流的一個重要因素。
深度學習的核心問題就是一個非常難的優化問題。所以在神經網絡引入後的幾十年間,深度神經網絡的優化問題的困難性是阻礙它們成為主流的一個重要因素。並導致了它們在20世紀90年代到21世紀初期間的衰落。不過現在已經基本解決了這個問題。在本篇博文中,我會探討優化神經網絡的“困難性”,以及理論上是怎麼解釋這個問題的。簡而言之:神經網絡變得越深,優化問題就會變得越難。
最簡單的神經網絡是單節點感知器,其優化問題是凸問題。凸優化問題的好處是所有的局部最小值也是全局最小值。存在各種各樣的優化算法來解決凸優化問題,並且每隔幾年就會發現更好的用於凸優化的多項式時間的算法。使用凸優化算法可以輕鬆地優化單個神經元的權重(參見下圖)。下面讓我們看看擴展一個單神經元後會發生什麼。
圖1 左圖:一個凸函數。右圖:一個非凸函數。凸函數比非凸函數更容易找到函數曲面的底部(來源:Reza Zadeh)
下一步自然就是在保持單層神經網絡的情況下添加更多的神經元。對於單層n節點感知器的神經網絡,如果存在邊權重可以使得神經網絡能正確地對訓練集進行分類,那麼這樣的邊權重是可以通過線性規劃在多項式時間O(n)內找到。線性規劃也是凸優化的一種特殊情況。這時一個問題應運而生:我們可以對更深的多層神經網絡做出這種類似的保證麼?不幸的是,不能。
為了可證明地解決兩層或多層的一般神經網絡的優化問題,需要的算法將會遇到某些計算機科學中最大的未解問題。因此我們對機器學習研究人員嘗試找到可證明地解決深度神經網絡優化問題的算法不抱有太大的希望。因為這個優化問題是NP-hard問題,這意味著如果在多項式時間內可證明地解決這個問題,那麼也可以解決那些幾十年來尚未被解決的成千上萬的問題。事實上,J. Stephen Judd在1988年就發現下面這個問題是NP-hard問題:
給定一個一般的神經網絡和一組訓練樣本,是否存在一組網絡邊權重使得神經網絡能為所有的訓練樣本產生正確的輸出?
Judd的研究還表明:即使要求一個神經網絡只為三分之二的訓練樣本產生正確的輸出仍然是一個NP-hard問題。這意味著即使在最壞的情況下,近似訓練一個神經網絡在本質上還是困難的。1993年Blum和Rivest發現的事實更糟:即使一個只有兩層和三個節點的簡單神經網絡的訓練優化問題仍然是NP-hard問題。
理論上,深度學習與機器學習中的很多相對簡單的模型(例如支持向量機和邏輯回歸模型)的區別在於,這些簡單模型可以數學證明地在多項式時間內完成模型優化。對於這些相對簡單的模型,我們可以保證即使用運行時間比多項式時間更長的優化算法也都不能找到更好的模型。但是現有的深度神經網絡的優化算法並不能提供這樣的保證。在你訓練完一個深度神經網絡模型之後,你並不知道這個網絡模型是否是在你的當前配置下能找到的最優的一個模型。所以你會存有疑慮,如果繼續訓練模型的話是否可以得到一個更好的模型。
幸運的是我們在實踐中可以非常高效地接近這些最優結果:通過運行經典的梯度下降優化方法就可以得到足夠好的局部最小值,從而可以使我們在許多常見問題上取得巨大進步,例如圖像識別、語音識別和機器翻譯。我們簡單地忽略最優結果,並在時間允許的情況下盡可能多地進行梯度下降迭代。
似乎傳統的優化理論結果是殘酷的,但我們可以通過工程方法和數學技巧來盡量規避這些問題,例如啟發式方法、增加更多的機器和使用新的硬件(如GPU)。一些研究工作正在積極地探索為什麼理論結果很殘酷,但這些經典的優化算法卻工作得這麼好。
End.
轉貼自: 36大數據
回應
- 找不到回應
留下你的回應
以訪客張貼回應