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





