【论文笔记】Data-free Backdoor Removal based on Channel Lipschitzness

Saturday, January 13, 2024
本文共1259字
3分钟阅读时长

⚠️本文是作者P3troL1er原创,首发于https://peterliuzhi.top/posts/%E8%AE%BA%E6%96%87%E7%AC%94%E8%AE%B0/%E5%90%8E%E9%97%A8%E6%94%BB%E5%87%BB/%E8%AE%BA%E6%96%87%E7%AC%94%E8%AE%B0data-free-backdoor-removal-based-on-channel-lipschitzness/。商业转载请联系作者获得授权,非商业转载请注明出处!

概述

本文首先提到,在先前的研究中已经证明,感染的深度学习模型中有一些通道对trigger更加敏感。那么,很自然地就能想到,如果有一种指标能够将这些通道同普通的通道区分开,我们就可以利用剪枝为感染模型解毒。

本文提出,可以使用Channel Lipschitz Constant (CLC)来作为指标,并通过大量实验从经验主义的角度证明了CLC的上界(UCLC)与触发器激活效应trigger-activated change(TAC)之间的强相关性,并论证了与后门相关的通道相较于普通通道具有更高的CLC。由于UCLC可以直接使用模型的权重计算得到,因此不需要任何额外的数据,这就是标题中data-free的含义。通过UCLC,论文提出了一种效率极高的Channel Lipschitzness based Pruning (CLP)剪枝方法,并通过实验证明了方法是SOTA的

相关工作

  • Backdoor Attack
  • Backdoor Defense
    • Training Stage Defenses
    • Model Post-processing Defenses

L-Lipschitz Function

文内图片

简而言之,假如存在一个函数g,使得映射后的y值差的p范数小于等于x值差的p范数乘以L,则g的Lipschitz常量就是使得这个不等式成立的最小L。

如果换一种视角去看这个公式,$x’$可以被看成$x$的扰动后的值,那么Lipschitz常量就可以被看作输出空间的扰动与输入空间的扰动(其中输出空间的扰动是由输入空间的扰动造成的)的最大比值。因此用Lipschitz常量来测量一个函数对输入扰动的敏感性

神经网络中的Lipschitz常量

首先,假设神经网络是线性层和非线性层通过某种运算凭借在一起的函数:

文内图片

那么,由柯西-施瓦茨不等式:

文内图片

可以得到:

文内图片

将后者写成连乘的式子,并假设$\phi$是ReLU(ReLU的Lipschitz常量为1),同时展开Lipschitz常量的式子,可得:

文内图片

这里将每一个线性层都看成$wx+b$的形式(卷积层可以通过某种reshape变换近似变成这样的公式)。由于我们可以把Lipschitz常量的计算公式看作扰动的形式,因此$g(x)-g(x’)=w(x-x’)=wz$,而这里取二范数,因此能推导出倒数第二个公式。而后面那个$σ$就相当于命了个名(spectral norm,可能可以译作光谱范数)。

Channel Lipschitz Constant (CLC)

我们可以将第l层的第k通道看作:

文内图片

其中输入为原数据x

从而有:

文内图片

不等式右边的是某一个通道的Lipschitz常量(CLC)的上界,称为UCLC

Trigger-activated Change(TAC)

这是一个客观衡量trigger对模型的影响的指标,因为需要获取trigger的样式,所以只能用作理论研究而不能实际地用于防御

文内图片

其中$\delta$是毒化函数。

意思就是对每一层的每一个通道都可以单独计算TAC,而这个值是由良性样本通过模型后该通道的特征向量减去由毒性样本通过该模型后该通道的特征向量的二范数,并对所有通过模型的数据取均值。

CLC与TAC的相关性

文内图片

Channel Lipschitzness based Pruning

由UCLC与TAC之间的强相关性(观察所得),我们可以设计一种基于UCLC的剪枝方法

由于UCLC中总有一连串的连乘,所以我们可以简化UCLC的公式为$\sigma (W_k^{(l)})$

而阈值取值方法如下:

文内图片

从而整个算法流程:

文内图片

实验结果

文内图片