【中文翻译】第3章(1/3)-The Algorithmic Foundations of Differential Privacy

为方便阅读,故将《The Algorithmic Foundations of Differential Privacy》翻译项目内容搬运至此;

教材原文地址:https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf

中文翻译版 Github 项目地址1:https://github.com/guoJohnny/algorithmic-foundation-of-dp-zh-cn

中文翻译版 Github 项目地址2:https://github.com/doubleheiker/algorithmic-foundation-of-dp-zh-cn

感谢前辈的翻译工作!

在这里插入图片描述

三、基本技术与合成定理

本章在回顾了一些概率工具之后,介绍了拉普拉斯机制,该机制为实际(向量)值的查询提供了差分隐私。这种应用自然引出指数机制,这是一种用于从一组离散的候选输出中进行差分隐私选择的方法。然后,我们分析了由多种差分隐私机制构成造成的累积隐私损失。最后,我们提供了一种方法——稀疏矢量技术——主要用于报告可能非常大量的计算结果,但前提是只有少数几个是“有意义的”。

在本节中,我们描述了差异隐私中的一些最基本的技术,我们将再次使用它们。此处描述的技术构成了我们将要开发的所有其他算法的基本合成部分。

3.1 概率工具

以下集中不等式经常会有用。 我们以易于使用的形式而不是最强的形式陈述它们。
(注:集中不等式:集中不等式是数学中的一类不等式,描述了一个随机变量是否集中在某个取值附近。例如大数定律说明了一系列独立同分布随机变量的平均值在概率上趋近于它们的数学期望,这表示随着变量数目增大,平均值会集中在数学期望附近。)

定理3.1(加法形式的切尔诺夫界限、又称切尔诺夫不等式)定义 X 1 , X 2 , . . . , X m X_1,X_2 ,...,X_m X1,X2,...,Xm 为独立随机变量,对任意, i i i 0 ≤ X i ≤ 1 0\leq X_i \leq 1 0Xi1 。定义 S = 1 m ∑ i = 1 m X i S = \frac{1}{m}\sum_{i=1}^{m}X_i S=m1i=1mXi 为随机变量的均值,定义 μ = E [ S ] \mu = \mathbb{E}[S] μ=E[S] 为他们的期望均值。则可以得到如下不等式:
Pr [ S > μ + ε ] ≤ e − 2 m ε 2 Pr [ S < μ − ε ] ≤ e − 2 m ε 2 \begin{aligned} \text{Pr}[S > \mu + \varepsilon] &\leq e^{-2m\varepsilon^{2}}\\ \text{Pr}[S < \mu - \varepsilon] &\leq e^{-2m\varepsilon^{2}} \end{aligned} Pr[S>μ+ε]Pr[S<με]e2mε2e2mε2

定理3.2(乘法形式的切尔诺夫不等式)定义 X 1 , X 2 , . . . , X m X_1,X_2 ,...,X_m X1,X2,...,Xm 为独立随机变量,对任意, i i i 0 ≤ X i ≤ 1 0\leq X_i \leq 1 0Xi1 。定义 S = 1 m ∑ i = 1 m X i S = \frac{1}{m}\sum_{i=1}^{m}X_i S=m1i=1mXi 为随机变量的均值,定义 μ = E [ S ] \mu = \mathbb{E}[S] μ=E[S] 为他们的期望均值。则可以得到如下不等式:
Pr [ S > ( 1 + ε ) μ ] ≤ e − m μ ε 2 / 3 Pr [ S < ( 1 − ε ) μ ] ≤ e − m μ ε 2 / 2 \begin{aligned} \text{Pr}[S > (1 + \varepsilon)\mu] &\leq e^{-m\mu\varepsilon^{2}/3}\\ \text{Pr}[S < (1 - \varepsilon)\mu] &\leq e^{-m\mu\varepsilon^{2}/2} \end{aligned} Pr[S>(1+ε)μ]Pr[S<(1ε)μ]emμε2/3emμε2/2

当我们没有独立的随机变量时。我们仍然可以应用 A z u m a Azuma Azuma 不等式:

定理3.3 Azuma不等式 f f f m m m 个随机变量 X 1 , . . . , X m X_1,...,X_m X1,...,Xm 的方法,每一个 X i X_i Xi 的值取自集合 A i A_i Ai ,使得 E ( f ) \mathbb{E}(f) E(f) 有界。用 c i c_i ci 表示 X i X_i Xi f f f 的最大影响,即对于所有的 a i , a i ′ ∈ A i a_i,a_i^{\prime} \in A_i ai,aiAi, 有:
∣ E [ f ∣ X 1 , . . . , X i − 1 , X i = a i ] ∣ − ∣ E [ f ∣ X 1 , . . . , X i − 1 , X i = a i ′ ] ∣ ≤ c i |\mathbb{E}[f|X_1,...,X_{i-1},X_i=a_i]|-|\mathbb{E}[f|X_1,...,X_{i-1},X_i=a_i^\prime]| \leq c_i E[fX1,...,Xi1,Xi=ai]E[fX1,...,Xi1,Xi=ai]ci
则:
Pr [ f ( X i , . . . , X m ) ≥ E [ f ] + t ] ≤ e x p ( − 2 t 2 ∑ i = 1 m c i 2 ) \text{Pr}[f(X_i,...,X_m) \geq \mathbb{E}[f] + t ] \leq exp(-\frac{2t^2}{\sum_{i=1}^{m}c_i^2}) Pr[f(Xi,...,Xm)E[f]+t]exp(i=1mci22t2)
(注:Azuma不等式涉及随机过程中“鞅”(Martingale)的概念)

定理3.4 斯特林近似 n ! n! n! 可以近似于 2 n π ( n / e ) n \sqrt{2n\pi}(n/e)^n 2 (n/e)n:
2 n π ( n / e ) n e 1 / ( 12 n + 1 ) < n ! < 2 n π ( n / e ) n e 1 / ( 12 n ) \sqrt{2n\pi}(n/e)^ne^{1/(12n+1)} < n! < \sqrt{2n\pi}(n/e)^ne^{1/(12n)} 2 (n/e)ne1/(12n+1)<n!<2 (n/e)ne1/(12n)

3.2 随机响应

让我们回想一下第2节中描述的用于评估非法行为发生频率的简单随机响应机制。 让XYZ成为这样的活动。 面对查询“您在过去一周内从事XYZ吗?”,指示受访者执行以下步骤:

  • 1.掷硬币。
  • 2.如果是反面,请如实回应。
  • 3.如果是正面,那么再掷第二枚硬币,如果正面回答“是”,如果是反面则回答“否”。

