什麼是機器學習:一次權威定義之旅

yixingqingkong發表於2014-03-05

在這篇文章中,我想要解決一個很簡單的問題:機器學習是什麼?

你可能對機器學習感興趣或者稍稍瞭解。如果有一天你和朋友或同事聊起機器學習,那麼一些人可能會問你“機器學習是什麼”。那麼,此文的目標就是告訴你一些可參考的定義,以及一個現成的、容易記起的趣味定義。

我們將從瞭解該領域的權威書籍上關於機器學習的標準定義出發,並且以得出機器學習的一種程式設計師定義和我們被問及什麼是機器學習時一個隨時可以使用的現成的笑話為結束。

權威定義

我們先從閱讀四本大學課程中常用的機器學習參考書開始。這些是我們的權威定義,它們為我們更加深入地思考這個學科奠定了基礎。我選擇這四本書來強調該領域的一些有用的、多樣的觀點。經驗告訴我們,這個領域確實是包括很多的方法,因此選擇一個合適的角度是取得進展的關鍵。

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建立了一個漂亮的維恩圖,我發現這個圖是很有幫助的。他在解釋中評論到,機器學習就是黑客技能、數學和統計學知識的加和。

維恩圖

資料科學維恩圖。歸屬於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  (中文版:機器學習:實用案例解析 )

相關文章