直接复制粘贴训练集里的代码,一把双刃剑
优采云 发布时间: 2021-07-07 07:38直接复制粘贴训练集里的代码,一把双刃剑
直接复制粘贴训练集中的代码,和原评论一模一样。 AI的“复制能力”被认可。
GitHub 本周发布的 AI 代码合成器 GitHub Copilot 是科技界备受关注的话题。传统IDE通常使用搜索引擎的方式来完成代码,而这个代码神器Copilot,据说提出的大部分代码建议都是新生成的。
Copilot 发布后,不少网友惊呼代码补全效果“震撼”,给予了非常高的评价。但几天之内,一些试用用户发现了一个新问题:Copilot 使用的开源代码数据集可能存在侵权。本来只是猜测,但就在十几个小时前,有网友曝光了Copilot复制粘贴代码的真锤,在几十秒的*敏*感*词*中似乎颠覆了Copilot的“原生”形象。
“我什么也没说,但是副驾驶,这不太好。”发现 AI 复制代码的程序员 Armin Ronacher 来自奥地利。
Copilot 照原样复制了经典射击游戏《雷神之锤》中的代码,还有注释,比如“What the f**k”……
复制代码:#L552
人工智能生成的代码:
有网友评论称,GitHub 的 Copilot 迅速走上了微软 AI 聊天机器人 Tay 的老路(GitHub 于 2018 年被微软收购)。
似乎事情并没有 GitHub 最初说的那么简单。
AI敲代码,一把双刃剑
GitHub Copilot 作为微软、OpenAI 和 GitHub 联合打造的代码生成工具,由 OpenAI 开发的全新 AI 系统 OpenAI Codex 支持,并已在数十亿行公共代码上进行训练。其主要功能包括完成函数代码、根据注释生成代码等,暂时仅支持Python、JavaScript、TypeScript、Ruby和Go语言。
目前,Copilot 仍在发布技术预览版。用户可以在首页注册并注册,将有机会访问和使用。
GitHub Copilot 注册地址:
OpenAI Codex 在人们如何使用代码方面拥有丰富的知识,在代码生成领域明显优于 GPT-3。这是因为 Codex 的训练集收录从 GitHub 和英文示例中提取的 TB(太字节)公开可用代码。
但是,自发布以来,Copilot 代码训练集的版权一直存在争议。此外,关于 Copilot 所基于的算法模型 Codex 的公开信息并不多。一时间,“Copilot是否涉及侵权”成为讨论的焦点。
有人开始认为,既然GitHub是微软的公司,OpenAI也拿了微软10亿的巨额投资。那么,Copilot 是使用微软内部源代码进行训练的吗?或者将来会如此?会不会偶尔吐出一些Windows内核代码?
想象一下,当 Copilot 添加对 C++ 的支持时,有人会用它来编写具有 Win32 兼容 API 的操作系统。鉴于GitHub平台上大量泄露的Windows源代码,Copilot在这个过程中肯定会产生大量的代码。最后,微软会认为使用他们的 AI 生成的代码侵犯了他们的版权吗?
减轻负担还是增加拥堵?
类似的担忧很普遍。如果 Copilot 生成的代码是从其他项目的代码“复制”而来的,那么使用它的开发人员将不知道他们编写的代码片段是否受版权保护。这就像一颗定时*敏*感*词*。
如果开发者未能及时发现代码中的问题,最终造成麻烦,看来Copilot也应该负责?因为代码是它的衍生物。更糟糕的是,作为用户,即使我们想遵守任何代码许可,似乎也进不去。
对于“复制粘贴”的那段代码,经查明该段代码为GPL原授权版本,并收录在维基百科的条目内容中,不构成侵权。
这个著名的原创功能也有出处:《贵格会3》是1990年代的经典游戏。这个系列不仅在画面和内容上(当时)都很优秀,更难能可贵的是,即使你的电脑配置很低,也能流畅运行。这要归功于其 3D 引擎的开发者 John Carmack。
游戏 3D 引擎中的数学运算都经过精心编写。在game/code/q_math.c中,上面代码的作用是将一个数平方并取下来。经测试,这段代码比Float(float)(1.0/sqrt(x))用系统自带的sqrt函数快4倍。
神秘数字0x5f3759df很有用,但很少有人能清楚地解释它的起源。这种难以理解但有效的幻数通常被称为幻数。从“WTF”的评论来看,审核的程序员可能没看明白。
后来的另一篇论文解释了这个常数:
虽然 Quake3 的平方根提取算法已经被游戏公司公开,但我们并不确切知道 AI 会学习哪些代码。
有人说:“我看不出这个工具的意义。生成有效的代码从来都不是人类开发人员的瓶颈。没有项目因为代码输入速度不够快而失败。真正的瓶颈在于理解代码是如何工作的,如何正确设计,如何根据现有设计进行更改,如何对现有代码进行故障排除等等。这个工具不会让任何事情变得更容易,它只会让事情变得更难,因为现在你运行的软件不是任何人写的,没有人完全理解它。”
当然,写代码的速度不是瓶颈,但是有一个减少重复编码的工具总是一件好事。但是对于企业开发者来说,在发布代码之前检查代码的工作可能有点繁重。
编写代码的自动化一直是人们期望实现的目标,也是AI领域正在努力实现的方向。但是,代码自动化与其他自动化任务相比,在实现难度和版权划分上更加复杂和复杂。 Copilot 无疑给自动代码生成带来了新的希望,但要完全实现自动编程还有很长的路要走。
参考内容: