一、超越人類的計算能力
經(jīng)過了半個多世紀(jì)的發(fā)展,今天的計算機能以驚人的速度計算。目前,市場上的英特爾酷睿i7-2600每秒可以完成1124億次運算。假如一個人每秒能計算一次,那么酷睿處理器每秒的計算量要讓一個人計算8萬多年。
然而,計算機雖然算得快,但需要人類給出極為具體的指示,比如“比較兩個數(shù)的大小”或者“給一個數(shù)加上一”。無論多么復(fù)雜的程序,都是由這些簡單的運算堆積而來。
圖片來源:pixabay
舉個例子,在很多應(yīng)用場景中,我們需要對一組數(shù)字進(jìn)行排序。這時候我們可以通過比較數(shù)字之間的大小和對換數(shù)字之間的位置完成非常復(fù)雜的排序任務(wù)。如果我們改變比較和對換的組合策略,還能獲得提升排序算法的效率,減少程序運行的時間。
這些簡單的運算組合起來,可以完成很多驚人的任務(wù),我們用這種辦法建造了復(fù)雜的網(wǎng)站,模擬各種自然現(xiàn)象,讓我們可以在手機上看視頻,還能處理各種各樣的辦公軟件。
二、除了算力,還需要規(guī)則
然而,無論怎么組合,簡單的運算卻無法產(chǎn)生復(fù)雜的智能。因為人的認(rèn)知能力是從上而下產(chǎn)生的。我們大腦可以通過仍然不太清楚的機制,迅速“捕捉”到語言或圖片的高層特征和含義。
我們幾乎不需要學(xué)習(xí)任何語言規(guī)則,就能開始熟練掌握語言,并在年幼的時候就能開始理解對計算機來說極為復(fù)雜的語言現(xiàn)象,例如幽默、多義、暗示、雙關(guān)和諷刺等等。同樣,我們也只需要看到幾只貓和狗,就能分辨這兩種動物的區(qū)別。
與人不同的是,計算機采用的是自下而上的方式運行,必須從最底層的基本規(guī)則開始定義。但很多對人類來說很簡單的工作,卻很難提出非常具體的規(guī)則。
從底層的像素角度來看,這些圖片沒有任何相似之處;但我們卻一眼能發(fā)現(xiàn)圖片里的動物都是貓。也就是說,我們就很難設(shè)置一套規(guī)則,讓計算機判斷一張照片里的動物是貓還是狗。
筆者供圖
筆者供圖
在作出了大量失敗的嘗試之后,人工智能的研究者們決定從另一個方向解決問題。既然沒法從底層構(gòu)建規(guī)則來完成復(fù)雜的任務(wù),我們從另一個角度來攻破它。
三、黑盒子的介入
我們承認(rèn)某些問題的復(fù)雜性,所以根本不嘗試從內(nèi)部破解它,而是把它當(dāng)成一個黑盒子,可以根據(jù)不同的輸入,做出合理的輸出。
數(shù)學(xué)上,我們把這樣的黑盒子叫做“函數(shù)”。函數(shù)就像一個怪獸,可以吞進(jìn)去輸入數(shù)據(jù),然后根據(jù)規(guī)則生成輸出數(shù)據(jù)。
如果我們想識別圖片,我們會把圖片,而把圖片中的物體類別作為輸出。如果我們想要讓程序自己開汽車,我們會把攝像頭拍到的圖片作為輸入,而把油門或剎車的強度和方向盤轉(zhuǎn)動的角度作為輸出。如果我們想讓程序下圍棋,我們會把當(dāng)前的棋局作為輸入,而把最能提升獲勝概率的落棋位置作為輸出。
現(xiàn)在,我們可以合理地假定大自然確實存在復(fù)雜的函數(shù),但這個函數(shù)我們的大腦只能模擬,卻不能給出清晰的定義。如何在不給出清晰定義的情況下,讓人工智能模型也學(xué)會模擬這些函數(shù)呢?
第一步,我們需要找一個非常靈活的“通用”函數(shù),可以通過改變自己,適配不同的場景。第二步,我們給這個函數(shù)看大量帶有正確答案的數(shù)據(jù),讓它根據(jù)這些數(shù)據(jù)不斷地改變自己,從而使自己的輸出越來越符合真實答案,或者說,讓自己的預(yù)測與真實答案的差異最小。
如果我們把模型的預(yù)測與真實結(jié)果之間的差異畫成一個曲面,模型的學(xué)習(xí)過程,就可以看作是它不停地改變自己,最終找到曲面上最低點的過程。
舉個例子,如果我們要預(yù)測房價和房屋面積的關(guān)系。我們可以簡單的找一條直線作為函數(shù)。這個函數(shù)雖然不算太靈活,但至少可以改變方向和位置。一開始,我們會隨機擺放這條直線,可以看到,這樣的模型性能很差。但隨后,我們可以根據(jù)訓(xùn)練數(shù)據(jù),一點點調(diào)整直線的位置,讓模型能符合大部分訓(xùn)練數(shù)據(jù)的答案。這樣,我們也就有理由相信它可以預(yù)測未來不知道答案的新數(shù)據(jù)。
當(dāng)然,如果需要預(yù)測的比較復(fù)雜,一條直線已經(jīng)不夠了,我們就需要更復(fù)雜的模型。過去幾十年,機器學(xué)習(xí)和統(tǒng)計學(xué)習(xí)領(lǐng)域的學(xué)者陸續(xù)提出了很多不同的模型,可以比直線要靈活得多,例如邏輯回歸和支持向量機等等。
日趨復(fù)雜的模型
20世紀(jì)40年代,神經(jīng)生物學(xué)家提出了一些模擬動物神經(jīng)元連接的數(shù)學(xué)模型。50年代,人工智能的先驅(qū)之一弗蘭克·羅森布拉特(Frank Rosenblatt)提出了一個兩層的神經(jīng)網(wǎng)絡(luò),將其稱為感知機。這是最早的人工神經(jīng)網(wǎng)絡(luò)??墒堑搅?0年代,人們發(fā)現(xiàn)感知機的結(jié)構(gòu)過于原始,連基本的任務(wù)都完成不了。自此之后,人工神經(jīng)網(wǎng)絡(luò)陷入了沉寂。
直到20世紀(jì)80年代。約翰·霍普菲爾德(John Hopfield)和杰弗里·辛頓(Geoffrey Hinton)改進(jìn)了神經(jīng)網(wǎng)絡(luò),他們發(fā)現(xiàn)只需要在感知機里加一層神經(jīng)元,就能讓函數(shù)變得非常靈活,可以解決復(fù)雜得多的問題。
到了1989年,數(shù)學(xué)家甚至在數(shù)學(xué)上嚴(yán)格證明,只要3層神經(jīng)網(wǎng)絡(luò)和一個非線性的激活函數(shù),就能以極高的精度模擬自然界的任何函數(shù)。
所以理論上,不管我們是要讓AI學(xué)會下圍棋,還是回答問題,還是寫代碼,都可以讓多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)實現(xiàn)。
不過理論上能實現(xiàn)是一回事,實際上神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程要復(fù)雜得多。我們之前看到的誤差曲面都非常簡單,但實際遇到的誤差曲面可能是一個幾億維度的復(fù)雜形狀。
在這種情況下,學(xué)習(xí)的過程可能需要很多年。所以,研究人員又通過不同方法,對學(xué)習(xí)速度進(jìn)行改進(jìn)。在視頻中,我們能看到不同的學(xué)習(xí)方法速度差異很大。
在優(yōu)化了學(xué)習(xí)技術(shù)后,我們可以堆疊出遠(yuǎn)比三層神經(jīng)網(wǎng)絡(luò)更復(fù)雜的模型,也讓模型有了更強的表達(dá)能力。隨著神經(jīng)元的層數(shù)越來越多,革命性的深度學(xué)習(xí)也因此出現(xiàn)。
為了適應(yīng)不同的場景,模型的結(jié)構(gòu)也在不斷進(jìn)化,從最早解決計算機視覺問題的卷積神經(jīng)網(wǎng)絡(luò),到處理自然語言的循環(huán)神經(jīng)網(wǎng)絡(luò),再到更全面地考慮了上下文信息的Transformer。今天我們熟悉的GPT4和chatGPT等大規(guī)模語言模型都基于Transformer架構(gòu)。
所以,從某種意義上來說,那些讓我們驚嘆的對話能力,的確是通過一個幾千億參數(shù)的模型,在人類的語言上完成的自我學(xué)習(xí)。
參考:
The Evolution Of CPU Processing Power Part 1: The Mechanics Of A CPU - New Mind
Intro to Gradient Descent – KevinBinz
The Illustrated Transformer - Jay Alammar
文章由科普中國-星空計劃(創(chuàng)作培育)出品,轉(zhuǎn)載請注明來源。
作者:管心宇 科普作者
審核:于旸 騰訊玄武實驗室負(fù)責(zé)人