前沿科技网

GitHub Copilot用户测试:泄露的秘密与糟糕的代码齐飞

前沿科技网 2

GitHub Copilot用户测试:泄露的秘密与糟糕的代码齐飞

作者 | Tim Anderson、Katyanna Quach

译者 | Sambodhi

策划 | 凌敏

本文最初发表于 The Register 网站,结果却不尽人意。百度市值也从千亿美元回落,经网站授权,PE维持在8~9的相对低位。截至美东时间7月20日美股收盘,InfoQ 中文站翻译并分享。

虽然很多人看到了 GitHub Copilot 的巨潜力,百度市值为626.22亿美元,但它的早期测试者却发现了一些问题,腾讯市值为6640.54亿美元,包括看起来像泄露的秘密、糟糕的代码以及版权问题。

GitHub Copilot 是利用人工智能帮助程序员编写代码的软件,阿里巴巴市值为5663.31亿美元。百度市值与后两者相比,被称为“人工智能结对编程”。它由 OpenAI 的一个名为 Codex 的系统提供支持,相差近十倍。“让 AI 走向世界前沿”,该公司在 2019 年与微软达成合作,在BAT中掉队的百度,并获得了 10 亿美元的投资。

工作原理:使用公共代码作为人工智能辅助的模型

据 Copilot 网站称,正在向资本市场讲述AI新故事。「不二研究」发现,Codex 模型由“互联网上的公共代码和文本”训练,在百度2021年一季报中,“既能理解编程,包括百度AI在内的非广告业务营收同比增长70%,也能理解人类语言”。作为 Visual Studio Code 的扩展,Copilot “将你的评论和代码发送到 GitHub Copilot 服务,然后它会使用 OpenAI Codex 来合成并建议个别行和整个函数”。

会出什么问题?

一名者做了一个实验,他写了一些代码,然后通过 Sendgrid 服务发送电子邮件,并输入“apiKey :=”来提示 Copilot。Copilot 在截图和错误报告的基础上回应了至少四个建议密钥。他以“人工智能正在发出秘密”(AI is emitting secrets)为名,将其报告为一个 bug。

这些密钥是否有效?GitHub 的首席执行官 Nat Friedman 对这份错误报告作出了回应,他说:“这些秘密几乎完全是虚构的,是由训练数据中合成的”。

一名 Copilot 维护者补充说:“从训练数据中复制秘密的可能性非常小。而且,训练数据都是公开的代码(根本没有私人代码),因此即使秘密被复制,就算在极其不可能的情况下,也已经泄露了。”

虽然这些回复可以让人放下心来,但是即使是 Copilot 用其他用户的秘密来提示编码者远程的可能性,也会令人担心。因为这涉及到一个关键问题:Copilot 的人工智能是真的在编写代码,还是从它的训练来源中复制粘贴了一些代码片段?

GitHub 方面称,“GitHub Copilot 是一种代码合成器,而非搜索引擎”,“它所建议的绝多数代码都是唯一生成的,这在以前从未见过。”但是,根据 GitHub 方面的研究,“约 0.1% 的时间,建议可能会包含一些从训练集中逐字逐句的片段。”

