使用少量数据去除神经网络中的水印 – WILD
简介
这次介绍一篇文章, 名为Removing Backdoor-Based Watermarks in Neural Networks with Limited Data。
针对现有的利用后门攻击在神经网络中构建水印的工作,该文章主要是提出了一个去除水印的框架。
关于后门攻击,你可以查看我的这篇文章
首先我们来看一下水印是怎么来的,如下图所示
首先,我们通过对训练数据进行投毒,构建出一个带水印的模型,使得:模型一旦接受到带有水印的输入,则会输出一个预定义的标签,标识出水印的存在
WILD框架
文章提出了一个名为WILD的框架,用于去除网络中的水印,我们来看看框架的大致情形
如上图所示,该框架的数据输入有两个部分:
- 干净的数据,即 d c l e a n d_{clean} dclean
- 扩增后的数据,即 d a u g d_{aug} daug
我们可以看到,最终产生的误差包括两个部分:
- 扩增后的数据的基础误差,即 L a u g \mathcal{L}_{aug} Laug
- 扩增数据和正常数据的距离误差,即 D ( G ( d a u g ) , G ( d c l e a n ) ) \mathcal{D}(\mathcal{G}(d_{aug}),\mathcal{G}(d_{clean})) D(G(daug),G(dclean))
其中,函数 D \mathcal{D} D 是一个距离度量函数,函数 G \mathcal{G} G 是一个特征映射函数,即 G ( x ) \mathcal{G}(x) G(x) 会将 x x x 映射到一个特征向量。
对于 G \mathcal{G} G ,一个最简单的例子就是,用ImageNet进行Pretrain的VGG网络的倒数第一层的输出
实验评估
文章在三种不同类型的水印上进行训练和测试, 如下图所示:
分为三种:
- 基于内容的:即直接对某个区域进行修改,将整个区域的像素值改为某个固定值
- 基于噪声的:属于整体上的修改,添加高斯噪声
- 无关的:比如用训练集类别之外的数据
我们来看看在CIFAR-10上的表现:
可以看到,在无关的水印上,所有方法的去除表现最差;在基于噪声的水印上,所有方法的去除表现最好
对比先前的方法REFIT,水印的去除效果更加明显。
Refit: a unified watermark removal framework for deep learning systems with limited data
在基于内容和基于噪声的水印上,基本上只要10%的数据,就可以实现不错的去除效果了。