AI已经会刷LeetCode了
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
你在面试中会遇到的那种算法题,AI已经能自己解决了,比如下面这道题:
对于一个记录论文引用次数的数组,每个元素都是非负整数。请写出函数h_index,输出这些论文的h指数,即至多有h篇文章被至少引用了h次。
例:
输入: [3, 0, 6, 1, 4]
输出: 3
AI给出的Python答案是这样的:
![AI已经会刷LeetCode了](https://s6.51cto.com/oss/202105/25/d3fe7612baf6143676f91d978275bcc4.jpg)
除了排序没用counts.sort(reverse = True)让人看着血压升高,算是顺利通过测试:
![AI已经会刷LeetCode了](https://s4.51cto.com/oss/202105/25/5ea29dd41eb48431359700476139946b.jpg)
来自UC伯克利的研究团队,将上面这道题被归为“面试级”难度(看来国外程序员面试题有点简单)。
此外还有更简单的“入门级”和更难的“竞赛级”,总共5000道题的测试中,AI能做出15%。
另外有人声称,他专门用GPT-2训练了个专门做LeetCode的AI,能完成80%。
![AI已经会刷LeetCode了](https://s5.51cto.com/oss/202105/25/7ac6b3c790770dd007d46aad13fd43a8.jpg)
在刷LeetCode的你,是否在颤抖?
![AI已经会刷LeetCode了](https://s4.51cto.com/oss/202105/25/e699f6392ed1f54f0cfac50101500a0b.jpg)
GPT-Neo赢过GPT-3
本研究使用的题目形式是自然语言题干,不同于以往研究常用的伪代码和代码之间翻译。
![AI已经会刷LeetCode了](https://s3.51cto.com/oss/202105/25/b17d0ab73efdefe08fbed8305d23e131.jpg)
题目是从Codeforces、Kattis等刷题网站收集的10000道题,5000道用于训练,另外5000道作为测试集。
题干的平均长度为293.2个单词,在测试集中每道题平均有21.2个测试用例。
![AI已经会刷LeetCode了](https://s2.51cto.com/oss/202105/25/c1497fc2f1a3c884880ec324337f5fde.jpg)
入门级难度的题不需要复杂算法,有1-2年经验的程序员都能回答的那种,有3639个。
面试级难度的题会涉及数据结构,比如树或者图,或需要修改常见的算法,有5000个。
剩下的是竞赛级难度,达到USACO、IOI和ACM等竞赛的水平。
研究人员分别训练了GPT-2的1亿参数版和15亿参数版、GPT-3以及“高仿版”GPT-Neo。
参数规模“只有”27亿的GPT-Neo和更低的GPT-2在测试用例通过率上,表现却比1750亿的GPT-3还要好。
![AI已经会刷LeetCode了](https://s2.51cto.com/oss/202105/25/ee2156966b1cade3424f47fdeb90d24f.jpg)
在严格模式下,通过所有测试用例才算完全正确,成绩最好的GPT-Neo只通过了1.12%,不过这也有56道题了(反正比我强)。
![AI已经会刷LeetCode了](https://s5.51cto.com/oss/202105/25/c53701d6d312b9744abd6785119592e7.jpg)
GPT-Neo来自EleutherAI团队尝试复现GPT的开源项目。
虽然参数规模比GPT-3小得多,但训练数据包含了更多技术网站,比如Stack OverFlow和Stack Exchange等,这可能是它在代码生成上胜出的原因之一。
至于GPT-3为什么表现还不如GPT-2,有人猜测可能是它见过的文本太多,虽然擅长生成自然语言,但在逻辑和解题方面过拟合了。
![AI已经会刷LeetCode了](https://s6.51cto.com/oss/202105/25/6fb5f206912e95dcb3d7e87a7e54de48.jpg)
如何评价AI“做题家”
论文一发出来,吃瓜群众脑洞大开。
如果我没通过面试但我写的算法通过了会怎么样?
![AI已经会刷LeetCode了](https://s6.51cto.com/oss/202105/25/74bf33149a57c1cec7a196505a572f39.jpg)
有人回答他:
没关系,你还可以当你算法的助手。
还有很多人给出下一步建议,比如不用自回归的GPT,改用自编码语言模型会怎样?比如CodeTrans。
![AI已经会刷LeetCode了](https://s2.51cto.com/oss/202105/25/51ae0fd00841ea3ba3c605a0d86bd698.jpg)
或者,再用一个GPT专门生成自己回答不出来的问题。
△矛盾相争是吧
乐观的人认为这是解放了人的创造力,未来编程是关于写更少的代码,做更多的架构、工程。
![AI已经会刷LeetCode了](https://s3.51cto.com/oss/202105/25/ba57e4cb8b693d2a1259edc6a3871b87.jpg)
有人畅想,只需要描述需求就能生成代码可太爽了。
嗨IDE,用我的数据库做一个JavaScript的增查改删,要带测试。
△Ruby on Rails直呼内行
悲观的人却认为,将来有一天,人类程序员只能做做维护工作和评审机器生成的代码了。
![AI已经会刷LeetCode了](https://s5.51cto.com/oss/202105/25/e40b675e63f96b4873887391bd5cf2f0.jpg)
面对AI“做题家”,你怕了吗?
论文地址:
https://arxiv.org/abs/2105.09938
数据集地址:
https://github.com/hendrycks/apps
自动刷LeetCode项目:
https://github.com/gagan3012/project-code-py
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击