免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

隐私与机器学习:什么才是真正的隐私?

隐私与机器学习:什么才是真正的隐私? 原文课程: Lecture 12 — Private ML and Stats: What is Privacy? (Gautam Kamath, CS 860, Fall 2020)在进入差分隐私机器学习的数学细节之前我们需要先讨论一个哲学问题差分隐私保护什么不保护什么很多学术论文甚至在这方面会犯错误。如果我们不弄清楚这个问题就会对 DP 的期望过高或过低。1. 差分隐私的边界回忆 DP 的核心定义修改单条数据不会显著改变算法的输出分布。这意味着两件事DP 能做到的✅ 防止针对特定个体的信息泄露✅ 防止重建攻击从统计量恢复原始数据✅ 防止成员推理攻击判断某人是否在数据集中✅ 保护你不因参与研究而承受额外风险DP 不能做到的❌不能阻止统计学/机器学习正常工作❌ 不能防止从数据中学习到的群体性规律❌ 如果结果显示吸烟致癌你的参与与否都不会改变这个结论graph TD A[DP输出] -- B{风险类型} B -- C[个体级别的信息泄露] B -- D[群体级别的统计规律] C -- E[✅ DP可以防止] D -- F[❌ DP不防止这是ML在正常工作]2. 吸烟致癌悖论让我们用一个经典例子来澄清假设你是烟民正在考虑是否参加一个医学研究。研究目标是确定吸烟是否致癌。你知道如果研究结果显示吸烟致癌你的保险费会上涨。研究使用了差分隐私。你选择参加——因为隐私得到了保护。但最终结果确实显示吸烟致癌。你的保险费涨了。这是隐私侵犯吗答案不是。因为差分隐私保证了无论你是否参加结果都是一样的。结论吸烟致癌是基于群体数据的科学事实你的单条记录并不会改变这个结论。Douglas Adams 的比喻或许最恰当*差隐隐私的唯一保证是你不能因参与研究而受到伤害——你不能比不参与时更糟。*3. 当感觉不对时很多时候DP 保护的输出仍然可能让人感觉隐私被侵犯了。问题是这个感觉合理吗我们可以用以下三个问题来判断三问测试法问题含义例子1. 修改一条数据会改变答案吗如果会→可能隐私泄露针对某人的精确预测2. 这只是机器学习在正常工作吗如果会→DP不阻止预测准确说明模型学到了规律3. 这个侵犯在哪个环节发生的隐私可能在数据收集阶段就丢失了你自己主动公开了信息flowchart TD A[感觉隐私被侵犯了] -- B{修改一条数据会改变输出吗} B --|会| C[⚠️ 可能是隐私问题] B --|不会| D[❓ 机器学习在正常工作] D -- E{这只是模型对同类人群的准确预测} E --|是| F[✅ 这不是隐私问题是科学在正常工作] E --|不是| G[ 隐私可能在别的环节丢失了]4. 具体场景分析场景 A模型记住了训练数据训练数据中包含某人社保号 078-05-1120 模型输出中能精确恢复这个号码→三问测试修改一条数据会改变输出吗会→结论这是隐私泄露DP 可以防止场景 B模型对同种族人群准确预测训练数据全部来自亚洲人群 模型对亚洲人的预测准确率远高于其他种族→三问测试修改一条数据会改变输出吗不会→结论这是统计规律的正常体现DP 不阻止场景 C推断某人的性取向基于购买记录模型推断某人属于LGBTQ群体 但这个推断是基于消费模式且你确实购买了相关商品→三问测试这是机器学习在正常工作吗是→结论如果感觉不适隐私问题出在数据收集阶段而不是差分隐私能解决的场景 D通过辅助信息重新识别个体去匿名化的数据集 选民登记册 → 匹配出个人的医疗记录→三问测试修改一条数据会改变输出吗会→结论这是隐私泄露DP 可以防止5. 什么是 DP 的真正价值DP 的价值可以总结为一句话差分隐私使你参与数据分析的个人风险≈不参与的风险。换句话说如果你不参与研究你的隐私风险 从群体结论中推断出的信息如果你参与研究在 DP 保护下你的隐私风险 ≈ 不参与时的风险差分隐私保证你不会因参与而变得比不参与时更容易受伤害。6. 常见误解误解真相DP 保证我的数据不被任何方式泄露DP 只保证算法输出不显著依赖你的数据DP 阻止机器学习学习DP 正是为了在保护隐私的同时让学习发生DP 的输出是安全的可以随意分享DP 输出仍可能被组合攻击需要组合定理管理DP 保证我的数据不会被任何人看到中心化 DP 中数据管理员curator可以看到原始数据7. 你的数据何时是真的泄露了用代码理解成员推理攻击测试下面的代码模拟一个常见的隐私攻击场景——成员推理Membership Inference——并展示差分隐私如何防止它import numpy as np def membership_inference_attack(model, data_point, known_data, threshold0.5): 模拟成员推理攻击判断某个数据点是否在训练集中 思路如果模型对训练集数据更确定那么对 data_point 的高置信度预测可能意味着它来自训练集 # 训练数据中已知点的预测置信度 known_confidences [model(x) for x in known_data] baseline np.median(known_confidences) # 目标点的置信度 target_conf model(data_point) # 如果目标点的置信度显著高于基线认为它是训练集成员 return target_conf baseline threshold def train_dp_vs_nonprivate(): 对比差分隐私 vs 非私有模型对成员推理攻击的抵抗力 # 模拟场景100个训练样本 n_train 100 # 模拟一个模型的行为 # 非私有模型完美记住训练数据置信度 1.0 # 私有模型置信度更均匀训练点和非训练点差异小 def nonprivate_model(x): 非私有模型对训练数据高置信度 return np.random.beta(9, 1) # 高置信度集中在 0.9-1.0 def private_model(x): 差分隐私模型置信度分布更温和 return np.random.beta(3, 1) # 置信度在 0.7-1.0 np.random.seed(42) # 生成已知数据 known np.random.randn(10) test_points np.random.randn(5) print( 成员推理攻击测试 \n) for model_name, model in [(非私有模型, nonprivate_model), (差分隐私模型, private_model)]: attacked 0 print(f\n--- {model_name} ---) for pt in test_points: result membership_inference_attack(model, pt, known) print(f 测试点: {攻击成功❌ if result else 无法判断✅}) attacked result print(f 成员推理成功率: {attacked}/{len(test_points)}) print(\n结论差分隐私模型大幅降低了成员推理攻击的成功率) print(因为DP保证包含你的数据 vs 不包含模型输出几乎一样) train_dp_vs_nonprivate()这个模拟展示了差分隐私的核心——你的数据是否被包含在训练集中对最终模型输出的影响几乎不可见。这就是为什么 DP 能有效防御成员推理攻击。从 DP 的角度真正的隐私泄露发生在以下情况精确推理某人能 100% 确定你的私人信息排除性推断某人能排除所有其他可能性锁定你的信息与辅助信息结合通过 DP 输出 外部数据源 精确个体信息而 DP 不阻止的是统计规律吸烟者更容易得肺癌高概率推断大多数程序员喜欢喝咖啡但并不确定你小结概念要点DP 保护什么防止因参与研究而承个额外的个体风险DP 不保护什么不阻止从数据中学习群体统计规律三问测试修改一条数据会改变答案吗是ML在正常工作吗隐私的本质参与的风险 ≈ 不参与的风险真正泄露精确推理、排除性推断、链接攻击理解 DP 的边界和正确期望是使用差分隐私的第一步。下一讲我们将正式开始差分隐私机器学习的数学之旅——差分隐私经验风险最小化DP-ERM。下一篇: 差分隐私经验风险最小化
返回列表