什么是機(jī)器學(xué)習(xí):一次權(quán)威定義之旅
在這篇文章中,我想要解決一個(gè)很簡單的問題:機(jī)器學(xué)習(xí)是什么?
你可能對機(jī)器學(xué)習(xí)感興趣或者稍稍了解。如果有一天你和朋友或同事聊起機(jī)器學(xué)習(xí),那么一些人可能會(huì)問你“機(jī)器學(xué)習(xí)是什么”。那么,此文的目標(biāo)就是告訴你一些可參考的定義,以及一個(gè)現(xiàn)成的、容易記起的趣味定義。
我們將從了解該領(lǐng)域的權(quán)威書籍上關(guān)于機(jī)器學(xué)習(xí)的標(biāo)準(zhǔn)定義出發(fā),并且以得出機(jī)器學(xué)習(xí)的一種程序員定義和我們被問及什么是機(jī)器學(xué)習(xí)時(shí)一個(gè)隨時(shí)可以使用的現(xiàn)成的笑話為結(jié)束。
權(quán)威定義
我們先從閱讀四本大學(xué)課程中常用的機(jī)器學(xué)習(xí)參考書開始。這些是我們的權(quán)威定義,它們?yōu)槲覀兏由钊氲厮伎歼@個(gè)學(xué)科奠定了基礎(chǔ)。我選擇這四本書來強(qiáng)調(diào)該領(lǐng)域的一些有用的、多樣的觀點(diǎn)。經(jīng)驗(yàn)告訴我們,這個(gè)領(lǐng)域確實(shí)是包括很多的方法,因此選擇一個(gè)合適的角度是取得進(jìn)展的關(guān)鍵。
Mitchell定義的機(jī)器學(xué)習(xí)
Tom Mitchell在他的《Machine Learning(中文版:計(jì)算機(jī)科學(xué)叢書:機(jī)器學(xué)習(xí) )》一書的序言開場白中給出了一個(gè)定義:
“機(jī)器學(xué)習(xí)這門學(xué)科所關(guān)注的問題是:計(jì)算機(jī)程序如何隨著經(jīng)驗(yàn)積累自動(dòng)提高性能。”
我喜歡這個(gè)簡單明了的定義,它是我們在帖子***得出的程序員定義的基礎(chǔ)。注意計(jì)算機(jī)程序這一提法和提到的“自動(dòng)提高”一詞。寫程序以改善它們自身,這是挑釁!
他在引言中多次重復(fù)提到一個(gè)簡短的形式體系:
“對于某類任務(wù)T和性能度量P,如果一個(gè)計(jì)算機(jī)程序在T上以P衡量的性能隨著經(jīng)驗(yàn)E而自我完善,那么我們稱這個(gè)計(jì)算機(jī)程序在從經(jīng)驗(yàn)E學(xué)習(xí)。”
不要讓術(shù)語的定義把你嚇跑,這是一個(gè)非常有用的形式體系。我們把這一形式體系作為一個(gè)模版,把經(jīng)驗(yàn)E、任務(wù)T和性能度量P列在一張表的頂部,并且列 出帶有更少歧義的復(fù)雜問題。它可以作為一個(gè)設(shè)計(jì)工具來幫助我們清楚的思考收集什么樣的數(shù)據(jù)(E),需要做出什么樣的決策(T),以及如何評價(jià)結(jié)果(P)。 這就是我們把它作為一個(gè)標(biāo)準(zhǔn)定義的原因。請把它記在心里。
統(tǒng)計(jì)學(xué)習(xí)基礎(chǔ)
《The Elements of Statistical Learning: Data Mining, Inference, and Prediction》是由三個(gè)斯坦福的統(tǒng)計(jì)學(xué)家編寫的,它自我描述為組織探究他們領(lǐng)域的統(tǒng)計(jì)框架。它在前言中寫到:
“許多領(lǐng)域都產(chǎn)生了大量的數(shù)據(jù),統(tǒng)計(jì)學(xué)家的工作就是讓所有這些數(shù)據(jù)變得意義:提取重要的模式和趨勢,理解“數(shù)據(jù)在說什么”。我們稱之為從數(shù)據(jù)中學(xué)習(xí)。”
我所理解的統(tǒng)計(jì)學(xué)家的工作是,使用統(tǒng)計(jì)工具在上下文環(huán)境中解譯數(shù)據(jù)。作者似乎想要把機(jī)器學(xué)習(xí)領(lǐng)域中的全部作為輔助工具。有趣的是,他們選擇把“數(shù)據(jù)挖掘”包含在書的標(biāo)題中。
統(tǒng)計(jì)學(xué)家從數(shù)據(jù)中學(xué)習(xí),但軟件也可以,并且我們是從軟件學(xué)習(xí)到的事情中學(xué)習(xí),從由多種多樣的機(jī)器學(xué)習(xí)方法做出的決策和得出的結(jié)果中學(xué)習(xí)。
模式識別
Bishop在《 Pattern Recognition and Machine Learning 》的前言中寫到:
“模式識別起源于工程學(xué),而機(jī)器學(xué)習(xí)產(chǎn)生于計(jì)算機(jī)科學(xué)。然而這些領(lǐng)域可以看做成是同一領(lǐng)域的兩個(gè)方面。”
看了這些,你會(huì)獲得這樣一個(gè)印象,Bishop從一個(gè)工程的角度來到這個(gè)領(lǐng)域,后來又采取同樣的方法學(xué)習(xí)和利用了計(jì)算機(jī)科學(xué)。這是一個(gè)我們應(yīng)該效仿 的成熟方法。更廣泛地說,不管一個(gè)方法所宣稱的領(lǐng)域,如果它能夠通過從數(shù)據(jù)中學(xué)習(xí)使得我們獲得一個(gè)更接近的洞察力或結(jié)果,從而更符合我們的需要,那么,我 們就稱之為機(jī)器學(xué)習(xí)。
算法角度
Marshland在《Machine Learning: An Algorithmic Perspective》中采用了Mitchell對于機(jī)器學(xué)習(xí)的定義。他在序言中提供了一個(gè)促使他寫下這本書的強(qiáng)有力的解釋:
“機(jī)器學(xué)習(xí)最有趣的特征之一就是,它介于幾個(gè)不同理論學(xué)科之間,主要是計(jì)算機(jī)科學(xué)、統(tǒng)計(jì)學(xué)、數(shù)學(xué)和工程學(xué)。機(jī)器學(xué)習(xí)經(jīng)常被作為人工智能的一部分來進(jìn) 行研究,這把它牢牢的置于計(jì)算機(jī)科學(xué)中。理解為什么這些算法能夠有效工作需要一定的統(tǒng)計(jì)學(xué)和數(shù)學(xué)頭腦,這往往是計(jì)算機(jī)科學(xué)專業(yè)的本科生所缺少的能力。”
這是深刻并有益的。首先,他強(qiáng)調(diào)該領(lǐng)域的多學(xué)科性質(zhì)。雖然我們已經(jīng)從上面的定義中獲得了這樣一種感覺,但他為我們進(jìn)一步強(qiáng)調(diào)了這一點(diǎn),機(jī)器學(xué)習(xí)來源 于各種各樣的信息科學(xué)。第二,他強(qiáng)調(diào)了過于堅(jiān)持一個(gè)給定的角度的危險(xiǎn)性。特別是,算法工程師避開一個(gè)方法的數(shù)學(xué)內(nèi)部運(yùn)作原理的情況。毫無疑問,相反的情 況,統(tǒng)計(jì)學(xué)家避開實(shí)現(xiàn)和部署的實(shí)際問題也是同樣受限的。
維恩圖解
2010年9月,Drew Conway創(chuàng)建了一個(gè)漂亮的維恩圖,我發(fā)現(xiàn)這個(gè)圖是很有幫助的。他在解釋中評論到,機(jī)器學(xué)習(xí)就是黑客技能、數(shù)學(xué)和統(tǒng)計(jì)學(xué)知識的加和。

