谷歌DeepMind打破十年算法封印,AlphaDev驚世登場,顛覆人類算法格局!
今天,「Alpha」家族再添一名新成員:AlphaDev。
整個計算生態(tài)系統(tǒng)的基礎(chǔ),或?qū)⒈籄I創(chuàng)造的新算法顛覆!
谷歌大腦和DeepMind合體沒多久,就帶來這樣一個驚世之作。
AlphaDev不僅可以將排序算法提速70%,甚至在有的算法上,能比人類快3倍之多。
十多年來,C++排序庫首次更改。AI優(yōu)化世界代碼,又達新里程碑。
目前,最新研究已登上Nature。
論文地址:https://www.nature.com/articles/s41586-023-06004-9
通過強化學(xué)習(xí),AlphaDev發(fā)現(xiàn)了更加有效的算法,直接超越了科學(xué)家和工程師們幾十年來的精心打磨。
現(xiàn)在,新的算法已經(jīng)成為兩個標(biāo)準(zhǔn)C++編碼庫的一部分,每天都會被全球的程序員使用數(shù)萬億次。
有網(wǎng)友表示,終于來了,我們現(xiàn)在正在踏入未知領(lǐng)域:人工智能正在構(gòu)建人工智能!
強化學(xué)習(xí)打破十年算法瓶頸
如同AlphaZero、AlphaFold等前輩一樣,AlphaDev也直接掀起了一個領(lǐng)域的變革。
DeepMind計算機科學(xué)家、論文一作Daniel Mankowitz表示,「我們起初根本不相信?!?/span>
「說實話,我們沒有想到會取得更好的成績:這是一個非常短的程序,而這些類型的程序,此前已經(jīng)被研究幾十年了?!?/span>
當(dāng)前,GPT-4、Bard等大模型的參數(shù)指數(shù)級增長,對算力等資源的需求不斷增長。而過去50年里,人類不斷依靠芯片的改進以跟上步伐。
但隨著微芯片接近物理極限,改進代碼讓計算更強大、更持續(xù)變得至關(guān)重要。尤其是,對每天運行數(shù)萬億次代碼的算法愈重要。
今天,Google DeepMind在Nature發(fā)表的論文中,首次介紹了阿爾法家族的「新貴」AlphaDev。
AlphaDev發(fā)現(xiàn)了一種更快的排序算法,數(shù)十億人每天都在不知不覺中使用這些算法。
它們是一切的基礎(chǔ),從在線搜索結(jié)果,社交帖子,到計算機和手機數(shù)據(jù)處理方式。這些算法每天都要執(zhí)行數(shù)萬億次。
利用AI生成更好的算法,將改變我們對計算機編程的方式,并影響我們數(shù)字化社會的方方面面。
根據(jù)Nature論文中的數(shù)據(jù),AlphaZero所創(chuàng)造的算法能比人類的數(shù)據(jù)排序速度快三倍。
今天,Google DeepMind還開源了在主C++庫中的最新排序算法,所有人皆可用。
開源地址:https://reviews.llvm.org/D118029
什么是排序?
排序是一種以特定順序組織多個項目的方法。
比如按字母順序排列三個字母,從大到小排列五個數(shù)字,或者將包含數(shù)百萬條記錄的數(shù)據(jù)庫排序。
在人類歷史中,排序方法一直在演變。最早的例子可以追溯到二、三世紀(jì),那時的學(xué)者們在亞歷山大圖書館的書架上,靠純手工的方式,以字母順序排列擺放了數(shù)千本書。
工業(yè)革命后,我們發(fā)明了可以幫助分類的機器——制表機將信息存儲在穿孔卡上,用于收集1890年美國的人口普查結(jié)果。
而隨著20世紀(jì)50年代商業(yè)計算機的興起,出現(xiàn)了最早的計算機科學(xué)排序算法。
在今天,世界各地的代碼庫中都使用了許多不同的排序技術(shù)和算法,在線組織大量數(shù)據(jù)。
排序算法,也就是輸入一系列未排序的數(shù)字,然后輸出排序后的數(shù)字
這些算法,都已成為計算機科學(xué)的基石。
如今我們的算法,都需要計算機科學(xué)家和程序員投入幾十年的研究去開發(fā)。
這是因為,現(xiàn)有的算法效率如此之高,再往前的每一步改進,都是重大的挑戰(zhàn)。
這個艱難程度就好比找到一種節(jié)省電力能源的新方法,或者找到更高效的數(shù)學(xué)方法。
尋找新算法
AlphaDev的創(chuàng)新意義在于,它并不是通過改進現(xiàn)有算法,而是完全從頭開始發(fā)現(xiàn)了更快的算法。
而且,它竟然著手于大多數(shù)人類并沒有想到的地方——計算機匯編指令。
匯編指令用于創(chuàng)建二進制代碼。雖然開發(fā)者寫代碼時用的是C++等高級語言,但為了讓計算機理解,這些高級語言必須翻譯成「低級」的匯編指令。
我們一般用C++之類的高級編程語言寫代碼,然后使用編譯器將其轉(zhuǎn)換為低級CPU指令,即匯編指令。匯編器再將匯編指令轉(zhuǎn)換為可執(zhí)行的機器代碼
谷歌DeepMind的研究者相信,在這個較低的層級中存在許多可改進的空間,而這些改進在更高級的編程語言中可能很難發(fā)現(xiàn)。
在這個更低的級別上,計算機的存儲和操作都更靈活,因此如果再多做一些潛在的改進,就會對速度和能源產(chǎn)生巨大的影響。
圖A:一個最多排序兩個元素的C++算法
圖B:代碼相應(yīng)的程序集
AlphaDev:匯編版AlphaZero
眾所周知,DeepMind的強化學(xué)習(xí)模型,在圍棋、國際象棋和將棋等游戲中,屢次擊敗世界冠軍。
而我們這次的主角——AlphaDev,基于的正是AlphaZero。
AlphaDev的工作方式與之前的AlphaZero相似,后者結(jié)合了計算機推理和直覺,在棋盤游戲中選擇每一步的走法。
只不過,AlphaDev并不會選擇下一步怎么走棋,而是選擇添加哪些指令。
為了訓(xùn)練AlphaDev來發(fā)現(xiàn)新的算法, DeepMind將排序問題轉(zhuǎn)化成了一個「匯編游戲」(Assembly Game)。
在每一輪中,AlphaDev都需要觀察它生成的算法以及中央處理器(CPU)中包含的信息,并通過在算法中添加一條指令來進行移動。
而這個匯編游戲非常困難,因為AlphaDev必須有效地搜索大量可能的指令組合,從而找到一個可以排序且比當(dāng)前最佳算法更快的算法。
其中「可能的指令組合」,甚至可以直接類比于宇宙中的粒子數(shù)量,或者國際象棋(10^120局)和圍棋(10^700局)中可能的走法組合。
更進一步的是,任何一個錯誤的移動,都可能會使整個算法無效。
最后,DeepMind會根據(jù)AlphaDev正確排序數(shù)字的能力以及完成排序的速度和效率給予獎勵,而AlphaDev則需要通過發(fā)現(xiàn)一個正確且更快的程序來贏得游戲。
圖A:匯編游戲。玩家AlphaDev以系統(tǒng)狀態(tài)st為輸入,并通過選擇一條匯編指令將其添加到已經(jīng)生成的算法中來進行一次移動。
圖B:獎勵計算。在每次移動后,生成的算法會接受測試,智能體將根據(jù)算法的正確性和響應(yīng)時間獲得獎勵。
具體來說,在進行深入思考(deliberation)時,AlphaZero會在每一個決策點琢磨下一步可能的行動,以及下一步的下一步的可能性。就像樹狀圖一樣,一步步往后推,算出哪些行動最有可能成功。
但問題在于,如果把每一個可能的情況分支都考慮到,所需的時間可能要比宇宙的年齡還長。因此,研究人員使用類似直覺(intuition)的東西來縮小范圍。
在每一步中,程序?qū)?dāng)前狀態(tài)輸入神經(jīng)網(wǎng)絡(luò)(一個復(fù)雜的、可調(diào)的數(shù)學(xué)函數(shù)),以找到最合適的行為。同時,在訓(xùn)練過程中,神經(jīng)網(wǎng)絡(luò)還會根據(jù)結(jié)果不斷進行更新。有時還會故意不選評分最高的行為來進行主動探索。
AlphaDev可以采取的行動一共有四種,包括比較不同值、移動數(shù)值到另一個位置、或者跳轉(zhuǎn)到程序的不同部分。
在執(zhí)行完每一步之后,再試圖對一組列表進行排序,并根據(jù)正確排序的列表中的數(shù)值數(shù)量獲得獎勵。
如此這般,這般如此,一直到排完整個列表,或者達到程序長度限制,從頭開始一個新的程序。
C++運行速度提升70%
AlphaDev發(fā)現(xiàn)新的排序算法,為LLVM libc++排序庫帶來了明顯的改進。
對于較短的序列,速度提高了70%,而對于超過250,000個元素的序列,速度只提高了約1.7%。
研究人員專注于改進3-5個元素較短的序列排序算法。
這些算法是使用最廣泛的算法之一,因為它們經(jīng)常作為更大排序函數(shù)的一部分被多次調(diào)用。
改進這些算法可以為任何數(shù)量的項目的排序提升整體的速度。
為了使新的排序算法為所有人可用,研究人員還將其進行了逆向工程,并將其翻譯成「程序猿」最常用的一種編碼語言C++。
目前,這些算法現(xiàn)在可以在LLVM libc++標(biāo)準(zhǔn)排序庫中找到。
散列函數(shù)效率提升30%
在發(fā)現(xiàn)更快的排序算法之后,DeepMind測試了AlphaDev是否能夠推廣并改進不同的計算機科學(xué)算法——散列(Hash)。
散列是計算中的一種基本算法,用于檢索、存儲和壓縮數(shù)據(jù)。就像圖書管理員使用分類系統(tǒng)來找到特定的書籍一樣,散列算法幫助用戶知道他們正在尋找的內(nèi)容以及確切的位置。
這些算法將特定的key(例如用戶姓名「Jane Doe」)進行散列處理,也就是,將原始數(shù)據(jù)轉(zhuǎn)換為唯一的字符串(例如1234ghfty)。然后,計算機會使用這個散列值來快速檢索與鍵相關(guān)的數(shù)據(jù),而不是搜索所有數(shù)據(jù)。
結(jié)果顯示,當(dāng)應(yīng)用于散列函數(shù)的9到16字節(jié)范圍時,AlphaDev發(fā)現(xiàn)的算法比傳統(tǒng)算法快30%。
現(xiàn)在,DeepMind也將新的散列算法發(fā)布到了開源的Abseil庫中。據(jù)了解,這個算法預(yù)計每天都會被使用數(shù)萬億次。
兩種新策略:「swap move」和「copy move」
AlphaDev不僅發(fā)現(xiàn)了更快的算法,還發(fā)現(xiàn)了新的方法。
它的排序算法包含新的指令序列,每次應(yīng)用時都會保存一條指令。這可能會產(chǎn)生巨大的影響,因為這些算法每天被使用數(shù)萬億次。
研究人員將其稱之為「AlphaDev swap move」和「AlphaDev copy move」。
最新方法讓人想起AlphaGo讓人震驚的「第37步」。
2016年那場人機大戰(zhàn)中,AlphaGo下了一顆違反人類直覺的棋,一個簡單的肩沖,擊敗了傳奇圍棋選手李世石。
通過這兩種策略,AlphaDev跳過了一個步驟,以一種看起來錯誤,但實際上是快捷方式連接項目。
這表明,AlphaDev有能力發(fā)現(xiàn)原創(chuàng)性解決方案,并挑戰(zhàn)了我們對如何改進計算機科學(xué)算法的思考方式。
如下圖示例原始sort3實現(xiàn),有min(A, B, C),使用AlphaDev Swap Move,AlphaDev發(fā)現(xiàn),你只需要min(A, B)。
再比如,原始實現(xiàn)用max(B, min(A ,C, D))中較大的排序算法對8個元素進行排序。
AlphaDev發(fā)現(xiàn)使用其「swap and copy moves」時只需要max(B, min(A, C))。
優(yōu)化全世界的代碼,一次一個算法
通過優(yōu)化和推出全球開發(fā)者使用的改進排序和散列算法,AlphaDev證明了,它有能力概括和發(fā)現(xiàn)世界級的新算法。
Google DeepMind認(rèn)為,AlphaDev是朝著開發(fā)AGI工具邁出的一步,這些工具有助于優(yōu)化整個計算生態(tài)系統(tǒng),還能解決其他有益于社會的問題。
不過,研究人員也承認(rèn),目前AlphaDev在低級匯編指令優(yōu)化能力非常強,但是隨著算法的發(fā)展也存在局限性。
為了讓開發(fā)者更可用,AlphaDev用高級語言(如C++)優(yōu)化算法的能力正在探索中。
AlphaDev的新發(fā)現(xiàn),如「AlphaDev swap move」和「AlphaDev copy move」,不僅表明它可以改進算法,還可以找到新的解決方案。
研究人員希望,這些發(fā)現(xiàn)能激勵研究人員和開發(fā)人員創(chuàng)造技術(shù)和方法,進一步優(yōu)化基礎(chǔ)算法,以創(chuàng)建一個更強大、更可持續(xù)的計算生態(tài)系統(tǒng)。
網(wǎng)友熱評
英偉達科學(xué)家Jim Fan對AlphaDev做了一個深度總結(jié):
排序算法是所有關(guān)鍵軟件的基礎(chǔ)。DeepMind的AlphaDev將小序列(3-5項)的排序速度提高了70%。要點:
- 主要的RL算法是基于最初下圍棋Go、Chess & Shogi的AlphaZero。同樣的想法也適用于搜索程序!
- 研究人員沒有對C代碼進行優(yōu)化,而是對匯編代碼進行優(yōu)化。這是一個刻意的選擇,去低級別的擠壓每一條指令的保存。
- 匯編代碼然后被逆向工程為C++,并在LLVM中開源。
- 即使表征網(wǎng)絡(luò)使用了Transformer,它也不是一個基礎(chǔ)模型。整個流程只適用于排序,對于其他任務(wù)如散列,必須重新訓(xùn)練。
在使用ML的算法發(fā)現(xiàn)方面取得了另一個重要的里程碑!
AlphaDev是DeepMind的一個改變游戲規(guī)則的人工智能,它創(chuàng)新了核心計算機科學(xué)算法。它正在重新構(gòu)想排序方法,短序列的速度可提高70%。甚至散列算法的發(fā)現(xiàn)速度提高了30%。強化學(xué)習(xí)正在重塑算法的格局!
還有網(wǎng)友稱,在我們對語言模型感到興奮之余,也不要忘記其他深度學(xué)習(xí)算法的成功故事:AlphaZero、AlphaFold,以及現(xiàn)在的AlphaDev。