今天,DeepMind 的“Alpha”家族再添一名新成員:會刷編程競賽題的 AlphaCode 來了!
其實(shí),AlphaCode 早在幾個月前就“悄悄進(jìn)村”了,一直沒人察覺。它默默參加了著名網(wǎng)站 Codeforces 最近舉行的 10 場編程比賽,成績超過了一半人類。
直到今天 DeepMind 才公布最終成績:AlphaCode 在這 10 場比賽中排名前 54.3%,Elo 評分 1238。
更重要的是,在編程比賽這樣考察算法創(chuàng)造力的問題中,AI 終于不落下風(fēng),而這恰恰是 AI 過去所欠缺的。
如果把這個分?jǐn)?shù)放到過去六個月總體來看,AlphaCode 的成績更為優(yōu)秀,因?yàn)樗凰⒘?10 周的題目,就已經(jīng)達(dá)到了前 28% 用戶的水平。
Codeforces 是一個由俄羅斯程序員 Mikhail Mirzayanov 創(chuàng)辦的編程競賽網(wǎng)站,大約每周舉行一次名為“Codeforces Rounds”的編程比賽。
通過 Codeforces 的 Elo 評分可以衡量一位程序員的編程水平。
△ Codeforces 創(chuàng)始人 Mikhail Mirzayanov
當(dāng)看到 AlphaCode 的成績后,連創(chuàng)始人 Mirzayanov 都驚訝不已。
他原本對 AI 持懷疑態(tài)度,因?yàn)榫幊瘫荣惪简?yàn)的是發(fā)明算法的能力,這是最困難的,沒想到 AlphaCode 的結(jié)果完全超出了他的預(yù)期。
DeepMind 發(fā)布這條消息僅半天,在 Twitter 上已經(jīng)有 2000 多次轉(zhuǎn)發(fā)、5000 多點(diǎn)贊。
AlphaCode 如何編程
說了這么多,下面我們來看看 AlphaCode 是如何成為“編程做題家”的。
以下是 Codeforces 上的 1553D 問題:(鏈接:https://codeforces.com/ problemset / problem / 1553 / D)
有兩個字符串 s 和 t,都是由小寫字母組成。對于字符串 s,我們從前向后掃描整個字符串。
如果按下 Backspace 鍵,就刪除該光標(biāo)前到上一個未刪除字符之間的所有字符。
例如字符串 s 是”abcbd”,你分別在第一個位置和第四個位置按下 Backspace,那么將得到字符串”bd”。
因?yàn)樵诘谝粋€光標(biāo)位置前沒有字符,所以第一次沒有動作。第四個光標(biāo)位置前的字符是 c,上一個未刪除字符是 a,所以按下 Backspace 將刪除前三個字符”bd”。
好了,現(xiàn)在問題來了:
我們能否從前向后掃描一次 s 字符串, 讓 s 變?yōu)?t。如果可以輸出 YES,否則輸出 NO。
AlphaCode 給出的代碼是這樣的:
向以上程序輸入 4 組字符串:
得到的輸出是:
在這里,AlphaCode不再是黑箱。
它不僅成功解決了問題,還能將代碼和注意力高亮的對應(yīng)位置顯示出來。
一位網(wǎng)友表示:既然 AI 能看得這么細(xì),那么如果能在代碼后面加入注釋就更好了。
至于更多的案例,可以去 AlphaCode 網(wǎng)站觀摩。
原理
DeepMind 說,在 Codeforces 比賽中所需解決問題的能力,已經(jīng)超出了現(xiàn)有 AI 系統(tǒng)的能力。
整個 AlphaCode 模型的流程如下:
用標(biāo)準(zhǔn)的語言建模目標(biāo)在 GitHub 代碼上預(yù)訓(xùn)練一個基于 Transformer 的語言模型。這個模型可以合理地代表人類編寫代碼的空間,大大減少了問題的搜索空間。
在競爭性編程數(shù)據(jù)集上微調(diào)模型,使用 GOLD 與 tempering 作為訓(xùn)練目標(biāo),進(jìn)一步減少了搜索空間,并利用預(yù)訓(xùn)練彌補(bǔ)了少量的競爭性編程數(shù)據(jù)。
為每個問題從模型中生成非常多的樣本。
對樣本進(jìn)行過濾,以獲得一小部分候選提交的樣本(最多 10 個),在隱藏的測試案例上進(jìn)行評估,方法是利用實(shí)例測試和聚類,根據(jù)程序行為挑選樣本。
總而言之,通過將大規(guī)模 Transformer 模型與大規(guī)模采樣和過濾相結(jié)合,DeepMind 在可以解決的問題數(shù)量方面取得了重大進(jìn)展,比之前的工作高出一個數(shù)量級。
刷題人士抵觸
正如 Codeforces 創(chuàng)始人所說,在編程問題中對算法的發(fā)明創(chuàng)造是最難的。
在全球編程比賽網(wǎng)站上常年排名前幾的谷歌工程師 Petr Mitrichev 說:解決編程比賽問題是一件非常困難的事情。它既需要良好的代碼技能,也需要人類解決問題的創(chuàng)造力。
AlphaCode 不是第一個編程工具,Codex 以及 GitHub Copilot 都給人留下了深刻的印象。
但 DeepMind 認(rèn)為,AlphaCode 和前輩們大有不同:最近的大規(guī)模語言模型展示了生成代碼的驚人能力,現(xiàn)在能夠完成簡單的編程任務(wù)。然而,當(dāng)對更復(fù)雜、看不見的問題進(jìn)行評估時,這些模型的表現(xiàn)仍然很差,這些問題需要解決問題的技能,而不僅僅是將指令翻譯成代碼。
與 Twitter 上截然不同的是,Codeforces 高手們卻多有抵觸情緒。
一位程序員認(rèn)為:“這個 AI 真是個菜鳥?!?/p>
因?yàn)?AlphaCode 只有1238分,只相當(dāng)于一個學(xué)生水平,一個參加信息學(xué)奧賽的中學(xué)生也能刷到這個水平。
雖然 DeepMind 聲稱 AlphaCode 是為了輔助人類,但也有程序員開始擔(dān)心了:
現(xiàn)在連刷題的世界都被AI占領(lǐng),本來這里是程序員們切磋的地方,AI應(yīng)該適可而止,給程序員們留一片凈土吧!
關(guān)鍵詞: 編程 alphacode 程序員 代碼 字符 模型 codeforces deepmind 字符串 ai
網(wǎng)站首頁 |網(wǎng)站簡介 | 關(guān)于我們 | 廣告業(yè)務(wù) | 投稿信箱
Copyright © 2000-2020 www.sgycos.com All Rights Reserved.
中國網(wǎng)絡(luò)消費(fèi)網(wǎng) 版權(quán)所有 未經(jīng)書面授權(quán) 不得復(fù)制或建立鏡像
聯(lián)系郵箱:920 891 263@qq.com