前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >联邦学习下的数据逆向攻击 -- GradInversion

联邦学习下的数据逆向攻击 -- GradInversion

作者头像
Mezereon
发布2021-05-17 12:19:49
1.4K0
发布2021-05-17 12:19:49
举报
文章被收录于专栏:MyBlogMyBlog

这一次给大家介绍一个攻击,是NVIDIA的一个工作,最近被CVPR2021所收取。

"See through Gradients: Image Batch Recovery via GradInversion"

之所以介绍这个工作,是因为这个攻击通过梯度对于其他人的训练数据进行还原,效果也十分不错。

先前的攻击大多是成员推断攻击(membership inference), 大家使用差分隐私(DP,Differential Privacy)来进行数据的保护。成员推断攻击的目的是推断一个数据是否被用于模型的训练,但是一般来说大家会假设攻击者手上有一堆数据,既包括训练数据的一部分,也包括一些额外的数据。这个假设还是比较强的,在实际上,攻击者可能根本拿不到训练数据的一部分。

仍然缺少一个比较强的攻击,而这次的工作通过梯度对训练数据进行逆向,结果还十分不错,相当值得分享给大家!

关于联邦学习

首先需要先介绍一下联邦学习,如下图所示:

[图片上传失败...(image-662f24-1620808147078)]

会有许多参与者一同参与训练过程,每一个参与者拥有自己的数据,并且在本地进行训练,本地训练完之后会上传模型参数,由一个中心节点对进行模型的聚合,然后再下发到每一个参与者本地进行模型的同步。

联邦学习的优势在于,每一个节点的数据都保持在本地,保证了数据隐私,实现了异构数据的访问(也就是每一个参与者自己解决数据的访问问题,即便数据是异构的不会影响整体)。

但是,参与者仍然要将模型上传,这会不会造成数据隐私泄漏呢?

基于梯度的数据还原

首先,我们先给出目标的形式化:

x^* = \arg \min_{\hat{x}} L_{grad}(\hat{x};W, \Delta W) + R_{aux}(\hat{x})
x^* = \arg \min_{\hat{x}} L_{grad}(\hat{x};W, \Delta W) + R_{aux}(\hat{x})

其中

\hat{x} \in \mathbb{R}^{K\times C\times H\times W}
\hat{x} \in \mathbb{R}^{K\times C\times H\times W}

(

K
K

是batch size,

C,H,W
C,H,W

分别是通道数、高度、宽度), 式子中的

W
W

是模型的权重,

\Delta W
\Delta W

是聚合后的模型权重的变化量。

其中

L_{grad}
L_{grad}

的目的是,找到一些可能的输入,使得用这些输入训练后得到的权重,与聚合后的权重尽可能一致。

具体形式为

L_{grad}(\hat{x};W,\Delta W)=\alpha_G\Sigma_{l}||\nabla_{W^{(l)}}L(\hat{x},\hat{y}) - \Delta W^{(l)}||_2
L_{grad}(\hat{x};W,\Delta W)=\alpha_G\Sigma_{l}||\nabla_{W^{(l)}}L(\hat{x},\hat{y}) - \Delta W^{(l)}||_2

其中

\Delta W^{(l)} = \nabla_{W^{(l)}} L(x^*, y^*)
\Delta W^{(l)} = \nabla_{W^{(l)}} L(x^*, y^*)

, 代表真实的训练数据导致的第

l
l

层权重的变化量

先前的优化式子还有一项,称之为辅助的正则项(auxiliary regularization),具体形式为

R_{aux}(x) = R_{fidelity}(x) + R_{group}(x)
R_{aux}(x) = R_{fidelity}(x) + R_{group}(x)

由两项组成,第一项驱使

x
x

与真实的训练样本相似 ,第二项是一致性,我们会在后续给出说明。

批量标签恢复 (Batch Label Restoration)

考虑分类任务,记真实数据为

x^* = [x_1,x_2,...,x_K]
x^* = [x_1,x_2,...,x_K]

, 对应的标签为

y^* = [y_1,y_2,...,y_K]
y^* = [y_1,y_2,...,y_K]

对应的真实的梯度为

\nabla_WL(x^*,y^*) = \frac{1}{K}\sum_{k}\nabla_WL(x_k,y_k)
\nabla_WL(x^*,y^*) = \frac{1}{K}\sum_{k}\nabla_WL(x_k,y_k)

