1.1.3 什麼使深度學習火起來了
深度學習這個技術其實幾十年前就已經存在了。但為什麼直到近幾年才火起來了? 在這篇文章中,讓我們來看看使深度學習火起來的一些因素。
上圖橫軸代表訓練資料的數量,縱軸代表演算法效能(如廣告點選預測的準確性)。從圖中可以看出,當我們給出越多的訓練資料時,各種演算法的效能都會越高。但是各個演算法之間有所區別。對於傳統的機器學習演算法(黑色的曲線),最開始它的效能也在提升,但是後來,無論你再怎麼新增訓練資料它的效能都不再提升了。再多的資料也是浪費。而對於小型神經網路,它的效能是會隨著資料量不斷提升的,但是提升的幅度不大,中型網路幅度要大些,大型網路幅度就更大些…
之前我們一直因為沒有足夠量的資料而無法提升神經網路的效能。但後來我們進入了電子社會,攝像頭、電腦、手機越來越便宜,同時人們花費了大量時間在電腦在網頁在手機上面,以及後來出現的物聯網,各種穿戴裝置各種感測器產生了越來越多的資料。這使得神經網路得以大展拳腳。
需要注意的是,上圖指的訓練資料是帶標籤的資料,即有x,y標籤的。現在的神經網路不是所有的資料都認識,它只認識那些帶標籤的資料(可訓練的樣本)。因為當前有所作為的都還只是監督學習型的神經網路。
從上圖還可以看出,如果你想達到非常高的效能水平,那麼你需要兩樣東西。首先,你需要足夠大的神經網路,其次你需要很多訓練資料。所以我們經常說“規模一直在推動著深度學習的進步”。這裡的規模,是指神經網路的大小以及訓練資料的數量。但是規模始終是有盡頭的,因為最終你耗盡了資料,或者最終你的網路太大了,以至於需要很長時間才能訓練完。但僅僅是為了提升規模,在深度學習的世界裡,我們都已經走了很長的路了,這一路來隨著規模的提升神經網路的效能也在同步提升著。
從圖中還可以看出,紫色虛線左邊的區域(訓練資料量很小的區域)中,各種不同演算法的效能其實分不出高下。也就是說,在可訓練的資料集很小的情況下,極有可能某人實現的傳統的機器學習演算法會比你的大型神經網路的效能還高。
在早些年,深度學習領域的進步主要靠不斷增長的訓練資料量以及不斷增長的計算力(CPU和GPU的發展)。 但在過去的幾年裡我們開始看到了巨大的演算法創新。當然其中很多演算法創新都只是為了讓神經網路執行得更快(相當於提升計算力)。例如,一個巨大的突破就是用relu函式代替了sigmoid函式。當然現在你還不需要了解它們的細節。在這裡簡單和大家說一下,在sigmoid函式的某些區域的斜率幾乎為零,所以使學習變得很慢,而relu函式的斜率一直都很大(你回顧一下前面文章中我畫的relu函式的圖就可以很直觀的明白了,這個函式的圖是一個很陡的直線,所以斜率很大)。這些新的演算法大大縮短了神經網路的訓練週期,讓我們可以訓練更大的神經網路、利用上更多的訓練資料。
強大計算力很重要的另一個原因是,它可以讓你更快的驗證自己的想法,以便不斷試錯,以得到更好的想法。例如,你有一個神經網路架構的想法,你用程式碼實現了你的想法,然後執行它,進行訓練,然後通過觀察它,分析執行結果,然後你再修改自己的想法細節,然後再執行再觀察再修改…。就這樣不停地來回試錯。所以執行這個試錯的週期就很關鍵了,如果你的神經網路執行一次要幾個月,那麼就要等幾個月後才能看到結果,然後調整你的想法細節,然後又開始執行,然後又是等幾個月…我勒個去~~我會把電腦都給砸了。