随机响应背后的动机是,它提供了“合理的否认”。例如,可能提供了“是”响应,因为第一次和第二次硬币翻转都是正面,概率为1/4。换句话说,隐私是通过过程获得的,没有“好”或“坏”的响应。获得响应的过程会影响如何合理地解释它们。如下声明所示,这种随机响应是差分隐私的。

命题 3.5 上述随机响应方法是 ( l n 3 , 0 ) (ln3,0) (ln3,0)- 差分隐私的。

【证明】: 假设固定随机响应者为同一人。上述分析表明 Pr [ R e s p o n s e = Y e s ∣ T r u t h = Y e s ] = 3 / 4 \text{Pr}[Response=Yes|Truth=Yes]=3/4 Pr[Response=YesTruth=Yes]=3/4 。具体来说,当事实是“是”时,如果第一个硬币出现反面(概率1/2)或第一个和第二个出现正面(概率1/4),则结果将是“是”,而 Pr [ R e s p o n s e = Y e s ∣ T r u t h = N o ] = 1 / 4 \text{Pr}[Response=Yes|Truth=No]=1/4 Pr[Response=YesTruth=No]=1/4 (第一个出现在正面,第二个出现反面;概率为1/4)。同理,将类似的推理应用于事实为“否”的情况,我们获得:

Pr [ R e s p o n s e = Y e s ∣ T r u t h = Y e s ] Pr [ R e s p o n s e = Y e s ∣ T r u t h = N o ] = Pr [ R e s p o n s e = N o ∣ T r u t h = N o ] Pr [ R e s p o n s e = N o ∣ T r u t h = Y e s ] = 3 / 4 1 / 4 = 3 = e x p ( l n 3 ) \begin{aligned} \frac{\text{Pr}[Response=Yes|Truth=Yes]}{\text{Pr}[Response=Yes|Truth=No]} \\ = \frac{\text{Pr}[Response=No|Truth=No]}{\text{Pr}[Response=No|Truth=Yes]} &= \frac{3/4}{1/4} = 3 = exp(ln3) \end{aligned} Pr[Response=YesTruth=No]Pr[Response=YesTruth=Yes]=Pr[Response=NoTruth=Yes]Pr[Response=NoTruth=No]=1/43/4=3=exp(ln3)

于是 ε = l n 3 \ \varepsilon = ln3  ε=ln3 上述随机响应方法是 ( l n 3 , 0 ) (ln3,0) (ln3,0)- 差分隐私的。

【命题 3.5证毕】

3.3 Laplace 机制

数值查询是数据库最基础的数据查询类型,将其定义为: f : N ∣ X ∣ → R k f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^k f:NXRk。这个查询将数据库映射成为k个真实值。将查询的 ℓ 1 \ell_1 1敏感度作为衡量我们对查询回答的准确程度的参数之一。

定义3.1 ( ℓ 1 \ell_1 1敏感度) 方法 f : N ∣ X ∣ → R k f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^k f:NXRk ℓ 1 \ell_1 1敏感度为:
Δ f = max ⁡ x , y ∈ N ∣ X ∣ , ∥ x − y ∥ 1 = 1 ∥ f ( x ) − f ( y ) ∥ 1 \Delta f = \max_{x,y\in\mathbb{N}^{|\mathcal{X}|},\Vert x-y\Vert _1=1}\Vert f(x)-f(y)\Vert _1 Δf=x,yNX,xy1=1maxf(x)f(y)1

注:该处在哈佛大学的课程中表示为: Δ f = max ⁡ x , y ∈ N ∣ X ∣ , ∥ x − y ∥ 1 = 1 ∣ f ( x ) − f ( y ) ∣ \Delta f = \max_{x,y\in\mathbb{N}^{|\mathcal{X}|},\Vert x-y\Vert _1=1}| f(x)-f(y)| Δf=maxx,yNX,xy1=1f(x)f(y),而《差分隐私算法基础》将 ℓ 1 \ell_1 1敏感度表示为 定义 3.1 中形式。个人认为,对于以数值形式作为函数的输出,其敏感度计算应遵循哈弗大学课程中的计算公式。对于以分量形式作为函数的输出,应使用本书计算公式。下图使用哈佛大学课程中的举例,用平均值作为函数 f f f

请添加图片描述
请添加图片描述

函数 f f f ℓ 1 \ell_1 1 敏感度反映了单体的数据在最坏情况下可以改变函数 f f f 的程度,因此,直观地讲,为了隐藏单个人的参与,我们必须引入响应的不确定性。确实,我们将这种动机形式化:函数的敏感性为我们对输出施加多少扰动以保护隐私提供了一个上界。自然而然地,一种噪声分布可带来差分隐私。

定义3.2(拉普拉斯分布) 以0为中心,以 b b b 为尺度的拉普拉斯分布,其概率密度函数的分布为:

L a p ( x ∣ b ) = 1 2 b exp ⁡ ( − ∣ x ∣ b ) Lap(x|b) = \frac{1}{2b}\exp(-\frac{|x|}{b}) Lap(xb)=2b1exp(bx)

这个分布的方差是 σ 2 = 2 b 2 \sigma^2=2b^2 σ2=2b2 。我们有时会写 L a p ( b ) Lap(b) Lap(b) 来表示带尺度为 b b b 的Laplace分布,有时会滥用符号,写 L a p ( b ) Lap(b) Lap(b) 来表示随机变量 X ∽ L a p ( b ) X \backsim Lap(b) XLap(b)

拉普拉斯分布是指数分布的对称版本。

