
什么是算法
算法就是一系列指令,告訴計(jì)算機(jī)該做什么。計(jì)算機(jī)是由幾十億個微小開關(guān)(稱為晶體管)組成的,而算法能在一秒內(nèi)打開并關(guān)閉這些開關(guān)幾十億次。
最簡單的算法是觸動開關(guān)。一個晶體管的狀態(tài)就是一個比特信息:如果開關(guān)打開,信息就是1;如果開關(guān)關(guān)閉,信息就是0。
第二簡單的算法是:把兩個比特結(jié)合起來。克勞德·香農(nóng)以“信息論之父”而為人所知,他第一個意識到晶體管的活動就是在運(yùn)算,因?yàn)榫w管開了又關(guān),是對其他晶體管的回應(yīng)。
如果A晶體管只有在B和C晶體管都打開時才打開,那么這時它就是在做小型的邏輯運(yùn)算。如果A晶體管在B和C晶體管其中一個打開時才打開,就是另外一種小型邏輯運(yùn)算。如果A晶體管在B晶體管任何關(guān)閉的時候打開,或者反過來,這又是第三種運(yùn)算。所有算法,無論多復(fù)雜,都能分解為這三種邏輯運(yùn)算:且,或,非。
一種算法不僅是簡單的一套指令,這些指令必須精確且不能模糊,這樣計(jì)算機(jī)才能夠執(zhí)行。我們平時用到的菜譜就不能稱之為算法。
算法是一套嚴(yán)格的標(biāo)準(zhǔn)。人們常說,你沒法真正了解某樣?xùn)|西,直到你能用一種算法來將其表達(dá)出來(理查德·費(fèi)曼曾說,“如果我無法創(chuàng)造某樣?xùn)|西,那么也就無法理解它”)。
設(shè)計(jì)算法這個過程充滿陷阱,什么事都不能想當(dāng)然。如果你的一些構(gòu)建已經(jīng)出錯,就得找其他方法。設(shè)計(jì)算法最重要的一點(diǎn)就是用一種計(jì)算機(jī)能理解的語言來將算法記錄下來,接下來對其進(jìn)行糾錯:找出每個誤差并修正,直到計(jì)算機(jī)能夠運(yùn)行程序。
算法復(fù)雜性的三個層面
空間復(fù)雜性
即為了儲存在計(jì)算機(jī)內(nèi)存中,一個算法所需信息的比特?cái)?shù)量。如果計(jì)算機(jī)無法提供該算法所需的內(nèi)存,那么這個算法就沒用,必須忽略。
時間復(fù)雜性
該算法運(yùn)行多長時間,也就是說,在產(chǎn)生想要的結(jié)果之前,算法利用及重新利用晶體管的步驟有多少。如果算法運(yùn)行時間太久,我們等不了,那么這個算法也沒用。
人類的復(fù)雜性
當(dāng)算法變得很復(fù)雜以致人類大腦已無法理解,當(dāng)算法不同部分的交互過多且過于深入時,誤差就會悄然潛入。我們找不到這些誤差,也就無法糾正它們,算法也就不會做我們想做的事。即便我們讓它運(yùn)行起來,它也會停下來。對使用它的人來說,它沒必要那么復(fù)雜,而且它和其他算法也合作得不好,這為日后埋下隱患。
初步理解機(jī)器學(xué)習(xí)
今天為止,人們能編寫許多計(jì)算機(jī)無法學(xué)習(xí)的程序??闪钊烁鼮轶@訝的是,計(jì)算機(jī)卻能學(xué)習(xí)人們無法編寫出來的程序。
我們會開車、會辨認(rèn)字跡,但這些技能都是潛意識發(fā)揮出來的,無法向計(jì)算機(jī)解釋這些事情是如何完成的。但是,如果我們把關(guān)于這些事情的足夠多的例子交給學(xué)習(xí)算法,該算法會很樂意弄明白怎樣獨(dú)立完成這些事情,這時我們就可以放手讓算法去做了。
學(xué)習(xí)算法是種子,數(shù)據(jù)是土壤,被掌握的程序是成熟的作物。機(jī)器學(xué)習(xí)專家就像農(nóng)民,播下種子,灌溉,施肥,留意作物的生長狀況,事事親力親為,而不是退居一旁。
一旦我們這樣看待機(jī)器學(xué)習(xí),隨即也會發(fā)生兩件事。
我們掌握的數(shù)據(jù)越多,我們能學(xué)的也越多。沒有數(shù)據(jù)什么也學(xué)不到。有了大數(shù)據(jù)很多東西可以學(xué)習(xí)。這也是機(jī)器學(xué)習(xí)無處不在的原因,因?yàn)橛酗w速增長的數(shù)據(jù)。
機(jī)器學(xué)習(xí)是一把劍,利用這把劍可以解決多種復(fù)雜性問題。只要有足夠的數(shù)據(jù),一段只有幾百行代碼的程序可以輕易生成擁有上百萬行代碼的程序,而且它可以為解決不同問題不停產(chǎn)生不同的程序。這可以顯著降低程序員工作的復(fù)雜度。
學(xué)習(xí)算法的區(qū)別和地位
有些學(xué)習(xí)算法學(xué)習(xí)知識,有的則學(xué)習(xí)技能。例如:“所有人都會死”是知識,騎單車是技能。
在機(jī)器學(xué)習(xí)中,知識往往以統(tǒng)計(jì)模型的形式出現(xiàn),因?yàn)槎鄶?shù)知識都是可以統(tǒng)計(jì)的:所有人都會死,但只有4%是美國人。技能往往以程序的形式出現(xiàn):如果馬路向左彎曲,那么向左轉(zhuǎn)動車頭;如果一只鹿跳到你面前,那么立刻剎車。
通常,這些程序都很簡單,復(fù)雜的是它們的核心知識。如果你能判斷哪些郵件是垃圾郵件,那么你也就能判斷該刪除哪些郵件。如果你能在象棋游戲中判斷這盤棋自己的優(yōu)勢在哪里,那么你也就懂得該怎么走。
在信息處理這個生態(tài)系統(tǒng)中,學(xué)習(xí)算法是頂級掠食者。數(shù)據(jù)庫、網(wǎng)絡(luò)爬蟲、索引器等相當(dāng)于食草動物,耐心地對無限領(lǐng)域中的數(shù)據(jù)進(jìn)行蠶食。統(tǒng)計(jì)算法、線上分析處理等則相當(dāng)于食肉動物。
食草動物有必要存在,因?yàn)闆]有它們,其他動物無法存活,但頂級掠食者有更為刺激的生活。數(shù)據(jù)爬蟲就像一頭牛,網(wǎng)頁相當(dāng)于它的草原,每個網(wǎng)頁就是一根草。當(dāng)網(wǎng)絡(luò)爬蟲進(jìn)行破壞行動時,網(wǎng)站的副本就會保存在其硬盤當(dāng)中。索引器接著做一個頁面的列表,每個詞都會出現(xiàn)在頁面當(dāng)中,這很像一本書后的索引。數(shù)據(jù)庫就像大象,又大又重,永遠(yuǎn)不會被忽略。在這些動物當(dāng)中,耐心的野獸飛快運(yùn)轉(zhuǎn)統(tǒng)計(jì)和分析算法,壓縮并進(jìn)行選擇,將數(shù)據(jù)變?yōu)樾畔?。學(xué)習(xí)算法將這些信息吞下、消化,然后將其變成知識。
算法在科學(xué)研究中的作用
機(jī)器學(xué)習(xí)是“打了類固醇”的科學(xué)方法,也遵循同樣的過程:產(chǎn)生假設(shè)、驗(yàn)證、放棄或完善。
科學(xué)家可能會花費(fèi)畢生精力來提出或驗(yàn)證幾百個假設(shè),而機(jī)器學(xué)習(xí)系統(tǒng)卻能在一秒鐘內(nèi)做完這些事。機(jī)器學(xué)習(xí)使科學(xué)的發(fā)現(xiàn)過程自動化。這既是商業(yè)領(lǐng)域的革命,也是科學(xué)領(lǐng)域的革命。
有了大數(shù)據(jù)和機(jī)器學(xué)習(xí),你就能弄明白比之前復(fù)雜很多的現(xiàn)象。在多數(shù)領(lǐng)域,科學(xué)家一般只使用種類很有限的模型,例如線性回歸模型,在這個模型當(dāng)中,你用來適應(yīng)數(shù)據(jù)的曲線總是一條直線。遺憾的是,世界上的大多數(shù)現(xiàn)象都是非線性的(或者說這也是一件幸事,如果是線性的,生活會變得非常乏味。實(shí)際上,那樣就不會存在生命了)。
機(jī)器學(xué)習(xí)打開了廣闊、全新的非線性模型世界。這就好比在只有幾縷月光照射的房間,打開了明亮的燈。在生物學(xué)領(lǐng)域,學(xué)習(xí)算法的研究成果包括:DNA分子中基因的位置;在蛋白質(zhì)合成前,多余的核糖核酸在哪里進(jìn)行絞接;蛋白質(zhì)如何折疊成各自的特有形狀;不同條件如何對基因的表達(dá)造成影響。用不著在實(shí)驗(yàn)室對新藥進(jìn)行測試,機(jī)器學(xué)習(xí)就可以預(yù)測這些藥物是否有效,只有最有效的藥品才會受到測試。學(xué)習(xí)算法還會剔除那些可能產(chǎn)生嚴(yán)重副作用(甚至導(dǎo)致癌癥)的藥物,備選藥物無須在經(jīng)過人體試驗(yàn)被證明無效后才被禁止使用,從而避免了代價(jià)昂貴的失敗。
算法如何影響選舉
奧巴馬總統(tǒng)雇用了拉伊德·賈尼(機(jī)器學(xué)習(xí)專家,他是奧巴馬競選中的首席科學(xué)家)。賈尼研究的是如何整合最偉大的分析運(yùn)算,并將其應(yīng)用到政治史中。他們將所有選民的信息整合成單個數(shù)據(jù)庫,然后將該數(shù)據(jù)庫和他們能在社交網(wǎng)絡(luò)、市場營銷等領(lǐng)域找到的資源結(jié)合起來。
之后著手對每個選民做四種預(yù)測:
- 支持奧巴馬的可能性有多大
- 會不會參加民意調(diào)查
- 會不會回應(yīng)競選宣傳并照做
- 對特定問題進(jìn)行對話之后,他們會不會改變選舉決定。
基于這些選民的例子,奧巴馬團(tuán)隊(duì)每個晚上進(jìn)行66 000場選舉模擬,并用這些結(jié)果指導(dǎo)奧巴馬競選的志愿者大軍:該給誰打電話,該拜訪誰,該說什么。
機(jī)器學(xué)習(xí)的終極影響
2011年,“大數(shù)據(jù)”的概念流行起來,機(jī)器學(xué)習(xí)被明確歸入全球經(jīng)濟(jì)未來的中心。當(dāng)今,似乎沒有哪個人類鉆研的領(lǐng)域不受到機(jī)器學(xué)習(xí)的影響,甚至包括看起來沒有多大關(guān)系的領(lǐng)域(如音樂、體育、品酒)。盡管機(jī)器學(xué)習(xí)發(fā)展很明顯,但這也僅僅是未來的預(yù)告。雖然它有用,但實(shí)際上當(dāng)今在工業(yè)上起作用的學(xué)習(xí)算法的生成還是受到了很大限制。如果現(xiàn)在實(shí)驗(yàn)室的算法能在各領(lǐng)域的前線使用,比爾·蓋茨說機(jī)器學(xué)習(xí)的突破產(chǎn)生的價(jià)值將相當(dāng)于10家微軟,其實(shí)這個說法有點(diǎn)保守了。如果這些觀點(diǎn)讓研究人員真正覺得眼前一片光明,而且收到效果,那么機(jī)器學(xué)習(xí)帶來的就不僅僅是新的文明時代,還是地球生命進(jìn)化的新階段。