决定学习哪种编程语言对当今的开发人员来说是一个大问题,因为这需要投入大量时间。 但在未来,人工智能 (AI) 模型通过理解问题的描述和编写解决方案来完成所有繁重的工作,这个问题可能会变得多余。
谷歌专注于人工智能的部门 DeepMind 的研究人员声称其 AlphaCode 系统可以用代码表达问题的解决方案,这些代码在新程序员参加的编程竞赛中获得中等分数。 这些竞赛要求人类理解用自然语言描述的问题,然后高效地编写算法代码。
在一篇新的非同行评审论文中,DeepMind 研究人员详细介绍了 AlphaCode 如何在之前举办的 10 场编程竞赛中平均排名前 54.3%,参赛人数超过 5000 人。 比赛在Codeforces代码竞赛平台上举办。
参见:随着需求激增,雇主迫切需要数据科学家
DeepMind 声称 AlphaCode 是第一个 AI 代码生成系统,在人类开发人员的代码竞赛中表现出竞争水平。 该研究可以提高程序员的生产力,并可以帮助非程序员在不知道如何编写代码的情况下表达解决方案。
因此,人类参赛者和 AlphaCode 需要解析对挑战或谜题的描述,并快速编写程序来解决它们。 这比使用 GitHub 数据训练模型来解决简单的编码挑战更困难。
与人类一样,AlphaCode 需要理解问题的多段自然语言描述、背景叙述细节以及在输入和输出方面对所需解决方案的描述。
为了解决这个问题,竞争对手需要创建一个算法,然后有效地实施该算法,这可能需要他们选择一种更快的编程语言,比如 C++ 而不是 Python 来克服这些限制。
AlphaCode 的预训练数据集包括 715 GB 的代码,这些代码取自 GitHub 存储库中使用 C++、C#、Go、Java、JavaScript/TypeScript、Lua、Python、PHP、Ruby、Rust 和 Scala 编写的文件。 该团队使用从 Codeforces 和类似数据集中收集的竞争性编程问题数据集对模型进行了微调。
DeepMind 给 AlphaCode 的提升是通过结合大规模的 Transformer 模型实现的。 这方面的例子包括 OpenAI 的 GPT-3 和谷歌的 BERT 语言模型。 DeepMind 使用基于转换器的语言模型生成代码,然后将输出过滤为一小组提交评估的“有前途的程序”。
“在评估时,我们为每个问题创建了大量的 C++ 和 Python 程序,比以前的工作大几个数量级,”DeepMind 的 AlphaCode 团队在一篇博文中解释道。
“然后我们将这些解决方案过滤、聚类并重新排序为我们提交给外部评估的一小组 10 个候选程序。这个自动化系统取代了竞争对手调试、编译、通过测试并最终 提交。”
DeepMind 在此处演示了 AlphaCode 如何为给定问题编写解决方案。
DeepMind 考虑了它试图实现的目标的一些潜在缺点。 例如,模型可以生成具有可利用弱点的代码,包括“来自过时代码的无意漏洞或恶意行为者有意注入训练集中的漏洞”。
SEE:Web 开发人员或 CTO,哪些技术职位的薪水增长最快?
此外,还有环境成本。 在谷歌的数据中心训练模型需要“数百 petaFLOPS 天”。 但从长远来看,人工智能代码生成“可能会导致系统能够递归地编写和改进自己,从而迅速导致越来越先进的系统。”
自动化存在降低对开发人员需求的风险,但 DeepMind 指出当今代码完成工具的局限性,这些工具极大地提高了编程生产力,但直到最近还仅限于单行建议并仅限于某些语言或短代码片段。
然而,DeepMind 强调它的工作远未对人类程序员构成威胁,但它的系统需要能够开发解决问题的能力来帮助人类。
“我们对代码生成的探索留下了巨大的改进空间,并暗示了更多令人兴奋的想法,这些想法可以帮助程序员提高他们的生产力,并为目前不编写代码的人打开这个领域,”DeepMind 研究人员说。