我们现在定义拉普拉斯机制。顾名思义,拉普拉斯机制将简单地计算 f f f,并用拉普拉斯分布的噪声扰动每个映射 f f f 的输出结果(注:此处为个人理解补充进翻译中,原文省略了指代与解释。)。噪声的尺度将校准为 f f f 的敏感度(除以 ε \varepsilon ε [ 1 ] \ ^{[1]}  [1]

(原书注[1]: 或者,使用方差校准为 Δ f l n ( 1 / δ ) / ε \Delta fln(1/\delta)/\varepsilon Δfln(1/δ)/ε 的高斯噪声,可以实现 ( ε , δ ) (\varepsilon,\delta) (ε,δ)- 差分隐私(请参阅附录A)。拉普拉斯机制的使用更为简洁,两种机制在合成下的行为类似(定理3.20))

定义3.3 (拉普拉斯机制) 给定任意方法 f : N ∣ X ∣ → R k f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^k f:NXRk, 拉普拉斯机制定义为如下形式:
M L ( x , f ( ⋅ ) , ε ) = f ( x ) + ( Y 1 , … , Y k ) \mathcal{M}_L(x,f(\cdot),\varepsilon)=f(x) + (Y_1,\dots,Y_k) ML(x,f(),ε)=f(x)+(Y1,,Yk)
此处的 Y i Y_i Yi 是从 L a p ( Δ f / ε ) Lap(\Delta f/\varepsilon) Lap(Δf/ε) 中提取的独立同分布随机变量。

定理 3.6 拉普拉斯机制是 ( ε , 0 ) (\varepsilon,0) (ε,0)-差分隐私。

【证明】:设 x ∈ N ∣ X ∣ , y ∈ N ∣ X ∣ x \in \mathbb{N}^{|\mathcal{X}|},y \in \mathbb{N}^{|\mathcal{X}|} xNX,yNX,同时满足 ∥ x − y ∥ 1 ≤ 1 \Vert x-y\Vert _1 \leq 1 xy11 (即两者为相邻数据集)。并设 f ( ⋅ ) f(\cdot) f() 是函数 f : N ∣ X ∣ → R k f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^k f:NXRk。用 p x p_x px 表示概率密度函数 M L ( x , f , ε ) \mathcal{M}_L(x,f,\varepsilon) ML(x,f,ε), p y p_y py 表示概率密度函数 M L ( y , f , ε ) \mathcal{M}_L(y,f,\varepsilon) ML(y,f,ε)。我们用任意点 z z z 比较这两者的概率密度:

p x ( z ) p y ( z ) = ∏ i = 1 k ( exp ⁡ ( − ε ∣ f ( x ) i − z i ∣ Δ f ) exp ⁡ ( − ε ∣ f ( y ) i − z i ∣ Δ f ) ) = ∏ i = 1 k exp ⁡ ( ε ( ∣ f ( y ) i − z i ∣ − ∣ f ( x ) i − z i ∣ ) Δ f ) ≤ ∏ i = 1 k exp ⁡ ( ε ∣ f ( x ) i − f ( y ) i ∣ Δ f ) = exp ⁡ ( ε ∥ f ( x ) − f ( y ) ∥ 1 Δ f ) ≤ exp ⁡ ( ε ) \begin{aligned} \frac{p_x(z)}{p_y(z)} &= \prod_{i=1}^{k}\Bigg(\frac{\exp(-\frac{\varepsilon|f(x)_i-z_i|}{\Delta f})}{\exp(-\frac{\varepsilon|f(y)_i-z_i|}{\Delta f})} \Bigg)\\ &= \prod_{i=1}^{k}\exp\Bigg( \frac{\varepsilon(|f(y)_i-z_i|-|f(x)_i-z_i|)}{\Delta f} \Bigg)\\ &\leq \prod_{i=1}^{k}\exp\Bigg(\frac{\varepsilon|f(x)_i-f(y)_i|}{\Delta f} \Bigg)\\ &= \exp\Bigg(\frac{\varepsilon\Vert f(x)-f(y)\Vert _1}{\Delta f} \Bigg)\\ &\leq \exp(\varepsilon) \end{aligned} py(z)px(z)=i=1k(exp(Δfεf(y)izi)exp(Δfεf(x)izi))=i=1kexp(Δfε(f(y)izif(x)izi))i=1kexp(Δfεf(x)if(y)i)=exp(Δfεf(x)f(y)1)exp(ε)

第一个不等式由三角不等式推导得来,最后一个不等式是由敏感度定义得到,即: ∥ x − y ∥ 1 ≤ 1 \Vert x-y\Vert _1 \leq 1 xy11。且由对称性可得 p x ( z ) p y ( z ) ≥ exp ⁡ ( − ε ) \frac{p_x(z)}{p_y(z)} \geq \exp(-\varepsilon) py(z)px(z)exp(ε)

【定理 3.6 证毕】

补充1: 由 Laplace机制的定义:

M L ( x , f ( ⋅ ) , ε ) = f ( x ) + ( Y 1 , … , Y k ) \mathcal{M}_L(x,f(\cdot),\varepsilon)=f(x) + (Y_1,\dots,Y_k) ML(x,f(),ε)=f(x)+(Y1,,Yk)

为直观表示,使用随机变量的分量形式。即: Y → = ( Y 1 , … , Y k ) \overrightarrow{Y}=(Y_1,\dots,Y_k) Y =(Y1,,Yk) f : N ∣ X ∣ → R k = f ( x ) → = ( f ( x ) 1 , . . . , f ( x ) k ) f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^k=\overrightarrow{f(x)}=(f(x)_1,...,f(x)_k) f:NXRk=f(x) =(f(x)1,...,f(x)k)。 所以,根据定理 3.6中的条件:

p x ( z → ) = Pr [ M L ( x , f ( ⋅ ) , ε ) = z → ] = Pr [ f ( x ) → + Y → = z → ] = Pr [ Y → = z → − f ( x ) → ] = ε 2 Δ f exp ⁡ ( − ε ∣ f ( x ) → − z → ∣ Δ f ) = ε 2 Δ f ∏ i = 1 k exp ⁡ ( − ε ∣ f ( x ) i − z i ∣ Δ f ) \begin{aligned} p_x(\overrightarrow{z}) &=\text{Pr}[\mathcal{M}_L(x,f(\cdot),\varepsilon)=\overrightarrow{z}]\\ &= \text{Pr}[\overrightarrow{f(x)} + \overrightarrow{Y} =\overrightarrow{z}]\\ &=\text{Pr}[\overrightarrow{Y}=\overrightarrow{z}-\overrightarrow{f(x)}]\\ &= \frac{\varepsilon}{2\Delta f}\exp\Big(-\frac{\varepsilon|\overrightarrow{f(x)}-\overrightarrow{z}|}{\Delta f}\Big)\\ &= \frac{\varepsilon}{2\Delta f}\prod_{i=1}^{k}\exp\Big(-\frac{\varepsilon|f(x)_i-z_i|}{\Delta f}\Big) \end{aligned} px(z )=Pr[ML(x,f(),ε)=z ]=Pr[f(x) +Y =z ]=Pr[Y =z f(x) ]=fεexp(Δfεf(x) z )=fεi=1kexp(Δfεf(x)izi)

p x ( z ) p y ( z ) = ∏ i = 1 k ( exp ⁡ ( − ε ∣ f ( x ) i − z i ∣ Δ f ) exp ⁡ ( − ε ∣ f ( y ) i − z i ∣ Δ f ) ) \frac{p_x(z)}{p_y(z)} = \prod_{i=1}^{k}\Big(\frac{\exp(-\frac{\varepsilon|f(x)_i-z_i|}{\Delta f})}{\exp(-\frac{\varepsilon|f(y)_i-z_i|}{\Delta f})} \Big) py(z)px(z)=i=1k(exp(Δfεf(y)izi)exp(Δfεf(x)izi)) 表示形式就是上式拉普拉斯分布的分量形式,即 p x ( z ) = ε 2 Δ f ∏ i = 1 k exp ⁡ ( − ε ∣ f ( x ) i − z i ∣ Δ f ) p_x(z)= \frac{\varepsilon}{2\Delta f}\prod_{i=1}^{k}\exp\Big(-\frac{\varepsilon|f(x)_i-z_i|}{\Delta f}\Big) px(z)=fεi=1kexp(Δfεf(x)izi)

补充2由于 定义 2.3 (数据库之间距离) 定义了数据库 x x x y y y 之间的 ℓ 1 \ell_1 1 距离为 ∥ x − y ∥ 1 \Vert x-y\Vert _1 xy1

∥ x − y ∥ 1 = ∑ i = 1 ∣ X ∣ ∣ x i − y i ∣ \Vert x-y\Vert _1 = \sum_{i=1}^{|\mathcal{X}|}|x_i-y_i| xy1=i=1Xxiyi

故:上述证明中的 ∏ i = 1 k exp ⁡ ( ε ∣ f ( x ) i − f ( y ) i ∣ Δ f ) = exp ⁡ ( ε ∥ f ( x ) − f ( y ) ∥ 1 Δ f ) \prod_{i=1}^{k}\exp\Big(\frac{\varepsilon|f(x)_i-f(y)_i|}{\Delta f} \Big)=\exp\Big(\frac{\varepsilon\Vert f(x)-f(y)\Vert _1}{\Delta f} \Big) i=1kexp(Δfεf(x)if(y)i)=exp(Δfεf(x)f(y)1) 可由如下步骤得到:

∏ i = 1 k exp ⁡ ( ε ∣ f ( x ) i − f ( y ) i ∣ Δ f ) = exp ⁡ ( ε ∑ i = 1 k ∣ f ( x ) i − f ( y ) i ∣ Δ f ) = exp ⁡ ( ε ∥ f ( x ) − f ( y ) ∥ 1 Δ f ) \begin{aligned} \prod_{i=1}^{k}\exp\Bigg(\frac{\varepsilon|f(x)_i-f(y)_i|}{\Delta f} \Bigg) &= \exp\Bigg(\frac{\varepsilon\sum_{i=1}^{k}|f(x)_i-f(y)_i|}{\Delta f} \Bigg)\\ &= \exp\Bigg(\frac{\varepsilon\Vert f(x)-f(y)\Vert _1}{\Delta f} \Bigg) \end{aligned} i=1kexp(Δfεf(x)if(y)i)=exp(Δfεi=1kf(x)if(y)i)=exp(Δfεf(x)f(y)1)

例3.1 计数查询:计数查询是“数据库中有多少个元素满足属性 P?”形式的查询。我们将一次又一次地回到这些查询,有时是纯形式,有时使用小数形式返回这些查询(“数据库中某元素的占比是多少…?”),有时带有权重(线性查询),有时带有稍微复杂的形式。(例如,对数据库中的每个元素应用 h : N ∣ X ∣ → [ 0 , 1 ] h:\mathbb{N}^{|\mathcal{X}|} \to [0,1] h:NX[0,1] 并求和)。计数是一个非常强大的原语。它占据了统计查询学习模型中所有可学习的内容,以及许多标准的数据挖掘任务和基本统计​​信息。由于计数查询的敏感度为1(单个人的添加或删除最多可以影响 1 个计数),因此 定理3.6 的直接结果是,可以实现 ( ε , 0 ) (\varepsilon,0) (ε,0)-差分隐私 计数通过添加尺度参数为 1 / ε 1/\varepsilon 1/ε 的噪声进行查询,即通过添加从 L a p ( 1 / ε ) Lap(1/\varepsilon) Lap(1/ε) 分布提取的噪声进行查询。预期的失真或错误为 1 / ε 1/\varepsilon 1/ε,与数据库的大小无关。

固定但任意数量的 m m m 个计数查询列表可以视为向量值查询。缺少有关查询集的任何进一步信息时,此矢量值查询的敏感性的最坏情况范围是 m m m,因为单个个体可能会更改每个计数(敏感度为 m m m)。在这种情况下,可以通过将尺度参数为 m / ε m/\varepsilon m/ε 的噪声添加到每个查询的真实答案中来实现 ( ε , 0 ) (\varepsilon,0) (ε,0)-差分隐私。

有时我们将响应大量(可能是任意的)查询的问题称为查询发布问题。

例3.2 直方图查询:在查询在结构上不相交的特殊(但很常见)情况下,我们可以做得更好——我们不必让噪声随查询的数量而变化。直方图查询就是一个例子。在这种类型的查询中,数据整体( N ∣ X ∣ \mathbb{N}^{|\mathcal{X}|} NX )被划分为多个单元格,查询每个单元格中有多少数据库元素。由于单元格是不相交的,单个数据库元素的添加或删除会影响一个单元格中的计数,并且与该单元格的差异是 1,因此直方图查询的敏感度为1,可以对每个单元格中的真实计数增加源自 L a p ( 1 / ε ) Lap(1/\varepsilon) Lap(1/ε) 分布的噪声来回答查询。

为了了解一般查询的 Laplace 机制的准确性,我们使用以下有用的事实:

事实 3.7: 如果 Y ∽ L a p ( b ) Y \backsim Lap(b) YLap(b),则:

Pr [ ∣ Y ∣ ≥ t ⋅ b ] = exp ⁡ ( − t ) \text{Pr}[|Y| \geq t \cdot b] = \exp(-t) Pr[Ytb]=exp(t)

这个事实与布尔不等式(译者注:Union Bound,又称 Boole’s Inequality < 1 > ^{<1>} <1>)一起为我们提供了一个
关于拉普拉斯机制准确性的简单不等式:

定理 3.8 :设 f : N ∣ X ∣ → R k , y = M L ( x , f ( ⋅ ) , ε ) f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^k,y=\mathcal{M}_L(x,f(\cdot),\varepsilon) f:NXRk,y=ML(x,f(),ε)。则 ∀ δ ∈ ( 0 , 1 ] \forall\delta \in (0,1] δ(0,1]
Pr [ ∥ f ( x ) − y ∥ ∞ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] ≤ δ \text{Pr}\Big[\Vert f(x)-y\Vert _\infty \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon}) \Big] \leq \delta Pr[f(x)yln(δk)(εΔf)]δ

