本书是一本实践性的差分隐私入门读物,将形式化的理论基础与可执行的代码、实用的设计模式相结合。
本书的内容源自讲义、研讨会,以及与学术界和工业界从业者的合作,并逐步扩展,涵盖了经典和现代的主题。
我们衷心感谢众多贡献者——读者、审阅者和同事们——他们提出的问题、建议和勘误塑造了本书。
摘要¶
本书从编程实践的角度出发,以示例驱动的方式全面介绍差分隐私。本书弥合了理论与实现之间的鸿沟,带领读者逐一学习差分隐私的核心机制,如拉普拉斯机制和指数机制、平滑敏感度、采样-聚合框架,以及稀疏向量技术,并为每一种机制提供了可执行的Python示例。本书强调动手实践和可复现性,适合那些希望超越抽象定义、理解如何将差分隐私应用于真实数据集、模型和系统的读者。
本书的章节围绕基础理论和实际问题两条主线展开:前几章介绍敏感度和组合性,随后深入讨论去标识化、合成数据生成和差分隐私机器学习。本书还讨论了一些微妙的实现挑战,如效率、数值稳定性、隐私核算,以及幽灵裁剪等优化技术。只要条件允许,本书的示例都使用Pandas、NumPy和Matplotlib等数据科学家熟悉的工具,以便读者更清晰地理解相关内容。
本书致力于让隐私保护算法变得具体、可编程,从而降低处理敏感数据的研究人员、工程师和教育工作者的入门门槛。本书既可以作为一本自成体系的参考书,也可以作为进一步探索形式化隐私和负责任人工智能的基础。
本书的演进¶
我们欢迎各种形式的反馈——无论是关于本书的结构、缺失或冗余的内容、不清晰的解释、可以补充的习题,还是任何错误或笔误。
本书在GitHub上维护,我们鼓励您通过拉取请求(Pull Request)为本书做出贡献。
如果您有任何建议、计划、问题或想法,欢迎通过电子邮件联系任意一位作者。
背景资料:离散数学与概率论¶
本书假定您对离散数学和概率论的基本概念有一定的了解。如果您已经很久没有接触过这些知识,或者您是初次接触这些知识,下面的资料可以为您提供很好的入门介绍和复习材料。这份清单虽然并不详尽,但重点列出了一些被广泛使用、适合程序员阅读,且与本书内容高度契合的教材和课程。
离散数学¶
我们将要学习的很多隐私技术都涉及集合、函数、关系和图的推理。您还会接触到形式逻辑和证明,特别是在我们精确定义隐私保障时。为了打下或巩固您的基础,下面是一些可选的资料:
Discrete Mathematics and Its Applications,Kenneth H. Rosen
一本内容全面、被广泛使用的教材。涵盖了所有基础知识:逻辑、证明技巧、集合论、组合数学和图论。适合自学或课堂教学。Rosen (2011)Mathematics for Computer Science,Eric Lehman、Tom Leighton和Albert R. Meyer(麻省理工学院)
一本为麻省理工学院离散数学入门课程编写的免费教材。它兼顾理论深度与表述的清晰性,非常适合有编程经验的学生。Lehman et al. (2017) 下载PDFDiscrete Mathematics: An Open Introduction,Oscar Levin
一本免费开源的教材,以直观、示例驱动的方式介绍逻辑、归纳法和模运算。Levin (2023) 在线阅读
概率论¶
拉普拉斯机制和高斯机制等隐私技术依赖于随机算法。扎实地理解概率论有助于您理解这些方法是如何(以及为何)起作用的。
A First Course in Probability,Sheldon Ross
一本经典的入门教材。以清晰的解释和大量的示例介绍了概率论的基础知识,对离散随机变量和分布的讲解尤为出色。Ross (2019)Introduction to Probability,Dimitri P. Bertsekas和John N. Tsitsiklis
麻省理工学院课程所使用的教材。本书在严谨分析的同时注重直观理解,非常适合同时学习理论与应用。Bertsekas & Tsitsiklis (2002)Introduction to Probability,Charles Grinstead和J. Laurie Snell
一本可读性很强且可免费获取的教材,特别适合初学者或希望复习相关知识的读者。Grinstead & Snell (2003) 下载PDF
关于预备知识的说明¶
您不需要成为一名数学家也能理解差分隐私——但具备一些数学思维会让您受益匪浅。如果您已经熟悉Python、NumPy和Pandas(本书假定您已经掌握了这些知识),那么您完全有能力在学习过程中掌握所需的任何数学背景知识!
关于软件版本的说明¶
下面展示构建这本可执行书籍所使用的Python版本,以及主要Python软件包的版本。
from platform import python_version
print(python_version())3.12.14
import pandas as pd
print(pd.__version__)2.3.1
import numpy as np
print(np.__version__)2.3.1
import matplotlib
print(matplotlib.__version__)3.10.3
本书的结构和可执行特性得益于Jupyter生态系统。
!jupyter --versionSelected Jupyter core packages...
IPython : 9.17.1
ipykernel : 7.3.0
ipywidgets : not installed
jupyter_client : 8.10.0
jupyter_core : 5.9.1
jupyter_server : 2.21.1
jupyterlab : not installed
nbclient : 0.11.0
nbconvert : 7.17.1
nbformat : 5.11.1
notebook : not installed
qtconsole : not installed
traitlets : 5.16.1
!jupyter book --versionv2.1.6
!jupyter kernel --version8.10.0
我们推荐使用Microsoft Visual Studio Code编辑器来运行和编辑Jupyter笔记本。它可以免费使用,本书的撰写也使用了这一编辑器。
- Rosen, K. H. (2011). Discrete Mathematics and Its Applications (7th ed.). McGraw-Hill Education.
- Lehman, E., Leighton, T., & Meyer, A. R. (2017). Mathematics for Computer Science. https://people.csail.mit.edu/meyer/mcs.pdf
- Levin, O. (2023). Discrete Mathematics: An Open Introduction (3rd ed.). https://discrete.openmathbooks.org/
- Ross, S. M. (2019). A First Course in Probability (10th ed.). Pearson.
- Bertsekas, D. P., & Tsitsiklis, J. N. (2002). Introduction to Probability. Athena Scientific.
- Grinstead, C. M., & Snell, J. L. (2003). Introduction to Probability. https://math.dartmouth.edu/~prob/prob/prob.pdf