機器學習(machine learning)已然成為無數重要應用的基石——如今,在網絡搜索、垃圾郵件檢測、語音識別以及產品推薦等領域,你都能夠發現它的身影。如果你或你的團隊正在研發一款機器學習相關應用,並期待取得較快進展,那么這本書將會是你的得力助手。
案例:建立貓咪圖片初創公司
想象一下,你正在建立一家初創公司,這家公司的產品目標是為貓咪愛好者們提供數不盡的貓咪圖片,你打算應用神經網絡(neural network)技術來構建一套計算機視覺系統,通過該系統來識別圖片中的貓。
但悲劇的是,目前你的學習算法准確度還不夠好。為了改進這個貓咪檢測器,你正面臨着巨大的壓力。可你該怎么做呢?
你的團隊給出了許多建議,例如:
- 獲取更多的數據,即收集更多的貓咪圖片
- 收集更加多樣化的訓練數據集,圖片中貓的位置可能不常見,也有可能顏色奇異,或者拍攝時使用不同的相機參數
- 通過增加梯度下降的迭代次數,使算法訓練得久一些
- 嘗試一個擁有更多層/更多隱藏元/更多參數的,規模更大的神經網絡
- 嘗試一個更小的神經網絡
- 嘗試加入正則化(例如 L2 正則化)
- 改變神經網絡的架構(激活函數,隱藏元數量等等)
- …
在上面眾多的方向中,如果你做出了正確的選擇,就將建立起一個效果領先的貓咪圖片識別平台,並帶領你的公司取得成功。但如果你選擇了一個糟糕的方向,則可能因此浪費掉幾個月的時間。那么你該如何做出決定呢?
這本書將告訴你應該怎么做。眾多的機器學習問題會留下一些線索,告訴你什么樣的嘗試有用,什么樣的沒用。而學會解讀這些線索將會節省你幾個月甚至幾年的開發時間。
規模驅動機器學習發展
關於深度學習(神經網絡)的一些想法在幾十年前就有了,那為什么它們到現在才流行起來了呢?
推動其近期發展的主要因素有兩個:
- 數據可用性(data availability):如今人們在數字設備(筆記本電腦、移動設備等)上花費的時間越來越多,對應的數字化行為與活動產生了海量的數據,而這些數據都可以提供給我們的學習算法用來訓練。
- 計算規模(computational scale):在近幾年前,我們才開始有能力訓練出規模足夠大的神經網絡來使用現有的海量數據集。
具體來說,即使你積累了更多的數據,但應用在類似於對數幾率回歸(logistic regression)這樣較傳統的學習算法上,其性能表現(performance)也將趨於 “平穩” 。這意味着算法的學習曲線將 “變得平緩” ,就算提供更多的數據,算法的性能也將不再提升。
傳統學習算法似乎並不知道要如何來處理現今這般規模量級的數據。
在同樣的監督學習任務下,選擇訓練一個小型的神經網絡(neutral network, NN),你可能會獲得較好的性能表現:
該圖顯示了在小數據集上應用神經網絡的效果會更好,但這種效果與將神經網絡應用在大數據集時不太一致。在小數據集情況下,傳統算法是否會表現得更好,取決於人們如何進行特征選擇工程。例如,假設你只有 20 個訓練樣本,那么使用對數幾率回歸還是神經網絡可能無關緊要;此時人為的特征選擇工程比起選擇哪種算法將產生更大的影響。但如果你有 100 萬個樣本數據,我會贊成你使用神經網絡。
這里的 “小型神經網絡” 指的是只含有少量的隱藏元/層/參數的神經網絡。但如果你訓練的神經網絡規模越來越大,最終很有可能會獲得更好的表現:
因此,為了獲得最佳的性能表現,你可以這樣做:
- 訓練大型的神經網絡,效果如同上圖的綠色曲線;
- 擁有海量的數據。
在算法訓練時,許多其它的細節也同等重要,例如神經網絡的架構。但目前來說,提升算法性能的更加可靠的方法仍然是訓練更大的網絡以及獲取更多的數據。完成 1 和 2 的過程異常復雜,本書將對其中的細節作進一步的討論。我們將從傳統學習算法與神經網絡中都起作用的通用策略入手,循序漸進地講解至最前沿的構建深度學習系統的策略。
PDF下載
描二維碼關注微信公眾號,回復關鍵字“機器學習要領”獲取下載地址。
任何關於算法、編程、AI行業知識或博客內容的問題,可以隨時掃碼關注公眾號「圖靈的貓」,加入”學習小組“,沙雕博主在線答疑~此外,公眾號內還有更多AI、算法、編程和大數據知識分享,以及免費的SSR節點和學習資料。其他平台(知乎/B站)也是同名「圖靈的貓」,不要迷路哦~