【证明】 我们有:

Pr [ ∥ f ( x ) − y ∥ ∞ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] = Pr [ max ⁡ i ∈ [ k ] ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] ≤ k ⋅ Pr [ ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] = k ⋅ ( δ k ) = δ \begin{aligned} \text{Pr}\Big[\Vert f(x)-y\Vert _\infty \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon})\Big] &= \text{Pr}\Big[\max_{i \in [k]}|Y_i|\geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon}) \Big]\\ & \leq k\cdot \text{Pr}\Big[|Y_i|\geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon}) \Big] \\ &= k\cdot(\frac{\delta}{k})\\ &= \delta \end{aligned} Pr[f(x)yln(δk)(εΔf)]=Pr[i[k]maxYiln(δk)(εΔf)]kPr[Yiln(δk)(εΔf)]=k(kδ)=δ

在证明中,第二个和最后的不等式是从拉普拉斯分布和事实3.7中推导得到的。

译者注<1> 布尔不等式:指对于全部事件的概率不大于单个事件的概率总和,对于事件 A 1 , A 2 , A 3 . . . : P ( ⋃ i A i ) ≤ ∑ i P ( A i ) A_1,A_2,A_3...: P(\bigcup_{i}A_i)\leq \sum_iP(A_i) A1,A2,A3...:P(iAi)iP(Ai)

