Google|AlphaCode惊世登场!编程版“阿法狗”悄悄参赛,击败一半程序员( 二 )


YESNONOYES
在这里 , AlphaCode不再是黑箱 。
它不仅成功解决了问题 , 还能将代码和注意力高亮的对应位置显示出来 。

一位网友表示:既然AI能看得这么细 , 那么如果能在代码后面加入注释就更好了 。

至于更多的案例 , 可以去AlphaCode网站观摩 。
原理DeepMind说 , 在Codeforces比赛中所需解决问题的能力 , 已经超出了现有AI系统的能力 。
整个AlphaCode模型的流程如下:

  1. 用标准的语言建模目标在GitHub代码上预训练一个基于Transformer的语言模型 。 这个模型可以合理地代表人类编写代码的空间 , 大大减少了问题的搜索空间 。
  2. 在竞争性编程数据集上微调模型 , 使用GOLD与tempering作为训练目标 , 进一步减少了搜索空间 , 并利用预训练弥补了少量的竞争性编程数据 。
  3. 为每个问题从模型中生成非常多的样本 。
  4. 对样本进行过滤 , 以获得一小部分候选提交的样本(最多10个) , 在隐藏的测试案例上进行评估 , 方法是利用实例测试和聚类 , 根据程序行为挑选样本 。
总而言之 , 通过将大规模Transformer模型与大规模采样和过滤相结合 , DeepMind在可以解决的问题数量方面取得了重大进展 , 比之前的工作高出一个数量级 。
刷题人士抵触正如Codeforces创始人所说 , 在编程问题中对算法的发明创造是最难的 。
在全球编程比赛网站上常年排名前几的谷歌工程师Petr Mitrichev说:

解决编程比赛问题是一件非常困难的事情 。 它既需要良好的代码技能 , 也需要人类解决问题的创造力 。
AlphaCode不是第一个编程工具 , Codex以及GitHub Copilot都给人留下了深刻的印象 。
但DeepMind认为 , AlphaCode和前辈们大有不同:
最近的大规模语言模型展示了生成代码的惊人能力 , 现在能够完成简单的编程任务 。 然而 , 当对更复杂、看不见的问题进行评估时 , 这些模型的表现仍然很差 , 这些问题需要解决问题的技能 , 而不仅仅是将指令翻译成代码 。
与Twitter上截然不同的是 , Codeforces高手们却多有抵触情绪 。
一位程序员认为:“这个AI真是个菜鸟 。 ”

因为AlphaCode只有1238分 , 只相当于一个学生水平 , 一个参加信息学奥赛的中学生也能刷到这个水平 。
虽然DeepMind声称AlphaCode是为了辅助人类 , 但也有程序员开始担心了:

现在连刷题的世界都被AI占领 , 本来这里是程序员们切磋的地方 , AI应该适可而止 , 给程序员们留一片净土吧!