這幾天每天花了點時間看完了吳恩達的深度學習課程視頻。目前還只有前三個課程,后面的卷積神經網絡和序列模型尚未開課。課程的視頻基本上都是十分鍾出頭的長度,非常適合碎片時間學習。
一直以為機器學習的重點在於設計精巧、神秘的算法來模擬人類解決問題。學了這門課程才明白如何根據實際問題優化、調整模型更為重要。事實上,機器學習所使用的核心算法幾十年來都沒變過。
什么是機器學習呢?以二類分類監督學習為例,假設我們已經有了一堆訓練數據,每個訓練樣本可以看作n維空間里的一個點,那么機器學習的目標就是利用統計算法算出一個將這個n維空間分成兩個部分(也就是把空間切成兩半)的分界面,使得相同類別的訓練數據在同一個部分里(在分界面的同側)。而所用的統計算法無非是數學最優化理論的那些算法,梯度下降法等等。
在機器學習的模型中,神經網絡是一個比較特殊的模型。因為它比較萬能。萬能二字可不是隨便說說的,有定理為證,萬能近似定理說,當神經網絡的隱藏單元足夠多,它就能逼近任意函數。也就是說,只要提供的訓練數據量充足,就一定能用一個隱藏單元夠多的神經網絡去擬合這些訓練數據。然而神經網絡也有一個很嚴重的缺點:收斂速度太慢。這一缺點導致很長時間以來神經網絡基本上都只能當作理論的標桿而很少被應用於實際問題。
近年來神經網絡的興起得益於三點:1. 算法進展;2. 大數據;3. 硬件提升。這三點使得神經網絡(特別是深層網絡)的訓練速度大幅度提升。前面有說到,模型優化調整過程對於模型的建立至關重要。使用機器學習解決實際問題是一個持續迭代探索優化的過程,需要不斷地試錯。就好比在走迷宮,你不可能一開始就知道正確的路線在哪,只能加快步伐,盡可能快,盡可能早地走過每一條死路,並祈禱出口是存在着的。優化調整需要反復地訓練模型,觀察結果。在以前,一次訓練可能耗時幾個月甚至幾年,這種情況下進行迭代調優的時間成本是不可接受的。而現在一次迭代可能只需要很短的一段時間,同時並發技術也使得同時訓練不同參數的模型的方案變得可行。快速迭代,優化調整,使神經網絡能夠越來越多的應用於各種實際問題。
吳恩達的課程數學上是比較基礎的。課程前面部分講解了神經網絡相關的主要算法,后面則側重於講工程上如何使用各種策略來調整優化模型使之能夠快速地擬合實際問題。下圖是對這門課主要知識點的總結。放在這兒以后回頭溫習用。