补充3: 上一证明过程缺少 ℓ ∞ \ell_\infty 范数距离,又称切比雪夫距离,如下定义: ∥ x ∥ \Vert x \Vert x x x x 向量各个元素绝对值最大那个元素的绝对值,形式化为:

∥ x ∥ ∞ = lim ⁡ k → ∞ ( ∑ i = 1 n ∣ p i − q i ∣ k ) 1 / k = max ⁡ i ∈ [ k ] ∣ p i − q i ∣ \Vert x\Vert _{\infty}=\lim\limits_{k \to \infty}\Big(\sum_{i=1}^n|p_i-q_i|^k \Big)^{1/k}=\max_{i \in [k]}|p_i-q_i| x=klim(i=1npiqik)1/k=i[k]maxpiqi

补充4: (定理3.8补充证明) 由 Laplace 机制可知 Y i ∽ L a p ( Δ f / ε ) Y_i \backsim Lap(\Delta f/\varepsilon) YiLap(Δf/ε) y = M L ( x , f ( ⋅ ε ) = f ( x ) + ( Y 1 , … , Y k ) y=\mathcal{M}_L(x,f(\cdot\varepsilon)=f(x) + (Y_1,\dots,Y_k) y=ML(x,f(ε)=f(x)+(Y1,,Yk),则: ∣ f ( x ) − y ∣ = ∣ ( Y 1 , . . . Y k ) ∣ |f(x) - y|= |(Y_1,...Y_k)| f(x)y=(Y1,...Yk)

又因切比雪夫距离定义:

∥ f ( x ) − y ∥ ∞ = m a x i ∈ k ∣ f ( x ) − y ∣ = m a x i ∈ k ∣ Y i ∣ \Vert f(x)-y\Vert _\infty=max_{i \in k}|f(x)-y|=max_{i \in k}|Y_i| f(x)y=maxikf(x)y=maxikYi

故证明的第一步可以由此推导出:

Pr [ ∥ f ( x ) − y ∥ ∞ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] = Pr [ max ⁡ i ∈ [ k ] ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] \text{Pr}\Big[\Vert f(x)-y\Vert _\infty \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon})\Big] = \text{Pr}\Big[\max_{i \in [k]}|Y_i|\geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon}) \Big] Pr[f(x)yln(δk)(εΔf)]=Pr[i[k]maxYiln(δk)(εΔf)]

证明第二步是因为 max ⁡ i ∈ [ k ] ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) \max_{i \in [k]}|Y_i| \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon}) maxi[k]Yiln(δk)(εΔf) 的概率必然小于等于 ⋃ i { ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) } \bigcup_{i} \{|Y_i| \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon})\} i{Yiln(δk)(εΔf)} 全体的概率,且由布尔不等式推导而来,即最大值 Y i Y_i Yi 概率不大于单个事件的概率总和。又因为 事实3.7,推导如下:

Pr [ max ⁡ i ∈ [ k ] ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] ≤ Pr [ ⋃ i { ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) } ] ≤ ∑ i k ⋅ Pr [ ∣ Y i ∣ ≥ ln ⁡ ( k δ ) ⋅ ( Δ f ε ) ] = ∑ i k ⋅ exp ⁡ ( − l n ( k δ ) ) = k ⋅ ( δ k ) = δ \begin{aligned} \text{Pr}\Big[\max_{i \in [k]}|Y_i|\geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon})\Big] & \leq \text{Pr}\Big[ \bigcup_{i} \{|Y_i| \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon}) \}\Big]\\ &\leq \sum_i^k \cdot \text{Pr}\Big[|Y_i| \geq \ln(\frac{k}{\delta})\cdot(\frac{\Delta f}{\varepsilon})\Big]\\ &= \sum_i^k \cdot \exp\big(-ln(\frac{k}{\delta})\big)\\ &= k\cdot(\frac{\delta}{k})\\ &= \delta \end{aligned} Pr[i[k]maxYiln(δk)(εΔf)]Pr[i{Yiln(δk)(εΔf)}]ikPr[Yiln(δk)(εΔf)]=ikexp(ln(δk))=k(kδ)=δ

例3.3 名字频度: 假设我们要使用 2010 年人口普查参与者数据,并从数据中统计出给定的 10,000 个名字里各个名字的频度。 这个问题可以用查询 f : N ∣ X ∣ → R 10000 f:\mathbb{N}^{|\mathcal{X}|} \to \mathbb{R}^{10000} f:NXR10000 表示。 这是一个直方图查询,因此灵敏度 Δ f = 1 \Delta f = 1 Δf=1 ,因为每个人最多只能有一个名字。当频度查询是 ( 1 , 0 ) (1,0) (1,0)- 差分隐私的,并且概率要为 95% ,我们使用上面的定理可以计算所有10,000名字的频度,其估计的相加误差不会超过 ln ⁡ ( 10000 / 0.05 ) ≈ 12.2 \ln (10000/0.05) \thickapprox 12.2 ln(10000/0.05)12.2。 对于一个人口超过 300,000,000 的国家来说,这是非常低的错误!

补充5: 由例3.3可知: k = 10000 , Δ f = 1 , ε = 1 , δ = 1 − 0.95 = 0.05 k=10000,\Delta f = 1,\varepsilon=1,\delta = 1 - 0.95 = 0.05 k=10000,Δf=1,ε=1,δ=10.95=0.05,并由定理3.8可以推得上述结论:

