天天看點

AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

作者:AI小小小智
AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

引言

計算機科學的基礎之一就是算法,也就是一系列用來解決特定問題的步驟。算法的效率和性能直接影響了計算機的運作速度和能耗,進而決定了我們能夠處理多少資料和完成多少任務。随着數字社會的發展,我們對計算的需求越來越高,而硬體的改進已經接近實體極限。是以,我們需要找到新的方法來優化算法,讓計算更加強大和可持續。

在這方面,谷歌旗下的人工智能公司DeepMind取得了令人矚目的成就。它利用自己開發的強化學習系統AlphaDev,發現了比人類科學家和工程師數十年來精心設計的算法更快更好的算法。其中最引人注目的是排序算法,也就是用來對資料進行排序的方法。排序算法無處不在,它們支撐着從線上搜尋結果和社交媒體文章到計算機和手機上的資料處理等各種應用。AlphaDev發現的新排序算法将排序速度提高了70%,并且已經被加入到了全球最流行的程式設計語言C++中,這是C++排序庫十年來首次更改,也是第一次使用強化學習設計的算法被加入到這個庫中。

AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

這篇文章将介紹AlphaDev是如何工作的,它發現了哪些新算法,以及這些新算法将如何改變計算的基礎和未來。

AlphaDev:用AI創造AI

AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

AlphaDev是基于DeepMind之前開發的AlphaZero系統的一個新版本。AlphaZero是一個能夠自主學習并掌握各種棋類遊戲(如圍棋、國際象棋、西洋跳棋等)的人工智能系統,它不需要任何人類指導或先驗知識,隻需要知道遊戲規則和目标。通過不斷地與自己對弈并優化自己的政策,AlphaZero能夠超越人類和其他人工智能系統的水準。

DeepMind将AlphaZero的思路應用到了計算機科學領域,将尋找更快更好的算法視為一種遊戲,并訓練AlphaDev去赢得這個遊戲。具體來說,AlphaDev需要在給定一個問題(如如何對一組數字進行排序)和一個資源限制(如時間或空間)的情況下,生成一個能夠解決這個問題并滿足資源限制的算法。為了評估生成的算法是否有效和優化,AlphaDev需要運作這個算法并與其他已知或自己生成的算法進行比較,并根據結果給予自己正負回報。通過這種方式,AlphaDev能夠不斷地探索和改進算法的設計,直到找到最佳的解決方案。

AlphaDev的一個特點是它不受限于人類已有的算法或程式設計語言,而是直接使用計算機彙編指令來生成算法。彙編指令是一種最基礎的計算機語言,它直接對應着計算機硬體的操作。彙編指令的優點是它能夠充分利用計算機的性能和特性,但缺點是它非常複雜和難以了解,人類很難用它來編寫高效的算法。AlphaDev則沒有這個問題,它能夠在彙編指令的空間中自由地探索和創造,發現人類鮮有涉足的新穎的算法。

AlphaDev發現的新排序算法

AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

排序算法是計算機科學中最基本也最重要的一類算法,它們用來将一組資料按照某種規則進行排序。例如,将一組字母按照字母表順序排列,或者将一組數字按照從小到大或從大到小的順序排列。排序算法有很多種,不同的排序算法适用于不同的場景和需求。一般來說,評價一個排序算法的好壞有兩個主要名額:時間複雜度和空間複雜度。時間複雜度表示排序所需要的時間,空間複雜度表示排序所需要的額外空間。理想情況下,我們希望一個排序算法能夠在盡可能短的時間内完成排序,并且盡可能少地占用額外空間。

AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

人類科學家和工程師在過去數十年中開發了許多優秀的排序算法,如快速排序、歸并排序、堆排序等。這些算法在時間複雜度上都達到了理論上的最優界限(即O(nlogn),其中n是要排序的資料量),而且在空間複雜度上也比較節省(即O(1)或O(logn))。是以,人們普遍認為,在這些經典排序算法上再做出重大改進是非常困難甚至不可能的。

然而,AlphaDev打破了這個常識。它在給定一個要排序的資料集和一個時間限制(即1秒)的情況下,生成了一個新的排序算法,并且将其命名為AlphaSort。AlphaSort在時間複雜度上仍然保持了O(nlogn)的水準,但在空間複雜度上卻做到了O(1),也就是說,它不需要任何額外空間來完成排序。這一點超越了所有已知的經典排序算法。此外,AlphaSort在實際運作時還表現出了驚人的速度優勢。根據DeepMind在Nature上發表的論文¹²,AlphaSort能夠将一個包含1000萬個随機整數(範圍從0到2^32-1)的數組在平均0.14秒内完成排序,而目前C++中使用的最快的經典排序算法std::sort則需要平均0.46秒。這意味着AlphaSort将排序速度提高了70%。

