當前位置:
首頁 > 最新 > 那些你不可不知的機器學習「民間智慧」

那些你不可不知的機器學習「民間智慧」

【IT168 資訊】機器學習演算法可以通過從例子中推廣來弄清楚如何執行重要的任務。在手動編程的情況下,這通常是可行且成本有效。隨著更多的數據變得可用,可以解決更多雄心勃勃的問題。因此,機器學習被廣泛應用於計算機等領域。然而,開發成功的機器學習應用程序需要大量難以在教科書中找到的「黑色藝術」。

最近華盛頓大學Pedro Domingos教授發表了一篇驚人的技術論文,題為「關於機器學習的一些有用的事情」。(https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf)它總結了機器學習研究人員和從業人員學到的12個關鍵經驗教訓,包括要避免的陷阱,重點問題並回答了一些常見的問題。在本文中分享了這些經驗教訓,因為在考慮機器學習問題時,它們非常有用。

1 - 學習=表示+評估+優化

所有的機器學習演算法通常由3個組件組成:

表示法:分類器必須用計算機可以處理的一些正式語言表示。相反地,為學習者選擇一個表達式就等於選擇它可能學習的一組分類器。這個集合被稱為學習者的假設空間。如果一個分類器不在假設空間,就不能被學習到。一個相關的問題是如何表示輸入,即使用哪些功能。

評估:需要一個評估函數來區分好的分類器和壞的分類器。該演算法在內部使用的評估函數可能與我們希望分類器優化、簡化優化以及下一節討論的問題不同。

優化:最後,我們需要一種方法來在語言中的分類器中搜索得分最高的分類器。優化技術的選擇對於學習者的效率是關鍵的,並且如果評估函數具有多個最優值,則有助於確定所產生的分類器。新學習者開始使用現成的優化器(後來被定製設計的優化器替代)是很常見的。

2 - 泛化很重要

機器學習的基本目標是在訓練集範例之外進行泛化。這是因為,無論我們有多少數據,我們都不太可能在測試時再次看到這些確切的例子。做好訓練集很容易。機器學習初學者最常犯的錯誤就是對訓練數據進行測試,並有成功的幻覺。

如果選擇的分類器在新的數據上進行測試,通常不會比隨機猜測更好。所以,如果你僱人去建立分類器,一定要保留一些數據給你自己,並測試他們給你的分類器。相反,如果你被僱傭來建立一個分類器,要把一些數據從一開始就放在一邊,只用它來測試你選擇的分類器,然後在整個數據上學習最終的分類器。

3 - 數據是不夠的

泛化是目標同時還有另外一個重要的後果:不管你擁有多少數據,那都是不夠的。

這似乎是一個令人沮喪的消息。那麼我們怎麼能學到東西?幸運的是,我們想要在現實世界中學習的功能並不是從所有數學上可能的功能集合中統一得出的!事實上,舉一個非常普遍的假設,比如平滑性,類似的例子,有限的依賴性或者有限的複雜性,往往足以做得很好,這也是機器學習如此成功的很大一部分原因。就像演繹一樣,歸納(學習者所做的)就是知識槓桿:將少量的輸入知識轉化為大量的輸出知識。感應是一個比演繹強大得多的槓桿,需要更少的輸入知識來產生有用的結果,但是它仍然需要超過零的輸入知識來工作。而且,就像任何一個槓桿一樣,我們投入得越多,我們就越能走出去。

回想起來,學習知識的需求不應該令人驚訝。機器學習不是魔術,它不能從無到有。它所做的是從更少獲得更多。像所有的工程一樣,編程有很多工作:我們必須從頭開始構建所有的東西。學習更像是農業,讓大自然完成大部分的工作。農民將種子與營養物質結合起來種植作物。學習者將知識與數據結合起來,開展項目。

4 - 有許多面臨過度擬合

如果我們擁有的知識和數據不足以完全確定正確的分類器呢?那麼我們就冒著對分類器(或其中的一部分)產生幻覺的風險,這些分類器並不是基於現實,而只是簡單地編碼數據中的隨機物。這個問題被稱為過度擬合,是機器學習的怪圈。當你的學習者輸出的分類器在訓練數據上是100%準確的,但在測試數據上只有50%準確的時候,實際上它可以輸出一個75%準確度的分類器,那麼,這時候它就可能顯得有些過度了。

