編者按: 人工智能和機(jī)器學(xué)習(xí)可謂火爆空前。自從AlphaGo完勝人類(lèi)圍棋頂尖棋手后,人們關(guān)于人工智能的討論就從未間斷過(guò)。 有人說(shuō),人工智能會(huì)使大批人失業(yè),又有人說(shuō),人工智能會(huì)給人類(lèi)帶來(lái)威脅。更多人期待的則是,人工智能可以幫助我們創(chuàng)造更多的價(jià)值。AI是一個(gè)非常廣義的概念。為了更好的了解它,現(xiàn)在先讓我們來(lái)討論一下人工智能的一個(gè)重要分支——機(jī)器學(xué)習(xí)。本文編譯于Ben Dickson近期在techfinancials.co.za上發(fā)表的題為“What is machine learning?”的文章。
當(dāng)我第一次試著編程時(shí),我就愛(ài)上了這門(mén)藝術(shù)(是的,我相信編程既是科學(xué)又是藝術(shù)), 那一年,我九歲。 我很快就迷上了如何通過(guò)設(shè)置邏輯規(guī)則和條件來(lái)控制程序的流程,if... else語(yǔ)句,switch,循環(huán)等等。
在接下來(lái)的幾年里,我學(xué)會(huì)了通過(guò)創(chuàng)建模塊和將代碼段抽象成函數(shù)和類(lèi)的手段來(lái)保持代碼整潔。 我通過(guò)面向?qū)ο蟮姆治龊驮O(shè)計(jì)(OOA / D)增強(qiáng)了我的軟件開(kāi)發(fā)技能。 我學(xué)習(xí)了代碼的重復(fù)使用和設(shè)計(jì)模式。 我學(xué)會(huì)了用UML圖形和示意圖來(lái)解釋我的程序。 我學(xué)會(huì)了將這些原則應(yīng)用于近十幾種不同的編程語(yǔ)言之中。
但是編程的經(jīng)驗(yàn)法則保持不變:定義規(guī)則和邏輯。 其余的只是幫助實(shí)施和維護(hù)這些規(guī)則的技巧。
幾十年來(lái),基于規(guī)則的代碼主導(dǎo)了我們創(chuàng)建軟件的方式。 我們分析一個(gè)或一組問(wèn)題,指定邊界,實(shí)例,進(jìn)程,關(guān)系,并將它們轉(zhuǎn)換為確定軟件工作方式的規(guī)則。
雖然這種方法對(duì)我們來(lái)說(shuō)很好,但卻導(dǎo)致了“笨”軟件,除非人類(lèi)以某種方式更新其邏輯,否則該程序永遠(yuǎn)不會(huì)改變其行為。 另外,它也不適用于規(guī)則不明確的情況,例如識(shí)別圖像中的對(duì)象,在網(wǎng)絡(luò)流量中發(fā)現(xiàn)惡意活動(dòng),或是在不平坦的地面上對(duì)機(jī)器人進(jìn)行導(dǎo)航。
機(jī)器學(xué)習(xí)是現(xiàn)代人工智能的基石,它顛覆了傳統(tǒng)編程模式。 機(jī)器學(xué)習(xí)有助于創(chuàng)建修正和改善其性能的軟件,而無(wú)需人類(lèi)向其解釋如何完成任務(wù)。 這就是我們今天直接使用的, 以及許多即將發(fā)生的,創(chuàng)新背后的技術(shù),包括你從網(wǎng)站,數(shù)字助理,無(wú)人駕駛汽車(chē),分析軟件等處看到的令人驚訝的建議。
什么是機(jī)器學(xué)習(xí)?
機(jī)器學(xué)習(xí)是從示例中學(xué)習(xí)的軟件。 你不需要編寫(xiě)機(jī)器學(xué)習(xí)的算法,而是通過(guò)提供大量的相關(guān)數(shù)據(jù),來(lái)訓(xùn)練它們。 例如,不要試圖對(duì)機(jī)器算法解釋一只貓看起來(lái)是什么樣的,你需要通過(guò)提供數(shù)百萬(wàn)張貓的圖片來(lái)培訓(xùn)它。 該算法在這些圖像中找到重復(fù)的模式,并為自己確定如何定義貓的外觀。在此之后,當(dāng)你向該程序顯示新照片時(shí),它可以區(qū)分照片中是否含有貓的成分。
許多人將機(jī)器學(xué)習(xí)等同于人工智能。 然而,AI是一個(gè)松散的概念,它可以應(yīng)用于從復(fù)雜的、基于規(guī)則的軟件到尚未發(fā)明的,人類(lèi)智能之間的任何事情。 實(shí)際上,機(jī)器學(xué)習(xí)是AI的一個(gè)特別分支,它基于數(shù)據(jù)而并非規(guī)則來(lái)創(chuàng)建程序。
什么是監(jiān)督,無(wú)監(jiān)督和強(qiáng)化學(xué)習(xí)?
機(jī)器學(xué)習(xí)有幾種不同風(fēng)格的算法。 其中最流行的是“監(jiān)督學(xué)習(xí)”,進(jìn)一步說(shuō),就是你使用帶有標(biāo)簽數(shù)據(jù)的訓(xùn)練算法,將一組輸入對(duì)象(通常為矢量)映射到一組期望的輸出值中(也稱(chēng)為監(jiān)督信號(hào))。 上面所講的貓的示例就是監(jiān)督學(xué)習(xí)的一個(gè)例子。 另一個(gè)例子是語(yǔ)音識(shí)別,你可以通過(guò)提供聲音波形來(lái)對(duì)應(yīng)其中的書(shū)面字體。
你提供給監(jiān)督學(xué)習(xí)的算法樣本越多,其分析新數(shù)據(jù)的能力就越精確。 而這也是監(jiān)督學(xué)習(xí)的主要挑戰(zhàn)。 創(chuàng)建帶有標(biāo)記樣本的大數(shù)據(jù)非常耗時(shí),同時(shí)也需要大量的人力。 一些平臺(tái),如亞馬遜的Mechanical Turk提供數(shù)據(jù)標(biāo)簽服務(wù)。
在“無(wú)監(jiān)督學(xué)習(xí)”中,機(jī)器學(xué)習(xí)的另一個(gè)分支,則沒(méi)有參考數(shù)據(jù),一切都沒(méi)有標(biāo)簽。 換句話(huà)說(shuō),你提供輸入,但不提供輸出。 該算法對(duì)未標(biāo)記的數(shù)據(jù)進(jìn)行整理,提取推論并找出模式。 無(wú)人監(jiān)督學(xué)習(xí)對(duì)于人類(lèi)無(wú)法定義的,隱藏模式的情況尤其有用。
例如,你允許機(jī)器學(xué)習(xí)算法監(jiān)視你的網(wǎng)絡(luò)活動(dòng)。 然后,它將根據(jù)其找到的模式設(shè)置正常網(wǎng)絡(luò)活動(dòng)的基準(zhǔn)。根據(jù)這個(gè)標(biāo)準(zhǔn),它將檢測(cè)并且記錄異常網(wǎng)絡(luò)活動(dòng)。
與監(jiān)督學(xué)習(xí)相比,無(wú)監(jiān)督的學(xué)習(xí)更接近于機(jī)器自我學(xué)習(xí)的過(guò)程。 然而,無(wú)監(jiān)督學(xué)習(xí)的問(wèn)題是其結(jié)果往往是不可預(yù)測(cè)的。 這就是為什么它通常需要結(jié)合人的直覺(jué)來(lái)引導(dǎo)其保持正確方向,因?yàn)樗磺卸际亲詫W(xué)的。 例如,上述網(wǎng)絡(luò)安全的例子,網(wǎng)絡(luò)活動(dòng)中有許多原因會(huì)使其偏離規(guī)范,然而這并不是惡意制造的。 但機(jī)器學(xué)習(xí)的算法并不知道。在開(kāi)始的時(shí)候,人類(lèi)分析人員必須糾正其決定,直到它學(xué)會(huì)判斷異常并作出更好的決策。
另一個(gè)不太知名的機(jī)器學(xué)習(xí)領(lǐng)域是“強(qiáng)化學(xué)習(xí)”。在強(qiáng)化學(xué)習(xí)中,程序員定義了狀態(tài),期望目標(biāo),允許的行動(dòng)以及約束。 該算法通過(guò)嘗試將各種不同的允許行動(dòng)進(jìn)行組合來(lái)了解如何實(shí)現(xiàn)目標(biāo)。 當(dāng)你知道目標(biāo)是什么,但無(wú)法定義達(dá)到目標(biāo)的路徑時(shí),此方法特別有效。
強(qiáng)化學(xué)習(xí)在許多設(shè)置中被使用。 在更著名的案例中,Google DeepMind的AlphaGo,掌握了復(fù)雜的棋盤(pán)游戲Go的機(jī)器學(xué)習(xí)程序。 該公司正在采用同樣的方法來(lái)提高英國(guó)電網(wǎng)的效率。 Uber也在使用相同的技術(shù)來(lái)教AI代理玩?zhèn)b盜獵車(chē)手車(chē)(或更準(zhǔn)確地說(shuō),讓它們自己學(xué)習(xí))。
什么是深度學(xué)習(xí)?
雖然機(jī)器學(xué)習(xí)是人工智能的一個(gè)分支,但深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的專(zhuān)門(mén)分支。 深度學(xué)習(xí)使用神經(jīng)網(wǎng)絡(luò),一個(gè)具有人類(lèi)大腦結(jié)構(gòu)和功能的復(fù)制品。
深入學(xué)習(xí)解決了上一代學(xué)習(xí)算法中存在的一個(gè)主要問(wèn)題。先前, 隨著數(shù)據(jù)的增長(zhǎng),算法平臺(tái)的效率和性能趨于停滯。 現(xiàn)在,深度學(xué)習(xí)算法在獲得更多數(shù)據(jù)的同時(shí),其性能也在不斷改進(jìn)。深度學(xué)習(xí)算法并不是直接通過(guò)將輸入映射到輸出的方式,而是依賴(lài)于幾層處理單元。 每個(gè)層將其輸出傳遞到下一個(gè)層,進(jìn)行處理,然后再傳遞到下一層。 在某些模型中,計(jì)算可能會(huì)在處理層之間來(lái)回流動(dòng)多次?,F(xiàn)已證明深度學(xué)習(xí)在各種任務(wù)中非常有效,包括圖像字幕,語(yǔ)音識(shí)別和語(yǔ)言翻譯。
機(jī)器學(xué)習(xí)的挑戰(zhàn)是什么?
雖然機(jī)器學(xué)習(xí)對(duì)未來(lái)應(yīng)用的發(fā)展至關(guān)重要,但并不是沒(méi)有自己的挑戰(zhàn)。
一方面,機(jī)器學(xué)習(xí)算法的開(kāi)發(fā)和部署在很大程度上依賴(lài)于大量的計(jì)算和存儲(chǔ)資源來(lái)執(zhí)行其任務(wù)。 這種依賴(lài)關(guān)系使得它們?cè)趫?zhí)行時(shí)受限于云服務(wù)和大數(shù)據(jù)。 因此,在執(zhí)行邊緣計(jì)算機(jī)集成解決方案時(shí)(edge intelligence)它們更具挑戰(zhàn)性。
機(jī)器學(xué)習(xí)的另一個(gè)問(wèn)題 - 特別是深度學(xué)習(xí) - 是它的不透明度性。 隨著算法變得越來(lái)越復(fù)雜,人類(lèi)越來(lái)越難以解釋它們是基于什么,做出決定的。 在許多情況下,這可能不是問(wèn)題。 但是,當(dāng)你想要對(duì)算法做出關(guān)鍵決定時(shí),使它們具有透明性并且讓人一目了然是非常重要的。
此外還存在一些偏見(jiàn)問(wèn)題。 機(jī)器學(xué)習(xí)往往會(huì)吸收嵌入到它們?cè)诮邮芘嘤?xùn)時(shí),數(shù)據(jù)中包含的一些的習(xí)慣和傾向。 在某些情況下,尋找和消除偏見(jiàn)很容易,而在其他情況下,它的嵌入度極深,人類(lèi)往往難以察覺(jué)。
然而,這些挑戰(zhàn)都不可能阻止AI和機(jī)器學(xué)習(xí)成為我們這個(gè)時(shí)代的通用技術(shù)(這個(gè)術(shù)語(yǔ)曾經(jīng)被用于蒸汽機(jī)和電力這樣的發(fā)明)。 不管我們往哪個(gè)方向發(fā)展,機(jī)器學(xué)習(xí)都將會(huì)對(duì)我們產(chǎn)生深刻影響。