數(shù)據(jù)排序是計(jì)算機(jī)的基本功能之一,用于按照字母順序或者數(shù)字大小來排列數(shù)據(jù)。目前已經(jīng)有很多不同的排序算法,但是由于經(jīng)過幾十年的優(yōu)化,人類很難再有創(chuàng)新。
AlphaDev 的設(shè)計(jì)目標(biāo)是發(fā)現(xiàn)新的算法來完成給定的任務(wù),并且盡量超越現(xiàn)有的方法。它不是對(duì)當(dāng)前的算法進(jìn)行微調(diào),而是從零開始構(gòu)建。其使用了一種叫做匯編代碼的中間語言,這種語言比人類編寫的代碼更接近計(jì)算機(jī)的二進(jìn)制指令,也更容易讓 AlphaDev 創(chuàng)造出更高效的算法。
AlphaDev 每次生成一個(gè)指令,然后測(cè)試它的輸出是否正確,同時(shí)還要求生成最短的算法。DeepMind 表示,這項(xiàng)任務(wù)難度非常大,因?yàn)榭赡艿闹噶罱M合數(shù)量非常龐大。
當(dāng)被要求創(chuàng)建一個(gè)排序算法時(shí),AlphaDev 驚人地發(fā)現(xiàn)了一種比最好的算法快 70% 的方法,用于對(duì)五個(gè)數(shù)據(jù)進(jìn)行排序。即使對(duì) 25 萬個(gè)數(shù)據(jù)進(jìn)行排序,它也能比最好的算法快 1.7%。
“我們一開始以為它出錯(cuò)了或者有什么 bug,但是當(dāng)我們分析了這個(gè)程序,我們意識(shí)到 AlphaDev 真的發(fā)現(xiàn)了一種更快的方法。”DeepMind 的 Daniel Mankowitz 說。
由于排序算法被廣泛應(yīng)用于各種常用軟件中,這一改進(jìn)可能會(huì)對(duì)全球計(jì)算產(chǎn)生重大影響。DeepMind 已經(jīng)將它們開源,并且加入了一個(gè)叫做 Libc++ 的常用代碼庫,這意味著任何人都可以立即使用它們,這是這個(gè)代碼庫中排序算法部分十多年來第一次更新。
Mankowitz 說,由于物理極限,摩爾定律(IT之家注:即芯片性能定期翻倍)即將終結(jié),但是 AlphaDev 可能能夠通過提高效率來彌補(bǔ)這一點(diǎn)。
英國伯明翰大學(xué)的 Mark Lee 說,AlphaDev 很有趣,即使 1.7% 的速度提升也很有用。但他說,對(duì)這種方法能否彌補(bǔ)摩爾定律終結(jié)持懷疑態(tài)度,因?yàn)樗惶赡茉诟鼜?fù)雜的軟件中取得同樣的進(jìn)步。