分享好友 最新动态首页 最新动态分类 切换频道
GitHub的AI写代码翻车了,会在注释里给你写上what the f***,因为...
2024-12-27 01:54

以下文章来源方志朋的博客,回复”666“获面试宝典

GitHub的AI写代码翻车了,会在注释里给你写上what the f***,因为...

来源 | 新智元

GitHub Copilot凭借着自动生成代码这个强有力的噱头,推出之后就成为了讨论的焦点。

 

Copilot建立在OpenAI全新的Codex算法之上,其中Codex接受了从GitHub中提取的TB级公开代码以及英语语言示例的训练。

 

因此,GitHub声称Copilot可以做到分析文档中的字符串、注释、函数名称以及代码本身,从而生成新的匹配代码,包括之前调用的特定函数。

 

同时,Copilot支持多种编程语言:Python、JavaScript、TypeScript、Ruby和Go。

 

发布之后就有人把Copilot拉去刷Leetcode的题库,并对这位「AI程序员」的表现十分满意。

 

 

经过数个题目的验证,Copilot每次都能通过Leetcode的测试。鉴于几乎是实时的生成速度,博主表示,AI可能比我们更会编写代码。

 

不过网友怀疑Copilot已经在LeetCode数据库上进行过了训练,因为生成的注释和Leetcode给的模板几乎一模一样。

 

针对这点,GitHub表示,虽然可能有0.1%的直接引用,但是Copilot生成的代码大部分都会是原创的。

「复制-粘贴」成实锤

在发布的第二天,就有网友质疑GitHub Copilot是把免费开源的代码清洗之后,摇身一变成了赚钱的工具。

 

而这些代码本应该受到GPL(通用公共许可证)的保护,从而防止它们被用在商业项目中。

 

 

不出所料,这个怀疑没过两天就变成了实锤,有网友发现,Copilot直接「复制-粘贴」了最有名的「平方根倒数速算法」。

 

 

Copilot「生成」的这段代码不仅用到了至今都没有人能理解的magic number:0x5f3759df,同时还包含了对这段代码的吐槽:what the f***?。

 

源代码

 

这么看来,Copilot做的只是把训练集中别人写好的代码重新组装了一下而已。

 

我们的AI不「背诵」代码

不过GitHub方面似乎早就已经做了应对的准备,一位名叫Albert Ziegler的团队成员表示,截止2021年5月7日,他把Copilot对于Python的453780条建议都进行了收集,其中这些数据来自于300名员工在日常工作中的使用。

 

Albert针对这个数据集进行了分析整理,并写了一篇看似十分完备的博客进行讨论。

 

在文章的一开始,Albert便让GitHub Copilot背诵了一篇众所周知的文章,显然,Copilot已经牢牢记住了文章的内容。

不过Albert认为,记住训练集的内容不是什么问题,毕竟他自己也背诵过诗歌,而这并不会使他在日常的交流中被这些背诵的内容带跑偏。

 

 

案例分类

 

类别1:Copilot有时会在某个被采纳的建议之后,由于程序员新编写的注释,又提出了一个非常相似的建议。

Albert认为第二次只不过是重复了之前「成功」的案例,因此把它们从问题分析中删除了出去。

 

类别2:Copilot可能会提出长的、重复的序列。比如下面这个例子,其中重复的'<p>'最后在训练集中被发现了。

 

 

类别3:Copilot给出比如自然数、素数、希腊字母表这种类似于标准清单的建议。有些建议可能是有帮助的,也可能是没有帮助的。

不过Albert表示,这些并不符合他对「背诵」代码的假设。

 

 

类别4:在做一些自由度很低的任务时,Copilot会给出的一些常见、或者普遍的解决方案。

 

例如,下面的中间部分可以算做是使用BeautifulSoup包来解析维基百科列表的标准方法。

 

Albert表示,在训练数据中发现的最佳匹配片段就是使用这样的代码来解析不同文章的。同样,这不符合他对「背诵」代码的定义。

 

 

类别5:最后这些案例符合Albert对「背诵代码」的设想,其中,这些代码或注释中至少有一些具体的重叠。

 

测试结果

 

 

对于GitHub Copilot的大部分建议,Albert表示并没有发现与训练用的代码有任何明显的重叠。在去掉第一个类别后,可以得到了185条建议。

 

在这些案例中,有144个被分到了第2-4个类别中。这就在最后一个类别5里留下了41个案例,作者表示,这就是他心目中的代码 「背诵」。

 

GitHub Copilot在缺乏具体语境时的引语

 

在人工标注时挑出的41个主要案例中,没有一个出现在少于10个不同的文件中。大多数(35个案例)出现超过一百次。

有一次,GitHub Copilot建议从一个空文件开始,它在训练期间甚至看到了超过700,000次的东西--那就是GNU通用公共许可证。

 

下面的图表显示了第5个类别的结果(每个结果底部有一个红色标记)与第2-4个类别中的匹配文件数量。

 

 

推断出的分布图显示为一条红线;它在100和1000个匹配之间达到峰值。

 

GitHub Copilot主要在一般情况下引证

 

随着时间的推移,每个文件都变得独一无二。但GitHub Copilot会将在你的文件非常通用时提供解决方案。

而此时,在没有任何具体内容的情况下,它更有可能从其他地方引用。

 

 

当然,软件开发者大部分时间都在复杂的代码中间,那里的上下文足够独特,GitHub Copilot会提供独特的建议。

 