其中的误差函数可以理解为交叉熵(Cross-Entropy)误差

在分类任务中,网络的最后一层通常是一个全连接的线性层,我们将其记作

W^{(FC)}\in \mathbb{R}^{M\times N}
W^{(FC)}\in \mathbb{R}^{M\times N}

其中

M
M

是输入特征的维数,

N
N

是目标类别的总数目

对于训练样本

(x_k,y_k)
(x_k,y_k)

而言,记其线性层的增量为

\Delta W^{(FC)}_{m,n,k}=\nabla_{w_{m,n}}L(x_k,y_k)
\Delta W^{(FC)}_{m,n,k}=\nabla_{w_{m,n}}L(x_k,y_k)

应用链式法则,可以得到:

\Delta W^{(FC)}_{m,n,k} = \nabla_{z_{n,k}}L(x_k,y_k)\times\frac{\partial z_{n,k}}{\partial w_{m,n}}
\Delta W^{(FC)}_{m,n,k} = \nabla_{z_{n,k}}L(x_k,y_k)\times\frac{\partial z_{n,k}}{\partial w_{m,n}}

其中

z_{n,k}
z_{n,k}

代表输入为

x_k
x_k

的最终经过softmax层的第

n
n

个输出,梯度的形式为

\nabla_{z_{n,k}}L(x_k,y_k)=p_{k,n} - y_{k,n}
\nabla_{z_{n,k}}L(x_k,y_k)=p_{k,n} - y_{k,n}

也就是对应类别的概率减去标签值

注意到:

\frac{\partial z_{n,k}}{\partial w_{m,n}} = o_{m,k}
\frac{\partial z_{n,k}}{\partial w_{m,n}} = o_{m,k}

其中

o_{m,k}
o_{m,k}

就是全链接层的第

m
m

个输入。

这里需要解释一下,因为

W^{(FC)}\in \mathbb{R}^{M\times N}
W^{(FC)}\in \mathbb{R}^{M\times N}

,其输入为一个

M
M

维向量

v \in \mathbb{R}^M
v \in \mathbb{R}^M

对于一个特定的类别

n
n

, 其输出为

z_n = v\cdot W[:,n] = \sum_{i=1}^{M} v_{i}w_{i,n}
z_n = v\cdot W[:,n] = \sum_{i=1}^{M} v_{i}w_{i,n}

那么,立即有

\frac{\partial z_{n,k}}{\partial w_{m,n}} = \frac{\partial \sum_{i=1}^{M} v_{i}w_{i,n}}{\partial w_{m,n}} = v_{m}
\frac{\partial z_{n,k}}{\partial w_{m,n}} = \frac{\partial \sum_{i=1}^{M} v_{i}w_{i,n}}{\partial w_{m,n}} = v_{m}
v_m
v_m

也就是

o_{m,k}
o_{m,k}

由于线性层的输入,通常都是经过ReLU或者sigmoid的激活,所以一般都是非负的,

那么,先前的全连接层的参数的增量

\Delta W^{(FC)}_{m,n,k} = \nabla_{z_{n,k}}L(x_k,y_k)\times\frac{\partial z_{n,k}}{\partial w_{m,n}}
\Delta W^{(FC)}_{m,n,k} = \nabla_{z_{n,k}}L(x_k,y_k)\times\frac{\partial z_{n,k}}{\partial w_{m,n}}

,其中的

\nabla_{z_{n,k}}L(x_k,y_k)
\nabla_{z_{n,k}}L(x_k,y_k)

这一部分,当且仅当

n = n_k^*
n = n_k^*

(也就是对应正确的类别时) 这一部分为负。

于是,针对输入

x_k
x_k

, 我们可以通过上述变化量的符号来判别目标类别,记

S_{n,k} = \sum_{m}\Delta W^{(FC)}_{m,n,k}=\sum_{m}\nabla_{z_{n,k}}L(x_k,y_k)\times o_{m,k}
S_{n,k} = \sum_{m}\Delta W^{(FC)}_{m,n,k}=\sum_{m}\nabla_{z_{n,k}}L(x_k,y_k)\times o_{m,k}

一旦

S_{n,k} \lt 0
S_{n,k} \lt 0

