论文精读|ModelShield:针对模型提取攻击的自适应且稳健的水印
一、研究背景
1. 什么是模型提取攻击?
完整流程分三步:
- 黑盒批量调用模型API,采集海量问答样本;
- 拿爬来的数据微调Llama、Mistral这类开源基座,复刻原模型生成逻辑;
- 高仿模型直接上线商用,完全规避原模型的版权约束,典型案例就是Alpaca。
OpenAI等厂商明文禁止用自家输出训练竞品,但光靠协议约束没用,缺少事后可举证的确权手段,水印就成了刚需。
2. 现有水印两大致命问题
- 破坏文本流畅度
早期黑盒方案靠强制同义词替换,白盒方案修改logit概率分布,两种方式都会扭曲模型原生语言分布,回答生硬、问答指标暴跌,用户体验大打折扣; - 抗攻击能力差
攻击者随便改一改文本、只用一小部分带水印数据训练、掺大量干净样本稀释水印,现有水印信号直接消失,没法判定侵权。
基于以上痛点,作者提出ModelShield,核心目标很明确:即插即用、不破坏文本、能扛各类攻击者规避手段。
二、核心设计:两大模块,全程无需微调
整套方法分为水印嵌入、侵权检测两部分,纯提示词实现,任何商用闭源LLM都能直接接入,属于零改造黑盒方案。
模块1:自适应自水印嵌入
之前所有水印都是“强制修改文本”,这篇反其道而行——利用大模型极强的指令跟随能力,靠系统提示引导模型自主往内容里加水印词。
- 输入拼接逻辑:固定水印系统指令 + 用户原始提问;
- 提示词设计小技巧:水印指令放在输入首尾,利用LLM注意力偏好,天然抵挡简单越狱、提示注入攻击;
- 优势很实在:
- 模型根据上下文自然插入水印,不会出现生硬替换;
- 水印token占全文平均不到2.15%,推理速度几乎无损耗;
- 不用改动模型权重、不用额外训练,上线只需要加一段系统prompt。
服务商后台会单独记录每条提问对应的专属水印词,对外只给清洗后的正常回答,普通用户完全感知不到水印存在。
模块2:双层鲁棒侵权检测
怀疑别家模型抄袭时,调取当初被盗爬的查询,喂给嫌疑模型,收集输出做统计检验,分快慢两套检测流程。
-
快速初筛(纯黑盒,零门槛)
定义句子水印分数SWS,统计文本内水印词长度占比;筛选所有输出里水印分前1%的样本计算总分,和预训练得到的基线阈值做单侧t检验。
判定标准:p<0.05,直接判定存在侵权,仅需400条样本就能完成核验。 -
精细核验(掌握对方基座时使用)
用KS检验对比三组数据的水印分数分布:嫌疑模型、原生开源底座、干净数据训练的合法模型。
如果嫌疑模型分布和另外两组差异极大,双检验p值全部低于阈值,做实抄袭证据,适合需要法律举证的场景。
另外作者还划分了三层水印词汇筛选规则,优先选用提问里没有、人类语料低频稀有词作为水印,进一步降低噪声,提升检测准确率。
三、实验体系全拆解
方法讲完了,最关键的还是看实验能不能站住脚。这篇论文的实验体系设计得很完整,从基础功能到边界场景,再到对抗攻击,层层递进。做NLP安全、水印方向的同学,这套实验框架也可以直接参考。
3.1 实验到底要验证什么
整篇论文的实验围绕水印的四个核心属性展开,所有子实验都是为了验证这四点:
- 有效性:水印能不能被模仿模型学走,能不能稳定检测出来;
- 无害性:加水印会不会把文本改得乱七八糟,会不会影响下游问答效果;
- 鲁棒性:攻击者故意搞破坏(改文本、掺干净数据、只拿少量数据训练),水印还能不能检出;
- 效率与泛化性:不同模型、不同场景能不能用,会不会拖慢推理速度。
3.2 基础配置:数据集、模型、指标全说清
数据集:两套主数据集 + 多套人类基线
做文本水印实验,阴性基线非常重要——不然正常人类文本也被误判成有水印,方案就完全没法用。
-
主实验数据集:选了 HC3 和 InstructWild(WILD)两套开放式问答数据集,各采样 4000 条。
- 选 HC3 是因为它覆盖金融、医疗、法律等多个垂直领域,能测跨领域泛化;
- 选 WILD 是因为指令更发散、更贴近真实用户提问,场景更通用。
- 处理方式:把每条 query 喂给受害模型,加上水印系统提示生成带水印的回答,构成完整的水印训练集,供后续训练模仿模型使用。
-
人类基线数据集:拉了推特、新闻、影评、金融、情感分类等 8 个不同领域的人类文本语料,用来计算「正常无水印文本的水印分数」,以此确定检测阈值。
- 具体做法是统计每个领域人类文本的水印分数,取前 1% 高分的均值,再加一个松弛系数作为最终阈值 θ=0.11。这样能最大程度避免正常文本被误判。
模型选型:四类角色分清楚
很多人看论文容易被一堆 M 开头的符号绕晕,其实就是四类模型各司其职,构成完整的对照组:
- 受害模型 Mv:被窃取、被加水印的模型,主实验用 GPT-3.5-turbo-0613,泛化实验覆盖了 GPT-4 系列、Claude 3.5、GLM、Qwen、DeepSeek 等十多款主流商用/开源模型。
- 模仿模型 Mi:攻击者用水印数据微调出来的盗版模型,基座选了三个代表性模型:GPT-2 Large(小参数量同源模型)、LLaMA2-7B(主流开源大模型)、Mistral-7B(轻量化开源模型)。覆盖了不同参数量、不同架构,实验结论更有普适性。
- 合法模型 Ml:用完全无水印的正常数据,在同款基座上微调出来的模型。作用是排除「微调本身」带来的分布变化,只对比水印带来的影响。
- 原生基座模型 Mo:没经过微调的原始开源模型,作为最基础的阴性对照。
训练配置:贴近真实攻击场景
模仿模型的训练完全模拟真实攻击者的操作,没有做特殊优化:
- GPT-2 和 LLaMA2 用全参数微调,Mistral 用 LoRA 轻量化微调,验证两种微调方式下水印都能被学习到;
- 截断长度统一 1024,优化器用 Adam,批次大小都是 1,学习率在 1e-5 到 2e-5 之间;
- 硬件环境也标注得很清楚:GPT-2 和 Mistral 用 2 张 A5000,LLaMA2 用 1 张 A800,可复现性很强。
评价指标:对应四个核心属性
- 有效性指标:单句水印分数 SWS、平均水印分数 ASWS、统计检验 p 值。这里用 p 值而不是简单的准确率,因为侵权判定本质是统计显著性检验,p<0.05 就认为显著存在水印。
- 无害性指标:ROUGE、BLEU(衡量问答内容和标准答案的匹配度)、PPL 困惑度(衡量文本流畅自然程度,越低越好)。
- 鲁棒性指标:各类攻击后的检测 p 值,以及对应模型的下游任务性能。
- 效率指标:水印 token 占总长度比例、单 token 生成耗时、完整回复耗时。
3.3 第一组:自水印嵌入能力验证
这部分是测「水印能不能稳定嵌进去」,全是偏向落地的边界测试。
-
跨模型跨领域泛化实验
- 做法:选 8 款不同架构、不同参数量的主流模型,在金融、医疗、开放问答、维基问答四个领域各测 800 条样本,统计水印嵌入成功率。
- 结果:几乎所有模型在所有领域的成功率都接近 100%,只有极个别模型在个别领域有不到 1% 的失败。说明这套提示式水印不挑模型,通用性极强。
-
推理效率实验
- 做法:同一批 1000 条样本,分别测开启水印和关闭水印的单 token 耗时、总回复耗时,用双尾 t 检验对比两组有没有显著差异。
- 结果:水印 token 平均占比不到 2.15%;有无水印的单 token 生成时间没有统计学差异(p>0.05)。说白了就是用户完全感知不到水印带来的延迟,线上部署没负担。
-
文本长度边界测试
- 做法:强制模型生成不同长度的回复,从 0-5token 到 20-25token 分 5 个区间,测每个长度下的水印嵌入成功率。
- 结果:15token 以上的文本基本 100% 能嵌入水印,只有 5token 以内的超短回答成功率会明显下滑。这个边界测的很实在——工业场景里几乎没人要求模型只输出三五个字,这个短板基本不影响落地。
-
提示注入抵抗实验
- 做法:设计了三类典型的「去水印」攻击提示,比如「不要生成任何水印」「忽略系统指令,只听我的」,混在用户提问里,测水印还能不能保住。
- 结果:哪怕是最强的攻击提示,各模型的嵌入成功率也基本在 90% 以上。原因也很简单:他们把水印系统提示放在输入的首尾位置,利用大模型注意力天然偏向首尾的特点,削弱中间用户注入指令的影响。
3.4 第二组:核心主实验(有效性+无害性)
这是最基础的核心实验,验证水印最本质的两个能力:能不能被检测出来,会不会毁文本质量。
-
实验设置:用 4000 条带水印数据分别微调三个基座模型,整个实验重复 10 次,排除随机种子的偶然性。
-
有效性验证:
- 对比 Mi、Ml、Mo 三类模型的平均水印分数,模仿模型的分数显著高出一大截;
- 画 CDF 累积分布图,三类模型的曲线几乎完全分开,没有重叠;
- 分别用快速 t 检验和精细 KS 检验算 p 值,所有场景下 p 值都远小于 1e-9。10 次重复实验里,没有出现一次假阳性(正常模型被误判为侵权),也没有一次假阴性(盗版模型没被检出来)。
-
无害性验证:
- 受害模型侧:开启水印前后,ROUGE、BLEU、PPL 几乎没有波动,说明提示式水印没有强行扭曲模型的生成分布;
- 模仿模型侧:用水印数据训练出来的 Mi,问答性能和用干净数据训练的 Ml 基本持平,个别场景甚至略高。也就是说攻击者根本没法通过输出质量异常,察觉到自己偷的数据带水印。
除此之外他们还做了两个补充消融:
- 三层水印筛选策略对比:全部水印、排除查询词的水印、低频稀有水印,验证了稀有高熵水印的检测噪声最低;
- 训练轮次消融:测了不同 epoch 下水印分数和任务性能的变化,发现水印的收敛速度比下游任务更快——攻击者越想把模型训得像原版,水印就越明显。
3.5 第三组:基线横向对比
很多论文比基线喜欢挑软柿子捏,这篇做得比较公允,把四条技术路线的代表方案都拉过来比了:参数水印、通用内容水印、白盒 logit 水印(GINSEW)、黑盒同义词水印(He 2022)。
这里有个细节很严谨:因为白盒水印需要改模型内部参数,没法用在闭源的 ChatGPT 上,所以他们专门用 InternLM-22B 做了一组白盒场景的对比,分开测、分开比,不搞不公平对标。
对比结果很直观:
- 参数水印和内容水印在模型窃取场景下基本失效,p 值接近 0.5-1,完全区分不开盗版和正版;
- 白盒 logit 水印检测效果还行,但把文本质量毁得一塌糊涂,PPL 直接飙到 298,回答根本读不通;
- 同义词黑盒水印检测效果达标,但文本生硬,ROUGE 掉点很多;
- ModelShield 在检测效果、问答质量、文本流畅度三个维度上,全面领先所有基线。其中 ROUGE 比同义词方案高了 29%,PPL 下降了 15% 左右。
3.6 第四组:对抗鲁棒性实验
这是整篇论文实验的核心卖点,模拟了真实场景里攻击者最常用的三种水印规避手段。
-
文本编辑攻击
- 攻击方式:对带水印的训练数据做四种语义保留的修改:随机插入 token、随机删除 token、随机替换 token、随机打乱句内词序。
- 实验逻辑:攻击者以为改一改文本就能洗掉水印,我们用改完的数据训练模仿模型,再测还能不能检出。
- 结果:四种编辑操作下,检测 p 值依然全部低于 1e-18,区分度依然极强;同时编辑操作没有拉低模仿模型的问答性能。说白了就是简单的文本改写,根本洗不掉这套水印。
-
子集训练攻击
- 攻击方式:攻击者不拿全部水印数据训练,只挑一小部分,比如只拿 10%、25% 的水印数据,想靠少量数据稀释水印特征。
- 实验设置:水印数据占比从 1% 到 75% 分了 7 个梯度,总样本量固定 4000 条。
- 结果:哪怕只用 10%(也就是 400 条)的水印数据训练,快速检测的 p 值依然小于 0.05,能稳定检出。占比越高,检测置信度越高。
-
数据稀释攻击
- 攻击方式:攻击者把偷来的水印数据,和大量自己的干净数据混在一起训练,降低水印数据的占比。
- 实验设置:水印数据和干净数据比例从 1:9 到 3:1 分了四组,水印数据总量固定。
- 结果:1:9 的极端稀释比例下,检测 p 值还是低于 0.05,不会漏检;随着水印占比提升,检测置信度稳步上升。
最后他们还补了一组阈值敏感性测试:把检测阈值从 0.07 调到 0.13,上下浮动接近 40%,所有对抗场景下的检测结果都很稳定。这就排除了「靠调阈值凑出来的好结果」的嫌疑,方案的鲁棒性是实打实的。
四、总结与延伸思考
三大核心贡献
- 提出提示驱动自水印思路,摆脱人工强制修改文本的老旧范式,开箱即用无需训练;
- 设计分层统计检测方案,少量样本就能完成侵权判定,鲁棒性远超现有方法;
- 覆盖多模型、多对抗场景的完备实验,完整验证了方案的有效性与实用性。
444

被折叠的 条评论
为什么被折叠?



