计算机行业越来越卷,AI都会刷LeetCode了,网友:比我强

OpenCV学堂 2021-07-12 17:51

点击上方↑↑↑OpenCV学堂”关注我

来源:公众号 机器之心 授权


终究还是「卷」到了自家。


来看一道经典的编程题目:

已知一个论文引用量序列,其中每个引用量都是非负整数,请编写一个输出为 h_index 的同名函数 h_index()。其中 h_index 指至多有 h 篇论文分别被引用了至少 h 次。

一种解答代码如下:


这段代码虽然在细节上存在一些问题,却能够顺利通过部分样例测试。而它居然是 AI 写的!

上述代码顺利通过了部分样例测试。

随着深度学习的兴起,AI 让许多行业实现了自动化,包括将 AI 用于编程。人们在编程时通常会使用大量的有意识和潜意识思维机制发现新问题并探索不同的解决方案,然而大多数机器学习算法都需要定义明确的问题和大量带有注释的数据才能够开发出解决相同编程问题的模型,因此用 AI 编程并非易事。此外,准确地评估模型的代码生成性能可能是很困难的,并且很少有既灵活又严格的方式来评估代码生成的研究。

基于此,来自 UC 伯克利等机构的研究者提出了 APPS(Automated Programming Progress Standard),一个代码生成基准,该基准测试能够衡量模型的代码生成能力,并检查代码是否符合问题要求。与公司评估候选软件开发人员的方式类似,该研究通过检查生成的代码在测试用例上的结果来评估模型。基准测试包括 10000 个问题,包含单行代码解决的简单问题和具有大量代码的复杂算法挑战等多多种问题。上述 AI 生成代码示例在 APPS 数据集中被视为「面试级别」的问题。

对此,有网友说道:「如果我不能通过编码面试,但我写的算法通过了,那么会怎样?」


那大概会录用「算法」?

我们再来看一个例子:

问题:已知两个整数 n 和 m。计算数组(a,b)对数,使两个数组的长度都等于 m;每个数组的元素都是 1 到 n 之间的整数;对于任意索引 i 从 1 到 m,都有 a_i≤ b_i;数组 a 按非降序排列;数组 b 按非升序排序。结果可能很大,应该打印它的 modulo10^9+7。输入:唯一的行包含两个整数 n 和 m(1≤ n≤ 1000,1≤ m≤ 10)。输出:打印一个整数,满足上述 modulo10^9+7 所述条件的数组 a 和 b 的数量。


根据问题描述,AI 自动生成代码,尽管生成的代码通过了 0 个测试用例,但第一眼看起来似乎是可行的:


研究者在 GitHub 和训练集上对大型语言模型进行了微调,并发现微调后语法错误率呈指数级下降。在 GPT-Neo 等模型上可以通过大约 15% 的入门问题测试用例。


  • 论文地址:https://arxiv.org/pdf/2105.09938.pdf

  • GitHub 地址:https://github.com/hendrycks/apps


APPS 数据集

APPS 数据集包括从 Codeforces、Kattis 等不同的开放编码网站收集的问题。APPS 基准试图通过以不受限制的自然语言提出编码问题并评估解决方案的正确性来反映人类程序员的评估方式。问题的难度范围从入门到大学竞赛水平,用来衡量编码能力和解决问题的能力。


APPS 总共包含 10000 个编码问题,其中包括 131836 个用于检查解决方案的测试用例和 232444 个由人类编写的真实解决方案。里面的问题可能是很复杂,因为平均长度为 293.2 个词。数据集被平均分为训练集和测试集,每部分都有 5000 个问题。在测试集中,每个问题都有多个测试用例,平均测试用例数为 21.2。每个测试用例都是针对相应问题而专门设计的,能够严格评估程序功能。

为了创建 APPS 数据集,研究者手动处理了来自开放网站的问题,在这些网站中程序员可以相互分享问题,包括 Codewars、AtCoder、Kattis 和 Codeforces。为了提高数据集的质量和一致性,研究者对每个问题源使用自定义 HTML 解析器。必要时,研究者使用 MathPix API 将图像转换为 LaTeX。此外研究者还使用具有 SVD 降维和余弦相似度的 tf-idf 特征执行重复数据删除。

在数据分级上,数据集被分为三个难度。例如,Kattis 难度小于 3 的问题被归类为「入门级难度」,难度在 3 到 5 之间的问题被归类为「面试级难度」,难度大于 5 的问题被归类为「竞赛级难度」。

  • 入门级难度:大多数有 1-2 年经验的程序员不需要复杂的算法就可以解决这些问题,有 3639 个;

  • 面试级难度:问题会涉及数据结构,比如树或者图,或需要修改常见的算法,有 5000 个;

  • 竞赛级难度:达到高中和大学编程比赛的水平,包括 USACO、IOI 和 ACM,有 1361 个。


实验

研究者使用 APPS 基准分析了各种 Transformer 模型。结果发现,微调和增加模型尺寸可以提高准确率,而准确率随着难度的增加而下降。此外,实验发现语法错误正在减少,生成的代码在质量是合理的。模型采用 GPT-2、GPT-3、GPT-Neo。GPT 体系架构特别适合于文本生成,因为它是自回归的。

