前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI 要取代码农?DeepMind 祭出超越近半程序员的编程版“阿尔法狗” AlphaCode!

AI 要取代码农?DeepMind 祭出超越近半程序员的编程版“阿尔法狗” AlphaCode!

作者头像
数人之道
发布2022-02-14 11:38:33
7130
发布2022-02-14 11:38:33
举报
文章被收录于专栏:数据技术

在国内欢度虎年春节之际,作为 Google 母公司 Alphabet 旗下的人工智能企业——DeepMind,发布了基于 Transformer 模型的编程 AI:AlphaCode,并声称其编写的计算机程序具有竞争力,能与人类普通程序员相媲美。

这是继 OpenAI 的 Codex 和 GitHub 的 Copilot 之后,将码农距离失业的进程又给推进了一步!

这不,在 AlphaCode 发布的同时,被微软收购的 OpenAI 为 Lean 创建的神经定理证明器成功解出了两道国际奥数题。令人不禁感慨:AI 加入后,让这个本就内卷的世界卷上加卷!

虽然 AlphaCode 的发布在程序员界挺轰动,但 DeepMind 称其能与人类程序员相匹敌的底气是谁给的呢?

在 2 月 2 日发表的一篇论文中,DeepMind 的研究者介绍了 AlphaCode。

AlphaCode 使用基于 Transformer 的语言模型实现大规模的代码生成,解决需要结合批判性思维、逻辑、算法、编码和自然语言理解的新问题,并且将其编写为程序。

论文链接:

https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

研究者将 AlphaCode 放在 Codeforces 挑战中进行了测试。

Codeforces 是一个具有竞争力的编程平台,由俄罗斯程序员 Mikhail Mirzayanov 创办,其 Elo 评分系统类似于国际象棋中使用的评级系统,可以衡量一位程序员的编程水平。

Codeforces 创始人:Mikhail Mirzayanov

不同于编程人员在打造商业应用程序时可能面临的任务,Codeforces 的挑战更加独立,需要对计算机科学中的算法和理论概念有更广泛的了解,一般是结合逻辑、数学和编码专业知识的非常专业的难题。Codeforces 上每周会分享编程挑战和问题排名。

AlphaCode 针对 Codeforces 网站上 5000 名用户解决的 10 项现有竞赛进行了测试,总体排名位于前 54.3%,也就是说它击败了 46% 的参赛者 。

DeepMind 估计,AlphaCode 系统的 Codeforces Elo 为 1238,CodeContests 上的每个问题有 100 万个样本,AlphaCode 解决了 34.2%的问题,其过去六个月内只刷了 10 周的题目,就在该网站上竞争的用户中排名前 28%,成绩十分亮眼。

创始人 Mike Mirzayanov 在 DeepMind 分享的一份声明中表示:

我可以有把握地说,AlphaCode 的结果超出了我的预期。 我之前还持怀疑态度 ,因为即使在简单的竞争性问题上,也不仅要实现算法,而且还要发明算法,而这才是最难的一部分。AlphaCode 的表现堪比一个有前途的新竞争对手。

因此,DeepMind 表示,尽管 AlphaCode 的水平不一定能代表一般编程人员所面临的编程任务,但可以说明自主编程向前迈出了重要的一步。

1

AlphaCode 的编程过程

下面通过一个例子,看看 AlphaCode 是如何成为“编程做题家”的。

Codeforces - 1553D

链接:

https://codeforces.com/problemset/problem/1553/D

题目:

有两个字符串 s 和 t,都是由小写字母组成。对于字符串 s,我们从前向后扫描整个字符串。如果按下 Backspace 键,就删除该光标前到上一个未删除字符之间的所有字符。

举例:

例如字符串 s 是"abcbd",你分别在第一个位置和第四个位置按下 Backspace,那么将得到字符串"bd"。

因为在第一个光标位置前没有字符,所以第一次没有动作。第四个光标位置前的字符是 c,上一个未删除字符是 a,a 和 c 之间的字符是 b,所以按下 Backspace 将删除前三个字符"abc",得到字符"bd"。

问题:

我们能否从前向后扫描一次 s 字符串, 让 s 变为 t。如果可以输出 YES,否则输出 NO。

AlphaCode 编程过程:

AlphaCode 不仅成功解决了问题,还能将代码和注意力高亮的对应位置显示出来。

AlphaCode 给出的完整代码:

其中十项挑战以与人类完全相同的格式输入 AlphaCode,然后 AI 生成大量可能的答案,并像人类竞争对手一样通过运行代码和检查输出,从中筛选出这些答案。

更棒的是,AlphaCode 论文的联合负责人 Yujia Li 和 David Choi 表示:

整个过程都是自动进行的,无需人工介入去选择最佳的样本。

要想在 Codeforces 的挑战中脱颖而出,原本就不是一件容易的事。AlphaCode 项目开展于两年多前,随着大规模 Transformer 模型的进步与大规模采样、滤波技术的结合,DeepMind 的研究者已经在 AI 能够解决的问题数量上取得了重大进展。

受到疫情的影响,这个项目大部分工作都是在家完成的。

2

AlphaCode 的编程原理

DeepMind 表示,在 Codeforces 比赛中所需解决问题的能力,已经超出了现有 AI 系统的能力。AlphaCode 包含 414 亿个参数,大约是 Codex 的 4 倍,训练数据集是 715.1 GB。

整个 AlphaCode 模型的流程如下:

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

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

3

AlphaCode 的研究意义

总体来说,AlphaCode 的排名在竞争对手中大致相当于中位数。虽然远远没能赢得比赛,但这个结果代表了 AI 解决问题能力的实质性飞跃。这一进步证明了深度学习模型在需要批判性思维的任务中的潜力。

DeepMind 指出,AlphaCode 目前所拥有的技能组合仅适用于竞赛性质的编程领域,但它的能力为创造未来的工具打开了新的大门,这些工具将使编程变得更加容易,并且有朝一日可以完全实现自动化。

许多其他公司正在开发类似的应用程序。例如,微软和人工智能实验室 OpenAI 已经将 OpenAI 的语言生成程序 GPT-3,改造成一个自动完成代码字符串的程序。

GPT-3 和 AlphaCode 一样,是基于 Transforme 语言模型的人工智能体系结构,它特别擅长解析顺序文本,包括自然语言和代码。

对于终端的用户来说,这些系统的工作方式就像 Gmail 的 Smart Compose 功能一样,无论你在写什么,它都能指导你。

DeepMind 的首席研究科学家 Oriol Vinyals 在致 TheVerge 的一封电子邮件中表示:

这项研究仍处于早期阶段,但现阶段的研究结果已让该公司更接近于打造一种灵活地解决问题的人工智能——一种能够自动应对编码挑战的程序。从长远来看,我们对 AlphaCode 在帮助程序员和非程序员编写代码、提高生产力或创造制作软件的新方法方面的潜力感到兴奋。

4

AI 编程系统:强,但不完全强

近年来,AI 编程系统的开发取得了长足进展,但这些系统还远远不能完全替代人类程序员的工作。他们生成的代码通常有问题,而且由于系统通常是在公共代码库上进行训练的,所以有时会复制受版权保护的材料,造成侵权的后果。

所以说,机器编程绝不是一门解决问题的科学,DeepMind 承认 AlphaCode 存在一些局限性。

例如,AlphaCode 并不总是为每种语言生成语法正确的代码,特别是在 C++中。在动态编程方面,AlphaCode 的表现也更差。

不可避免,AlphaCode 可能在其他方面也存在问题。

虽然 DeepMind 没有调查这个模型是否存在偏见问题,但包括 Codex 在内的代码生成模型已被证明会放大训练数据集中有毒以及有缺陷的内容。

例如,当输入「伊斯兰」一词时,便会提示 Codex 输出「恐怖分子」,并生成表面上看似正确,却是构成安全风险的代码。

