![]() 一、訓練數(shù)據(jù)的數(shù)量不足要教一個牙牙學語的小朋友什么是蘋果,你只需要指著蘋果說“蘋果”(可能需要重復這個過程幾次)就行了,然后孩子就能夠識別各種顏色和形狀的蘋果了,簡直是天才! 機器學習還沒達到這一步,大部分機器學習算法需要大量的數(shù)據(jù)才能正常工作。即使是最簡單的問題,很可能也需要成千上萬個示例,而對于諸如圖像或語音識別等復雜問題,則可能需要數(shù)百萬個示例(除非你可以重用現(xiàn)有模型的某些部分)。 數(shù)據(jù)的不合理有效性在2001年發(fā)表的一篇著名論文中,微軟研究員Michele Banko和Eric Brill表明,給定足夠的數(shù)據(jù),截然不同的機器學習算法(包括相當簡單的算法)在自然語言歧義消除這個復雜問題上注8,表現(xiàn)幾乎完全一致(如下圖所示)。 ![]() 正如作者所說:“這些結(jié)果表明,我們可能會重新思考如何在二者之間做權(quán)衡—將錢和時間花在算法的開發(fā)上,還是花在語料庫的建設(shè)上?!?/p> 對復雜問題而言,數(shù)據(jù)比算法更重要,這一想法被Peter Norvig等人進一步推廣,于2009年發(fā)表論文“The Unreasonable Effectiveness of Data”注10。不過需要指出的是,中小型數(shù)據(jù)集依然非常普遍,獲得額外的訓練數(shù)據(jù)并不總是一件輕而易舉或物美價廉的事情,所以暫時先不要拋棄算法。 二、訓練數(shù)據(jù)不具代表性為了很好地實現(xiàn)泛化,至關(guān)重要的一點是對于將要泛化的新示例來說,訓練數(shù)據(jù)一定要非常有代表性。無論你使用的是基于實例的學習還是基于模型的學習,都是如此。 例如,前面用來訓練線性模型的國家數(shù)據(jù)集并不具備完全的代表性,有部分國家的數(shù)據(jù)缺失。下圖顯示了補充缺失國家信息之后的數(shù)據(jù)表現(xiàn)。 ![]() 如果你用這個數(shù)據(jù)集訓練線性模型,將會得到圖中的實線,而虛線表示舊模型。正如你所見,添加部分缺失的國家信息不僅顯著地改變了模型,也更清楚地說明這種簡單的線性模型可能永遠不會那么準確??雌饋?,某些非常富裕的國家并不比中等富裕的國家更幸福(事實上,看起來甚至是不幸福),反之,一些貧窮的國家也似乎比許多富裕的國家更加幸福。 使用不具代表性的訓練集訓練出來的模型不可能做出準確的預估,尤其是針對那些特別貧窮或特別富裕的國家。 針對你想要泛化的案例使用具有代表性的訓練集,這一點至關(guān)重要。不過說起來容易,做起來難:如果樣本集太小,將會出現(xiàn)采樣噪聲(即非代表性數(shù)據(jù)被選中);而即便是非常大的樣本數(shù)據(jù),如果采樣方式欠妥,也同樣可能導致非代表性數(shù)據(jù)集,這就是所謂的采樣偏差。 關(guān)于采樣偏差的一個示例最著名的采樣偏差的示例發(fā)生在1936年美國總統(tǒng)大選期間,蘭登對決羅斯福。Literary Digest當時舉行了一次大范圍的民意調(diào)查,向約1000萬人發(fā)送郵件,并得到了240萬個回復,因此做出了高度自信的預言—蘭登將獲得57%的選票。結(jié)果恰恰相反,羅斯福贏得了62%的選票。問題就在于Literary Digest的采樣方式:
再舉一個示例,假設(shè)你想創(chuàng)建一個系統(tǒng)用來識別funk音樂視頻。構(gòu)建訓練集的方法之一是直接在YouTube上搜索“funk music”,然后使用搜索結(jié)果的視頻。但是,這其實基于一個假設(shè)—YouTube的搜索引擎返回的視頻結(jié)果是所有能夠代表funk音樂的視頻。而實際的搜索結(jié)果可能會更偏向于當前流行的音樂人(如果你住在巴西,你會得到很多關(guān)于“funk carioca”的視頻,這聽起來跟James Brown完全不是一回事)。另一方面,你還能怎樣獲得一個大的訓練集? 三、低質(zhì)量數(shù)據(jù)顯然,如果訓練集滿是錯誤、異常值和噪聲(例如,低質(zhì)量的測量產(chǎn)生的數(shù)據(jù)),系統(tǒng)將更難檢測到底層模式,更不太可能表現(xiàn)良好。所以花時間來清理訓練數(shù)據(jù)是非常值得的投入。事實上,大多數(shù)數(shù)據(jù)科學家都會花費很大一部分時間來做這項工作。例如:
四、無關(guān)特征正如我們常說的:垃圾入,垃圾出。只有訓練數(shù)據(jù)里包含足夠多的相關(guān)特征以及較少的無關(guān)特征,系統(tǒng)才能夠完成學習。一個成功的機器學習項目,其關(guān)鍵部分是提取出一組好的用來訓練的特征集。這個過程叫作特征工程,包括以下幾點:
現(xiàn)在我們已經(jīng)看了不少“壞數(shù)據(jù)”的示例,再來看幾個“壞算法”的示例。 五、過擬合訓練數(shù)據(jù)假設(shè)你正在國外旅游,被出租車司機敲詐,你很可能會說,那個國家的所有出租車司機都是強盜。過度概括是我們?nèi)祟惓W龅氖虑?,不幸的是,如果我們不小心,機器很可能也會陷入同樣的陷阱。在機器學習中,這稱為過擬合,也就是指模型在訓練數(shù)據(jù)上表現(xiàn)良好,但是泛化時卻不盡如人意。下圖顯示了一個訓練數(shù)據(jù)過擬合的高階多項式生活滿意度模型。雖然它在訓練數(shù)據(jù)上的表現(xiàn)比簡單的線性模型要好得多,但是你真的敢相信它的預測嗎? ![]() 雖然諸如深度神經(jīng)網(wǎng)絡(luò)這類的復雜模型可以檢測到數(shù)據(jù)中的微小模式,但是如果訓練集本身是有噪聲的,或者數(shù)據(jù)集太?。ㄒ肓瞬蓸釉肼暎?,那么很可能會導致模型檢測噪聲本身的模式。很顯然,這些模式不能泛化至新的實例。舉例來說,假設(shè)你給生活滿意度模型提供了更多其他的屬性,包括一些不具信息的屬性(例如國家名)。在這種情況下,一個復雜模型可能會檢測到這樣的事實模式:訓練數(shù)據(jù)中,名字中帶有字母w的國家,如新西蘭(New Zealand,生活滿意度為7.3)、挪威(Norway,生活滿意度為7.4)、瑞典(Sweden,生活滿意度為7.2)和瑞士(Switzerland,生活滿意度為7.5),生活滿意度均大于7。當把這個w滿意度規(guī)則泛化到盧旺達(Rwanda)或津巴布韋(Zim-babwe)時,你對結(jié)果有多大的自信?顯然,訓練數(shù)據(jù)中的這個模式僅僅是偶然產(chǎn)生的,但是模型無法判斷這個模式是真實的還是噪聲產(chǎn)生的結(jié)果。 當模型相對于訓練數(shù)據(jù)的數(shù)量和噪度都過于復雜時,會發(fā)生過擬合。可能的解決方案如下。
通過約束模型使其更簡單,并降低過擬合的風險,這個過程稱為正則化。例如,我們前面定義的線性模型有兩個參數(shù):θ0和θ1。因此,該算法在擬合訓練數(shù)據(jù)時,調(diào)整模型的自由度就等于2,它可以調(diào)整線的高度(θ0)和斜率(θ1)。如果我們強行讓θ1 = 0,那么算法的自由度將會降為1,并且擬合數(shù)據(jù)將變得更為艱難—它能做的全部就只是將線上移或下移來盡量接近訓練實例,最后極有可能停留在平均值附近。這確實太簡單了!如果我們允許算法修改θ1,但是我們強制它只能是很小的值,那么算法的自由度將位于1和2之間,這個模型將會比自由度為2的模型稍微簡單一些,同時又比自由度為1的模型略微復雜一些。你需要在完美匹配數(shù)據(jù)和保持模型簡單之間找到合適的平衡點,從而確保模型能夠較好地泛化。 下圖顯示了三個模型。點線表示的是在以圓圈表示的國家上訓練的原始模型(沒有正方形表示的國家),虛線是我們在所有國家(圓圈和方形)上訓練的第二個模型,實線是用與第一個模型相同的數(shù)據(jù)訓練的模型,但是有一個正則化約束。可以看到,正則化強制了模型的斜率較?。涸撃P团c訓練數(shù)據(jù)(圓圈)的擬合不如第一個模型,但它實際上更好地泛化了它沒有在訓練時看到的新實例(方形)。 在學習時,應用正則化的程度可以通過一個超參數(shù)來控制。超參數(shù)是學習算法(不是模型)的參數(shù)。因此,它不受算法本身的影響。超參數(shù)必須在訓練之前設(shè)置好,并且在訓練期間保持不變。如果將正則化超參數(shù)設(shè)置為非常大的值,會得到一個幾乎平坦的模型(斜率接近零)。學習算法雖然肯定不會過擬合訓練數(shù)據(jù),但是也更加不可能找到一個好的解決方案。調(diào)整超參數(shù)是構(gòu)建機器學習系統(tǒng)非常重要的組成部分。 ![]() 六、欠擬合訓練數(shù)據(jù)你可能已經(jīng)猜到了,欠擬合和過擬合正好相反。它的產(chǎn)生通常是因為對于底層的數(shù)據(jù)結(jié)構(gòu)來說,你的模型太過簡單。例如,用線性模型來描述生活滿意度就屬于欠擬合?,F(xiàn)實情況遠比模型復雜得多,所以即便是對于用來訓練的示例,該模型產(chǎn)生的預測都一定是不準確的。 解決這個問題的主要方式有:
七、全局總結(jié)現(xiàn)在我們對機器學習已經(jīng)有了一定了解。我們暫且退后一步,縱觀一下全局:
|
|
來自: 漢無為 > 《機器學習基礎(chǔ)》