评估指标

为了全面评估模型的代码生成能力,研究者使用了 APPS 提供的大量测试用例和实用的解决方案。测试用例允许自动评估,即使可能程序的空间组合起来可能很大。因此,与许多其他文本生成任务不同,不需要手动分析。将生成的代码在测试用例上的性能汇总为两个指标,即「测试用例平均值」和「严格准确性」。

模型性能分析

定性输出分析。模型有时可以生成正确的或表面上合理的代码。图 2 显示了通过所有测试用例的 GPT-2 1.5B 生成的代码。当模型没有通过测试用例时,有时乍一看它们生成的代码似乎仍然是合理的。例如,在图 3 给出了 1.5B 参数模型生成与问题陈述相关的代码,并进行了合理的尝试来解决它。

测试用例评估。表 2 显示了主要结果。研究者观察到,模型能够生成通过一些测试用例的代码,这意味着许多生成的程序都没有语法错误,并且可以成功处理输入测试用例以产生正确答案。请注意,对于入门性问题,GPT-Neo 通过了大约 15%的测试用例。研究者将图 4 中的「测试用例平均」结果可视化。这演示了模型在代码生成方面显示出明显的改进,并且现在开始对代码生成产生吸引力。



语法错误。研究者评估了语法错误的频率,这些语法错误导致程序无法解释,包括间距不一致,括号不平衡,冒号丢失等。如图 5 所示,语法错误存在普遍性。虽然 GPT-3 针对入门问题生成的解决方案中大约有 59%存在语法错误,但 GPT-Neo 语法错误发生率约为 3%。请注意,Yasunaga 和 Liang(2020)等最近的工作创建了一个单独的模型来修复源代码以解决编译问题,但是该研究的结果表明,由于语法错误频率会自动降低,因此将来可能不需要这样做。

BLEU。为了评估 BLEU,研究者采用生成的解并针对给定问题用每个人工编写的解计算其 BLEU,然后记录最高的 BLEU 得分。在图 6 中观察到,即使模型在处理更棘手的问题上实际上表现较差,随着问题来源变得越来越困难,BLEU 也会增加。此外,较差的模型可能具有相似或更高的 BLEU 得分。
 

论文发布后,有网友表示他们使用相似的数据集训练模型解答 LeetCode 中的题目,其中最优的模型是 GPT-2,准确率高达 80%。

项目链接:https://github.com/gagan3012/project-code-py


OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论
  • 据IDTechEx最新预计,到2034年,全球汽车舱内传感(In-Cabin Sensing,ICS)市场将超过85亿美元。若按照增长幅度来看,包含驾驶员监控系统(DMS)、乘员监控系统(OMS)、手势控制和生命体征监测等高级功能在内的舱内传感市场预计2020年到2034年将增长11倍。感光百科:ICS中的光源选择01、政策推动带来的“硬”增长作为其中的增长主力,舱内监控系统应用(包含DMS和OMS等)被推动增长的首要因素正是法规。据统计,中国、欧盟、美国、韩国、印度等主要汽车国家或地区已推出相
    艾迈斯欧司朗 2024-12-25 19:56 60浏览
  • 今年AI技术的话题不断,随着相关应用服务的陆续推出,AI的趋势已经是一个明确的趋势及方向,这也连带使得AI服务器的出货量开始加速成长。AI服务器因为有着极高的运算效能,伴随而来的即是大量的热能产生,因此散热效能便成为一个格外重要的议题。其实不只AI服务器有着散热的问题,随着Intel及AMD 的CPU规格也不断地在提升,非AI应用的服务器的散热问题也是不容小觑的潜在问题。即便如此,由于目前的液冷技术仍有许多待克服的地方,例如像是建置成本昂贵,机壳、轨道、水路、数据中心等项目都得重新设计来过,维修
    百佳泰测试实验室 2024-12-26 16:33 51浏览
  • 在谐振器(无源晶振)S&A250B测试软件中,DLD1到DLD7主要用于分析晶体在不同驱动功率下的阻抗变化。此外,还有其他DLD参数用于反映晶振的磁滞现象,以及其频率和功率特性。这些参数可以帮助工程师全面了解KOAN晶振在不同功率条件下的动态特性,从而优化其应用和性能。磁滞现象晶振的磁滞现象(Hysteresis)是指在驱动功率变化时,晶体的阻抗或频率无法立即恢复至初始状态,而表现出滞后效应。1. DLDH: Hysteresis Ratio (MaxR/MinR)在不同驱动
    koan-xtal 2024-12-26 12:41 63浏览
  • 概述 Intel 要求用户为其10代FPGA器件使用特定的上电和掉电顺序,这就要求用户在进行FPGA硬件设计的时候必须选择恰当的FPGA供电方案,并合理控制完整的供电上电顺序。经过在Cyclone 10 GX测试板上实际验证,统一上电确实会导致FPGA无法正常工作,具体表现为JTAG接口无法探测或识别到目标器件。上电顺序要求 Cyclone 10 GX,Arria 10以及Stratix 10系列器件所有的电源轨被划分成了三个组合,三组电源轨要求依次上电,如图1所示,为三组电源轨上电顺序示意图。
    coyoo 2024-12-25 14:13 45浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-26 09:19 88浏览
  • 引言  LIN(Local Interconnect Network)是一种针对汽车电子系统应用的串行通信协议,主要用于汽车电子控制单元(ECU)之间的通信。LIN总线的特点是成本低、速率低、通信距离短、连接节点少,主要用于对带块要求低、实时性要求不高的控制任务,例如车门控制、天窗控制、座椅控制、车内照明等功能。LIN总线采用的是主从式架构,由主节点基于调度表调度网络中的通信。  LIN总线的错误类型  尽管LIN协议设计简单,具有低带
    北汇信息 2024-12-25 14:18 57浏览
  • “金字招牌”的户外叙事。2024年的夏天似乎异常炙热,体育迷们的心跳也随之澎湃,全球瞩目的体育盛宴——巴黎奥运会在此刻上映。在这个充满荣耀与梦想的夏天,我们见证了无数激动人心的瞬间:男子4X100米混合泳接力决赛中,潘展乐的最后一棒,气壮山河,中国队的历史性夺冠,让整个泳池沸腾;射击10米气步枪混合团体决赛,黄雨婷和盛李豪的精准射击,为中国队射落首金,展现了年轻一代的力量;乒乓球男单四分之一比赛中,樊振东的惊天逆转令人难以忘怀,凭借坚韧不拔的意志和卓越的技术,成功挺进半决赛,并最终夺冠……在这一
    艾迈斯欧司朗 2024-12-25 19:30 62浏览
  • 在PCB设计中,Stub(也称为短桩线或残桩线)对信号传输有以下几个主要影响:1.容性效应导致的阻抗偏低:Stub会导致容性效应,使得阻抗偏低,影响信道的阻抗一致性。Stub越长,阻抗降低得越多。这是因为传输线瞬态阻抗计算公式为:Z = \ sqrt { \ frac { L } { C } }Stub就像并联在传输线上的小电容,Stub越长,电容量越大,阻抗也就越低。2.信号反射:当信号在传输线与Stub的交界处遇到阻抗不匹配时,会产生信号反射。这会导致信号的失真和能量的反向传播,增加了噪声和
    为昕科技 2024-12-24 18:10 26浏览
  • 新能源汽车市场潮起潮落,只有潮水退去,才能看清谁在裸泳。十年前,一批新能源汽车新势力带着创新的理念和先进的技术,如雨后春笋般涌入中国汽车市场,掀起一场新旧势力的角逐。经历市场的激烈洗礼与投资泡沫的挤压,蔚来、理想、小鹏等新势力车企脱颖而出,刷爆网络。不曾想,今年新势力车企杀出一匹“超级黑马”,爬上新势力车企销量榜前三,将蔚来、小鹏等昔日强者甩在了身后,它就是零跑汽车。公开数据显示,11月份,零跑汽车实现新车交付量约4.02万辆,同比增长117%,单月销量首次突破4万辆;小鹏汽车当月共交付新车约3
    刘旷 2024-12-26 10:53 100浏览
  • 全球照明技术创新领航者艾迈斯欧司朗,于2024年广州国际照明展览会同期,举办【智慧之光】· 艾迈斯欧司朗-照明应用研讨会,以持续的技术创新,推动光+概念的全面落地。现场还演示了多款领先照明技术,且由资深工程师倾情解读,另有行业大咖深度洞察分享,助你开启“光的无限可能”探索之旅!精彩大咖分享引领未来照明无限遐想艾迈斯欧司朗精心准备了照明领域专业大咖的深度分享,无论是照明领域的资深从业者,还是对照明科技充满好奇的探索者,在这里,您都将大有所获。在艾迈斯欧司朗照明全球产品市场VP Geral
    艾迈斯欧司朗 2024-12-25 20:05 49浏览
  • RK3506是瑞芯微Rockchip在2024年第四季度全新推出的Arm嵌入式芯片平台,三核Cortex-A7+单核Cortex-M0多核异构设计,CPU频率达1.5Ghz, M0 MCU为200Mhz。RK3506平台各型号芯片该怎么选,看这篇文章就够了。RK3506各型号RK3506有3个型号,分别是RK3506G2、RK3506B、RK3506J,配置参数如图: 配置差异解析总的来说,RK3506各型号间的差异主要体现在内存、工作温度和封装上‌:内存差异‌:RK3506G2‌集成
    Industio_触觉智能 2024-12-25 10:27 30浏览
  • 本文介绍瑞芯微开发板/主板Android系统APK签名文件使用方法,触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,各类接口一应俱全,帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。系统签名文件生成APK系统签名文件,具体可参考此文章方法RK3588主板/开发板Android12系统APK签名文件生成方法,干货满满使用方法第一步,修改APK工程文件app/src/build.gradle,并添加以下内容: android {     na
    Industio_触觉智能 2024-12-26 09:20 66浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