1.5 開始你的機器學習之旅
機器學習在很大程度上是一種權衡(trade-off)的藝術,沒有一種機器學習的方法一定優于另一種,一種算法在獲得某種優勢的同時也將受限于某種劣勢。設計一個好的機器學習系統需要對各種因素通盤考慮,結合任務需求和數據特性,選擇合適的機器學習方法。
1.5.1 訓練、驗證與測試
我們從一個最簡單的機器學習任務開始。要完成這一學習任務,我們將實驗過程分為訓練(Training)和測試(Testing)兩個階段。訓練相當于我們平時在課堂上學知識(機器學習是學習模型);測試相當于我們的期末考試,用來測試訓練過程是否取得了足夠好的學習效果。
- 訓練:給定一個包含若干樣本的訓練集(Training Set),對模型進行參數調整,使得該模型在訓練集上的性能越來越好。
- 測試:將訓練完成的模型在一個獨立的測試集(Test Set)上進行測試,通過在該測試集上獲得的性能來判斷模型的好壞。
這里有一個問題:為什么模型性能要在一個獨立的測試集上驗證,而不是在訓練集上?這是因為在很多情況下,經過反復訓練可以讓模型對訓練數據有充分的代表性,因此在該數據集上表現出良好性能,但對不包含在訓練集中的數據性能反而會越來越差。這有些像我們平時讀書備考,如果只是將課本背得滾瓜爛熟,卻不會舉一反三,那么考試時肯定得不到好成績,因為考試肯定會出書本上沒有的問題,過于沉溺書本就失去了對新問題的解決能力。機器學習也是如此,訓練過度后,模型對訓練數據描述得過細,以至于失去了代表新數據的能力,這種現象稱為過擬合(Over-Fitting)。相反,如果對訓練數據的學習達不到要求,得到的模型在其他數據集上的性能也不會好,這種現象稱為欠擬合(Under-Fitting)。這類似于一個學生連課本上的知識點都沒有掌握,在考試中肯定也會一敗涂地。
如何防止過擬合呢?一個簡單的方法是在訓練時用測試集檢驗模型的性能,當模型性能在測試集上開始下降的時候,即認為出現了過擬合,此時停止訓練會得到一個在測試集上性能最好的模型。但這一方法在訓練時用到了測試數據信息,得到的模型對測試集產生了依賴。為防止這一問題,通常會單獨設計一個驗證集(Validation Set),基于驗證集進行模型選擇,選擇出的模型在測試集上進行測試,將該測試結果作為模型性能的評價。
1.5.2 Occam剃刀準則
一般來說,越復雜的模型含有的參數越多,越容易對訓練數據描述過細,產生過擬合。然而,過于簡單的模型又不具有較好的描述能力,無法學到足夠的知識。因此,選擇合適的模型復雜度對解決實際問題特別重要。一般遵循的準則是:“在保證足夠描述能力的前提下盡量選擇最簡單的模型”,這一準則稱為Occam剃刀準則(Occam's Razor)。
1.5.3 沒有免費的午餐
機器學習中有那么多模型,有沒有一種模型完勝其他模型呢?答案是沒有。所謂模型好壞都是相對特定任務、特定場景、特定數據而言的。如果一個模型在某一場景、某一數據下具有某種優勢,則在其他場景、其他數據下必然具有相應的劣勢,這一原則稱為No Free Lunch原則,即常說的“天下沒有免費的午餐”。這一原則是機器學習實踐中的基本準則(23)(24),它告訴我們對具體任務要具體分析,選擇與任務相匹配的模型,才能得到較好的效果。這也提示我們要學習每種模型背后的基礎假設和適用條件,唯其如此,才能對不同任務設計出合理的模型結構和合理的學習方法。
1.5.4 對初學者的幾點建議
常有初學者問這樣的問題:機器學習難嗎?答案應該是“Yes or NO”。一方面,機器學習確實很難,有那么多的算法、理論、公式,發展又如此迅速,新方法層出不窮,讓人無所適從。另一方面,如果理解了各種算法的發展脈絡和內在聯系,就會發現絕大部分算法都是順延著某一主線一脈相承下來的,不同算法之間都有或多或少的關聯,如果將這些脈絡和關聯理清楚,掌握機器學習并不是很難的事情。
特別要注意的是,機器學習是一門科學。既然是科學,就有自己的理論體系和思維方式。對于初學者,應該盡可能理解每種方法的基本思想和基本原理。這一點對年輕人尤為重要:現在有很多開源工具可用,很容易養成拿來主義、不求甚解的壞習慣,這對從事這方面的研究是非常有害的。另一方面,機器學習又是一門實踐性很強的科學,理論聯系實踐非常重要。初學者應多動手實踐,在實踐中提高自己分析問題和解決問題的能力。最后,要認識到機器學習本身是有局限性的,還有很多問題需要解決。謙虛謹慎地學習,在實踐中積累經驗,是初學者應有的態度。