github地址:数据集,方案。
简洁版:
transformer做的,超过54%的人类程序员(包括我),远程面试coding规则估计要改了
不知道transformer 的看下面这俩
懒汉机翻版:
为不可预见的问题创造解决方案是人类智能的第二天性——这是基于经验的批判性思维的结果。机器学习社区在生成和理解文本数据方面取得了巨大进步,但解决问题的进步仍然局限于相对简单的数学和编程问题,或者检索和复制现有解决方案。作为 DeepMind 解决智能任务的一部分,我们创建了一个名为 AlphaCode 的系统,该系统可以编写具有竞争力的计算机程序。 AlphaCode 通过解决需要批判性思维、逻辑、算法、编码和自然语言理解相结合的新问题,在编程竞赛的参与者中估计排名前 54%。
在我们的预印本中,我们详细介绍了 AlphaCode,它使用基于转换器的语言模型以前所未有的规模生成代码,然后巧妙地过滤成一小部分有前途的程序。
我们使用 Codeforces 上举办的比赛验证了我们的表现,这是一个流行的平台,定期举办比赛,吸引来自世界各地的成千上万的参与者来测试他们的编码技能。我们选择了 10 个最近的比赛进行评估,每个比赛都比我们的训练数据更新。 AlphaCode 处于中位竞争对手的水平,标志着 AI 代码生成系统首次在编程竞赛中达到具有竞争力的性能水平。
为了帮助其他人在我们的结果基础上再接再厉,我们将在 GitHub 上发布我们的竞争性编程问题和解决方案数据集,其中包括大量测试,以确保通过这些测试的程序是正确的——这是当前数据集缺乏的关键特性。我们希望这个基准能够在问题解决和代码生成方面带来进一步的创新。
问题来自 Codeforces,解决方案由 AlphaCode 生成。
竞争性编程是一项受欢迎且具有挑战性的活动;成千上万的程序员参加编码竞赛以获取经验并以有趣和协作的方式展示他们的技能。在比赛期间,参赛者会收到一系列冗长的问题描述和几个小时的时间来编写程序来解决这些问题。典型的问题包括寻找将道路和建筑物置于特定限制范围内的方法,或制定策略来赢得定制棋盘游戏。然后主要根据参与者解决的问题数量对参与者进行排名。公司将这些竞赛用作招聘工具,类似的问题在软件工程师的招聘过程中很常见。
在这些比赛中脱颖而出所需的解决问题的能力超出了现有人工智能系统的能力。然而,通过将大规模 Transformer 模型(最近显示出生成代码的能力)的进步与大规模采样和过滤相结合,我们在可以解决的问题数量方面取得了重大进展。我们在选定的公共 GitHub 代码上预训练我们的模型,并在我们相对较小的竞争性编程数据集上对其进行微调。在评估时,我们为每个问题创建了大量的 C++ 和 Python 程序,比以前的工作大几个数量级。然后,我们对这些解决方案进行过滤、聚类和重新排序,以将其提交给我们提交以供外部评估的一小组 10 个候选程序。这个自动化系统取代了竞争对手的调试、编译、通过测试和最终提交的试错过程。
在 Codeforces 的许可下,我们通过模拟参与最近的 10 场比赛来评估 AlphaCode。竞争激烈的编程社区令人印象深刻的工作创造了一个领域,在这个领域中,不可能通过复制以前看到的解决方案或尝试所有可能相关的算法等捷径来解决问题。相反,我们的模型必须创造新颖有趣的解决方案。总体而言,AlphaCode 处于中位竞争对手的水平。虽然远未赢得比赛,但这一结果代表了 AI 解决问题能力的重大飞跃,我们希望我们的结果能够激发竞争激烈的编程社区。
为了让人工智能帮助人类,我们的系统需要能够发展解决问题的能力。 AlphaCode 在现实世界的编程竞赛中排名前 54%,这一进步展示了深度学习模型在需要批判性思维的任务中的潜力。 这些模型优雅地利用现代机器学习将问题的解决方案表达为代码,回溯到几十年前人工智能的符号推理根源。 而这只是一个开始。 我们对代码生成的探索留下了巨大的改进空间,并暗示了更令人兴奋的想法,这些想法可以帮助程序员提高生产力,并向目前不编写代码的人开放该领域。 我们将继续这一探索,并希望进一步的研究将产生工具来增强编程并使我们更接近解决问题的人工智能。
评价这个工作之前,我们可以首先回顾一下停机问题。Alan Turing在1936年已经证明了:在一般情况下,不可能设计出一段程序P,使得它能够判断任意程序x是否会停止。
停机问题有各种扩展版本。具体到这次的求解竞赛题,我们可以这样说:(假设题库里存在某些不可解的问题,)不可能设计出一段程序P,使得它能够判断任意的题目x是否有解——更不要说写出解题程序了。也就是说,DeepMind所定义的这个任务,从根源上说,是不可能完成的。
当然,DeepMind的研究者们不可能连如此简单的道理都不懂。所以他们弱化了问题的定义范畴,仅仅选择一些已经被证明有解的题目。这个弱化是非常本质的:从AI的角度看,它相当于构建了一个数据集,把所有求解范围都限定在这个数据集里,进而将“求解问题”这样一种高级的逻辑活动,转化为“拟合数据”这样一种低级的活动。
而这,就决定了当前方法的上限!
顺着paper往下看,果不其然,DeepMind做出了所有人意料之中的事情:他们从GitHub下载了大量的代码进行预训练,并且在竞赛题库上进行微调;技术上,他们使用语言模型,只不过将输出token从自然单词替换成了代码关键字/变量。为了提升准确性,他们还额外采样了若干数据,用于剔除不合格的程序。最后,生成代码在某个确定的测试集上,超过了一半的参赛者。
根据上述事实,我斗胆模拟一个审稿人,为文章提供如下意见:
总体而言,出于问题的重要性以及构建benchmark的努力,再考虑到方法论的局限性大、算法创新性也有限,我会推荐accept(介于weak accept和strong accept之间的分数)。从价值判断来看,当前状态的AlphaCode暂时无法产生任何实际价值。同时,我强烈反对将其类比为2015年的AlphaGo:跨越闭集和开集间的障碍,可比从围棋五段走到九段,要难上太多了。
最后小声说:Google本质上还是广告公司,所以对于工作的宣传必定会不遗余力。作为从业者,我们务必保持自身判断力,切勿盲信权威,自己吓死自己。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有