4、模型水印嵌入方法:参数嵌入、触发集嵌入、输出扰动等主流技术
TinyML模型部署在资源受限的MCU、传感器节点或边缘设备上,其模型文件小、推理路径短、更新频繁,传统的加密或混淆手段往往因算力开销过大而难以落地。水印嵌入因此成为版权保护的核心手段——它不追求阻止复制,而是追求“可证明的溯源”:当发现一个疑似盗用的模型时,版权方能够通过提取水印,在法律和技术层面证明该模型源自自己的原始版本。本章聚焦三类主流嵌入技术:参数嵌入、触发集嵌入和输出扰动,并讨论它们在TinyML场景下的适用边界与操作要点。
上图展示了三类水印嵌入技术的整体关系。参数嵌入直接修改模型权重,触发集嵌入通过构造特殊输入-输出对改变模型行为,输出扰动则在不改变权重的前提下调整推理结果的概率分布。三者各有优劣,实际工程中常根据模型结构、部署平台和威胁模型进行组合选择。下面逐一展开。
4.1 参数嵌入:直接修改权重,隐蔽性最强
参数嵌入的核心思想是将水印信息编码到模型的权重参数中。对于TinyML模型而言,权重通常以int8或float16存储,参数量从几万到几百万不等,这为水印提供了天然的载体。具体做法分为三个层次:
- 统计量调制:选取某一层或某几层的权重分布,通过微调均值、方差或特定分位数来嵌入比特位。例如,将某一卷积核的权重均值调整为预设值,若均值大于阈值则代表比特“1”,否则为“0”。
- 量化感知嵌入:TinyML模型普遍经过量化(如INT8),水印嵌入必须考虑量化误差。常见做法是在量化后的整数空间中,选择对精度影响最小的位(通常是LSB位)进行替换,同时用校准集验证精度损失不超过1%。
- 稀疏位替换:利用模型剪枝后产生的零值或接近零的权重位置,将水印比特写入这些“空闲”位置。由于这些位置对推理贡献极小,替换后几乎不影响精度。
参数嵌入的提取过程通常需要访问完整的模型权重文件。在TinyML场景下,这意味着需要从MCU的Flash中读取模型二进制,再在PC端进行水印提取。因此,该方法更适合于模型文件本身需要被保护、且版权方能够定期检查设备固件的场景。
- 确定水印长度(如64bit或128bit),生成水印序列。
- 选择嵌入层:优先选择全连接层或1x1卷积层,避免影响深层特征提取。
- 计算该层权重的统计分布,确定嵌入位置和调制幅度。
- 使用校准集评估精度变化,若精度下降超过阈值(如2%),则减小调制强度或更换嵌入层。
- 保存含水印模型,并记录提取密钥(层索引、调制规则、阈值)。
4.2 触发集嵌入:行为级水印,抗剪枝能力强
触发集嵌入不直接修改权重,而是通过构造一组特殊的输入样本(触发样本)及其对应的期望输出,在训练阶段将水印“训练”进模型的行为中。当模型遇到触发样本时,会输出预设的标签或概率分布;而遇到正常样本时,行为完全不受影响。
在TinyML场景下,触发集嵌入具有独特优势:
- 抗模型压缩:即使模型经过剪枝、量化和知识蒸馏,触发行为通常仍能保留,因为触发模式已经深度编码在特征提取层中。
- 无需访问权重:验证时只需向模型输入触发样本,观察输出即可判断水印是否存在,非常适合黑盒验证场景。
- 可叠加性:可以构造多组触发集,分别对应不同的版权方或授权版本,实现细粒度追踪。
触发样本的构造是关键。常见方法包括:在正常样本上叠加特定噪声模式、使用特定颜色或形状的补丁、或者选择训练集中不存在的“伪样本”。触发样本的数量通常为总训练集的1%~5%,过多会影响正常精度,过少则水印鲁棒性不足。
| 触发集类型 | 构造方式 | 适用场景 | 鲁棒性 |
|---|---|---|---|
| 噪声叠加型 | 在原始样本上添加固定高斯噪声 | 图像分类、语音唤醒 | 中(对滤波攻击敏感) |
| 补丁嵌入型 | 在图像角落粘贴特定图案 | 视觉TinyML模型 | 高(对裁剪鲁棒) |
| 伪样本型 | 使用GAN生成或随机拼接的样本 | 通用场景 | 高(但训练难度大) |
4.3 输出扰动:轻量级方案,适合在线验证
输出扰动方法不修改模型权重,也不改变训练过程,而是在推理阶段对输出概率分布进行微调,使其携带水印信息。这种方法特别适合已经部署、无法重新训练的TinyML模型。
具体实现方式包括:
- 软标签概率偏移:在softmax输出层之后,对特定类别的概率值进行微小偏移(如+0.01或-0.01),偏移模式即水印比特。
- 边界决策调制:对于二分类模型,调整决策边界附近的输出值,使特定输入产生可预测的置信度差异。
- 置信度编码:将水印信息编码为多个输入样本的置信度排序关系,例如“样本A的置信度大于样本B”代表比特“1”。
输出扰动的最大优势是部署后仍可添加水印,无需重新训练或重新编译模型。但缺点是鲁棒性较弱——如果攻击者对输出进行平滑处理或温度缩放,水印可能被破坏。因此,该方法更适合作为辅助水印,与参数嵌入或触发集嵌入组合使用。
4.4 实战案例:智能家居关键词唤醒模型的水印嵌入
某智能家居厂商开发了一款基于Cortex-M4的语音唤醒模型,参数量约120K,采用INT8量化,部署在本地MCU上。厂商发现市场上出现了疑似盗用其模型的产品,但对方修改了模型文件名和部分接口,难以直接证明版权归属。
初始约束:模型已量产,无法重新训练;MCU Flash空间仅剩8KB;推理延迟要求低于50ms;精度损失不得超过1%。
方案设计:
- 参数嵌入:选择最后一个全连接层的权重,该层有64个神经元,每个神经元对应一个唤醒词类别。将水印序列(32bit)编码为权重均值的奇偶性。具体做法:计算该层权重的全局均值,若需嵌入比特“1”,则微调权重使均值落在预设区间;若为“0”,则落在另一区间。调制幅度控制在0.02以内,经校准集验证精度损失仅0.3%。
- 触发集嵌入:构造了20个触发样本,每个样本是在正常唤醒词音频上叠加特定频率的噪声(如1kHz正弦波,幅度为原始信号的5%)。训练时将这些样本的标签统一设为“silence”类。由于触发样本仅占训练集的0.8%,正常精度未受影响。
- 输出扰动:在推理代码中增加了一个轻量级函数,当输入音频的MFCC特征满足特定模式时,将“silence”类的输出概率增加0.005。该模式由版权方持有,不对外公开。
验证过程:版权方从市场上购买了疑似盗用产品,提取其固件中的模型文件,在PC端运行参数提取脚本,成功还原出32bit水印序列,与原始水印完全匹配。随后,向该设备输入触发样本,设备输出了“silence”标签,而正常设备不会产生该行为。双重证据链完整,厂商成功发起法律维权。
代价与复盘:参数嵌入增加了约0.5%的Flash占用(存储提取密钥),触发集嵌入增加了约2%的训练时间,输出扰动增加了约3%的推理延迟(可忽略)。复盘发现,若攻击者对模型进行微调(如用新数据继续训练),参数嵌入可能被削弱,但触发集嵌入仍然有效,因为触发模式已深度编码在特征提取层中。因此,双重水印的组合显著提升了整体鲁棒性。
4.5 常见误区与总结
在实际项目中,工程师常陷入以下误区:
- 误区一:水印嵌入越隐蔽越好。过度隐蔽可能导致提取困难,甚至无法证明版权。应平衡隐蔽性与可验证性。
- 误区二:只使用一种水印方法。单一水印容易被针对性攻击。建议至少组合两种不同原理的方法。
- 误区三:忽略量化影响。在TinyML中,模型经过量化后,浮点域的水印可能被破坏。必须在量化后的模型上重新验证水印有效性。
- 误区四:水印影响正常精度。合理设计的水印对精度影响应小于1%。若超过2%,说明嵌入策略需要调整。
总结而言,参数嵌入适合静态取证,触发集嵌入适合动态验证,输出扰动适合轻量级补充。三者并非互斥,而是可以形成纵深防御体系。在TinyML的工程约束下,建议优先采用触发集嵌入作为主水印,参数嵌入作为备份,输出扰动作为快速检测手段。同时,水印密钥的存储和管理同样重要——密钥泄露等于水印失效,应使用MCU的安全区或独立安全芯片保存。