一、AI大模型预训练中的隐私保护
1、数据清理
数据清理是确保数据质量的首要步骤:纠正错误和不一致(错误日期格式、重复记录、缺失项等),提升数据可靠性与准确性。在隐私保护语境下,大量个人信息被采集用于训练/微调 NLP 模型,数据清理不仅要修复常规错误,还须确保数据不违反隐私法规或政策要求。核心手段包括:匿名化 (去标识化)、假名化 (轻量匿名化)、数据最小化 (降低信息粒度)、数据聚合(保持统计特性与总体趋势即可)。
2、联邦学习
联邦学习能在多个边缘设备或服务器上协同训练模型,在确保数据隐私的同时推动机器学习发展。工作流程五步:
- 全局模型初始化与分发:中央服务器生成初始全局模型并分发到所有参与训练的终端设备。
- 本地训练:每台设备用本地数据独立训练,参数在本地更新,敏感个人数据不上传。
- 模型更新共享:设备将本地更新(模型参数变化)而非原始数据发回中央服务器,敏感数据始终留在本地。
- 模型聚合:服务器聚合各设备上传的更新生成新全局模型,通常用加权平均或其他聚合算法融合各方贡献。
- 迭代更新:持续迭代,全局模型性能逐渐提升并更好适应全局数据分布。
3、差分隐私
差分隐私可使攻击者知道数据集之外的所有背景信息,也无法通过所获取的分析结果推测出某个特定数据点是否存在于数据集中。实现方式是向数据中引入随机且不可预测的噪声,使个体难以被单独识别,在提供有用统计信息的同时尽量减少隐私泄露。
差分隐私在 LLM 训练中的两种实现:
- 训练数据注入噪声:在数据集用于训练之前对数据扰动,给每个条目或特征加入随机噪声,降低每个数据点的精确性,减少通过分析模型推断个体隐私的风险;虽会损失部分信息,但可防止模型过度拟合敏感数据。
- 模型更新(梯度)注入噪声:对每次梯度更新加入噪声,即可有效避免从模型更新中提取特定用户的私人数据,使每次更新都带有一定随机性,降低通过梯度信息推测个体数据的可能。
我们来举一个例子。以 PyTorch 生态的 Opacus 库为例,对预训练/微调过程施加差分隐私(即"梯度注入噪声"路线)的最小实现:
bash
# 环境准备(Python 3.9+)
pip install torch transformers opacus
python
import torch
from torch.utils.data import DataLoader, TensorDataset
from opacus import PrivacyEngine
from transformers import AutoModelForCausalLM, AutoTokenizer, get_scheduler
model_name = "gpt2" # 以小模型演示,可换任意 CausalLM
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
# 数据格式:文本列表 -> tokenize 后的 input_ids/labels
texts = ["示例句子一", "示例句子二"]
batch = tokenizer(texts, return_tensors="pt", padding=True, truncation=True)
dataset = TensorDataset(batch["input_ids"], batch["attention_mask"])
loader = DataLoader(dataset, batch_size=2)
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-4)
# 关键三步:接入隐私引擎,设定目标 epsilon 与最大训练轮数
privacy_engine = PrivacyEngine()
model, optimizer, loader = privacy_engine.make_private_with_epsilon(
module=model,
optimizer=optimizer,
data_loader=loader,
epochs=1,
target_epsilon=8.0, # 隐私预算:越低隐私越强、噪声越大
target_delta=1e-5, # 通常取 1/训练集大小 的量级
max_grad_norm=1.0, # 梯度裁剪范数
)
model.train()
for input_ids, attn in loader:
optimizer.zero_grad()
out = model(input_ids=input_ids, attention_mask=attn, labels=input_ids)
out.loss.backward()
optimizer.step()
print("已消耗隐私预算 epsilon =", privacy_engine.get_epsilon(delta=1e-5))
要点:target_epsilon 是整个训练过程允许消耗的总隐私预算;max_grad_norm 逐样本裁剪梯度,裁剪+加噪即 DP-SGD。每次继续训练都会消耗预算,须做预算管理。
二、AI大模型微调阶段的隐私保护
1、联邦学习
联邦学习在 LLM 的微调阶段的做法:将预训练好的全局模型分发到执行微调任务的边缘设备或本地服务器,每个设备/服务器用与特定任务相关的本地数据对全局模型微调。两个阶段的定位不同:
- 预训练:采用广泛的通用数据集,通过分布式学习获得基础语言理解,强调数据隐私;
- 微调:使用目标数据集面向专门任务,优先考虑个性化优化与本地设备上更严格的隐私。
2、知识遗忘(机器遗忘)
问题背景:LLM 用来自公开互联网、社交平台、文章、书籍、对话记录等海量文本训练,模型可能无意中"记住"敏感的个人信息(个人身份、健康状况、财务信息等),并在生成输出时泄露出来。
知识遗忘可以选择性地"忘记"模型已学到的敏感信息,或通过一定机制主动清除,从而降低泄露可能。它不是简单地删除数据,而是要确保在模型训练和推理过程中有效识别并删除敏感数据对模型的影响,同时不明显损害模型整体性能。
若模型在初始训练阶段学到了某些敏感信息,微调阶段需要通过知识遗忘技术清除,确保模型不会在后续任务中泄露本不应暴露的数据。微调阶段的知识遗忘有三种实现方式:
- 梯度更新机制:敏感信息会反映在模型参数中,在梯度更新时对涉及敏感信息的部分进行适当调整或去除,可减少模型对这些信息的记忆。
- 模型剪枝:将模型中某些参数或神经元移除,消除对特定信息的记忆;通过去除冗余或敏感的参数,在保持模型效率与效果的同时避免隐私泄露。
- 重训练/微调重置:基于先前训练任务再训练模型,但特意去掉某些已学到的敏感信息,确保这些内容不再出现在最终输出中;模型可借此消除对不应保留信息的依赖,同时保持或提高在其他任务上的表现。
三、AI大模型推理阶段的隐私保护
1、同态加密
同态加密指在数据加密状态下执行计算,并确保解密得到的结果与在明文上执行相同操作的结果一致。核心优势是计算过程中的敏感数据(输入与模型参数)始终处于加密状态,避免未授权访问。按支持运算能力分三类:半同态加密(仅支持加法或乘法)、部分同态加密(支持有限数量的运算)、完全同态加密(支持无限次加法与乘法)。
在 LLM 推理中的应用:将输入数据与模型参数加密,在加密状态下执行推理;外部计算服务器或未授权参与方即便能访问密文也无法解读,只有计算完成后由持有解密密钥的可信方解密结果。局限:计算成本高,LLM 这类大计算量任务会导致效率显著下降,须在隐私保护与计算效率间权衡,设计合适的加密算法与优化策略。
2、安全多方计算
安全多方计算允许多个互不信任的参与方在不泄露各自私有数据的前提下共同计算,任何一方都无法访问其他方的私有输入,同时确保计算结果的准确性与完整性。适用于多个独立数据持有者共同计算的、隐私要求极高的场景。在 LLM 中的三个关键应用:
- 加密推理:推理时输入数据(用户查询、文本内容)加密后传输给模型,模型基于密文执行预测而不暴露原始输入;最终预测结果解密后仅持有解密密钥的可信方可得,避免任何中间环节或外部服务器泄露敏感信息。
- 模型更新的安全聚合:联邦学习中各参与方本地训练产生更新,直接传输可能泄露本地敏感数据(对话内容、健康记录)。通过安全多方计算,模型更新可在加密状态下聚合,兼顾隐私与训练质量。
- 安全数据标注:传统标注需将原始数据与标签共享给标注者,可能暴露敏感信息。通过安全多方计算,多个数据持有者可在不直接暴露数据或标签的情况下共同参与标注,各方数据与标签加密后,参与者只看到密文,保障隐私的同时支持协作。
3、函数秘密共享(FSS)
FSS 使用数学函数(如多项式)将原始秘密分成多个共享,以"每个共享独立且不足以揭示整个秘密"的方式编码后分发给不同参与者。各方独立对其共享执行预先确定的运算(算术或逻辑操作),计算在加密/隐藏状态的秘密共享上进行,参与者无法从自己的共享获取原始秘密的任何信息;最后汇总各方结果,当组合达到足够数量的共享时可恢复对整个秘密执行函数的结果。
安全性在于:每个共享本身不含足够信息,即使部分共享泄露或参与者不诚实,秘密仍然安全;只有达到预定阈值(一定数量共享被正确组合)时原始信息才被披露。
在 LLM 推理中:模型或函数用加密方法划分为共享,每一方持有一个共享;计算中各方用私人数据对自己的份额操作,个人输入不公开;计算后各方协同组合份额重构函数结果,在保持隐私的同时揭示最终输出。
4、推理中的差分隐私
差分隐私可向模型输出引入噪声,在保证预测精度的同时保护个人数据隐私;通过调整参数有效管理隐私预算,并持续监控,确保随时间推移在隐私与实用性之间取得平衡。
5、基于检测的方法
- 直接检测:直接检查 LLM 生成的文本,识别其中的隐私泄露;
- 上下文推理检测:识别生成文本中不明显、但可通过上下文相关性推断出来的隐私泄露。