5.6 批量梯度下降法
5.6.1 PCA降維的意義
在很多時候,我們需要綜合使用隨機梯度下降法和瀑布下降法的長處。這時往往數據量很大,一次計算所有的數據是非常耗費內存的。而一個一個的隨機梯度下降的計算又耗費時間。如果把耗費內存的瀑布下降法看作是空間法,而把隨機梯度下降則看作是時間法,那么批量梯度下降法就可以看作是時空法。這有點類似物理上的靜力學,運動學到相對論的感覺。所以批量梯度下降法就是機器學習中的相對論算法。
那么問題來了。我們有沒有可能耗費很小的計算資源,就能夠得到很精確的學習結果呢?
答案當然是有的。從算法的本質來看,如果處理的數據都非常類似,那么對于算法來說,這些數據就沒有必要處理很多次。這相當于說如果兩條數據的相關性接近1,那么就把它們看作是一條數據。這個過程叫數據的降維。目前最好的數據降維的辦法是矩陣PCA算法。我們先不討論這個算法本身。只要記住它的核心功能就是讓數據集瘦下來。實際上這個算法對于瀑布下降法也是適用的,但當我們選擇用瀑布下降法的時候,實際上表明我們碰到的數據集完全可以用內存來處理,這時候在學習之前用PCA的意義并不大。因為這種小型的數據集可以簡單粗暴對待。但是當數據量變得很大時,PCA的意義就十分突出了。它甚至可以在不丟失泛性的情況下,將數據集瘦身好幾個數量級,這對于算法來說,就是快了好幾個數量級。這種情形下,就可以將算法的性能提升到極致。
上面講的PCA降維實際上還有更強的意義。由于它只取一部分特征數據來進行計算,所以在這個數據集下進行的深度學習,將不會陷入到局部最優(yōu)解去。這是非常非常重要的性質。因為局部最優(yōu)解的存在本身就反映了數據集中有數據分布聚集的現象存在。這種聚集在一起的數據,相關性一般比較大。當我們用PCA降維后,這些相關性很大的數據集,就之有一個代表會被抽取出來。這樣就自動跳出了這個局部聚集的數據集。因此也不會陷入局部最優(yōu)解。
我們將在算法優(yōu)化的章節(jié)中,再來討論這個問題。
說個題外話。如果你有相對論的數學基礎,你會發(fā)現這里處理問題的方式和相對論很相似。只不過在相對論里討論的是洛倫茲不變性。這也是為什么我將批量梯度下降法叫做時空法的原因。
我們現在回到批量梯度下降法。