社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

数据与算法之美 • 2 年前 • 319 次点击  
晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

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

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

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

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

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

float Q_rsqrtfloat 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代码的新版程序,则需要向每个人都提供免费获得的完整源代码。

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

使用Copilot有抄袭风险

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

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

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

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

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

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

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

结果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还是和人一样成了复读机,只能膜拜算法大神了。(手动狗头)

参考链接:
[1]
https://twitter.com/mitsuhiko/status/1410886329924194309
[2]https://news.ycombinator.com/item?id=27710287
[3]https://github.com/id-Software/Quake
[4]https://en.wikipedia.org/wiki/Fast_inverse_square_root#History

—  —




    

你点的每个“看”,我都认真当成了喜欢
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/116621
 
319 次点击