目的:检测联邦学习环境下,上传上来的模型是不是恶意的。
1、将一个模型转换为|L|个PD,(其中|L|为层数)
如何将每一层转换成一个PD?
为了评估第𝑗层的激活值,我们需要𝑐个输入来获得一组激活值𝔸。
𝔸是一个二维矩阵,每一列,存放一个输入的 各个神经元的激活值
计算神经元p和神经元q的相似度,𝛾_pq越小,p和q越相似。当 𝛾_pq较小,说明在大多数激活单元上,点 p 和点 q 的差异都很小。换句话说,它们的激活模式是相似的,也可以理解为它们在神经网络中对输入的响应非常相似。
减去均值,除以标准差。标准化了激活值的差异,使得不同激活值的尺度差异得到补偿,确保距离度量不受不同尺度的影响。
基于此距离度量,神经元之间的相似度,可以构造 Vietoris-Rips,计算每一层的PD。
2、PD调整
这个图画的我有些困惑,应该一层转换成一个PD,但为什么这里画的 多个层 转换成了一个PD?
那是一层的多个channel
由于PDs是非标准的,即不同持久性类别中的点数不一样; 它在不同的层中也有所不同,因此必须对图表进行标准化。 我们将𝑅^2的出生和死亡时间区域划分为(𝑚 ×𝑚)个网格,并将每个网格中的点相加,形成(𝑚 × 𝑚)矩阵。 然后我们将同一模型的PD转换为的 (𝑚 × 𝑚 × |𝐿|) 张量,其中|𝐿| 是模型中选定层的数量。
3、干净模型和非干净模型 PD的差别
基类模型都是LeNet。LeNet的最后一层是全连接层。
将c个同样的输入(这里的输入应该要确保是干净),输入到两个模型中去,得到全连接层的PD。发现两个PD有明显差异
将后门注入神经网络会导致其神经元出现异常行为,从而导致泛化破坏。 这种破坏导致持久性图中高维特征的出现增加。 因此,后门注入、异常节点行为、泛化能力下降和高维持久性特征的兴起之间建立了逻辑关系,强调了利用 PD 作为检测后门攻击指标的重要性。
4、训练一个检测器
分类器将根据 PD 返回输入模型是恶意还是良性的概率
先训练好一批干净模型和一批恶意模型 ,一个模型会得到一个(𝑚 × 𝑚 × |𝐿|)的向量。分类器的训练集,x为 (𝑚 × 𝑚 × |𝐿|)的向量,y为模型是良性还是恶意的。
构造损失函数,结合PD特征,最小化分类器的损失。
这里的T是 任意选择一个干净模型得到的PD
在正常loss上乘上 拓扑项,但是加不加这个拓扑项效果其实差不多,是为啥?
因为理论上每个batch内的x和t算距离乘loss以后会被平均到batch上的每个sample再反向传播回去,然后如果batch内有随机分布的正负样本的话其实是抵消了loss。
为啥不把batch设置成1呢?
batch设置的太小可能会学不到特征
我们选择联邦学习过程中的第 1 轮到第 5 轮本地模型作为训练数据集,其中 100 个恶意客户端使用不同的后门攻击策略。 我们将通过在图片左上角注入十字标记的 30% 输入训练的模型标记为正训练数据,而那些干净的模型则标记为负训练数据。 然后我们改变目标标签、图案形状、大小和位置来验证我们训练的分类器的泛化能力。
为了评估 FL 任务中使用 PD 进行分类的性能,我们通过以下方式进行了评估:我们将第 1 轮(攻击开始时)到 𝑘 =10 的模型标记为正训练数据样本,代表各种后门攻击类型 。 干净的模型被标记为负训练数据样本。 此外,我们选择了第 1 轮到第k× 2 轮具有不同后门设置的模型作为验证集。