互联网资讯 / 人工智能 · 2023年12月10日 0

AI掌握了刷题技巧

在面试中经常会遇到的算法题,如今AI已经能够独立解决,例如下面这道题:

给定一个记录论文引用次数的数组,其中每个元素均为非负整数。请编写函数h_index,输出这些论文的h指数,即至多有h篇文章被引用至少h次。
示例:
输入: [3, 0, 6, 1, 4]
输出: 3

AI提供的Python解答如下:

AI已经会刷LeetCode了

虽然在使用counts.sort(reverse=True)时让人感到不适,但最终还是顺利通过了测试:

AI已经会刷LeetCode了

来自UC伯克利的研究团队将这道题归类为“面试级”难度(看来国外程序员的面试题相对较简单)。

此外,还有更简单的“入门级”和更复杂的“竞赛级”题目。在5000道题的测试中,AI能够解决15%。

另外,有人声称他专门用GPT-2训练了一个针对Leetcode的AI,能够完成80%的题目。

AI已经会刷LeetCode了

对于正在刷Leetcode的你,是否感到紧张?

AI已经会刷LeetCode了
GPT-Neo超越了GPT-3

本研究使用的题目形式为自然语言题干,区别于以往研究中常见的伪代码与代码之间的翻译。

AI已经会刷LeetCode了

题目来源于codeforces、Kattis等刷题网站,共收集了10000道题目,5000道用于训练,另5000道用于测试。题干的平均长度为293.2个单词,测试集中的每道题平均有21.2个测试用例。

AI已经会刷LeetCode了

入门级难度的题目通常不需要复杂的算法,1-2年经验的程序员都能够解答,共有3639道。

面试级难度的题目涉及数据结构,例如树或图,或需要对常见算法进行修改,共有5000道。

剩余的题目为竞赛级难度,达到USACO、IOI和ACM等竞赛水平。

研究人员分别训练了GPT-2的1亿参数版和15亿参数版、GPT-3以及“高仿版”GPT-Neo。

虽然GPT-Neo的参数规模仅为27亿,且低于GPT-2,但在测试用例通过率上表现超越了参数高达1750亿的GPT-3。

AI已经会刷LeetCode了

在严格模式下,只有通过所有测试用例的解答才能算完全正确,表现最好的GPT-Neo仅通过了1.12%的测试,但这也相当于56道题(总比我强)。

AI已经会刷LeetCode了

GPT-Neo由EleutherAI团队开发,旨在复现GPT的开源项目。

尽管其参数规模远小于GPT-3,但训练数据包含了更多技术性网站,如Stack Overflow和Stack Exchange,这可能是其在代码生成上表现优异的原因之一。

至于GPT-3为何表现不及GPT-2,有人猜测可能是其接触的文本过多,虽然在生成自然语言方面表现出色,但在逻辑和解题能力上可能出现过拟合。

AI已经会刷LeetCode了
如何看待AI“做题家”?

论文发布后,大家纷纷展开讨论。

如果我在面试中未能通过,但我编写的算法却通过了,会发生什么呢?

AI已经会刷LeetCode了

有人给出了答案:

没关系,你可以成为你算法的助手。

很多人还提出了下一步的建议,例如不用自回归的GPT,改用自编码语言模型会怎样?比如codeTrans。

AI已经会刷LeetCode了

或者,使用一个GPT专门生成自己无法回答的问题。

AI已经会刷LeetCode了

△看似矛盾的争论

乐观者认为,这将解放人的创造力,未来编程将更多地关注于架构与工程,而不是编写大量代码。

AI已经会刷LeetCode了

有人畅想,只需描述需求便能生成代码,实在令人向往。

嗨IDE,帮我用我的数据库生成一个JavaScript的增查改删功能,并且要带测试。

AI已经会刷LeetCode了

△Ruby on Rails的同学表示非常在行

而悲观者则认为,未来人类程序员可能只剩下维护工作和审核机器生成的代码。

AI已经会刷LeetCode了

面对AI的“做题家”,你感到害怕了吗?

论文地址:
https://arxiv.org/abs/2105.09938

数据集地址:
https://github.com/hendrycks/apps

自动刷Leetcode项目:
https://github.com/gagan3012/Project-code-py