用 Boosting 把弱隐私算法炼成强隐私算法(英文原题:Boosting and Differential Privacy (FOCS 2010))
作者 :Cynthia Dwork、Guy N. Rothblum、Salil Vadhan | 会议/年份 :FOCS 2010 | 官方链接 :DOI | 开放获取 :PDF
一句话 :把 AdaBoost 的"重加权"搬到查询集合上,让只对多数查询准确的弱摘要变成对全部查询准确的强摘要。
预计阅读:22 分钟
0. TL;DR
- 这篇论文里其实有两件独立的事,很多人张冠李戴 ------ 一是高级组合定理 (advanced composition,Theorem III.3, k \sqrt k k 而非 k k k 的隐私损失累加),二是面向查询的 boosting 算法(Figure 1)。前者是分析后者的工具,不是同一个贡献。
- Boosting 的对象不是数据行,而是查询 ------ 隐私仍然保护"人"(数据库的行),被反复重加权、被"提升"的是查询集合 Q Q Q 上的分布;这是全文最容易被误读的一句定位。
- 弱摘要的定义是"对当前分布 D t D_t Dt 的 1 / 2 + η 1/2+\eta 1/2+η 质量准确" ------ 不是"对一些查询准确",而是"按权重算的多数准确",这个定义(Definition IV.2)直接决定了后面的重加权必须被衰减。
- 重加权必须用置信度而不是硬阈值 ------ 论文用 Schapire--Singer 的 confidence-rated 版本,把"准确/不准确"之间的硬跳变换成线性插值,因为硬阈值会让单行数据对权重分布产生过大影响,破坏隐私。
- 收益是实质的 :任意低敏感度查询从"没人做过"到 O ~ ( n log ∣ X ∣ ρ log 3 / 2 ∣ Q ∣ κ 3 / 2 / ε ) \tilde O(\sqrt{n\log|X|\,\rho\log^{3/2}|Q|\,\kappa^{3/2}}/\varepsilon) O~(nlog∣X∣ρlog3/2∣Q∣κ3/2 /ε) 的精度,计数查询到 O ~ ( log ∣ X ∣ log ∣ Q ∣ κ 3 / 2 / ( ε n ) ) \tilde O(\sqrt{\log|X|\log|Q|\,\kappa^{3/2}}/(\varepsilon\sqrt n)) O~(log∣X∣log∣Q∣κ3/2 /(εn )),运行时间与数据域大小无关(前者的运行时间仍然巨大)。
1. 为什么这篇重要
到 2010 年,差分隐私已经能优雅地回答"少量查询": ∣ Q ∣ |Q| ∣Q∣ 个计数查询要误差约 ∣ Q ∣ \sqrt{|Q|} ∣Q∣ ,只要 ∣ Q ∣ ≪ n 2 |Q|\ll n^2 ∣Q∣≪n2 就有非平凡精度。但数据库分析的真实需求是 ∣ Q ∣ |Q| ∣Q∣ 远大于 n 2 n^2 n2------你想回答所有 3-合取查询、所有区间计数、所有属性的交互项。
2008 年 Blum、Ligett、Roth 的"学习理论路线"打开了局面:用合成数据库可以在 ∣ Q ∣ |Q| ∣Q∣ 远大于 n 2 n^2 n2 时仍给出约 n 2 / 3 log 1 / 3 ∣ Q ∣ n^{2/3}\log^{1/3}|Q| n2/3log1/3∣Q∣ 的误差,但运行时间是指数级的;2009 年 Dwork、Naor、Reingold、Rothblum、Vadhan 把它改到 p o l y ( ∣ X ∣ , ∣ Q ∣ ) \mathrm{poly}(|X|,|Q|) poly(∣X∣,∣Q∣),误差约 n ⋅ ∣ Q ∣ o ( 1 ) \sqrt n\cdot|Q|^{o(1)} n ⋅∣Q∣o(1)。这些工作回答的是"能不能做",代价是精度和效率总有一边难看。
本文的位置是:把"提升精度"这件事本身算法化。它的思路不是重新设计噪声,而是借 boosting 的结构------给定一个"只比随便猜好一点"的弱学习器,反复调用它并重加权,最终得到一个强学习器。这里把"学习器"换成"摘要生成器(synopsis generator)",把"样本"换成"查询"。
这带来两个后果,都超出了论文本身的结论。第一,组合定理必须被重做 :boosting 要跑 T = O ( log ∣ Q ∣ / η 2 ) T=O(\log|Q|/\eta^2) T=O(log∣Q∣/η2) 轮,每轮都要碰数据库(跑一次基摘要生成器、采样 k k k 个查询),最坏情况的 k ε k\varepsilon kε 累加会让预算直接爆炸;于是论文顺带给出了通用机制下的高级组合定理,把损失从 k ε k\varepsilon kε 降到约 ε 2 k ln ( 1 / δ ′ ) + k ε 2 \varepsilon\sqrt{2k\ln(1/\delta')}+k\varepsilon^2 ε2kln(1/δ′) +kε2。第二,"隐私---精度---效率"三元组第一次被摆到台面上 :boosted 的任意查询摘要在精度上近最优,但运行时间是 ∣ X ∣ n ⋅ ∣ Q ∣ ⋅ p o l y ( n , κ ) |X|^n\cdot|Q|\cdot\mathrm{poly}(n,\kappa) ∣X∣n⋅∣Q∣⋅poly(n,κ)------理论上漂亮、实践上不可行,这个反差本身就是后续十年(乘性权重、交互式机制、私有学习)的出发点。
2. 问题设定与形式化
数据库与相邻性 : x ∈ X n x\in X^n x∈Xn( n n n 行,每行来自数据域 X X X);相邻指"大小相同且至少 n − 1 n-1 n−1 行相同"(替换一行)。隐私对行成立。
定义( ε \varepsilon ε-差分隐私,Definition II.1) :对所有相邻 x , x ′ x,x' x,x′ 与所有 S ⊆ S u p p ( M ( x ) ) ∪ S u p p ( M ( x ′ ) ) S\subseteq \mathrm{Supp}(M(x))\cup\mathrm{Supp}(M(x')) S⊆Supp(M(x))∪Supp(M(x′)),
Pr M ( x ) ∈ S ≤ e ε Pr M ( x ′ ) ∈ S . \PrM(x)\\in S\le e^{\varepsilon}\PrM(x')\\in S. PrM(x)∈S≤eεPrM(x′)∈S.
( ε , δ ) (\varepsilon,\delta) (ε,δ)-版本在右边加 δ \delta δ(Definition II.2)。论文还引入最大散度 D ∞ ( Y ∥ Z ) = max S ln Pr Y ∈ S Pr Z ∈ S D_\infty(Y\Vert Z)=\max_{S}\ln\frac{\PrY\\in S}{\PrZ\\in S} D∞(Y∥Z)=maxSlnPrZ∈SPrY∈S,并指出 M M M 是 ε \varepsilon ε-DP 当且仅当对所有相邻 x , x ′ x,x' x,x′ 有 D ∞ ( M ( x ) ∥ M ( x ′ ) ) ≤ ε D_\infty(M(x)\Vert M(x'))\le\varepsilon D∞(M(x)∥M(x′))≤ε; ( ε , δ ) (\varepsilon,\delta) (ε,δ) 版本对应 δ \delta δ-近似最大散度 D ∞ δ D_\infty^\delta D∞δ。
定义(查询族敏感度,sensitivity of a query family,Definition IV.1) : ρ ( n ) = max { ∣ q ( x ) − q ( x ′ ) ∣ : q ∈ Q , 相邻 x , x ′ } \rho(n)=\max\{|q(x)-q(x')|:q\in Q,\ \text{相邻}\ x,x'\} ρ(n)=max{∣q(x)−q(x′)∣:q∈Q, 相邻 x,x′},即整个查询族的最坏单行影响。
定义(弱摘要生成器,weak synopsis generator,Definition IV.2) :固定 n , X , Q n,X,Q n,X,Q,机制 M M M 是 ( k , λ , η , β ) (k,\lambda,\eta,\beta) (k,λ,η,β)-基摘要生成器 ,若对 Q Q Q 上任意分布 D D D,当 M M M 以数据库 x x x 和从 D D D 独立采样的 k k k 个查询为输入时,以至少 1 − β 1-\beta 1−β 的概率输出一个对 D D D 加权下 ( 1 / 2 + η ) (1/2+\eta) (1/2+η) 质量的查询都 λ \lambda λ-准确的摘要。
定义(组合实验,composition experiment,Definition III.1) : k k k 轮自适应组合中,攻击者在第 i i i 轮输出相邻数据库对 x i 0 , x i 1 x_i^0,x_i^1 xi0,xi1、机制 M i M_i Mi 与参数 w i w_i wi,然后收到 y i ← M i ( w i , x i b ) y_i\gets M_i(w_i,x_i^b) yi←Mi(wi,xib); k k k 重自适应组合下 ε \varepsilon ε-DP 要求 D ∞ ( V 0 ∥ V 1 ) ≤ ε D_\infty(V^0\Vert V^1)\le\varepsilon D∞(V0∥V1)≤ε( V b V^b Vb 是攻击者视角)。
| 符号 | 含义 | 取值范围 |
|---|---|---|
| X X X | 数据域(一行可能取的值) | 有限集 |
| n n n | 数据库行数(公开) | --- |
| Q Q Q | 查询集合, q : X n → R q:X^n\to\mathbb{R} q:Xn→R | ∣ Q ∣ \lvert Q\rvert ∣Q∣ 可远大于 n 2 n^2 n2 |
| ρ \rho ρ | 查询族敏感度 | 计数查询 ρ = 1 / n \rho=1/n ρ=1/n |
| ε , δ \varepsilon,\delta ε,δ | 隐私参数 | ε ∈ 0 , 1 \varepsilon\in0,1 ε∈0,1, δ \delta δ 可忽略 |
| k k k | 每轮采样的查询数 | 由基生成器给出 |
| η \eta η | 弱学习优势(比 1 / 2 1/2 1/2 好多少) | ( 0 , 1 / 2 ) (0,1/2) (0,1/2),常取 1 / 3 1/3 1/3 |
| λ \lambda λ | 基生成器的准确度 | > 0 >0 >0 |
| μ \mu μ | boosting 引入的额外误差 | 由 ε , ρ , T \varepsilon,\rho,T ε,ρ,T 决定 |
| T T T | boosting 轮数 | O ( log ∣ Q ∣ / η 2 ) O(\log\lvert Q\rvert/\eta^2) O(log∣Q∣/η2) |
| α \alpha α | 重加权的置信度系数 | 1 2 ln 1 + 2 η 1 − 2 η = O ( η ) \tfrac12\ln\frac{1+2\eta}{1-2\eta}=O(\eta) 21ln1−2η1+2η=O(η) |
| κ \kappa κ | 失败概率参数, e − κ e^{-\kappa} e−κ | > 0 >0 >0 |
3. 核心思想(直觉版)
先看一个具体场景。你是数据平台,要回答 10000 个计数查询("有多少用户同时满足 A 和 B")。有一个"弱"工具:给定查询分布 D D D,它能返回一个摘要,使按 D D D 加权的 60% 查询 误差不超过 λ \lambda λ------但哪 60% 每次都不一样,另外 40% 可能错得离谱。
一个天真的想法:把这个弱工具跑 10 次,每个查询取 10 个答案的中位数。这在查询集固定时确实有效(每次它对的概率 60%,多数投票把错误率压到 6% 以下)。问题在于,弱工具对"哪 60%"没有承诺,最坏情况下它每次都恰好漏掉同一批难查询------中位数就救不了它们。
Boosting 的解法是经典的 AdaBoost:把漏掉的查询的权重调高,让下一轮的"60%"必须覆盖它们 。第 t t t 轮结束后,对每个查询 q q q:误差小于 λ \lambda λ 就降权,误差大于 λ + μ \lambda+\mu λ+μ 就升权,中间的线性过渡。跑 T ≈ log ∣ Q ∣ / η 2 T\approx\log|Q|/\eta^2 T≈log∣Q∣/η2 轮后,任何难查询都会在足够多轮里被"重点照顾",而中位数只看多数,于是全部查询都准。
类比:这像编辑部审稿。每轮你只能让 60% 的稿子通过(准确),但你记下谁没过,下一轮把名额优先分给它们。轮数够多,所有稿子都至少过审几次,最后取"多数意见"。
为什么这会威胁隐私? 因为"谁没过"是数据库的函数。某一行数据可能让某个查询的误差刚好跨过 λ \lambda λ,于是它的权重被上调------这一行就对"查询分布"产生了可观测的影响。硬阈值 λ \lambda λ 会让这个影响是跳变的,而跳变意味着该行的存在可以被无限放大检测出来。
论文的解法是 Schapire--Singer 的置信度评级(confidence-rated) :不设单一阈值,而是设两个阈值 λ \lambda λ 与 λ + μ \lambda+\mu λ+μ,在两者之间让权重变化线性插值,
a t , q = { + 1 误差 ≤ λ 1 − 2 ( d t , q − λ ) / μ λ < d t , q < λ + μ − 1 误差 ≥ λ + μ a_{t,q}=\begin{cases}+1 & \text{误差}\le\lambda\\ 1-2(d_{t,q}-\lambda)/\mu & \lambda< d_{t,q}<\lambda+\mu\\ -1 & \text{误差}\ge\lambda+\mu\end{cases} at,q=⎩ ⎨ ⎧+11−2(dt,q−λ)/μ−1误差≤λλ<dt,q<λ+μ误差≥λ+μ
于是单行数据的影响被"带宽 μ \mu μ"稀释: μ \mu μ 越大,越平滑、越隐私,但精度越差(因为只有错得离谱的查询才会被升权)。这个 trade-off 就是 μ \mu μ 出现在主定理里的原因。
与"高级组合定理"的分工 ,一句话:boosting 负责"用 T T T 轮把弱变强",高级组合定理负责"这 T T T 轮、每轮 k k k 次访问,隐私到底欠多少"。前者是算法,后者是会计。两者在本文里同时出现,但可以各自独立使用。
4. 技术展开
4.1 组合定理:先把会计做对
Theorem III.1(基本组合) :对任意 ε , δ ≥ 0 \varepsilon,\delta\ge0 ε,δ≥0、 k ∈ N k\in\mathbb{N} k∈N,(1) ε \varepsilon ε-DP 机制族在 k k k 重自适应组合下满足 k ε k\varepsilon kε-DP;(2) ( ε , δ ) (\varepsilon,\delta) (ε,δ)-DP 机制族满足 ( k ε , k δ ) (k\varepsilon,k\delta) (kε,kδ)-DP。
Lemma III.2(关键引理) :若 D ∞ ( Y ∥ Z ) ≤ ε D_\infty(Y\Vert Z)\le\varepsilon D∞(Y∥Z)≤ε 且 D ∞ ( Z ∥ Y ) ≤ ε D_\infty(Z\Vert Y)\le\varepsilon D∞(Z∥Y)≤ε,则
D ( Y ∥ Z ) ≤ ε ( e ε − 1 ) . D(Y\Vert Z)\le \varepsilon\,(e^{\varepsilon}-1). D(Y∥Z)≤ε(eε−1).
证明 :记 p y = Pr Y = y p_y=\PrY=y py=PrY=y、 q y = Pr Z = y q_y=\PrZ=y qy=PrZ=y,并令比值 t y = p y / q y t_y=p_y/q_y ty=py/qy。两个方向的最大散度恰好把比值夹住:
D ∞ ( Y ∥ Z ) ≤ ε ⟺ p y ≤ e ε q y , D ∞ ( Z ∥ Y ) ≤ ε ⟺ q y ≤ e ε p y ⟹ t y ∈ e − ε , e ε . D_\infty(Y\Vert Z)\le\varepsilon\iff p_y\le e^{\varepsilon}q_y,\qquad D_\infty(Z\Vert Y)\le\varepsilon\iff q_y\le e^{\varepsilon}p_y \;\Longrightarrow\; t_y\ine\^{-\\varepsilon},\\,e\^{\\varepsilon}. D∞(Y∥Z)≤ε⟺py≤eεqy,D∞(Z∥Y)≤ε⟺qy≤eεpy⟹ty∈e−ε,eε.
把 KL 散度用 q q q 加权改写,注意 E Z t = ∑ y q y t y = ∑ y p y = 1 \mathbb{E}_Zt=\sum_y q_y t_y=\sum_y p_y=1 EZt=∑yqyty=∑ypy=1:
D ( Y ∥ Z ) = ∑ y p y ln p y q y = ∑ y q y t y ln t y = E Z t ln t , E Z t = 1. D(Y\Vert Z)=\sum_y p_y\ln\frac{p_y}{q_y}=\sum_y q_y\,t_y\ln t_y=\mathbb{E}_Z\bigt\\ln t\\big,\qquad \mathbb{E}_Zt=1 . D(Y∥Z)=y∑pylnqypy=y∑qytylnty=EZtlnt,EZt=1.
g ( t ) = t ln t g(t)=t\ln t g(t)=tlnt 在 t > 0 t>0 t>0 上严格凸,因此在区间 e − ε , e ε e\^{-\\varepsilon},e\^{\\varepsilon} e−ε,eε 上它的图像不超过连接两端点的弦:
t ln t ≤ ( t − e − ε ) ε e ε + ( e ε − t ) ( − ε e − ε ) e ε − e − ε . t\ln t\;\le\;\frac{(t-e^{-\varepsilon})\,\varepsilon e^{\varepsilon}+(e^{\varepsilon}-t)\,(-\varepsilon e^{-\varepsilon})}{e^{\varepsilon}-e^{-\varepsilon}} . tlnt≤eε−e−ε(t−e−ε)εeε+(eε−t)(−εe−ε).
弦是仿射函数,取期望时可以直接把 E Z t = 1 \mathbb{E}_Zt=1 EZt=1 代进去:
D ( Y ∥ Z ) ≤ ε ⋅ e ε + e − ε − 2 e ε − e − ε = ε tanh ( ε 2 ) ≤ ε ( e ε − 1 ) , D(Y\Vert Z)\le\varepsilon\cdot\frac{e^{\varepsilon}+e^{-\varepsilon}-2}{e^{\varepsilon}-e^{-\varepsilon}} =\varepsilon\,\tanh\!\Big(\frac{\varepsilon}{2}\Big)\;\le\;\varepsilon\,(e^{\varepsilon}-1), D(Y∥Z)≤ε⋅eε−e−εeε+e−ε−2=εtanh(2ε)≤ε(eε−1),
最后一步用 tanh ( ε / 2 ) ≤ ε / 2 ≤ e ε − 1 \tanh(\varepsilon/2)\le\varepsilon/2\le e^{\varepsilon}-1 tanh(ε/2)≤ε/2≤eε−1( ε > 0 \varepsilon>0 ε>0)。取 ε ∈ 0 , 1 \varepsilon\in0,1 ε∈0,1 时又有 e ε ≤ 1 + 2 ε e^{\varepsilon}\le1+2\varepsilon eε≤1+2ε,故 D ( Y ∥ Z ) ≤ 2 ε 2 D(Y\Vert Z)\le2\varepsilon^{2} D(Y∥Z)≤2ε2。
两点补充。其一,这个证明给出的是比论文陈述更强的 ε tanh ( ε / 2 ) \varepsilon\tanh(\varepsilon/2) εtanh(ε/2),它自然蕴含论文写的 ε ( e ε − 1 ) \varepsilon(e^{\varepsilon}-1) ε(eε−1)------方向是"更强的界推出更弱的界",不要反过来用。其二, ε tanh ( ε / 2 ) \varepsilon\tanh(\varepsilon/2) εtanh(ε/2) 是紧的:取两点分布 q = ( 1 / ( 1 + e ε ) , e ε / ( 1 + e ε ) ) q=(1/(1+e^{\varepsilon}),\,e^{\varepsilon}/(1+e^{\varepsilon})) q=(1/(1+eε),eε/(1+eε)) 与 p = ( e ε / ( 1 + e ε ) , 1 / ( 1 + e ε ) ) p=(e^{\varepsilon}/(1+e^{\varepsilon}),\,1/(1+e^{\varepsilon})) p=(eε/(1+eε),1/(1+eε)),此时 t ∈ { e ε , e − ε } t\in\{e^{\varepsilon},e^{-\varepsilon}\} t∈{eε,e−ε}、 E Z t = 1 \mathbb{E}_Zt=1 EZt=1,且 D = ε ( e ε − 1 ) / ( 1 + e ε ) = ε tanh ( ε / 2 ) D=\varepsilon(e^{\varepsilon}-1)/(1+e^{\varepsilon})=\varepsilon\tanh(\varepsilon/2) D=ε(eε−1)/(1+eε)=εtanh(ε/2) 取等号。
Theorem III.3(高级组合) :对任意 ε > 0 \varepsilon>0 ε>0、 δ , δ ′ > 0 \delta,\delta'>0 δ,δ′>0、 k ∈ N k\in\mathbb{N} k∈N, ( ε , δ ) (\varepsilon,\delta) (ε,δ)-DP 机制族在 k k k 重自适应组合下满足 ( ε ′ , k δ + δ ′ ) (\varepsilon',k\delta+\delta') (ε′,kδ+δ′)-DP,其中
ε ′ = 2 k ln ( 1 / δ ′ ) ε + k ε ( e ε − 1 ) . \varepsilon'=\sqrt{2k\ln(1/\delta')}\;\varepsilon+k\,\varepsilon\,(e^{\varepsilon}-1). ε′=2kln(1/δ′) ε+kε(eε−1).
证明的三步 :(i) 用 Lemma III.2 把"最坏情况损失 ≤ ε \le\varepsilon ≤ε"转成"期望损失 ≤ 2 ε 2 \le2\varepsilon^2 ≤2ε2", k k k 次就是 O ( k ε 2 ) O(k\varepsilon^2) O(kε2);(ii) 定义隐私损失随机变量,用 Azuma 不等式 做集中(自适应使损失之间不独立,但每一步的增量有界,鞅结构成立),以 1 − δ ′ 1-\delta' 1−δ′ 概率把实际损失控制在期望加 2 k ln ( 1 / δ ′ ) ⋅ ε \sqrt{2k\ln(1/\delta')}\cdot\varepsilon 2kln(1/δ′) ⋅ε 以内;(iii) 对 ( ε , δ ) (\varepsilon,\delta) (ε,δ) 情形,用" D ∞ δ D_\infty^\delta D∞δ 可被统计距离与标准最大散度刻画"把问题化归到 ε \varepsilon ε-DP 的情形。
这就是" k \sqrt k k 而不是 k k k"的全部内容 。取 ε = 0.01 \varepsilon=0.01 ε=0.01、 δ ′ = 10 − 5 \delta'=10^{-5} δ′=10−5: k = 10 5 k=10^5 k=105 时基本组合给出 1000 1000 1000,高级组合给出约 25 25 25,差 40 倍。第 5 节的表格里能看到完整对比。
4.2 完整推导:boosting 的误差项 μ \mu μ 从哪来
这是本文最值得看清的一段推导,因为它把"算法参数"和"隐私参数"耦合在了一起。
设定 :boosting 跑 T T T 轮。第 t t t 轮里,(a) 调用一次基摘要生成器( ( ε base , δ base ) (\varepsilon_{\text{base}},\delta_{\text{base}}) (εbase,δbase)-DP),(b) 从当前分布 D t D_t Dt 里采 k k k 个查询。
Claim IV.2(单轮分布的距离) :设 x , x ′ x,x' x,x′ 相邻,固定 A 1 , ... , A t A_1,\dots,A_t A1,...,At,则第 t + 1 t+1 t+1 轮的查询分布满足
D ∞ ( D t + 1 ∥ D t + 1 ′ ) ≤ 4 α T ρ / μ . D_\infty(D_{t+1}\Vert D'_{t+1})\le 4\alpha T\rho/\mu . D∞(Dt+1∥Dt+1′)≤4αTρ/μ.
为什么是 4 α T ρ / μ 4\alpha T\rho/\mu 4αTρ/μ : D t + 1 q ∝ exp ( − α ∑ j ≤ t a j , q ) D_{t+1}q\propto\exp(-\alpha\sum_{j\le t}a_{j,q}) Dt+1q∝exp(−α∑j≤taj,q)。相邻数据库只让某个查询的真实答案 变化 ρ \rho ρ,从而让误差 d t , q d_{t,q} dt,q 变化 ρ \rho ρ;在衰减带里, a t , q a_{t,q} at,q 对 d d d 的导数是 2 / μ 2/\mu 2/μ,于是这个查询的单轮对数权重变化不超过 2 α ρ / μ 2\alpha\rho/\mu 2αρ/μ。而"采样一个查询"这个动作的隐私损失正比于该查询权重在两库下的对数比,最坏情况累计 T T T 轮、再乘上"改变一行最多影响多少"的常数因子,就得到 4 α T ρ / μ 4\alpha T\rho/\mu 4αTρ/μ。
两本账要分开记 :论文的记账方式是把开销拆成两部分再相加。基生成器的 T T T 次调用走 Theorem III.1(基本组合) ,得到 T ε b a s e T\varepsilon_{\mathrm{base}} Tεbase 和 T δ b a s e T\delta_{\mathrm{base}} Tδbase;采样部分才有资格用 Theorem III.3(高级组合)。
k k k 次采样 = k k k 个机制 :每轮采 k k k 个,共 T k Tk Tk 次;每次的隐私参数是 ε s = 4 α T ρ / μ \varepsilon_s=4\alpha T\rho/\mu εs=4αTρ/μ。
用高级组合累加 :把 T k Tk Tk 次 ε s \varepsilon_s εs 代入 Theorem III.3(忽略 k δ k\delta kδ 与 ( ε s ) 2 (\varepsilon_s)^2 (εs)2 的低阶项),要求总损失不超过预留的 ε \varepsilon ε:
ε ≈ 2 T k ln ( 1 / δ ′ ) ⋅ ε s = 2 T k ln ( 1 / δ ′ ) ⋅ 4 α T ρ μ . \varepsilon\;\approx\;\sqrt{2\,Tk\ln(1/\delta')}\cdot\varepsilon_s \;=\;\sqrt{2Tk\ln(1/\delta')}\cdot\frac{4\alpha T\rho}{\mu}. ε≈2Tkln(1/δ′) ⋅εs=2Tkln(1/δ′) ⋅μ4αTρ.
解出 μ \mu μ:
μ = 4 α T 2 T k ln ( 1 / δ ′ ) ρ ε = O ( α T 3 / 2 k ρ ε ) . \mu\;=\;\frac{4\alpha T\sqrt{2Tk\ln(1/\delta')}\,\rho}{\varepsilon} \;=\;O\!\left(\frac{\alpha\,T^{3/2}\sqrt{k}\,\rho}{\varepsilon}\right). μ=ε4αT2Tkln(1/δ′) ρ=O(εαT3/2k ρ).
代入 T = O ( log ∣ Q ∣ / η 2 ) T=O(\log|Q|/\eta^2) T=O(log∣Q∣/η2)、 α = O ( η ) \alpha=O(\eta) α=O(η):
μ = O ( k log 3 / 2 ∣ Q ∣ ρ ε η 2 ) . \mu=O\!\left(\frac{\sqrt{k}\,\log^{3/2}|Q|\,\rho}{\varepsilon\,\eta^{2}}\right). μ=O(εη2k log3/2∣Q∣ρ).
若再带上失败概率参数 κ \kappa κ(基生成器每轮失败概率 e − κ e^{-\kappa} e−κ, T T T 轮合并成 T e − κ Te^{-\kappa} Te−κ),就得到论文 Theorem IV.1 里写的 μ = O ( k κ log 3 / 2 ∣ Q ∣ ρ / ( ε η 2 ) ) \mu=O(\sqrt{k\kappa}\log^{3/2}|Q|\rho/(\varepsilon\eta^2)) μ=O(kκ log3/2∣Q∣ρ/(εη2))。
推导的三个后果 :(1) μ \mu μ 与 ε \varepsilon ε 成反比------想省隐私就必须付精度;(2) μ \mu μ 随 T 3 / 2 T^{3/2} T3/2 增长,而 T T T 又在 log ∣ Q ∣ \log|Q| log∣Q∣ 里,所以查询集合越大,误差只多一个 log 3 / 2 \log^{3/2} log3/2 因子,这是全文最漂亮的结论;(3) μ ∝ ρ \mu\propto\rho μ∝ρ,即敏感度越高的查询族越贵,与直觉一致。
Theorem IV.1(Boosting for Queries,陈述) :设 Q Q Q 的敏感度至多 ρ \rho ρ, T = O ( log ∣ Q ∣ / η 2 ) T=O(\log|Q|/\eta^2) T=O(log∣Q∣/η2),则 Figure 1 的算法:
- 用 ( k , λ , η , e − κ ) (k,\lambda,\eta,e^{-\kappa}) (k,λ,η,e−κ) 基生成器实例化时,以至少 1 − T e − κ 1-Te^{-\kappa} 1−Te−κ 的概率对所有 q ∈ Q q\in Q q∈Q 给出 ( λ + μ ) (\lambda+\mu) (λ+μ)-准确的答案;
- 若基生成器是 ( ε base , δ base ) (\varepsilon_{\text{base}},\delta_{\text{base}}) (εbase,δbase)-DP 且 μ \mu μ 取上面的量级,则整个算法是 ( ε + T ε base , T ( k e − κ + δ base ) ) \bigl(\varepsilon+T\varepsilon_{\text{base}},\;T(k e^{-\kappa}+\delta_{\text{base}})\bigr) (ε+Tεbase,T(ke−κ+δbase))-DP。
注意第 2 条里的 ε \varepsilon ε 是"用户预留的预算", T ε base T\varepsilon_{\text{base}} Tεbase 是额外要付的------boosting 的每一轮都要重新调一次基生成器,这部分隐私是实打实叠加的,不是"重加权免费"。
4.3 算法主体
Boosting for Queries(k, λ, η, ρ, μ, T)
D_1 ← 均匀分布 on Q
for t = 1..T:
1) 从 D_t 独立采样 k 个查询 S_t,跑基摘要生成器得到 A_t
2) 对每个 q ∈ Q:
d_{t,q} = |q(x) − A_t(q)|
a_{t,q} = +1 if d ≤ λ
= −1 if d ≥ λ+μ
= 1−2(d−λ)/μ otherwise
3) 归一化:u_{t,q} ← exp(−α Σ_{j≤t} a_{j,q}),D_{t+1}[q] = u_{t,q} / Z_t
输出 A = (A_1,...,A_T),A(q) = median{A_1(q),...,A_T(q)}
三处设计要点:中位数而不是平均 (抗个别轮的离谱答案)、衰减带而不是硬阈值 (保护隐私)、T ≈ log ∣ Q ∣ / η 2 T\approx\log|Q|/\eta^2 T≈log∣Q∣/η2 轮(覆盖所有查询所需的轮数)。
4.4 基生成器与应用结果
基生成器的构造用的是 Dwork 等人 2009 年那个泛化界 (generalization bound):从 D D D 里采一小批查询、加噪回答、再拟合出一个"合成数据库"当摘要。论文把它推广到任意分布(Lemma V.1):只要摘要大小 m m m 比特、且在采样集 S ∼ D a m S\sim D^{am} S∼Dam 上 λ \lambda λ-拟合,则它也能对 D D D 的 1 / 2 + η 1/2+\eta 1/2+η 质量 λ \lambda λ-拟合。
| 结果 | 精度(大意) | 运行时间 |
|---|---|---|
| Theorem V.2 任意查询的基生成器 | O ~ ( n log ∣ X ∣ ρ κ 3 / 2 / ε ) \tilde O(\sqrt{n\log\lvert X\rvert\,\rho\,\kappa^{3/2}}/\varepsilon) O~(nlog∣X∣ρκ3/2 /ε) | ∣ X ∣ n ⋅ p o l y ( n , κ , log ( 1 / ε ) ) \lvert X\rvert^n\cdot\mathrm{poly}(n,\kappa,\log(1/\varepsilon)) ∣X∣n⋅poly(n,κ,log(1/ε)) |
| Theorem V.3 计数查询的基生成器(沿用 11) | O ~ ( ( log ∣ Q ∣ + log ∣ X ∣ κ 3 / 2 ) / ( ε n ) ) \tilde O((\sqrt{\log\lvert Q\rvert}+\sqrt{\log\lvert X\rvert\kappa^{3/2}})/(\varepsilon\sqrt n)) O~((log∣Q∣ +log∣X∣κ3/2 )/(εn )) | p o l y ( ∣ X ∣ , n , κ , log ( 1 / ε ) ) \mathrm{poly}(\lvert X\rvert,n,\kappa,\log(1/\varepsilon)) poly(∣X∣,n,κ,log(1/ε)) |
| Theorem V.4 boosted 任意查询 | O ~ ( n log ∣ X ∣ ρ log 3 / 2 ∣ Q ∣ κ 3 / 2 / ε ) \tilde O(\sqrt{n\log\lvert X\rvert\,\rho\log^{3/2}\lvert Q\rvert\,\kappa^{3/2}}/\varepsilon) O~(nlog∣X∣ρlog3/2∣Q∣κ3/2 /ε) | ∣ X ∣ n ⋅ ∣ Q ∣ ⋅ p o l y ( n , κ , log ( 1 / ε ) ) \lvert X\rvert^n\cdot\lvert Q\rvert\cdot\mathrm{poly}(n,\kappa,\log(1/\varepsilon)) ∣X∣n⋅∣Q∣⋅poly(n,κ,log(1/ε)) |
| Theorem V.5 boosted 计数查询 | O ~ ( log ∣ X ∣ log ∣ Q ∣ κ 3 / 2 / ( ε n ) ) \tilde O(\sqrt{\log\lvert X\rvert\log\lvert Q\rvert\,\kappa^{3/2}}/(\varepsilon\sqrt n)) O~(log∣X∣log∣Q∣κ3/2 /(εn )) | p o l y ( ∣ X ∣ , ∣ Q ∣ , n , κ , log ( 1 / ε ) ) \mathrm{poly}(\lvert X\rvert,\lvert Q\rvert,n,\kappa,\log(1/\varepsilon)) poly(∣X∣,∣Q∣,n,κ,log(1/ε)) |
Theorem V.4 是"第一个" :任意低敏感度查询族(不只是计数查询)的隐私摘要生成器。代价是运行时间里的 ∣ X ∣ n |X|^n ∣X∣n------这正是"理论上近最优、实践上不可行"的典型。Theorem V.5 的计数查询版把运行时间降到多项式,精度从 Dwork 等人 2009 的 n ⋅ ∣ Q ∣ o ( 1 ) \sqrt n\cdot|Q|^{o(1)} n ⋅∣Q∣o(1) 改进到 log ∣ X ∣ log ∣ Q ∣ / n \sqrt{\log|X|\log|Q|}/\sqrt n log∣X∣log∣Q∣ /n 。
论文还提到 Boosting for People(把人当作 boosting 的元素,用于私有学习),但明确说明因篇幅原因未收录进 proceedings------如果你在别处看到"本文提出了私有 boosting 学习算法",多半是引错了。

左: ε = 0.01 \varepsilon=0.01 ε=0.01、 δ ′ = 10 − 5 \delta'=10^{-5} δ′=10−5 时,基本组合 k ε k\varepsilon kε(虚线)与高级组合(实线)随 k k k 的差距, k = 10 5 k=10^5 k=105 时是 1000 对 25。右:迷你 Boosting for Queries 实验( ∣ Q ∣ = 1000 |Q|=1000 ∣Q∣=1000、 η = 1 / 6 \eta=1/6 η=1/6、 λ = 0.2 \lambda=0.2 λ=0.2、 μ = 0.4 \mu=0.4 μ=0.4), T T T 从 1 到 40,合格查询占比从 0.667 升到 1.000,最大误差从 1.79 降到 0.12。
5. 可运行代码
下面两段代码各自独立、只依赖 numpy:整段复制到任何 Python 环境就能跑,不需要配套脚本或附件。第一段只做组合定理的算术,第二段只做 boosting 主循环,两段的输出都是真跑出来的。
5.1 组合定理与隐私记账
这一段把 Theorem III.1 与 Theorem III.3 摆在一起比较,再反解"在给定预算下能做多少次",最后给出一次典型 boosting 运行的完整隐私记账。
python
"""Paper 06, part 1: composing privacy loss (Theorems III.1 / III.3)."""
import numpy as np
def basic_eps(k, eps):
"""Theorem III.1 (1): k epsilon."""
return k * eps
def advanced_eps(k, eps, delta_p):
"""Theorem III.3: eps' = sqrt(2 k ln(1/delta')) * eps + k * eps * (e^eps - 1)."""
return np.sqrt(2 * k * np.log(1.0 / delta_p)) * eps + k * eps * (np.exp(eps) - 1.0)
print("[composition] delta' = 1e-5, per-mechanism eps = 0.01")
print(f"{'k':>7s} {'basic k*eps':>12s} {'advanced':>10s} {'ratio':>7s}")
for k in (1, 10, 100, 1_000, 10_000, 100_000):
b, a = basic_eps(k, 0.01), advanced_eps(k, 0.01, 1e-5)
print(f"{k:>7d} {b:12.4f} {a:10.4f} {b / a:6.2f}x")
print("\n[budget] how many queries fit in a total eps=1.0 budget? (eps_per_query = 0.01)")
for delta_p in (1e-3, 1e-6, 1e-9):
k = 1
while advanced_eps(k, 0.01, delta_p) <= 1.0:
k += 1
print(f" delta'={delta_p:.0e}: advanced composition allows k={k - 1} "
f"(basic composition: {int(1.0 / 0.01)})")
# where does advanced composition start to beat basic composition?
eps, dp = 0.01, 1e-5
k = 1
while advanced_eps(k, eps, dp) >= basic_eps(k, eps):
k += 1
print(f"\n[crossover] eps={eps}, delta'={dp:.0e}: advanced wins from k={k} on "
f"({basic_eps(k, eps):.4f} -> {advanced_eps(k, eps, dp):.4f})")
print("\n[privacy bookkeeping] T rounds = T base runs + T*k sampled-query releases")
K_SAMPLE, EPS_BASE, EPS_SAMPLE, DELTA_BASE, KAPPA = 20, 0.02, 0.004, 1e-12, 20.0
for T in (10, 20, 40):
e_basic = T * EPS_BASE + T * K_SAMPLE * EPS_SAMPLE
e_adv = advanced_eps(T, EPS_BASE, 1e-9) + advanced_eps(T * K_SAMPLE, EPS_SAMPLE, 1e-9)
print(f" T={T:3d}: basic eps={e_basic:8.3f} advanced eps={e_adv:8.3f} "
f"delta={T * (K_SAMPLE * np.exp(-KAPPA) + DELTA_BASE):.2e}")
真实输出(python3 block1.py,venv Python 3.11 + numpy 2.5.4):
text
[composition] delta' = 1e-5, per-mechanism eps = 0.01
k basic k*eps advanced ratio
1 0.0100 0.0481 0.21x
10 0.1000 0.1527 0.65x
100 1.0000 0.4899 2.04x
1000 10.0000 1.6179 6.18x
10000 100.0000 5.8035 17.23x
100000 1000.0000 25.2244 39.64x
[budget] how many queries fit in a total eps=1.0 budget? (eps_per_query = 0.01)
delta'=1e-03: advanced composition allows k=634 (basic composition: 100)
delta'=1e-06: advanced composition allows k=337 (basic composition: 100)
delta'=1e-09: advanced composition allows k=230 (basic composition: 100)
[crossover] eps=0.01, delta'=1e-05: advanced wins from k=24 on (0.2400 -> 0.2375)
[privacy bookkeeping] T rounds = T base runs + T*k sampled-query releases
T= 10: basic eps= 1.000 advanced eps= 0.779 delta=4.12e-07
T= 20: basic eps= 2.000 advanced eps= 1.105 delta=8.24e-07
T= 40: basic eps= 4.000 advanced eps= 1.572 delta=1.65e-06
- k = 1 k=1 k=1 时高级组合反而更差 (0.0481 对 0.0100): 2 ln ( 1 / δ ′ ) ε \sqrt{2\ln(1/\delta')}\,\varepsilon 2ln(1/δ′) ε 这一项与 k k k 无关, k k k 小时它是纯开销。把 2 k ln ( 1 / δ ′ ) ε + k ε ( e ε − 1 ) < k ε \sqrt{2k\ln(1/\delta')}\,\varepsilon+k\varepsilon(e^{\varepsilon}-1)<k\varepsilon 2kln(1/δ′) ε+kε(eε−1)<kε 解出来(代码里
[crossover]那一行就是它),临界点是
k ∗ = 2 ln ( 1 / δ ′ ) ( 2 − e ε ) 2 . k^*=\frac{2\ln(1/\delta')}{(2-e^{\varepsilon})^{2}} . k∗=(2−eε)22ln(1/δ′).
本例 ε = 0.01 \varepsilon=0.01 ε=0.01、 δ ′ = 10 − 5 \delta'=10^{-5} δ′=10−5 给出 k ∗ ≈ 23.5 k^*\approx23.5 k∗≈23.5,也就是从 k = 24 k=24 k=24 起高级组合才真的占优 ( k = 23 k=23 k=23 时 0.2324 仍大于 0.2300, k = 24 k=24 k=24 时 0.2375 小于 0.2400,恰好翻过来)。这是一个反直觉的小数字:直觉上 k \sqrt{k} k 要压倒 k k k 得等很久,实际上因为 2 − e ε 2-e^{\varepsilon} 2−eε 极接近 1,临界点只由 2 ln ( 1 / δ ′ ) 2\ln(1/\delta') 2ln(1/δ′) 决定。这也是最常见的误用。
- 预算是硬约束 :单次 ε = 0.01 \varepsilon=0.01 ε=0.01、总预算 1.0 时,基本组合只允许 100 次, δ ′ = 10 − 3 \delta'=10^{-3} δ′=10−3 的高级组合允许 634 次------6 倍; δ ′ \delta' δ′ 收紧到 10 − 9 10^{-9} 10−9 就掉到 230 次,"省下来的 ε \varepsilon ε"是用 δ ′ \delta' δ′ 换的。
- 两本账要分开看 : T = 40 T=40 T=40 时基本组合 4.000、高级组合 1.572,差别就是 Theorem III.3 的全部实用价值;但 base 生成器那部分仍在按 T ε b a s e T\varepsilon_{\mathrm{base}} Tεbase 线性累加, T \sqrt T T 的便宜只出现在 T k Tk Tk 次采样上。
5.2 迷你 Boosting for Queries
这一段只保留 Figure 1 的主循环:初始化分布 → 按当前分布调基生成器 → 置信度评级式重加权 → 最后取中位数。基生成器是一个替身模型 ------按"对当前分布 D t D_t Dt 的 1 / 2 + η 1/2+\eta 1/2+η 质量准确、且优先覆盖较容易的查询"直接生成误差,这样能把注意力集中在重加权与中位数聚合上,不必去实现论文那个需要拟合合成数据库的基生成器。换成真基生成器时,只有 base synopsis generator 那 5 行需要替换。
python
"""Paper 06, part 2: a miniature 'Boosting for Queries' loop (Figure 1 of the paper)."""
import numpy as np
NQ = 1000 # |Q|: number of queries
ETA = 1.0 / 6 # advantage over 1/2
LAM_T = 0.20 # accuracy threshold lambda
MU = 0.40 # band width; lambda + mu is the "inaccuracy" threshold
ALPHA = 0.5 * np.log((1 + 2 * ETA) / (1 - 2 * ETA))
def run(T, seed=20100612):
"""T boosting rounds -> (final D, |median error| per query, good rounds per query, difficulty)."""
rng = np.random.default_rng(seed)
difficulty = rng.beta(1.4, 1.4, NQ)
order = np.argsort(difficulty)
D = np.full(NQ, 1.0 / NQ)
A = np.zeros((T, NQ)) # A[t, q] = error of the round-t synopsis on q
acc = np.zeros(NQ) # how many rounds query q was answered well
logw = np.zeros(NQ)
for t in range(T):
# base synopsis generator: good on the (1/2+eta) mass of D (easiest queries first)
cw = np.cumsum(D[order])
cut = order[min(np.searchsorted(cw, (0.5 + ETA) * cw[-1]), NQ - 1)]
ok = difficulty <= difficulty[cut]
err = np.where(ok, LAM_T * rng.uniform(0.0, 1.0, NQ),
LAM_T + MU * (1.0 + rng.uniform(0.0, 3.0, NQ)))
A[t] = err * rng.choice([-1.0, 1.0], NQ)
acc += ok
# Figure 1 step 2: confidence-rated, attenuated reweighting
d = np.abs(A[t])
a = np.where(d >= LAM_T + MU, -1.0, 1.0)
mid = (d > LAM_T) & (d < LAM_T + MU)
a[mid] = 1.0 - 2.0 * (d[mid] - LAM_T) / MU
logw = logw - ALPHA * a
logw -= logw.max()
D = np.exp(logw) / np.exp(logw).sum()
return D, np.abs(np.median(A, axis=0)), acc, difficulty
print(f"[boosting] |Q| = {NQ}, eta = 1/6, lambda = {LAM_T:.2f}, mu = {MU:.2f}, alpha = {ALPHA:.4f}")
print(f"{'T':>4s} {'frac err<=lambda+mu':>21s} {'max err':>9s} {'p95 err':>9s} {'min good rounds':>16s}")
for T in (1, 3, 5, 10, 20, 40):
_, err, acc, _ = run(T)
print(f"{T:>4d} {np.mean(err <= LAM_T + MU):21.3f} {err.max():9.4f} "
f"{np.percentile(err, 95):9.4f} {acc.min():16.0f}")
print("\n[final distribution] T=40: reweighting has moved mass onto the hard queries")
D, err, _, difficulty = run(40)
hard = difficulty > np.quantile(difficulty, 0.75)
print(f" mean D weight on the hardest quartile: {D[hard].mean() * NQ:.2f}x uniform")
print(f" queries with err > lambda+mu: {(err > LAM_T + MU).sum()} / {NQ}")
真实输出(python3 block2.py):
text
[boosting] |Q| = 1000, eta = 1/6, lambda = 0.20, mu = 0.40, alpha = 0.3466
T frac err<=lambda+mu max err p95 err min good rounds
1 0.667 1.7919 1.5999 0
3 0.815 1.7196 1.2913 0
5 0.906 1.6403 0.9162 0
10 0.990 1.4695 0.1362 0
20 1.000 0.1541 0.0865 6
40 1.000 0.1151 0.0629 26
[final distribution] T=40: reweighting has moved mass onto the hard queries
mean D weight on the hardest quartile: 3.93x uniform
queries with err > lambda+mu: 0 / 1000
- 效果集中在 T T T 的中段 : T = 1 → 10 T=1\to10 T=1→10 把合格率从 0.667 推到 0.990,但最大误差仍有 1.47(有些查询还没被照顾到); T = 20 T=20 T=20 之后最大误差才塌到 0.15。这与 T ≈ log ∣ Q ∣ / η 2 T\approx\log\lvert Q\rvert/\eta^2 T≈log∣Q∣/η2 的直觉一致( ∣ Q ∣ = 1000 \lvert Q\rvert=1000 ∣Q∣=1000、 η = 1 / 6 \eta=1/6 η=1/6 时理论上界约 250 轮,仿真里 40 轮已够,因为难度分布是平滑的)。
- 重加权确实在动 :最难的四分位查询最终拿到 3.93 倍均匀权重。如果这个数字停在 1.0 附近,说明重加权没生效( α \alpha α 或 μ \mu μ 写错了)。
- 诚实提醒:替身基生成器的误差分布是人为设定的,所以这些数字只能验证"循环结构与聚合方式正确",不能当作论文精度的实测------论文本身没有实验章节,只有渐近界。
6. 复杂度与参数选择
| 维度 | 时间复杂度 | 空间 | 实用建议 |
|---|---|---|---|
| 高级组合的 ε \varepsilon ε 计算 | O ( 1 ) O(1) O(1) | O ( 1 ) O(1) O(1) | 上线前先算一遍,别凭 k ε k\varepsilon kε 估 |
| 重加权一步(全部查询) | O ( ∣ Q ∣ ) O(\lvert Q\rvert) O(∣Q∣) | O ( ∣ Q ∣ ) O(\lvert Q\rvert) O(∣Q∣) | 这是 boosting 唯一便宜的环节 |
| T T T 轮 boosting | T ⋅ ( 基生成器 + k ∣ Q ∣ ) T\cdot(\text{基生成器}+\;k\lvert Q\rvert) T⋅(基生成器+k∣Q∣) | O ( ∣ Q ∣ ) O(\lvert Q\rvert) O(∣Q∣) | T = O ( log ∣ Q ∣ / η 2 ) T=O(\log\lvert Q\rvert/\eta^2) T=O(log∣Q∣/η2), η \eta η 小则 T T T 爆炸 |
| 基生成器(任意查询) | ∣ X ∣ n ⋅ p o l y \lvert X\rvert^n\cdot\mathrm{poly} ∣X∣n⋅poly | --- | 理论上界,实际不可运行 |
| 基生成器(计数查询) | p o l y ( ∣ X ∣ , n , κ ) \mathrm{poly}(\lvert X\rvert,n,\kappa) poly(∣X∣,n,κ) | --- | 可用;依赖合成数据库拟合 |
| 中位数聚合 | O ( T ∣ Q ∣ ) O(T\lvert Q\rvert) O(T∣Q∣) | O ( T ∣ Q ∣ ) O(T\lvert Q\rvert) O(T∣Q∣) | 必须存下全部 T T T 轮答案 |
参数选型经验:
- η \eta η(弱学习优势) :论文的基生成器取 η = 1 / 3 \eta=1/3 η=1/3, T = O ( log ∣ Q ∣ / η 2 ) T=O(\log|Q|/\eta^2) T=O(log∣Q∣/η2) 就是 9 log ∣ Q ∣ 9\log|Q| 9log∣Q∣ 量级。 η \eta η 减半, T T T 翻两番------弱一点点代价很大,所以基生成器"至少 60% 准"是硬要求。
- μ \mu μ(衰减带宽) : μ \mu μ 越大越隐私( μ \mu μ 在 Theorem IV.1 的 μ \mu μ 公式分母上,同时也在 Claim IV.2 的分母上),但精度直接等于 λ + μ \lambda+\mu λ+μ。实操上应把它当成"隐私---精度的旋钮",而不是自由参数。
- α \alpha α :固定为 1 2 ln 1 + 2 η 1 − 2 η \tfrac12\ln\frac{1+2\eta}{1-2\eta} 21ln1−2η1+2η, η = 1 / 3 \eta=1/3 η=1/3 时约 0.805, η = 1 / 6 \eta=1/6 η=1/6 时约 0.347。别手工调。
- δ ′ \delta' δ′(组合定理的松弛) : ε ′ ∝ ln ( 1 / δ ′ ) \varepsilon'\propto\sqrt{\ln(1/\delta')} ε′∝ln(1/δ′) ,从 10 − 6 10^{-6} 10−6 收紧到 10 − 12 10^{-12} 10−12 只让 ε ′ \varepsilon' ε′ 涨约 1.4 倍,但它同时进入 k δ + δ ′ k\delta+\delta' kδ+δ′ 的加项------先定 δ ′ \delta' δ′ 再谈 k k k。
- k k k(每轮采样数) : μ ∝ k \mu\propto\sqrt k μ∝k ,所以 k k k 越小精度越好;但 k k k 太小基生成器无法保证泛化(Lemma V.1 要求采样集大于摘要尺寸)。
7. 与前作/后续工作的关系
| 工作 | 时间 | 与本文关系 |
|---|---|---|
| Dwork, McSherry, Nissim, Smith(TCC 2006) | 2006 | 提供 Laplace 机制与基础组合 k ε k\varepsilon kε,是 Theorem III.1 的来源 |
| Blum, Ligett, Roth(STOC 2008) | 2008 | 用学习理论做非交互数据发布, n 2 / 3 log 1 / 3 ∣ Q ∣ n^{2/3}\log^{1/3}\lvert Q\rvert n2/3log1/3∣Q∣ 误差、指数时间;本文的直接前作 |
| Dwork, Naor, Reingold, Rothblum, Vadhan(STOC 2009) | 2009 | 把上者改到 p o l y ( ∣ X ∣ , ∣ Q ∣ ) \mathrm{poly}(\lvert X\rvert,\lvert Q\rvert) poly(∣X∣,∣Q∣),本文的基生成器与泛化界(Lemma V.1)取自这里 |
| Dwork, Lei(STOC 2009) | 2009 | 用"进化置信"给出特定机制下的 k \sqrt k k 型界;本文把它推广到任意机制(Theorem III.3) |
| 本文(FOCS 2010) | 2010 | 高级组合定理 + Boosting for Queries + 首个任意低敏感度查询的摘要生成器 |
| Hardt, Rothblum(FOCS 2010) | 2010 | 乘性权重机制,交互式、不需预先知道 Q Q Q,精度与本文明文可比 |
| Roth, Roughgarden(STOC 2010) | 2010 | 中位数机制,交互式回答大量查询 |
| Bun, Steinke(2016 起的一系列工作) | 2016+ | 把集中不等式做到近最优的隐私放大与组合,是 Theorem III.3 的现代形态 |
8. 工程落地注意
什么时候该用这篇的东西 :几乎总是用它的组合定理(这是 2010 年后所有 DP 系统预算表的基础),很少直接用 boosting 算法本身------因为基生成器要么理论可行但跑不动( ∣ X ∣ n |X|^n ∣X∣n),要么需要拟合合成数据库。真正被工程继承的是三个思想:查询级重加权 、置信度评级式的软化阈值 、中位数聚合抗异常轮。
审计最容易被打回的六个点:
- 有没有把 k \sqrt k k 当默认? 高级组合只在 k k k 足够大(约 k ≳ 2 ln ( 1 / δ ′ ) k\gtrsim2\ln(1/\delta') k≳2ln(1/δ′))时优于基本组合,小 k k k 场景照抄会平白多花预算。预算表里应该同时列出两种算法并取小。
- ε \varepsilon ε 与 δ \delta δ 是否被拆开记账? Theorem III.3 给的是 ( ε ′ , k δ + δ ′ ) (\varepsilon',k\delta+\delta') (ε′,kδ+δ′), δ \delta δ 的累加是 k δ k\delta kδ 而不是 δ \delta δ;很多实现只盯 ε \varepsilon ε。
- δ ′ \delta' δ′ 的选择有没有文档? δ ′ \delta' δ′ 不是"越小越好",它与 k δ k\delta kδ 的加项共同决定最终 ( ε , δ ) (\varepsilon,\delta) (ε,δ)。审计要的是"为什么取 10 − 9 10^{-9} 10−9",不是一个数字。
- 自适应查询是否被当成非自适应? Theorem III.3 覆盖自适应组合,但前提是每轮的机制族固定且对任意输入满足 DP;如果实现里根据上一轮答案调整了后续机制的超参(比如噪声尺度),要确认这种调整不消耗额外预算(post-processing 免费,但"根据答案决定的尺度"不是 post-processing)。
- boosting 的每轮基生成器是否真的加了噪声? 在仿真里很容易把基生成器写成确定性函数,隐私账就全错了。
- μ \mu μ 与 λ \lambda λ 的定义是否与代码一致? 论文的 μ \mu μ 是"额外误差", λ + μ \lambda+\mu λ+μ 是"不准确阈值",落代码时经常被写成 μ \mu μ 就是阈值,导致精度被高估一倍。
还有一条属于定位问题:不要把本文的 boosting 和"高级组合定理"混着引用 。前者是 Figure 1 的算法,后者是 Theorem III.3;写合规文档时若只引 boosting 却想证明" k \sqrt k k 预算",会被直接打回。
9. 常见误解 5 问
Q1:本文的 boosting 是不是就是"高级组合定理"?
不是,这是两件事。高级组合定理(Theorem III.3)是通用的隐私损失累加结果,可以单独用在任何 k k k 重组合上;boosting 是 Figure 1 的算法,用重加权把弱摘要变强摘要。本文同时给出两者,是因为 boosting 需要 T T T 轮、每轮 k k k 次访问,必须用高级组合来算账------但一个是算法、一个是会计,引用时要分开。
Q2:boosting 是在对数据行做重加权吗?
不是。被重加权的是查询 上的分布 D t D_t Dt,隐私始终保护数据库的行。论文把这句话写得很明确:"we ensure privacy for the rows of the database, but the boosting is performed on the queries"。把这两者搞混,会得出"boosting 会放大个体权重、从而破坏隐私"的错误结论------恰恰相反,正是因为重加权会受单行影响,才需要衰减带 μ \mu μ。
Q3:既然中位数能救回错误答案,那基生成器的 η \eta η 是不是可以很小(比如 0.01)?
代价是轮数: T = O ( log ∣ Q ∣ / η 2 ) T=O(\log|Q|/\eta^2) T=O(log∣Q∣/η2), η = 0.01 \eta=0.01 η=0.01 时 T T T 要几万轮,而隐私损失里 T ε base T\varepsilon_{\text{base}} Tεbase 是实打实叠加的, μ \mu μ 还随 T 3 / 2 T^{3/2} T3/2 涨。所以弱学习优势不能无限小,这也是为什么论文的基生成器都做到 η = 1 / 3 \eta=1/3 η=1/3。
Q4:为什么用中位数而不用平均值聚合?
平均会被单轮的离谱答案拖垮:只要有一轮某个查询错得很大,平均就废了。中位数只看排序中间,允许近一半的轮次完全错------这正是"每轮准确率 1 / 2 + η 1/2+\eta 1/2+η"这个前提能被用上的地方,也是 T T T 必须是 O ( log ∣ Q ∣ ) O(\log|Q|) O(log∣Q∣) 而非 O ( ∣ Q ∣ ) O(|Q|) O(∣Q∣) 的原因。
Q5:Theorem V.4 说 ∣ X ∣ n |X|^n ∣X∣n 的运行时间,这是不是论文的缺陷?
是明确承认的缺陷,而且论文自己把它当作"可行性证明"而非"工程方案":Theorem V.4 的价值是首次证明任意低敏感度查询族存在近最优精度的隐私摘要,把问题从"能不能"变成"多快";真正的工程价值在 Theorem V.5(计数查询,多项式时间)。把 V.4 的精度当作可落地的指标是常见的误读。
10. 延伸阅读
- 前置 :Dwork & Roth, The Algorithmic Foundations of Differential Privacy(2014),第 3 章的组合与第 6 章的 boosting 讨论。
- 对照 :Dwork & Lei(STOC 2009)的"进化置信"论证,理解 Theorem III.3 之前的 k \sqrt k k 结果为什么只在特定机制上成立。
- 后续 :Bun & Steinke 关于集中不等式与隐私放大的系列工作(如 Concentrated Differential Privacy, TCC 2016),是现代组合定理的形态。
- 同期的另一条路 :Hardt & Rothblum(FOCS 2010)的乘性权重机制,交互式、不必预先知道 Q Q Q,与本文明文互补。
11. 参考资料
- C. Dwork, G. N. Rothblum, S. Vadhan. Boosting and Differential Privacy. FOCS 2010. DOI: 10.1109/FOCS.2010.12|作者版 PDF:people.seas.harvard.edu/~salil/research/PrivateBoosting-focs.pdf
- C. Dwork, F. McSherry, K. Nissim, A. Smith. Calibrating Noise to Sensitivity in Private Data Analysis. TCC 2006. DOI: 10.1007/11681878_14
- A. Blum, K. Ligett, A. Roth. A Learning Theory Approach to Non-interactive Database Privacy. STOC 2008. DOI: 10.1145/1374376.1374464
- C. Dwork, M. Naor, O. Reingold, G. N. Rothblum, S. Vadhan. On the Complexity of Differentially Private Data Release. STOC 2009. DOI: 10.1145/1536414.1536467
- C. Dwork, J. Lei. Differential Privacy and Robust Statistics. STOC 2009. DOI: 10.1145/1536414.1536466
- M. Hardt, G. N. Rothblum. A Multiplicative Weights Mechanism for Privacy-Preserving Data Analysis. FOCS 2010. DOI: 10.1109/FOCS.2010.85
- R. E. Schapire, Y. Singer. Improved Boosting Algorithms Using Confidence-rated Predictions. Machine Learning 37(3), 1999. DOI: 10.1023/A:1007614523901