在人工智能和自然语言处理迅速发展的领域中,代码语言模型已成为技术互动的基石。它们能够基于提示生成代码,从而彻底改变了我们与技术的互动方式。然而,这一进步带来了一个关键问题:知识产权侵犯。
在本篇博客中,我们将深入探讨在ICML '23上展示的一项开创性研究,探索大型语言模型在代码生成中侵犯知识产权的程度。
本文为邹德清教授的《网络安全专题》课堂笔记系列的文章,本次专题主题为大模型。
姬煜同学@WillJi3:分享了CODEIPPROMPT: Intellectual Property Infringement Assessment of Code Language Models《CODEIPPROMPT:代码语言模型的知识产权侵权评估》
分享时的PPT简洁大方,重点突出
论文:https://dl.acm.org/doi/10.5555/3618408.3620098
该论文发表于机器学习领域的顶会ICML ’23(International Conference on Machine Learning)
ICML与其他几个会议如NeurIPS(神经信息处理系统会议)和CVPR(计算机视觉和模式识别会议)一起,被广泛认为是人工智能和机器学习领域最具影响力和声望的会议之一。
ICML专注于机器学习的最新理论、算法和应用。
在我们拥抱大型语言模型在代码生成中带来的进步的同时,解决伴随而来的知识产权挑战变得至关重要。
这项研究不仅突出了这些挑战的程度,还为未来研究和开发更加道德和合规的AI系统打开了新的途径。
侵权的标准:没有相应的法律法规
相似度是为了找到侵权的一个判断标准
在不影响性能的情况下,代码变形后,监测不出来
所以,不能仅根据代码相似度来判断侵权
研究背景: 随着大型语言模型(LMs)的最新进展,它们在合成编程代码方面的能力得到了提升。然而,这也引发了关于知识产权(IP)侵权的担忧。尽管这一问题的重要性,但目前研究较少。
研究目的: 本文旨在通过提出CODEIPPROMPT平台来弥补这一研究空白。该平台用于自动评估代码语言模型可能复制许可程序的程度。
主要组成: CODEIPPROMPT包括两个关键组件:从受许可的代码数据库中构建的提示,以激发LMs生成侵犯IP的代码,以及用于评估代码LMs的IP侵权程度的测量工具。
评估活动: 对现有的开源代码LMs和商业产品进行了广泛评估,揭示了所有这些模型中普遍存在的IP侵权问题。
根本原因: 发现根本原因是训练语料库中受限制许可证内容的比例较大,这既是出于有意包含,也是由于现实世界中许可证实践的不一致所导致。
缓解策略: 探索了包括微调和动态令牌过滤在内的潜在缓解策略。
研究贡献: 我们的研究为评估现有代码生成平台的IP侵权问题提供了一个测试平台,并强调了需要更好的缓解策略。
大语言模型的最新进展为人工智能和自然语言处理带来了革命性的变化,大模型能够根据Prompts的要求自动生成代码
核心问题是:大模型会在不遵守相关许可证
的情况下生成与现有程序相似甚至相同的代码
在用户不知情或未被告知的情况下使用了大模型自动生成的代码,可能会侵犯开源项目的代码知识产权
,造成法律风险
微软、Github和OpenAI共同诉讼案等情况突显了这个问题的紧迫性:因为它允许Copilot在不遵守许可条款的情况下复制许可代码(Butterick, 2022)// 在不知情的情况下无意中侵犯原创作品
该研究解决的关键问题是:如何自动评估大型模型在侵犯受版权保护的开源许可证代码方面的程度?
CODEIPPROMPT框架的开发,是首个自动化测试大型代码模型侵权情况的框架。
目标:通过大模型代码生成,揭示代码产权保护的前景
主流开源许可证可以根据许可条款所要求的许可程度进行分类。
Copyleft是由自由软件运动发展而来的概念,是一种开源许可方式,它授予用户复制、修改或分发软件的权利
CODEIPPROMPT框架包括
从受许可的开源代码中 提取函数签名和注释来构建提示。
然后使用代码抄袭相似性分数来衡量侵权程度。
开源仓库需具备以下特征:
CODEIPPROMPT从Github中收集了采用34种不同license的开源项目,共计4,075,553个
一种基于函数签名的Prompt
Prompt的构造来源:
代码注释 -> 反映了程序功能
函数签名 -> 反映了程序语法
Prompt的构造方法:
正则表达式匹配
Prompt的生成对象:
被copyleft和Permisive许可保护的源文件
现阶段代码侵权需要由法官的经验判断,CODEIPPROMPT提出了基于代码相似性分数
进行剽窃评估
由1K个bootstrapped样本的最大得分的平均值计算的期望最大相似度
EM评分衡量生成代码与已有代码最相似的情况 【剽窃程度】
在样本中至少生成一次评分为> 0.5的代码的平均概率
EP评分反映了模型生成侵权代码的频率 【剽窃概率】
随着越来越多的用户使用GPT进行代码生成,采取措施解决代码侵权问题成为当务之急!
50 generations内生成侵权代码
,且概率较高
相似分数最低
(人工检查发现其生成的代码大多是错误的)更高的EM和EP
(因为其采用了额外的python项目对CodeT5-large进行了微调)这两个模型可以在generation 100内生成高度相似的代码
,其概率为p > 0.9
EM和EP都随着n的增大而增大
,因为更多的试验会生成更多代码
当n非常小或非常大时,会非常困难或很容易遇到抄袭现有代码
,因此下文的研究均保持generation为50
差异不大
预想:一些Prompt会从训练数据中的源代码获得,这种Prompt生成的代码重复性会更高
实验:构建了每个模型训练数据以外的Prompt,即过滤掉该模型训练数据的Prompt进行实验
过滤数据集的Prompt也产生了相对较高的分数
,尽管它们没有用于训练模型规模并没有显著影响代码的复制能力
不同训练数据集包含了大量共享的限制性代码
Permissive许可
,也有很大一部分是Copyleft许可
因此,必须仔细考虑数据的许可组成,以确保遵守许可并保护知识产权
现存问题:
调研内容:
调研结果:
发现了353个违规行为,占抽样数量的0.1%
该研究建议使用公共数据对模型进行微调以减少侵权,并引入动态令牌过滤方法。然而,这些策略并不能完全解决问题,并可能影响代码生成性能。
微调模型:进一步用公共数据调优模型使得大模型更倾向于生成限制较少的代码
动态Token过滤:每次只解码k个token,并使用CODEIPPROMPT框架评估相似性
如果分数高于0.5,则回滚一个token并从其余选项中进行选择
降低重复性的表现并不明显
缓解了代码生成的侵权现象
,但是代码生成的效果变差
这两种方法都不能完全解决问题
,而且可能会以降低代码生成性能为代价
如从训练数据集中移除限制性代码,并探索更智能的模型架构,以平衡代码质量与知识产权保护。
通过删除限制性代码缓解侵权
通过可控的代码生成缓解侵权(优化动态过滤策略)
通过启用更智能的模型缓解侵权