2022年2月2日, 在我们欢度春节之时, DeepMind 发布了基于 Transformer 模型的 AlphaCode,可以编写与人类相媲美的计算机程序

研究者将 AlphaCode 放在 Codeforces 挑战中进行了测试,Codeforces是一个由俄罗斯程序员Mikhail Mirzayanov创办的编程竞赛网站,大约每周举行一次名为“Codeforces Rounds”的编程比赛。 通过Codeforces的Elo评分可以衡量一位程序员的编程水平。AlphaCode 针对 Codeforces 网站上 5000 名用户解决的 10 项挑战进行了测试,总体排名位于前 54.3%,也就是说它击败了 46% 的参赛者 。CodeContests 上的每个问题有100万个样本,AlphaCode解决了34.2%的问题。 DeepMind 声称,就总体性能而言,在过去6个月参加过比赛的用户中,AlphaCode的数据排到了前28%。
当看到AlphaCode的成绩后,连创始人Mirzayanov都惊讶不已。 他原本对AI持怀疑态度,因为编程比赛考验的是发明算法的能力,这是最困难的,没想到AlphaCode的结果完全超出了他的预期。

DeepMind说,在Codeforces比赛中所需解决问题的能力,已经超出了现有AI系统的能力。

整个AlphaCode模型的流程如下:

  1. 用标准的语言建模目标在GitHub代码上预训练一个基于Transformer的语言模型。这个模型可以合理地代表人类编写代码的空间,大大减少了问题的搜索空间。
  2. 在竞争性编程数据集上微调模型,使用GOLD与tempering作为训练目标,进一步减少了搜索空间,并利用预训练弥补了少量的竞争性编程数据。
  3. 为每个问题从模型中生成非常多的样本。
  4. 对样本进行过滤,以获得一小部分候选提交的样本(最多10个),在隐藏的测试案例上进行评估,方法是利用实例测试和聚类,根据程序行为挑选样本。

总而言之,通过将大规模Transformer模型与大规模采样和过滤相结合,DeepMind在可以解决的问题数量方面取得了重大进展,比之前的工作高出一个数量级。

远韬对此成就羡慕不已,自动化编程是远韬的主要研发方向,目前仍处于编译器元编程(meta programming)模型研究阶段,与国外同业的差距很大,需要奋起直追。