深度學習算法的幾個難點
1、局部最優問題。
深度學習算法的目標函數,幾乎全都是非凸的。而目前尋找最優解的方法,都是基于梯度下降的。稍微有點背景知識的人都知道,梯度下降方法是解決不了非凸問題的。因此,如果找到最優解,將是深度學習領域,非常值得研究的課題。
andrew在google的工作,也就是那只貓,其實訓練過程是讓人很費解的。為了縮短訓練時間,項目組采用了分布式訓練的方式。采用了1000 臺計算機,在不同的計算機上存儲不同的訓練數據,不同的訓練服務器通過參數服務器進行參數的交換。訓練過程開始后,所有的訓練計算機從參數服務器更新當前 參數,然后利用當前參數以及本機器上的訓練數據,計算得到當前的梯度,通過貪婪式方法,訓練到不能再訓練為止,然后將參數的更新量提交給服務器,再獲取新 的參數進行更新。
在這個過程中,出現了不同機器在同步時間上的一個大問題。具體闡述如下:梯度下降這種方法,在計算梯度的時候,一定要知道當前參數的具體值,梯度是 針對某一個具體的參數值才有意義的。但是,由于在這個系統中,計算機非常多,當計算機A從服務器上獲得參數值后,完成梯度的計算得到步進量的時候,可能在 它提交結果之前,計算機B已經修改了參數服務器上的參數了。也就是說,A所得到的步進量,并不是針對當前的參數值的。
論文中,作者注意到了這個問題,但是故意不去理會,結果訓練結果居然不錯。作者的解釋是:這是一種歪打正著的現象。
為什么能夠歪打正著呢?有可能是這樣的:非凸問題,本來就不是梯度下降法能夠解決的。如果不存在同步難題,那么隨著訓練的深入,結果肯定會收斂到某一個局部最優解上面去。而現在這種同步問題,恰好能夠有助于跳出局部最優解。因此最終的訓練結果還算不錯。
作者并沒有證明,這種方式,對于尋找全局最優一定是有幫助的。對于最終的結果是否一定是經驗最優的,也沒有證明。因此我感覺,深度學習里面,這種超高維參數的最優結果的尋優,是一個很值得深入研究的問題。它對于最終的效果也確實影響很大。
2、內存消耗巨大,計算復雜。
內存消耗巨大和計算復雜體現在兩個方面。(1)訓練過程。(2)檢測過程。
這兩個過程的計算復雜,根本原因都是龐大的參數規模造成的。比如google的這個項目,每一個位置都用到了8個模版,每一個像素,這8個模版都是 不同的,因此導致最后的模版總數很大,所以訓練和檢測都很慢。當然,這種模版的設計法,讓人不好理解,為什么不同的像素位置,模版完全不同。我還是支持以 前的卷積神經網絡里面的思想,不同位置的模版都是一樣的,但沒一個位置,模版數量就遠不止8個了。這樣的好處是,內存空間中,總的模板數下降了;但缺點 是,計算更復雜了。
因此,如果能夠找到一個好的方法,能夠有效的較低計算復雜度,將是很有意義的。(比如某個鄰域內如果方差極小,其實根本就沒必要計算了,直接賦0.)
3、人腦機理還有很多沒用上。
深度學習模擬的是人腦的其中一個很小的方面,就是:深度結構,以及稀疏性。
但事實上,人腦是相當復雜滴。關于視覺注意機制、多分辨率特性、聯想、心理暗示等功能,目前根本就沒有太多的模擬。所以神經解剖學對于人工智能的影響應該是蠻大的。將來要想掀起機器智能的另一個研究高潮,估計還得繼續借鑒神經解剖學。
4、人為設計模版的可行性。
一直在想,為什么第一層用于檢測角點和邊緣這種簡單特征的模版,一定需要通過無監督訓練得到,如果人為實現模擬的話,能否也得到較為理想的結果呢?
從神經解剖學的成果上來看,人腦的v1區和v2區,神經細胞確實是按照規律排列的。而且都是可以人為設計的。而且,一個讓人懷疑的地方就是,v1區和v2區的神經細胞,是先天發育好的,還是后天訓練出來的?如果是先天的,那就是說,這種模版是可以人為設計的。
5、代價函數的設計方法。
代價函數的設計,在初學者看來,是很奇怪的。代價函數的設計,直接影響到最終的模版訓練結果,可以說是深度學習中最核心的模塊。
從目前已經發表的論文來看,一是考慮重構誤差,二是加入某種懲罰項。懲罰項的設計有多種模式,有考慮一階范式的,有考慮二階范式的,各種設計可謂千 奇百怪。有博文上講到,懲罰項的作用是為了防止過擬合,但也有博文的觀點是,懲罰項是為了保證稀疏性。(感覺過擬合與稀疏性是否存在某種內在聯系。)
當然,代價函數的設計方法,目前還在不斷探索,感覺這是一個可以發論文的點。
6、整個神經網絡系統的設計。
神經網絡的設計方法,包含了研究人員對人腦的理解方式。CNN、RBM,以及andrew項目組設計的變態網絡,都各有各的特色。要把整個網絡框架設計好,還是比較需要經驗的,也是相當費腦力的。當然,這是整個領域最有研究價值的模塊。
作者:denghp83
End.