AI 能匹敌程序员了吗?OpenAI 新研究展示 NLP 大模型的局限性
作者:Ben Dickson
来源:数据实战派
Codex
在一篇新论文中,OpenAI 的研究人员展示了 Codex 的详细信息,它是一种生成软件源代码的深度学习模型。
Codex 可以为 OpenAI 和 GitHub 联合开发的 “AI 配对程序员” 工具 Copilot 提供支持。Copilot 目前以 Beta 测试模式为部分用户提供服务。
这篇论文讲述了了 OpenAI 的科学家重新利用其旗舰语言模型 GPT-3 以创建 Codex 的过程。更重要的是,该论文还阐明了读者可以在多大程度上信任深度学习编程(“数据实战派” 后台留言 “Codex” 可获取论文下载链接)。
“没有免费的午餐” 定理
Codex 由 GPT-3 发展而来,GPT-3 是去年发布的大规模深度学习语言模型。
深度学习模型的复杂性通常通过它们拥有的参数数量来衡量。一般来说,模型的学习能力随着参数数量的增加而增加。GPT-3 带有 1750 亿个参数,比其前身 GPT-2(15 亿个参数)大两个数量级以上。GPT-3 的训练数据超过 600 GB,比 GPT-2 的训练数据集大 50 多倍。
除了规模的大幅扩展之外,GPT-3 的主要创新是 “少样本学习”,即执行未经训练的任务的能力。GPT-3 的论文标题是 “少样本学习语言模型”,它证明扩展语言模型大大提高了与任务无关的少样本学习的性能,有时甚至可以达到现有最先进的微调方法的效果。”
其前提是在一个大的文本语料库上训练一个足够大的模型,它可以匹敌或优于专门用于特定任务的几个模型。
但根据 OpenAI 的新论文,GPT-3 的各种版本都无法解决用于评估 Codex 的任何编码问题。
GPT-3 的训练数据集中没有编码样本,所以我们不能指望它能够编码。但 OpenAI 科学家还测试了 GPT-J,这是一个在 The Pile 上训练的有 60 亿参数的模型,包括一个 800 GB 的数据集,其中包括 95 GB 的 GitHub 和 32 GB 的 StackExchange 数据。GPT-J 解决了 11.4% 的编码问题。Codex 是由 GPT-3 发展来的包含 120 亿参数的一个版本,在 GitHub 的 159 GB 代码示例上进行了微调,解决了 28.8% 的问题。Codex 的单独版本称为 Codex-S,通过监督学习进行了微调,将性能提升到 37.7%(其他 GPT 和 Codex 模型通过无监督学习进行训练)。
Codex 可以解决大量的编码挑战。使用监督学习 (Codex-S) 微调的模型版本进一步提高了性能。
Codex 证明,机器学习仍然受到 “没有免费的午餐” 定理(NFL)的支配,这意味着泛化是以牺牲性能为代价的。也就是说,当机器学习模型旨在解决一个特定问题时,它们会更加准确;但是当他们的问题领域扩大时,它们的表现会下降。
Codex 能够以较差的自然语言处理能力为代价,高精度地执行一项专门任务(将函数描述和特征转换为源代码)。另一方面,GPT-3 是一种通用语言模型,可以生成关于许多主题(包括复杂的编程概念)的得体文本,但不能编写代码。
规模与成本
OpenAI 的研究人员表明,Codex 的性能随着他们增加机器学习模型的大小而提高。在 3 亿个参数下,Codex 解决了 13.2% 的评估问题,而 120 亿个参数模型的性能则为 28.8%。
完整版的 GPT-3 有 1750 亿个参数,比用于创建 Codex 的参数大了整整一个数量级。在 Codex 上训练更大的模型不会产生更好的结果吗?
参数体量停留在 120 亿的一个可能原因可能是数据集大小。更大的 Codex 模型需要更大的数据集。在 159 GB 的语料库上训练它可能会导致过度拟合,在这种情况下,模型变得非常擅长记忆和排练其训练示例,而在处理新情况时非常糟糕。收集和维护更大的数据集是一个昂贵且耗时的过程。
另一个让人烦恼的问题是 Codex 的成本。除了科学实验之外,Codex 还应该成为未来产品的支柱,该产品应该能够商业化并为实验室带来利润。但是训练和运行包含 1750 亿参数的 GPT-3 模型的高昂成本使其难以成为盈利的商业模型。
相反,经过微调的、相对规模较小的 GPT-3 在损益控制方面更易于管理。
OpenAI 的实验结果表明,Codex 的大小 / 性能比遵循对数标度。这意味着随着模型大小的增加,性能提升会逐渐降低。因此,收集数据,训练和运行更大模型所增加的成本可能抵不上小小的性能提升。
代码生成是一个利润丰厚的市场。鉴于程序员的高时薪,即使每月节省几个小时的编码时间也足以支付 Codex 的订阅费用。在劳动力成本较低的其他领域,从盈亏的角度来看,使用大型语言模型自动执行任务将更具挑战性。
生成与理解代码
需要注意的是,无论 Codex 的输出多么有吸引力,深度学习模型都不懂编程。
与所有其他基于深度学习的语言模型一样,Codex 正在挖掘代码片段之间的统计相关性。
OpenAI 的科学家在他们的论文中承认,Codex “训练样本效率不高”,并且 “即使是经验丰富的开发人员在他们的职业生涯中也不会遇到任何接近这个体量的代码。
他们进一步补充说,“完成计算机科学入门课程的优秀学生预计能够解决比 Codex-12B 更多的问题。”
这里列举论文中一个有趣摘录:“我们从 Codex 中进行采样标记,直到遇到以下停止序列之一:'\nclass'、'\ndef'、'\n#'、'\nif' 或 '\nprint',否则该模型将继续生成其他功能或语句。”
这意味着 Codex 将无意识地继续生成代码,即使它已经完成了相关任务。
当您想解决重复性强的简单问题时,这是一种非常有效的方案。但是,当您想尝试编写一个大型程序来解决必须分多个步骤解决的问题时,Codex 的局限性就变得很明显了。
OpenAI 的科学家发现,随着函数描述组件数量的增加,模型的性能呈指数下降。
他们认为:“这种行为是人类程序员的少有行为,如果他们可以为长度为 2 的链执行程序,那么他们应该能够正确地为任意长度的链进行操作。”
OpenAI 的 Codex 无法解决需要综合多个组件的编码问题。
进一步暴露 Codex 对程序结构和代码缺乏理解的事实是,它 “可以推荐语法错误或未定义的代码,并且可以调用未定义或代码库范围之外的函数、变量和属性,”。实际上,这意味着在某些情况下,机器学习模型会将之前看到的不同代码段拼接在一起,即使它们不适合在一起。
在他们的论文中,研究人员还讨论了 Codex 中的 “错位” 问题,该模型能够解决特定问题,但也会由于各种各样的错误而不这样做。Codex 可以使用您正在处理的文件的内容作为上下文来生成其输出,但是如果您的代码包含细微的错误(如果您是人类程序员,这很正常),Codex 可能会 “故意” 建议表面上看起来不错但不正确的代码。
错位是一个有趣的现象,需要进一步研究。但 OpenAI 的实验进一步表明,“如果数据、参数和训练时间扩大,错位可能会持续存在,甚至变得更糟”,这可能是将模型大小保持在 120 亿个参数的另一个原因。
如果提示的上下文包含细微的错误,OpenAI 的 Codex 可能会故意犯错误。
负责任地使用和推广人工智能
有观点认为,GitHub 上描述 Copilot 所说的 “AI 匹敌程序员” 是不准确的。
Codex 不是程序员,而且它也不会占用您的工作(如果您是程序员)。编码只是程序员工作的一部分。OpenAI 的科学家观察到,在目前的状态下,Codex “可能会通过提高程序员的生产力在一定程度上降低生产软件的成本”,但它不会取代软件开发人员经常做的其他任务,例如 “与同事协商,编写设计规范,并升级现有的软件堆栈。”
将 Codex 当做程序员也会导致 “过度依赖” 的问题,即程序员盲目地认可模型生成的任何代码,而没有对其进行修改。鉴于 Codex 可能会犯的明显或难以捉摸的的错误,忽视这一威胁可能会带来质量和安全风险。OpenAI 的研究人员在他们的论文中警告说:“安全使用 Codex 等代码生成系统需要人工监督和警惕。”
总的来说,程序员社区的反应表明 Codex 是一个非常有用的工具,可能对软件行业的未来产生巨大影响。同时,考虑到 Copilot 发布的炒作,了解其有害的影响很重要。在这方面,OpenAI 的人们负责任地研究、记录和报告 Codex 的局限和威胁是值得赞扬的。
Reference:
https://bdtechtalks.com/2021/07/15/openai-codex-ai-programming/
更多精彩推荐
英特尔公布新技术路线图,将为 AWS、高通代工芯片微软亚研换帅:微软杰出首席科学家周礼栋博士升任院长灵魂画手必读:只需完成手画线稿,让AI算法帮你自动上色
相关文章:

MSLicensing中断远程桌面连接
---------------------------中断远程桌面连接---------------------------客户端无法建立跟远程计算机的连接。导致这个错误的可能的原因是:1) 远程计算机上的远程连接可能没有启用。2) 已超出远程计算机上的连接最大数。3) 建立连接时出现了一个网络错误。------------------…

如何恢复,迁移,添加, 删除 Voting Disks
如何恢复,迁移,添加, 删除 Voting Disks 恢复流程 在11gR2 之前,我们可以直接直接使用dd命令对voting disk进行备份。 DD示例 备份votedisk盘: [rootraw1 bin]# dd if/dev/raw/raw2 of/home/oracle/voting_disk.bak 恢复votedisk盘…

跨站脚本攻击(XSS)FAQ
原作者charlee、原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明。 该文章简单地介绍了XSS的基础知识及其危害和预防方法。Web开发人员的必读。译自 http://www.cgisecurity.com/articles/xss-faq.shtml。 简介 现在的网站包含大量的动态内容以提高用户体验&…

linux中的for命令
bash shell提供了for命令,用于创建通过一系列值重复的循环。每次重复使用系列中的一个值执行一个定义的命令集。for命令基本格式为:for var in listdo commandsdone1.读取列表中的值 #!/bin/bash #basic for command for test in a b c d e f doecho The…