機器學習中的每個人都知道過度擬合,但它有很多形式,並不是很明顯。理解過度擬合的一種方法是將泛化誤差分解為偏差和方差。偏見是學習者不斷學習同樣錯誤的東西的傾向,不管真實的信號如何,方差是傾向於學習隨機事物。線性學習者有很高的偏見,因為當兩個類之間的邊界不是一個超平面時,學習者無法誘導它。決策樹卻不存在這個問題,因為它們可以表示任何布爾函數,但是另一方面它們可能遭受高度的方差:由相同現象產生的不同訓練集上學習的決策樹通常是非常不同的,事實上它們應該是相同的。

交叉驗證可以幫助對抗過度擬合,例如通過使用交叉驗證來選擇決策樹的最佳尺寸來學習。但這不是萬能的,因為如果我們用它來做太多的參數選擇,它本身就會開始過度適應。

除了交叉驗證之外,還有很多方法可以解決過度擬合的問題。最流行的是給評價函數增加一個正則化術語。例如,這可以懲罰更多結構的分類器,從而有利於較小的分類器,只需較少的裝配空間。另一種方法是在添加新的結構之前,進行像卡方這樣的統計顯著性檢驗,以確定類別的分布是否真的不同於這種結構。當數據非常稀少時,這些技術特別有用。儘管如此,你應該對某種技術「解決」過度擬合問題的說法持懷疑態度。通過落入相反的偏差(偏差),很容易避免過度擬合(方差)。同時避免這兩種情況都需要學習一個完美的分類器。

5 - 直覺在高維度失敗

過度擬合之後,機器學習中最大的問題就是維度的問題。這個表達式是由Bellman在1961年提出的,指的是當輸入是高維時,許多在低維度上工作正常的演算法變得棘手。但是在機器學習中,它指的是更多。隨著示例的維數(特徵數量)的增長,泛化正確變得越來越難,因為固定大小的訓練集覆蓋了輸入空間的一小部分。

高維的一般問題是,我們三維世界的直覺通常不適用於高維空間。在高維度中,多元高斯分布的大部分質量並不接近平均值,而是在其周圍越來越遠的「殼」中;而高維度橙色的大部分是在皮膚中,而不是紙漿。如果恆定數量的例子在高維超立方體中均勻分布,那麼超越某個維度,大多數例子更接近於超立方體的一個面,而不是最近鄰。如果我們通過將它寫入超立方體來近似超球面,那麼在高維度下,超立方體的幾乎所有體積都在超球面之外。這對於機器學習來說是個壞消息,一種類型的形狀常常被另一種形狀所逼近。

建立二維或三維分類器很容易,我們可以通過視覺檢查找出不同類別的例子之間的合理邊界。但是在高維度上很難理解正在發生的事情。這反過來又使設計一個好的分類器變得困難。天真地說,人們可能會認為收集更多的功能從來不會受到傷害,因為在最壞的情況下,他們不會提供有關類的新信息。但事實上,維度的詛咒可能超過了他們的利益。

6 - 理論上的保證不是他們所看到的那樣

機器學習論文充滿了理論上的保證。最常見的類型是確保良好泛化所需的示例數量的界限。你應該怎樣做到這些保證?首先,它們是可能的。歸納傳統上與演繹相對照:在推論中你可以保證結論是正確的;在歸納中,所有投注都是關閉的。或者這是許多世紀的傳統智慧。近幾十年來的一個主要發展是認識到,事實上,我們可以對歸納的結果有所保證,特別是如果我們願意為概率保證提供解決的話。

我們必須小心這是什麼意思。例如,如果你的學習者返回了一個與某個特定訓練集一致的假設,那麼這個假設就沒有這麼說。現在說的是,給定一個足夠大的訓練集,很有可能你的學習者要麼返回一個推廣的假設,要麼找不到一致的假設。約束也沒有說如何選擇一個好的假設空間。它只告訴我們,如果假設空間包含真實的分類器,那麼學習者輸出一個不好的分類器的概率隨著訓練集的大小而減少。如果我們縮小假設空間,邊界就會改善,但是包含真實分類器的機會也會縮小。

另一種常見的理論保證類型是漸近的:給定無限的數據,保證學習者輸出正確的分類器。這是令人放心的,但是由於其漸近的保證,選擇一個學習者而不是另一個學習者會是一件輕率的事情。在實踐中,我們很少處於漸近狀態(也被稱為「asymptopia」)。而且,由於上面討論的偏差 - 方差權衡,如果學習者A比給定無限數據的學習者B好,則B往往比給定的有限數據好。

