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