程式設計的終結:經典計算機領域正迎來劇變

我們大多數人都是恐龍,等待著流星的撞擊。

撰文

撰文|Matt Welsh

本文作者Matt Welsh (mdw@mdw.la)是一家最近成立的初創公司Fixie.ai(致力於開發人工智慧功能來支持軟體開發團隊)的執行長和聯合創始人。他曾是哈佛大學電腦科學教授、Google的工程總監、蘋果的工程主管,以及OctoML的工程高級副總裁。他在加州大學柏克萊分校獲得博士學位的時候,人工智慧還不太會下國際象棋。

本文The End of Programming發表於 JANUARY 2023 | VOL. 66 | NO. 1 | COMMUNICATIONS OF THE ACM(《美國計算機協會通訊》),本文只代表著其中一種觀點,但由權威刊出,說明這種觀點值得關注。

上世紀80年代,我長大了,開始在家中為Commodore VIC-20和Apple等個人電腦程式設計。我在大學裡繼續學習電腦科學 (CS),並最終在柏克萊獲得博士學位,我的大部分專業培訓都植根於我稱之為「經典」的CS:程式設計、演算法、資料結構、系統、程式語言。在經典電腦科學中,最終目標是將一個想法簡化為由Java、C++或Python等語言編寫的程序。經典電腦科學中的每一個思想——無論多麼複雜,從資料庫連接演算法到令人難以置信而滑稽的Paxos共識協議——都可以表達為人類可讀、可理解的程序。

上世紀90年代初,當我還在上大學的時候,我們還處於AI寒冬的深處,AI作為一個領域同樣被經典演算法所主導。我在康奈爾大學的第一份研究工作是和Dan Huttenlocher一起工作,他是計算機視覺領域的領軍人物(現在是麻省理工學院施瓦茨曼計算學院的院長)。1995年前後,在Huttenlocher 的計算機視覺的博士生課程中,我們從未討論過任何類似於深度學習或神經網路的東西,而是經典演算法,如Canny邊緣檢測、光流和Hausdorff距離。深度學習還處於起步階段,還沒有被認為是主流人工智慧,更不用說主流電腦科學了。

當然,這是30年前的事情了,從那時起發生了很多變化,但有一件事沒有真正改變——電腦科學是一門「資料結構、演算法和程式設計」作為其核心的學科來教授的。如果再過30年,甚至10年,我們還在用這種方式研究電腦科學,我會感到驚訝的。事實上,我認為電腦科學作為一個領域正在經歷一個巨大的變遷——我們中很少有人真正做好了準備。

程式設計將被淘汰,我相信「寫程序」 的傳統觀念正在走向消亡。事實上,除了非常專業的應用,我們所知道的大多數軟體將被經過訓練而不是程式設計的人工智慧系統所取代。在需要一個「簡單」程序的情況下(畢竟,並不是所有的程序都需要一個運行在GPU集群上、有數千億個參數的大模型),這些程序本身將由人工智慧生成,而不是手工編碼。

我不認為這個想法很瘋狂。毫無疑問,從(相對)原始的電氣工程洞穴中走出的最早的電腦科學先驅們堅信,所有未來的電腦科學家都需要對半導體、二進位制算術和微處理器設計有深刻的理解才能理解軟體。快進到今天,我敢打賭99%的編寫軟體的人幾乎不知道CPU是如何工作的,更不用說電晶體設計的物理基礎了。進一步地說,我相信未來的電腦科學家將遠離「軟體」的經典定義,他們將很難逆轉連結串列或實現快速排序。(見鬼,我不確定我是否還記得如何實現快速排序。)

像CoPilot這樣的AI編碼助手只是觸及了我所描述的內容的表面。在我看來,很明顯,未來所有的程序最終都將由AI來編寫,而人類充其量只能扮演監督的角色。任何懷疑這一預測的人只需看看AI內容生成的其他方面(如圖像生成)正在取得的驚人進展。DALL-E v1和僅在15個月後宣佈的DALL-E v2在質量和複雜性上的差異是驚人的。如果說我在過去幾年的人工智慧工作中學到了什麼,那就是,人們很容易低估日益龐大的人工智慧模型的力量。幾個月前還像是科幻小說的事情正在迅速成為現實。