理論保證在機器學習中的主要作用不是作為實際決策的標準,而是作為演算法設計的理解和推動力量的來源。在這方面,他們相當有用。事實上,理論與實踐的密切相互作用是機器學習多年來取得如此巨大進步的主要原因之一。但要注意:學習是一個複雜的現象,只是因為學習者有一個理論上的正當理由,而且在實際工作中並不意味著前者是後者的原因。

7 - 特色工程是關鍵

在一天結束的時候,會有一些機器學習項目成功,有些失敗。是什麼造成了差異?最容易的因素是使用的功能。如果你有許多獨立的功能,每一個都和類相關聯,學習很容易。另一方面,如果這個類是一個非常複雜的功能,你可能無法學習它。通常情況下,原始數據不是可以學習的形式,但是可以從中構建特徵。這通常是機器學習項目中的大部分工作所在。它往往也是最有趣的部分之一,直覺,創造力和「黑色藝術」與技術性東西一樣重要。

初學者常常驚訝於機器學習項目中實際上機器學習的時間太少。但是,如果考慮收集數據、整合、清理和預處理以及在功能設計中可以進行多少嘗試和錯誤,這是非常有意義的。另外,機器學習不是建立數據集和運行學習者的一次性過程,而是運行學習者、分析結果、修改數據和/或學習者並重複的迭代過程。學習通常是最快速的部分,但那是因為我們已經掌握了很好的技巧!特徵工程更加困難,因為它是特定領域的,而學習者可以在很大程度上是通用的。但是,兩者之間沒有尖明確的邊界,這也是最有用的學習者是促進知識整合的另一個原因。

8 - 更多數據能擊敗更聰明的演算法

在大多數計算機科學中,這兩種主要的有限資源是時間和記憶。在機器學習中,還有第三個:訓練數據。哪一個瓶頸已經從十年變為十年了,在八十年代,這往往是數據,在今天往往是時間。大量的數據是可用的,但沒有足夠的時間來處理它,所以它沒有被使用。這導致了一個矛盾:即使原則上有更多的數據意味著可以學習更複雜的分類器,但實際上更簡單的分類器被使用,因為複雜的分類器需要很長的時間學習。部分答案是想出快速學習複雜分類器的方法,而且在這方面的確有了顯顯著的進展。

使用更聰明的演算法的部分原因是有一個比你所期望的更小的回報,第一個近似,他們是一樣的,當你認為表述與規則集和神經網路不同時,這是令人驚訝的。但事實上,命題規則很容易被編碼為神經網路,其他表徵之間也存在類似的關係。所有學習者本質上都是通過將附近的例子分組到同一個類來工作的,關鍵的區別在於「附近」的含義。在非均勻分布的數據下,學習者可以產生廣泛不同的邊界,同時在重要的區域(即具有大量訓練示例的那些區域)中也做出相同的預測,大多數文本示例可能會出現)。這也有助於解釋為什麼強大的學習可能是不穩定的,但仍然準確。

通常,首先嘗試最簡單的學習者(例如,邏輯回歸之前的樸素貝葉斯,支持向量機之前的k-最近鄰居)是值得的。更複雜的學習者是誘人的,但他們通常也更難使用,因為他們有更多的旋鈕,你需要轉向獲得好的結果,因為他們的內部是更不透明的)。

學習者可以分為兩大類:表示具有固定大小的線性分類器,以及可以隨數據一起增長的表達式,如決策樹。固定大小的學習者只能利用這麼多的數據。原則上可變大小的學習者可以在給定足夠數據的情況下學習任何函數,但實際上由於演算法或計算成本的限制,他們可能不會。而且,由於維度的詛咒,不存在大量的數據可能就足夠了。由於這些原因,聰明的演算法,那些充分利用數據和計算資源的演算法,如果你願意付出努力的話,往往會得到回報。設計學習者和學習分類器之間沒有尖銳的邊界,相反,任何給定的知識都可以在學習者中編碼或從數據中學習。所以機器學習項目往往會成為學習者設計的重要組成部分,當然,從業者需要具備一定的專業知識。

9 - 學習許多模型,不局限於一個

在機器學習的早期,每個人都有自己喜歡的學習者,並有一些先驗的理由相信它的優越性。大部分努力嘗試了很多變化,並選擇最好的一個。然後系統的經驗比較表明,最好的學習者因應用而異,包含許多不同學習者的系統開始出現。現在努力嘗試許多學習者的變化,仍然選擇最好的一個。隨後研究人員注意到,如果不是選擇找到的最佳變體,我們結合了許多變體,結果會更好 - 通常要好得多 - 而且對用戶來說沒有額外的工作量。

