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

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