Pr [ max ⁡ i ∈ [ 10000 ] ∣ Y i ∣ ≥ ln ⁡ ( 10000 0.05 ) ⋅ ( 1 1 ) ] ≤ 0.05 t h e n Pr [ max ⁡ i ∈ [ 10000 ] ∣ Y i ∣ ≤ ln ⁡ ( 10000 0.05 ) ⋅ ( 1 1 ) ] ≥ 1 − 0.05 Pr [ max ⁡ i ∈ [ 10000 ] ∣ Y i ∣ ≤ ln ⁡ ( 10000 0.05 ) ] ≥ 0.95 \begin{aligned} \text{Pr}\Big[\max_{i \in [10000]}|Y_i|\geq \ln(\frac{10000}{0.05})\cdot(\frac{1}{1})\Big] &\leq 0.05\\ then \ \ \ \text{Pr}\Big[\max_{i \in [10000]}|Y_i| \leq \ln(\frac{10000}{0.05})\cdot(\frac{1}{1})\Big] &\geq 1 - 0.05\\ \text{Pr}\Big[\max_{i \in [10000]}|Y_i| \leq \ln(\frac{10000}{0.05})\Big] &\geq 0.95 \end{aligned} Pr[i[10000]maxYiln(0.0510000)(11)]then   Pr[i[10000]maxYiln(0.0510000)(11)]Pr[i[10000]maxYiln(0.0510000)]0.0510.050.95

差分隐私选择 例3.3中的任务是一个差分隐私选择:输出空间是离散的,任务是产生一个“最佳”答案。在例3.3中是选择输出是常用名频度最多的直方图单元。