現在創建這樣的模型集是標準的。在最簡單的技術中,稱為bagging,我們通過重採樣簡單地生成訓練集的隨機變化,分別學習一個分類器,並通過投票結果結合。這是有效的,因為它大大降低了方差,而只是在提高的過程中稍微增加偏差,訓練樣例有權重,而且這些都是不同的,所以每個新的分類器都集中在前面那些往往會出錯的例子上。在堆疊中,單個分類器的輸出成為了「高級」學習者的輸入,這個學習者能計算出如何最好地組合它們。

存在許多其他技術,趨勢是越來越大的合集。在Netflix獎中,世界各地的團隊爭相構建最佳視頻推薦系統。隨著比賽的進行,小組發現他們通過把學習者和其他小組結合起來,取得了最好的成績,並且合併為更大更大的小組。獲勝者和亞軍都是由100多名學習者組成的隊伍,兩個隊伍相結合進一步提高了成績。毫無疑問,我們將來會看到更大的。

10 - 簡單並不意味著準確性

有一個著名的觀點,實體不應該超越必要的範圍。在機器學習中,這通常意味著,給定兩個具有相同訓練錯誤的分類器,兩者中較簡單的可能具有最低的測試錯誤。有關這一說法的證據在文獻中經常出現,但事實上有很多反例,而且「不吃免費午餐」定理暗示它不可能是真實的。

我們在前一節看到一個反例:模型合集合。即使在訓練誤差已經達到零之後,通過添加分類器,增強集合的泛化誤差仍然在不斷提高。因此,與直覺相反,一個模型的參數數量與其擬合傾向之間沒有必然的聯繫。

相反,更複雜的觀點將複雜性等同於假設空間的大小,因為較小的空間允許假設由較短的代碼表示。像上面的理論保證部分那樣的界限可能被認為是暗示更短的假設更好地概括。這可以通過給空間中的假設分配更短的代碼給我們先驗的偏好,進一步細化。但是,把這看作準確性和簡單性之間折衷的「證明」是循環推理:我們提出假設,我們更喜歡簡單的假設,如果它們是準確的,那是因為我們的偏好是準確的,而不是因為我們選擇的表象中的假設是「簡單」的。

11 - 可表示並不意味著可學

本質上,所有用於可變規模學習者的表示都具有「每個函數都可以用這種表示方式來表示或近似任意近似」的關聯定理。由此得到保證,表示的粉絲經常忽視所有其他表達。但是,僅僅因為一個函數可以表示並不意味著它可以被學習。例如,標準決策樹學習者不能比具有訓練實例的樹葉學習更多。在連續的空間中,使用一組固定的原語表示甚至是簡單的函數通常需要無數的組件。

而且,如果假設空間具有許多評價函數的局部最優值,那麼往往是這樣,學習者可能找不到真正的函數。給定有限的數據、時間和記憶,標準學習者只能學習所有可能函數的一小部分,這些子集對於具有不同表示的學習者是不同的。因此,關鍵問題不是「能否表現出來」,這答案往往是微不足道的,而是「可以學會嗎?」而且試圖嘗試不同的學習者(也可能把它們結合起來)是值得的。

12 - 相關性並不意味著因果關係

相關性並不意味著因果關係這一點是經常發生的,這也許是不值得去做的。但是,儘管我們所討論的那種學習者只能學習相關性,但他們的結果往往被視為代表因果關係。這不是錯的嗎?如果是的話,那麼為什麼人們要這樣做呢?

通常情況下,學習預測模型的目標是用它們作為行動的指南。如果我們發現啤酒和尿布經常在超市買到,那麼也許把啤酒放在尿布的旁邊就會增加銷量。但是實際上做實驗的時候很難說清楚。機器學習通常應用於觀測數據,預測變數不受學習者的控制,與實驗數據不同。一些學習演算法可能潛在地從觀測數據中提取因果信息,但是它們的適用性受到限制。另一方面,相關性是一個潛在的因果關係的標誌,我們可以用它作為進一步調查的指南。

結論

像任何學科一樣,機器學習有許多難以實現的「民間智慧」,但對成功至關重要。多明戈斯教授的論文總結了一些你需要知道的最重要的內容。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器學習 的精彩文章:

機器學習如何從Python 2遷移到Python 3
機器學習如何在政務服務中落地應用?

TAG:機器學習 |