, 便意味着

x_k
x_k

的类别是

n
n

不过,上述这一切都是基于单个输入

x_k
x_k

的,针对

K
K

个输入,我们有

s_n = \frac{1}{K}\sum_{k}S_{n,k} = \sum_{m}(\frac{1}{K}\sum_k\Delta W^{(FC)}_{m,n,k})
s_n = \frac{1}{K}\sum_{k}S_{n,k} = \sum_{m}(\frac{1}{K}\sum_k\Delta W^{(FC)}_{m,n,k})

这样便产生了一个问题:平均之后的增量,信息出现了丢失,该如何推断类别呢?

这个工作有一个发现,即

|S_{n_k^*, k}| \gg |S_{n\neq n^*_k, k}|
|S_{n_k^*, k}| \gg |S_{n\neq n^*_k, k}|

这意味着,标签的显著性还是比较高的,我们还是可以通过其绝对值来推断,并且,多个样本的梯度聚合之后,负的部分仍然是负的,显现出原始标签的信息

为了使得这种负号的标志更为鲁棒,文章使用了逐列的最小值,而不是按照特征维度进行求和

\hat{y} = \arg \text{sort}(\min_{m}\nabla_{W^{(FC)}_{m,n}}L(x^*,y^*))[:K]
\hat{y} = \arg \text{sort}(\min_{m}\nabla_{W^{(FC)}_{m,n}}L(x^*,y^*))[:K]

我们来解释上面这个式子,首先注意到

\nabla_{W^{(FC)}_{m,n}}L(x^*,y^*) \in \mathbb{R}^{M\times N}
\nabla_{W^{(FC)}_{m,n}}L(x^*,y^*) \in \mathbb{R}^{M\times N}

是一个

M\times N
M\times N

的矩阵

\min \nabla_{W^{(FC)}_{m,n}}L(x^*,y^*)
\min \nabla_{W^{(FC)}_{m,n}}L(x^*,y^*)

也就是求出这个矩阵最小的那一行,具有

N
N

维, 然后从小到大排序(负的都在前面)

\arg \text{sort}
\arg \text{sort}

其实就是返回排序后的下标,在这里就对应了类别,直接返回前

K
K

小的值,也就对应着

K
K

个样本的类别

这里有一个假设,也就是一个批次里面没有重复类别的数据,大家需要注意一下!

真实性正则化(Fidelity/Realism Regularization)

这里是借鉴 DeepInversion 中针对图片的自然性的优化

Dreaming to distill: Data-free knowledge transfer via DeepInversion.

文中加入了一个正则化项

R_{fidelity}(\cdot)
R_{fidelity}(\cdot)

,来驱使生成的

\hat{x}
\hat{x}

尽可能保持真实,具体形式为:

R_{fidelity}(\hat{x}) = \alpha_{tv}R_{TV}(\hat{x}) + \alpha_{l_2}R_{l_2}(\hat{x}) + \alpha_{BN}R_{BN}(\hat{x})
R_{fidelity}(\hat{x}) = \alpha_{tv}R_{TV}(\hat{x}) + \alpha_{l_2}R_{l_2}(\hat{x}) + \alpha_{BN}R_{BN}(\hat{x})

其中

R_{TV}
R_{TV}

R_{l_2}
R_{l_2}

分别惩罚图像的方差和

L2
L2

范数,属于标准的图像先验。

DeepInversion中关键的部分就是使用了BN的先验来进行约束

R_{BN}(\hat{x}) = \sum_{l}||\mu_l(\hat{x}) - BN_l(mean)||_2 +\sum_{l}||\sigma_l^2(\hat{x}) - BN_l(variance)||_2
R_{BN}(\hat{x}) = \sum_{l}||\mu_l(\hat{x}) - BN_l(mean)||_2 +\sum_{l}||\sigma_l^2(\hat{x}) - BN_l(variance)||_2

其中

\mu_l(x)
\mu_l(x)

\sigma_l^2(x)
\sigma_l^2(x)

是第

l
l

层卷积的,对于一个批数据的均值和方差的估计

这种真实性的正则化能够促使图片变得更加真实

组一致性正则化(Group Consistency Regularization)

在进行训练数据恢复的时候,会有一个挑战,也就是物体实际位置的确定,如下图所示:

reconstruction

在实验中,作者使用了不同的随机种子进行图像的还原,结果产生不同程度上的偏移,但这些样本其实语义上都是一致的。

基于这个观察,作者提出了一种组一致性的正则化方法,也就是用不同的随机种子生成,然后对这些结果进行融合

其正则化形式为:

R_{group}(\hat{x},\hat{x}_{g\in G}) = \alpha_{group}||\hat{x}-\mathbb{E}(\hat{x}_{g\in G})||_2
R_{group}(\hat{x},\hat{x}_{g\in G}) = \alpha_{group}||\hat{x}-\mathbb{E}(\hat{x}_{g\in G})||_2

其中,我们需要计算出这个期望

\mathbb{E}(\hat{x}_{g\in G})
\mathbb{E}(\hat{x}_{g\in G})

,其实就是平均图像

average and registration

如上图所示,首先按像素进行平均,得到一张平均图像,然后所有图像根据这个平均图像进行对齐,之后再取一次平均,得到最后的对齐后的平均图像。

最终的更新细节

文中使用的是一种基于能量的模型,受 Langevin 的启发,具体形式为

\Delta_{\hat{x}^{(t)}} \leftarrow \nabla_{\hat{x}}(L_{grad}(\hat{x}^{(t-1)},\nabla W) + R_{aux}(\hat{x}^{(t-1)}))\\ \eta \leftarrow N(0, I)\\ \hat{x}^{(t)} \leftarrow \hat{x}^{(t-1)} + \lambda(t)\Delta_{\hat{x}^{(t)}} + \lambda(t)\alpha_n\eta
\Delta_{\hat{x}^{(t)}} \leftarrow \nabla_{\hat{x}}(L_{grad}(\hat{x}^{(t-1)},\nabla W) + R_{aux}(\hat{x}^{(t-1)}))\\ \eta \leftarrow N(0, I)\\ \hat{x}^{(t)} \leftarrow \hat{x}^{(t-1)} + \lambda(t)\Delta_{\hat{x}^{(t)}} + \lambda(t)\alpha_n\eta

其中

\eta
\eta

是采样噪声,用于进行搜索;

\lambda(t)
\lambda(t)

是学习率;

\alpha_n
\alpha_n

是缩放因子。

实验分析

首先我们来看一看标签恢复的正确率

label restore

可以看到,随着批次大小的增加,正确率就会下降,原因其实就是重复类别的问题,但是相比起iDLG要好很多。

iDLG: Improved deep leakage from gradients.

然后是每一个误差项的消融实验

ablation study

可以看到,添加真实性以及组一致性,的确会使得图片质量上升,对齐的增益也是存在的。

regularization benefits

如上图所示,基本上还原的结果已经逼近原始图片了

然后,和目前的SOTA进行效果对比,这里直接给出一部分的结果图

comparison with SOTA works

可以看到,其效果要比DeepInversion,Latent Projection等工作要好得多!

之后,我们必须看一看批次大小,也就是BatchSize,对于还原效果的影响

batchsize-inversion

可以看到,随着批次大小的增加,还原效果会变差,这也是符合常理的,因为聚合带来的信息损失会增大。

结论

这个工作是里程碑式的,在联邦学习的场景下,实现了一次强而有力的攻击!

这也会极大的启发,针对联邦学习这种类分布式训练的场景下后续的防御工作。

DP等防御方法是否还能适用?参与者的变动是否会有影响?本地的多次训练是否加大了恢复的难度?

仍然有许多工作需要我们一起探索。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于联邦学习
  • 基于梯度的数据还原
    • 批量标签恢复 (Batch Label Restoration)
      • 真实性正则化(Fidelity/Realism Regularization)
        • 组一致性正则化(Group Consistency Regularization)
          • 最终的更新细节
          • 实验分析
          • 结论
          相关产品与服务
          联邦学习
          联邦学习(Federated Learning,FELE)是一种打破数据孤岛、释放 AI 应用潜能的分布式机器学习技术,能够让联邦学习各参与方在不披露底层数据和底层数据加密(混淆)形态的前提下,通过交换加密的机器学习中间结果实现联合建模。该产品兼顾AI应用与隐私保护,开放合作,协同性高,充分释放大数据生产力,广泛适用于金融、消费互联网等行业的业务创新场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档