1 前言
最近了解到数字水印技术在神经网络上的应用。我觉得蛮有意思的,就拿出来讲一讲,主要从大方向上讲解,生人亦可进。
- 可能提到数字水印,大家第一印象是,把带有个人象征的内容嵌入到原创作品中,如下图。
- 但考虑到通过p图技术可以把这种水印去掉,那么就有人这样做。在如下小姐姐的照片中,嵌入“老司机”图片。你敢信,一张小姐姐的图片,通过计算可生成“老司机”字样图片。我有个大胆的想法【手动狗头】。具体实现,可见 https://www.zhihu.com/question/50735753
—>解析出
- 当然,通过数字水印技术不仅可用来保护图片的版权。音频,文章等多媒体,都能加上个性水印。那随着深度学习的如日中天,神经网络的版权保护也愈发重要。要知道,一个可落地的神经网络应用,可要经过大量的算力以及人力。自己费尽心思搞好的模型,被别人用作商业用途,怎能不生气!
- 因此,数字水印在神经网络的应用开始火起来了。我们试图将一些个人水印嵌入到神经网络中,如果别人盗取了我们网络,我们通过密钥,解析出了我们的个性水印,你还敢说这个不是你偷的!
2 数字水印
现在我们讨论一些常用的数字水印方法,通过嵌入水印至神经网络参数,以此保护神经网络知识产权。有很多方法可以使用,这里将讨论最经典的,其他方法的实现思路大抵一致。
2.1 白盒方法
使用变换矩阵来执行水印嵌入。在模型训练过程中,模型不仅要完成它本身的分类任务,还要将我们的个人水印信息嵌入到模型的参数中。
Embedding Watermarks into Deep Neural Network ,在这篇文章中,作者是这样做的。
Step:
- 作者首先选择在神经网络的哪几层来嵌入水印。
- 然后,将被选中层的参数压平,将会与变换矩阵进行矩阵乘法,以此得到水印的信息,如下图。(例如64字节)
- 通过作者设计的损失函数,被选中层的参数以及变换矩阵都将在训练网络的时候被更新。
白盒验证:
对于大公司来说,他们可能正在从各处收集证据,以便他们可以起诉一个非法使用DNN模型的公司。一旦他们有证据,他们将进行验证过程。该过程是从DNN模型中提取水印,并比较水印是否来自大公司。
他们就是通过扁平权重与变换矩阵做矩阵乘法,然后将提取水印。但是,此过程是一个白盒验证,这意味着他们必须在物理上访问模型,这通常需要执法实现。
2.2 黑盒方法
黑盒嵌入主要包括两个步骤:
- 原始分类任务
- 触发集任务(trigger set task)
So,触发集又是什么呢?它实际上是一组被模型错误分类的数据,如下图。
错误的标签数据是一种水印,目标是让模型“记忆”指定的输入和标签,而这种记忆化形成了水印嵌入效果。虽然它可能会影响模型的学习效果,但是也有一些解决方案,这里就不详细说了。
黑盒验证:
这种水印嵌入方式实际上优于的白盒嵌入方法。这是因为只需要将触发集数据提交给模型,就能得到相应的查询。
通过调用API查询后,你将得到预期的标签。如果预期的标签与原始错误的标签匹配,则可以确认此模型偷了你的模型,因为在触发集数据上不可能具有精确匹配(或高精度)。如果模型没有被窃取,那么模型应该能够将猫图像分类为猫,而不是狗。
3 总结
我们需要保护我们的DNN模型,以防别人在未支付的情况下窃取。我们可以先通过黑盒验证,有一个初始判断,然后以此报告警方,使用执法的手段进行白盒验证。 (虽然我认为这只是大公司之间的战争😅)
以上大部分内容翻译from:
https://towardsdatascience.com/protect-your-deep-neural-network-by-embedding-watermarks-ed4898ec4ad7