在合適的地方,機(jī)器學(xué)習(xí)帶來的將是一場(chǎng)革命
以機(jī)器學(xué)習(xí)為代表的人工智能領(lǐng)域目前是科技領(lǐng)域最熱門的方向之一,它被稱為新時(shí)代的水電煤,會(huì)為所有產(chǎn)業(yè)帶來基礎(chǔ)性的革命。但對(duì)于一家公司、一個(gè)部門、一款產(chǎn)品和一位產(chǎn)品經(jīng)理來說,他們需要一個(gè)簡(jiǎn)單而重要的答案:我真的需要機(jī)器學(xué)習(xí)嗎?
你真的需要機(jī)器學(xué)習(xí)嗎?
很多公司和科技博客都在一直鼓吹“人工智能”代表未來,并提出他們會(huì)如何運(yùn)用“機(jī)器學(xué)習(xí)”來改進(jìn)科技,在競(jìng)爭(zhēng)中脫穎而出。但是機(jī)器學(xué)習(xí)到底是什么,你應(yīng)該怎么使用它?又或者它只是2017年的一個(gè)時(shí)髦熱詞而已?
長(zhǎng)話短說,以上問題的答案是肯定的,在大多數(shù)情況下 – 但是在它可以提供幫助的地方,機(jī)器學(xué)習(xí)可以是革命性的。
所以機(jī)器學(xué)習(xí)到底是什么?以它最原始的形式來說,機(jī)器學(xué)習(xí)是一項(xiàng)實(shí)踐函數(shù)逼近(function approximation)的藝術(shù),或者說是要做出有根據(jù)的推測(cè)。它和專業(yè)人員的經(jīng)驗(yàn)是相同的概念,比如管道工擁有根據(jù)房屋中漏水情況快速、準(zhǔn)確地判斷造成漏水原因的經(jīng)驗(yàn)。在機(jī)器學(xué)習(xí)中,我們稱這樣的經(jīng)驗(yàn)為“大數(shù)據(jù)”。在遇到和解決的每一個(gè)問題之后,管道工會(huì)得到一個(gè)新的數(shù)據(jù)點(diǎn),她可以使用這些知識(shí)來解決將來會(huì)遇到的、相似的問題。
上面提到的這些看起來都很棒,但是對(duì)于近期機(jī)器學(xué)習(xí)熱度的躍升,我敢于稱其為時(shí)髦術(shù)語也是有原因的。機(jī)器學(xué)習(xí)幾乎從來都不是問題的終極答案。機(jī)器學(xué)習(xí)會(huì)很容易讓簡(jiǎn)單的問題變的異常復(fù)雜 – 比如想要重新發(fā)明for循環(huán)的想法是完全站不住腳的。大多數(shù)所謂使用“機(jī)器學(xué)習(xí)”的公司或者是沒有真的使用機(jī)器學(xué)習(xí)的技術(shù),或者是把普通的算法開發(fā)稱作機(jī)器學(xué)習(xí)來達(dá)到市場(chǎng)宣傳的效果,又或者是在產(chǎn)出過度復(fù)雜、計(jì)算量巨大、價(jià)格昂貴并且根本不必要的解決方案,想要解決一些本來可以使用常規(guī)手段解決的問題。
這并不意味著機(jī)器學(xué)習(xí)永遠(yuǎn)都沒有用處。事實(shí)上,當(dāng)把它正確地運(yùn)用在適合的問題上,機(jī)器學(xué)習(xí)可以是一件不可思議的工具。但什么是一個(gè)適合的問題哪?雖然不是一個(gè)機(jī)器學(xué)習(xí)問題蓋棺定論的定義,這里有一個(gè)簡(jiǎn)便的清單,來確定一個(gè)問題是否值得使用機(jī)器學(xué)習(xí)的方式,還是說更適合用標(biāo)準(zhǔn)的解析辦法。
作為一個(gè)機(jī)器學(xué)習(xí)問題:
- 會(huì)有“大數(shù)據(jù)” – 許多許多數(shù)據(jù)點(diǎn)(一個(gè)大型的項(xiàng)目如果沒有上百萬個(gè)數(shù)據(jù)點(diǎn)的話,也許不會(huì)見到很好的效果)
- 是一個(gè)復(fù)雜的問題 – 一般是一個(gè)以標(biāo)準(zhǔn)模式非常難以解決的問題,經(jīng)常會(huì)需要一個(gè)領(lǐng)域中的專家
- 是具備不確定性的 – 一樣的輸入不一定產(chǎn)生一樣的輸出
- 是有多維度的 – 經(jīng)驗(yàn)法則是數(shù)據(jù)點(diǎn)的采集是從最少9各方面來做的時(shí)候,這樣的問題會(huì)更適合機(jī)器學(xué)習(xí)方式
一些符合這個(gè)清單的、流行的機(jī)器學(xué)習(xí)問題的例子包括:醫(yī)療圖片處理,產(chǎn)品推薦,語音理解,文字分析,面部識(shí)別,搜索引擎,自動(dòng)駕駛車輛,擴(kuò)增現(xiàn)實(shí),預(yù)測(cè)人類行為。
機(jī)器學(xué)習(xí)面臨的其中一項(xiàng)最大的挑戰(zhàn)是如何處理系統(tǒng)中的不確定性,不確定性是指同樣的輸入不一定會(huì)產(chǎn)生一樣的輸出結(jié)果。針對(duì)這個(gè)問題,我們會(huì)在這篇文章中以例子的形式來解釋,這個(gè)例子是預(yù)測(cè)多倫多的天氣。在這個(gè)例子中,我們有大數(shù)據(jù) – 包括上百年的多倫多的天氣資料。 這個(gè)問題足夠復(fù)雜,準(zhǔn)確的天氣預(yù)測(cè)需要具備氣象科學(xué)訓(xùn)練和經(jīng)驗(yàn)的專家。這個(gè)問題是具備不確定性的,2016年2月23日天氣冷并不意味著2017年2月23日天氣也會(huì)是一樣的,盡管他們分享一樣的歷史數(shù)據(jù)。這個(gè)問題同時(shí)也是多維度的 – 風(fēng)向模式,雨量模式和任何一個(gè)會(huì)影響天氣的因素都可以成為解決問題的一個(gè)新的維度。因?yàn)檫@個(gè)問題是具備不確定性的,我們必須使用我們有的信息,盡量好的去預(yù)測(cè)系統(tǒng)的輸出結(jié)果(預(yù)測(cè)天氣)- 我們要做出最合理的猜測(cè)。
對(duì)于機(jī)器學(xué)習(xí)來講,我們的最合理猜測(cè)或者函數(shù)逼近幾乎總是關(guān)于對(duì)于數(shù)學(xué)的創(chuàng)造性運(yùn)用 – 這可能包括統(tǒng)計(jì)學(xué)/概率論,向量學(xué),優(yōu)化或者其他數(shù)學(xué)的方法。存在著幾種核心的機(jī)器學(xué)習(xí)問題,他們可以幫助我們確定什么樣的解決方法可以最好的解決一個(gè)問題:分類學(xué),回歸分析和聚類。在例子中,我們見到的是一個(gè)回歸分析的問題 – 從數(shù)據(jù)中預(yù)測(cè)持續(xù)性的趨勢(shì)。存在著幾種核心的方法去訓(xùn)練系統(tǒng),或者說給系統(tǒng)提供經(jīng)驗(yàn)去學(xué)習(xí),這些方法包括:有監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。在我們的例子中展示的是有監(jiān)督學(xué)習(xí),在這個(gè)例子中,所有用來訓(xùn)練的數(shù)據(jù)的輸入和輸入都是已知的。我們給出一個(gè)歷史日期(輸入)就可以知道當(dāng)天多倫多的天氣(輸出)。定義問題和訓(xùn)練模型讓決定使用什么樣的方法去訓(xùn)練機(jī)器學(xué)習(xí)算法變的更加簡(jiǎn)單。
到了這里,你已經(jīng)決定要預(yù)測(cè)天氣(或者解決一個(gè)不同的機(jī)器學(xué)習(xí)問題)而且你已經(jīng)使用上面的清單確定了這是一個(gè)真實(shí)有意義的問題。但是應(yīng)該是從哪里入手哪?下面是一個(gè)關(guān)于解決機(jī)器學(xué)習(xí)問題步驟的簡(jiǎn)便指南:
- 定義有意義的數(shù)據(jù)
- 定義問題
- 定義解決問題的方法
- 產(chǎn)出訓(xùn)練和測(cè)試數(shù)據(jù) – 從經(jīng)驗(yàn)來講,應(yīng)該保持70%的訓(xùn)練數(shù)據(jù)量,30%的測(cè)試數(shù)據(jù)量
- 訓(xùn)練和測(cè)試算法
讓我們用我們天氣預(yù)測(cè)的問題來實(shí)踐一下上面提到的步驟:
第一步是定義有意義的數(shù)據(jù)。什么樣的屬性是有意義的,怎么樣去定義一個(gè)“好”的數(shù)據(jù)點(diǎn)和“壞”的數(shù)據(jù)點(diǎn)?我們可以拿幾個(gè)我們例子中的屬性來解釋一下,比如讓我們?nèi)囟?,降雨量和風(fēng)速這三個(gè)屬性,把這三個(gè)屬性放在一起,我們可以基本了解到特定的一天天氣如何。如果同時(shí)有像特定一天多倫多人年齡中位數(shù)這樣的屬性,我們就應(yīng)該把這樣的屬性排除在有效數(shù)據(jù)之外,因?yàn)檫@樣的屬性跟我們要解決的問題并沒有關(guān)系,而且有可能會(huì)影響最終的結(jié)果。
第二步,我們已經(jīng)確定問題是一個(gè)回歸分析的問題,并且應(yīng)該使用有監(jiān)督學(xué)習(xí)的方法。第三步需要選擇一個(gè)真正的機(jī)器學(xué)習(xí)方法,在這我們不會(huì)討論太多細(xì)節(jié),簡(jiǎn)單來說讓我們選擇線性回歸。第四步是取得訓(xùn)練數(shù)據(jù)(留下30%的數(shù)據(jù)做測(cè)試之用)。第五步就是 實(shí)際的訓(xùn)練和測(cè)試。
也許你已經(jīng)從上面的步驟中發(fā)現(xiàn)了,實(shí)際去訓(xùn)練算法是最后也只是最不重要的一步。創(chuàng)造一個(gè)強(qiáng)大的機(jī)器學(xué)習(xí)的重要的一步是在編程之前,就確保你擁有有意義的數(shù)據(jù),一個(gè)定義清晰、明確的問題和解決方案。
即使你有了定義清晰、分類準(zhǔn)確的解決方案,有意義的數(shù)據(jù),正確的測(cè)試數(shù)據(jù),在數(shù)據(jù)趨勢(shì)中包括了異常值,仍然有很多地方可能出錯(cuò)。在很多機(jī)器方案背后,最常見也是最致命的錯(cuò)誤是低度擬合/過度擬合。低度擬合,或者也叫過高偏差,意味著最終的近似函數(shù)太過簡(jiǎn)單,不能很好地代表數(shù)據(jù)的趨勢(shì)。想象一下我們?cè)噲D畫一條直線穿過多倫多一年溫度的圖表,這條直線很難撞到任何一個(gè)數(shù)據(jù)點(diǎn)。在低度擬合和過度擬合兩者中,更常見也更危險(xiǎn)的是過度擬合,或者也叫過高方差。在這個(gè)情況中,最后的近似函數(shù)會(huì)太過復(fù)雜,也不能很好地表現(xiàn)數(shù)據(jù)趨勢(shì)。過度擬合經(jīng)常產(chǎn)生比低度擬合更差的結(jié)果,大家也很容易落入這樣的陷阱。
這篇文章只是一個(gè)關(guān)于機(jī)器學(xué)習(xí)的基本介紹,更多的學(xué)習(xí)資料正變的更加普遍,在很多語言和GUIs中(目前一些最好的機(jī)器學(xué)習(xí)的資料是用Python寫就的),已經(jīng)出現(xiàn)非常多即用型的機(jī)器學(xué)習(xí)算法和測(cè)試數(shù)據(jù)可以被用來做實(shí)驗(yàn),其中包括Theano, Tensorflow, Weka甚至包括Octave和Matlab。