最好看的新闻,最实用的信息
12月23日 21.2°C-23.8°C
澳元 : 人民币=4.56
布里斯班
今日澳洲app下载
登录 注册

GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了(组图)

2021-07-04 来源: 量子位 原文链接 评论6条

本周GitHub官方和OpenAI联合发布了一款代码神器AI——GitHub Copilot,只需输入注释,即可自动生成代码,堪称一位“AI程序员”。真人程序们表示非常激动。

它究竟有多厉害呢?有位程序员尝试了一下平方根倒数速算法(Fast Inverse Square Root),结果出人意料。

只是打出来这四个关键词,GitHub Copilot就逐行“完美复刻”了当年那段神奇的算法。

GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了(组图) - 1

这是当年在游戏《雷神之锤3》(Quake 3)中使用的一段代码,用于计算归一化向量,因其算法之简洁快速而闻名,也被叫做Quake代码。

我们再对比一下这两串代码,不能说是十分相似,只能说是一模一样。

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;
    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 );               // what the fuck? 
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration
//    y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed
    return y;
}
△

甚至GitHub Copilot连当年那句“what the fuck”的注释也用上了。

这不禁让人细思极恐:难道这不侵犯版权吗?

还真是!这位程序员发现,GitHub Copilot好像忘了开源许可证,这就尴尬了。

而Quake代码十年前就在GitHub上开源了,在Readme文档中,原作者明确表示使用的是GPL开源许可证。

GPL许可证要求:如果分发包含GPL代码的新版程序,则需要向每个人都提供免费获得的完整源代码。

所以这位程序员只好在代码前手动加入了几行注释,算是给他人的警示吧。

GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了(组图) - 2

使用Copilot有抄袭风险

关于GitHub Copilot直接“抄袭”Quake代码的事情,在Hacker News论坛上引起热议。

对此,程序员表示,如果贸然使用GitHub Copilot,而忽略了代码背后开源许可证,那么你有可能会被起诉。

一家科技公司的产品安全负责人明确表示:禁止员工使用GitHub Copilot。

如果不开源的商用软件使用GitHub Copilot开发的代码,而没有按照开源许可证的要求执行,就会给公司招来法律风险。

不过,也有程序员表示,我用AI写的程序关我什么事,有责任那也是GitHub母公司微软的。

但是在GitHub Copilot下载页面中并没有相关法律风险的提示,而且GitHub还表示这个AI不是一个“背题家”,它生成的绝大多数代码都是唯一的。

在0.1%的情况下,GitHub Copilot建议可能包含一些来自训练集的逐字片段。

GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了(组图) - 3

结果GitHub Copilot却把人家整段的代码都抄来了,而且连注释都附带上。

还有程序员表示,不用太担心。其实GitHub Copilot的这种行为,和某些程序员直接抄Stack Overflow的代码没有啥区别,因为很多Stack Overflow上的代码也没有给出许可证信息。很多直接搬运Stack Overflow代码的行为也没有被起诉。

但是谨慎起见,用GitHub Copilot还是长点心吧。

One More Thing

最后关于Quake代码这件事,还值得再说两句。

由于当年显卡等图形渲染硬件的配置较低,为了能实现更好的光照效果,必须对算法进行极致优化,而求平方根倒数是绕不开的一项运算,每秒要进行上百万次。

因此就有一位算法大神,通过浮点数与整型的转换,以及移位操作,成功将求平方根倒数压缩到短短几次操作。(详细原理可参照维基百科介绍)

关于这个算法究竟是谁发明的,一直众说纷纭,没有定论。但那句注释让Quake代码更加出名。

当年开发《雷神之锤3》的程序员使用了大神的算法,却没有看懂其中的精髓:“i = 0x5f3759df - ( i >> 1 ); ”这一句 ,所以只好在注释里写下了“what the fuck”。

没想到近20年后,AI还是和人一样成了复读机,只能膜拜算法大神了。(手动狗头)

今日评论 网友评论仅供其表达个人看法,并不表明网站立场。
最新评论(6)
chefchanyu
chefchanyu 2021-07-04 回复
Github 就是互抄,程序人員很多都是抄開始的,沒什麼大驚小怪
_陈小C
_陈小C 2021-07-04 回复
不只是优化了那个值那么简单,他优化出来的那个只比超算算出来的最优值 只差了一点点,这是最恐怖的
小熊
小熊 2021-07-04 回复
还没法用 等申请
Aliceonthemoon
Aliceonthemoon 2021-07-04 回复
平方根那个算法是卡马克从一个叫mit hackmem的笔记上抄来的,优化了那么魔法值
jennieLLL
jennieLLL 2021-07-04 回复
所以我就问这段玩意儿到底有几个人看得懂


Copyright Media Today Group Pty Ltd.隐私条款联系我们商务合作加入我们

电话: (02) 8999 8797

联系邮箱: [email protected] 商业合作: [email protected]网站地图

法律顾问:AHL法律 – 澳洲最大华人律师行新闻爆料:[email protected]

友情链接: 华人找房 到家 今日支付Umall今日优选