來自軟件的批評

人工智能的可行性遭遇的挑戰以及奇點是從區份量變和質變開始的。這種論點承認,在大體上,諸如內存容量、處理器速度和通信帶寬等能力呈指數擴張,但同時堅持軟件(方法和算法)則沒有這樣擴張。

這是硬件與軟件的挑戰,也是一個重要的挑戰。例如,虛擬現實先驅傑羅恩·拉尼爾刻畫了我和其他所謂的控制論極權主義者的立場,我們僅僅以一些模糊的方式來理解軟件。在他看來,這就好像軟件\"deus ex machina\"。2但是它忽略了我所描述的具體和詳細的情景,據此才能實現智能軟件。人腦逆向工程是一項遠比拉尼爾和其他觀察員所能認識到的更為深遠的事業,它將擴大我們的人工智能工具包,並將包括自我組織方法等基本的人類智慧。我在後面會著重這個話題,但是我首先要解答一些關於軟件缺乏進步的基本誤解。

軟件的穩定性。拉尼爾認為軟件的「笨拙」和「脆弱」是固有的,並且長篇累牘地描述他在使用軟件時遭遇的各種挫折。他寫道:「讓電腦以可靠且可變的方式執行十分複雜的特定任務而沒有崩潰或安全漏洞,這基本上是不可能的。」3我並不打算捍衛所有的軟件,但複雜的軟件並不一定是脆弱和容易災難性崩潰的。有很多例子表明,執行關鍵任務的複雜軟件很少出現故障或幾乎不出現故障:例如,控制飛機降落增長比例的複雜軟件、監測重症監護室中病人的軟件、引導智能武器的軟件、控制基於自動模式識別的數十億對沖基金投資的軟件,以及實現其他許多功能的軟件。4我不知道有任何空難是因為自動降落軟件的故障引起,但我也不能說人類就同樣可靠。

軟件的響應。拉尼爾抱怨道:「電腦用戶界面對於用戶操作的反應似乎比15年前還要慢,如按鍵,這是怎麼了?」5我現在想請拉尼爾試試使用舊電腦。即使排除配置一個舊電腦的困難不說(這是另一個問題),我想他已經忘記了以前的電腦反應有多麼遲鈍、笨拙、受限。以現在的標準,讓20年前的電腦做一些實際的工作,就會明顯看到,無論從量上還是從質上,舊軟件都不會比現在的好。

雖然總是能發現不好的設計、響應延遲,但這通常是新特性和新功能帶來的。如果用戶願意他們的軟件不增加新功能,憑借不斷指數增長的計算速度和內存容量,軟件響應延遲將很快消除。但是,市場要求不斷擴大功能。20年前,沒有搜索引擎或其他與萬維網集成的軟件(事實上都沒有萬維網),只有原始的語言、格式和多媒體工具等。因此,功能總是處在可行性的邊緣。

幾年或幾十年前的軟件浪漫發展史比得上數百年前人們對田園生活的看法,那時人們不會遭遇與機器工作的挫折,生活無拘無束,但是生命短暫,勞動強度大,充滿貧窮、疾病和災難頻發。

軟件的性價比。關於軟件的性價比,每個方面的比較都很顯著。看看1000頁的語音識別軟件的表格。1985年,你花5000美元買一個軟件,它提供100個詞彙,不提供連讀能力,需要訓練三個小時來識別你的發音,而且準確性相對較差。2000年只需50美元你就可以購買一個軟件,包括10萬字的詞彙表,並且提供連續發音功能,只需要經過5分鐘的語音訓練就可以識別你的發音,精度顯著提高,提供了自然語言理解能力(為了編輯需要和其他用途),還包括許多其他功能。6

軟件開發效率。軟件本身是如何開發的?40多年來,我一直在開發軟件,所以關於這一點我有一些看法。我估計軟件的開發效率倍增時間約為6年,這比處理器性價比的倍增時間長,現在處理器性價比的倍增時間大概為1年。不過,軟件生產率呈指數增長。現在可用的開發工具、類庫和支持系統比幾十年前的有效得多。我現在的項目組中只有三四個人,只用幾個月就完成了一個目標,25年前,同樣的目標需要很多人工作一兩年才能實現。

軟件複雜度。20年前的軟件程序通常包括幾千至幾萬行代碼。現在,主流程序(例如,供應渠道控制、工廠自動化、預訂系統、生化模擬)都是數百萬行或者更多。主要防禦系統軟件(如聯合攻擊戰鬥機)包含了數千萬行。

用來控制軟件的軟件本身的複雜性迅速增加。IBM引導了自主計算的概念,即自動完成日常的信息技術支持功能。7這些系統將根據自己的行為模式進行編程,將能夠實現IBM公司提出的「自我配置、自我癒合、自我優化和自我保護」的目標。支持自主計算的軟件代碼量將達到數千萬行(每行包含了幾十字節的信息),人類基因組中只有幾千字節的可用信息,因此,在信息複雜度方面,軟件已超過了人類基因組及其中的分子。

然而,程序中包含的信息量並不是計算複雜度最好的標準。一個軟件程序可能會很長,但可能包含很多無用信息。當然,基因組也是這種情況,它看起來是非常低效的編碼。很多人嘗試制定複雜度的測量標準。例如,美國國家標準技術研究所8的計算機科學家亞瑟·沃森和托馬斯·麥凱布提出的回路複雜性度量標準(Cyclomatic Complexity Metric)。這個度量標準用於計算程序邏輯的複雜性,並考慮到了分支結構和決策點。大量的實例研究表明,按照這種方法測量,複雜度會快速增加,哪怕沒有充分的數據來跟蹤倍增時間。不過,關鍵在於,如今在行業中使用的最複雜的軟件系統比以神經形態為基礎模擬大腦區域的程序,以及對單個神經元進行生化模擬的軟件程序複雜度更高。我們在人類大腦中發現了並行、自我組織、分形算法,現在我們能處理的軟件的複雜度已經超過了對這些建模和仿真所需要的複雜度。

加速算法。諸如信號處理、模式識別、人工智能等程序使用各種方法來解決基本的數學問題,這是因為軟件算法的速度和效率已經取得了顯著進步(在硬件不變的情況下),因此解決問題的性價比不僅從硬件的加速中受益,也從軟件的加速中受益。不同問題上的進步各不相同,但普遍都有進步。

例如,考慮一下信號處理,這是一個普遍的計算密集型任務,就像人腦一樣。佐治亞理工學院的馬克·A·理查德和麻省理工學院的蓋裡·A·肖記錄了信號處理算法效率顯著提高的趨勢9。例如,要找到信號的種類,往往需要解決所謂的偏微分方程。算法專家喬恩·本特利已經證明了解決這類問題的計算量在不斷下降。10例如,從1945年~1985年,對於一個代表性的應用而言(為一個每面64個元素的三維網格找出一個橢圓型偏微分的解決方案),計算量減少到原來的30萬分之一。這使得效率每年增長38%(不包括硬件的改善)。

另一個例子,12年間,在音變電話線上發送信息的能力以每年55%11的增長率從每s發送300bit提高到每s56000bit。這一進步一部分是由於硬件設計改進,但主要還是因為算法創新。

處理問題的關鍵之一是使用傅裡葉變換將信號轉換成頻率份量,將信號表示成一組正弦波。此方法用於計算機語音識別和許多其他應用的前端。人類聽覺感知也從將語音信號分解成頻率份量開始。1965年,用於快速傅立葉變換的\"radix-2 Cooley-Tukey algorithm\"將1024點傅裡葉變換所需的操作量減少到原來的1/200。12一個改進的\"radix-a\"算法進一步促進了這個進步,將操作量減少到原來的1/800。最近引進了「小波」變換,它能將任意信號表示成一組比正弦波更複雜的波。這些方法進一步極大地增加了效率,可以將信號分解成關鍵組成部分。

上面的例子並非異常現象,大部分計算密集的「核心」算法所需的操作量顯著減少。這裡還有一些其他的例子,比如排序、查找、自相關(和其他統計方法)、信息壓縮和解壓。並行算法,即將一個方法分解成多個能同時執行的方法,也取得了很大進展。正如前面所討論的,並行處理必然運行在較低的溫度下。大腦使用大量的並行算法,可以在更短的時間內完成更複雜的功能。我們需要在機器中使用這個方法,以達到最優的計算密度。

在硬件性價比的提高和軟件效率的改進之間存在著固有的差別。硬件改善有著顯著的一致性和可預測性。每當我們達到一個硬件速度和效率的新水平時,我們就能獲得強大的工具來實現指數級進步,以便到達下一個新水平。軟件的改善則是較難預測的。理查德和肖稱它們為「開發階段的蟲洞」,因為我們可以經常看到,實現某個算法的改進就相當於硬件一年的進步。請注意,我們不依靠軟件效率的不斷改進,因為我們可以依靠硬件的不斷加速。然而,算法突破帶來的好處非常有助於實現計算機能力趕上人類智慧的目標,而且這些好處很可能繼續累積。

智能算法的根本來源。最重要的一點,為了在機器中實現人類智能,這裡已經有了一個具體的遊戲計劃:逆向設計出人腦中的並行、混亂、自組織、分形方法,並將這些方法用在現代計算硬件中。我們已經看到人腦及其方法呈指數級增長知識(見第4章),可以預料,未來20年內,我們將有數百個信息處理器官的詳細模型及仿真,所有這些都統稱為人類大腦。

理解人類智慧的運作原理有助於我們開發人工智能算法。很多這樣的算法被廣泛用於機器模式識別系統,系統表現出的微妙複雜的行為是設計師也想不到的。對於創造複雜的智能行為來說,自組織方法並不是一個捷徑,但它是一個重要方式,通過它可以增加邏輯編程系統的複雜度而不會引起系統脆弱。

