当前位置: 首页 > 科技观察

MIT微软为AI量身打造了一套leetcode编程题

时间:2023-03-12 18:16:17 科技观察

MIT微软创建了一套为AI量身定做的leetcode编程题。你见过这样的编程主题描述吗?您看到的不是自然语言描述,也没有输入和输出示例,而是一个Python函数。这是麻省理工学院、AllenAI和微软的研究人员提出的一种全新的编程问题描述方法:每个问题都由一个简短的Python函数f定义,目标是找到一个输入x使得f输出为真。这样的题型可以让AI更容易复习题,不会影响人类程序员的理解。AI编程,路真的越来越顺了。让我们仔细看看这项研究。对于没有自然语言描述的编程题,我来解释一下这种描述方式:题目是Python函数的形式,参数就是答案。求解问题的目标是找到使函数输出为真的输入x,即满足f(x)=true的正确答案。现在请打个比方:如何用这种新形式描述一个有1000个不连续“o”的字符串?正确答案:以下是其他两项的描述示例。动态规划——最长单调递增子序列问题:经典的汉诺塔:研究人员在这种提问形式中包含了各种编程问题,并提出了一个开源数据集:称为P3。这个数据集的题型非常全面:涉及不同难度、不同领域、不同算法工具的题型。有简单的字符串操作问题;有像河内塔和国际象棋这样的经典谜题(例如,Knight'sTourAlgorithm和N-Queens问题的变体);Tic-Tac-Toe),RockPaperScissors,Mastermind等;还包括国际数学奥林匹克竞赛(I??MO)和国际大学生程序设计竞赛(ICPC)的题目,例如各种图论和数论问题。共收录208种题型,14万+道题,还在持续更新中。每个问题至少提供一个答案。这套新颖的编程挑战题库数据集抓住了编程问题的本质,可用于教授人工智能编程和评估人工智能编程能力。研究人员表示,这组问题可以客观评估AI的编程能力。因为不需要检查答案,可以直接验证答案的正确性。因此,此类问题不会给AI带来学习任何答案偏差的负担。希望这个数据集能够开发出新的人工智能编程方案。根据这些问题编程不同的AI求解器效果如何?研究人员做了一些深入的实验,开发了基于随机森林、Transformer和不同类型的GPT-3提示的AI求解器,采用不同的参数枚举、自上而下的方法,并使用这个P3数据集来评估性能。首先,我们在这个数据集上测试这些求解器的引导效率,以使用以前解决的问题来解决新问题。结果发现,增加试验次数可以解决新问题。但他们也可以通过从过去的经验中学习来更快地解决新的难题。下图显示了这些AI求解器在不同尝试下解决的问题数量:在一项小型用户研究中,21名具有不同Python编程年限的程序员完成了30个不同难度的问题。为每个要解决的问题分配最多6分钟的时间。使用这个数据集来评估AI和人类程序员对编程问题难度的感知,发现人类认为困难的问题对AI来说也更难。在这个阶段,人工智能解决者可以解决的大多数问题都是针对人类的。说的比较简单。上图显示了人类和AI评分的各种主题的难度,按人类得分排序。人类的难度分数是通过最大允许解决时间的平均分数来衡量的,而AI则是基于解决问题所需的尝试次数。此外,AI可以用这种形式的问题解决60%的问题,初学者和有经验的程序员平均分别解决76%和87%的问题。总的来说,使用这个新颖的数据集,通过精心设计的AI求解器,可以大大减少AI编程求解所需的尝试次数,解决更多的问题。因此,研究人员希望这个新的编程题库数据集能够支持新的人工智能编程方案的研发,提高人工智能编程的效率和性能。此前,加州大学伯克利分校曾训练AI刷LeetCode。在总共5000题的测试中,AI可以解决15%。不知道用这个数据集训练能达到什么水平的AI编程能力?论文地址:https://arxiv.org/abs/2106.05784开源数据集链接:https://github.com/microsoft/PythonProgrammingPuzzles