例3.4 最常见的医学疾病 假设我们希望知道哪一个疾病是在一组被调查者的医疗史中最常见的,因此,需要对这些调查者进行一系列调查,调查其个人是否曾经接受过这些疾病的诊断。由于个人可能得过许多疾病,所以这些调查的敏感性可能很高。尽管如此,正如我们接下来描述的,这个任务可以通过在每个计数中添加 L a p ( 1 / ε ) Lap(1/\varepsilon) Lap(1/ε) 噪声来解决(注意噪声的小范围,它独立于疾病的总数)。关键是 m m m 个噪音计数本身不会被发布(尽管“获胜”计数可以释放,没有额外的隐私损失)。(个人理解:m 个噪音计数即存在 m 种常见疾病,需要对 m 个常见疾病的统计计数增加噪声,并返回增加完噪声之后的最大值,即最常见的疾病。原文中的“获胜”应该指的是增加噪声最后的最大值。因为增加噪声之前与之后的最大值可能不一致。

Report Noisy Max 请考虑以下简单算法,目的是为了确定在 m 个计数查询中哪个具有最高数值:将独立生成的拉普拉斯噪声 L a p ( 1 / ε ) Lap(1/\varepsilon) Lap(1/ε) 添加到每个计数中,并返回增加完噪声后最大计数索引(我们忽略之间可能的关联)。将此算法称为 Report Noisy Max

注意到 “Report Noisy Max” 算法中的“信息最小化”原理:仅公开与最大值相对应的索引,而不是发布所有噪声计数并让分析人员找到最大值及其索引。 由于一个人的数据会影响所有计数,因此计数向量具有较高的 ℓ 1 \ell_1 1 灵敏度,即 Δ f = m \Delta f = m Δf=m,如果我们想使用拉普拉斯机制发布所有计数,则需要更多的噪声。

命题 3.9 Report Noisy Max 算法是 ( ε , 0 ) (\varepsilon,0) (ε,0)-差分隐私。

【证明】 D = D ′ ∪ { a } D=D' \cup \{a\} D=D{a} 。 令 c , c ′ c,c' c,c 分别表示数据库为 D , D ′ D,D' D,D的计数向量。我们使用两个属性:

  • 1.计数的单调性。对于所有 j ∈ [ m ] , c j ≥ c j ′ j \in [m],c_j \geq c'_j j[m],cjcj
  • 2.利普希茨(Lipschitz)属性。对于所有 j ∈ [ m ] , c j ′ + 1 ≥ c j j \in [m],c'_j + 1 \geq c_j j[m],cj+1cj注:Lipschitz连续,要求函数图像的曲线上任意两点连线的斜率一致有界,就是任意的斜率都小于同一个常数,这个常数就是 Lipschitz 常数,此处Lipschitz常数为1。

定义任意 i ∈ [ m ] i \in [m] i[m],我们将限制 i 分别从 D D D D ′ D' D 提取比率的上下界。

定义 r − i r_{-i} ri,从 L a p ( 1 / ε ) m − 1 Lap(1/\varepsilon)^{m-1} Lap(1/ε)m1 用于除第 i 个计数外的所有噪声计数。我们会单独讨论每个 r − i r_{-i} ri。我们使用符号 Pr [ i ∣ ξ ] \text{Pr}[i|\xi] Pr[iξ] 表示 Report Noisy Max 算法在以 ξ \xi ξ 的条件下,输出为 i 的概率。

我们首先讨论 Pr [ i ∣ D , r − i ] ≤ e ε Pr [ i ∣ D ′ , r − i ] \text{Pr}[i|D,r_{-i}] \leq e^{\varepsilon}\text{Pr}[i|D',r_{-i}] Pr[iD,ri]eεPr[iD,ri] 的情况。 定义:

r ∗ = min ⁡ r i : c i + r i > c j + r j ∀ j ≠ i r^* = \min_{r_i}:c_i + r_i > c_j + r_j \ \forall j \neq i r=rimin:ci+ri>cj+rj j=i

注意,上面已经定义了 r − i r_{-i} ri 的情况。当且仅当 r i ≥ r ∗ r_i \geq r^* rir 时, i 为数据库 D D D 的最大统计噪声输出。

对于所有 1 ≤ j ≠ i ≤ m 1 \leq j \not ={i} \leq m 1j=im

c i + r ∗ > c j + r j ⟹ ( 1 + c i ′ ) + r ∗ ≥ c i + r ∗ > c j + r j ≥ c j ′ + r j ⟹ c i ′ + ( r ∗ + 1 ) > c j ′ + r j \begin{aligned} c_i + r^* &> c_j + r_j\\ \implies (1 + c'_i) + r^* \geq c_i + r^* &> c_j + r_j \geq c'_j + r_j\\ \implies c'_i + (r^* + 1) &> c'_j + r_j \end{aligned} ci+r(1+ci)+rci+rci+(r+1)>cj+rj>cj+rjcj+rj>cj+rj

因此,如果 r i ≥ r ∗ + 1 r_i \geq r^* + 1 rir+1 ,则当数据库为 D’ 时,第 i 个统计计数是最大的,且噪声向量为 ( r i , r − i ) (r_i,r_{-i}) (ri,ri)。下面的概率取决于 r i ∽ L a p ( 1 / ε ) r_i \backsim Lap(1/\varepsilon) riLap(1/ε) 的选择。

Pr [ r i ≥ 1 + r ∗ ] ≥ e − ε Pr [ r i ≥ r ∗ ] = e − ε Pr [ i ∣ D , r − i ] ⟹ Pr [ i ∣ D ′ , r − i ] ≥ Pr [ r i ≥ 1 + r ∗ ] ≥ e − ε Pr [ r i ≥ r ∗ ] = e − ε Pr [ i ∣ D , r − i ] \begin{aligned} \text{Pr}[r_i \geq 1 + r^*] &\geq e^{-\varepsilon}\text{Pr}[r_i \geq r^*] = e^{-\varepsilon}\text{Pr}[i|D,r_{-i}]\\ \implies \text{Pr}[i|D',r_{-i}] \geq \text{Pr}[r_i \geq 1 + r^*] &\geq e^{-\varepsilon}\text{Pr}[r_i \geq r^*] = e^{-\varepsilon}\text{Pr}[i|D,r_{-i}] \end{aligned} Pr[ri1+r]Pr[iD,ri]Pr[ri1+r]eεPr[rir]=eεPr[iD,ri]eεPr[rir]=eεPr[iD,ri]

上面等式两边乘上 e ε e^{\varepsilon} eε 第一种情况证明完毕。

证明第二种情况,即 Pr [ i ∣ D ′ , r − i ] ≤ e ε Pr [ i ∣ D , r − i ] \text{Pr}[i|D',r_{-i}] \leq e^{\varepsilon}\text{Pr}[i|D,r_{-i}] Pr[iD,ri]eεPr[iD,ri] 定义:

r ∗ = min ⁡ r i : c i ′ + r i > c j ′ + r j ∀ j ≠ i r^* = \min_{r_i}:c'_i + r_i > c'_j + r_j \ \forall j \neq i r=rimin:ci+ri>cj+rj j=i

注意,上面已经定义了 r − i r_{-i} ri 的情况。当且仅当 r i ≥ r ∗ r_i \geq r^* rir 时, i 为数据库 D D D 的最大统计噪声输出。

对于所有 1 ≤ j ≠ i ≤ m 1 \leq j \not ={i} \leq m 1j=im

c i ′ + r ∗ > c j + r j ⟹ 1 + c i ′ + r ∗ > 1 + c j ′ + r j ⟹ c i ′ + ( r ∗ + 1 ) > ( 1 + c j ′ ) + r j ⟹ c i + ( r ∗ + 1 ) ≥ c i ′ + ( r ∗ + 1 ) > ( 1 + c j ′ ) + r j ≥ c j + r j \begin{aligned} c'_i + r^* &> c_j + r_j\\ \implies 1 + c'_i + r^* &> 1 + c'_j + r_j\\ \implies c'_i + (r^* + 1) &> (1 + c'_j) + r_j\\ \implies c_i + (r^* + 1) \geq c'_i + (r^* + 1) &> (1 + c'_j) + r_j \geq c_j + r_j\\ \end{aligned} ci+r1+ci+rci+(r+1)ci+(r+1)ci+(r+1)>cj+rj>1+cj+rj>(1+cj)+rj>(1+cj)+rjcj+rj

因此,如果 r i ≥ r ∗ + 1 r_i \geq r^* + 1 rir+1 ,则当数据库为 D 时,第 i 个统计计数是最大的,且噪声向量为 ( r i , r − i ) (r_i,r_{-i}) (ri,ri)。下面的概率取决于 r i ∽ L a p ( 1 / ε ) r_i \backsim Lap(1/\varepsilon) riLap(1/ε) 的选择。

Pr [ i ∣ D , r − i ] ≥ Pr [ r i ≥ r ∗ + 1 ] ≥ e − ε Pr [ r i ≥ r ∗ ] = e − ε Pr [ i ∣ D ′ , r − i ] \begin{aligned} \text{Pr}[i|D,r_{-i}] \geq \text{Pr}[r_i \geq r^* + 1 ] \geq e^{-\varepsilon}\text{Pr}[r_i \geq r^*] = e^{-\varepsilon}\text{Pr}[i|D',r_{-i}] \end{aligned} Pr[iD,ri]Pr[rir+1]eεPr[rir]=eεPr[iD,ri]

上面等式两边乘上 e ε e^{\varepsilon} eε 第二种情况证明完毕。

【命题 3.9 证毕】


目录导航

第1章:https://blog.csdn.net/AdamCY888/article/details/146454841
第2章:https://blog.csdn.net/AdamCY888/article/details/146455093
第3章(1/3):https://blog.csdn.net/AdamCY888/article/details/146455756
第3章(2/3):https://blog.csdn.net/AdamCY888/article/details/146455796
第3章(3/3):https://blog.csdn.net/AdamCY888/article/details/146455328
第4章:https://blog.csdn.net/AdamCY888/article/details/146455882
第5章:https://blog.csdn.net/AdamCY888/article/details/146456100
第6章(1/2):https://blog.csdn.net/AdamCY888/article/details/146456712
第6章(2/2):https://blog.csdn.net/AdamCY888/article/details/146456972
第7章:https://blog.csdn.net/AdamCY888/article/details/146457037
第8章:https://blog.csdn.net/AdamCY888/article/details/146457172
第9章:https://blog.csdn.net/AdamCY888/article/details/146457257
第10章:https://blog.csdn.net/AdamCY888/article/details/146457331
第11章:https://blog.csdn.net/AdamCY888/article/details/146457418
第12章:https://blog.csdn.net/AdamCY888/article/details/146457489
第13章(含附录):https://blog.csdn.net/AdamCY888/article/details/146457601

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38702.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.1词法分析任务

编译器结构 前端 词法分析器的任务 字符流到记号流 eg: 把这些单词就叫做记号 EOF结束符号&#xff01;

Linux操作系统7- 线程同步与互斥5(POSIX条件变量生产者消费者模型的进一步使用)

上篇文章&#xff1a;Linux操作系统7- 线程同步与互斥4&#xff08;基于POSIX条件变量的生产者消费者模型&#xff09;-CSDN博客 本篇代码仓库&#xff1a; 支持处理简单任务的生产者消费者模型代码 生产者-消费者-保存者三线程两队列模型 多生产多消费的生产者消费者模型 进一…

【嵌入式学习2】C语言 - VScode环境搭建

目录 ## 语言分类 ## c语言编译器 ## VScode相关配置 ## 语言分类 编译型语言&#xff1a;C&#xff0c;C解释型语言&#xff1a;python&#xff0c;JS ## c语言编译器 分类GCC 系列MinGWCygwinMSVC系列一套编程语言编译器将GCC编译器和GNU Binutils移植到Win32平台下的产物…

使用Doris broker load导入数据到带Kerberos的HA HDFS的命令详解

以下是关于 Doris Broker Load 结合 Kerberos 认证的 HDFS 数据导入的详细解析&#xff1a; 一、Broker Load 核心原理 Broker Load 是 Doris 中用于从 HDFS/S3 等远程存储系统异步导入大数据的工具&#xff0c;其核心流程如下&#xff1a; 任务提交&#xff1a;用户通过 SQL…

数字化转型 2.0:AI、低代码与智能分析如何重塑企业竞争力?

引言&#xff1a;数字化转型进入2.0时代 在过去的十几年里&#xff0c;企业的数字化转型&#xff08;1.0&#xff09;主要围绕信息化和自动化展开&#xff0c;例如引入ERP、CRM等系统&#xff0c;提高办公效率&#xff0c;减少人为失误。然而&#xff0c;随着市场竞争加剧&…

指针,数组 易混题解析(一)

目录 一.相关知识点 1.数组名是什么&#xff1f; 两个例外&#xff1a; 2.strlen 3.sizeof 4. * ( ) 与 [ ] 的互换 二.一维数组 三.字符数组 1. 字符 &#xff08;1&#xff09;sizeof &#xff08;2&#xff09;strlen 2.字符串 &#xff08;1&#xff09;si…

ABC392题解

A 算法标签: 模拟 #include <iostream> #include <algorithm> #include <cstring>using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int w[3];for (int i 0; i < 3; i) cin >> w[i];sort(w, w 3);if (w[0]…

Quartus + VScode 实现模块化流水灯

文章目录 一、通过VScode编写Verilog代码二、模块化编程三、代码示例 一、通过VScode编写Verilog代码 1、下载Vscode 2、下载相关插件 搜索Verilog就会弹出有如图所示的插件&#xff0c;下载并安装 3、创建Quartus项目 4、创建完成后点击Tools&#xff0c;选择Options 然后在…

简单讲一下控制系统所用的PID公式

2025年3月23日电子电工实验室讲课大纲 哈喽&#xff0c;小伙伴们大家好&#xff0c;今天我们来讲一下PID&#xff01;首先我们的针对的场景是什么——循迹小车&#xff01; 就是我们刚入手STM32时&#xff0c;我们可能会制作一个循迹小车。我们想让那个小车走直线&#xff0c;但…

直观理解ECC椭圆曲线加密算法

数学还是挺有逻辑的&#xff0c;给出计算的操作步骤 就能得出想要结果 背景&#xff1a; ● ECC 是一种极其巧妙的 非对称加密算法 , 其完美利用了 椭圆曲线几何累加 不可逆的性质 ● 拥有 密钥体积小&#xff0c;计算速度快的优势&#xff0c;被广泛用于各种区块链&#xff0c…

深度解析 Android Matrix 变换(二):组合变换 pre、post

前言 在上一篇文章中&#xff0c;我们讲解了 Canvas 中单个变换的原理和效果&#xff0c;即缩放、旋转和平移。但是单个旋转仅仅是基础&#xff0c;Canvas 变换最重要的是能够随意组合各种变换以实现想要的效果。在这种情况下&#xff0c;就需要了解如何组合变换&#xff0c;以…

c++之迭代器

一.迭代器的基本概念 1.什么是迭代器 迭代器是一种对象&#xff0c;它提供了一种访问容器中各个元素的方法&#xff0c;同时隐藏了容器内部的实现细节。简单来说&#xff0c;迭代器就像是一个指针&#xff0c;它可以指向容器中的某个元素&#xff0c;并且能够通过一些操作&am…

在 .NET 9.0 Web API 中实现 Scalar 接口文档及JWT集成

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/90408075 介绍 随着 .NET 9 的发布&#xff0c;微软宣布他们将不再为任何 .NET API 项目提供默认的 Swagger gen UI。以前&#xff0c;当我们创建 .NET API 项目时&#xff0c;微软会自动添加 Swagger…

【操作系统笔记】操作系统的功能

上节课,我们学习了《什么是操作系统》。接下来,我们来看看操作系统有哪些功能? 这里讲的内容有两部分,一个是操作系统的目标,另外一个就是操作系统的功能。这两个细节可能会在考试的时候考到,但是最近好些年很少考到了。为了理解,我们还是一起来看一下。 操作系统的目标…

C/C++蓝桥杯算法真题打卡(Day7)

一、P8723 [蓝桥杯 2020 省 AB3] 乘法表 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;通常用于竞赛编程中简化代码 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用标准库函数时都要加std:: ty…

数据结构5(初):排序

目录 1、排序的概念以及常见的排序算法 1.1、排序的概念 1.2、常见的排序算法 2、常见排序算法的实现 2.1、插入排序 2.1.1、直接插入排序 2.1.2、希尔排序 2.2、选择排序 2.2.1、直接选择排序 2.2.2、堆排序 2.3、交换排序 2.3.1、冒泡排序 2.3.2、快速排序 2.3.…

VS2022中通过VCPKG安装的ceres之后调试ceres的例程设置

1.采用C20. vcpkg中设置: 2.增加预处理宏: GLOG_USE_GLOG_EXPORT 3.屏蔽sdl错误 在 项目-属性-C/C -命令行中添加 /sdl /w34996 #include "ceres/ceres.h" //#include <iostream> //#include<glog/logging.h>using ceres::AutoDiffCostFunction; usi…

Pydantic字段级校验:解锁@validator的12种应用

title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: Pydantic校验系统支持通过pre验证器实现原始数据预处理,在类型转换前完成字符清洗等操作。格式验证涵盖正则表达式匹配与枚举值约束,确保护照编号等字…

函数递归和迭代

1.什么是递归&#xff1f; 在C语言中递归就是自己调用自己。 看一下简单函数的递归&#xff1a; 上面的代码实现演示一下函数的递归&#xff0c;最终是会陷入死循环的&#xff0c;栈溢出 。 1.1递归的思想&#xff1a; 把一个大型的问题一步一步的转换成一个个小的子问题来解…

发票查验/发票验真如何用Java实现接口调用

一、什么是发票查验&#xff1f;发票验真接口&#xff1f; 输入发票基本信息发票代码、发票号码、开票日期、校验码后6位、不含税金额、含税金额&#xff0c;核验发票真伪。 该接口也适用于机动车、二手车销售发票、航空运输电子客票、铁路电子客票等。 二、如何用Java实现接口…