一家医院拿病历训练分类模型,接口只返回病种概率,没有返回姓名和病历原文。这样的接口仍可能泄露一件敏感的事。攻击者拿着某人的已知记录反复查询,能猜出这条记录有没有参加训练。若训练集来自某类疾病患者,成员身份本身就透露了信息。
我把 2017 年的原始论文和后来的两项研究对了一遍。成员推断要回答的是一个很窄的问题,给定一条记录,它属于训练集的可能性有多大。它不要求恢复整条记录,也不要求拿到模型参数。最早那项工作只使用黑盒查询,观察目标模型对训练内样本和训练外样本的预测差别,再训练一个专门做判断的推断模型。
研究者在 Google 与 Amazon 当时提供的机器学习服务上做过实验,数据中包括医院出院记录。这个例子很要紧,因为一次判断哪怕只多出一点胜算,放到疾病、位置或消费记录上,也可能成为后续筛查的一环。接口没有逐字吐出隐私,不足以证明训练数据安全。
攻击盯着模型留下的差别
模型往往更贴合见过的样本。训练样本的损失可能更低,输出概率也可能更集中。攻击者就从这些差别下手。早期方法会训练多个影子模型,模拟目标模型见过和没见过数据时的反应。2018 年的 ML-Leaks 研究放宽了多项条件,攻击者不一定知道目标结构,也不一定拥有与目标训练集同分布的辅助数据,攻击成本因此可以更低。
过拟合会放大泄露,却不能独自解释每个样本的风险。MIST 研究指出,样本之间并不一样。有些记录即使没参加训练,模型也会给出很低的损失;另一些难样本、异常样本更容易暴露成员身份。只看训练集和测试集的平均差距,会把少数高风险记录藏在均值里。
隐私验收要保留攻击视角
实际测试可以先准备成员与非成员各一组已核准样本,限制攻击者能得到的字段和查询次数,再报告攻击的准确率、精确率与召回率。类别失衡时尤其要看精确率。若一万个候选里只有十个成员,随便都猜“不是成员”也会有漂亮的总体准确率。
降低过拟合、减少不必要的概率明细和限制批量查询都可能降低风险。它们会影响模型效果或接口用途,不能只凭一个开关宣告安全。差分隐私能给训练过程提供更明确的数学界限,也要把隐私预算和准确率一起交代。
我更愿意把成员推断当成一次隐私体检。它测的是指定攻击者在指定条件下能多猜准多少,结果不会自动覆盖所有模型和所有数据。报告里写清样本、访问权限与基线,才知道下一次模型更新后该重测什么。