AI時(shí)代,機(jī)器學(xué)習(xí)受追捧,你真的了解嗎?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
機(jī)器學(xué)習(xí)是人工智能在近期最重要的發(fā)展之一。機(jī)器學(xué)習(xí)的理念是,不將智能看作是給機(jī)器傳授東西,而是機(jī)器會自己學(xué)習(xí)東西。這樣一來,機(jī)器就可以直接從經(jīng)驗(yàn)(或數(shù)據(jù))中學(xué)習(xí)如何處理復(fù)雜的任務(wù)。
即使是相對簡單的機(jī)器學(xué)習(xí)算法也可以學(xué)習(xí)如何區(qū)分貓和狗的圖片。
隨著計(jì)算速度和用于編程的算法的巨大進(jìn)步與發(fā)展,機(jī)器學(xué)習(xí)成長迅速。由此產(chǎn)生的算法對我們的生活開始產(chǎn)生重大影響,而且它們的表現(xiàn)往往勝過人類。那么,機(jī)器學(xué)習(xí)是如何工作的呢?
從經(jīng)驗(yàn)中學(xué)習(xí)
在機(jī)器學(xué)習(xí)系統(tǒng)中,計(jì)算機(jī)通常是通過在相同任務(wù)的大型數(shù)據(jù)庫中進(jìn)行訓(xùn)練,然后自己編寫代碼去執(zhí)行一項(xiàng)任務(wù)。其中很大一部分涉及到識別這些任務(wù)中的模式,然后根據(jù)這些模式做出決策。
舉個(gè)例子,假設(shè)一家公司正要招聘一名新員工,在招聘廣告登出之后有1000個(gè)人申請,每個(gè)人都投了簡歷。如果要親自一個(gè)個(gè)篩選,這實(shí)在太多了,所以你想訓(xùn)練一臺機(jī)器來完成這項(xiàng)任務(wù)。
為了做到這一點(diǎn),你需要把公司過往的許多應(yīng)聘者的簡歷都記錄下來。對于每一份簡歷,你都有記錄表明這個(gè)人是否最終被聘用了。為了訓(xùn)練機(jī)器,你拿出一半的簡歷,讓機(jī)器通過學(xué)習(xí)這些簡歷最終是否成功地申請到了一份工作來找出其中的模式。
這樣一來,當(dāng)機(jī)器收收到一份簡歷時(shí),它就可以對這個(gè)人是否適合被雇傭做出判斷。訓(xùn)練完畢,就可以接著用另一半簡歷來對機(jī)器進(jìn)行測試。如果它的成功率足夠高,也就是機(jī)器做出正確判斷的概率夠高,那么你就可以安心地讓機(jī)器根據(jù)一個(gè)人的簡歷來判斷他是否適合被聘用。在任何階段都不需要人的判斷。
具體細(xì)節(jié)
為了更清楚地理解機(jī)器學(xué)習(xí)的過程,我們將以開發(fā)能夠識別手寫數(shù)字的機(jī)器為具體例子來考慮模式識別的問題。這樣的機(jī)器應(yīng)該能夠準(zhǔn)確識別一個(gè)字符所代表的數(shù)字,而無論它的書寫格式如何變化。
數(shù)字識別的過程分為兩個(gè)階段。首先,我們必須能夠?qū)⑹謱憯?shù)字的圖像掃描到機(jī)器中,并從這張(數(shù)字)圖像中提取出有意義的數(shù)據(jù)。這通常是通過主成分分析(PCA)的統(tǒng)計(jì)方法實(shí)現(xiàn)的,這種方法會自動提取圖像中的主要特征,例如圖像的長度、寬度、線條的交點(diǎn)等。這個(gè)過程與求解矩陣的本征值和本征向量的過程密切相關(guān),也與谷歌用來在萬維網(wǎng)上搜索信息的過程非常相似。
然后,我們想訓(xùn)練機(jī)器從這些提取的特征中識別數(shù)字。一種非常主流的用來訓(xùn)練機(jī)器的方法是神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)算法的最初靈感來源是我們認(rèn)為的人類大腦的工作方式,但并不嚴(yán)格地建立在我們認(rèn)為的人類大腦的工作方式之上。
首先要?jiǎng)?chuàng)建一組“神經(jīng)元”,并將它們連接起來,它們可以相互發(fā)送消息。接下來,讓神經(jīng)網(wǎng)絡(luò)去解決大量已經(jīng)知道結(jié)果的問題,這樣做能讓算法“學(xué)習(xí)”到應(yīng)該如何確定神經(jīng)元之間的連接,以便能成功地識別出數(shù)據(jù)中的哪些模式導(dǎo)致了正確的結(jié)果。
這種神經(jīng)網(wǎng)絡(luò)的一個(gè)早期例子是一種叫做感知機(jī)的單層系統(tǒng),人們用它來模擬單個(gè)神經(jīng)元。感知機(jī)的概念是由Frank Rosenblatt在1962年提出的,它的典型結(jié)構(gòu)如下圖所示:
向感知機(jī)輸入n個(gè)數(shù)字X1、X2......Xn。然后將每個(gè)Xi乘以一個(gè)加權(quán)wi,并將所有這些乘積相加,得到它們的和
w₁X1+w₂X2+...+wnXn
如果這個(gè)和大于某個(gè)閾值C,則返回1,其他情況則返回0。也就是說,如果
w₁X1+w₂X2+...+wnXn-C > 0,
那么,感知機(jī)返回1;如果
w₁X1+w₂X2+...+wnXn-C ≤ 0,
那么感知機(jī)返回0。
對于數(shù)字識別問題,數(shù)字圖像的提取特征就是輸入Xi,感知機(jī)的判斷是,這個(gè)數(shù)字是3還是4。訓(xùn)練感知機(jī)的過程包括要找到合適的加權(quán)wi和閾值C,使得感知機(jī)能夠始終如一地識別出正確的數(shù)字。要做到這一點(diǎn),需要謹(jǐn)慎使用基于統(tǒng)計(jì)的數(shù)學(xué)優(yōu)化算法。
舉例:數(shù)字識別
例如,假設(shè)我們僅從圖像中提取兩個(gè)特性:X1和X2,其中X1可能計(jì)算圖像中直線的數(shù)量,X2能計(jì)算圖像中線條交叉的次數(shù)。
現(xiàn)在,每個(gè)手寫數(shù)字(比如3或4)的圖像都有兩個(gè)數(shù)字來描述,因而可以定位在一個(gè)坐標(biāo)系中。由于數(shù)字3通常沒有直線段,也沒有交叉線,它的圖像很可能對應(yīng)于坐標(biāo)系中接近 (0,0) 的點(diǎn)。數(shù)字4有三條直線段和1個(gè)交叉點(diǎn),它的圖像可能在點(diǎn) (3,1) 附近。
對于給定的w₁、w₂和C,感知機(jī)中的和是
w₁X1+w₂X2-C,
讓這個(gè)式子等于0就定義了一條直線。 如果感知機(jī)能用訓(xùn)練的圖像找到w₁、w₂和C的值,使得這條直線將所有對應(yīng)于數(shù)字3的點(diǎn)與所有對應(yīng)于數(shù)字4的點(diǎn)分隔開來,那么,它也就有很大的概率能夠正確識別出新的數(shù)字圖像。如果存在這樣一條直線,則稱數(shù)據(jù)是線性可分的。
假設(shè)圖中紅色的點(diǎn)來自代表數(shù)字3的圖像,藍(lán)色的點(diǎn)來自代表數(shù)字4的圖像。如果算法使用C=2,X1=X2=1,則加權(quán)后的和等于0對應(yīng)于圖中的直線(w₁+w₂-2=0)。對于藍(lán)色的數(shù)據(jù)點(diǎn),加權(quán)和大于零,對于紅色的數(shù)據(jù)點(diǎn),加權(quán)和小于零,所以算法總是會給出這個(gè)數(shù)據(jù)集的正確答案。
如果數(shù)據(jù)點(diǎn)不能被一條直線分割,也就是說,數(shù)據(jù)不是線性可分的,那么可以把這些點(diǎn)擴(kuò)展到一個(gè)更高的維度,并寄希望于在更高維空間它們是線性可分的。一個(gè)非常簡單的例子是,你可以將圖中的點(diǎn)拖拽出屏幕到第三個(gè)維度,拖拽的距離對應(yīng)于它們到點(diǎn) (0,0) 的初始距離。但是,通常會使用的是更復(fù)雜的方法。當(dāng)然,如果從原始數(shù)據(jù)中提取的特征是兩個(gè)以上,那么就可以在更高維度上使用類似的方法。
感知機(jī)方法也可以用于對貓和狗的圖像進(jìn)行分類:
隨著訓(xùn)練數(shù)據(jù)的增加,算法會更新其選擇的直線,也就是會改變常數(shù)C和加權(quán)w₁、w₂的數(shù)值。
神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)
簡單的感知機(jī)可以被訓(xùn)練來完成許多簡單的任務(wù),但很快就會達(dá)到極限。顯然,將許多感知機(jī)耦合在一起就可以進(jìn)行更多的計(jì)算,但這一發(fā)展必須等待更強(qiáng)大的計(jì)算機(jī)的出現(xiàn)。當(dāng)多層感知機(jī)耦合起來形成一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),這一重大突破就出現(xiàn)了。這種神經(jīng)網(wǎng)絡(luò)的典型結(jié)構(gòu)如下圖所示,它包括輸入層、隱藏層和輸出層。在這種情況下,輸入會組合起來以觸發(fā)感知機(jī)的第一層神經(jīng)元,由此產(chǎn)生的輸出也會組合起來以觸發(fā)下一層神經(jīng)元,最后,這些組合起來給出最終的輸出。
層數(shù)越多,神經(jīng)網(wǎng)絡(luò)就越“深”。然后,這樣一個(gè)神經(jīng)網(wǎng)絡(luò)就會通過為上面的神經(jīng)元之間的每個(gè)連接分配加權(quán)而得到訓(xùn)練。這個(gè)過程是為了模仿大腦神經(jīng)通路強(qiáng)化或衰減的方式。深度學(xué)習(xí)描述了訓(xùn)練這樣一個(gè)神經(jīng)網(wǎng)絡(luò)的過程。
事實(shí)上,神經(jīng)網(wǎng)絡(luò)算法之所以可能實(shí)現(xiàn),是由新的數(shù)學(xué)優(yōu)化算法的發(fā)展與強(qiáng)大的計(jì)算能力結(jié)合的結(jié)果。在為神經(jīng)網(wǎng)絡(luò)尋找合適的加權(quán)wi的過程結(jié)束之時(shí),我們得到了一個(gè)黑箱,它可以非常快速地運(yùn)行并做出“決策”。
不同的機(jī)器學(xué)習(xí)方法
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的過程有多種形式。
在監(jiān)督學(xué)習(xí)中,用戶會事先提供一組成對的實(shí)例,也就是輸入和輸出。然后,學(xué)習(xí)的目標(biāo)是找到一個(gè)給出的輸出能與實(shí)例匹配的神經(jīng)網(wǎng)絡(luò)。通常,用來比較神經(jīng)網(wǎng)絡(luò)的輸出與實(shí)例的輸出的方法是計(jì)算兩者的均方誤差;然后對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,讓這一誤差對所有訓(xùn)練數(shù)據(jù)集最小化。這種方法的一個(gè)非常標(biāo)準(zhǔn)的應(yīng)用是在統(tǒng)計(jì)學(xué)中使用的曲線擬合,它對手寫數(shù)字和其他的模式識別問題都有很好的效果。
在強(qiáng)化學(xué)習(xí)中,數(shù)據(jù)不會由用戶事先給出,而是由神經(jīng)網(wǎng)絡(luò)控制的機(jī)器與環(huán)境交互作用時(shí)生成的。機(jī)器會在每個(gè)時(shí)間點(diǎn)上對環(huán)境執(zhí)行一個(gè)操作,由此生成一個(gè)觀察結(jié)果,以及這個(gè)操作的成本。然后訓(xùn)練這個(gè)神經(jīng)網(wǎng)絡(luò)去選擇那些將總體成本降至最低的操作。在許多方面,這個(gè)過程類似于人類(尤其是小孩子)學(xué)習(xí)的方式。
近年來,機(jī)器學(xué)習(xí)的數(shù)學(xué)算法有了很大的發(fā)展。卷積神經(jīng)網(wǎng)絡(luò)(CNNs)就是一種令人興奮的、重要的新發(fā)展,它是對那些將圖像處理技術(shù)與深度神經(jīng)網(wǎng)絡(luò)結(jié)合的方法的擴(kuò)展,可以應(yīng)用于人臉識別,甚至可以用來檢測情緒,現(xiàn)在還被用于包括醫(yī)學(xué)診斷在內(nèi)的許多其他領(lǐng)域。
為了更好地學(xué)習(xí)下國際象棋,AlphaZero使用了深度卷積神經(jīng)網(wǎng)絡(luò)。它的訓(xùn)練是通過強(qiáng)化學(xué)習(xí)的方法,讓機(jī)器在24小時(shí)內(nèi)與自己對弈70萬局。過程中采用一種通用的蒙特卡羅樹搜索(MCTS)算法來分配加權(quán)。在學(xué)習(xí)下圍棋和日本將棋時(shí)采用的也是類似的方法,而且在每種情況下都達(dá)到了相似的水平。這是非常了不起的!
機(jī)器學(xué)習(xí)進(jìn)展迅速,在更快的訓(xùn)練算法和越來越多的數(shù)據(jù)的驅(qū)動下,發(fā)展更復(fù)雜、更深層神經(jīng)網(wǎng)絡(luò)的趨勢越來越明顯。但或許我們需要思考的問題是,把可能改變生命的決定(如醫(yī)學(xué)診斷)留給機(jī)器,這樣做安全且合乎道德嗎?