相比之下,一开始的建议就比较中规中矩,因为GitHub Copilot无法知道程序会是什么。

不过,在独立的脚本中,适度的上下文就足以让人合理地猜测出用户想要做什么。

而有时,上下文仍然过于普遍,以至于Copilot认为它熟知的某个解决方案看起来很有希望。

 

 

上面这个例子就是直接取自被上传的机器人课的课件。

 

结论

 

Albert认为,虽然GitHub Copilot可以逐字逐句地引用一组代码,但它很少这样做,而且当它这样做时,多数也都是所有人都会引用的代码,而且大部分是在文件的开头。

 

Albert表示,理想状态下,当一个建议包含从训练集复制的片段时,用户界面应该简单地告诉你它是从哪里引用的。然后,你可以包括适当的署名或决定不使用该代码。而他的团队也将努力去做到这一点。

 

网友评论

虽然网友在看到GitHub团队有在关心「复制粘贴」的问题之后表示了欣慰,然而,这篇「调查」显然很难让人信服。

 

「这会导致每一个爱好者都面临风险,同时,把『这东西可能会生成GPL的代码?』这种担忧推到任何一个在企业中工作的人的面前。」

 

「你不能仅仅依据 『嗯,它们略有不同』,从而推断出『所以它们不是真正的相同的东西』, 如果它实质上是相似的,就需要被引用。」

 

 

对于Copilot来说,可能还有很长一段路要走。

参考资料

最新文章
淘宝和天猫的区别是什么?
简介:淘宝和天猫是中国最大的电子商务平台,它们都属于阿里巴巴集团旗下的网购平台。虽然它们都提供在线购物服务,但在很多方面有着明显的区别。本文将从多个角度对淘宝和天猫进行比较,以帮助读者更好地了解它们之间的差异。工具原料:电
美国车在智能化配置方面有何优势?
美国车在智能化配置方面具有多方面的优势。首先,在智能座舱领域,像福特/林肯研发的 SYNC+智行互联系统,支持 OTA 在线升级,智能导航能与手机无缝衔接,还支持界面与功能卡片个性化定制和自然语义识别的语音交互。通用凯迪拉克的全新 CUE
新多防盗门锁客服人工24小时《今日发布》 广西罗城仫佬山乡:田间农事忙
新多防盗门锁各号码《今日汇总》新多防盗门锁各热线号码2024已更新(2024已更新)新多防盗门锁售后服务电话-——24h在线报修电话:400-965-8692新多防盗门锁售后服务维修电话:400-965-8692为北京、上海、南宁、西安、郑州、合肥、深圳、杭
Python爬虫工具:必会用的 6 款 Chrome 插件,我在美团Python研发岗工作的那5年
EditThisCookie EditThisCookie 是一个 Cookie 管理器,可以很方便的添加,删除,编辑,搜索,锁定和屏蔽 Cookies。 可以将登录后的 Cookies 先保存到本地,借助 cookielib 库,直接爬取登录后
深圳抖音拼多多淘宝电商运营培训机构排名2024-12-11 09:00:34 访问:24次
1.电商运营怎么样随着互联网的快速发展目前,目前电商这个行业在当下是越来越火爆了,当很多人还没有真正的了解这个行业的是后别人都已经通过这个行业赚钱了,如果凝噎有这方面的想法,或者想从事这个行业的话,现在就赶紧心动起来,这个行
谷歌国外推广的价格和谷歌推广的费用
 谷歌海外推广的价格和需要的费用需要多少?先要了解谷歌推广的两层意思,主要讲的有两种方法:一种是谷歌SEO,一种是谷歌竞价(SEM)。        谷歌SEO是自然排名的优化,收效相对来说比较慢。谷歌竞价的话是谷歌的付费推广,价钱的
软件安装不成功,一直出现“chrome_elf.dll丢失”问题是什么原因?“chrome_elf.dll丢失”要怎么解决和预防?
软件安装遇阻:“chrome_elf.dll丢失”问题全解析与解决方案 在软件安装与运行的过程中,我们时常会遇到各式各样的错误提示,其中“chrome_elf.dll丢失”便是较为常见的一种。这个错误不仅阻碍了软件的正常安装,
畅享漫蛙manwa官网版,体验多元化的漫画乐趣与精彩互动
漫蛙manwa官网版为用户提供了不断更新的漫画资源,涵盖了各类题材,无论是青春、恋爱、奇幻还是悬疑,都能够在这里找到。其界面设计简洁易懂,为用户带来流畅的阅读体验,支持在线追更,让漫迷们能够第一时间跟随最新章节的发布。猫咪最新
小红书的内容营销策略的形式
  小红书的内容营销策略形式多样,主要包括以下几种,酷驴小编带大家来了解:  1.蒲公英平台合作:  蒲公英平台是品牌与小红书博主之间的连接点,通过精准匹配,品牌能够找到合适的博主与其进行内容共创,实现有效的内容营销。  2.
站长利用数据分析工具有效评估网站运营成效
  在数字化时代,网站运营的成功与否往往取决于站长如何利用数据分析工具来评估和优化其运营效果。数据分析工具不仅可以帮助站长了解网站的流量、用户行为、来源渠道等关键信息,还能为站长提供有价值的洞察,以指导其做出更明智的决策。
相关文章
推荐文章
发表评论
0评