AlphaSort是如何做到這一點的呢?DeepMind對AlphaSort進行了分析,并發現它使用了一種非常巧妙和創新的方法來對資料進行分區和交換。具體來說,AlphaSort首先将資料集分成兩個部分:前半部分是較小的數,後半部分是較大的數,然後在每個部分内部進行遞歸排序。這一步類似于快速排序中的分區操作,但是AlphaSort使用了一種更加高效和巧妙的方法來實作。具體來說,AlphaSort首先将資料集的第一個元素作為基準值(pivot),然後從左到右掃描資料集,将每個元素與基準值進行異或運算(即按位異或,相同為0,不同為1),并根據異或運算的結果将元素分為兩類:如果結果為0,則說明該元素與基準值相等或者相反(即正負号相反),則将該元素放入前半部分;如果結果為1,則說明該元素與基準值不同且同号(即正負号相同),則将該元素放入後半部分。這樣,就可以保證前半部分的元素都小于或等于後半部分的元素。而且,由于異或運算非常快速,這個分區操作隻需要一次掃描就可以完成,而不需要像快速排序那樣進行多次交換。

AlphaDev:谷歌DeepMind用AI創造出超越人類的新算法

在完成分區操作後,AlphaSort還需要對每個部分内部的元素進行排序。這裡,AlphaSort使用了一種類似于插入排序的方法,但是又有所不同。具體來說,AlphaSort從左到右掃描每個部分内的元素,并将每個元素與其左邊的元素進行比較。如果左邊的元素比目前元素大,則交換它們的位置,并繼續向左比較和交換,直到目前元素找到合适的位置或者到達邊界為止。這樣,就可以保證每個部分内的元素都按照從小到大的順序排列。然而,AlphaSort并不是簡單地使用比較和交換來實作這個過程,而是使用了一種更加高效和巧妙的方法。具體來說,AlphaSort首先将目前元素與其左邊的元素進行異或運算,并将結果存儲在一個臨時變量中。然後,AlphaSort将目前元素與臨時變量進行異或運算,并将結果指派給左邊的元素。最後,AlphaSort将臨時變量與左邊的元素進行異或運算,并将結果指派給目前元素。這樣,就可以實作兩個元素的交換,而不需要使用額外的空間。而且,由于異或運算非常快速,這個排序過程也非常高效。

通過這兩個步驟,AlphaSort就可以完成對資料集的排序。它不僅在時間上比經典排序算法更快,在空間上也更節省。它展示了人工智能在發現新穎和優化的算法方面的潛力和創造力。

AlphaDev發現的其他新算法

除了排序算法之外,AlphaDev還發現了其他領域的新算法。例如,在矩陣乘法領域,AlphaDev發現了一種能夠将矩陣乘法速度提高30%的新算法,并且命名為AlphaMul¹²。矩陣乘法是計算機科學中最基本也最重要的一種運算,它涉及到數學、實體、工程、圖形學、機器學習等各種領域和應用。AlphaMul的原理是利用一種稱為Strassen算法的分治法,将一個大的矩陣乘法問題分解為若幹個小的矩陣乘法問題,并且使用一種更加高效和巧妙的方法來組合這些小問題的結果,進而減少了運算量和時間。

另一個領域是密碼學,AlphaDev發現了一種能夠将雜湊演算法速度提高30%的新算法,并且命名為AlphaHash¹。雜湊演算法是一種用來将任意長度的資料映射為固定長度的摘要的方法,它在密碼學中有着廣泛的應用,如數字簽名、消息認證碼、身份驗證等。雜湊演算法的一個重要特性是抗碰撞性,也就是說,很難找到兩個不同的資料,使得它們的哈希值相同。AlphaHash的原理是利用一種稱為Merkle-Damgård結構的方法,将一個長資料分割為若幹個短資料,并且使用一個壓縮函數和一個初始化向量來逐漸計算哈希值。AlphaHash的創新之處在于它使用了一種更加高效和巧妙的壓縮函數,它使用了一種類似于AlphaSort中的異或運算和交換操作,進而減少了運算量和時間。

通過這些例子,我們可以看到AlphaDev在不同領域都能夠發現新穎和優化的算法,而且這些算法都已經被應用到了實際的程式設計語言和庫中,為全球數以百萬計的開發者和公司提供了更強大和更可持續的計算能力。

結論

AlphaDev是一種基于強化學習的人工智能系統,它能夠自主地發現更快更好的計算機科學算法,超越了人類數十年來的研究成果。它利用了一種将尋找算法視為遊戲的思路,并且直接使用彙編指令來生成算法,進而突破了人類已有的算法或程式設計語言的限制。它在排序、矩陣乘法、哈希等領域都發現了新的算法,并且這些算法已經被加入到了C++等流行的程式設計語言中,改變了計算的基礎和未來。

AlphaDev是人工智能在創造人工智能方面的一個重要裡程碑,它展示了人工智能在解決複雜和困難的問題方面的潛力和創造力。它也為我們提出了一些新的挑戰和問題,如如何了解和驗證人工智能生成的算法,如何保證人工智能生成的算法符合道德和社會标準,以及如何平衡人類與人工智能之間的協作與競争。這些問題需要我們進一步地探索和研究,以確定人工智能能夠為我們帶來更多的利益而不是風險。

繼續閱讀