今天,DeepMind 的“Alpha”家族再添一名新成员:会刷编程竞赛题的 AlphaCode 来了!
其实,AlphaCode 早在几个月前就“悄悄进村”了,一直没人察觉。它默默参加了著名网站 Codeforces 最近举行的 10 场编程比赛,成绩超过了一半人类。 6park.com
6park.com直到今天 DeepMind 才公布最终成绩:AlphaCode 在这 10 场比赛中排名前 54.3%,Elo 评分 1238。 6park.com
更重要的是,在编程比赛这样考察算法创造力的问题中,AI 终于不落下风,而这恰恰是 AI 过去所欠缺的。 6park.com
如果把这个分数放到过去六个月总体来看,AlphaCode 的成绩更为优秀,因为它只刷了 10 周的题目,就已经达到了前 28% 用户的水平。 6park.com
6park.comCodeforces 是一个由俄罗斯程序员 Mikhail Mirzayanov 创办的编程竞赛网站,大约每周举行一次名为“Codeforces Rounds”的编程比赛。 6park.com
通过 Codeforces 的 Elo 评分可以衡量一位程序员的编程水平。 6park.com
6park.com△ Codeforces 创始人 Mikhail Mirzayanov 6park.com当看到 AlphaCode 的成绩后,连创始人 Mirzayanov 都惊讶不已。 6park.com
他原本对 AI 持怀疑态度,因为编程比赛考验的是发明算法的能力,这是最困难的,没想到 AlphaCode 的结果完全超出了他的预期。 6park.com
DeepMind 发布这条消息仅半天,在 Twitter 上已经有 2000 多次转发、5000 多点赞。 6park.com
6park.comAlphaCode 如何编程 6park.com
说了这么多,下面我们来看看 AlphaCode 是如何成为“编程做题家”的。 6park.com
以下是 Codeforces 上的 1553D 问题:(链接:https://codeforces.com/ problemset / problem / 1553 / D) 6park.com
有两个字符串 s 和 t,都是由小写字母组成。对于字符串 s,我们从前向后扫描整个字符串。 6park.com
如果按下 Backspace 键,就删除该光标前到上一个未删除字符之间的所有字符。 6park.com
例如字符串 s 是”abcbd”,你分别在第一个位置和第四个位置按下 Backspace,那么将得到字符串”bd”。 6park.com
因为在第一个光标位置前没有字符,所以第一次没有动作。第四个光标位置前的字符是 c,上一个未删除字符是 a,所以按下 Backspace 将删除前三个字符”bd”。 6park.com
好了,现在问题来了: 6park.com
我们能否从前向后扫描一次 s 字符串, 让 s 变为 t。如果可以输出 YES,否则输出 NO。 6park.com
AlphaCode 给出的代码是这样的: 6park.com
6park.com向以上程序输入 4 组字符串: 6park.com
6park.com得到的输出是: 6park.com
6park.com在这里,AlphaCode不再是黑箱。 6park.com
它不仅成功解决了问题,还能将代码和注意力高亮的对应位置显示出来。 6park.com
6park.com一位网友表示:既然 AI 能看得这么细,那么如果能在代码后面加入注释就更好了。 6park.com
6park.com至于更多的案例,可以去 AlphaCode 网站观摩。 6park.com
原理 6park.com
DeepMind 说,在 Codeforces 比赛中所需解决问题的能力,已经超出了现有 AI 系统的能力。 6park.com
整个 AlphaCode 模型的流程如下: 6park.com
6park.com用标准的语言建模目标在 GitHub 代码上预训练一个基于 Transformer 的语言模型。这个模型可以合理地代表人类编写代码的空间,大大减少了问题的搜索空间。 6park.com
在竞争性编程数据集上微调模型,使用 GOLD 与 tempering 作为训练目标,进一步减少了搜索空间,并利用预训练弥补了少量的竞争性编程数据。 6park.com
为每个问题从模型中生成非常多的样本。 6park.com
对样本进行过滤,以获得一小部分候选提交的样本(最多 10 个),在隐藏的测试案例上进行评估,方法是利用实例测试和聚类,根据程序行为挑选样本。 6park.com
总而言之,通过将大规模 Transformer 模型与大规模采样和过滤相结合,DeepMind 在可以解决的问题数量方面取得了重大进展,比之前的工作高出一个数量级。 6park.com
刷题人士抵触 6park.com
正如 Codeforces 创始人所说,在编程问题中对算法的发明创造是最难的。 6park.com
在全球编程比赛网站上常年排名前几的谷歌工程师 Petr Mitrichev 说:解决编程比赛问题是一件非常困难的事情。它既需要良好的代码技能,也需要人类解决问题的创造力。 6park.com
AlphaCode 不是第一个编程工具,Codex 以及 GitHub Copilot 都给人留下了深刻的印象。 6park.com
但 DeepMind 认为,AlphaCode 和前辈们大有不同:最近的大规模语言模型展示了生成代码的惊人能力,现在能够完成简单的编程任务。然而,当对更复杂、看不见的问题进行评估时,这些模型的表现仍然很差,这些问题需要解决问题的技能,而不仅仅是将指令翻译成代码。 6park.com
与 Twitter 上截然不同的是,Codeforces 高手们却多有抵触情绪。 6park.com
一位程序员认为:“这个 AI 真是个菜鸟。” 6park.com
6park.com因为 AlphaCode 只有1238分,只相当于一个学生水平,一个参加信息学奥赛的中学生也能刷到这个水平。 6park.com
虽然 DeepMind 声称 AlphaCode 是为了辅助人类,但也有程序员开始担心了: 6park.com
6park.com现在连刷题的世界都被AI占领,本来这里是程序员们切磋的地方,AI应该适可而止,给程序员们留一片净土吧!