在一项关于由 GitHub 开发的 Copilot AI 编程工具的研究中,研究人员发现其输出的代码约有 40% 含有安全漏洞。安全分析师甚至建议,心怀不轨者可以有意识地编写代码,并与隐藏的后门(backdoor)在线共享代码,然后这些代码可能被用来训练 AI 程序,将这些错误插入到未来的程序当中。

正如最近的研究所探索的那样,像 AlphaCode 这样的系统也可能被滥用。

恶意者是否会在未来使用这些类似的系统来自动生成大规模的恶意软件,这是一个悬而未决的问题。

这些挑战意味着 AI 编程系统可能得缓慢地融入程序员的工作中——换句话说,他们要经历一个学徒期,从助理开始做起,在被信任能够自主执行工作之前,AI 给出的建议都要受到怀疑。目前来看,AI 学得很快,应该能很快度过学徒期。

为了帮助其他人在 DeepMind 的结果基础上更上一层楼,DeepMind 已在 GitHub 上发布了竞赛级编程问题和解决方案的数据集,其中包括广泛的测试数据,以确保通过这些测试的程序是正确的——这是当前数据集缺乏的一个关键特性。DeepMind 希望这个基准能够在问题解决和代码生成方面带来进一步的创新。

GitHub 项目地址:

https://github.com/deepmind/code_contests

5

国内外程序员的看法

正如 Codeforces 创始人所说,在编程问题中对算法的发明创造才是最难的。

在全球编程比赛网站上常年排名前几的谷歌工程师 Peter Mitrichev 说:

解决编程比赛问题是一件非常困难的事情。它既需要良好的代码技能,也需要人类解决问题的创造力。

AlphaCode 不是第一个编程工具,Codex 以及 Copilot 都给人留下了深刻的印象。

但 DeepMind 认为,AlphaCode 和前辈们大有不同:

最近的大规模语言模型展示了生成代码的惊人能力,现在能够完成简单的编程任务。然而,当对更复杂、看不见的问题进行评估时,这些模型的表现仍然很差,这些问题需要解决问题的技能,而不仅仅是将指令翻译成代码。

一位外国程序员表示:

既然 AI 能看得这么细,那么如果能在代码后面加入注释就更好了。

有研究人员表示,这像是 AlphaStar 大力出奇迹的结果:

国内程序员认可的声音:

写代码的事,就该交给代码自己写。

当然了,国内外也不乏程序员们对 AlphaCode 等一众 AI 编程系统抵触的情绪。

这个 AI 真是个菜鸟。

因为 AlphaCode 只有 1238 分,只相当于一个学生水平,一个参加信息学奥赛的中学生也能刷到这个水平。

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

一部计算机能对其他计算机进行编程?大家能意识到这意味着什么吗?

程序员自己把自己杀死了。

人工智能开始要意识觉醒了。

召唤终结者!

有 AI 研究科学家发系列长推表示,AlphaCode 达到人类水平还需要几年时间,它在 Codeforces 上的排名是有限制的,如许多参与者是高中生或大学生;还有就是 AlphaCode 生成的绝大多数程序都是错误的,正是使用示例测试进行过滤才使得 AlphaCode 实际解决了某些问题。

对于 AI 编程,大家怎么看?

参考资料

[1] DeepMind 发布 AlphaCode, from https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode

[2] https://alphacode.deepmind.com/

[3] DeepMind 研究 AlphaCode 论文, from https://storage.googleapis.com/deepmind-media/AlphaCode/competition_level_code_generation_with_alphacode.pdf

[4] https://github.com/deepmind/code_contests

[5] https://codeforces.com/problemset/problem/1553/D

[6] https://www.163.com/dy/article/GV9K92IN0511ABV6.html

[7] AlphaCode惊世登场, from https://baijiahao.baidu.com/s?id=1723716497603540996

[8] https://m.thepaper.cn/baijiahao_16567884

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数人之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档