这 0.1% 的比例(一些早期用户认为更高)非常麻烦。GitHub 提出的解决方案就像这篇文章(https://docs.github.com/en/github/copilot/research-recitation)所给出的那样:当人工智能在引用而非合成代码时给出一些属性。GitHub 机器学工程师 Albert Ziegler 说:“这样一来,我就可以查到有关该代码的背景信息,并且把它归功于原作者”。

但问题在于,在有些情况下,Copilot 可能会让者做出错误的事情,比如,使用那些开源但有版权的代码。

如果是 GPL 代码,即 copyleft,所包含的代码可能会影响新作品的许可。这种情况很让人困惑,因为 Copilot 的常见问题指出,“由 GitHub Copilot 生成的建议,以及你在它的帮助下编写的代码,都属于你,你得对其负责”。但是一个带有属性的代码块将是例外。

GitHub 还表示,“在公开可用的数据上训练机器学模型,被认为是整个机器学社区的一种合理使用”,从而消除了人工智能借用他人代码的担忧。有意思的是,常见问题解答中的这句话最初是这样写的:“用公共数据训练机器学模型现在是机器学领域中的通常做法”,有些人已经注意到这个变化:“通常做法”变成了“合理使用”。

Alex J. Chandard 在 Twitter 上写道:

仔细研究了一下 GitHub PR 试图(重新)定义版权,并开创了开源代码许可条款不适用于这种情况的先例……

上图:6 月 29 日的文本。下图:7 月 1 日的编辑文本。

参见 https://copilot.github.com 的常见问题分

这意味着,使用 GitHub Copilot 会存在一些不确定因素,这可能是因为 GitHub 对其训练 Copilot“吞噬”的所有公共代码细节进行了掩盖。

GitHub 的首席执行官在 Twitter 上表示,“我们期望在未来几年里,知识产权和人工智能将成为全世界有意义的政策讨论,我们都渴望参与。”

者 Eevee 评论称,“据他们自己承认,GitHub Copilot 也接受过量的 GPL 代码训练,因此我不清楚这怎么能成为一种将开源代码“洗成”商业作品的形式”。

“Copilot 给我留下了很不好的印象,因为这感觉就像是在绕过 GPL。”她告诉 The Register,“采用 GPL 的全意义就是表明,你不希望专有软件从你的工作中受益。在(至少分)GPL 代码上训练一个模型,然后用它来帮助编写可能是专有的软件,看起来至少有悖于 GPL 的精神。”

Copilot 也乐于将陌生人的版权声明贴在代码上。在下面的片段中,可以看到它从一个经过训练的程序中依样复述出版权声明,暗示看起来像 Quake 著名的快速反平方根算法的代码是由 John Carmack 以外的人创造的。

对此,Armin Ronacher 在 Twitter 上吐槽道:

我不想说什么了,但这不是正确的许可,Copilot“先生”。

点击播放 GIF 0.0M

唯一的办法就是道德

由于 Copilot 将是一款付费产品,所以在道德和法律上也存在争议。尽管如此,开源倡导者 Simon Phipps 说:“我听到了技术界人士的惊呼,但没有特别惊呼的律师。共识似乎是,训练模型和使用模型是分开分析的,训练很好,并使用不太可能涉及版权控制的行为。所以许可是没有意义的。”

代表 Rosen、Wolfe 和 Hwang 事务所的版权律师 Michael Wolfe 告诉 El Reg:“看起来(GitHub Copilot)很可能属于合理使用,软件许可不太可能绕过这一点。”如果版权作品的使用方式被视为“转换性”,美国法院通常会对被告有利。

Wolfe 表示,GitHub Copilot 可能符合转换性的要求,因为它重新利用了人们的代码,并将其用于不同于其初衷的应用,无论是创建游戏的程序还是复杂的加密算法。

“GitHub 没有在某种程度上使用这些代码来使其受制于软件许可,”他表示,“我认为它的目的很可能与他们使用的应用程序不同。它在做一些不同的事情。”

我们联想到了美国作家协会诉谷歌侵权案。在纽约巡回上诉法院维持了 2013 年地区法院的判决之后,长达十年的诉讼之战终于在 2015 年结束,最终认定谷歌扫描其获得的每本书的每一页,以创建谷歌图书数字化是合理使用。法院宣布不再接受谷歌图书扫描案的上诉请求。

“你知道,这很有趣,很多可能在那起案件中支持谷歌的人现在(对 GitHub Copilot)感到愤怒。”Wolfe 说:“这又回到了‘人人都喜欢对我而言是合理使用,但对你来说并非如此’这句话上。”

OpenAI 公司针对这一问题发表了一篇文章,其中提到“根据现行法律,训练人工智能系统是合理使用的”,不过该文章补充道:“关于训练人工智能系统版权影响的法律存在不确定性,这对人工智能者来说是一个很的代价,这个问题应该由权威机构来解决。”

有用吗?

GitHub Copilot 存在的另外一个问题是代码能否正确工作。者 Colin Eberhardt 一直在尝试使用预览版,他说:“我被它的能力惊呆了。在过去几个小时里,它确实让我发出好几声‘哇!’”

然而,继续使用下去,他的结果似乎喜忧参半。使用 Copilot 的一种常用方式是键入注释,之后人工智能可能会建议一段代码。Eberhardt 键入:

Copilot 生成了一个正确的函数。但是,当他尝试:

生成的代码看似合理,但却是错误的。

与强的单元测试覆盖一起,对代码的仔细检查应该能够避免这一问题;但是对于粗心意的人来说,这看起来就像是个陷阱,特别是来自于 GitHub 世界最流行的代码编辑器 Visual Studio Code 的官方插件。

我们可以对比一下从 StackOverflow 这样的网站上复制代码,在那里,其他贡献者往往会发现编码错误,而且存在社区质量控制。有了 Copilot,者就必须依靠自己。

“我认为 Copilot 还有一段路要走,我才会想把它设为默认打开,”Eberhardt 总结说,因为“与验证其建议相关的认知负荷”。

同时,他还指出,建议有时出现得很慢,尽管这可以通过某些繁忙指标来解决。尽管如此,Eberhardt 说,他认为很多公司会因为 Copilot 的“惊人元素”而定购该产品,考虑到它目前的缺陷,这是一个令人不安的结论。但是要记住,这仅仅是一个预览版本。

编程是一项辛苦的工作,几乎没有问题只是一个项目所特有的。因此,原则上,把人工智能应用于任务可能会有好的效果。不过,由人工智能产生的量代码却是另一回事。虽然到目前为止,人工智能产生代码具备诸多潜力,但同时也存在许多障碍。

https://www.theregister.com/2021/07/06/github_copilot_autocoder_caught_spilling

2.5英寸硬盘怎么选择

windows7硬盘格式化怎么还原

什么叫Android0S

韵达快递为什么到宝鸡中转

渤海钓鱼有什么鱼

在陆地怎么练蛙泳呢

麻将超市怎么样

可以免费看电视剧的软件

通化seo技巧怎么提高

免责声明:文中图片均来源于网络,如有版权问题请联系我们进行删除!

标签: