跳转至

AI安全与伦理

概述

AI安全与伦理是确保AI系统可靠、公平、可解释的重要领域,是AI落地应用的关键考量。


AI安全

对抗攻击

import torch

# FGSM攻击(Fast Gradient Sign Method)
def fgsm_attack(model, x, y, epsilon=0.03):
    x.requires_grad = True
    output = model(x)
    loss = torch.nn.functional.cross_entropy(output, y)
    loss.backward()

    # 生成对抗样本
    perturbed_x = x + epsilon * x.grad.sign()
    return perturbed_x.detach()

# 对抗训练
def adversarial_training(model, train_loader, optimizer, epsilon=0.03):
    model.train()
    for x, y in train_loader:
        x_adv = fgsm_attack(model, x, y, epsilon)

        # 混合训练
        output = model(torch.cat([x, x_adv]))
        loss = torch.nn.functional.cross_entropy(
            output, torch.cat([y, y])
        )

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

模型鲁棒性

# 提升鲁棒性的方法

1. 对抗训练
   - 在训练数据中加入对抗样本

2. 输入净化
   - 检测并过滤异常输入

3. 模型集成
   - 多模型投票

4. 随机化
   - 输入随机变换

模型可解释性

LIME(局部可解释)

from lime.lime_tabular import LimeTabularExplainer

# 创建解释器
explainer = LimeTabularExplainer(
    X_train.values,
    feature_names=feature_names,
    class_names=class_names
)

# 解释单个预测
explanation = explainer.explain_instance(
    X_test.iloc[0].values,
    model.predict_proba,
    num_features=10
)

explanation.show_in_notebook()

SHAP

import shap

# 创建SHAP解释器
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)

# 可视化
shap.summary_plot(shap_values, X_test)
shap.dependence_plot("feature_name", shap_values, X_test)

注意力可视化

# Transformer注意力可视化
def plot_attention(attention, heads=4):
    import matplotlib.pyplot as plt

    fig, axes = plt.subplots(1, heads, figsize=(4*heads, 4))
    for i, head in enumerate(axes):
        head.imshow(attention[0, i], cmap='viridis')
        head.set_title(f'Head {i+1}')
    plt.tight_layout()
    plt.show()

AI伦理

偏见检测

def detect_bias(predictions, sensitive_features):
    """
    检测模型在不同群体上的表现差异
    """
    groups = np.unique(sensitive_features)
    metrics = {}

    for group in groups:
        mask = sensitive_features == group
        group_predictions = predictions[mask]
        metrics[group] = {
            'accuracy': np.mean(group_predictions == y_test[mask]),
            'count': np.sum(mask)
        }

    # 计算差异
    accuracies = [m['accuracy'] for m in metrics.values()]
    bias = max(accuracies) - min(accuracies)

    return metrics, bias

# 公平性指标
def fairness_metrics(y_true, y_pred, sensitive):
    # 统计均等
    metric = {}
    for group in np.unique(sensitive):
        mask = sensitive == group
        metric[group] = np.mean(y_pred[mask] == 1)

    return metric

差异化隐私

import numpy as np

def add_dp_noise(gradients, noise_multiplier=1.0, max_grad_norm=1.0):
    """添加差分隐私噪声"""
    # 梯度裁剪
    clip_norm = np.linalg.norm(gradients)
    if clip_norm > max_grad_norm:
        gradients = gradients * max_grad_norm / clip_norm

    # 添加高斯噪声
    noise = np.random.normal(0, noise_multiplier * max_grad_norm, gradients.shape)
    return gradients + noise

AI伦理准则

# 负责任AI原则

1. 公平性
   - 避免歧视
   - 代表性均衡

2. 透明性
   - 模型可解释
   - 决策可追溯

3. 隐私保护
   - 数据最小化
   - 用户同意

4. 安全性
   - 对抗鲁棒性
   - 故障安全

5. 可问责
   - 责任明确
   - 审计机制

法规合规

# 相关法规

GDPR(欧盟)
- 数据保护
- 自动化决策说明

CCPA(加州)
- 消费者隐私
- 知情权

中国《个人信息保护法》
- 个人信息处理
- 敏感信息保护

下一步学习

  1. 大语言模型原理 - 理解模型原理
  2. [模型可解释性] - 深入可解释性技术
  3. MLOps实践 - 安全部署