他還把危險(xiǎn)區(qū)域描述為黑客技能與專業(yè)知識的加和。這里,他所指的是,那些了解得足夠多的人是危險(xiǎn)的。他們能夠訪問和構(gòu)建數(shù)據(jù),了解這個(gè)領(lǐng)域,還能運(yùn)行一種方法并給出結(jié)果,但是他們并不理解結(jié)果的含義。我認(rèn)為這就是Marsland曾經(jīng)可能暗示的意思。
程序員定義
現(xiàn)在我們來談?wù)?,要想把所有這些問題分解為具體細(xì)節(jié),程序員需要做些什么。首先,我們來看看抵制我們分解和程序的解決方案的復(fù)雜問題。這構(gòu)成機(jī)器學(xué)習(xí)的動(dòng)力。然后,我們需要找出一個(gè)適合于程序員的定義,一個(gè)每當(dāng)其他程序員問我們什么是機(jī)器學(xué)習(xí)時(shí)我們就可以使用的定義。
復(fù)雜問題
作為一名程序員,你最終將會(huì)遇到很多類型的頑固抵制邏輯的、程序的解決方案的問題。我的意思是,對于很多類問題,坐下來寫出解決問題所需要的所有條件語句是既不可行也不劃算的。
我聽到你的程序員大腦在大喊,“褻瀆”。
這是真的,以每天的鑒別垃圾郵件問題為例,每當(dāng)介紹機(jī)器學(xué)習(xí)時(shí),它是一直被使用的例子。當(dāng)一封郵件到來時(shí),你將怎樣寫一個(gè)程序來過濾垃圾郵件,決定是將它放在垃圾箱還是收件箱中?
你將可能開始收集一些實(shí)例并深入研究它們,你將尋找垃圾郵件和非垃圾郵件所特有的模式,你還將會(huì)考慮抽象出那些模式以便你的啟發(fā)式學(xué)習(xí)將來能夠應(yīng)用 到新案例之中。你將會(huì)忽視那些永遠(yuǎn)不會(huì)被看到的古怪郵件,你將能夠輕松的提高準(zhǔn)確率并為邊界情況制定特殊的程序。你將反復(fù)多次的瀏覽郵件并抽象出新模式來 改善做出的決策。
在那里有一個(gè)機(jī)器學(xué)習(xí)算法,所有這些事情都由程序員而不是電腦來完成。這種手動(dòng)導(dǎo)出的硬編碼系統(tǒng)將具有同程序員一樣的、從數(shù)據(jù)中提取規(guī)則并將其實(shí)現(xiàn)的能力。
這能夠做到,但是它將花費(fèi)太多的資源,而且會(huì)是一個(gè)持續(xù)的噩夢。
機(jī)器學(xué)習(xí)
在上面的例子中,我確信你下定決心尋求自動(dòng)化的那一部分程序員大腦,能夠看到自動(dòng)化和優(yōu)化從例子中提取模式這一過程的機(jī)會(huì)。機(jī)器學(xué)習(xí)方法就是這樣一個(gè)自動(dòng)化過程。
在垃圾/非垃圾郵件的例子中,經(jīng)驗(yàn)E就是我們所收集的郵件,任務(wù)T是一個(gè)決策問題(也稱為分類),它需要標(biāo)記每一封郵件是否為垃圾郵件,并將其放入 到正確的文件夾中。我們的性能度量將是一些類似于準(zhǔn)確率之類的、介于0%-100%之間的一個(gè)百分比(正確決策數(shù)除以總的決策數(shù)再乘以100)。
準(zhǔn)備這樣一個(gè)決策程序的過程通常被稱為訓(xùn)練,收集到的實(shí)例稱為訓(xùn)練集,程序即為一個(gè)模型,一個(gè)把非垃圾郵件從垃圾郵件的分離出來的問題的模型。作為 程序員,我們喜歡這個(gè)術(shù)語,一個(gè)模型具有特定的狀態(tài)并且需要被保持,訓(xùn)練是一個(gè)執(zhí)行一次的過程,也可能會(huì)根據(jù)需要重新運(yùn)行,分類是待完成的任務(wù)。這些對我 們來說都是有意義的。
我們能夠看到上面定義中所用到的術(shù)語并不是很適合于程序員。從技術(shù)上來說,我們寫的所有的程序都是一個(gè)自動(dòng)化操作,因此,機(jī)器學(xué)習(xí)是自動(dòng)化學(xué)習(xí)的這一說明是沒有意義的。
一個(gè)現(xiàn)成的小笑話
那么,讓我們來看看我們是否可以使用這些片段,構(gòu)建一個(gè)機(jī)器學(xué)習(xí)的程序員定義。
機(jī)器學(xué)習(xí)是一個(gè)源于數(shù)據(jù)的模型的訓(xùn)練過程,最終歸納出一個(gè)面向一種性能度量的決策。
“訓(xùn)練一個(gè)模型”代表訓(xùn)練實(shí)例,“模型”表示通過經(jīng)驗(yàn)學(xué)習(xí)獲得的狀態(tài),“歸納出一個(gè)決策”代表基于輸入做出決策的能力,并且需要一個(gè)用于未來決策的、不可見的預(yù)期輸入。***,“面向一種性能度量”是指準(zhǔn)備好的模型的針對性需要和定向特性。
我不是詩人,你能想出一個(gè)更準(zhǔn)確、更簡潔的機(jī)器學(xué)習(xí)的程序員定義嗎?請留下你的評論。
資源
在帖子中我已經(jīng)給出了相應(yīng)的鏈接,另外,如果你想要進(jìn)一步深入閱讀,我還在下面列出了一些有用的資源。
書籍
下面是我們從中得出定義的四本書籍:
Mitchell,《Machine Learning(中文版:計(jì)算機(jī)科學(xué)叢書:機(jī)器學(xué)習(xí) )》
Hastie, Tibshirani and Friedman,《The Elements of Statistical Learning: Data Mining, Inference, and Prediction》
Bishop,《 Pattern Recognition and Machine Learning 》
Marsland,《Machine Learning: An Algorithmic Perspective》
還有,Drew Conway與John Myles White合作的一本非常實(shí)用和有趣的書,Machine Learning for Hackers (中文版:機(jī)器學(xué)習(xí):實(shí)用案例解析 )
原文:What is Machine Learning: A Tour of Authoritative Definitions and a Handy One-Liner You Can Use