Sklearn 與 TensorFlow 機(jī)器學(xué)習(xí)實(shí)用指南 —— Chapter 0.前言
大多數(shù)人聽(tīng)到“機(jī)器學(xué)習(xí)”,往往會(huì)在腦海中勾勒出一個(gè)機(jī)器人:一個(gè)可靠的管家,或是一個(gè)可怕的終結(jié)者,這取決于你問(wèn)的是誰(shuí)。但是機(jī)器學(xué)習(xí)并不是未來(lái)的幻想,它已經(jīng)來(lái)到我們身邊了。事實(shí)上,一些特定領(lǐng)域已經(jīng)應(yīng)用機(jī)器學(xué)習(xí)幾十年了,比如光學(xué)字符識(shí)別 (Optical Character Recognition,OCR)。但是直到 1990 年代,第一個(gè)影響了數(shù)億人的機(jī)器學(xué)習(xí)應(yīng)用才真正成熟,它就是垃圾郵件過(guò)濾器(spam filter)。雖然并不是一個(gè)有自我意識(shí)的天網(wǎng)系統(tǒng)(Skynet),垃圾郵件過(guò)濾器從技術(shù)上是符合機(jī)器學(xué)習(xí)的(它可以很好地進(jìn)行學(xué)習(xí),用戶(hù)幾乎不用再標(biāo)記某個(gè)郵件為垃圾郵件)。后來(lái)出現(xiàn)了更多的數(shù)以百計(jì)的機(jī)器學(xué)習(xí)產(chǎn)品,支撐了更多你經(jīng)常使用的產(chǎn)品和功能,從推薦系統(tǒng)到語(yǔ)音識(shí)別。
機(jī)器學(xué)習(xí)的起點(diǎn)和終點(diǎn)分別是什么呢?確切的講,機(jī)器進(jìn)行學(xué)習(xí)是什么意思?如果我下載了一份維基百科的拷貝,我的電腦就真的學(xué)會(huì)了什么嗎?它馬上就變聰明了嗎?在本章中,我們首先會(huì)澄清機(jī)器學(xué)習(xí)到底是什么,以及為什么你要使用它。
然后,在我們出發(fā)去探索機(jī)器學(xué)習(xí)新大陸之前,我們要觀(guān)察下地圖,以便知道這片大陸上的主要地區(qū)和最明顯的地標(biāo):監(jiān)督學(xué)習(xí)vs非監(jiān)督學(xué)習(xí),在線(xiàn)學(xué)習(xí)vs批量學(xué)習(xí),基于實(shí)例vs基于模型學(xué)習(xí)。然后,我們會(huì)學(xué)習(xí)一個(gè)典型的機(jī)器學(xué)習(xí)項(xiàng)目的工作流程,討論可能碰到的難點(diǎn),以及如何評(píng)估和微調(diào)一個(gè)機(jī)器學(xué)習(xí)系統(tǒng)。
這一章介紹了大量每個(gè)數(shù)據(jù)科學(xué)家需要牢記在心的基礎(chǔ)概念(和習(xí)語(yǔ))。第一章只是概覽(唯一不含有代碼的一章),相當(dāng)簡(jiǎn)單,但你要確保每一點(diǎn)都搞明白了,再繼續(xù)進(jìn)行學(xué)習(xí)本書(shū)其余章節(jié)。端起一杯咖啡,開(kāi)始學(xué)習(xí)吧!
提示:如果你已經(jīng)知道了機(jī)器學(xué)習(xí)的所有基礎(chǔ)概念,可以直接翻到第2章。如果你不確認(rèn),可以嘗試回答本章末尾列出的問(wèn)題,然后再繼續(xù)。
什么是機(jī)器學(xué)習(xí)?
機(jī)器學(xué)習(xí)是通過(guò)編程讓計(jì)算機(jī)從數(shù)據(jù)中進(jìn)行學(xué)習(xí)的科學(xué)(和藝術(shù))。
下面是一個(gè)更廣義的概念:
機(jī)器學(xué)習(xí)是讓計(jì)算機(jī)具有學(xué)習(xí)的能力,無(wú)需進(jìn)行明確編程。 —— 亞瑟·薩繆爾,1959
和一個(gè)工程性的概念:
計(jì)算機(jī)程序利用經(jīng)驗(yàn) E 學(xué)習(xí)任務(wù) T,性能是 P,如果針對(duì)任務(wù) T 的性能 P 隨著經(jīng)驗(yàn) E 不斷增長(zhǎng),則稱(chēng)為機(jī)器學(xué)習(xí)。 —— 湯姆·米切爾,1997
例如,你的垃圾郵件過(guò)濾器就是一個(gè)機(jī)器學(xué)習(xí)程序,它可以根據(jù)垃圾郵件(比如,用戶(hù)標(biāo)記的垃圾郵件)和普通郵件(非垃圾郵件,也稱(chēng)作 ham)學(xué)習(xí)標(biāo)記垃圾郵件。用來(lái)進(jìn)行學(xué)習(xí)的樣例稱(chēng)作訓(xùn)練集。每個(gè)訓(xùn)練樣例稱(chēng)作訓(xùn)練實(shí)例(或樣本)。在這個(gè)例子中,任務(wù) T 就是標(biāo)記新郵件是否是垃圾郵件,經(jīng)驗(yàn)E是訓(xùn)練數(shù)據(jù),性能P需要定義:例如,可以使用正確分類(lèi)的比例。這個(gè)性能指標(biāo)稱(chēng)為準(zhǔn)確率,通常用在分類(lèi)任務(wù)中。
如果你下載了一份維基百科的拷貝,你的電腦雖然有了很多數(shù)據(jù),但不會(huì)馬上變得聰明起來(lái)。因此,這不是機(jī)器學(xué)習(xí)。
為什么使用機(jī)器學(xué)習(xí)?
思考一下,你會(huì)如何使用傳統(tǒng)的編程技術(shù)寫(xiě)一個(gè)垃圾郵件過(guò)濾器(圖 1-1):
你先觀(guān)察下垃圾郵件一般都是什么樣子。你可能注意到一些詞或短語(yǔ)(比如 4U、credit card、free、amazing)在郵件主題中頻繁出現(xiàn),也許還注意到發(fā)件人名字、郵件正文的格式,等等。
你為觀(guān)察到的規(guī)律寫(xiě)了一個(gè)檢測(cè)算法,如果檢測(cè)到了這些規(guī)律,程序就會(huì)標(biāo)記郵件為垃圾郵件。
測(cè)試程序,重復(fù)第1步和第2步,直到滿(mǎn)足要求。
圖 1-1 傳統(tǒng)方法
這個(gè)問(wèn)題并不簡(jiǎn)單,你的程序很可能會(huì)變成一長(zhǎng)串復(fù)雜的規(guī)則—— 這樣就會(huì)很難維護(hù)。
相反的,基于機(jī)器學(xué)習(xí)技術(shù)的垃圾郵件過(guò)濾器會(huì)自動(dòng)學(xué)習(xí)哪個(gè)詞和短語(yǔ)是垃圾郵件的預(yù)測(cè)值,通過(guò)與普通郵件比較,檢測(cè)垃圾郵件中反常頻次的詞語(yǔ)格式(圖 1-2)。這個(gè)程序短得多,更易維護(hù),也更精確。
圖 1-2 機(jī)器學(xué)習(xí)方法
進(jìn)而,如果發(fā)送垃圾郵件的人發(fā)現(xiàn)所有包含“4U”的郵件都被屏蔽了,可能會(huì)轉(zhuǎn)而使用“For U”。使用傳統(tǒng)方法的垃圾郵件過(guò)濾器需要更新以標(biāo)記“For U”。如果發(fā)送垃圾郵件的人持續(xù)更改,你就需要被動(dòng)地不停地寫(xiě)入新規(guī)則。
相反的,基于機(jī)器學(xué)習(xí)的垃圾郵件過(guò)濾器會(huì)自動(dòng)注意到“For U”在用戶(hù)手動(dòng)標(biāo)記垃圾郵件中的反常頻繁性,然后就能自動(dòng)標(biāo)記垃圾郵件而無(wú)需干預(yù)了(圖1-3)。
圖 1-3 自動(dòng)適應(yīng)改變
機(jī)器學(xué)習(xí)的另一個(gè)優(yōu)點(diǎn)是善于處理對(duì)于傳統(tǒng)方法太復(fù)雜或是沒(méi)有已知算法的問(wèn)題。例如,對(duì)于語(yǔ)言識(shí)別:假如想寫(xiě)一個(gè)可以識(shí)別“one”和“two”的簡(jiǎn)單程序。你可能注意到“two”起始是一個(gè)高音(“T”),所以可以寫(xiě)一個(gè)可以測(cè)量高音強(qiáng)度的算法,用它區(qū)分 one 和 two。很明顯,這個(gè)方法不能推廣到嘈雜環(huán)境下的數(shù)百萬(wàn)人的數(shù)千詞匯、數(shù)十種語(yǔ)言。(現(xiàn)在)最佳的方法是根據(jù)大量單詞的錄音,寫(xiě)一個(gè)可以自我學(xué)習(xí)的算法。
最后,機(jī)器學(xué)習(xí)可以幫助人類(lèi)進(jìn)行學(xué)習(xí)(圖 1-4):可以檢查機(jī)器學(xué)習(xí)算法已經(jīng)掌握了什么(盡管對(duì)于某些算法,這樣做會(huì)有點(diǎn)麻煩)。例如,當(dāng)垃圾郵件過(guò)濾器被訓(xùn)練了足夠多的垃圾郵件,就可以用它列出垃圾郵件預(yù)測(cè)值的單詞和單詞組合列表。有時(shí),可能會(huì)發(fā)現(xiàn)不引人關(guān)注的關(guān)聯(lián)或新趨勢(shì),有助于對(duì)問(wèn)題更好的理解。
圖 1-4 機(jī)器學(xué)習(xí)可以幫助人類(lèi)學(xué)習(xí)
使用機(jī)器學(xué)習(xí)方法挖掘大量數(shù)據(jù),可以發(fā)現(xiàn)并不顯著的規(guī)律。這稱(chēng)作數(shù)據(jù)挖掘。
總結(jié)一下,機(jī)器學(xué)習(xí)善于:
需要進(jìn)行大量手工調(diào)整或需要擁有長(zhǎng)串規(guī)則才能解決的問(wèn)題:機(jī)器學(xué)習(xí)算法通常可以簡(jiǎn)化代碼、提高性能。
問(wèn)題復(fù)雜,傳統(tǒng)方法難以解決:最好的機(jī)器學(xué)習(xí)方法可以找到解決方案。
環(huán)境有波動(dòng):機(jī)器學(xué)習(xí)算法可以適應(yīng)新數(shù)據(jù)。
洞察復(fù)雜問(wèn)題和大量數(shù)據(jù)。
機(jī)器學(xué)習(xí)系統(tǒng)的類(lèi)型
機(jī)器學(xué)習(xí)有多種類(lèi)型,可以根據(jù)如下規(guī)則進(jìn)行分類(lèi):
是否在人類(lèi)監(jiān)督下進(jìn)行訓(xùn)練(監(jiān)督,非監(jiān)督,半監(jiān)督和強(qiáng)化學(xué)習(xí))
是否可以動(dòng)態(tài)漸進(jìn)學(xué)習(xí)(在線(xiàn)學(xué)習(xí) vs 批量學(xué)習(xí))
它們是否只是通過(guò)簡(jiǎn)單地比較新的數(shù)據(jù)點(diǎn)和已知的數(shù)據(jù)點(diǎn),或者在訓(xùn)練數(shù)據(jù)中進(jìn)行模式識(shí)別,以建立一個(gè)預(yù)測(cè)模型,就像科學(xué)家所做的那樣(基于實(shí)例學(xué)習(xí) vs 基于模型學(xué)習(xí))
規(guī)則并不僅限于以上的,你可以將他們進(jìn)行組合。例如,一個(gè)先進(jìn)的垃圾郵件過(guò)濾器可以使用神經(jīng)網(wǎng)絡(luò)模型動(dòng)態(tài)進(jìn)行學(xué)習(xí),用垃圾郵件和普通郵件進(jìn)行訓(xùn)練。這就讓它成了一個(gè)在線(xiàn)、基于模型、監(jiān)督學(xué)習(xí)系統(tǒng)。
下面更仔細(xì)地學(xué)習(xí)這些規(guī)則。
監(jiān)督/非監(jiān)督學(xué)習(xí)
機(jī)器學(xué)習(xí)可以根據(jù)訓(xùn)練時(shí)監(jiān)督的量和類(lèi)型進(jìn)行分類(lèi)。主要有四類(lèi):監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。
監(jiān)督學(xué)習(xí)
在監(jiān)督學(xué)習(xí)中,用來(lái)訓(xùn)練算法的訓(xùn)練數(shù)據(jù)包含了答案,稱(chēng)為標(biāo)簽(圖 1-5)。
圖 1-5 用于監(jiān)督學(xué)習(xí)(比如垃圾郵件分類(lèi))的加了標(biāo)簽的訓(xùn)練集
一個(gè)典型的監(jiān)督學(xué)習(xí)任務(wù)是分類(lèi)。垃圾郵件過(guò)濾器就是一個(gè)很好的例子:用許多帶有歸類(lèi)(垃圾郵件或普通郵件)的郵件樣本進(jìn)行訓(xùn)練,過(guò)濾器必須還能對(duì)新郵件進(jìn)行分類(lèi)。
另一個(gè)典型任務(wù)是預(yù)測(cè)目標(biāo)數(shù)值,例如給出一些特征(里程數(shù)、車(chē)齡、品牌等等)稱(chēng)作預(yù)測(cè)值,來(lái)預(yù)測(cè)一輛汽車(chē)的價(jià)格。這類(lèi)任務(wù)稱(chēng)作回歸(圖 1-6)。要訓(xùn)練這個(gè)系統(tǒng),你需要給出大量汽車(chē)樣本,包括它們的預(yù)測(cè)值和標(biāo)簽(即,它們的價(jià)格)。
注解:在機(jī)器學(xué)習(xí)中,一個(gè)屬性就是一個(gè)數(shù)據(jù)類(lèi)型(例如,“里程數(shù)”),取決于具體問(wèn)題一個(gè)特征會(huì)有多個(gè)含義,但通常是屬性加上它的值(例如,“里程數(shù)=15000”)。許多人是不區(qū)分地使用屬性和特征。
圖 1-6 回歸
注意,一些回歸算法也可以用來(lái)進(jìn)行分類(lèi),反之亦然。例如,邏輯回歸通常用來(lái)進(jìn)行分類(lèi),它可以生成一個(gè)歸屬某一類(lèi)的可能性的值(例如,20% 幾率為垃圾郵件)。
下面是一些重要的監(jiān)督學(xué)習(xí)算法(本書(shū)都有介紹):
K近鄰算法
線(xiàn)性回歸
邏輯回歸
支持向量機(jī)(SVM)
決策樹(shù)和隨機(jī)森林
神經(jīng)網(wǎng)絡(luò)
非監(jiān)督學(xué)習(xí)
在非監(jiān)督學(xué)習(xí)中,你可能猜到了,訓(xùn)練數(shù)據(jù)是沒(méi)有加標(biāo)簽的(圖 1-7)。系統(tǒng)在沒(méi)有老師的條件下進(jìn)行學(xué)習(xí)。
圖 1-7 非監(jiān)督學(xué)習(xí)的一個(gè)不加標(biāo)簽的訓(xùn)練集
下面是一些最重要的非監(jiān)督學(xué)習(xí)算法(我們會(huì)在第 8 章介紹降維):
聚類(lèi)K 均值層次聚類(lèi)分析(Hierarchical Cluster Analysis,HCA)期望最大值
可視化和降維主成分分析(Principal Component Analysis,PCA)核主成分分析局部線(xiàn)性嵌入(Locally-Linear Embedding,LLE)t-分布鄰域嵌入算法(t-distributed Stochastic Neighbor Embedding,t-SNE)
關(guān)聯(lián)性規(guī)則學(xué)習(xí)Apriori 算法Eclat 算法
例如,假設(shè)你有一份關(guān)于你的博客訪(fǎng)客的大量數(shù)據(jù)。你想運(yùn)行一個(gè)聚類(lèi)算法,檢測(cè)相似訪(fǎng)客的分組(圖 1-8)。你不會(huì)告訴算法某個(gè)訪(fǎng)客屬于哪一類(lèi):它會(huì)自己找出關(guān)系,無(wú)需幫助。例如,算法可能注意到 40% 的訪(fǎng)客是喜歡漫畫(huà)書(shū)的男性,通常是晚上訪(fǎng)問(wèn),20% 是科幻愛(ài)好者,他們是在周末訪(fǎng)問(wèn)等等。如果你使用層次聚類(lèi)分析,它可能還會(huì)細(xì)分每個(gè)分組為更小的組。這可以幫助你為每個(gè)分組定位博文。
圖 1-8 聚類(lèi)
可視化算法也是極佳的非監(jiān)督學(xué)習(xí)案例:給算法大量復(fù)雜的且不加標(biāo)簽的數(shù)據(jù),算法輸出數(shù)據(jù)的2D或3D圖像(圖 1-9)。算法會(huì)試圖保留數(shù)據(jù)的結(jié)構(gòu)(即嘗試保留輸入的獨(dú)立聚類(lèi),避免在圖像中重疊),這樣就可以明白數(shù)據(jù)是如何組織起來(lái)的,也許還能發(fā)現(xiàn)隱藏的規(guī)律。
圖 1-9 t-SNE 可視化案例,突出了聚類(lèi)
(注:注意動(dòng)物是與汽車(chē)分開(kāi)的,馬和鹿很近、與鳥(niǎo)距離遠(yuǎn),以此類(lèi)推)
與此有關(guān)聯(lián)的任務(wù)是降維,降維的目的是簡(jiǎn)化數(shù)據(jù)、但是不能失去大部分信息。做法之一是合并若干相關(guān)的特征。例如,汽車(chē)的里程數(shù)與車(chē)齡高度相關(guān),降維算法就會(huì)將它們合并成一個(gè),表示汽車(chē)的磨損。這叫做特征提取。
提示:在用訓(xùn)練集訓(xùn)練機(jī)器學(xué)習(xí)算法(比如監(jiān)督學(xué)習(xí)算法)時(shí),最好對(duì)訓(xùn)練集進(jìn)行降維。這樣可以運(yùn)行的更快,占用的硬盤(pán)和內(nèi)存空間更少,有些情況下性能也更好。
另一個(gè)重要的非監(jiān)督任務(wù)是異常檢測(cè)(anomaly detection) —— 例如,檢測(cè)異常的信用卡轉(zhuǎn)賬以防欺詐,檢測(cè)制造缺陷,或者在訓(xùn)練之前自動(dòng)從訓(xùn)練數(shù)據(jù)集去除異常值。異常檢測(cè)的系統(tǒng)使用正常值訓(xùn)練的,當(dāng)它碰到一個(gè)新實(shí)例,它可以判斷這個(gè)新實(shí)例是像正常值還是異常值(圖 1-10)。
圖 1-10 異常檢測(cè)
最后,另一個(gè)常見(jiàn)的非監(jiān)督任務(wù)是關(guān)聯(lián)規(guī)則學(xué)習(xí),它的目標(biāo)是挖掘大量數(shù)據(jù)以發(fā)現(xiàn)屬性間有趣的關(guān)系。例如,假設(shè)你擁有一個(gè)超市。在銷(xiāo)售日志上運(yùn)行關(guān)聯(lián)規(guī)則,可能發(fā)現(xiàn)買(mǎi)了燒烤醬和薯片的人也會(huì)買(mǎi)牛排。因此,你可以將這些商品放在一起。
半監(jiān)督學(xué)習(xí)
一些算法可以處理部分帶標(biāo)簽的訓(xùn)練數(shù)據(jù),通常是大量不帶標(biāo)簽數(shù)據(jù)加上小部分帶標(biāo)簽數(shù)據(jù)。這稱(chēng)作半監(jiān)督學(xué)習(xí)(圖 1-11)。
一些圖片存儲(chǔ)服務(wù),比如 Google Photos,是半監(jiān)督學(xué)習(xí)的好例子。一旦你上傳了所有家庭相片,它就能自動(dòng)識(shí)別相同的人 A 出現(xiàn)了相片 1、5、11 中,另一個(gè)人 B 出現(xiàn)在了相片 2、5、7 中。這是算法的非監(jiān)督部分(聚類(lèi))。現(xiàn)在系統(tǒng)需要的就是你告訴這兩個(gè)人是誰(shuí)。只要給每個(gè)人一個(gè)標(biāo)簽,算法就可以命名每張照片中的每個(gè)人,特別適合搜索照片。
圖 1-11 半監(jiān)督學(xué)習(xí)
多數(shù)半監(jiān)督學(xué)習(xí)算法是非監(jiān)督和監(jiān)督算法的結(jié)合。例如,深度信念網(wǎng)絡(luò)(deep belief networks)是基于被稱(chēng)為互相疊加的受限玻爾茲曼機(jī)(restricted Boltzmann machines,RBM)的非監(jiān)督組件。RBM 是先用非監(jiān)督方法進(jìn)行訓(xùn)練,再用監(jiān)督學(xué)習(xí)方法進(jìn)行整個(gè)系統(tǒng)微調(diào)。
強(qiáng)化學(xué)習(xí)
強(qiáng)化學(xué)習(xí)非常不同。學(xué)習(xí)系統(tǒng)在這里被稱(chēng)為智能體(agent),可以對(duì)環(huán)境進(jìn)行觀(guān)察,選擇和執(zhí)行動(dòng)作,獲得獎(jiǎng)勵(lì)(負(fù)獎(jiǎng)勵(lì)是懲罰,見(jiàn)圖 1-12)。然后它必須自己學(xué)習(xí)哪個(gè)是最佳方法(稱(chēng)為策略,policy),以得到長(zhǎng)久的最大獎(jiǎng)勵(lì)。策略決定了智能體在給定情況下應(yīng)該采取的行動(dòng)。
圖 1-12 強(qiáng)化學(xué)習(xí)
例如,許多機(jī)器人運(yùn)行強(qiáng)化學(xué)習(xí)算法以學(xué)習(xí)如何行走。DeepMind 的 AlphaGo 也是強(qiáng)化學(xué)習(xí)的例子:它在 2016 年三月?lián)魯×耸澜鐕骞谲娎钍朗ㄗg者注:2017 年五月,AlphaGo 又擊敗了世界排名第一的柯潔)。它是通過(guò)分析數(shù)百萬(wàn)盤(pán)棋局學(xué)習(xí)制勝策略,然后自己和自己下棋。要注意,在比賽中機(jī)器學(xué)習(xí)是關(guān)閉的;AlphaGo 只是使用它學(xué)會(huì)的策略。
批量和在線(xiàn)學(xué)習(xí)
另一個(gè)用來(lái)分類(lèi)機(jī)器學(xué)習(xí)的準(zhǔn)則是,它是否能從導(dǎo)入的數(shù)據(jù)流進(jìn)行持續(xù)學(xué)習(xí)。
批量學(xué)習(xí)
在批量學(xué)習(xí)中,系統(tǒng)不能進(jìn)行持續(xù)學(xué)習(xí):必須用所有可用數(shù)據(jù)進(jìn)行訓(xùn)練。這通常會(huì)占用大量時(shí)間和計(jì)算資源,所以一般是線(xiàn)下做的。首先是進(jìn)行訓(xùn)練,然后部署在生產(chǎn)環(huán)境且停止學(xué)習(xí),它只是使用已經(jīng)學(xué)到的策略。這稱(chēng)為離線(xiàn)學(xué)習(xí)。
如果你想讓一個(gè)批量學(xué)習(xí)系統(tǒng)明白新數(shù)據(jù)(例如垃圾郵件的新類(lèi)型),就需要從頭訓(xùn)練一個(gè)系統(tǒng)的新版本,使用全部數(shù)據(jù)集(不僅有新數(shù)據(jù)也有老數(shù)據(jù)),然后停掉老系統(tǒng),換上新系統(tǒng)。
幸運(yùn)的是,訓(xùn)練、評(píng)估、部署一套機(jī)器學(xué)習(xí)的系統(tǒng)的整個(gè)過(guò)程可以自動(dòng)進(jìn)行(見(jiàn)圖 1-3),所以即便是批量學(xué)習(xí)也可以適應(yīng)改變。只要有需要,就可以方便地更新數(shù)據(jù)、訓(xùn)練一個(gè)新版本。
這個(gè)方法很簡(jiǎn)單,通常可以滿(mǎn)足需求,但是用全部數(shù)據(jù)集進(jìn)行訓(xùn)練會(huì)花費(fèi)大量時(shí)間,所以一般是每 24 小時(shí)或每周訓(xùn)練一個(gè)新系統(tǒng)。如果系統(tǒng)需要快速適應(yīng)變化的數(shù)據(jù)(比如,預(yù)測(cè)股價(jià)變化),就需要一個(gè)響應(yīng)更及時(shí)的方案。
另外,用全部數(shù)據(jù)訓(xùn)練需要大量計(jì)算資源(CPU、內(nèi)存空間、磁盤(pán)空間、磁盤(pán) I/O、網(wǎng)絡(luò) I/O 等等)。如果你有大量數(shù)據(jù),并讓系統(tǒng)每天自動(dòng)從頭開(kāi)始訓(xùn)練,就會(huì)開(kāi)銷(xiāo)很大。如果數(shù)據(jù)量巨大,甚至無(wú)法使用批量學(xué)習(xí)算法。
最后,如果你的系統(tǒng)需要自動(dòng)學(xué)習(xí),但是資源有限(比如,一臺(tái)智能手機(jī)或火星車(chē)),攜帶大量訓(xùn)練數(shù)據(jù)、每天花費(fèi)數(shù)小時(shí)的大量資源進(jìn)行訓(xùn)練是不實(shí)際的。
幸運(yùn)的是,對(duì)于上面這些情況,還有一個(gè)更佳的方案可以進(jìn)行持續(xù)學(xué)習(xí)。
在線(xiàn)學(xué)習(xí)
在在線(xiàn)學(xué)習(xí)中,是用數(shù)據(jù)實(shí)例持續(xù)地進(jìn)行訓(xùn)練,可以一次一個(gè)或一次幾個(gè)實(shí)例(稱(chēng)為小批量)。每個(gè)學(xué)習(xí)步驟都很快且廉價(jià),所以系統(tǒng)可以動(dòng)態(tài)地學(xué)習(xí)到達(dá)的新數(shù)據(jù)(見(jiàn)圖 1-13)。
圖 1-13 在線(xiàn)學(xué)習(xí)
在線(xiàn)學(xué)習(xí)很適合系統(tǒng)接收連續(xù)流的數(shù)據(jù)(比如,股票價(jià)格),且需要自動(dòng)對(duì)改變作出調(diào)整。如果計(jì)算資源有限,在線(xiàn)學(xué)習(xí)是一個(gè)不錯(cuò)的方案:一旦在線(xiàn)學(xué)習(xí)系統(tǒng)學(xué)習(xí)了新的數(shù)據(jù)實(shí)例,它就不再需要這些數(shù)據(jù)了,所以扔掉這些數(shù)據(jù)(除非你想滾回到之前的一個(gè)狀態(tài),再次使用數(shù)據(jù))。這樣可以節(jié)省大量的空間。
在線(xiàn)學(xué)習(xí)算法也可以當(dāng)機(jī)器的內(nèi)存存不下大量數(shù)據(jù)集時(shí),用來(lái)訓(xùn)練系統(tǒng)(這稱(chēng)作核外學(xué)習(xí),out-of-core learning)。算法加載部分的數(shù)據(jù),用這些數(shù)據(jù)進(jìn)行訓(xùn)練,重復(fù)這個(gè)過(guò)程,直到用所有數(shù)據(jù)都進(jìn)行了訓(xùn)練(見(jiàn)圖 1-14)。
警告:這個(gè)整個(gè)過(guò)程通常是離線(xiàn)完成的(即,不在部署的系統(tǒng)上),所以在線(xiàn)學(xué)習(xí)這個(gè)名字會(huì)讓人疑惑。可以把它想成持續(xù)學(xué)習(xí)。
圖 1-14 使用在線(xiàn)學(xué)習(xí)處理大量數(shù)據(jù)集
在線(xiàn)學(xué)習(xí)系統(tǒng)的一個(gè)重要參數(shù)是,它們可以多快地適應(yīng)數(shù)據(jù)的改變:這被稱(chēng)為學(xué)習(xí)速率。如果你設(shè)定一個(gè)高學(xué)習(xí)速率,系統(tǒng)就可以快速適應(yīng)新數(shù)據(jù),但是也會(huì)快速忘記老書(shū)記(你可不想讓垃圾郵件過(guò)濾器只標(biāo)記最新的垃圾郵件種類(lèi))。相反的,如果你設(shè)定的學(xué)習(xí)速率低,系統(tǒng)的惰性就會(huì)強(qiáng):即,它學(xué)的更慢,但對(duì)新數(shù)據(jù)中的噪聲或沒(méi)有代表性的數(shù)據(jù)點(diǎn)結(jié)果不那么敏感。
在線(xiàn)學(xué)習(xí)的挑戰(zhàn)之一是,如果壞數(shù)據(jù)被用來(lái)進(jìn)行訓(xùn)練,系統(tǒng)的性能就會(huì)逐漸下滑。如果這是一個(gè)部署的系統(tǒng),用戶(hù)就會(huì)注意到。例如,壞數(shù)據(jù)可能來(lái)自失靈的傳感器或機(jī)器人,或某人向搜索引擎?zhèn)魅肜畔⒁蕴岣咚阉髋琶R獪p小這種風(fēng)險(xiǎn),你需要密集監(jiān)測(cè),如果檢測(cè)到性能下降,要快速關(guān)閉(或是滾回到一個(gè)之前的狀態(tài))。你可能還要監(jiān)測(cè)輸入數(shù)據(jù),對(duì)反常數(shù)據(jù)做出反應(yīng)(比如,使用異常檢測(cè)算法)。
-
過(guò)濾器
+關(guān)注
關(guān)注
1文章
429瀏覽量
19614 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646
原文標(biāo)題:【翻譯】Sklearn 與 TensorFlow 機(jī)器學(xué)習(xí)實(shí)用指南 —— 第1章 機(jī)器學(xué)習(xí)概覽(上)
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論