终于有人把计算机视觉讲明白了 。。。
机器学习是目前比较热门的技术,包含深度学习、强化学习、对抗学习、对偶学习、迁移学习、分布式学习、以及元学习等内容。得益于大数据、大模型、大计算的发展,深度学习在计算机视觉、语音处理、自然语言方面相继取得了突破,达到甚至超过了人…

mysql启动与关闭(手动与自动)
手动管理mysql的启动与关闭 [rootmysql ~]# service mysql start --手动启动mysql Starting MySQL. SUCCESS! [rootmysql ~]# service mysql stop --手动关闭mysql Shutting down MySQL.. SUCCESS! [rootmysql ~]# mysqld --verbose --help --查看MySQL的默认参数的具体值 如果…

C#中抽象类和接口的区别
一、抽象类:抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派…

echo向文件中写入
echo命令向一个文件写入内容的方法详解,感兴趣的朋友可以参考下。 覆盖型写法 (文件里原来的内容被覆盖)echo "aaa" > a.txtecho aaa > a.txt 添加型写法 (新内容添加在原来内容的后面)echo "aaa" >> a.txtecho aaa >…

火山引擎向企业客户开放上万款抖音同款特效
你喜爱的抖音特效,在其他平台上也能使用了。 7月28日,抖音联合火山引擎举办特效技术开放日,首次披露抖音特效的生产流程和技术原理。活动中,火山引擎宣布已向企业客户开放了上万款抖音同款特效,包括猴哥、漫画惊讶脸…

5.1 python的缩进
python 并不像其他语言一样要求以大括号来分辨逻辑,仅仅使用 tab 键(默认的四个空格)来区分代码。比如 ainput(Please input a num: ) b0 if int(a)>b: print(a>0) else: print(a<0) 返回结果:当输入小于0时,…

centOS 自动安装php
centos下安装php#yum install -y php这个只安装PHP建议安装运行库及MySQL的支持#yum install -y php php-devel php-mysql如果你的系统是CentOS 5.6那么上面这条命令安装的是PHP 5.1,要安装 PHP 5.3则执行下面的命令:#yum install -y php53 php53-devel php53-mysql自动安装启动…

strcpy_s与strcpy的比較
strcpy_s和strcpy()函数的功能差点儿是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它仅仅能假定缓冲足够大来容纳要拷贝的字符串。在程序执行时,这将导致不可预料的行为。用strcpy_s就能够避免这…

抖音发布特效数据报告:每五个投稿有一个使用特效
7月28日,抖音与火山引擎联合举办特效技术开放日,首次发布了《抖音特效数据报告》。报告显示,2021上半年 ,抖音平台平均每天上线超过100个新款特效;平均每五个投稿里,就有一个使用特效,特效已经成…

11G RAC 进程启动顺序
本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/6041171.html ,如需转载请自行联系原作者

使用 jQuery 简化 Ajax 开发
JSON 入门指南 <script languageJavaScript typetext/javascript> </script> <script languageJavaScript typetext/javascript> </script> 级别: 初级 廖 雪峰, 撰稿人 2008 年 8 月 22 日 JSON 即 JavaScript Object Natation…