正如我前面所討論的,人腦本身是由基因組創建的,而基因組只包含3千萬到一億字節的壓縮的有用信息。那麼,之間有百兆個連接的器官怎麼會來源於如此小的基因組呢(我估計,僅僅是用來標識人腦的互聯數據就比人腦基因組的信息多100萬倍)13?答案是,基因組指定了一組進程,每一個都採用無秩序的方法(隨機初始化,然後自組織)來增加信息量。據瞭解,該互連布線遵循的計劃包含很大的隨機性。當一個人來到一個新的環境,他的連接和神經遞質層模式就會自我組織,以便更好地描繪這個世界,但是規定最初設計的程序並沒有那麼複雜。

我並不支持我們通過編程將人類智能連接起來,從而形成一個巨大且規則的專家系統。我們也不希望以人類智能為代表的一系列技能來源於一個巨大的遺傳算法。拉尼爾擔心,任何這樣的做法將不可避免地陷入某個局部極小值(這個設計比與之類似的設計要好,但實際上並不是最優設計)。有意思的是,像理查德·道金斯一樣,拉尼爾也指出,生物進化「丟失了輪子」(因為沒有一個生物進化擁有它)。事實上,這種看法並不完全準確:像在蛋白質層的結構還是存在小輪子的,比如細菌鞭毛的離子發動機,它就用來在三維環境中充當傳輸工具。14對於形態較大的生物,如果沒有道路,輪子當然不管用,這就是為什麼沒有用於二維平面移動的生物進化的輪子15。然而,進化確實產生了一種物種,它既能創造輪子,又能創造道路,因此它也成功地建立了很多車輪,儘管是間接的。間接的方法並沒有什麼錯,我們一直在工程中使用間接的方法。事實上,間接是進化進行的方式(每個階段的產品創造下一個階段)。

大腦逆向工程沒有局限於複製每個神經元。在第5章中,我們瞭解了如何通過實施具有與大腦等同功能的並行算法來對包含無數神經細胞的大量大腦區域建模。這種神經形態方法的可行性已經被十多個區域的模型和仿真所證明。正如我之前討論的,這些往往能使得計算的耗費大大降低,正如勞埃德·瓦特、卡福·密德等的實驗表現的那樣。

拉尼爾寫道:「如果存在一個複雜、無序的現象,那就是我們。」我同意他的觀點,但並不認為這是一個阻礙。我自己感興趣的領域是無序計算,這是我們做模式識別的方式,這又是人類智慧的核心。無序是模式識別進程中的一部分,它推動這一進程,我們沒有理由不在機器中使用這些方法,就像在我們的大腦中使用一樣。

拉尼爾寫道:「進化已經演變,例如開始有了性別概念,但進化無一例外都非常緩慢。」但拉尼爾的意見只適用於生物進化,而不適用於技術發展。這正是為什麼我們對生物進化感動。拉尼爾忽略了進化過程的本質:它加速了,因為每一個階段為創建下一階段引入了更強大的方法。生物進化的第一階段(核糖核酸)經歷了幾十億年,我們已經由這個階段發展到如今的技術快速發展階段。萬維網出現才短短幾年,速度卻明顯快於寒武紀大爆發時期。這些現象都是相同的進化過程的一部分,開始時緩慢,目前的速度相對快一些,而未來幾十年會變成快得驚人。

拉尼爾寫道:「整個人工智能事業是建立在一個聰明的錯誤之上。」在此之前,計算機至少在每一個層面都可以媲美人類的智慧,它始終讓懷疑論者認為計算機和人相差無幾。人工智能的每一個新成就都受到尚未完成的其他目標的影響。事實上,研究人工智能的人都會遇到這種挫折:一旦人工智能的目標實現,便不再認為它屬於人工智能的領域,而只是一個一般的有用技術。因此人工智能經常被認為是一些尚未得到解決的問題。

但是,機器的確越來越智能,它們能完成的任務範圍也在很快擴大,這些任務以前需要聰明的人類關注。正如在第5章和第6章討論的一樣,現在有數百個關於操作性的狹義人工智能的例子。

例如,在前面的內容中描述了\"Deep Fritz Draws\",電腦象棋軟件不再僅僅依賴強力計算。2002年,Deep Fritz僅僅運行在8台電腦上,表現和1997年的IBM深藍相當,深藍使用了基於模式識別的改進算法。我們能看到很多這種例子,它們都是軟件智能的進步。然而,到現在,隨著整個人類智力都可以被機器趕上,機器能力總是被盡量減小。

一旦我們取得人類智能的完整模式,機器將能夠將人類模式識別的靈活、微妙和機器智能天生的優勢結合起來,比如速度、內存容量,最重要的是將知識和技能快速分享的能力。

《奇點臨近》