Privacy in Machine Learning

核心概念:隐私安全关注的是"模型是否会泄露训练数据信息"。与之前的攻击不同,隐私攻击不改变模型行为,而是通过模型输出推断敏感信息。这在医疗、金融等敏感领域尤为重要。

Threats (隐私威胁)

机器学习模型可能通过多种方式泄露敏感信息,威胁数据隐私。

Privacy Risks in Machine Learning

隐私风险主要来自以下几个方面:

风险类型 描��� 潜在危害
成员推断攻击 判断某个样本是否在训练集中 泄露特定用户参与训练
属性推断攻击 推断训练数据的敏感属性 泄露用户敏感信息
模型反演攻击 重建训练输入 恢复原始图像/文本
梯度泄露 从梯度恢复原始数据 隐私数据被窃取
模型逆向 从模型输出反推输入 敏感信息泄露

成员推断攻击 (Membership Inference Attack)

成员推断攻击是最经典的隐私攻击之一,用于判断某个样本是否在模型的训练集中。

# 成员推断攻击示例
class MembershipInferenceAttack:
    def __init__(self, target_model, shadow_models):
        self.target = target_model
        self.shadow_models = shadow_models
        self.attack_model = self.train_attack_model()
    
    def attack(self, data):
        # 获取目标模型的输出
        output = self.target(data)
        confidence = F.softmax(output, dim=-1).max().item()
        
        # 训练集通常有更高的置信度
        return confidence > self.threshold
    
    def train_attack_model(self):
        # 使用shadow models训练攻击模型
        # shadow model需要与目标模型相似
        pass

属性推断攻击 (Attribute Inference Attack)

属性推断攻击用于推断训练数据是否具有某种敏感属性。

Differential Privacy (差分隐私)

差分隐私是隐私保护的核心技术,通过在数据处理过程中引入随机性来保护个体隐私。

🔮 差分隐私噪声添加动画演示
📊
+
📊
=
🔒

原始数据 + 随机噪声 = 隐私保护输出

💰 隐私预算 ε 消耗动画演示

每次查询消耗隐私预算

ε 越大 → 隐私越弱 | ε 越小 → 隐私越强

差分隐私在 ML 中的应用

# 差分隐私 SGD (DP-SGD)
def dp_sgd(model, dataloader, epsilon=1.0, delta=1e-5):
    for batch in dataloader:
        # 1. 计算梯度
        loss = model(batch)
        gradients = torch.autograd.grad(loss, model.parameters())
        
        # 2. 裁剪梯度范数
        grad_norm = torch.norm(torch.cat([g.flatten() for g in gradients]))
        clipped_gradients = [g * min(1, C/grad_norm) for g in gradients]
        
        # 3. 添加高斯噪声
        noise = torch.normal(0, C*sigma, clipped_gradients.shape)
        private_grad = clipped_gradients + noise
        
        # 4. 更新模型
        update_model(private_grad)

Privacy-Preserving ML (隐私保护机器学习)

除了差分隐私,还有其他隐私保护技术:

📚 本章复习要点