AI一眼识别这是什么鸟 “我们来找茬”十级选手诞生
话说,你能看出这三只鹦鹉有什么不一样吗?脸盲如我,要使出玩“我们来找茬”的十级能力。AWSL,鹦鹉鹦鹉,傻傻分不清楚。结果,AI一顿操作猛如虎,进行了判断:左边的是桃面牡丹鹦鹉&#…

stm32时钟树讲解
1.管理好时钟,功耗才能更低

安全攻防实战:使用winlogonhack获取系统密码
安全攻防实战:使用winlogonhack获取系统密码S.S.F simeon摘要 在网络安全事件频发的今天,很多人都在抱怨,为什么我的系统被入侵了,我的主页被修改了,在入侵后,我采取了一些安全加固措施,可是没…

HTTP长连接服务器端推技术
服务器推送(Server Push) 推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息。服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接。当服务器需要再次发送一批数据时,浏览器显示数据并保持连接。以后,…

从AI、加密货币到火星任务,一种更强大、更稳定的存储设备
作者:贺佳来源:数据实战派所研究器件之一的显微镜图像,由两个尺寸相同的十字架组成,其中一个具有 IrMn3 柱,第二个仅由 Pt 组成。(来源:西北大学和墨西拿大学)美国西北大学和意大利墨…

CSDN - 进程结束后new出的内存会回收吗?
http://blog.csdn.net/stanjiang2010/article/details/5386647 关键词:内存回收

服务器ldap认证配置
1、yum -y install openldap-clients nss-pam-ldapd openldap 2、vim /etc/openldap/ldap.conf进入此配置文件添加如下2行 URI ldap://ldap.shuyun.com:389 BASE dcshuyun,dccom 3、配置自动创建家目录 authconfig --enableldap --enableldapauth --enablemkhomedir --…

使用 .NET 实现 Ajax 长连接
作者:http://www.cnblogs.com/cathsfz/Ajax的长连接,或者有些人所说的Comet,就是指以XMLHttpRequest的方式连接服务器,连接后服务器并非即时写入相应并返回。服务器会保持连接并等待一个需要通知客户端的事件,该事件发…

全员编程时代,人类高质量程序员应具备哪三大特质?
在美国公布的《新兴科技趋势报告》里,2045年,最保守预测也认为将会有超过1千亿的设备连接在互联网上,这些设备包括了移动设备、可穿戴设备、家用电器、医疗设备、工业探测器、监控摄像头、汽车,以及服装等。不久的将来,…

[Linux] ubuntu 格式化u盘
$sudo fdisks -l 基本功,格式化命令,以格式化 /dev/sdb4 分区为例: $ sudo umount /dev/sdb4 # 必须先卸载该分区 # 格式化为 FAT 分区 $ sudo mkfs.vfat -F 32 /dev/sdb4 # -F 参数必须大写,参数有 12,16 和…

搭建Mantis 缺陷管理系统(转)
转自 什么是Mantis MantisBT is a free popular web-based bugtracking system (feature list). It is written in the PHP scripting language and works with MySQL, MS SQL, and PostgreSQL databases and a webserver. MantisBT has been installed on Windows, Linux, Mac…

Http环境下的保持连接方式
Http环境本身是一种无连接状态的架构,在这种架构下服务器只能是被动的接受客户端的请求,返回结果,而无法主动的给客户端发送数据。而在很多需要实时数据交互(比如Web IM)的场景中,我们却希望能及时得到服务器给我们返回…

22岁专访库克、B站3天涨粉百万,他将毕设树莓派扫描仪升级,繁星散落在校空!...
整理 | 禾木木出品 | AI科技大本营(ID:rgznai100)近日,#何同学毕业#冲上了热搜,4 亿网友阅读词条,1.7 万讨论为他送上毕业祝福,最新毕业视频燃爆朋友圈。过去几个月,要说B站网友苦苦等待的UP主是…

Database Appliance并非Mini版的Exadata-还原真实的Oracle Unbreakable Database Appliance
Oracle甲骨文系统有限公司在北京时间9月23日发布了一款Oracle数据库机即Oracle Database Appliance。Oracle Database Appliance是一款面向中小型企业的使用简单、用得起的高可用数据库专用服务器,该数据库机基于Sun Fire服务器、Oracle Enterprise Linux和Oracle D…

一款基于jquery和css3的响应式二级导航菜单
今天给大家分享一款基于jquery和css3的响应式二级导航菜单,这款导航是传统的基于顶部,鼠标经过的时候显示二级导航,还采用了当前流行的响应式设计。效果图如下: 在线预览 源码下载 实现的代码。 html代码: <div i…