(創造出令人驚豔的圖像, https://openai.com/dall-e-2/)

所以,我不只是在談論像Github的CoPilot[1]取代程式設計師,而要說的是,用訓練模型取代編寫程序的整個概念。在未來,電腦科學的學生將不需要學習諸如如何向二叉樹添加節點或C++程式碼這樣的平凡技能。這種教育將會過時,就像教工程專業的學生如何使用計算尺一樣。

未來的工程師只需敲擊幾下鍵盤,就能啟動一個包含400億億個參數(four-quintillion-parameter)的模型實例,這個模型已經對人類知識的全部範圍(包括子集)進行了編碼,並隨時準備執行機器要求的任何任務。讓機器做我們想做的事情的大部分腦力工作將是提出正確的示例、正確的訓練資料和正確的方法來評估訓練過程。像基於小樣本學習(few-shot learning)且能泛化的、這樣強大的模型只需要執行任務的幾個好的示例。在大多數情況下,大規模的、人工管理的資料集將不再是必要的,大多數人「訓練」一個AI模型將不會在PyTorch中運行梯度下降循環(gradient descent loops)或類似的東西。他們只是教模型幾個示例,機器將完成其餘的工作。

在這門新的電腦科學中——如果我們還稱之為電腦科學的話——機器將如此強大,並且已經知道如何做很多事情,這一領域將看起來不像一個工程領域,而更像一個教育領域。也就是說,如何最好地教育機器,就像如何最好地教育學校裡的孩子一樣。不過,與 (人類) 孩子不同的是,這些人工智慧系統將駕駛我們的飛機、運行我們的電網,甚至可能統治整個國家。我認為,當我們的注意力轉向教授智慧機器而不是直接程式設計時,絕大多數經典CS就變得無關緊要了。傳統意義上的程式設計實際上將會消亡。

我認為CS作為一個領域正在經歷一場相當大的劇變,我們中很少有人真正做好了準備。

這一切將如何改變我們對電腦科學領域的看法?新的原子計算單元不再是處理器、記憶體和I/O系統,而是一個大規模的、預先訓練過的、高度自適應的AI模型。這對我們思考計算的方式來說是一個巨大的轉變——不再是一個可預測的、靜態的、受指令集、類型系統和可判定性概念支配的過程。基於人工智慧的計算早已跨越了靜態分析和形式證明的界限。我們正在迅速走向這樣一個世界,在這個世界裡,計算的基本構件是有氣質的、神秘的、自適應的代理。

沒有人真正了解大型人工智慧模型是如何工作的,這一事實突顯了這種轉變。人們發表的研究論文實際上發現了現有大型模型的新行為,即使這些系統是由人類「設計」出來的。大型人工智慧模型能夠做一些它們沒有受過明確訓練的事情,這應該會把Nick Bostrom[2]和其他擔心超級智慧人工智慧橫行的人嚇得魂飛魄滅 (這是正確的)。除了實證研究,我們目前沒有辦法確定當前人工智慧系統的侷限性。至於未來更大更復雜的人工智慧模型——祝我們好運!

對於任何讀過現代機器學習論文的人來說,焦點從程序到模型的轉變應該是顯而易見的。這些論文幾乎沒有提到創新背後的程式碼或系統:人工智慧系統的構建模組是更高層次的抽象,如注意力層(attention layers)、標記器(tokenizers)和資料集。即使是20年前的時間旅行者,也很難理解GPT-3論文[3](描述為該模型構建的實際軟體)的三句話(three sentences):

「我們使用與GPT-2相同的模型和架構,包括其中描述的修改後的初始化、預歸一化和可逆標記化,除了我們在Transformer Layer中使用交替的密集和局部稀疏注意力模式,類似於 稀疏矩陣(Sparse Transformer)。為了研究ML性能對模型大小的依賴關係,我們訓練了8種不同大小的模型,從1.25億個參數到1750億個參數,範圍超過三個數量級,最後一個是我們稱之為GPT-3的模型。先前的工作表明,在足夠的訓練資料下,驗證損失的縮放應該近似於一個平滑冪律(power law)作為規模的函數。許多不同規模的訓練模型允許我們測試這個假設的驗證損失(validation loss)和下游語言任務。」

計算基礎定義的這種轉變帶來了巨大的機遇,也帶來了巨大的風險。然而,我認為現在是時候接受這是一個很有可能的未來,並相應地發展我們的思想,而不是隻是坐在這裡等待流星撞擊。

參考文獻

[1] Berger, E. Coping with copilot. SIGPLAN PL Perspectives Blog, 2022; https://bit.ly/3XbJv5J

[2] Bostrom, N. Superintelligence: Paths, Dangers, Strategies. Oxford University Press, 2014.

[3] Brown, T. et al. Language models are few-shot learners. 2020; https://bit.ly/3Eh1DT5

[4] Kojima, T. et al. Large language models are zero-shot reasoners. 2022; https://bit.ly/3Ohmlqo

[5] Nye, M. et al. Show your work: Scratchpads for intermediate computation with language models. 2021; https://bit.ly/3TLnfMY

本文轉自「軟體質量報道」,原標題為《程式設計的終結:經典電腦科學的末日即將來臨》。

本文經授權轉載自微信公眾號:軟體質量報道 作者:Matt Welsh

轉載內容僅代表作者觀點

不代表中科院高能所立場

編輯:亦州

相關文章

星震學方法重新估測銀河系厚盤年齡

星震學方法重新估測銀河系厚盤年齡

簡介:銀河系由薄盤和厚盤兩個盤狀結構組成,ASTRO-3D通過星震學方法(即地震在恆星內部產生聲波根據其所引起的震動頻率推斷年齡資訊,無法探...

100,000顆超新星在銀河系核心附近爆炸

100,000顆超新星在銀河系核心附近爆炸

恆星誕生,銀河系中心經歷了怎樣的「爆炸」? 多虧最新一代的精密望遠鏡,天文學家才可以對我們的宇宙了解更多。這些儀器有著更高的解析度和觀測能力...