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